[Home] [Help]
PACKAGE BODY: APPS.XLA_00707_AAD_S_000007_PKG
Source
1 PACKAGE BODY XLA_00707_AAD_S_000007_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_00707_AAD_S_000007_PKG |
10 | |
11 | DESCRIPTION |
12 | Package generated From Product Accounting Definition |
13 | Name : Federal Costing Application Accounting Definition |
14 | Code : FV_CST_AAD |
15 | Owner : PRODUCT |
16 | Version : |
17 | AMB Context Code: DEFAULT |
18 | HISTORY |
19 | Generated at 30-03-2009 at 05:03:12 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_00707_AAD_S_000007_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_00707_AAD_S_000007_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_00707_AAD_S_000007_PKG.ValidateLookupMeaning');
204 --
205 END ValidateLookupMeaning;
206 --
207 --
208
209 FUNCTION GetMeaning (
210 p_flex_value_set_id IN INTEGER
211 , p_flex_value IN VARCHAR2
212 , p_source_code IN VARCHAR2
213 , p_source_type_code IN VARCHAR2
214 , p_source_application_id IN INTEGER
215 )
216 RETURN VARCHAR2
217 IS
218 BEGIN
219 --
220 RETURN NULL ;
221 --
222 EXCEPTION
223 WHEN xla_exceptions_pkg.application_exception THEN
224 RAISE;
225 WHEN OTHERS THEN
226 xla_exceptions_pkg.raise_message
227 (p_location => 'XLA_00707_AAD_S_000007_PKG.GetMeaning');
228 END GetMeaning;
229 --
230
231 ---------------------------------------
232 --
233 -- PRIVATE FUNCTION
234 -- AcctDerRule_1
235 --
236 ---------------------------------------
237 FUNCTION AcctDerRule_1 (
238 p_application_id IN NUMBER
239 , p_ae_header_id IN NUMBER
240 , p_side IN VARCHAR2
241 --Accrual Account for the Write Off
242 , p_source_1 IN NUMBER
243 , x_transaction_coa_id OUT NOCOPY NUMBER
244 , x_accounting_coa_id OUT NOCOPY NUMBER
245 , x_value_type_code OUT NOCOPY VARCHAR2
246 )
247 RETURN NUMBER
248 IS
249 l_component_type VARCHAR2(80) ;
250 l_component_code VARCHAR2(30) ;
251 l_component_type_code VARCHAR2(1) ;
252 l_component_appl_id INTEGER ;
253 l_amb_context_code VARCHAR2(30) ;
254 l_log_module VARCHAR2(240) ;
255 l_output_value NUMBER ;
256 BEGIN
257 IF g_log_enabled THEN
258 l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_1';
259 END IF;
260 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
261 trace
262 (p_msg => 'BEGIN of AcctDerRule_1'
263 ,p_level => C_LEVEL_PROCEDURE
264 ,p_module => l_log_module);
265 END IF;
266 --
267 l_component_type := 'AMB_ADR';
268 l_component_code := 'CST_AWO_ACCRUAL';
269 l_component_type_code := 'S';
270 l_component_appl_id := 707;
271 l_amb_context_code := 'DEFAULT';
272 x_transaction_coa_id := null;
273 x_accounting_coa_id := null;
274 --
275
276 --
277 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
278 trace
279 (p_msg => 'END of AcctDerRule_1'
280 ,p_level => C_LEVEL_PROCEDURE
281 ,p_module => l_log_module);
282 END IF;
283 x_value_type_code := 'S';
284 l_output_value := TO_NUMBER(TO_NUMBER(p_source_1));
285 RETURN l_output_value;
286
287 --
288 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
289 trace
290 (p_msg => 'END of AcctDerRule_1(invalid)'
291 ,p_level => C_LEVEL_PROCEDURE
292 ,p_module => l_log_module);
293 END IF;
294 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
295 x_value_type_code := null;
296 l_output_value := null;
297 xla_accounting_err_pkg.build_message
298 (p_appli_s_name => 'XLA'
299 ,p_msg_name => 'XLA_AP_INVALID_ADR'
300 ,p_token_1 => 'COMPONENT_NAME'
301 ,p_value_1 => xla_ae_sources_pkg.GetComponentName (
302 l_component_type
303 , l_component_code
304 , l_component_type_code
305 , l_component_appl_id
306 , l_amb_context_code
307 )
308 ,p_token_2 => 'OWNER'
309 ,p_value_2 => xla_lookups_pkg.get_meaning(
310 'XLA_OWNER_TYPE'
311 ,l_component_type_code
312 )
313 ,p_token_3 => 'PAD_NAME'
314 ,p_value_3 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
315 ,p_token_4 => 'PAD_OWNER'
316 ,p_value_4 => xla_lookups_pkg.get_meaning(
317 'XLA_OWNER_TYPE'
318 ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
319 )
320 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
321 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
322 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
323 ,p_ae_header_id => NULL
324 );
325 RETURN l_output_value;
326 EXCEPTION
327 WHEN xla_exceptions_pkg.application_exception THEN
328 RAISE;
329 WHEN OTHERS THEN
330 xla_exceptions_pkg.raise_message
331 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctDerRule_1');
332 END AcctDerRule_1;
333 --
334
335 ---------------------------------------
336 --
337 -- PRIVATE FUNCTION
338 -- AcctDerRule_2
339 --
340 ---------------------------------------
341 FUNCTION AcctDerRule_2 (
342 p_application_id IN NUMBER
343 , p_ae_header_id IN NUMBER
344 , p_side IN VARCHAR2
345 --Write-Off Variance Account
346 , p_source_2 IN NUMBER
347 , x_transaction_coa_id OUT NOCOPY NUMBER
348 , x_accounting_coa_id OUT NOCOPY NUMBER
349 , x_value_type_code OUT NOCOPY VARCHAR2
350 )
351 RETURN NUMBER
352 IS
353 l_component_type VARCHAR2(80) ;
354 l_component_code VARCHAR2(30) ;
355 l_component_type_code VARCHAR2(1) ;
356 l_component_appl_id INTEGER ;
357 l_amb_context_code VARCHAR2(30) ;
358 l_log_module VARCHAR2(240) ;
359 l_output_value NUMBER ;
360 BEGIN
361 IF g_log_enabled THEN
362 l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_2';
363 END IF;
364 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
365 trace
366 (p_msg => 'BEGIN of AcctDerRule_2'
367 ,p_level => C_LEVEL_PROCEDURE
368 ,p_module => l_log_module);
369 END IF;
370 --
371 l_component_type := 'AMB_ADR';
372 l_component_code := 'CST_AWO_ERV';
373 l_component_type_code := 'S';
374 l_component_appl_id := 707;
375 l_amb_context_code := 'DEFAULT';
376 x_transaction_coa_id := null;
377 x_accounting_coa_id := null;
378 --
379
380 --
381 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
382 trace
383 (p_msg => 'END of AcctDerRule_2'
384 ,p_level => C_LEVEL_PROCEDURE
385 ,p_module => l_log_module);
386 END IF;
387 x_value_type_code := 'S';
388 l_output_value := TO_NUMBER(TO_NUMBER(p_source_2));
389 RETURN l_output_value;
390
391 --
392 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
393 trace
394 (p_msg => 'END of AcctDerRule_2(invalid)'
395 ,p_level => C_LEVEL_PROCEDURE
396 ,p_module => l_log_module);
397 END IF;
398 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
399 x_value_type_code := null;
400 l_output_value := null;
401 xla_accounting_err_pkg.build_message
402 (p_appli_s_name => 'XLA'
403 ,p_msg_name => 'XLA_AP_INVALID_ADR'
404 ,p_token_1 => 'COMPONENT_NAME'
405 ,p_value_1 => xla_ae_sources_pkg.GetComponentName (
406 l_component_type
407 , l_component_code
408 , l_component_type_code
409 , l_component_appl_id
410 , l_amb_context_code
411 )
412 ,p_token_2 => 'OWNER'
413 ,p_value_2 => xla_lookups_pkg.get_meaning(
414 'XLA_OWNER_TYPE'
415 ,l_component_type_code
416 )
417 ,p_token_3 => 'PAD_NAME'
418 ,p_value_3 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
419 ,p_token_4 => 'PAD_OWNER'
420 ,p_value_4 => xla_lookups_pkg.get_meaning(
421 'XLA_OWNER_TYPE'
422 ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
423 )
424 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
425 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
426 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
427 ,p_ae_header_id => NULL
428 );
429 RETURN l_output_value;
430 EXCEPTION
431 WHEN xla_exceptions_pkg.application_exception THEN
432 RAISE;
433 WHEN OTHERS THEN
434 xla_exceptions_pkg.raise_message
435 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctDerRule_2');
436 END AcctDerRule_2;
437 --
438
439 ---------------------------------------
440 --
441 -- PRIVATE FUNCTION
442 -- AcctDerRule_3
443 --
444 ---------------------------------------
445 FUNCTION AcctDerRule_3 (
446 p_application_id IN NUMBER
447 , p_ae_header_id IN NUMBER
448 , p_side IN VARCHAR2
449 --Offset Account for the Write Off
450 , p_source_3 IN NUMBER
451 , x_transaction_coa_id OUT NOCOPY NUMBER
452 , x_accounting_coa_id OUT NOCOPY NUMBER
453 , x_value_type_code OUT NOCOPY VARCHAR2
454 )
455 RETURN NUMBER
456 IS
457 l_component_type VARCHAR2(80) ;
458 l_component_code VARCHAR2(30) ;
459 l_component_type_code VARCHAR2(1) ;
460 l_component_appl_id INTEGER ;
461 l_amb_context_code VARCHAR2(30) ;
462 l_log_module VARCHAR2(240) ;
463 l_output_value NUMBER ;
464 BEGIN
465 IF g_log_enabled THEN
466 l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_3';
467 END IF;
468 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
469 trace
470 (p_msg => 'BEGIN of AcctDerRule_3'
471 ,p_level => C_LEVEL_PROCEDURE
472 ,p_module => l_log_module);
473 END IF;
474 --
475 l_component_type := 'AMB_ADR';
476 l_component_code := 'CST_AWO_OFFSET';
477 l_component_type_code := 'S';
478 l_component_appl_id := 707;
479 l_amb_context_code := 'DEFAULT';
480 x_transaction_coa_id := null;
481 x_accounting_coa_id := null;
482 --
483
484 --
485 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
486 trace
487 (p_msg => 'END of AcctDerRule_3'
488 ,p_level => C_LEVEL_PROCEDURE
489 ,p_module => l_log_module);
490 END IF;
491 x_value_type_code := 'S';
492 l_output_value := TO_NUMBER(TO_NUMBER(p_source_3));
493 RETURN l_output_value;
494
495 --
496 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
497 trace
498 (p_msg => 'END of AcctDerRule_3(invalid)'
499 ,p_level => C_LEVEL_PROCEDURE
500 ,p_module => l_log_module);
501 END IF;
502 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
503 x_value_type_code := null;
504 l_output_value := null;
505 xla_accounting_err_pkg.build_message
506 (p_appli_s_name => 'XLA'
507 ,p_msg_name => 'XLA_AP_INVALID_ADR'
508 ,p_token_1 => 'COMPONENT_NAME'
509 ,p_value_1 => xla_ae_sources_pkg.GetComponentName (
510 l_component_type
511 , l_component_code
512 , l_component_type_code
513 , l_component_appl_id
514 , l_amb_context_code
515 )
516 ,p_token_2 => 'OWNER'
517 ,p_value_2 => xla_lookups_pkg.get_meaning(
518 'XLA_OWNER_TYPE'
519 ,l_component_type_code
520 )
521 ,p_token_3 => 'PAD_NAME'
522 ,p_value_3 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
523 ,p_token_4 => 'PAD_OWNER'
524 ,p_value_4 => xla_lookups_pkg.get_meaning(
525 'XLA_OWNER_TYPE'
526 ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
527 )
528 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
529 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
530 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
531 ,p_ae_header_id => NULL
532 );
533 RETURN l_output_value;
534 EXCEPTION
535 WHEN xla_exceptions_pkg.application_exception THEN
536 RAISE;
537 WHEN OTHERS THEN
538 xla_exceptions_pkg.raise_message
539 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctDerRule_3');
540 END AcctDerRule_3;
541 --
542
543 ---------------------------------------
544 --
545 -- PRIVATE FUNCTION
546 -- AcctDerRule_4
547 --
548 ---------------------------------------
549 FUNCTION AcctDerRule_4 (
550 p_application_id IN NUMBER
551 , p_ae_header_id IN NUMBER
552 , p_side IN VARCHAR2
553 --Cost Management Default Account
554 , p_source_4 IN NUMBER
555 , x_transaction_coa_id OUT NOCOPY NUMBER
556 , x_accounting_coa_id OUT NOCOPY NUMBER
557 , x_value_type_code OUT NOCOPY VARCHAR2
558 )
559 RETURN NUMBER
560 IS
561 l_component_type VARCHAR2(80) ;
562 l_component_code VARCHAR2(30) ;
563 l_component_type_code VARCHAR2(1) ;
564 l_component_appl_id INTEGER ;
565 l_amb_context_code VARCHAR2(30) ;
566 l_log_module VARCHAR2(240) ;
567 l_output_value NUMBER ;
568 BEGIN
569 IF g_log_enabled THEN
570 l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_4';
571 END IF;
572 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
573 trace
574 (p_msg => 'BEGIN of AcctDerRule_4'
575 ,p_level => C_LEVEL_PROCEDURE
576 ,p_module => l_log_module);
577 END IF;
578 --
579 l_component_type := 'AMB_ADR';
580 l_component_code := 'CST_DEFAULT';
581 l_component_type_code := 'S';
582 l_component_appl_id := 707;
583 l_amb_context_code := 'DEFAULT';
584 x_transaction_coa_id := null;
585 x_accounting_coa_id := null;
586 --
587
588 --
589 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
590 trace
591 (p_msg => 'END of AcctDerRule_4'
592 ,p_level => C_LEVEL_PROCEDURE
593 ,p_module => l_log_module);
594 END IF;
595 x_value_type_code := 'S';
596 l_output_value := TO_NUMBER(TO_NUMBER(p_source_4));
597 RETURN l_output_value;
598
599 --
600 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
601 trace
602 (p_msg => 'END of AcctDerRule_4(invalid)'
603 ,p_level => C_LEVEL_PROCEDURE
604 ,p_module => l_log_module);
605 END IF;
606 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
607 x_value_type_code := null;
608 l_output_value := null;
609 xla_accounting_err_pkg.build_message
610 (p_appli_s_name => 'XLA'
611 ,p_msg_name => 'XLA_AP_INVALID_ADR'
612 ,p_token_1 => 'COMPONENT_NAME'
613 ,p_value_1 => xla_ae_sources_pkg.GetComponentName (
614 l_component_type
615 , l_component_code
616 , l_component_type_code
617 , l_component_appl_id
618 , l_amb_context_code
619 )
620 ,p_token_2 => 'OWNER'
621 ,p_value_2 => xla_lookups_pkg.get_meaning(
622 'XLA_OWNER_TYPE'
623 ,l_component_type_code
624 )
625 ,p_token_3 => 'PAD_NAME'
626 ,p_value_3 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
627 ,p_token_4 => 'PAD_OWNER'
628 ,p_value_4 => xla_lookups_pkg.get_meaning(
629 'XLA_OWNER_TYPE'
630 ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
631 )
632 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
633 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
634 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
635 ,p_ae_header_id => NULL
636 );
637 RETURN l_output_value;
638 EXCEPTION
639 WHEN xla_exceptions_pkg.application_exception THEN
640 RAISE;
641 WHEN OTHERS THEN
642 xla_exceptions_pkg.raise_message
643 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctDerRule_4');
644 END AcctDerRule_4;
645 --
646
647 ---------------------------------------
648 --
649 -- PRIVATE FUNCTION
650 -- AcctLineType_5
651 --
652 ---------------------------------------
653 PROCEDURE AcctLineType_5 (
654 p_application_id IN NUMBER
655 ,p_event_id IN NUMBER
656 ,p_calculate_acctd_flag IN VARCHAR2
657 ,p_calculate_g_l_flag IN VARCHAR2
658 ,p_actual_flag IN OUT VARCHAR2
659 ,p_balance_type_code OUT VARCHAR2
660 ,p_gain_or_loss_ref OUT VARCHAR2
661
662 --Cost Management Default Account
663 , p_source_4 IN NUMBER
664 --Receiving Accounting Line Type
665 , p_source_5 IN VARCHAR2
666 --Applied to Application ID
667 , p_source_6 IN NUMBER
668 --Applied to Distribution Link Type
669 , p_source_7 IN VARCHAR2
670 --Applied to Entity Code
671 , p_source_8 IN VARCHAR2
672 --PO_DISTRIBUTION_ID
673 , p_source_9 IN NUMBER
674 --Applied To Purchase Document Identifier
675 , p_source_10 IN NUMBER
676 --DISTRIBUTION_IDENTIFIER
677 , p_source_11 IN NUMBER
678 --Distribution Type
679 , p_source_12 IN VARCHAR2
680 , p_source_12_meaning IN VARCHAR2
681 --PO Budget Account
682 , p_source_13 IN NUMBER
683 --Encumbrance Reversal Amount Entered
684 , p_source_14 IN NUMBER
685 --Entered Currency Code
686 , p_source_15 IN VARCHAR2
687 --Transaction Encumbrance Reversal Amount
688 , p_source_16 IN NUMBER
689 --Costing Period End Accrual Encumbrance Upgrade Option
690 , p_source_17 IN VARCHAR2
691 --Entered Amount
692 , p_source_18 IN NUMBER
693 --Currency Conversion Date
694 , p_source_19 IN DATE
695 --Currency Conversion Rate
696 , p_source_20 IN NUMBER
697 --Currency Conversion Type
698 , p_source_21 IN VARCHAR2
699 --Accounted Amount
700 , p_source_22 IN NUMBER
701 --Purchasing Encumbrance Type Identifier
702 , p_source_23 IN NUMBER
703 )
704 IS
705
706 l_component_type VARCHAR2(80);
707 l_component_code VARCHAR2(30);
708 l_component_type_code VARCHAR2(1);
709 l_component_appl_id INTEGER;
710 l_amb_context_code VARCHAR2(30);
711 l_entity_code VARCHAR2(30);
712 l_event_class_code VARCHAR2(30);
713 l_ae_header_id NUMBER;
714 l_event_type_code VARCHAR2(30);
715 l_line_definition_code VARCHAR2(30);
716 l_line_definition_owner_code VARCHAR2(1);
717 --
718 -- adr variables
719 l_segment VARCHAR2(30);
720 l_ccid NUMBER;
721 l_adr_transaction_coa_id NUMBER;
722 l_adr_accounting_coa_id NUMBER;
723 l_adr_flexfield_segment_code VARCHAR2(30);
724 l_adr_flex_value_set_id NUMBER;
725 l_adr_value_type_code VARCHAR2(30);
726 l_adr_value_combination_id NUMBER;
727 l_adr_value_segment_code VARCHAR2(30);
728
729 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
730 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
731 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
732 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
733
734 -- 4262811 Variables ------------------------------------------------------------------------------------------
735 l_entered_amt_idx NUMBER;
736 l_accted_amt_idx NUMBER;
737 l_acc_rev_flag VARCHAR2(1);
738 l_accrual_line_num NUMBER;
739 l_tmp_amt NUMBER;
740 l_acc_rev_natural_side_code VARCHAR2(1);
741
742 l_num_entries NUMBER;
743 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
744 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
745 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
746 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
747 l_recog_line_1 NUMBER;
748 l_recog_line_2 NUMBER;
749
750 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
751 l_bflow_applied_to_amt NUMBER; -- 5132302
752 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
753
754 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
755
756 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
757 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
758
759 ---------------------------------------------------------------------------------------------------------------
760
761
762 --
763 -- bulk performance
764 --
765 l_balance_type_code VARCHAR2(1);
766 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
767 l_log_module VARCHAR2(240);
768
769 --
770 -- Upgrade strategy
771 --
772 l_actual_upg_option VARCHAR2(1);
773 l_enc_upg_option VARCHAR2(1);
774
775 --
776 BEGIN
777 --
778 IF g_log_enabled THEN
779 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_5';
780 END IF;
781 --
782 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
783
784 trace
785 (p_msg => 'BEGIN of AcctLineType_5'
786 ,p_level => C_LEVEL_PROCEDURE
787 ,p_module => l_log_module);
788
789 END IF;
790 --
791 l_component_type := 'AMB_JLT';
792 l_component_code := 'ACCRUAL';
793 l_component_type_code := 'S';
794 l_component_appl_id := 707;
795 l_amb_context_code := 'DEFAULT';
796 l_entity_code := 'RCV_ACCOUNTING_EVENTS';
797 l_event_class_code := 'PERIOD_END_ACCRUAL';
798 l_event_type_code := 'PERIOD_END_ACCRUAL_ALL';
799 l_line_definition_owner_code := 'S';
800 l_line_definition_code := 'PERIOD_END_ACCRUAL';
801 --
802 l_balance_type_code := 'A';
803 l_segment := NULL;
804 l_ccid := NULL;
805 l_adr_transaction_coa_id := NULL;
806 l_adr_accounting_coa_id := NULL;
807 l_adr_flexfield_segment_code := NULL;
808 l_adr_flex_value_set_id := NULL;
809 l_adr_value_type_code := NULL;
810 l_adr_value_combination_id := NULL;
811 l_adr_value_segment_code := NULL;
812
813 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
814 l_bflow_class_code := ''; -- 4219869 Business Flow
815 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
816 l_budgetary_control_flag := 'N';
817
818 l_bflow_applied_to_amt_idx := NULL; -- 5132302
819 l_bflow_applied_to_amt := NULL; -- 5132302
820 l_entered_amt_idx := NULL; -- 4262811
821 l_accted_amt_idx := NULL; -- 4262811
822 l_acc_rev_flag := NULL; -- 4262811
823 l_accrual_line_num := NULL; -- 4262811
824 l_tmp_amt := NULL; -- 4262811
825 --
826
827 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
828 l_balance_type_code <> 'B' THEN
829 IF NVL(p_source_5,'
830 ') = 'Accrual'
831 THEN
832
833 --
834 XLA_AE_LINES_PKG.SetNewLine;
835
836 p_balance_type_code := l_balance_type_code;
837 -- set the flag so later we will know whether the gain loss line needs to be created
838
839 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
840 p_actual_flag :='A';
841 END IF;
842
843 --
844 -- bulk performance
845 --
846 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
847 p_header_num => 0); -- 4262811
848 --
849 -- set accounting line options
850 --
851 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
852 p_natural_side_code => 'D'
853 , p_gain_or_loss_flag => 'N'
854 , p_gl_transfer_mode_code => 'S'
855 , p_acct_entry_type_code => 'A'
856 , p_switch_side_flag => 'Y'
857 , p_merge_duplicate_code => 'N'
858 );
859 --
860 l_acc_rev_natural_side_code := 'C'; -- 4262811
861 --
862 --
863 -- set accounting line type info
864 --
865 xla_ae_lines_pkg.SetAcctLineType
866 (p_component_type => l_component_type
867 ,p_event_type_code => l_event_type_code
868 ,p_line_definition_owner_code => l_line_definition_owner_code
869 ,p_line_definition_code => l_line_definition_code
870 ,p_accounting_line_code => l_component_code
871 ,p_accounting_line_type_code => l_component_type_code
872 ,p_accounting_line_appl_id => l_component_appl_id
873 ,p_amb_context_code => l_amb_context_code
874 ,p_entity_code => l_entity_code
875 ,p_event_class_code => l_event_class_code);
876 --
877 -- set accounting class
878 --
879 xla_ae_lines_pkg.SetAcctClass(
880 p_accounting_class_code => 'ACCRUAL'
881 , p_ae_header_id => l_ae_header_id
882 );
883
884 --
885 -- set rounding class
886 --
887 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
888 'ACCRUAL';
889
890 --
891 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
892 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
893 --
894 -- bulk performance
895 --
896 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
897
898 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
899 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
900
901 -- 4955764
902 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
903 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
904
905 -- 4458381 Public Sector Enh
906
907 --
908 -- set accounting attributes for the line type
909 --
910 l_entered_amt_idx := 17;
911 l_accted_amt_idx := 22;
912 l_bflow_applied_to_amt_idx := NULL; -- 5132302
913 l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
914 l_rec_acct_attrs.array_num_value(1) := p_source_6;
915 l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
916 l_rec_acct_attrs.array_char_value(2) := p_source_7;
917 l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
918 l_rec_acct_attrs.array_char_value(3) := p_source_8;
919 l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
920 l_rec_acct_attrs.array_num_value(4) := to_char(p_source_9);
921 l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
922 l_rec_acct_attrs.array_num_value(5) := to_char(p_source_10);
923 l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
924 l_rec_acct_attrs.array_num_value(6) := to_char(p_source_11);
925 l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
926 l_rec_acct_attrs.array_char_value(7) := p_source_12;
927 l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
928 l_rec_acct_attrs.array_num_value(8) := TO_NUMBER(p_source_13);
929 l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
930 l_rec_acct_attrs.array_num_value(9) := p_source_14;
931 l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
932 l_rec_acct_attrs.array_char_value(10) := p_source_15;
933 l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
934 l_rec_acct_attrs.array_num_value(11) := p_source_16;
935 l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
936 l_rec_acct_attrs.array_num_value(12) := TO_NUMBER(p_source_13);
937 l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
938 l_rec_acct_attrs.array_num_value(13) := p_source_14;
939 l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
940 l_rec_acct_attrs.array_char_value(14) := p_source_15;
941 l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
942 l_rec_acct_attrs.array_num_value(15) := p_source_16;
943 l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
944 l_rec_acct_attrs.array_char_value(16) := p_source_17;
945 l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
946 l_rec_acct_attrs.array_num_value(17) := p_source_18;
947 l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
948 l_rec_acct_attrs.array_char_value(18) := p_source_15;
949 l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
950 l_rec_acct_attrs.array_date_value(19) := p_source_19;
951 l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
952 l_rec_acct_attrs.array_num_value(20) := p_source_20;
953 l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
954 l_rec_acct_attrs.array_char_value(21) := p_source_21;
955 l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
956 l_rec_acct_attrs.array_num_value(22) := p_source_22;
957 l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
958 l_rec_acct_attrs.array_num_value(23) := p_source_23;
959 l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
960 l_rec_acct_attrs.array_num_value(24) := p_source_23;
961
962 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
963 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
964
965 ---------------------------------------------------------------------------------------------------------------
966 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
967 ---------------------------------------------------------------------------------------------------------------
968 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
969
970 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
971 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
972
973 IF xla_accounting_cache_pkg.GetValueChar
974 (p_source_code => 'LEDGER_CATEGORY_CODE'
975 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
976 AND l_bflow_method_code = 'PRIOR_ENTRY'
977 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
978 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
979 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
980 )
981 THEN
982 xla_ae_lines_pkg.BflowUpgEntry
983 (p_business_method_code => l_bflow_method_code
984 ,p_business_class_code => l_bflow_class_code
985 ,p_balance_type => l_balance_type_code);
986 ELSE
987 NULL;
988 -- No business flow processing for business flow method of NONE.
989 END IF;
990
991 --
992 -- call analytical criteria
993 --
994
995 --
996 -- call description
997 --
998 -- No description or it is inherited.
999 --
1000 -- call ADRs
1001 -- Bug 4922099
1002 --
1003 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
1004 (NVL(l_actual_upg_option, 'N') = 'O') OR
1005 (NVL(l_enc_upg_option, 'N') = 'O')
1006 )
1007 THEN
1008 NULL;
1009 --
1010 --
1011
1012 l_ccid := AcctDerRule_4(
1013 p_application_id => p_application_id
1014 , p_ae_header_id => l_ae_header_id
1015 , p_source_4 => p_source_4
1016 , x_transaction_coa_id => l_adr_transaction_coa_id
1017 , x_accounting_coa_id => l_adr_accounting_coa_id
1018 , x_value_type_code => l_adr_value_type_code
1019 , p_side => 'NA'
1020 );
1021
1022 xla_ae_lines_pkg.set_ccid(
1023 p_code_combination_id => l_ccid
1024 , p_value_type_code => l_adr_value_type_code
1025 , p_transaction_coa_id => l_adr_transaction_coa_id
1026 , p_accounting_coa_id => l_adr_accounting_coa_id
1027 , p_adr_code => 'CST_DEFAULT'
1028 , p_adr_type_code => 'S'
1029 , p_component_type => l_component_type
1030 , p_component_code => l_component_code
1031 , p_component_type_code => l_component_type_code
1032 , p_component_appl_id => l_component_appl_id
1033 , p_amb_context_code => l_amb_context_code
1034 , p_side => 'NA'
1035 );
1036
1037
1038 --
1039 --
1040 END IF;
1041 --
1042 -- Bug 4922099
1043 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
1044 (NVL(l_enc_upg_option, 'N') = 'O')
1045 ) AND
1046 (l_bflow_method_code = 'PRIOR_ENTRY')
1047 )
1048 THEN
1049 IF
1050 --
1051 1 = 2
1052 --
1053 THEN
1054 xla_accounting_err_pkg.build_message
1055 (p_appli_s_name => 'XLA'
1056 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
1057 ,p_token_1 => 'LINE_NUMBER'
1058 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
1059 ,p_token_2 => 'LINE_TYPE_NAME'
1060 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
1061 l_component_type
1062 ,l_component_code
1063 ,l_component_type_code
1064 ,l_component_appl_id
1065 ,l_amb_context_code
1066 ,l_entity_code
1067 ,l_event_class_code
1068 )
1069 ,p_token_3 => 'OWNER'
1070 ,p_value_3 => xla_lookups_pkg.get_meaning(
1071 p_lookup_type => 'XLA_OWNER_TYPE'
1072 ,p_lookup_code => l_component_type_code
1073 )
1074 ,p_token_4 => 'PRODUCT_NAME'
1075 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
1076 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
1077 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
1078 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
1079 ,p_ae_header_id => NULL
1080 );
1081
1082 IF (C_LEVEL_ERROR>= g_log_level) THEN
1083 trace
1084 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
1085 ,p_level => C_LEVEL_ERROR
1086 ,p_module => l_log_module);
1087 END IF;
1088 END IF;
1089 END IF;
1090 --
1091 --
1092 ------------------------------------------------------------------------------------------------
1093 -- 4219869 Business Flow
1094 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
1095 -- Prior Entry. Currently, the following code is always generated.
1096 ------------------------------------------------------------------------------------------------
1097 XLA_AE_LINES_PKG.ValidateCurrentLine;
1098
1099 ------------------------------------------------------------------------------------
1100 -- 4219869 Business Flow
1101 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
1102 ------------------------------------------------------------------------------------
1103 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
1104
1105 ----------------------------------------------------------------------------------
1106 -- 4219869 Business Flow
1107 -- Update journal entry status -- Need to generate this within IF <condition>
1108 ----------------------------------------------------------------------------------
1109 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
1110 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
1111 ,p_balance_type_code => l_balance_type_code
1112 );
1113
1114 -------------------------------------------------------------------------------------------
1115 -- 4262811 - Generate the Accrual Reversal lines
1116 -------------------------------------------------------------------------------------------
1117 BEGIN
1118 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
1119 (g_array_event(p_event_id).array_value_num('header_index'));
1120 IF l_acc_rev_flag IS NULL THEN
1121 l_acc_rev_flag := 'N';
1122 END IF;
1123 EXCEPTION
1124 WHEN OTHERS THEN
1125 l_acc_rev_flag := 'N';
1126 END;
1127 --
1128 IF (l_acc_rev_flag = 'Y') THEN
1129
1130 -- 4645092 ------------------------------------------------------------------------------
1131 -- To allow MPA report to determine if it should generate report process
1132 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
1133 ------------------------------------------------------------------------------------------
1134
1135 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
1136 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
1137 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
1138 -- call ADRs
1139 -- Bug 4922099
1140 --
1141 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
1142 (NVL(l_actual_upg_option, 'N') = 'O') OR
1143 (NVL(l_enc_upg_option, 'N') = 'O')
1144 )
1145 THEN
1146 NULL;
1147 --
1148 --
1149
1150 l_ccid := AcctDerRule_4(
1151 p_application_id => p_application_id
1152 , p_ae_header_id => l_ae_header_id
1153 , p_source_4 => p_source_4
1154 , x_transaction_coa_id => l_adr_transaction_coa_id
1155 , x_accounting_coa_id => l_adr_accounting_coa_id
1156 , x_value_type_code => l_adr_value_type_code
1157 , p_side => 'NA'
1158 );
1159
1160 xla_ae_lines_pkg.set_ccid(
1161 p_code_combination_id => l_ccid
1162 , p_value_type_code => l_adr_value_type_code
1163 , p_transaction_coa_id => l_adr_transaction_coa_id
1164 , p_accounting_coa_id => l_adr_accounting_coa_id
1165 , p_adr_code => 'CST_DEFAULT'
1166 , p_adr_type_code => 'S'
1167 , p_component_type => l_component_type
1168 , p_component_code => l_component_code
1169 , p_component_type_code => l_component_type_code
1170 , p_component_appl_id => l_component_appl_id
1171 , p_amb_context_code => l_amb_context_code
1172 , p_side => 'NA'
1173 );
1174
1175
1176 --
1177 --
1178 END IF;
1179
1180 --
1181 -- Update the line information that should be overwritten
1182 --
1183 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
1184 p_header_num => 1);
1185 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
1186
1187 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
1188
1189 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
1190 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
1191 END IF;
1192
1193 --
1194 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
1195 --
1196 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
1197 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
1198 ELSE
1199 ---------------------------------------------------------------------------------------------------
1200 -- 4262811a Switch Sign
1201 ---------------------------------------------------------------------------------------------------
1202 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
1203 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
1204 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
1205 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
1206 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
1207 -- 5132302
1208 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
1209 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
1210
1211 END IF;
1212
1213 -- 4955764
1214 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
1215 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
1216
1217
1218 XLA_AE_LINES_PKG.ValidateCurrentLine;
1219 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
1220
1221 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
1222 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
1223 ,p_balance_type_code => l_balance_type_code);
1224
1225 END IF;
1226
1227 -----------------------------------------------------------------------------------------
1228 -- 4262811 Multiperiod Accounting
1229 -----------------------------------------------------------------------------------------
1230 -- No MPA option is assigned.
1231
1232
1233 END IF;
1234 END IF;
1235 --
1236
1237 --
1238 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1239 trace
1240 (p_msg => 'END of AcctLineType_5'
1241 ,p_level => C_LEVEL_PROCEDURE
1242 ,p_module => l_log_module);
1243 END IF;
1244 --
1245 EXCEPTION
1246 WHEN xla_exceptions_pkg.application_exception THEN
1247 RAISE;
1248 WHEN OTHERS THEN
1249 xla_exceptions_pkg.raise_message
1250 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_5');
1251 END AcctLineType_5;
1252 --
1253
1254 ---------------------------------------
1255 --
1256 -- PRIVATE FUNCTION
1257 -- AcctLineType_6
1258 --
1259 ---------------------------------------
1260 PROCEDURE AcctLineType_6 (
1261 p_application_id IN NUMBER
1262 ,p_event_id IN NUMBER
1263 ,p_calculate_acctd_flag IN VARCHAR2
1264 ,p_calculate_g_l_flag IN VARCHAR2
1265 ,p_actual_flag IN OUT VARCHAR2
1266 ,p_balance_type_code OUT VARCHAR2
1267 ,p_gain_or_loss_ref OUT VARCHAR2
1268
1269 --Cost Management Default Account
1270 , p_source_4 IN NUMBER
1271 --DISTRIBUTION_IDENTIFIER
1272 , p_source_11 IN NUMBER
1273 --Distribution Type
1274 , p_source_12 IN VARCHAR2
1275 , p_source_12_meaning IN VARCHAR2
1276 --Entered Currency Code
1277 , p_source_15 IN VARCHAR2
1278 --Entered Amount
1279 , p_source_18 IN NUMBER
1280 --Currency Conversion Date
1281 , p_source_19 IN DATE
1282 --Currency Conversion Rate
1283 , p_source_20 IN NUMBER
1284 --Currency Conversion Type
1285 , p_source_21 IN VARCHAR2
1286 --Accounted Amount
1287 , p_source_22 IN NUMBER
1288 --Accounting Line Type
1289 , p_source_24 IN NUMBER
1290 )
1291 IS
1292
1293 l_component_type VARCHAR2(80);
1294 l_component_code VARCHAR2(30);
1295 l_component_type_code VARCHAR2(1);
1296 l_component_appl_id INTEGER;
1297 l_amb_context_code VARCHAR2(30);
1298 l_entity_code VARCHAR2(30);
1299 l_event_class_code VARCHAR2(30);
1300 l_ae_header_id NUMBER;
1301 l_event_type_code VARCHAR2(30);
1302 l_line_definition_code VARCHAR2(30);
1303 l_line_definition_owner_code VARCHAR2(1);
1304 --
1305 -- adr variables
1306 l_segment VARCHAR2(30);
1307 l_ccid NUMBER;
1308 l_adr_transaction_coa_id NUMBER;
1309 l_adr_accounting_coa_id NUMBER;
1310 l_adr_flexfield_segment_code VARCHAR2(30);
1311 l_adr_flex_value_set_id NUMBER;
1312 l_adr_value_type_code VARCHAR2(30);
1313 l_adr_value_combination_id NUMBER;
1314 l_adr_value_segment_code VARCHAR2(30);
1315
1316 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
1317 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
1318 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
1319 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
1320
1321 -- 4262811 Variables ------------------------------------------------------------------------------------------
1322 l_entered_amt_idx NUMBER;
1323 l_accted_amt_idx NUMBER;
1324 l_acc_rev_flag VARCHAR2(1);
1325 l_accrual_line_num NUMBER;
1326 l_tmp_amt NUMBER;
1327 l_acc_rev_natural_side_code VARCHAR2(1);
1328
1329 l_num_entries NUMBER;
1330 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
1331 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
1332 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
1333 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
1334 l_recog_line_1 NUMBER;
1335 l_recog_line_2 NUMBER;
1336
1337 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
1338 l_bflow_applied_to_amt NUMBER; -- 5132302
1339 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
1340
1341 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
1342
1343 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
1344 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
1345
1346 ---------------------------------------------------------------------------------------------------------------
1347
1348
1349 --
1350 -- bulk performance
1351 --
1352 l_balance_type_code VARCHAR2(1);
1353 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
1354 l_log_module VARCHAR2(240);
1355
1356 --
1357 -- Upgrade strategy
1358 --
1359 l_actual_upg_option VARCHAR2(1);
1360 l_enc_upg_option VARCHAR2(1);
1361
1362 --
1363 BEGIN
1364 --
1365 IF g_log_enabled THEN
1366 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_6';
1367 END IF;
1368 --
1369 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1370
1371 trace
1372 (p_msg => 'BEGIN of AcctLineType_6'
1373 ,p_level => C_LEVEL_PROCEDURE
1374 ,p_module => l_log_module);
1375
1376 END IF;
1377 --
1378 l_component_type := 'AMB_JLT';
1379 l_component_code := 'ACCRUAL';
1380 l_component_type_code := 'S';
1381 l_component_appl_id := 707;
1382 l_amb_context_code := 'DEFAULT';
1383 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
1384 l_event_class_code := 'CON_INV_OWNR_TXFR';
1385 l_event_type_code := 'CON_INV_OWNR_TXFR_ALL';
1386 l_line_definition_owner_code := 'S';
1387 l_line_definition_code := 'CON_INV_OWNR_TXFR';
1388 --
1389 l_balance_type_code := 'A';
1390 l_segment := NULL;
1391 l_ccid := NULL;
1392 l_adr_transaction_coa_id := NULL;
1393 l_adr_accounting_coa_id := NULL;
1394 l_adr_flexfield_segment_code := NULL;
1395 l_adr_flex_value_set_id := NULL;
1396 l_adr_value_type_code := NULL;
1397 l_adr_value_combination_id := NULL;
1398 l_adr_value_segment_code := NULL;
1399
1400 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
1401 l_bflow_class_code := ''; -- 4219869 Business Flow
1402 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
1403 l_budgetary_control_flag := 'N';
1404
1405 l_bflow_applied_to_amt_idx := NULL; -- 5132302
1406 l_bflow_applied_to_amt := NULL; -- 5132302
1407 l_entered_amt_idx := NULL; -- 4262811
1408 l_accted_amt_idx := NULL; -- 4262811
1409 l_acc_rev_flag := NULL; -- 4262811
1410 l_accrual_line_num := NULL; -- 4262811
1411 l_tmp_amt := NULL; -- 4262811
1412 --
1413
1414 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
1415 l_balance_type_code <> 'B' THEN
1416 IF NVL(p_source_24,9E125) = 16
1417 THEN
1418
1419 --
1420 XLA_AE_LINES_PKG.SetNewLine;
1421
1422 p_balance_type_code := l_balance_type_code;
1423 -- set the flag so later we will know whether the gain loss line needs to be created
1424
1425 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
1426 p_actual_flag :='A';
1427 END IF;
1428
1429 --
1430 -- bulk performance
1431 --
1432 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
1433 p_header_num => 0); -- 4262811
1434 --
1435 -- set accounting line options
1436 --
1437 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
1438 p_natural_side_code => 'D'
1439 , p_gain_or_loss_flag => 'N'
1440 , p_gl_transfer_mode_code => 'S'
1441 , p_acct_entry_type_code => 'A'
1442 , p_switch_side_flag => 'Y'
1443 , p_merge_duplicate_code => 'N'
1444 );
1445 --
1446 l_acc_rev_natural_side_code := 'C'; -- 4262811
1447 --
1448 --
1449 -- set accounting line type info
1450 --
1451 xla_ae_lines_pkg.SetAcctLineType
1452 (p_component_type => l_component_type
1453 ,p_event_type_code => l_event_type_code
1454 ,p_line_definition_owner_code => l_line_definition_owner_code
1455 ,p_line_definition_code => l_line_definition_code
1456 ,p_accounting_line_code => l_component_code
1457 ,p_accounting_line_type_code => l_component_type_code
1458 ,p_accounting_line_appl_id => l_component_appl_id
1459 ,p_amb_context_code => l_amb_context_code
1460 ,p_entity_code => l_entity_code
1461 ,p_event_class_code => l_event_class_code);
1462 --
1463 -- set accounting class
1464 --
1465 xla_ae_lines_pkg.SetAcctClass(
1466 p_accounting_class_code => 'ACCRUAL'
1467 , p_ae_header_id => l_ae_header_id
1468 );
1469
1470 --
1471 -- set rounding class
1472 --
1473 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
1474 'ACCRUAL';
1475
1476 --
1477 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
1478 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
1479 --
1480 -- bulk performance
1481 --
1482 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
1483
1484 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
1485 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
1486
1487 -- 4955764
1488 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
1489 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
1490
1491 -- 4458381 Public Sector Enh
1492
1493 --
1494 -- set accounting attributes for the line type
1495 --
1496 l_entered_amt_idx := 3;
1497 l_accted_amt_idx := 8;
1498 l_bflow_applied_to_amt_idx := NULL; -- 5132302
1499 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
1500 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
1501 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
1502 l_rec_acct_attrs.array_char_value(2) := p_source_12;
1503 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
1504 l_rec_acct_attrs.array_num_value(3) := p_source_18;
1505 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
1506 l_rec_acct_attrs.array_char_value(4) := p_source_15;
1507 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
1508 l_rec_acct_attrs.array_date_value(5) := p_source_19;
1509 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
1510 l_rec_acct_attrs.array_num_value(6) := p_source_20;
1511 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
1512 l_rec_acct_attrs.array_char_value(7) := p_source_21;
1513 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
1514 l_rec_acct_attrs.array_num_value(8) := p_source_22;
1515
1516 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
1517 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
1518
1519 ---------------------------------------------------------------------------------------------------------------
1520 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
1521 ---------------------------------------------------------------------------------------------------------------
1522 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
1523
1524 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
1525 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
1526
1527 IF xla_accounting_cache_pkg.GetValueChar
1528 (p_source_code => 'LEDGER_CATEGORY_CODE'
1529 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
1530 AND l_bflow_method_code = 'PRIOR_ENTRY'
1531 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
1532 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
1533 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
1534 )
1535 THEN
1536 xla_ae_lines_pkg.BflowUpgEntry
1537 (p_business_method_code => l_bflow_method_code
1538 ,p_business_class_code => l_bflow_class_code
1539 ,p_balance_type => l_balance_type_code);
1540 ELSE
1541 NULL;
1542 -- No business flow processing for business flow method of NONE.
1543 END IF;
1544
1545 --
1546 -- call analytical criteria
1547 --
1548
1549 --
1550 -- call description
1551 --
1552 -- No description or it is inherited.
1553 --
1554 -- call ADRs
1555 -- Bug 4922099
1556 --
1557 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
1558 (NVL(l_actual_upg_option, 'N') = 'O') OR
1559 (NVL(l_enc_upg_option, 'N') = 'O')
1560 )
1561 THEN
1562 NULL;
1563 --
1564 --
1565
1566 l_ccid := AcctDerRule_4(
1567 p_application_id => p_application_id
1568 , p_ae_header_id => l_ae_header_id
1569 , p_source_4 => p_source_4
1570 , x_transaction_coa_id => l_adr_transaction_coa_id
1571 , x_accounting_coa_id => l_adr_accounting_coa_id
1572 , x_value_type_code => l_adr_value_type_code
1573 , p_side => 'NA'
1574 );
1575
1576 xla_ae_lines_pkg.set_ccid(
1577 p_code_combination_id => l_ccid
1578 , p_value_type_code => l_adr_value_type_code
1579 , p_transaction_coa_id => l_adr_transaction_coa_id
1580 , p_accounting_coa_id => l_adr_accounting_coa_id
1581 , p_adr_code => 'CST_DEFAULT'
1582 , p_adr_type_code => 'S'
1583 , p_component_type => l_component_type
1584 , p_component_code => l_component_code
1585 , p_component_type_code => l_component_type_code
1586 , p_component_appl_id => l_component_appl_id
1587 , p_amb_context_code => l_amb_context_code
1588 , p_side => 'NA'
1589 );
1590
1591
1592 --
1593 --
1594 END IF;
1595 --
1596 -- Bug 4922099
1597 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
1598 (NVL(l_enc_upg_option, 'N') = 'O')
1599 ) AND
1600 (l_bflow_method_code = 'PRIOR_ENTRY')
1601 )
1602 THEN
1603 IF
1604 --
1605 1 = 2
1606 --
1607 THEN
1608 xla_accounting_err_pkg.build_message
1609 (p_appli_s_name => 'XLA'
1610 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
1611 ,p_token_1 => 'LINE_NUMBER'
1612 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
1613 ,p_token_2 => 'LINE_TYPE_NAME'
1614 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
1615 l_component_type
1616 ,l_component_code
1617 ,l_component_type_code
1618 ,l_component_appl_id
1619 ,l_amb_context_code
1620 ,l_entity_code
1621 ,l_event_class_code
1622 )
1623 ,p_token_3 => 'OWNER'
1624 ,p_value_3 => xla_lookups_pkg.get_meaning(
1625 p_lookup_type => 'XLA_OWNER_TYPE'
1626 ,p_lookup_code => l_component_type_code
1627 )
1628 ,p_token_4 => 'PRODUCT_NAME'
1629 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
1630 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
1631 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
1632 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
1633 ,p_ae_header_id => NULL
1634 );
1635
1636 IF (C_LEVEL_ERROR>= g_log_level) THEN
1637 trace
1638 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
1639 ,p_level => C_LEVEL_ERROR
1640 ,p_module => l_log_module);
1641 END IF;
1642 END IF;
1643 END IF;
1644 --
1645 --
1646 ------------------------------------------------------------------------------------------------
1647 -- 4219869 Business Flow
1648 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
1649 -- Prior Entry. Currently, the following code is always generated.
1650 ------------------------------------------------------------------------------------------------
1651 XLA_AE_LINES_PKG.ValidateCurrentLine;
1652
1653 ------------------------------------------------------------------------------------
1654 -- 4219869 Business Flow
1655 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
1656 ------------------------------------------------------------------------------------
1657 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
1658
1659 ----------------------------------------------------------------------------------
1660 -- 4219869 Business Flow
1661 -- Update journal entry status -- Need to generate this within IF <condition>
1662 ----------------------------------------------------------------------------------
1663 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
1664 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
1665 ,p_balance_type_code => l_balance_type_code
1666 );
1667
1668 -------------------------------------------------------------------------------------------
1669 -- 4262811 - Generate the Accrual Reversal lines
1670 -------------------------------------------------------------------------------------------
1671 BEGIN
1672 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
1673 (g_array_event(p_event_id).array_value_num('header_index'));
1674 IF l_acc_rev_flag IS NULL THEN
1675 l_acc_rev_flag := 'N';
1676 END IF;
1677 EXCEPTION
1678 WHEN OTHERS THEN
1679 l_acc_rev_flag := 'N';
1680 END;
1681 --
1682 IF (l_acc_rev_flag = 'Y') THEN
1683
1684 -- 4645092 ------------------------------------------------------------------------------
1685 -- To allow MPA report to determine if it should generate report process
1686 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
1687 ------------------------------------------------------------------------------------------
1688
1689 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
1690 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
1691 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
1692 -- call ADRs
1693 -- Bug 4922099
1694 --
1695 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
1696 (NVL(l_actual_upg_option, 'N') = 'O') OR
1697 (NVL(l_enc_upg_option, 'N') = 'O')
1698 )
1699 THEN
1700 NULL;
1701 --
1702 --
1703
1704 l_ccid := AcctDerRule_4(
1705 p_application_id => p_application_id
1706 , p_ae_header_id => l_ae_header_id
1707 , p_source_4 => p_source_4
1708 , x_transaction_coa_id => l_adr_transaction_coa_id
1709 , x_accounting_coa_id => l_adr_accounting_coa_id
1710 , x_value_type_code => l_adr_value_type_code
1711 , p_side => 'NA'
1712 );
1713
1714 xla_ae_lines_pkg.set_ccid(
1715 p_code_combination_id => l_ccid
1716 , p_value_type_code => l_adr_value_type_code
1717 , p_transaction_coa_id => l_adr_transaction_coa_id
1718 , p_accounting_coa_id => l_adr_accounting_coa_id
1719 , p_adr_code => 'CST_DEFAULT'
1720 , p_adr_type_code => 'S'
1721 , p_component_type => l_component_type
1722 , p_component_code => l_component_code
1723 , p_component_type_code => l_component_type_code
1724 , p_component_appl_id => l_component_appl_id
1725 , p_amb_context_code => l_amb_context_code
1726 , p_side => 'NA'
1727 );
1728
1729
1730 --
1731 --
1732 END IF;
1733
1734 --
1735 -- Update the line information that should be overwritten
1736 --
1737 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
1738 p_header_num => 1);
1739 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
1740
1741 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
1742
1743 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
1744 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
1745 END IF;
1746
1747 --
1748 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
1749 --
1750 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
1751 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
1752 ELSE
1753 ---------------------------------------------------------------------------------------------------
1754 -- 4262811a Switch Sign
1755 ---------------------------------------------------------------------------------------------------
1756 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
1757 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
1758 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
1759 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
1760 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
1761 -- 5132302
1762 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
1763 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
1764
1765 END IF;
1766
1767 -- 4955764
1768 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
1769 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
1770
1771
1772 XLA_AE_LINES_PKG.ValidateCurrentLine;
1773 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
1774
1775 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
1776 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
1777 ,p_balance_type_code => l_balance_type_code);
1778
1779 END IF;
1780
1781 -----------------------------------------------------------------------------------------
1782 -- 4262811 Multiperiod Accounting
1783 -----------------------------------------------------------------------------------------
1784 -- No MPA option is assigned.
1785
1786
1787 END IF;
1788 END IF;
1789 --
1790
1791 --
1792 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1793 trace
1794 (p_msg => 'END of AcctLineType_6'
1795 ,p_level => C_LEVEL_PROCEDURE
1796 ,p_module => l_log_module);
1797 END IF;
1798 --
1799 EXCEPTION
1800 WHEN xla_exceptions_pkg.application_exception THEN
1801 RAISE;
1802 WHEN OTHERS THEN
1803 xla_exceptions_pkg.raise_message
1804 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_6');
1805 END AcctLineType_6;
1806 --
1807
1808 ---------------------------------------
1809 --
1810 -- PRIVATE FUNCTION
1811 -- AcctLineType_7
1812 --
1813 ---------------------------------------
1814 PROCEDURE AcctLineType_7 (
1815 p_application_id IN NUMBER
1816 ,p_event_id IN NUMBER
1817 ,p_calculate_acctd_flag IN VARCHAR2
1818 ,p_calculate_g_l_flag IN VARCHAR2
1819 ,p_actual_flag IN OUT VARCHAR2
1820 ,p_balance_type_code OUT VARCHAR2
1821 ,p_gain_or_loss_ref OUT VARCHAR2
1822
1823 --Accrual Account for the Write Off
1824 , p_source_1 IN NUMBER
1825 --Distribution Type
1826 , p_source_12 IN VARCHAR2
1827 , p_source_12_meaning IN VARCHAR2
1828 --Entered Currency Code
1829 , p_source_15 IN VARCHAR2
1830 --Entered Amount
1831 , p_source_18 IN NUMBER
1832 --Currency Conversion Date
1833 , p_source_19 IN DATE
1834 --Currency Conversion Rate
1835 , p_source_20 IN NUMBER
1836 --Currency Conversion Type
1837 , p_source_21 IN VARCHAR2
1838 --Accounted Amount
1839 , p_source_22 IN NUMBER
1840 --Line Number
1841 , p_source_25 IN NUMBER
1842 --WRITE_OFF_ID
1843 , p_source_26 IN NUMBER
1844 )
1845 IS
1846
1847 l_component_type VARCHAR2(80);
1848 l_component_code VARCHAR2(30);
1849 l_component_type_code VARCHAR2(1);
1850 l_component_appl_id INTEGER;
1851 l_amb_context_code VARCHAR2(30);
1852 l_entity_code VARCHAR2(30);
1853 l_event_class_code VARCHAR2(30);
1854 l_ae_header_id NUMBER;
1855 l_event_type_code VARCHAR2(30);
1856 l_line_definition_code VARCHAR2(30);
1857 l_line_definition_owner_code VARCHAR2(1);
1858 --
1859 -- adr variables
1860 l_segment VARCHAR2(30);
1861 l_ccid NUMBER;
1862 l_adr_transaction_coa_id NUMBER;
1863 l_adr_accounting_coa_id NUMBER;
1864 l_adr_flexfield_segment_code VARCHAR2(30);
1865 l_adr_flex_value_set_id NUMBER;
1866 l_adr_value_type_code VARCHAR2(30);
1867 l_adr_value_combination_id NUMBER;
1868 l_adr_value_segment_code VARCHAR2(30);
1869
1870 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
1871 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
1872 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
1873 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
1874
1875 -- 4262811 Variables ------------------------------------------------------------------------------------------
1876 l_entered_amt_idx NUMBER;
1877 l_accted_amt_idx NUMBER;
1878 l_acc_rev_flag VARCHAR2(1);
1879 l_accrual_line_num NUMBER;
1880 l_tmp_amt NUMBER;
1881 l_acc_rev_natural_side_code VARCHAR2(1);
1882
1883 l_num_entries NUMBER;
1884 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
1885 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
1886 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
1887 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
1888 l_recog_line_1 NUMBER;
1889 l_recog_line_2 NUMBER;
1890
1891 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
1892 l_bflow_applied_to_amt NUMBER; -- 5132302
1893 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
1894
1895 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
1896
1897 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
1898 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
1899
1900 ---------------------------------------------------------------------------------------------------------------
1901
1902
1903 --
1904 -- bulk performance
1905 --
1906 l_balance_type_code VARCHAR2(1);
1907 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
1908 l_log_module VARCHAR2(240);
1909
1910 --
1911 -- Upgrade strategy
1912 --
1913 l_actual_upg_option VARCHAR2(1);
1914 l_enc_upg_option VARCHAR2(1);
1915
1916 --
1917 BEGIN
1918 --
1919 IF g_log_enabled THEN
1920 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_7';
1921 END IF;
1922 --
1923 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1924
1925 trace
1926 (p_msg => 'BEGIN of AcctLineType_7'
1927 ,p_level => C_LEVEL_PROCEDURE
1928 ,p_module => l_log_module);
1929
1930 END IF;
1931 --
1932 l_component_type := 'AMB_JLT';
1933 l_component_code := 'ACCRUAL';
1934 l_component_type_code := 'S';
1935 l_component_appl_id := 707;
1936 l_amb_context_code := 'DEFAULT';
1937 l_entity_code := 'WO_ACCOUNTING_EVENTS';
1938 l_event_class_code := 'ACCRUAL_WRITE_OFF';
1939 l_event_type_code := 'ACCRUAL_WRITE_OFF_ALL';
1940 l_line_definition_owner_code := 'S';
1941 l_line_definition_code := 'ACCRUAL_WRITE_OFF';
1942 --
1943 l_balance_type_code := 'A';
1944 l_segment := NULL;
1945 l_ccid := NULL;
1946 l_adr_transaction_coa_id := NULL;
1947 l_adr_accounting_coa_id := NULL;
1948 l_adr_flexfield_segment_code := NULL;
1949 l_adr_flex_value_set_id := NULL;
1950 l_adr_value_type_code := NULL;
1951 l_adr_value_combination_id := NULL;
1952 l_adr_value_segment_code := NULL;
1953
1954 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
1955 l_bflow_class_code := ''; -- 4219869 Business Flow
1956 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
1957 l_budgetary_control_flag := 'N';
1958
1959 l_bflow_applied_to_amt_idx := NULL; -- 5132302
1960 l_bflow_applied_to_amt := NULL; -- 5132302
1961 l_entered_amt_idx := NULL; -- 4262811
1962 l_accted_amt_idx := NULL; -- 4262811
1963 l_acc_rev_flag := NULL; -- 4262811
1964 l_accrual_line_num := NULL; -- 4262811
1965 l_tmp_amt := NULL; -- 4262811
1966 --
1967
1968 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
1969 l_balance_type_code <> 'B' THEN
1970 IF NVL(p_source_25,9E125) = 1
1971 THEN
1972
1973 --
1974 XLA_AE_LINES_PKG.SetNewLine;
1975
1976 p_balance_type_code := l_balance_type_code;
1977 -- set the flag so later we will know whether the gain loss line needs to be created
1978
1979 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
1980 p_actual_flag :='A';
1981 END IF;
1982
1983 --
1984 -- bulk performance
1985 --
1986 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
1987 p_header_num => 0); -- 4262811
1988 --
1989 -- set accounting line options
1990 --
1991 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
1992 p_natural_side_code => 'D'
1993 , p_gain_or_loss_flag => 'N'
1994 , p_gl_transfer_mode_code => 'S'
1995 , p_acct_entry_type_code => 'A'
1996 , p_switch_side_flag => 'Y'
1997 , p_merge_duplicate_code => 'N'
1998 );
1999 --
2000 l_acc_rev_natural_side_code := 'C'; -- 4262811
2001 --
2002 --
2003 -- set accounting line type info
2004 --
2005 xla_ae_lines_pkg.SetAcctLineType
2006 (p_component_type => l_component_type
2007 ,p_event_type_code => l_event_type_code
2008 ,p_line_definition_owner_code => l_line_definition_owner_code
2009 ,p_line_definition_code => l_line_definition_code
2010 ,p_accounting_line_code => l_component_code
2011 ,p_accounting_line_type_code => l_component_type_code
2012 ,p_accounting_line_appl_id => l_component_appl_id
2013 ,p_amb_context_code => l_amb_context_code
2014 ,p_entity_code => l_entity_code
2015 ,p_event_class_code => l_event_class_code);
2016 --
2017 -- set accounting class
2018 --
2019 xla_ae_lines_pkg.SetAcctClass(
2020 p_accounting_class_code => 'ACCRUAL'
2021 , p_ae_header_id => l_ae_header_id
2022 );
2023
2024 --
2025 -- set rounding class
2026 --
2027 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
2028 'ACCRUAL';
2029
2030 --
2031 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
2032 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
2033 --
2034 -- bulk performance
2035 --
2036 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
2037
2038 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
2039 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
2040
2041 -- 4955764
2042 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
2043 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
2044
2045 -- 4458381 Public Sector Enh
2046
2047 --
2048 -- set accounting attributes for the line type
2049 --
2050 l_entered_amt_idx := 3;
2051 l_accted_amt_idx := 8;
2052 l_bflow_applied_to_amt_idx := NULL; -- 5132302
2053 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
2054 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_26);
2055 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
2056 l_rec_acct_attrs.array_char_value(2) := p_source_12;
2057 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
2058 l_rec_acct_attrs.array_num_value(3) := p_source_18;
2059 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
2060 l_rec_acct_attrs.array_char_value(4) := p_source_15;
2061 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
2062 l_rec_acct_attrs.array_date_value(5) := p_source_19;
2063 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
2064 l_rec_acct_attrs.array_num_value(6) := p_source_20;
2065 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
2066 l_rec_acct_attrs.array_char_value(7) := p_source_21;
2067 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
2068 l_rec_acct_attrs.array_num_value(8) := p_source_22;
2069
2070 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
2071 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
2072
2073 ---------------------------------------------------------------------------------------------------------------
2074 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
2075 ---------------------------------------------------------------------------------------------------------------
2076 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
2077
2078 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
2079 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
2080
2081 IF xla_accounting_cache_pkg.GetValueChar
2082 (p_source_code => 'LEDGER_CATEGORY_CODE'
2083 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
2084 AND l_bflow_method_code = 'PRIOR_ENTRY'
2085 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
2086 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
2087 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
2088 )
2089 THEN
2090 xla_ae_lines_pkg.BflowUpgEntry
2091 (p_business_method_code => l_bflow_method_code
2092 ,p_business_class_code => l_bflow_class_code
2093 ,p_balance_type => l_balance_type_code);
2094 ELSE
2095 NULL;
2096 -- No business flow processing for business flow method of NONE.
2097 END IF;
2098
2099 --
2100 -- call analytical criteria
2101 --
2102
2103 --
2104 -- call description
2105 --
2106 -- No description or it is inherited.
2107 --
2108 -- call ADRs
2109 -- Bug 4922099
2110 --
2111 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
2112 (NVL(l_actual_upg_option, 'N') = 'O') OR
2113 (NVL(l_enc_upg_option, 'N') = 'O')
2114 )
2115 THEN
2116 NULL;
2117 --
2118 --
2119
2120 l_ccid := AcctDerRule_1(
2121 p_application_id => p_application_id
2122 , p_ae_header_id => l_ae_header_id
2123 , p_source_1 => p_source_1
2124 , x_transaction_coa_id => l_adr_transaction_coa_id
2125 , x_accounting_coa_id => l_adr_accounting_coa_id
2126 , x_value_type_code => l_adr_value_type_code
2127 , p_side => 'NA'
2128 );
2129
2130 xla_ae_lines_pkg.set_ccid(
2131 p_code_combination_id => l_ccid
2132 , p_value_type_code => l_adr_value_type_code
2133 , p_transaction_coa_id => l_adr_transaction_coa_id
2134 , p_accounting_coa_id => l_adr_accounting_coa_id
2135 , p_adr_code => 'CST_AWO_ACCRUAL'
2136 , p_adr_type_code => 'S'
2137 , p_component_type => l_component_type
2138 , p_component_code => l_component_code
2139 , p_component_type_code => l_component_type_code
2140 , p_component_appl_id => l_component_appl_id
2141 , p_amb_context_code => l_amb_context_code
2142 , p_side => 'NA'
2143 );
2144
2145
2146 --
2147 --
2148 END IF;
2149 --
2150 -- Bug 4922099
2151 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
2152 (NVL(l_enc_upg_option, 'N') = 'O')
2153 ) AND
2154 (l_bflow_method_code = 'PRIOR_ENTRY')
2155 )
2156 THEN
2157 IF
2158 --
2159 1 = 2
2160 --
2161 THEN
2162 xla_accounting_err_pkg.build_message
2163 (p_appli_s_name => 'XLA'
2164 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
2165 ,p_token_1 => 'LINE_NUMBER'
2166 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
2167 ,p_token_2 => 'LINE_TYPE_NAME'
2168 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
2169 l_component_type
2170 ,l_component_code
2171 ,l_component_type_code
2172 ,l_component_appl_id
2173 ,l_amb_context_code
2174 ,l_entity_code
2175 ,l_event_class_code
2176 )
2177 ,p_token_3 => 'OWNER'
2178 ,p_value_3 => xla_lookups_pkg.get_meaning(
2179 p_lookup_type => 'XLA_OWNER_TYPE'
2180 ,p_lookup_code => l_component_type_code
2181 )
2182 ,p_token_4 => 'PRODUCT_NAME'
2183 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
2184 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
2185 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
2186 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
2187 ,p_ae_header_id => NULL
2188 );
2189
2190 IF (C_LEVEL_ERROR>= g_log_level) THEN
2191 trace
2192 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
2193 ,p_level => C_LEVEL_ERROR
2194 ,p_module => l_log_module);
2195 END IF;
2196 END IF;
2197 END IF;
2198 --
2199 --
2200 ------------------------------------------------------------------------------------------------
2201 -- 4219869 Business Flow
2202 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
2203 -- Prior Entry. Currently, the following code is always generated.
2204 ------------------------------------------------------------------------------------------------
2205 XLA_AE_LINES_PKG.ValidateCurrentLine;
2206
2207 ------------------------------------------------------------------------------------
2208 -- 4219869 Business Flow
2209 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
2210 ------------------------------------------------------------------------------------
2211 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
2212
2213 ----------------------------------------------------------------------------------
2214 -- 4219869 Business Flow
2215 -- Update journal entry status -- Need to generate this within IF <condition>
2216 ----------------------------------------------------------------------------------
2217 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
2218 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
2219 ,p_balance_type_code => l_balance_type_code
2220 );
2221
2222 -------------------------------------------------------------------------------------------
2223 -- 4262811 - Generate the Accrual Reversal lines
2224 -------------------------------------------------------------------------------------------
2225 BEGIN
2226 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
2227 (g_array_event(p_event_id).array_value_num('header_index'));
2228 IF l_acc_rev_flag IS NULL THEN
2229 l_acc_rev_flag := 'N';
2230 END IF;
2231 EXCEPTION
2232 WHEN OTHERS THEN
2233 l_acc_rev_flag := 'N';
2234 END;
2235 --
2236 IF (l_acc_rev_flag = 'Y') THEN
2237
2238 -- 4645092 ------------------------------------------------------------------------------
2239 -- To allow MPA report to determine if it should generate report process
2240 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
2241 ------------------------------------------------------------------------------------------
2242
2243 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
2244 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
2245 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
2246 -- call ADRs
2247 -- Bug 4922099
2248 --
2249 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
2250 (NVL(l_actual_upg_option, 'N') = 'O') OR
2251 (NVL(l_enc_upg_option, 'N') = 'O')
2252 )
2253 THEN
2254 NULL;
2255 --
2256 --
2257
2258 l_ccid := AcctDerRule_1(
2259 p_application_id => p_application_id
2260 , p_ae_header_id => l_ae_header_id
2261 , p_source_1 => p_source_1
2262 , x_transaction_coa_id => l_adr_transaction_coa_id
2263 , x_accounting_coa_id => l_adr_accounting_coa_id
2264 , x_value_type_code => l_adr_value_type_code
2265 , p_side => 'NA'
2266 );
2267
2268 xla_ae_lines_pkg.set_ccid(
2269 p_code_combination_id => l_ccid
2270 , p_value_type_code => l_adr_value_type_code
2271 , p_transaction_coa_id => l_adr_transaction_coa_id
2272 , p_accounting_coa_id => l_adr_accounting_coa_id
2273 , p_adr_code => 'CST_AWO_ACCRUAL'
2274 , p_adr_type_code => 'S'
2275 , p_component_type => l_component_type
2276 , p_component_code => l_component_code
2277 , p_component_type_code => l_component_type_code
2278 , p_component_appl_id => l_component_appl_id
2279 , p_amb_context_code => l_amb_context_code
2280 , p_side => 'NA'
2281 );
2282
2283
2284 --
2285 --
2286 END IF;
2287
2288 --
2289 -- Update the line information that should be overwritten
2290 --
2291 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
2292 p_header_num => 1);
2293 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
2294
2295 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
2296
2297 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
2298 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
2299 END IF;
2300
2301 --
2302 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
2303 --
2304 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
2305 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
2306 ELSE
2307 ---------------------------------------------------------------------------------------------------
2308 -- 4262811a Switch Sign
2309 ---------------------------------------------------------------------------------------------------
2310 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
2311 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
2312 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
2313 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
2314 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
2315 -- 5132302
2316 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
2317 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
2318
2319 END IF;
2320
2321 -- 4955764
2322 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
2323 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
2324
2325
2326 XLA_AE_LINES_PKG.ValidateCurrentLine;
2327 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
2328
2329 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
2330 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
2331 ,p_balance_type_code => l_balance_type_code);
2332
2333 END IF;
2334
2335 -----------------------------------------------------------------------------------------
2336 -- 4262811 Multiperiod Accounting
2337 -----------------------------------------------------------------------------------------
2338 -- No MPA option is assigned.
2339
2340
2341 END IF;
2342 END IF;
2343 --
2344
2345 --
2346 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2347 trace
2348 (p_msg => 'END of AcctLineType_7'
2349 ,p_level => C_LEVEL_PROCEDURE
2350 ,p_module => l_log_module);
2351 END IF;
2352 --
2353 EXCEPTION
2354 WHEN xla_exceptions_pkg.application_exception THEN
2355 RAISE;
2356 WHEN OTHERS THEN
2357 xla_exceptions_pkg.raise_message
2358 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_7');
2359 END AcctLineType_7;
2360 --
2361
2362 ---------------------------------------
2363 --
2364 -- PRIVATE FUNCTION
2365 -- AcctLineType_8
2366 --
2367 ---------------------------------------
2368 PROCEDURE AcctLineType_8 (
2369 p_application_id IN NUMBER
2370 ,p_event_id IN NUMBER
2371 ,p_calculate_acctd_flag IN VARCHAR2
2372 ,p_calculate_g_l_flag IN VARCHAR2
2373 ,p_actual_flag IN OUT VARCHAR2
2374 ,p_balance_type_code OUT VARCHAR2
2375 ,p_gain_or_loss_ref OUT VARCHAR2
2376
2377 --Cost Management Default Account
2378 , p_source_4 IN NUMBER
2379 --Receiving Accounting Line Type
2380 , p_source_5 IN VARCHAR2
2381 --DISTRIBUTION_IDENTIFIER
2382 , p_source_11 IN NUMBER
2383 --Distribution Type
2384 , p_source_12 IN VARCHAR2
2385 , p_source_12_meaning IN VARCHAR2
2386 --Entered Currency Code
2387 , p_source_15 IN VARCHAR2
2388 --Entered Amount
2389 , p_source_18 IN NUMBER
2390 --Currency Conversion Date
2391 , p_source_19 IN DATE
2392 --Currency Conversion Rate
2393 , p_source_20 IN NUMBER
2394 --Currency Conversion Type
2395 , p_source_21 IN VARCHAR2
2396 --Accounted Amount
2397 , p_source_22 IN NUMBER
2398 )
2399 IS
2400
2401 l_component_type VARCHAR2(80);
2402 l_component_code VARCHAR2(30);
2403 l_component_type_code VARCHAR2(1);
2404 l_component_appl_id INTEGER;
2405 l_amb_context_code VARCHAR2(30);
2406 l_entity_code VARCHAR2(30);
2407 l_event_class_code VARCHAR2(30);
2408 l_ae_header_id NUMBER;
2409 l_event_type_code VARCHAR2(30);
2410 l_line_definition_code VARCHAR2(30);
2411 l_line_definition_owner_code VARCHAR2(1);
2412 --
2413 -- adr variables
2414 l_segment VARCHAR2(30);
2415 l_ccid NUMBER;
2416 l_adr_transaction_coa_id NUMBER;
2417 l_adr_accounting_coa_id NUMBER;
2418 l_adr_flexfield_segment_code VARCHAR2(30);
2419 l_adr_flex_value_set_id NUMBER;
2420 l_adr_value_type_code VARCHAR2(30);
2421 l_adr_value_combination_id NUMBER;
2422 l_adr_value_segment_code VARCHAR2(30);
2423
2424 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
2425 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
2426 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
2427 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
2428
2429 -- 4262811 Variables ------------------------------------------------------------------------------------------
2430 l_entered_amt_idx NUMBER;
2431 l_accted_amt_idx NUMBER;
2432 l_acc_rev_flag VARCHAR2(1);
2433 l_accrual_line_num NUMBER;
2434 l_tmp_amt NUMBER;
2435 l_acc_rev_natural_side_code VARCHAR2(1);
2436
2437 l_num_entries NUMBER;
2438 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
2439 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
2440 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
2441 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
2442 l_recog_line_1 NUMBER;
2443 l_recog_line_2 NUMBER;
2444
2445 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
2446 l_bflow_applied_to_amt NUMBER; -- 5132302
2447 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
2448
2449 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
2450
2451 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
2452 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
2453
2454 ---------------------------------------------------------------------------------------------------------------
2455
2456
2457 --
2458 -- bulk performance
2459 --
2460 l_balance_type_code VARCHAR2(1);
2461 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
2462 l_log_module VARCHAR2(240);
2463
2464 --
2465 -- Upgrade strategy
2466 --
2467 l_actual_upg_option VARCHAR2(1);
2468 l_enc_upg_option VARCHAR2(1);
2469
2470 --
2471 BEGIN
2472 --
2473 IF g_log_enabled THEN
2474 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_8';
2475 END IF;
2476 --
2477 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2478
2479 trace
2480 (p_msg => 'BEGIN of AcctLineType_8'
2481 ,p_level => C_LEVEL_PROCEDURE
2482 ,p_module => l_log_module);
2483
2484 END IF;
2485 --
2486 l_component_type := 'AMB_JLT';
2487 l_component_code := 'ACCRUAL';
2488 l_component_type_code := 'S';
2489 l_component_appl_id := 707;
2490 l_amb_context_code := 'DEFAULT';
2491 l_entity_code := 'RCV_ACCOUNTING_EVENTS';
2492 l_event_class_code := 'RETR_PRICE_ADJ_RCV';
2493 l_event_type_code := 'RETR_PRICE_ADJ_RCV_ALL';
2494 l_line_definition_owner_code := 'S';
2495 l_line_definition_code := 'RETR_PRICE_ADJ_RCV';
2496 --
2497 l_balance_type_code := 'A';
2498 l_segment := NULL;
2499 l_ccid := NULL;
2500 l_adr_transaction_coa_id := NULL;
2501 l_adr_accounting_coa_id := NULL;
2502 l_adr_flexfield_segment_code := NULL;
2503 l_adr_flex_value_set_id := NULL;
2504 l_adr_value_type_code := NULL;
2505 l_adr_value_combination_id := NULL;
2506 l_adr_value_segment_code := NULL;
2507
2508 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
2509 l_bflow_class_code := ''; -- 4219869 Business Flow
2510 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
2511 l_budgetary_control_flag := 'N';
2512
2513 l_bflow_applied_to_amt_idx := NULL; -- 5132302
2514 l_bflow_applied_to_amt := NULL; -- 5132302
2515 l_entered_amt_idx := NULL; -- 4262811
2516 l_accted_amt_idx := NULL; -- 4262811
2517 l_acc_rev_flag := NULL; -- 4262811
2518 l_accrual_line_num := NULL; -- 4262811
2519 l_tmp_amt := NULL; -- 4262811
2520 --
2521
2522 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
2523 l_balance_type_code <> 'B' THEN
2524 IF NVL(p_source_5,'
2525 ') = 'Accrual'
2526 THEN
2527
2528 --
2529 XLA_AE_LINES_PKG.SetNewLine;
2530
2531 p_balance_type_code := l_balance_type_code;
2532 -- set the flag so later we will know whether the gain loss line needs to be created
2533
2534 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
2535 p_actual_flag :='A';
2536 END IF;
2537
2538 --
2539 -- bulk performance
2540 --
2541 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
2542 p_header_num => 0); -- 4262811
2543 --
2544 -- set accounting line options
2545 --
2546 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
2547 p_natural_side_code => 'D'
2548 , p_gain_or_loss_flag => 'N'
2549 , p_gl_transfer_mode_code => 'S'
2550 , p_acct_entry_type_code => 'A'
2551 , p_switch_side_flag => 'Y'
2552 , p_merge_duplicate_code => 'N'
2553 );
2554 --
2555 l_acc_rev_natural_side_code := 'C'; -- 4262811
2556 --
2557 --
2558 -- set accounting line type info
2559 --
2560 xla_ae_lines_pkg.SetAcctLineType
2561 (p_component_type => l_component_type
2562 ,p_event_type_code => l_event_type_code
2563 ,p_line_definition_owner_code => l_line_definition_owner_code
2564 ,p_line_definition_code => l_line_definition_code
2565 ,p_accounting_line_code => l_component_code
2566 ,p_accounting_line_type_code => l_component_type_code
2567 ,p_accounting_line_appl_id => l_component_appl_id
2568 ,p_amb_context_code => l_amb_context_code
2569 ,p_entity_code => l_entity_code
2570 ,p_event_class_code => l_event_class_code);
2571 --
2572 -- set accounting class
2573 --
2574 xla_ae_lines_pkg.SetAcctClass(
2575 p_accounting_class_code => 'ACCRUAL'
2576 , p_ae_header_id => l_ae_header_id
2577 );
2578
2579 --
2580 -- set rounding class
2581 --
2582 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
2583 'ACCRUAL';
2584
2585 --
2586 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
2587 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
2588 --
2589 -- bulk performance
2590 --
2591 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
2592
2593 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
2594 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
2595
2596 -- 4955764
2597 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
2598 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
2599
2600 -- 4458381 Public Sector Enh
2601
2602 --
2603 -- set accounting attributes for the line type
2604 --
2605 l_entered_amt_idx := 3;
2606 l_accted_amt_idx := 8;
2607 l_bflow_applied_to_amt_idx := NULL; -- 5132302
2608 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
2609 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
2610 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
2611 l_rec_acct_attrs.array_char_value(2) := p_source_12;
2612 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
2613 l_rec_acct_attrs.array_num_value(3) := p_source_18;
2614 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
2615 l_rec_acct_attrs.array_char_value(4) := p_source_15;
2616 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
2617 l_rec_acct_attrs.array_date_value(5) := p_source_19;
2618 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
2619 l_rec_acct_attrs.array_num_value(6) := p_source_20;
2620 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
2621 l_rec_acct_attrs.array_char_value(7) := p_source_21;
2622 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
2623 l_rec_acct_attrs.array_num_value(8) := p_source_22;
2624
2625 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
2626 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
2627
2628 ---------------------------------------------------------------------------------------------------------------
2629 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
2630 ---------------------------------------------------------------------------------------------------------------
2631 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
2632
2633 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
2634 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
2635
2636 IF xla_accounting_cache_pkg.GetValueChar
2637 (p_source_code => 'LEDGER_CATEGORY_CODE'
2638 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
2639 AND l_bflow_method_code = 'PRIOR_ENTRY'
2640 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
2641 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
2642 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
2643 )
2644 THEN
2645 xla_ae_lines_pkg.BflowUpgEntry
2646 (p_business_method_code => l_bflow_method_code
2647 ,p_business_class_code => l_bflow_class_code
2648 ,p_balance_type => l_balance_type_code);
2649 ELSE
2650 NULL;
2651 -- No business flow processing for business flow method of NONE.
2652 END IF;
2653
2654 --
2655 -- call analytical criteria
2656 --
2657
2658 --
2659 -- call description
2660 --
2661 -- No description or it is inherited.
2662 --
2663 -- call ADRs
2664 -- Bug 4922099
2665 --
2666 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
2667 (NVL(l_actual_upg_option, 'N') = 'O') OR
2668 (NVL(l_enc_upg_option, 'N') = 'O')
2669 )
2670 THEN
2671 NULL;
2672 --
2673 --
2674
2675 l_ccid := AcctDerRule_4(
2676 p_application_id => p_application_id
2677 , p_ae_header_id => l_ae_header_id
2678 , p_source_4 => p_source_4
2679 , x_transaction_coa_id => l_adr_transaction_coa_id
2680 , x_accounting_coa_id => l_adr_accounting_coa_id
2681 , x_value_type_code => l_adr_value_type_code
2682 , p_side => 'NA'
2683 );
2684
2685 xla_ae_lines_pkg.set_ccid(
2686 p_code_combination_id => l_ccid
2687 , p_value_type_code => l_adr_value_type_code
2688 , p_transaction_coa_id => l_adr_transaction_coa_id
2689 , p_accounting_coa_id => l_adr_accounting_coa_id
2690 , p_adr_code => 'CST_DEFAULT'
2691 , p_adr_type_code => 'S'
2692 , p_component_type => l_component_type
2693 , p_component_code => l_component_code
2694 , p_component_type_code => l_component_type_code
2695 , p_component_appl_id => l_component_appl_id
2696 , p_amb_context_code => l_amb_context_code
2697 , p_side => 'NA'
2698 );
2699
2700
2701 --
2702 --
2703 END IF;
2704 --
2705 -- Bug 4922099
2706 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
2707 (NVL(l_enc_upg_option, 'N') = 'O')
2708 ) AND
2709 (l_bflow_method_code = 'PRIOR_ENTRY')
2710 )
2711 THEN
2712 IF
2713 --
2714 1 = 2
2715 --
2716 THEN
2717 xla_accounting_err_pkg.build_message
2718 (p_appli_s_name => 'XLA'
2719 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
2720 ,p_token_1 => 'LINE_NUMBER'
2721 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
2722 ,p_token_2 => 'LINE_TYPE_NAME'
2723 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
2724 l_component_type
2725 ,l_component_code
2726 ,l_component_type_code
2727 ,l_component_appl_id
2728 ,l_amb_context_code
2729 ,l_entity_code
2730 ,l_event_class_code
2731 )
2732 ,p_token_3 => 'OWNER'
2733 ,p_value_3 => xla_lookups_pkg.get_meaning(
2734 p_lookup_type => 'XLA_OWNER_TYPE'
2735 ,p_lookup_code => l_component_type_code
2736 )
2737 ,p_token_4 => 'PRODUCT_NAME'
2738 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
2739 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
2740 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
2741 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
2742 ,p_ae_header_id => NULL
2743 );
2744
2745 IF (C_LEVEL_ERROR>= g_log_level) THEN
2746 trace
2747 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
2748 ,p_level => C_LEVEL_ERROR
2749 ,p_module => l_log_module);
2750 END IF;
2751 END IF;
2752 END IF;
2753 --
2754 --
2755 ------------------------------------------------------------------------------------------------
2756 -- 4219869 Business Flow
2757 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
2758 -- Prior Entry. Currently, the following code is always generated.
2759 ------------------------------------------------------------------------------------------------
2760 XLA_AE_LINES_PKG.ValidateCurrentLine;
2761
2762 ------------------------------------------------------------------------------------
2763 -- 4219869 Business Flow
2764 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
2765 ------------------------------------------------------------------------------------
2766 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
2767
2768 ----------------------------------------------------------------------------------
2769 -- 4219869 Business Flow
2770 -- Update journal entry status -- Need to generate this within IF <condition>
2771 ----------------------------------------------------------------------------------
2772 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
2773 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
2774 ,p_balance_type_code => l_balance_type_code
2775 );
2776
2777 -------------------------------------------------------------------------------------------
2778 -- 4262811 - Generate the Accrual Reversal lines
2779 -------------------------------------------------------------------------------------------
2780 BEGIN
2781 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
2782 (g_array_event(p_event_id).array_value_num('header_index'));
2783 IF l_acc_rev_flag IS NULL THEN
2784 l_acc_rev_flag := 'N';
2785 END IF;
2786 EXCEPTION
2787 WHEN OTHERS THEN
2788 l_acc_rev_flag := 'N';
2789 END;
2790 --
2791 IF (l_acc_rev_flag = 'Y') THEN
2792
2793 -- 4645092 ------------------------------------------------------------------------------
2794 -- To allow MPA report to determine if it should generate report process
2795 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
2796 ------------------------------------------------------------------------------------------
2797
2798 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
2799 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
2800 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
2801 -- call ADRs
2802 -- Bug 4922099
2803 --
2804 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
2805 (NVL(l_actual_upg_option, 'N') = 'O') OR
2806 (NVL(l_enc_upg_option, 'N') = 'O')
2807 )
2808 THEN
2809 NULL;
2810 --
2811 --
2812
2813 l_ccid := AcctDerRule_4(
2814 p_application_id => p_application_id
2815 , p_ae_header_id => l_ae_header_id
2816 , p_source_4 => p_source_4
2817 , x_transaction_coa_id => l_adr_transaction_coa_id
2818 , x_accounting_coa_id => l_adr_accounting_coa_id
2819 , x_value_type_code => l_adr_value_type_code
2820 , p_side => 'NA'
2821 );
2822
2823 xla_ae_lines_pkg.set_ccid(
2824 p_code_combination_id => l_ccid
2825 , p_value_type_code => l_adr_value_type_code
2826 , p_transaction_coa_id => l_adr_transaction_coa_id
2827 , p_accounting_coa_id => l_adr_accounting_coa_id
2828 , p_adr_code => 'CST_DEFAULT'
2829 , p_adr_type_code => 'S'
2830 , p_component_type => l_component_type
2831 , p_component_code => l_component_code
2832 , p_component_type_code => l_component_type_code
2833 , p_component_appl_id => l_component_appl_id
2834 , p_amb_context_code => l_amb_context_code
2835 , p_side => 'NA'
2836 );
2837
2838
2839 --
2840 --
2841 END IF;
2842
2843 --
2844 -- Update the line information that should be overwritten
2845 --
2846 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
2847 p_header_num => 1);
2848 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
2849
2850 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
2851
2852 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
2853 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
2854 END IF;
2855
2856 --
2857 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
2858 --
2859 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
2860 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
2861 ELSE
2862 ---------------------------------------------------------------------------------------------------
2863 -- 4262811a Switch Sign
2864 ---------------------------------------------------------------------------------------------------
2865 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
2866 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
2867 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
2868 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
2869 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
2870 -- 5132302
2871 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
2872 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
2873
2874 END IF;
2875
2876 -- 4955764
2877 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
2878 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
2879
2880
2881 XLA_AE_LINES_PKG.ValidateCurrentLine;
2882 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
2883
2884 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
2885 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
2886 ,p_balance_type_code => l_balance_type_code);
2887
2888 END IF;
2889
2890 -----------------------------------------------------------------------------------------
2891 -- 4262811 Multiperiod Accounting
2892 -----------------------------------------------------------------------------------------
2893 -- No MPA option is assigned.
2894
2895
2896 END IF;
2897 END IF;
2898 --
2899
2900 --
2901 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2902 trace
2903 (p_msg => 'END of AcctLineType_8'
2904 ,p_level => C_LEVEL_PROCEDURE
2905 ,p_module => l_log_module);
2906 END IF;
2907 --
2908 EXCEPTION
2909 WHEN xla_exceptions_pkg.application_exception THEN
2910 RAISE;
2911 WHEN OTHERS THEN
2912 xla_exceptions_pkg.raise_message
2913 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_8');
2914 END AcctLineType_8;
2915 --
2916
2917 ---------------------------------------
2918 --
2919 -- PRIVATE FUNCTION
2920 -- AcctLineType_9
2921 --
2922 ---------------------------------------
2923 PROCEDURE AcctLineType_9 (
2924 p_application_id IN NUMBER
2925 ,p_event_id IN NUMBER
2926 ,p_calculate_acctd_flag IN VARCHAR2
2927 ,p_calculate_g_l_flag IN VARCHAR2
2928 ,p_actual_flag IN OUT VARCHAR2
2929 ,p_balance_type_code OUT VARCHAR2
2930 ,p_gain_or_loss_ref OUT VARCHAR2
2931
2932 --Cost Management Default Account
2933 , p_source_4 IN NUMBER
2934 --Receiving Accounting Line Type
2935 , p_source_5 IN VARCHAR2
2936 --DISTRIBUTION_IDENTIFIER
2937 , p_source_11 IN NUMBER
2938 --Distribution Type
2939 , p_source_12 IN VARCHAR2
2940 , p_source_12_meaning IN VARCHAR2
2941 --Entered Currency Code
2942 , p_source_15 IN VARCHAR2
2943 --Entered Amount
2944 , p_source_18 IN NUMBER
2945 --Currency Conversion Date
2946 , p_source_19 IN DATE
2947 --Currency Conversion Rate
2948 , p_source_20 IN NUMBER
2949 --Currency Conversion Type
2950 , p_source_21 IN VARCHAR2
2951 --Accounted Amount
2952 , p_source_22 IN NUMBER
2953 )
2954 IS
2955
2956 l_component_type VARCHAR2(80);
2957 l_component_code VARCHAR2(30);
2958 l_component_type_code VARCHAR2(1);
2959 l_component_appl_id INTEGER;
2960 l_amb_context_code VARCHAR2(30);
2961 l_entity_code VARCHAR2(30);
2962 l_event_class_code VARCHAR2(30);
2963 l_ae_header_id NUMBER;
2964 l_event_type_code VARCHAR2(30);
2965 l_line_definition_code VARCHAR2(30);
2966 l_line_definition_owner_code VARCHAR2(1);
2967 --
2968 -- adr variables
2969 l_segment VARCHAR2(30);
2970 l_ccid NUMBER;
2971 l_adr_transaction_coa_id NUMBER;
2972 l_adr_accounting_coa_id NUMBER;
2973 l_adr_flexfield_segment_code VARCHAR2(30);
2974 l_adr_flex_value_set_id NUMBER;
2975 l_adr_value_type_code VARCHAR2(30);
2976 l_adr_value_combination_id NUMBER;
2977 l_adr_value_segment_code VARCHAR2(30);
2978
2979 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
2980 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
2981 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
2982 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
2983
2984 -- 4262811 Variables ------------------------------------------------------------------------------------------
2985 l_entered_amt_idx NUMBER;
2986 l_accted_amt_idx NUMBER;
2987 l_acc_rev_flag VARCHAR2(1);
2988 l_accrual_line_num NUMBER;
2989 l_tmp_amt NUMBER;
2990 l_acc_rev_natural_side_code VARCHAR2(1);
2991
2992 l_num_entries NUMBER;
2993 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
2994 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
2995 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
2996 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
2997 l_recog_line_1 NUMBER;
2998 l_recog_line_2 NUMBER;
2999
3000 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
3001 l_bflow_applied_to_amt NUMBER; -- 5132302
3002 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
3003
3004 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
3005
3006 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
3007 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
3008
3009 ---------------------------------------------------------------------------------------------------------------
3010
3011
3012 --
3013 -- bulk performance
3014 --
3015 l_balance_type_code VARCHAR2(1);
3016 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
3017 l_log_module VARCHAR2(240);
3018
3019 --
3020 -- Upgrade strategy
3021 --
3022 l_actual_upg_option VARCHAR2(1);
3023 l_enc_upg_option VARCHAR2(1);
3024
3025 --
3026 BEGIN
3027 --
3028 IF g_log_enabled THEN
3029 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_9';
3030 END IF;
3031 --
3032 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3033
3034 trace
3035 (p_msg => 'BEGIN of AcctLineType_9'
3036 ,p_level => C_LEVEL_PROCEDURE
3037 ,p_module => l_log_module);
3038
3039 END IF;
3040 --
3041 l_component_type := 'AMB_JLT';
3042 l_component_code := 'ACCRUAL';
3043 l_component_type_code := 'S';
3044 l_component_appl_id := 707;
3045 l_amb_context_code := 'DEFAULT';
3046 l_entity_code := 'RCV_ACCOUNTING_EVENTS';
3047 l_event_class_code := 'RCPT_REC_INSP';
3048 l_event_type_code := 'RCPT_REC_INSP_ALL';
3049 l_line_definition_owner_code := 'S';
3050 l_line_definition_code := 'RCPT_REC_INSP';
3051 --
3052 l_balance_type_code := 'A';
3053 l_segment := NULL;
3054 l_ccid := NULL;
3055 l_adr_transaction_coa_id := NULL;
3056 l_adr_accounting_coa_id := NULL;
3057 l_adr_flexfield_segment_code := NULL;
3058 l_adr_flex_value_set_id := NULL;
3059 l_adr_value_type_code := NULL;
3060 l_adr_value_combination_id := NULL;
3061 l_adr_value_segment_code := NULL;
3062
3063 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
3064 l_bflow_class_code := ''; -- 4219869 Business Flow
3065 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
3066 l_budgetary_control_flag := 'N';
3067
3068 l_bflow_applied_to_amt_idx := NULL; -- 5132302
3069 l_bflow_applied_to_amt := NULL; -- 5132302
3070 l_entered_amt_idx := NULL; -- 4262811
3071 l_accted_amt_idx := NULL; -- 4262811
3072 l_acc_rev_flag := NULL; -- 4262811
3073 l_accrual_line_num := NULL; -- 4262811
3074 l_tmp_amt := NULL; -- 4262811
3075 --
3076
3077 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
3078 l_balance_type_code <> 'B' THEN
3079 IF NVL(p_source_5,'
3080 ') = 'Accrual'
3081 THEN
3082
3083 --
3084 XLA_AE_LINES_PKG.SetNewLine;
3085
3086 p_balance_type_code := l_balance_type_code;
3087 -- set the flag so later we will know whether the gain loss line needs to be created
3088
3089 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
3090 p_actual_flag :='A';
3091 END IF;
3092
3093 --
3094 -- bulk performance
3095 --
3096 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
3097 p_header_num => 0); -- 4262811
3098 --
3099 -- set accounting line options
3100 --
3101 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
3102 p_natural_side_code => 'D'
3103 , p_gain_or_loss_flag => 'N'
3104 , p_gl_transfer_mode_code => 'S'
3105 , p_acct_entry_type_code => 'A'
3106 , p_switch_side_flag => 'Y'
3107 , p_merge_duplicate_code => 'N'
3108 );
3109 --
3110 l_acc_rev_natural_side_code := 'C'; -- 4262811
3111 --
3112 --
3113 -- set accounting line type info
3114 --
3115 xla_ae_lines_pkg.SetAcctLineType
3116 (p_component_type => l_component_type
3117 ,p_event_type_code => l_event_type_code
3118 ,p_line_definition_owner_code => l_line_definition_owner_code
3119 ,p_line_definition_code => l_line_definition_code
3120 ,p_accounting_line_code => l_component_code
3121 ,p_accounting_line_type_code => l_component_type_code
3122 ,p_accounting_line_appl_id => l_component_appl_id
3123 ,p_amb_context_code => l_amb_context_code
3124 ,p_entity_code => l_entity_code
3125 ,p_event_class_code => l_event_class_code);
3126 --
3127 -- set accounting class
3128 --
3129 xla_ae_lines_pkg.SetAcctClass(
3130 p_accounting_class_code => 'ACCRUAL'
3131 , p_ae_header_id => l_ae_header_id
3132 );
3133
3134 --
3135 -- set rounding class
3136 --
3137 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
3138 'ACCRUAL';
3139
3140 --
3141 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
3142 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
3143 --
3144 -- bulk performance
3145 --
3146 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
3147
3148 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
3149 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
3150
3151 -- 4955764
3152 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
3153 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
3154
3155 -- 4458381 Public Sector Enh
3156
3157 --
3158 -- set accounting attributes for the line type
3159 --
3160 l_entered_amt_idx := 3;
3161 l_accted_amt_idx := 8;
3162 l_bflow_applied_to_amt_idx := NULL; -- 5132302
3163 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
3164 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
3165 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
3166 l_rec_acct_attrs.array_char_value(2) := p_source_12;
3167 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
3168 l_rec_acct_attrs.array_num_value(3) := p_source_18;
3169 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
3170 l_rec_acct_attrs.array_char_value(4) := p_source_15;
3171 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
3172 l_rec_acct_attrs.array_date_value(5) := p_source_19;
3173 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
3174 l_rec_acct_attrs.array_num_value(6) := p_source_20;
3175 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
3176 l_rec_acct_attrs.array_char_value(7) := p_source_21;
3177 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
3178 l_rec_acct_attrs.array_num_value(8) := p_source_22;
3179
3180 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
3181 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
3182
3183 ---------------------------------------------------------------------------------------------------------------
3184 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
3185 ---------------------------------------------------------------------------------------------------------------
3186 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
3187
3188 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
3189 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
3190
3191 IF xla_accounting_cache_pkg.GetValueChar
3192 (p_source_code => 'LEDGER_CATEGORY_CODE'
3193 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
3194 AND l_bflow_method_code = 'PRIOR_ENTRY'
3195 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
3196 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
3197 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
3198 )
3199 THEN
3200 xla_ae_lines_pkg.BflowUpgEntry
3201 (p_business_method_code => l_bflow_method_code
3202 ,p_business_class_code => l_bflow_class_code
3203 ,p_balance_type => l_balance_type_code);
3204 ELSE
3205 NULL;
3206 -- No business flow processing for business flow method of NONE.
3207 END IF;
3208
3209 --
3210 -- call analytical criteria
3211 --
3212
3213 --
3214 -- call description
3215 --
3216 -- No description or it is inherited.
3217 --
3218 -- call ADRs
3219 -- Bug 4922099
3220 --
3221 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
3222 (NVL(l_actual_upg_option, 'N') = 'O') OR
3223 (NVL(l_enc_upg_option, 'N') = 'O')
3224 )
3225 THEN
3226 NULL;
3227 --
3228 --
3229
3230 l_ccid := AcctDerRule_4(
3231 p_application_id => p_application_id
3232 , p_ae_header_id => l_ae_header_id
3233 , p_source_4 => p_source_4
3234 , x_transaction_coa_id => l_adr_transaction_coa_id
3235 , x_accounting_coa_id => l_adr_accounting_coa_id
3236 , x_value_type_code => l_adr_value_type_code
3237 , p_side => 'NA'
3238 );
3239
3240 xla_ae_lines_pkg.set_ccid(
3241 p_code_combination_id => l_ccid
3242 , p_value_type_code => l_adr_value_type_code
3243 , p_transaction_coa_id => l_adr_transaction_coa_id
3244 , p_accounting_coa_id => l_adr_accounting_coa_id
3245 , p_adr_code => 'CST_DEFAULT'
3246 , p_adr_type_code => 'S'
3247 , p_component_type => l_component_type
3248 , p_component_code => l_component_code
3249 , p_component_type_code => l_component_type_code
3250 , p_component_appl_id => l_component_appl_id
3251 , p_amb_context_code => l_amb_context_code
3252 , p_side => 'NA'
3253 );
3254
3255
3256 --
3257 --
3258 END IF;
3259 --
3260 -- Bug 4922099
3261 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
3262 (NVL(l_enc_upg_option, 'N') = 'O')
3263 ) AND
3264 (l_bflow_method_code = 'PRIOR_ENTRY')
3265 )
3266 THEN
3267 IF
3268 --
3269 1 = 2
3270 --
3271 THEN
3272 xla_accounting_err_pkg.build_message
3273 (p_appli_s_name => 'XLA'
3274 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
3275 ,p_token_1 => 'LINE_NUMBER'
3276 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
3277 ,p_token_2 => 'LINE_TYPE_NAME'
3278 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
3279 l_component_type
3280 ,l_component_code
3281 ,l_component_type_code
3282 ,l_component_appl_id
3283 ,l_amb_context_code
3284 ,l_entity_code
3285 ,l_event_class_code
3286 )
3287 ,p_token_3 => 'OWNER'
3288 ,p_value_3 => xla_lookups_pkg.get_meaning(
3289 p_lookup_type => 'XLA_OWNER_TYPE'
3290 ,p_lookup_code => l_component_type_code
3291 )
3292 ,p_token_4 => 'PRODUCT_NAME'
3293 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
3294 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
3295 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
3296 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
3297 ,p_ae_header_id => NULL
3298 );
3299
3300 IF (C_LEVEL_ERROR>= g_log_level) THEN
3301 trace
3302 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
3303 ,p_level => C_LEVEL_ERROR
3304 ,p_module => l_log_module);
3305 END IF;
3306 END IF;
3307 END IF;
3308 --
3309 --
3310 ------------------------------------------------------------------------------------------------
3311 -- 4219869 Business Flow
3312 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
3313 -- Prior Entry. Currently, the following code is always generated.
3314 ------------------------------------------------------------------------------------------------
3315 XLA_AE_LINES_PKG.ValidateCurrentLine;
3316
3317 ------------------------------------------------------------------------------------
3318 -- 4219869 Business Flow
3319 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
3320 ------------------------------------------------------------------------------------
3321 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
3322
3323 ----------------------------------------------------------------------------------
3324 -- 4219869 Business Flow
3325 -- Update journal entry status -- Need to generate this within IF <condition>
3326 ----------------------------------------------------------------------------------
3327 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
3328 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
3329 ,p_balance_type_code => l_balance_type_code
3330 );
3331
3332 -------------------------------------------------------------------------------------------
3333 -- 4262811 - Generate the Accrual Reversal lines
3334 -------------------------------------------------------------------------------------------
3335 BEGIN
3336 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
3337 (g_array_event(p_event_id).array_value_num('header_index'));
3338 IF l_acc_rev_flag IS NULL THEN
3339 l_acc_rev_flag := 'N';
3340 END IF;
3341 EXCEPTION
3342 WHEN OTHERS THEN
3343 l_acc_rev_flag := 'N';
3344 END;
3345 --
3346 IF (l_acc_rev_flag = 'Y') THEN
3347
3348 -- 4645092 ------------------------------------------------------------------------------
3349 -- To allow MPA report to determine if it should generate report process
3350 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
3351 ------------------------------------------------------------------------------------------
3352
3353 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
3354 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
3355 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
3356 -- call ADRs
3357 -- Bug 4922099
3358 --
3359 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
3360 (NVL(l_actual_upg_option, 'N') = 'O') OR
3361 (NVL(l_enc_upg_option, 'N') = 'O')
3362 )
3363 THEN
3364 NULL;
3365 --
3366 --
3367
3368 l_ccid := AcctDerRule_4(
3369 p_application_id => p_application_id
3370 , p_ae_header_id => l_ae_header_id
3371 , p_source_4 => p_source_4
3372 , x_transaction_coa_id => l_adr_transaction_coa_id
3373 , x_accounting_coa_id => l_adr_accounting_coa_id
3374 , x_value_type_code => l_adr_value_type_code
3375 , p_side => 'NA'
3376 );
3377
3378 xla_ae_lines_pkg.set_ccid(
3379 p_code_combination_id => l_ccid
3380 , p_value_type_code => l_adr_value_type_code
3381 , p_transaction_coa_id => l_adr_transaction_coa_id
3382 , p_accounting_coa_id => l_adr_accounting_coa_id
3383 , p_adr_code => 'CST_DEFAULT'
3384 , p_adr_type_code => 'S'
3385 , p_component_type => l_component_type
3386 , p_component_code => l_component_code
3387 , p_component_type_code => l_component_type_code
3388 , p_component_appl_id => l_component_appl_id
3389 , p_amb_context_code => l_amb_context_code
3390 , p_side => 'NA'
3391 );
3392
3393
3394 --
3395 --
3396 END IF;
3397
3398 --
3399 -- Update the line information that should be overwritten
3400 --
3401 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
3402 p_header_num => 1);
3403 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
3404
3405 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
3406
3407 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
3408 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
3409 END IF;
3410
3411 --
3412 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
3413 --
3414 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
3415 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
3416 ELSE
3417 ---------------------------------------------------------------------------------------------------
3418 -- 4262811a Switch Sign
3419 ---------------------------------------------------------------------------------------------------
3420 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
3421 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
3422 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
3423 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
3424 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
3425 -- 5132302
3426 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
3427 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
3428
3429 END IF;
3430
3431 -- 4955764
3432 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
3433 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
3434
3435
3436 XLA_AE_LINES_PKG.ValidateCurrentLine;
3437 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
3438
3439 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
3440 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
3441 ,p_balance_type_code => l_balance_type_code);
3442
3443 END IF;
3444
3445 -----------------------------------------------------------------------------------------
3446 -- 4262811 Multiperiod Accounting
3447 -----------------------------------------------------------------------------------------
3448 -- No MPA option is assigned.
3449
3450
3451 END IF;
3452 END IF;
3453 --
3454
3455 --
3456 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3457 trace
3458 (p_msg => 'END of AcctLineType_9'
3459 ,p_level => C_LEVEL_PROCEDURE
3460 ,p_module => l_log_module);
3461 END IF;
3462 --
3463 EXCEPTION
3464 WHEN xla_exceptions_pkg.application_exception THEN
3465 RAISE;
3466 WHEN OTHERS THEN
3467 xla_exceptions_pkg.raise_message
3468 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_9');
3469 END AcctLineType_9;
3470 --
3471
3472 ---------------------------------------
3473 --
3474 -- PRIVATE FUNCTION
3475 -- AcctLineType_10
3476 --
3477 ---------------------------------------
3478 PROCEDURE AcctLineType_10 (
3479 p_application_id IN NUMBER
3480 ,p_event_id IN NUMBER
3481 ,p_calculate_acctd_flag IN VARCHAR2
3482 ,p_calculate_g_l_flag IN VARCHAR2
3483 ,p_actual_flag IN OUT VARCHAR2
3484 ,p_balance_type_code OUT VARCHAR2
3485 ,p_gain_or_loss_ref OUT VARCHAR2
3486
3487 --Cost Management Default Account
3488 , p_source_4 IN NUMBER
3489 --Receiving Accounting Line Type
3490 , p_source_5 IN VARCHAR2
3491 --DISTRIBUTION_IDENTIFIER
3492 , p_source_11 IN NUMBER
3493 --Distribution Type
3494 , p_source_12 IN VARCHAR2
3495 , p_source_12_meaning IN VARCHAR2
3496 --Entered Currency Code
3497 , p_source_15 IN VARCHAR2
3498 --Entered Amount
3499 , p_source_18 IN NUMBER
3500 --Currency Conversion Date
3501 , p_source_19 IN DATE
3502 --Currency Conversion Rate
3503 , p_source_20 IN NUMBER
3504 --Accounted Amount
3505 , p_source_22 IN NUMBER
3506 )
3507 IS
3508
3509 l_component_type VARCHAR2(80);
3510 l_component_code VARCHAR2(30);
3511 l_component_type_code VARCHAR2(1);
3512 l_component_appl_id INTEGER;
3513 l_amb_context_code VARCHAR2(30);
3514 l_entity_code VARCHAR2(30);
3515 l_event_class_code VARCHAR2(30);
3516 l_ae_header_id NUMBER;
3517 l_event_type_code VARCHAR2(30);
3518 l_line_definition_code VARCHAR2(30);
3519 l_line_definition_owner_code VARCHAR2(1);
3520 --
3521 -- adr variables
3522 l_segment VARCHAR2(30);
3523 l_ccid NUMBER;
3524 l_adr_transaction_coa_id NUMBER;
3525 l_adr_accounting_coa_id NUMBER;
3526 l_adr_flexfield_segment_code VARCHAR2(30);
3527 l_adr_flex_value_set_id NUMBER;
3528 l_adr_value_type_code VARCHAR2(30);
3529 l_adr_value_combination_id NUMBER;
3530 l_adr_value_segment_code VARCHAR2(30);
3531
3532 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
3533 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
3534 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
3535 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
3536
3537 -- 4262811 Variables ------------------------------------------------------------------------------------------
3538 l_entered_amt_idx NUMBER;
3539 l_accted_amt_idx NUMBER;
3540 l_acc_rev_flag VARCHAR2(1);
3541 l_accrual_line_num NUMBER;
3542 l_tmp_amt NUMBER;
3543 l_acc_rev_natural_side_code VARCHAR2(1);
3544
3545 l_num_entries NUMBER;
3546 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
3547 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
3548 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
3549 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
3550 l_recog_line_1 NUMBER;
3551 l_recog_line_2 NUMBER;
3552
3553 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
3554 l_bflow_applied_to_amt NUMBER; -- 5132302
3555 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
3556
3557 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
3558
3559 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
3560 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
3561
3562 ---------------------------------------------------------------------------------------------------------------
3563
3564
3565 --
3566 -- bulk performance
3567 --
3568 l_balance_type_code VARCHAR2(1);
3569 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
3570 l_log_module VARCHAR2(240);
3571
3572 --
3573 -- Upgrade strategy
3574 --
3575 l_actual_upg_option VARCHAR2(1);
3576 l_enc_upg_option VARCHAR2(1);
3577
3578 --
3579 BEGIN
3580 --
3581 IF g_log_enabled THEN
3582 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_10';
3583 END IF;
3584 --
3585 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3586
3587 trace
3588 (p_msg => 'BEGIN of AcctLineType_10'
3589 ,p_level => C_LEVEL_PROCEDURE
3590 ,p_module => l_log_module);
3591
3592 END IF;
3593 --
3594 l_component_type := 'AMB_JLT';
3595 l_component_code := 'CHARGE';
3596 l_component_type_code := 'S';
3597 l_component_appl_id := 707;
3598 l_amb_context_code := 'DEFAULT';
3599 l_entity_code := 'RCV_ACCOUNTING_EVENTS';
3600 l_event_class_code := 'RETR_PRICE_ADJ_DEL';
3601 l_event_type_code := 'RETR_PRICE_ADJ_DEL_ALL';
3602 l_line_definition_owner_code := 'S';
3603 l_line_definition_code := 'RETR_PRICE_ADJ_DEL';
3604 --
3605 l_balance_type_code := 'A';
3606 l_segment := NULL;
3607 l_ccid := NULL;
3608 l_adr_transaction_coa_id := NULL;
3609 l_adr_accounting_coa_id := NULL;
3610 l_adr_flexfield_segment_code := NULL;
3611 l_adr_flex_value_set_id := NULL;
3612 l_adr_value_type_code := NULL;
3613 l_adr_value_combination_id := NULL;
3614 l_adr_value_segment_code := NULL;
3615
3616 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
3617 l_bflow_class_code := ''; -- 4219869 Business Flow
3618 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
3619 l_budgetary_control_flag := 'N';
3620
3621 l_bflow_applied_to_amt_idx := NULL; -- 5132302
3622 l_bflow_applied_to_amt := NULL; -- 5132302
3623 l_entered_amt_idx := NULL; -- 4262811
3624 l_accted_amt_idx := NULL; -- 4262811
3625 l_acc_rev_flag := NULL; -- 4262811
3626 l_accrual_line_num := NULL; -- 4262811
3627 l_tmp_amt := NULL; -- 4262811
3628 --
3629
3630 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
3631 l_balance_type_code <> 'B' THEN
3632 IF NVL(p_source_5,'
3633 ') = 'Charge'
3634 THEN
3635
3636 --
3637 XLA_AE_LINES_PKG.SetNewLine;
3638
3639 p_balance_type_code := l_balance_type_code;
3640 -- set the flag so later we will know whether the gain loss line needs to be created
3641
3642 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
3643 p_actual_flag :='A';
3644 END IF;
3645
3646 --
3647 -- bulk performance
3648 --
3649 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
3650 p_header_num => 0); -- 4262811
3651 --
3652 -- set accounting line options
3653 --
3654 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
3655 p_natural_side_code => 'D'
3656 , p_gain_or_loss_flag => 'N'
3657 , p_gl_transfer_mode_code => 'S'
3658 , p_acct_entry_type_code => 'A'
3659 , p_switch_side_flag => 'Y'
3660 , p_merge_duplicate_code => 'N'
3661 );
3662 --
3663 l_acc_rev_natural_side_code := 'C'; -- 4262811
3664 --
3665 --
3666 -- set accounting line type info
3667 --
3668 xla_ae_lines_pkg.SetAcctLineType
3669 (p_component_type => l_component_type
3670 ,p_event_type_code => l_event_type_code
3671 ,p_line_definition_owner_code => l_line_definition_owner_code
3672 ,p_line_definition_code => l_line_definition_code
3673 ,p_accounting_line_code => l_component_code
3674 ,p_accounting_line_type_code => l_component_type_code
3675 ,p_accounting_line_appl_id => l_component_appl_id
3676 ,p_amb_context_code => l_amb_context_code
3677 ,p_entity_code => l_entity_code
3678 ,p_event_class_code => l_event_class_code);
3679 --
3680 -- set accounting class
3681 --
3682 xla_ae_lines_pkg.SetAcctClass(
3683 p_accounting_class_code => 'CHARGE'
3684 , p_ae_header_id => l_ae_header_id
3685 );
3686
3687 --
3688 -- set rounding class
3689 --
3690 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
3691 'CHARGE';
3692
3693 --
3694 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
3695 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
3696 --
3697 -- bulk performance
3698 --
3699 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
3700
3701 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
3702 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
3703
3704 -- 4955764
3705 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
3706 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
3707
3708 -- 4458381 Public Sector Enh
3709
3710 --
3711 -- set accounting attributes for the line type
3712 --
3713 l_entered_amt_idx := 3;
3714 l_accted_amt_idx := 8;
3715 l_bflow_applied_to_amt_idx := NULL; -- 5132302
3716 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
3717 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
3718 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
3719 l_rec_acct_attrs.array_char_value(2) := p_source_12;
3720 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
3721 l_rec_acct_attrs.array_num_value(3) := p_source_18;
3722 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
3723 l_rec_acct_attrs.array_char_value(4) := p_source_15;
3724 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
3725 l_rec_acct_attrs.array_date_value(5) := p_source_19;
3726 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
3727 l_rec_acct_attrs.array_num_value(6) := p_source_20;
3728 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
3729 l_rec_acct_attrs.array_num_value(7) := to_char(p_source_20);
3730 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
3731 l_rec_acct_attrs.array_num_value(8) := p_source_22;
3732
3733 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
3734 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
3735
3736 ---------------------------------------------------------------------------------------------------------------
3737 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
3738 ---------------------------------------------------------------------------------------------------------------
3739 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
3740
3741 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
3742 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
3743
3744 IF xla_accounting_cache_pkg.GetValueChar
3745 (p_source_code => 'LEDGER_CATEGORY_CODE'
3746 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
3747 AND l_bflow_method_code = 'PRIOR_ENTRY'
3748 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
3749 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
3750 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
3751 )
3752 THEN
3753 xla_ae_lines_pkg.BflowUpgEntry
3754 (p_business_method_code => l_bflow_method_code
3755 ,p_business_class_code => l_bflow_class_code
3756 ,p_balance_type => l_balance_type_code);
3757 ELSE
3758 NULL;
3759 -- No business flow processing for business flow method of NONE.
3760 END IF;
3761
3762 --
3763 -- call analytical criteria
3764 --
3765
3766 --
3767 -- call description
3768 --
3769 -- No description or it is inherited.
3770 --
3771 -- call ADRs
3772 -- Bug 4922099
3773 --
3774 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
3775 (NVL(l_actual_upg_option, 'N') = 'O') OR
3776 (NVL(l_enc_upg_option, 'N') = 'O')
3777 )
3778 THEN
3779 NULL;
3780 --
3781 --
3782
3783 l_ccid := AcctDerRule_4(
3784 p_application_id => p_application_id
3785 , p_ae_header_id => l_ae_header_id
3786 , p_source_4 => p_source_4
3787 , x_transaction_coa_id => l_adr_transaction_coa_id
3788 , x_accounting_coa_id => l_adr_accounting_coa_id
3789 , x_value_type_code => l_adr_value_type_code
3790 , p_side => 'NA'
3791 );
3792
3793 xla_ae_lines_pkg.set_ccid(
3794 p_code_combination_id => l_ccid
3795 , p_value_type_code => l_adr_value_type_code
3796 , p_transaction_coa_id => l_adr_transaction_coa_id
3797 , p_accounting_coa_id => l_adr_accounting_coa_id
3798 , p_adr_code => 'CST_DEFAULT'
3799 , p_adr_type_code => 'S'
3800 , p_component_type => l_component_type
3801 , p_component_code => l_component_code
3802 , p_component_type_code => l_component_type_code
3803 , p_component_appl_id => l_component_appl_id
3804 , p_amb_context_code => l_amb_context_code
3805 , p_side => 'NA'
3806 );
3807
3808
3809 --
3810 --
3811 END IF;
3812 --
3813 -- Bug 4922099
3814 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
3815 (NVL(l_enc_upg_option, 'N') = 'O')
3816 ) AND
3817 (l_bflow_method_code = 'PRIOR_ENTRY')
3818 )
3819 THEN
3820 IF
3821 --
3822 1 = 2
3823 --
3824 THEN
3825 xla_accounting_err_pkg.build_message
3826 (p_appli_s_name => 'XLA'
3827 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
3828 ,p_token_1 => 'LINE_NUMBER'
3829 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
3830 ,p_token_2 => 'LINE_TYPE_NAME'
3831 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
3832 l_component_type
3833 ,l_component_code
3834 ,l_component_type_code
3835 ,l_component_appl_id
3836 ,l_amb_context_code
3837 ,l_entity_code
3838 ,l_event_class_code
3839 )
3840 ,p_token_3 => 'OWNER'
3841 ,p_value_3 => xla_lookups_pkg.get_meaning(
3842 p_lookup_type => 'XLA_OWNER_TYPE'
3843 ,p_lookup_code => l_component_type_code
3844 )
3845 ,p_token_4 => 'PRODUCT_NAME'
3846 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
3847 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
3848 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
3849 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
3850 ,p_ae_header_id => NULL
3851 );
3852
3853 IF (C_LEVEL_ERROR>= g_log_level) THEN
3854 trace
3855 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
3856 ,p_level => C_LEVEL_ERROR
3857 ,p_module => l_log_module);
3858 END IF;
3859 END IF;
3860 END IF;
3861 --
3862 --
3863 ------------------------------------------------------------------------------------------------
3864 -- 4219869 Business Flow
3865 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
3866 -- Prior Entry. Currently, the following code is always generated.
3867 ------------------------------------------------------------------------------------------------
3868 XLA_AE_LINES_PKG.ValidateCurrentLine;
3869
3870 ------------------------------------------------------------------------------------
3871 -- 4219869 Business Flow
3872 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
3873 ------------------------------------------------------------------------------------
3874 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
3875
3876 ----------------------------------------------------------------------------------
3877 -- 4219869 Business Flow
3878 -- Update journal entry status -- Need to generate this within IF <condition>
3879 ----------------------------------------------------------------------------------
3880 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
3881 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
3882 ,p_balance_type_code => l_balance_type_code
3883 );
3884
3885 -------------------------------------------------------------------------------------------
3886 -- 4262811 - Generate the Accrual Reversal lines
3887 -------------------------------------------------------------------------------------------
3888 BEGIN
3889 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
3890 (g_array_event(p_event_id).array_value_num('header_index'));
3891 IF l_acc_rev_flag IS NULL THEN
3892 l_acc_rev_flag := 'N';
3893 END IF;
3894 EXCEPTION
3895 WHEN OTHERS THEN
3896 l_acc_rev_flag := 'N';
3897 END;
3898 --
3899 IF (l_acc_rev_flag = 'Y') THEN
3900
3901 -- 4645092 ------------------------------------------------------------------------------
3902 -- To allow MPA report to determine if it should generate report process
3903 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
3904 ------------------------------------------------------------------------------------------
3905
3906 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
3907 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
3908 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
3909 -- call ADRs
3910 -- Bug 4922099
3911 --
3912 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
3913 (NVL(l_actual_upg_option, 'N') = 'O') OR
3914 (NVL(l_enc_upg_option, 'N') = 'O')
3915 )
3916 THEN
3917 NULL;
3918 --
3919 --
3920
3921 l_ccid := AcctDerRule_4(
3922 p_application_id => p_application_id
3923 , p_ae_header_id => l_ae_header_id
3924 , p_source_4 => p_source_4
3925 , x_transaction_coa_id => l_adr_transaction_coa_id
3926 , x_accounting_coa_id => l_adr_accounting_coa_id
3927 , x_value_type_code => l_adr_value_type_code
3928 , p_side => 'NA'
3929 );
3930
3931 xla_ae_lines_pkg.set_ccid(
3932 p_code_combination_id => l_ccid
3933 , p_value_type_code => l_adr_value_type_code
3934 , p_transaction_coa_id => l_adr_transaction_coa_id
3935 , p_accounting_coa_id => l_adr_accounting_coa_id
3936 , p_adr_code => 'CST_DEFAULT'
3937 , p_adr_type_code => 'S'
3938 , p_component_type => l_component_type
3939 , p_component_code => l_component_code
3940 , p_component_type_code => l_component_type_code
3941 , p_component_appl_id => l_component_appl_id
3942 , p_amb_context_code => l_amb_context_code
3943 , p_side => 'NA'
3944 );
3945
3946
3947 --
3948 --
3949 END IF;
3950
3951 --
3952 -- Update the line information that should be overwritten
3953 --
3954 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
3955 p_header_num => 1);
3956 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
3957
3958 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
3959
3960 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
3961 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
3962 END IF;
3963
3964 --
3965 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
3966 --
3967 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
3968 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
3969 ELSE
3970 ---------------------------------------------------------------------------------------------------
3971 -- 4262811a Switch Sign
3972 ---------------------------------------------------------------------------------------------------
3973 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
3974 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
3975 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
3976 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
3977 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
3978 -- 5132302
3979 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
3980 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
3981
3982 END IF;
3983
3984 -- 4955764
3985 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
3986 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
3987
3988
3989 XLA_AE_LINES_PKG.ValidateCurrentLine;
3990 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
3991
3992 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
3993 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
3994 ,p_balance_type_code => l_balance_type_code);
3995
3996 END IF;
3997
3998 -----------------------------------------------------------------------------------------
3999 -- 4262811 Multiperiod Accounting
4000 -----------------------------------------------------------------------------------------
4001 -- No MPA option is assigned.
4002
4003
4004 END IF;
4005 END IF;
4006 --
4007
4008 --
4009 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4010 trace
4011 (p_msg => 'END of AcctLineType_10'
4012 ,p_level => C_LEVEL_PROCEDURE
4013 ,p_module => l_log_module);
4014 END IF;
4015 --
4016 EXCEPTION
4017 WHEN xla_exceptions_pkg.application_exception THEN
4018 RAISE;
4019 WHEN OTHERS THEN
4020 xla_exceptions_pkg.raise_message
4021 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_10');
4022 END AcctLineType_10;
4023 --
4024
4025 ---------------------------------------
4026 --
4027 -- PRIVATE FUNCTION
4028 -- AcctLineType_11
4029 --
4030 ---------------------------------------
4031 PROCEDURE AcctLineType_11 (
4032 p_application_id IN NUMBER
4033 ,p_event_id IN NUMBER
4034 ,p_calculate_acctd_flag IN VARCHAR2
4035 ,p_calculate_g_l_flag IN VARCHAR2
4036 ,p_actual_flag IN OUT VARCHAR2
4037 ,p_balance_type_code OUT VARCHAR2
4038 ,p_gain_or_loss_ref OUT VARCHAR2
4039
4040 --Cost Management Default Account
4041 , p_source_4 IN NUMBER
4042 --Receiving Accounting Line Type
4043 , p_source_5 IN VARCHAR2
4044 --Applied to Application ID
4045 , p_source_6 IN NUMBER
4046 --Applied to Distribution Link Type
4047 , p_source_7 IN VARCHAR2
4048 --Applied to Entity Code
4049 , p_source_8 IN VARCHAR2
4050 --PO_DISTRIBUTION_ID
4051 , p_source_9 IN NUMBER
4052 --Applied To Purchase Document Identifier
4053 , p_source_10 IN NUMBER
4054 --DISTRIBUTION_IDENTIFIER
4055 , p_source_11 IN NUMBER
4056 --Distribution Type
4057 , p_source_12 IN VARCHAR2
4058 , p_source_12_meaning IN VARCHAR2
4059 --PO Budget Account
4060 , p_source_13 IN NUMBER
4061 --Encumbrance Reversal Amount Entered
4062 , p_source_14 IN NUMBER
4063 --Entered Currency Code
4064 , p_source_15 IN VARCHAR2
4065 --Transaction Encumbrance Reversal Amount
4066 , p_source_16 IN NUMBER
4067 --Costing Period End Accrual Encumbrance Upgrade Option
4068 , p_source_17 IN VARCHAR2
4069 --Entered Amount
4070 , p_source_18 IN NUMBER
4071 --Currency Conversion Date
4072 , p_source_19 IN DATE
4073 --Currency Conversion Rate
4074 , p_source_20 IN NUMBER
4075 --Currency Conversion Type
4076 , p_source_21 IN VARCHAR2
4077 --Accounted Amount
4078 , p_source_22 IN NUMBER
4079 --Purchasing Encumbrance Type Identifier
4080 , p_source_23 IN NUMBER
4081 )
4082 IS
4083
4084 l_component_type VARCHAR2(80);
4085 l_component_code VARCHAR2(30);
4086 l_component_type_code VARCHAR2(1);
4087 l_component_appl_id INTEGER;
4088 l_amb_context_code VARCHAR2(30);
4089 l_entity_code VARCHAR2(30);
4090 l_event_class_code VARCHAR2(30);
4091 l_ae_header_id NUMBER;
4092 l_event_type_code VARCHAR2(30);
4093 l_line_definition_code VARCHAR2(30);
4094 l_line_definition_owner_code VARCHAR2(1);
4095 --
4096 -- adr variables
4097 l_segment VARCHAR2(30);
4098 l_ccid NUMBER;
4099 l_adr_transaction_coa_id NUMBER;
4100 l_adr_accounting_coa_id NUMBER;
4101 l_adr_flexfield_segment_code VARCHAR2(30);
4102 l_adr_flex_value_set_id NUMBER;
4103 l_adr_value_type_code VARCHAR2(30);
4104 l_adr_value_combination_id NUMBER;
4105 l_adr_value_segment_code VARCHAR2(30);
4106
4107 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
4108 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
4109 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
4110 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
4111
4112 -- 4262811 Variables ------------------------------------------------------------------------------------------
4113 l_entered_amt_idx NUMBER;
4114 l_accted_amt_idx NUMBER;
4115 l_acc_rev_flag VARCHAR2(1);
4116 l_accrual_line_num NUMBER;
4117 l_tmp_amt NUMBER;
4118 l_acc_rev_natural_side_code VARCHAR2(1);
4119
4120 l_num_entries NUMBER;
4121 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
4122 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
4123 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
4124 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
4125 l_recog_line_1 NUMBER;
4126 l_recog_line_2 NUMBER;
4127
4128 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
4129 l_bflow_applied_to_amt NUMBER; -- 5132302
4130 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
4131
4132 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
4133
4134 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
4135 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
4136
4137 ---------------------------------------------------------------------------------------------------------------
4138
4139
4140 --
4141 -- bulk performance
4142 --
4143 l_balance_type_code VARCHAR2(1);
4144 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
4145 l_log_module VARCHAR2(240);
4146
4147 --
4148 -- Upgrade strategy
4149 --
4150 l_actual_upg_option VARCHAR2(1);
4151 l_enc_upg_option VARCHAR2(1);
4152
4153 --
4154 BEGIN
4155 --
4156 IF g_log_enabled THEN
4157 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_11';
4158 END IF;
4159 --
4160 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4161
4162 trace
4163 (p_msg => 'BEGIN of AcctLineType_11'
4164 ,p_level => C_LEVEL_PROCEDURE
4165 ,p_module => l_log_module);
4166
4167 END IF;
4168 --
4169 l_component_type := 'AMB_JLT';
4170 l_component_code := 'CHARGE';
4171 l_component_type_code := 'S';
4172 l_component_appl_id := 707;
4173 l_amb_context_code := 'DEFAULT';
4174 l_entity_code := 'RCV_ACCOUNTING_EVENTS';
4175 l_event_class_code := 'PERIOD_END_ACCRUAL';
4176 l_event_type_code := 'PERIOD_END_ACCRUAL_ALL';
4177 l_line_definition_owner_code := 'S';
4178 l_line_definition_code := 'PERIOD_END_ACCRUAL';
4179 --
4180 l_balance_type_code := 'A';
4181 l_segment := NULL;
4182 l_ccid := NULL;
4183 l_adr_transaction_coa_id := NULL;
4184 l_adr_accounting_coa_id := NULL;
4185 l_adr_flexfield_segment_code := NULL;
4186 l_adr_flex_value_set_id := NULL;
4187 l_adr_value_type_code := NULL;
4188 l_adr_value_combination_id := NULL;
4189 l_adr_value_segment_code := NULL;
4190
4191 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
4192 l_bflow_class_code := ''; -- 4219869 Business Flow
4193 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
4194 l_budgetary_control_flag := 'N';
4195
4196 l_bflow_applied_to_amt_idx := NULL; -- 5132302
4197 l_bflow_applied_to_amt := NULL; -- 5132302
4198 l_entered_amt_idx := NULL; -- 4262811
4199 l_accted_amt_idx := NULL; -- 4262811
4200 l_acc_rev_flag := NULL; -- 4262811
4201 l_accrual_line_num := NULL; -- 4262811
4202 l_tmp_amt := NULL; -- 4262811
4203 --
4204
4205 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
4206 l_balance_type_code <> 'B' THEN
4207 IF NVL(p_source_5,'
4208 ') = 'Charge'
4209 THEN
4210
4211 --
4212 XLA_AE_LINES_PKG.SetNewLine;
4213
4214 p_balance_type_code := l_balance_type_code;
4215 -- set the flag so later we will know whether the gain loss line needs to be created
4216
4217 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
4218 p_actual_flag :='A';
4219 END IF;
4220
4221 --
4222 -- bulk performance
4223 --
4224 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
4225 p_header_num => 0); -- 4262811
4226 --
4227 -- set accounting line options
4228 --
4229 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
4230 p_natural_side_code => 'D'
4231 , p_gain_or_loss_flag => 'N'
4232 , p_gl_transfer_mode_code => 'S'
4233 , p_acct_entry_type_code => 'A'
4234 , p_switch_side_flag => 'Y'
4235 , p_merge_duplicate_code => 'N'
4236 );
4237 --
4238 l_acc_rev_natural_side_code := 'C'; -- 4262811
4239 --
4240 --
4241 -- set accounting line type info
4242 --
4243 xla_ae_lines_pkg.SetAcctLineType
4244 (p_component_type => l_component_type
4245 ,p_event_type_code => l_event_type_code
4246 ,p_line_definition_owner_code => l_line_definition_owner_code
4247 ,p_line_definition_code => l_line_definition_code
4248 ,p_accounting_line_code => l_component_code
4249 ,p_accounting_line_type_code => l_component_type_code
4250 ,p_accounting_line_appl_id => l_component_appl_id
4251 ,p_amb_context_code => l_amb_context_code
4252 ,p_entity_code => l_entity_code
4253 ,p_event_class_code => l_event_class_code);
4254 --
4255 -- set accounting class
4256 --
4257 xla_ae_lines_pkg.SetAcctClass(
4258 p_accounting_class_code => 'CHARGE'
4259 , p_ae_header_id => l_ae_header_id
4260 );
4261
4262 --
4263 -- set rounding class
4264 --
4265 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
4266 'CHARGE';
4267
4268 --
4269 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
4270 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
4271 --
4272 -- bulk performance
4273 --
4274 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
4275
4276 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
4277 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
4278
4279 -- 4955764
4280 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
4281 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
4282
4283 -- 4458381 Public Sector Enh
4284
4285 --
4286 -- set accounting attributes for the line type
4287 --
4288 l_entered_amt_idx := 17;
4289 l_accted_amt_idx := 22;
4290 l_bflow_applied_to_amt_idx := NULL; -- 5132302
4291 l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
4292 l_rec_acct_attrs.array_num_value(1) := p_source_6;
4293 l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
4294 l_rec_acct_attrs.array_char_value(2) := p_source_7;
4295 l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
4296 l_rec_acct_attrs.array_char_value(3) := p_source_8;
4297 l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
4298 l_rec_acct_attrs.array_num_value(4) := to_char(p_source_9);
4299 l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
4300 l_rec_acct_attrs.array_num_value(5) := to_char(p_source_10);
4301 l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
4302 l_rec_acct_attrs.array_num_value(6) := to_char(p_source_11);
4303 l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
4304 l_rec_acct_attrs.array_char_value(7) := p_source_12;
4305 l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
4306 l_rec_acct_attrs.array_num_value(8) := TO_NUMBER(p_source_13);
4307 l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
4308 l_rec_acct_attrs.array_num_value(9) := p_source_14;
4309 l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
4310 l_rec_acct_attrs.array_char_value(10) := p_source_15;
4311 l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
4312 l_rec_acct_attrs.array_num_value(11) := p_source_16;
4313 l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
4314 l_rec_acct_attrs.array_num_value(12) := TO_NUMBER(p_source_13);
4315 l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
4316 l_rec_acct_attrs.array_num_value(13) := p_source_14;
4317 l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
4318 l_rec_acct_attrs.array_char_value(14) := p_source_15;
4319 l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
4320 l_rec_acct_attrs.array_num_value(15) := p_source_16;
4321 l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
4322 l_rec_acct_attrs.array_char_value(16) := p_source_17;
4323 l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
4324 l_rec_acct_attrs.array_num_value(17) := p_source_18;
4325 l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
4326 l_rec_acct_attrs.array_char_value(18) := p_source_15;
4327 l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
4328 l_rec_acct_attrs.array_date_value(19) := p_source_19;
4329 l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
4330 l_rec_acct_attrs.array_num_value(20) := p_source_20;
4331 l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
4332 l_rec_acct_attrs.array_char_value(21) := p_source_21;
4333 l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
4334 l_rec_acct_attrs.array_num_value(22) := p_source_22;
4335 l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
4336 l_rec_acct_attrs.array_num_value(23) := p_source_23;
4337 l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
4338 l_rec_acct_attrs.array_num_value(24) := p_source_23;
4339
4340 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
4341 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
4342
4343 ---------------------------------------------------------------------------------------------------------------
4344 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
4345 ---------------------------------------------------------------------------------------------------------------
4346 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
4347
4348 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
4349 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
4350
4351 IF xla_accounting_cache_pkg.GetValueChar
4352 (p_source_code => 'LEDGER_CATEGORY_CODE'
4353 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
4354 AND l_bflow_method_code = 'PRIOR_ENTRY'
4355 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
4356 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
4357 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
4358 )
4359 THEN
4360 xla_ae_lines_pkg.BflowUpgEntry
4361 (p_business_method_code => l_bflow_method_code
4362 ,p_business_class_code => l_bflow_class_code
4363 ,p_balance_type => l_balance_type_code);
4364 ELSE
4365 NULL;
4366 -- No business flow processing for business flow method of NONE.
4367 END IF;
4368
4369 --
4370 -- call analytical criteria
4371 --
4372
4373 --
4374 -- call description
4375 --
4376 -- No description or it is inherited.
4377 --
4378 -- call ADRs
4379 -- Bug 4922099
4380 --
4381 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
4382 (NVL(l_actual_upg_option, 'N') = 'O') OR
4383 (NVL(l_enc_upg_option, 'N') = 'O')
4384 )
4385 THEN
4386 NULL;
4387 --
4388 --
4389
4390 l_ccid := AcctDerRule_4(
4391 p_application_id => p_application_id
4392 , p_ae_header_id => l_ae_header_id
4393 , p_source_4 => p_source_4
4394 , x_transaction_coa_id => l_adr_transaction_coa_id
4395 , x_accounting_coa_id => l_adr_accounting_coa_id
4396 , x_value_type_code => l_adr_value_type_code
4397 , p_side => 'NA'
4398 );
4399
4400 xla_ae_lines_pkg.set_ccid(
4401 p_code_combination_id => l_ccid
4402 , p_value_type_code => l_adr_value_type_code
4403 , p_transaction_coa_id => l_adr_transaction_coa_id
4404 , p_accounting_coa_id => l_adr_accounting_coa_id
4405 , p_adr_code => 'CST_DEFAULT'
4406 , p_adr_type_code => 'S'
4407 , p_component_type => l_component_type
4408 , p_component_code => l_component_code
4409 , p_component_type_code => l_component_type_code
4410 , p_component_appl_id => l_component_appl_id
4411 , p_amb_context_code => l_amb_context_code
4412 , p_side => 'NA'
4413 );
4414
4415
4416 --
4417 --
4418 END IF;
4419 --
4420 -- Bug 4922099
4421 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
4422 (NVL(l_enc_upg_option, 'N') = 'O')
4423 ) AND
4424 (l_bflow_method_code = 'PRIOR_ENTRY')
4425 )
4426 THEN
4427 IF
4428 --
4429 1 = 2
4430 --
4431 THEN
4432 xla_accounting_err_pkg.build_message
4433 (p_appli_s_name => 'XLA'
4434 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
4435 ,p_token_1 => 'LINE_NUMBER'
4436 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
4437 ,p_token_2 => 'LINE_TYPE_NAME'
4438 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
4439 l_component_type
4440 ,l_component_code
4441 ,l_component_type_code
4442 ,l_component_appl_id
4443 ,l_amb_context_code
4444 ,l_entity_code
4445 ,l_event_class_code
4446 )
4447 ,p_token_3 => 'OWNER'
4448 ,p_value_3 => xla_lookups_pkg.get_meaning(
4449 p_lookup_type => 'XLA_OWNER_TYPE'
4450 ,p_lookup_code => l_component_type_code
4451 )
4452 ,p_token_4 => 'PRODUCT_NAME'
4453 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
4454 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
4455 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
4456 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
4457 ,p_ae_header_id => NULL
4458 );
4459
4460 IF (C_LEVEL_ERROR>= g_log_level) THEN
4461 trace
4462 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
4463 ,p_level => C_LEVEL_ERROR
4464 ,p_module => l_log_module);
4465 END IF;
4466 END IF;
4467 END IF;
4468 --
4469 --
4470 ------------------------------------------------------------------------------------------------
4471 -- 4219869 Business Flow
4472 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
4473 -- Prior Entry. Currently, the following code is always generated.
4474 ------------------------------------------------------------------------------------------------
4475 XLA_AE_LINES_PKG.ValidateCurrentLine;
4476
4477 ------------------------------------------------------------------------------------
4478 -- 4219869 Business Flow
4479 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
4480 ------------------------------------------------------------------------------------
4481 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
4482
4483 ----------------------------------------------------------------------------------
4484 -- 4219869 Business Flow
4485 -- Update journal entry status -- Need to generate this within IF <condition>
4486 ----------------------------------------------------------------------------------
4487 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
4488 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
4489 ,p_balance_type_code => l_balance_type_code
4490 );
4491
4492 -------------------------------------------------------------------------------------------
4493 -- 4262811 - Generate the Accrual Reversal lines
4494 -------------------------------------------------------------------------------------------
4495 BEGIN
4496 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
4497 (g_array_event(p_event_id).array_value_num('header_index'));
4498 IF l_acc_rev_flag IS NULL THEN
4499 l_acc_rev_flag := 'N';
4500 END IF;
4501 EXCEPTION
4502 WHEN OTHERS THEN
4503 l_acc_rev_flag := 'N';
4504 END;
4505 --
4506 IF (l_acc_rev_flag = 'Y') THEN
4507
4508 -- 4645092 ------------------------------------------------------------------------------
4509 -- To allow MPA report to determine if it should generate report process
4510 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
4511 ------------------------------------------------------------------------------------------
4512
4513 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
4514 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
4515 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
4516 -- call ADRs
4517 -- Bug 4922099
4518 --
4519 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
4520 (NVL(l_actual_upg_option, 'N') = 'O') OR
4521 (NVL(l_enc_upg_option, 'N') = 'O')
4522 )
4523 THEN
4524 NULL;
4525 --
4526 --
4527
4528 l_ccid := AcctDerRule_4(
4529 p_application_id => p_application_id
4530 , p_ae_header_id => l_ae_header_id
4531 , p_source_4 => p_source_4
4532 , x_transaction_coa_id => l_adr_transaction_coa_id
4533 , x_accounting_coa_id => l_adr_accounting_coa_id
4534 , x_value_type_code => l_adr_value_type_code
4535 , p_side => 'NA'
4536 );
4537
4538 xla_ae_lines_pkg.set_ccid(
4539 p_code_combination_id => l_ccid
4540 , p_value_type_code => l_adr_value_type_code
4541 , p_transaction_coa_id => l_adr_transaction_coa_id
4542 , p_accounting_coa_id => l_adr_accounting_coa_id
4543 , p_adr_code => 'CST_DEFAULT'
4544 , p_adr_type_code => 'S'
4545 , p_component_type => l_component_type
4546 , p_component_code => l_component_code
4547 , p_component_type_code => l_component_type_code
4548 , p_component_appl_id => l_component_appl_id
4549 , p_amb_context_code => l_amb_context_code
4550 , p_side => 'NA'
4551 );
4552
4553
4554 --
4555 --
4556 END IF;
4557
4558 --
4559 -- Update the line information that should be overwritten
4560 --
4561 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
4562 p_header_num => 1);
4563 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
4564
4565 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
4566
4567 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
4568 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
4569 END IF;
4570
4571 --
4572 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
4573 --
4574 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
4575 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
4576 ELSE
4577 ---------------------------------------------------------------------------------------------------
4578 -- 4262811a Switch Sign
4579 ---------------------------------------------------------------------------------------------------
4580 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
4581 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
4582 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
4583 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
4584 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
4585 -- 5132302
4586 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
4587 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
4588
4589 END IF;
4590
4591 -- 4955764
4592 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
4593 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
4594
4595
4596 XLA_AE_LINES_PKG.ValidateCurrentLine;
4597 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
4598
4599 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
4600 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
4601 ,p_balance_type_code => l_balance_type_code);
4602
4603 END IF;
4604
4605 -----------------------------------------------------------------------------------------
4606 -- 4262811 Multiperiod Accounting
4607 -----------------------------------------------------------------------------------------
4608 -- No MPA option is assigned.
4609
4610
4611 END IF;
4612 END IF;
4613 --
4614
4615 --
4616 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4617 trace
4618 (p_msg => 'END of AcctLineType_11'
4619 ,p_level => C_LEVEL_PROCEDURE
4620 ,p_module => l_log_module);
4621 END IF;
4622 --
4623 EXCEPTION
4624 WHEN xla_exceptions_pkg.application_exception THEN
4625 RAISE;
4626 WHEN OTHERS THEN
4627 xla_exceptions_pkg.raise_message
4628 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_11');
4629 END AcctLineType_11;
4630 --
4631
4632 ---------------------------------------
4633 --
4634 -- PRIVATE FUNCTION
4635 -- AcctLineType_12
4636 --
4637 ---------------------------------------
4638 PROCEDURE AcctLineType_12 (
4639 p_application_id IN NUMBER
4640 ,p_event_id IN NUMBER
4641 ,p_calculate_acctd_flag IN VARCHAR2
4642 ,p_calculate_g_l_flag IN VARCHAR2
4643 ,p_actual_flag IN OUT VARCHAR2
4644 ,p_balance_type_code OUT VARCHAR2
4645 ,p_gain_or_loss_ref OUT VARCHAR2
4646
4647 --Cost Management Default Account
4648 , p_source_4 IN NUMBER
4649 --Receiving Accounting Line Type
4650 , p_source_5 IN VARCHAR2
4651 --Applied to Application ID
4652 , p_source_6 IN NUMBER
4653 --Applied to Distribution Link Type
4654 , p_source_7 IN VARCHAR2
4655 --Applied to Entity Code
4656 , p_source_8 IN VARCHAR2
4657 --PO_DISTRIBUTION_ID
4658 , p_source_9 IN NUMBER
4659 --Applied To Purchase Document Identifier
4660 , p_source_10 IN NUMBER
4661 --DISTRIBUTION_IDENTIFIER
4662 , p_source_11 IN NUMBER
4663 --Distribution Type
4664 , p_source_12 IN VARCHAR2
4665 , p_source_12_meaning IN VARCHAR2
4666 --PO Budget Account
4667 , p_source_13 IN NUMBER
4668 --Encumbrance Reversal Amount Entered
4669 , p_source_14 IN NUMBER
4670 --Entered Currency Code
4671 , p_source_15 IN VARCHAR2
4672 --Transaction Encumbrance Reversal Amount
4673 , p_source_16 IN NUMBER
4674 --Entered Amount
4675 , p_source_18 IN NUMBER
4676 --Currency Conversion Date
4677 , p_source_19 IN DATE
4678 --Currency Conversion Rate
4679 , p_source_20 IN NUMBER
4680 --Currency Conversion Type
4681 , p_source_21 IN VARCHAR2
4682 --Accounted Amount
4683 , p_source_22 IN NUMBER
4684 --Purchasing Encumbrance Type Identifier
4685 , p_source_23 IN NUMBER
4686 --Costing Encumbrance Upgrade Option
4687 , p_source_27 IN VARCHAR2
4688 )
4689 IS
4690
4691 l_component_type VARCHAR2(80);
4692 l_component_code VARCHAR2(30);
4693 l_component_type_code VARCHAR2(1);
4694 l_component_appl_id INTEGER;
4695 l_amb_context_code VARCHAR2(30);
4696 l_entity_code VARCHAR2(30);
4697 l_event_class_code VARCHAR2(30);
4698 l_ae_header_id NUMBER;
4699 l_event_type_code VARCHAR2(30);
4700 l_line_definition_code VARCHAR2(30);
4701 l_line_definition_owner_code VARCHAR2(1);
4702 --
4703 -- adr variables
4704 l_segment VARCHAR2(30);
4705 l_ccid NUMBER;
4706 l_adr_transaction_coa_id NUMBER;
4707 l_adr_accounting_coa_id NUMBER;
4708 l_adr_flexfield_segment_code VARCHAR2(30);
4709 l_adr_flex_value_set_id NUMBER;
4710 l_adr_value_type_code VARCHAR2(30);
4711 l_adr_value_combination_id NUMBER;
4712 l_adr_value_segment_code VARCHAR2(30);
4713
4714 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
4715 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
4716 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
4717 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
4718
4719 -- 4262811 Variables ------------------------------------------------------------------------------------------
4720 l_entered_amt_idx NUMBER;
4721 l_accted_amt_idx NUMBER;
4722 l_acc_rev_flag VARCHAR2(1);
4723 l_accrual_line_num NUMBER;
4724 l_tmp_amt NUMBER;
4725 l_acc_rev_natural_side_code VARCHAR2(1);
4726
4727 l_num_entries NUMBER;
4728 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
4729 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
4730 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
4731 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
4732 l_recog_line_1 NUMBER;
4733 l_recog_line_2 NUMBER;
4734
4735 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
4736 l_bflow_applied_to_amt NUMBER; -- 5132302
4737 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
4738
4739 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
4740
4741 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
4742 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
4743
4744 ---------------------------------------------------------------------------------------------------------------
4745
4746
4747 --
4748 -- bulk performance
4749 --
4750 l_balance_type_code VARCHAR2(1);
4751 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
4752 l_log_module VARCHAR2(240);
4753
4754 --
4755 -- Upgrade strategy
4756 --
4757 l_actual_upg_option VARCHAR2(1);
4758 l_enc_upg_option VARCHAR2(1);
4759
4760 --
4761 BEGIN
4762 --
4763 IF g_log_enabled THEN
4764 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_12';
4765 END IF;
4766 --
4767 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4768
4769 trace
4770 (p_msg => 'BEGIN of AcctLineType_12'
4771 ,p_level => C_LEVEL_PROCEDURE
4772 ,p_module => l_log_module);
4773
4774 END IF;
4775 --
4776 l_component_type := 'AMB_JLT';
4777 l_component_code := 'CHARGE';
4778 l_component_type_code := 'S';
4779 l_component_appl_id := 707;
4780 l_amb_context_code := 'DEFAULT';
4781 l_entity_code := 'RCV_ACCOUNTING_EVENTS';
4782 l_event_class_code := 'DELIVER_EXPENSE';
4783 l_event_type_code := 'DELIVER_EXPENSE_ALL';
4784 l_line_definition_owner_code := 'S';
4785 l_line_definition_code := 'DELIVER_EXPENSE';
4786 --
4787 l_balance_type_code := 'A';
4788 l_segment := NULL;
4789 l_ccid := NULL;
4790 l_adr_transaction_coa_id := NULL;
4791 l_adr_accounting_coa_id := NULL;
4792 l_adr_flexfield_segment_code := NULL;
4793 l_adr_flex_value_set_id := NULL;
4794 l_adr_value_type_code := NULL;
4795 l_adr_value_combination_id := NULL;
4796 l_adr_value_segment_code := NULL;
4797
4798 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
4799 l_bflow_class_code := ''; -- 4219869 Business Flow
4800 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
4801 l_budgetary_control_flag := 'N';
4802
4803 l_bflow_applied_to_amt_idx := NULL; -- 5132302
4804 l_bflow_applied_to_amt := NULL; -- 5132302
4805 l_entered_amt_idx := NULL; -- 4262811
4806 l_accted_amt_idx := NULL; -- 4262811
4807 l_acc_rev_flag := NULL; -- 4262811
4808 l_accrual_line_num := NULL; -- 4262811
4809 l_tmp_amt := NULL; -- 4262811
4810 --
4811
4812 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
4813 l_balance_type_code <> 'B' THEN
4814 IF NVL(p_source_5,'
4815 ') = 'Charge'
4816 THEN
4817
4818 --
4819 XLA_AE_LINES_PKG.SetNewLine;
4820
4821 p_balance_type_code := l_balance_type_code;
4822 -- set the flag so later we will know whether the gain loss line needs to be created
4823
4824 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
4825 p_actual_flag :='A';
4826 END IF;
4827
4828 --
4829 -- bulk performance
4830 --
4831 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
4832 p_header_num => 0); -- 4262811
4833 --
4834 -- set accounting line options
4835 --
4836 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
4837 p_natural_side_code => 'D'
4838 , p_gain_or_loss_flag => 'N'
4839 , p_gl_transfer_mode_code => 'S'
4840 , p_acct_entry_type_code => 'A'
4841 , p_switch_side_flag => 'Y'
4842 , p_merge_duplicate_code => 'N'
4843 );
4844 --
4845 l_acc_rev_natural_side_code := 'C'; -- 4262811
4846 --
4847 --
4848 -- set accounting line type info
4849 --
4850 xla_ae_lines_pkg.SetAcctLineType
4851 (p_component_type => l_component_type
4852 ,p_event_type_code => l_event_type_code
4853 ,p_line_definition_owner_code => l_line_definition_owner_code
4854 ,p_line_definition_code => l_line_definition_code
4855 ,p_accounting_line_code => l_component_code
4856 ,p_accounting_line_type_code => l_component_type_code
4857 ,p_accounting_line_appl_id => l_component_appl_id
4858 ,p_amb_context_code => l_amb_context_code
4859 ,p_entity_code => l_entity_code
4860 ,p_event_class_code => l_event_class_code);
4861 --
4862 -- set accounting class
4863 --
4864 xla_ae_lines_pkg.SetAcctClass(
4865 p_accounting_class_code => 'CHARGE'
4866 , p_ae_header_id => l_ae_header_id
4867 );
4868
4869 --
4870 -- set rounding class
4871 --
4872 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
4873 'CHARGE';
4874
4875 --
4876 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
4877 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
4878 --
4879 -- bulk performance
4880 --
4881 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
4882
4883 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
4884 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
4885
4886 -- 4955764
4887 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
4888 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
4889
4890 -- 4458381 Public Sector Enh
4891
4892 --
4893 -- set accounting attributes for the line type
4894 --
4895 l_entered_amt_idx := 17;
4896 l_accted_amt_idx := 22;
4897 l_bflow_applied_to_amt_idx := NULL; -- 5132302
4898 l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
4899 l_rec_acct_attrs.array_num_value(1) := p_source_6;
4900 l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
4901 l_rec_acct_attrs.array_char_value(2) := p_source_7;
4902 l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
4903 l_rec_acct_attrs.array_char_value(3) := p_source_8;
4904 l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
4905 l_rec_acct_attrs.array_num_value(4) := to_char(p_source_9);
4906 l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
4907 l_rec_acct_attrs.array_num_value(5) := to_char(p_source_10);
4908 l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
4909 l_rec_acct_attrs.array_num_value(6) := to_char(p_source_11);
4910 l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
4911 l_rec_acct_attrs.array_char_value(7) := p_source_12;
4912 l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
4913 l_rec_acct_attrs.array_num_value(8) := TO_NUMBER(p_source_13);
4914 l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
4915 l_rec_acct_attrs.array_num_value(9) := p_source_14;
4916 l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
4917 l_rec_acct_attrs.array_char_value(10) := p_source_15;
4918 l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
4919 l_rec_acct_attrs.array_num_value(11) := p_source_16;
4920 l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
4921 l_rec_acct_attrs.array_num_value(12) := TO_NUMBER(p_source_13);
4922 l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
4923 l_rec_acct_attrs.array_num_value(13) := p_source_14;
4924 l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
4925 l_rec_acct_attrs.array_char_value(14) := p_source_15;
4926 l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
4927 l_rec_acct_attrs.array_num_value(15) := p_source_16;
4928 l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
4929 l_rec_acct_attrs.array_char_value(16) := p_source_27;
4930 l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
4931 l_rec_acct_attrs.array_num_value(17) := p_source_18;
4932 l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
4933 l_rec_acct_attrs.array_char_value(18) := p_source_15;
4934 l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
4935 l_rec_acct_attrs.array_date_value(19) := p_source_19;
4936 l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
4937 l_rec_acct_attrs.array_num_value(20) := p_source_20;
4938 l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
4939 l_rec_acct_attrs.array_char_value(21) := p_source_21;
4940 l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
4941 l_rec_acct_attrs.array_num_value(22) := p_source_22;
4942 l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
4943 l_rec_acct_attrs.array_num_value(23) := p_source_23;
4944 l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
4945 l_rec_acct_attrs.array_num_value(24) := p_source_23;
4946
4947 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
4948 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
4949
4950 ---------------------------------------------------------------------------------------------------------------
4951 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
4952 ---------------------------------------------------------------------------------------------------------------
4953 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
4954
4955 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
4956 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
4957
4958 IF xla_accounting_cache_pkg.GetValueChar
4959 (p_source_code => 'LEDGER_CATEGORY_CODE'
4960 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
4961 AND l_bflow_method_code = 'PRIOR_ENTRY'
4962 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
4963 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
4964 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
4965 )
4966 THEN
4967 xla_ae_lines_pkg.BflowUpgEntry
4968 (p_business_method_code => l_bflow_method_code
4969 ,p_business_class_code => l_bflow_class_code
4970 ,p_balance_type => l_balance_type_code);
4971 ELSE
4972 NULL;
4973 -- No business flow processing for business flow method of NONE.
4974 END IF;
4975
4976 --
4977 -- call analytical criteria
4978 --
4979
4980 --
4981 -- call description
4982 --
4983 -- No description or it is inherited.
4984 --
4985 -- call ADRs
4986 -- Bug 4922099
4987 --
4988 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
4989 (NVL(l_actual_upg_option, 'N') = 'O') OR
4990 (NVL(l_enc_upg_option, 'N') = 'O')
4991 )
4992 THEN
4993 NULL;
4994 --
4995 --
4996
4997 l_ccid := AcctDerRule_4(
4998 p_application_id => p_application_id
4999 , p_ae_header_id => l_ae_header_id
5000 , p_source_4 => p_source_4
5001 , x_transaction_coa_id => l_adr_transaction_coa_id
5002 , x_accounting_coa_id => l_adr_accounting_coa_id
5003 , x_value_type_code => l_adr_value_type_code
5004 , p_side => 'NA'
5005 );
5006
5007 xla_ae_lines_pkg.set_ccid(
5008 p_code_combination_id => l_ccid
5009 , p_value_type_code => l_adr_value_type_code
5010 , p_transaction_coa_id => l_adr_transaction_coa_id
5011 , p_accounting_coa_id => l_adr_accounting_coa_id
5012 , p_adr_code => 'CST_DEFAULT'
5013 , p_adr_type_code => 'S'
5014 , p_component_type => l_component_type
5015 , p_component_code => l_component_code
5016 , p_component_type_code => l_component_type_code
5017 , p_component_appl_id => l_component_appl_id
5018 , p_amb_context_code => l_amb_context_code
5019 , p_side => 'NA'
5020 );
5021
5022
5023 --
5024 --
5025 END IF;
5026 --
5027 -- Bug 4922099
5028 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
5029 (NVL(l_enc_upg_option, 'N') = 'O')
5030 ) AND
5031 (l_bflow_method_code = 'PRIOR_ENTRY')
5032 )
5033 THEN
5034 IF
5035 --
5036 1 = 2
5037 --
5038 THEN
5039 xla_accounting_err_pkg.build_message
5040 (p_appli_s_name => 'XLA'
5041 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
5042 ,p_token_1 => 'LINE_NUMBER'
5043 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
5044 ,p_token_2 => 'LINE_TYPE_NAME'
5045 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
5046 l_component_type
5047 ,l_component_code
5048 ,l_component_type_code
5049 ,l_component_appl_id
5050 ,l_amb_context_code
5051 ,l_entity_code
5052 ,l_event_class_code
5053 )
5054 ,p_token_3 => 'OWNER'
5055 ,p_value_3 => xla_lookups_pkg.get_meaning(
5056 p_lookup_type => 'XLA_OWNER_TYPE'
5057 ,p_lookup_code => l_component_type_code
5058 )
5059 ,p_token_4 => 'PRODUCT_NAME'
5060 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
5061 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
5062 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
5063 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
5064 ,p_ae_header_id => NULL
5065 );
5066
5067 IF (C_LEVEL_ERROR>= g_log_level) THEN
5068 trace
5069 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
5070 ,p_level => C_LEVEL_ERROR
5071 ,p_module => l_log_module);
5072 END IF;
5073 END IF;
5074 END IF;
5075 --
5076 --
5077 ------------------------------------------------------------------------------------------------
5078 -- 4219869 Business Flow
5079 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
5080 -- Prior Entry. Currently, the following code is always generated.
5081 ------------------------------------------------------------------------------------------------
5082 XLA_AE_LINES_PKG.ValidateCurrentLine;
5083
5084 ------------------------------------------------------------------------------------
5085 -- 4219869 Business Flow
5086 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
5087 ------------------------------------------------------------------------------------
5088 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
5089
5090 ----------------------------------------------------------------------------------
5091 -- 4219869 Business Flow
5092 -- Update journal entry status -- Need to generate this within IF <condition>
5093 ----------------------------------------------------------------------------------
5094 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
5095 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
5096 ,p_balance_type_code => l_balance_type_code
5097 );
5098
5099 -------------------------------------------------------------------------------------------
5100 -- 4262811 - Generate the Accrual Reversal lines
5101 -------------------------------------------------------------------------------------------
5102 BEGIN
5103 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
5104 (g_array_event(p_event_id).array_value_num('header_index'));
5105 IF l_acc_rev_flag IS NULL THEN
5106 l_acc_rev_flag := 'N';
5107 END IF;
5108 EXCEPTION
5109 WHEN OTHERS THEN
5110 l_acc_rev_flag := 'N';
5111 END;
5112 --
5113 IF (l_acc_rev_flag = 'Y') THEN
5114
5115 -- 4645092 ------------------------------------------------------------------------------
5116 -- To allow MPA report to determine if it should generate report process
5117 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
5118 ------------------------------------------------------------------------------------------
5119
5120 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
5121 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
5122 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
5123 -- call ADRs
5124 -- Bug 4922099
5125 --
5126 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
5127 (NVL(l_actual_upg_option, 'N') = 'O') OR
5128 (NVL(l_enc_upg_option, 'N') = 'O')
5129 )
5130 THEN
5131 NULL;
5132 --
5133 --
5134
5135 l_ccid := AcctDerRule_4(
5136 p_application_id => p_application_id
5137 , p_ae_header_id => l_ae_header_id
5138 , p_source_4 => p_source_4
5139 , x_transaction_coa_id => l_adr_transaction_coa_id
5140 , x_accounting_coa_id => l_adr_accounting_coa_id
5141 , x_value_type_code => l_adr_value_type_code
5142 , p_side => 'NA'
5143 );
5144
5145 xla_ae_lines_pkg.set_ccid(
5146 p_code_combination_id => l_ccid
5147 , p_value_type_code => l_adr_value_type_code
5148 , p_transaction_coa_id => l_adr_transaction_coa_id
5149 , p_accounting_coa_id => l_adr_accounting_coa_id
5150 , p_adr_code => 'CST_DEFAULT'
5151 , p_adr_type_code => 'S'
5152 , p_component_type => l_component_type
5153 , p_component_code => l_component_code
5154 , p_component_type_code => l_component_type_code
5155 , p_component_appl_id => l_component_appl_id
5156 , p_amb_context_code => l_amb_context_code
5157 , p_side => 'NA'
5158 );
5159
5160
5161 --
5162 --
5163 END IF;
5164
5165 --
5166 -- Update the line information that should be overwritten
5167 --
5168 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
5169 p_header_num => 1);
5170 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
5171
5172 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
5173
5174 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
5175 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
5176 END IF;
5177
5178 --
5179 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
5180 --
5181 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
5182 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
5183 ELSE
5184 ---------------------------------------------------------------------------------------------------
5185 -- 4262811a Switch Sign
5186 ---------------------------------------------------------------------------------------------------
5187 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
5188 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
5189 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5190 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
5191 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5192 -- 5132302
5193 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
5194 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5195
5196 END IF;
5197
5198 -- 4955764
5199 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
5200 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
5201
5202
5203 XLA_AE_LINES_PKG.ValidateCurrentLine;
5204 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
5205
5206 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
5207 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
5208 ,p_balance_type_code => l_balance_type_code);
5209
5210 END IF;
5211
5212 -----------------------------------------------------------------------------------------
5213 -- 4262811 Multiperiod Accounting
5214 -----------------------------------------------------------------------------------------
5215 -- No MPA option is assigned.
5216
5217
5218 END IF;
5219 END IF;
5220 --
5221
5222 --
5223 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5224 trace
5225 (p_msg => 'END of AcctLineType_12'
5226 ,p_level => C_LEVEL_PROCEDURE
5227 ,p_module => l_log_module);
5228 END IF;
5229 --
5230 EXCEPTION
5231 WHEN xla_exceptions_pkg.application_exception THEN
5232 RAISE;
5233 WHEN OTHERS THEN
5234 xla_exceptions_pkg.raise_message
5235 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_12');
5236 END AcctLineType_12;
5237 --
5238
5239 ---------------------------------------
5240 --
5241 -- PRIVATE FUNCTION
5242 -- AcctLineType_13
5243 --
5244 ---------------------------------------
5245 PROCEDURE AcctLineType_13 (
5246 p_application_id IN NUMBER
5247 ,p_event_id IN NUMBER
5248 ,p_calculate_acctd_flag IN VARCHAR2
5249 ,p_calculate_g_l_flag IN VARCHAR2
5250 ,p_actual_flag IN OUT VARCHAR2
5251 ,p_balance_type_code OUT VARCHAR2
5252 ,p_gain_or_loss_ref OUT VARCHAR2
5253
5254 --Cost Management Default Account
5255 , p_source_4 IN NUMBER
5256 --Receiving Accounting Line Type
5257 , p_source_5 IN VARCHAR2
5258 --DISTRIBUTION_IDENTIFIER
5259 , p_source_11 IN NUMBER
5260 --Distribution Type
5261 , p_source_12 IN VARCHAR2
5262 , p_source_12_meaning IN VARCHAR2
5263 --Entered Currency Code
5264 , p_source_15 IN VARCHAR2
5265 --Entered Amount
5266 , p_source_18 IN NUMBER
5267 --Currency Conversion Date
5268 , p_source_19 IN DATE
5269 --Currency Conversion Rate
5270 , p_source_20 IN NUMBER
5271 --Currency Conversion Type
5272 , p_source_21 IN VARCHAR2
5273 --Accounted Amount
5274 , p_source_22 IN NUMBER
5275 )
5276 IS
5277
5278 l_component_type VARCHAR2(80);
5279 l_component_code VARCHAR2(30);
5280 l_component_type_code VARCHAR2(1);
5281 l_component_appl_id INTEGER;
5282 l_amb_context_code VARCHAR2(30);
5283 l_entity_code VARCHAR2(30);
5284 l_event_class_code VARCHAR2(30);
5285 l_ae_header_id NUMBER;
5286 l_event_type_code VARCHAR2(30);
5287 l_line_definition_code VARCHAR2(30);
5288 l_line_definition_owner_code VARCHAR2(1);
5289 --
5290 -- adr variables
5291 l_segment VARCHAR2(30);
5292 l_ccid NUMBER;
5293 l_adr_transaction_coa_id NUMBER;
5294 l_adr_accounting_coa_id NUMBER;
5295 l_adr_flexfield_segment_code VARCHAR2(30);
5296 l_adr_flex_value_set_id NUMBER;
5297 l_adr_value_type_code VARCHAR2(30);
5298 l_adr_value_combination_id NUMBER;
5299 l_adr_value_segment_code VARCHAR2(30);
5300
5301 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
5302 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
5303 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
5304 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
5305
5306 -- 4262811 Variables ------------------------------------------------------------------------------------------
5307 l_entered_amt_idx NUMBER;
5308 l_accted_amt_idx NUMBER;
5309 l_acc_rev_flag VARCHAR2(1);
5310 l_accrual_line_num NUMBER;
5311 l_tmp_amt NUMBER;
5312 l_acc_rev_natural_side_code VARCHAR2(1);
5313
5314 l_num_entries NUMBER;
5315 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
5316 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
5317 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
5318 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
5319 l_recog_line_1 NUMBER;
5320 l_recog_line_2 NUMBER;
5321
5322 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
5323 l_bflow_applied_to_amt NUMBER; -- 5132302
5324 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
5325
5326 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
5327
5328 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
5329 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
5330
5331 ---------------------------------------------------------------------------------------------------------------
5332
5333
5334 --
5335 -- bulk performance
5336 --
5337 l_balance_type_code VARCHAR2(1);
5338 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
5339 l_log_module VARCHAR2(240);
5340
5341 --
5342 -- Upgrade strategy
5343 --
5344 l_actual_upg_option VARCHAR2(1);
5345 l_enc_upg_option VARCHAR2(1);
5346
5347 --
5348 BEGIN
5349 --
5350 IF g_log_enabled THEN
5351 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_13';
5352 END IF;
5353 --
5354 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5355
5356 trace
5357 (p_msg => 'BEGIN of AcctLineType_13'
5358 ,p_level => C_LEVEL_PROCEDURE
5359 ,p_module => l_log_module);
5360
5361 END IF;
5362 --
5363 l_component_type := 'AMB_JLT';
5364 l_component_code := 'CLEARING';
5365 l_component_type_code := 'S';
5366 l_component_appl_id := 707;
5367 l_amb_context_code := 'DEFAULT';
5368 l_entity_code := 'RCV_ACCOUNTING_EVENTS';
5369 l_event_class_code := 'RCPT_REC_INSP';
5370 l_event_type_code := 'RCPT_REC_INSP_ALL';
5371 l_line_definition_owner_code := 'S';
5372 l_line_definition_code := 'RCPT_REC_INSP';
5373 --
5374 l_balance_type_code := 'A';
5375 l_segment := NULL;
5376 l_ccid := NULL;
5377 l_adr_transaction_coa_id := NULL;
5378 l_adr_accounting_coa_id := NULL;
5379 l_adr_flexfield_segment_code := NULL;
5380 l_adr_flex_value_set_id := NULL;
5381 l_adr_value_type_code := NULL;
5382 l_adr_value_combination_id := NULL;
5383 l_adr_value_segment_code := NULL;
5384
5385 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
5386 l_bflow_class_code := ''; -- 4219869 Business Flow
5387 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
5388 l_budgetary_control_flag := 'N';
5389
5390 l_bflow_applied_to_amt_idx := NULL; -- 5132302
5391 l_bflow_applied_to_amt := NULL; -- 5132302
5392 l_entered_amt_idx := NULL; -- 4262811
5393 l_accted_amt_idx := NULL; -- 4262811
5394 l_acc_rev_flag := NULL; -- 4262811
5395 l_accrual_line_num := NULL; -- 4262811
5396 l_tmp_amt := NULL; -- 4262811
5397 --
5398
5399 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
5400 l_balance_type_code <> 'B' THEN
5401 IF NVL(p_source_5,'
5402 ') = 'Clearing'
5403 THEN
5404
5405 --
5406 XLA_AE_LINES_PKG.SetNewLine;
5407
5408 p_balance_type_code := l_balance_type_code;
5409 -- set the flag so later we will know whether the gain loss line needs to be created
5410
5411 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
5412 p_actual_flag :='A';
5413 END IF;
5414
5415 --
5416 -- bulk performance
5417 --
5418 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
5419 p_header_num => 0); -- 4262811
5420 --
5421 -- set accounting line options
5422 --
5423 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
5424 p_natural_side_code => 'D'
5425 , p_gain_or_loss_flag => 'N'
5426 , p_gl_transfer_mode_code => 'S'
5427 , p_acct_entry_type_code => 'A'
5428 , p_switch_side_flag => 'Y'
5429 , p_merge_duplicate_code => 'N'
5430 );
5431 --
5432 l_acc_rev_natural_side_code := 'C'; -- 4262811
5433 --
5434 --
5435 -- set accounting line type info
5436 --
5437 xla_ae_lines_pkg.SetAcctLineType
5438 (p_component_type => l_component_type
5439 ,p_event_type_code => l_event_type_code
5440 ,p_line_definition_owner_code => l_line_definition_owner_code
5441 ,p_line_definition_code => l_line_definition_code
5442 ,p_accounting_line_code => l_component_code
5443 ,p_accounting_line_type_code => l_component_type_code
5444 ,p_accounting_line_appl_id => l_component_appl_id
5445 ,p_amb_context_code => l_amb_context_code
5446 ,p_entity_code => l_entity_code
5447 ,p_event_class_code => l_event_class_code);
5448 --
5449 -- set accounting class
5450 --
5451 xla_ae_lines_pkg.SetAcctClass(
5452 p_accounting_class_code => 'CLEARING'
5453 , p_ae_header_id => l_ae_header_id
5454 );
5455
5456 --
5457 -- set rounding class
5458 --
5459 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
5460 'CLEARING';
5461
5462 --
5463 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
5464 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
5465 --
5466 -- bulk performance
5467 --
5468 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
5469
5470 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
5471 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
5472
5473 -- 4955764
5474 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
5475 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
5476
5477 -- 4458381 Public Sector Enh
5478
5479 --
5480 -- set accounting attributes for the line type
5481 --
5482 l_entered_amt_idx := 3;
5483 l_accted_amt_idx := 8;
5484 l_bflow_applied_to_amt_idx := NULL; -- 5132302
5485 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
5486 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
5487 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
5488 l_rec_acct_attrs.array_char_value(2) := p_source_12;
5489 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
5490 l_rec_acct_attrs.array_num_value(3) := p_source_18;
5491 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
5492 l_rec_acct_attrs.array_char_value(4) := p_source_15;
5493 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
5494 l_rec_acct_attrs.array_date_value(5) := p_source_19;
5495 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
5496 l_rec_acct_attrs.array_num_value(6) := p_source_20;
5497 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
5498 l_rec_acct_attrs.array_char_value(7) := p_source_21;
5499 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
5500 l_rec_acct_attrs.array_num_value(8) := p_source_22;
5501
5502 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
5503 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
5504
5505 ---------------------------------------------------------------------------------------------------------------
5506 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
5507 ---------------------------------------------------------------------------------------------------------------
5508 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
5509
5510 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
5511 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
5512
5513 IF xla_accounting_cache_pkg.GetValueChar
5514 (p_source_code => 'LEDGER_CATEGORY_CODE'
5515 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
5516 AND l_bflow_method_code = 'PRIOR_ENTRY'
5517 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
5518 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
5519 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
5520 )
5521 THEN
5522 xla_ae_lines_pkg.BflowUpgEntry
5523 (p_business_method_code => l_bflow_method_code
5524 ,p_business_class_code => l_bflow_class_code
5525 ,p_balance_type => l_balance_type_code);
5526 ELSE
5527 NULL;
5528 -- No business flow processing for business flow method of NONE.
5529 END IF;
5530
5531 --
5532 -- call analytical criteria
5533 --
5534
5535 --
5536 -- call description
5537 --
5538 -- No description or it is inherited.
5539 --
5540 -- call ADRs
5541 -- Bug 4922099
5542 --
5543 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
5544 (NVL(l_actual_upg_option, 'N') = 'O') OR
5545 (NVL(l_enc_upg_option, 'N') = 'O')
5546 )
5547 THEN
5548 NULL;
5549 --
5550 --
5551
5552 l_ccid := AcctDerRule_4(
5553 p_application_id => p_application_id
5554 , p_ae_header_id => l_ae_header_id
5555 , p_source_4 => p_source_4
5556 , x_transaction_coa_id => l_adr_transaction_coa_id
5557 , x_accounting_coa_id => l_adr_accounting_coa_id
5558 , x_value_type_code => l_adr_value_type_code
5559 , p_side => 'NA'
5560 );
5561
5562 xla_ae_lines_pkg.set_ccid(
5563 p_code_combination_id => l_ccid
5564 , p_value_type_code => l_adr_value_type_code
5565 , p_transaction_coa_id => l_adr_transaction_coa_id
5566 , p_accounting_coa_id => l_adr_accounting_coa_id
5567 , p_adr_code => 'CST_DEFAULT'
5568 , p_adr_type_code => 'S'
5569 , p_component_type => l_component_type
5570 , p_component_code => l_component_code
5571 , p_component_type_code => l_component_type_code
5572 , p_component_appl_id => l_component_appl_id
5573 , p_amb_context_code => l_amb_context_code
5574 , p_side => 'NA'
5575 );
5576
5577
5578 --
5579 --
5580 END IF;
5581 --
5582 -- Bug 4922099
5583 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
5584 (NVL(l_enc_upg_option, 'N') = 'O')
5585 ) AND
5586 (l_bflow_method_code = 'PRIOR_ENTRY')
5587 )
5588 THEN
5589 IF
5590 --
5591 1 = 2
5592 --
5593 THEN
5594 xla_accounting_err_pkg.build_message
5595 (p_appli_s_name => 'XLA'
5596 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
5597 ,p_token_1 => 'LINE_NUMBER'
5598 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
5599 ,p_token_2 => 'LINE_TYPE_NAME'
5600 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
5601 l_component_type
5602 ,l_component_code
5603 ,l_component_type_code
5604 ,l_component_appl_id
5605 ,l_amb_context_code
5606 ,l_entity_code
5607 ,l_event_class_code
5608 )
5609 ,p_token_3 => 'OWNER'
5610 ,p_value_3 => xla_lookups_pkg.get_meaning(
5611 p_lookup_type => 'XLA_OWNER_TYPE'
5612 ,p_lookup_code => l_component_type_code
5613 )
5614 ,p_token_4 => 'PRODUCT_NAME'
5615 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
5616 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
5617 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
5618 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
5619 ,p_ae_header_id => NULL
5620 );
5621
5622 IF (C_LEVEL_ERROR>= g_log_level) THEN
5623 trace
5624 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
5625 ,p_level => C_LEVEL_ERROR
5626 ,p_module => l_log_module);
5627 END IF;
5628 END IF;
5629 END IF;
5630 --
5631 --
5632 ------------------------------------------------------------------------------------------------
5633 -- 4219869 Business Flow
5634 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
5635 -- Prior Entry. Currently, the following code is always generated.
5636 ------------------------------------------------------------------------------------------------
5637 XLA_AE_LINES_PKG.ValidateCurrentLine;
5638
5639 ------------------------------------------------------------------------------------
5640 -- 4219869 Business Flow
5641 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
5642 ------------------------------------------------------------------------------------
5643 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
5644
5645 ----------------------------------------------------------------------------------
5646 -- 4219869 Business Flow
5647 -- Update journal entry status -- Need to generate this within IF <condition>
5648 ----------------------------------------------------------------------------------
5649 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
5650 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
5651 ,p_balance_type_code => l_balance_type_code
5652 );
5653
5654 -------------------------------------------------------------------------------------------
5655 -- 4262811 - Generate the Accrual Reversal lines
5656 -------------------------------------------------------------------------------------------
5657 BEGIN
5658 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
5659 (g_array_event(p_event_id).array_value_num('header_index'));
5660 IF l_acc_rev_flag IS NULL THEN
5661 l_acc_rev_flag := 'N';
5662 END IF;
5663 EXCEPTION
5664 WHEN OTHERS THEN
5665 l_acc_rev_flag := 'N';
5666 END;
5667 --
5668 IF (l_acc_rev_flag = 'Y') THEN
5669
5670 -- 4645092 ------------------------------------------------------------------------------
5671 -- To allow MPA report to determine if it should generate report process
5672 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
5673 ------------------------------------------------------------------------------------------
5674
5675 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
5676 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
5677 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
5678 -- call ADRs
5679 -- Bug 4922099
5680 --
5681 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
5682 (NVL(l_actual_upg_option, 'N') = 'O') OR
5683 (NVL(l_enc_upg_option, 'N') = 'O')
5684 )
5685 THEN
5686 NULL;
5687 --
5688 --
5689
5690 l_ccid := AcctDerRule_4(
5691 p_application_id => p_application_id
5692 , p_ae_header_id => l_ae_header_id
5693 , p_source_4 => p_source_4
5694 , x_transaction_coa_id => l_adr_transaction_coa_id
5695 , x_accounting_coa_id => l_adr_accounting_coa_id
5696 , x_value_type_code => l_adr_value_type_code
5697 , p_side => 'NA'
5698 );
5699
5700 xla_ae_lines_pkg.set_ccid(
5701 p_code_combination_id => l_ccid
5702 , p_value_type_code => l_adr_value_type_code
5703 , p_transaction_coa_id => l_adr_transaction_coa_id
5704 , p_accounting_coa_id => l_adr_accounting_coa_id
5705 , p_adr_code => 'CST_DEFAULT'
5706 , p_adr_type_code => 'S'
5707 , p_component_type => l_component_type
5708 , p_component_code => l_component_code
5709 , p_component_type_code => l_component_type_code
5710 , p_component_appl_id => l_component_appl_id
5711 , p_amb_context_code => l_amb_context_code
5712 , p_side => 'NA'
5713 );
5714
5715
5716 --
5717 --
5718 END IF;
5719
5720 --
5721 -- Update the line information that should be overwritten
5722 --
5723 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
5724 p_header_num => 1);
5725 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
5726
5727 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
5728
5729 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
5730 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
5731 END IF;
5732
5733 --
5734 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
5735 --
5736 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
5737 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
5738 ELSE
5739 ---------------------------------------------------------------------------------------------------
5740 -- 4262811a Switch Sign
5741 ---------------------------------------------------------------------------------------------------
5742 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
5743 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
5744 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5745 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
5746 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5747 -- 5132302
5748 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
5749 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5750
5751 END IF;
5752
5753 -- 4955764
5754 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
5755 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
5756
5757
5758 XLA_AE_LINES_PKG.ValidateCurrentLine;
5759 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
5760
5761 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
5762 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
5763 ,p_balance_type_code => l_balance_type_code);
5764
5765 END IF;
5766
5767 -----------------------------------------------------------------------------------------
5768 -- 4262811 Multiperiod Accounting
5769 -----------------------------------------------------------------------------------------
5770 -- No MPA option is assigned.
5771
5772
5773 END IF;
5774 END IF;
5775 --
5776
5777 --
5778 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5779 trace
5780 (p_msg => 'END of AcctLineType_13'
5781 ,p_level => C_LEVEL_PROCEDURE
5782 ,p_module => l_log_module);
5783 END IF;
5784 --
5785 EXCEPTION
5786 WHEN xla_exceptions_pkg.application_exception THEN
5787 RAISE;
5788 WHEN OTHERS THEN
5789 xla_exceptions_pkg.raise_message
5790 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_13');
5791 END AcctLineType_13;
5792 --
5793
5794 ---------------------------------------
5795 --
5796 -- PRIVATE FUNCTION
5797 -- AcctLineType_14
5798 --
5799 ---------------------------------------
5800 PROCEDURE AcctLineType_14 (
5801 p_application_id IN NUMBER
5802 ,p_event_id IN NUMBER
5803 ,p_calculate_acctd_flag IN VARCHAR2
5804 ,p_calculate_g_l_flag IN VARCHAR2
5805 ,p_actual_flag IN OUT VARCHAR2
5806 ,p_balance_type_code OUT VARCHAR2
5807 ,p_gain_or_loss_ref OUT VARCHAR2
5808
5809 --Cost Management Default Account
5810 , p_source_4 IN NUMBER
5811 --DISTRIBUTION_IDENTIFIER
5812 , p_source_11 IN NUMBER
5813 --Distribution Type
5814 , p_source_12 IN VARCHAR2
5815 , p_source_12_meaning IN VARCHAR2
5816 --Entered Currency Code
5817 , p_source_15 IN VARCHAR2
5818 --Entered Amount
5819 , p_source_18 IN NUMBER
5820 --Currency Conversion Date
5821 , p_source_19 IN DATE
5822 --Currency Conversion Rate
5823 , p_source_20 IN NUMBER
5824 --Currency Conversion Type
5825 , p_source_21 IN VARCHAR2
5826 --Accounted Amount
5827 , p_source_22 IN NUMBER
5828 --Accounting Line Type
5829 , p_source_24 IN NUMBER
5830 )
5831 IS
5832
5833 l_component_type VARCHAR2(80);
5834 l_component_code VARCHAR2(30);
5835 l_component_type_code VARCHAR2(1);
5836 l_component_appl_id INTEGER;
5837 l_amb_context_code VARCHAR2(30);
5838 l_entity_code VARCHAR2(30);
5839 l_event_class_code VARCHAR2(30);
5840 l_ae_header_id NUMBER;
5841 l_event_type_code VARCHAR2(30);
5842 l_line_definition_code VARCHAR2(30);
5843 l_line_definition_owner_code VARCHAR2(1);
5844 --
5845 -- adr variables
5846 l_segment VARCHAR2(30);
5847 l_ccid NUMBER;
5848 l_adr_transaction_coa_id NUMBER;
5849 l_adr_accounting_coa_id NUMBER;
5850 l_adr_flexfield_segment_code VARCHAR2(30);
5851 l_adr_flex_value_set_id NUMBER;
5852 l_adr_value_type_code VARCHAR2(30);
5853 l_adr_value_combination_id NUMBER;
5854 l_adr_value_segment_code VARCHAR2(30);
5855
5856 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
5857 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
5858 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
5859 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
5860
5861 -- 4262811 Variables ------------------------------------------------------------------------------------------
5862 l_entered_amt_idx NUMBER;
5863 l_accted_amt_idx NUMBER;
5864 l_acc_rev_flag VARCHAR2(1);
5865 l_accrual_line_num NUMBER;
5866 l_tmp_amt NUMBER;
5867 l_acc_rev_natural_side_code VARCHAR2(1);
5868
5869 l_num_entries NUMBER;
5870 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
5871 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
5872 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
5873 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
5874 l_recog_line_1 NUMBER;
5875 l_recog_line_2 NUMBER;
5876
5877 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
5878 l_bflow_applied_to_amt NUMBER; -- 5132302
5879 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
5880
5881 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
5882
5883 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
5884 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
5885
5886 ---------------------------------------------------------------------------------------------------------------
5887
5888
5889 --
5890 -- bulk performance
5891 --
5892 l_balance_type_code VARCHAR2(1);
5893 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
5894 l_log_module VARCHAR2(240);
5895
5896 --
5897 -- Upgrade strategy
5898 --
5899 l_actual_upg_option VARCHAR2(1);
5900 l_enc_upg_option VARCHAR2(1);
5901
5902 --
5903 BEGIN
5904 --
5905 IF g_log_enabled THEN
5906 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_14';
5907 END IF;
5908 --
5909 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5910
5911 trace
5912 (p_msg => 'BEGIN of AcctLineType_14'
5913 ,p_level => C_LEVEL_PROCEDURE
5914 ,p_module => l_log_module);
5915
5916 END IF;
5917 --
5918 l_component_type := 'AMB_JLT';
5919 l_component_code := 'CLEARING';
5920 l_component_type_code := 'S';
5921 l_component_appl_id := 707;
5922 l_amb_context_code := 'DEFAULT';
5923 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
5924 l_event_class_code := 'LOG_INTERCOMPANY';
5925 l_event_type_code := 'LOG_INTERCOMPANY_ALL';
5926 l_line_definition_owner_code := 'S';
5927 l_line_definition_code := 'LOG_INTERCOMPANY';
5928 --
5929 l_balance_type_code := 'A';
5930 l_segment := NULL;
5931 l_ccid := NULL;
5932 l_adr_transaction_coa_id := NULL;
5933 l_adr_accounting_coa_id := NULL;
5934 l_adr_flexfield_segment_code := NULL;
5935 l_adr_flex_value_set_id := NULL;
5936 l_adr_value_type_code := NULL;
5937 l_adr_value_combination_id := NULL;
5938 l_adr_value_segment_code := NULL;
5939
5940 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
5941 l_bflow_class_code := ''; -- 4219869 Business Flow
5942 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
5943 l_budgetary_control_flag := 'N';
5944
5945 l_bflow_applied_to_amt_idx := NULL; -- 5132302
5946 l_bflow_applied_to_amt := NULL; -- 5132302
5947 l_entered_amt_idx := NULL; -- 4262811
5948 l_accted_amt_idx := NULL; -- 4262811
5949 l_acc_rev_flag := NULL; -- 4262811
5950 l_accrual_line_num := NULL; -- 4262811
5951 l_tmp_amt := NULL; -- 4262811
5952 --
5953
5954 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
5955 l_balance_type_code <> 'B' THEN
5956 IF NVL(p_source_24,9E125) = 31
5957 THEN
5958
5959 --
5960 XLA_AE_LINES_PKG.SetNewLine;
5961
5962 p_balance_type_code := l_balance_type_code;
5963 -- set the flag so later we will know whether the gain loss line needs to be created
5964
5965 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
5966 p_actual_flag :='A';
5967 END IF;
5968
5969 --
5970 -- bulk performance
5971 --
5972 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
5973 p_header_num => 0); -- 4262811
5974 --
5975 -- set accounting line options
5976 --
5977 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
5978 p_natural_side_code => 'D'
5979 , p_gain_or_loss_flag => 'N'
5980 , p_gl_transfer_mode_code => 'S'
5981 , p_acct_entry_type_code => 'A'
5982 , p_switch_side_flag => 'Y'
5983 , p_merge_duplicate_code => 'N'
5984 );
5985 --
5986 l_acc_rev_natural_side_code := 'C'; -- 4262811
5987 --
5988 --
5989 -- set accounting line type info
5990 --
5991 xla_ae_lines_pkg.SetAcctLineType
5992 (p_component_type => l_component_type
5993 ,p_event_type_code => l_event_type_code
5994 ,p_line_definition_owner_code => l_line_definition_owner_code
5995 ,p_line_definition_code => l_line_definition_code
5996 ,p_accounting_line_code => l_component_code
5997 ,p_accounting_line_type_code => l_component_type_code
5998 ,p_accounting_line_appl_id => l_component_appl_id
5999 ,p_amb_context_code => l_amb_context_code
6000 ,p_entity_code => l_entity_code
6001 ,p_event_class_code => l_event_class_code);
6002 --
6003 -- set accounting class
6004 --
6005 xla_ae_lines_pkg.SetAcctClass(
6006 p_accounting_class_code => 'CLEARING'
6007 , p_ae_header_id => l_ae_header_id
6008 );
6009
6010 --
6011 -- set rounding class
6012 --
6013 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
6014 'CLEARING';
6015
6016 --
6017 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
6018 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
6019 --
6020 -- bulk performance
6021 --
6022 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
6023
6024 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
6025 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
6026
6027 -- 4955764
6028 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
6029 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
6030
6031 -- 4458381 Public Sector Enh
6032
6033 --
6034 -- set accounting attributes for the line type
6035 --
6036 l_entered_amt_idx := 3;
6037 l_accted_amt_idx := 8;
6038 l_bflow_applied_to_amt_idx := NULL; -- 5132302
6039 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
6040 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
6041 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
6042 l_rec_acct_attrs.array_char_value(2) := p_source_12;
6043 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
6044 l_rec_acct_attrs.array_num_value(3) := p_source_18;
6045 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
6046 l_rec_acct_attrs.array_char_value(4) := p_source_15;
6047 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
6048 l_rec_acct_attrs.array_date_value(5) := p_source_19;
6049 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
6050 l_rec_acct_attrs.array_num_value(6) := p_source_20;
6051 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
6052 l_rec_acct_attrs.array_char_value(7) := p_source_21;
6053 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
6054 l_rec_acct_attrs.array_num_value(8) := p_source_22;
6055
6056 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
6057 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
6058
6059 ---------------------------------------------------------------------------------------------------------------
6060 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
6061 ---------------------------------------------------------------------------------------------------------------
6062 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
6063
6064 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
6065 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
6066
6067 IF xla_accounting_cache_pkg.GetValueChar
6068 (p_source_code => 'LEDGER_CATEGORY_CODE'
6069 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
6070 AND l_bflow_method_code = 'PRIOR_ENTRY'
6071 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
6072 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
6073 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
6074 )
6075 THEN
6076 xla_ae_lines_pkg.BflowUpgEntry
6077 (p_business_method_code => l_bflow_method_code
6078 ,p_business_class_code => l_bflow_class_code
6079 ,p_balance_type => l_balance_type_code);
6080 ELSE
6081 NULL;
6082 -- No business flow processing for business flow method of NONE.
6083 END IF;
6084
6085 --
6086 -- call analytical criteria
6087 --
6088
6089 --
6090 -- call description
6091 --
6092 -- No description or it is inherited.
6093 --
6094 -- call ADRs
6095 -- Bug 4922099
6096 --
6097 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
6098 (NVL(l_actual_upg_option, 'N') = 'O') OR
6099 (NVL(l_enc_upg_option, 'N') = 'O')
6100 )
6101 THEN
6102 NULL;
6103 --
6104 --
6105
6106 l_ccid := AcctDerRule_4(
6107 p_application_id => p_application_id
6108 , p_ae_header_id => l_ae_header_id
6109 , p_source_4 => p_source_4
6110 , x_transaction_coa_id => l_adr_transaction_coa_id
6111 , x_accounting_coa_id => l_adr_accounting_coa_id
6112 , x_value_type_code => l_adr_value_type_code
6113 , p_side => 'NA'
6114 );
6115
6116 xla_ae_lines_pkg.set_ccid(
6117 p_code_combination_id => l_ccid
6118 , p_value_type_code => l_adr_value_type_code
6119 , p_transaction_coa_id => l_adr_transaction_coa_id
6120 , p_accounting_coa_id => l_adr_accounting_coa_id
6121 , p_adr_code => 'CST_DEFAULT'
6122 , p_adr_type_code => 'S'
6123 , p_component_type => l_component_type
6124 , p_component_code => l_component_code
6125 , p_component_type_code => l_component_type_code
6126 , p_component_appl_id => l_component_appl_id
6127 , p_amb_context_code => l_amb_context_code
6128 , p_side => 'NA'
6129 );
6130
6131
6132 --
6133 --
6134 END IF;
6135 --
6136 -- Bug 4922099
6137 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
6138 (NVL(l_enc_upg_option, 'N') = 'O')
6139 ) AND
6140 (l_bflow_method_code = 'PRIOR_ENTRY')
6141 )
6142 THEN
6143 IF
6144 --
6145 1 = 2
6146 --
6147 THEN
6148 xla_accounting_err_pkg.build_message
6149 (p_appli_s_name => 'XLA'
6150 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
6151 ,p_token_1 => 'LINE_NUMBER'
6152 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
6153 ,p_token_2 => 'LINE_TYPE_NAME'
6154 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
6155 l_component_type
6156 ,l_component_code
6157 ,l_component_type_code
6158 ,l_component_appl_id
6159 ,l_amb_context_code
6160 ,l_entity_code
6161 ,l_event_class_code
6162 )
6163 ,p_token_3 => 'OWNER'
6164 ,p_value_3 => xla_lookups_pkg.get_meaning(
6165 p_lookup_type => 'XLA_OWNER_TYPE'
6166 ,p_lookup_code => l_component_type_code
6167 )
6168 ,p_token_4 => 'PRODUCT_NAME'
6169 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
6170 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
6171 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
6172 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
6173 ,p_ae_header_id => NULL
6174 );
6175
6176 IF (C_LEVEL_ERROR>= g_log_level) THEN
6177 trace
6178 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
6179 ,p_level => C_LEVEL_ERROR
6180 ,p_module => l_log_module);
6181 END IF;
6182 END IF;
6183 END IF;
6184 --
6185 --
6186 ------------------------------------------------------------------------------------------------
6187 -- 4219869 Business Flow
6188 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
6189 -- Prior Entry. Currently, the following code is always generated.
6190 ------------------------------------------------------------------------------------------------
6191 XLA_AE_LINES_PKG.ValidateCurrentLine;
6192
6193 ------------------------------------------------------------------------------------
6194 -- 4219869 Business Flow
6195 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
6196 ------------------------------------------------------------------------------------
6197 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
6198
6199 ----------------------------------------------------------------------------------
6200 -- 4219869 Business Flow
6201 -- Update journal entry status -- Need to generate this within IF <condition>
6202 ----------------------------------------------------------------------------------
6203 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
6204 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
6205 ,p_balance_type_code => l_balance_type_code
6206 );
6207
6208 -------------------------------------------------------------------------------------------
6209 -- 4262811 - Generate the Accrual Reversal lines
6210 -------------------------------------------------------------------------------------------
6211 BEGIN
6212 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
6213 (g_array_event(p_event_id).array_value_num('header_index'));
6214 IF l_acc_rev_flag IS NULL THEN
6215 l_acc_rev_flag := 'N';
6216 END IF;
6217 EXCEPTION
6218 WHEN OTHERS THEN
6219 l_acc_rev_flag := 'N';
6220 END;
6221 --
6222 IF (l_acc_rev_flag = 'Y') THEN
6223
6224 -- 4645092 ------------------------------------------------------------------------------
6225 -- To allow MPA report to determine if it should generate report process
6226 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
6227 ------------------------------------------------------------------------------------------
6228
6229 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
6230 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
6231 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
6232 -- call ADRs
6233 -- Bug 4922099
6234 --
6235 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
6236 (NVL(l_actual_upg_option, 'N') = 'O') OR
6237 (NVL(l_enc_upg_option, 'N') = 'O')
6238 )
6239 THEN
6240 NULL;
6241 --
6242 --
6243
6244 l_ccid := AcctDerRule_4(
6245 p_application_id => p_application_id
6246 , p_ae_header_id => l_ae_header_id
6247 , p_source_4 => p_source_4
6248 , x_transaction_coa_id => l_adr_transaction_coa_id
6249 , x_accounting_coa_id => l_adr_accounting_coa_id
6250 , x_value_type_code => l_adr_value_type_code
6251 , p_side => 'NA'
6252 );
6253
6254 xla_ae_lines_pkg.set_ccid(
6255 p_code_combination_id => l_ccid
6256 , p_value_type_code => l_adr_value_type_code
6257 , p_transaction_coa_id => l_adr_transaction_coa_id
6258 , p_accounting_coa_id => l_adr_accounting_coa_id
6259 , p_adr_code => 'CST_DEFAULT'
6260 , p_adr_type_code => 'S'
6261 , p_component_type => l_component_type
6262 , p_component_code => l_component_code
6263 , p_component_type_code => l_component_type_code
6264 , p_component_appl_id => l_component_appl_id
6265 , p_amb_context_code => l_amb_context_code
6266 , p_side => 'NA'
6267 );
6268
6269
6270 --
6271 --
6272 END IF;
6273
6274 --
6275 -- Update the line information that should be overwritten
6276 --
6277 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
6278 p_header_num => 1);
6279 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
6280
6281 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
6282
6283 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
6284 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
6285 END IF;
6286
6287 --
6288 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
6289 --
6290 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
6291 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
6292 ELSE
6293 ---------------------------------------------------------------------------------------------------
6294 -- 4262811a Switch Sign
6295 ---------------------------------------------------------------------------------------------------
6296 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
6297 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
6298 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
6299 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
6300 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
6301 -- 5132302
6302 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
6303 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
6304
6305 END IF;
6306
6307 -- 4955764
6308 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
6309 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
6310
6311
6312 XLA_AE_LINES_PKG.ValidateCurrentLine;
6313 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
6314
6315 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
6316 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
6317 ,p_balance_type_code => l_balance_type_code);
6318
6319 END IF;
6320
6321 -----------------------------------------------------------------------------------------
6322 -- 4262811 Multiperiod Accounting
6323 -----------------------------------------------------------------------------------------
6324 -- No MPA option is assigned.
6325
6326
6327 END IF;
6328 END IF;
6329 --
6330
6331 --
6332 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6333 trace
6334 (p_msg => 'END of AcctLineType_14'
6335 ,p_level => C_LEVEL_PROCEDURE
6336 ,p_module => l_log_module);
6337 END IF;
6338 --
6339 EXCEPTION
6340 WHEN xla_exceptions_pkg.application_exception THEN
6341 RAISE;
6342 WHEN OTHERS THEN
6343 xla_exceptions_pkg.raise_message
6344 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_14');
6345 END AcctLineType_14;
6346 --
6347
6348 ---------------------------------------
6349 --
6350 -- PRIVATE FUNCTION
6351 -- AcctLineType_15
6352 --
6353 ---------------------------------------
6354 PROCEDURE AcctLineType_15 (
6355 p_application_id IN NUMBER
6356 ,p_event_id IN NUMBER
6357 ,p_calculate_acctd_flag IN VARCHAR2
6358 ,p_calculate_g_l_flag IN VARCHAR2
6359 ,p_actual_flag IN OUT VARCHAR2
6360 ,p_balance_type_code OUT VARCHAR2
6361 ,p_gain_or_loss_ref OUT VARCHAR2
6362
6363 --Cost Management Default Account
6364 , p_source_4 IN NUMBER
6365 --Applied to Application ID
6366 , p_source_6 IN NUMBER
6367 --Applied to Distribution Link Type
6368 , p_source_7 IN VARCHAR2
6369 --Applied to Entity Code
6370 , p_source_8 IN VARCHAR2
6371 --Applied To Purchase Document Identifier
6372 , p_source_10 IN NUMBER
6373 --DISTRIBUTION_IDENTIFIER
6374 , p_source_11 IN NUMBER
6375 --Distribution Type
6376 , p_source_12 IN VARCHAR2
6377 , p_source_12_meaning IN VARCHAR2
6378 --PO Budget Account
6379 , p_source_13 IN NUMBER
6380 --Encumbrance Reversal Amount Entered
6381 , p_source_14 IN NUMBER
6382 --Entered Currency Code
6383 , p_source_15 IN VARCHAR2
6384 --Transaction Encumbrance Reversal Amount
6385 , p_source_16 IN NUMBER
6386 --Entered Amount
6387 , p_source_18 IN NUMBER
6388 --Currency Conversion Date
6389 , p_source_19 IN DATE
6390 --Currency Conversion Rate
6391 , p_source_20 IN NUMBER
6392 --Currency Conversion Type
6393 , p_source_21 IN VARCHAR2
6394 --Accounted Amount
6395 , p_source_22 IN NUMBER
6396 --Purchasing Encumbrance Type Identifier
6397 , p_source_23 IN NUMBER
6398 --Accounting Line Type
6399 , p_source_24 IN NUMBER
6400 --Costing Encumbrance Upgrade Option
6401 , p_source_27 IN VARCHAR2
6402 --TXN_PO_DISTRIBUTION_ID
6403 , p_source_28 IN NUMBER
6404 )
6405 IS
6406
6407 l_component_type VARCHAR2(80);
6408 l_component_code VARCHAR2(30);
6409 l_component_type_code VARCHAR2(1);
6410 l_component_appl_id INTEGER;
6411 l_amb_context_code VARCHAR2(30);
6412 l_entity_code VARCHAR2(30);
6413 l_event_class_code VARCHAR2(30);
6414 l_ae_header_id NUMBER;
6415 l_event_type_code VARCHAR2(30);
6416 l_line_definition_code VARCHAR2(30);
6417 l_line_definition_owner_code VARCHAR2(1);
6418 --
6419 -- adr variables
6420 l_segment VARCHAR2(30);
6421 l_ccid NUMBER;
6422 l_adr_transaction_coa_id NUMBER;
6423 l_adr_accounting_coa_id NUMBER;
6424 l_adr_flexfield_segment_code VARCHAR2(30);
6425 l_adr_flex_value_set_id NUMBER;
6426 l_adr_value_type_code VARCHAR2(30);
6427 l_adr_value_combination_id NUMBER;
6428 l_adr_value_segment_code VARCHAR2(30);
6429
6430 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
6431 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
6432 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
6433 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
6434
6435 -- 4262811 Variables ------------------------------------------------------------------------------------------
6436 l_entered_amt_idx NUMBER;
6437 l_accted_amt_idx NUMBER;
6438 l_acc_rev_flag VARCHAR2(1);
6439 l_accrual_line_num NUMBER;
6440 l_tmp_amt NUMBER;
6441 l_acc_rev_natural_side_code VARCHAR2(1);
6442
6443 l_num_entries NUMBER;
6444 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
6445 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
6446 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
6447 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
6448 l_recog_line_1 NUMBER;
6449 l_recog_line_2 NUMBER;
6450
6451 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
6452 l_bflow_applied_to_amt NUMBER; -- 5132302
6453 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
6454
6455 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
6456
6457 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
6458 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
6459
6460 ---------------------------------------------------------------------------------------------------------------
6461
6462
6463 --
6464 -- bulk performance
6465 --
6466 l_balance_type_code VARCHAR2(1);
6467 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
6468 l_log_module VARCHAR2(240);
6469
6470 --
6471 -- Upgrade strategy
6472 --
6473 l_actual_upg_option VARCHAR2(1);
6474 l_enc_upg_option VARCHAR2(1);
6475
6476 --
6477 BEGIN
6478 --
6479 IF g_log_enabled THEN
6480 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_15';
6481 END IF;
6482 --
6483 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6484
6485 trace
6486 (p_msg => 'BEGIN of AcctLineType_15'
6487 ,p_level => C_LEVEL_PROCEDURE
6488 ,p_module => l_log_module);
6489
6490 END IF;
6491 --
6492 l_component_type := 'AMB_JLT';
6493 l_component_code := 'CLEARING';
6494 l_component_type_code := 'S';
6495 l_component_appl_id := 707;
6496 l_amb_context_code := 'DEFAULT';
6497 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
6498 l_event_class_code := 'PURCHASE_ORDER';
6499 l_event_type_code := 'PURCHASE_ORDER_ALL';
6500 l_line_definition_owner_code := 'S';
6501 l_line_definition_code := 'PURCHASE_ORDER';
6502 --
6503 l_balance_type_code := 'A';
6504 l_segment := NULL;
6505 l_ccid := NULL;
6506 l_adr_transaction_coa_id := NULL;
6507 l_adr_accounting_coa_id := NULL;
6508 l_adr_flexfield_segment_code := NULL;
6509 l_adr_flex_value_set_id := NULL;
6510 l_adr_value_type_code := NULL;
6511 l_adr_value_combination_id := NULL;
6512 l_adr_value_segment_code := NULL;
6513
6514 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
6515 l_bflow_class_code := ''; -- 4219869 Business Flow
6516 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
6517 l_budgetary_control_flag := 'N';
6518
6519 l_bflow_applied_to_amt_idx := NULL; -- 5132302
6520 l_bflow_applied_to_amt := NULL; -- 5132302
6521 l_entered_amt_idx := NULL; -- 4262811
6522 l_accted_amt_idx := NULL; -- 4262811
6523 l_acc_rev_flag := NULL; -- 4262811
6524 l_accrual_line_num := NULL; -- 4262811
6525 l_tmp_amt := NULL; -- 4262811
6526 --
6527
6528 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
6529 l_balance_type_code <> 'B' THEN
6530 IF NVL(p_source_24,9E125) = 31
6531 THEN
6532
6533 --
6534 XLA_AE_LINES_PKG.SetNewLine;
6535
6536 p_balance_type_code := l_balance_type_code;
6537 -- set the flag so later we will know whether the gain loss line needs to be created
6538
6539 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
6540 p_actual_flag :='A';
6541 END IF;
6542
6543 --
6544 -- bulk performance
6545 --
6546 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
6547 p_header_num => 0); -- 4262811
6548 --
6549 -- set accounting line options
6550 --
6551 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
6552 p_natural_side_code => 'D'
6553 , p_gain_or_loss_flag => 'N'
6554 , p_gl_transfer_mode_code => 'S'
6555 , p_acct_entry_type_code => 'A'
6556 , p_switch_side_flag => 'Y'
6557 , p_merge_duplicate_code => 'N'
6558 );
6559 --
6560 l_acc_rev_natural_side_code := 'C'; -- 4262811
6561 --
6562 --
6563 -- set accounting line type info
6564 --
6565 xla_ae_lines_pkg.SetAcctLineType
6566 (p_component_type => l_component_type
6567 ,p_event_type_code => l_event_type_code
6568 ,p_line_definition_owner_code => l_line_definition_owner_code
6569 ,p_line_definition_code => l_line_definition_code
6570 ,p_accounting_line_code => l_component_code
6571 ,p_accounting_line_type_code => l_component_type_code
6572 ,p_accounting_line_appl_id => l_component_appl_id
6573 ,p_amb_context_code => l_amb_context_code
6574 ,p_entity_code => l_entity_code
6575 ,p_event_class_code => l_event_class_code);
6576 --
6577 -- set accounting class
6578 --
6579 xla_ae_lines_pkg.SetAcctClass(
6580 p_accounting_class_code => 'CLEARING'
6581 , p_ae_header_id => l_ae_header_id
6582 );
6583
6584 --
6585 -- set rounding class
6586 --
6587 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
6588 'CLEARING';
6589
6590 --
6591 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
6592 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
6593 --
6594 -- bulk performance
6595 --
6596 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
6597
6598 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
6599 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
6600
6601 -- 4955764
6602 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
6603 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
6604
6605 -- 4458381 Public Sector Enh
6606
6607 --
6608 -- set accounting attributes for the line type
6609 --
6610 l_entered_amt_idx := 17;
6611 l_accted_amt_idx := 22;
6612 l_bflow_applied_to_amt_idx := NULL; -- 5132302
6613 l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
6614 l_rec_acct_attrs.array_num_value(1) := p_source_6;
6615 l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
6616 l_rec_acct_attrs.array_char_value(2) := p_source_7;
6617 l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
6618 l_rec_acct_attrs.array_char_value(3) := p_source_8;
6619 l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
6620 l_rec_acct_attrs.array_num_value(4) := to_char(p_source_28);
6621 l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
6622 l_rec_acct_attrs.array_num_value(5) := to_char(p_source_10);
6623 l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
6624 l_rec_acct_attrs.array_num_value(6) := to_char(p_source_11);
6625 l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
6626 l_rec_acct_attrs.array_char_value(7) := p_source_12;
6627 l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
6628 l_rec_acct_attrs.array_num_value(8) := TO_NUMBER(p_source_13);
6629 l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
6630 l_rec_acct_attrs.array_num_value(9) := p_source_14;
6631 l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
6632 l_rec_acct_attrs.array_char_value(10) := p_source_15;
6633 l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
6634 l_rec_acct_attrs.array_num_value(11) := p_source_16;
6635 l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
6636 l_rec_acct_attrs.array_num_value(12) := TO_NUMBER(p_source_13);
6637 l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
6638 l_rec_acct_attrs.array_num_value(13) := p_source_14;
6639 l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
6640 l_rec_acct_attrs.array_char_value(14) := p_source_15;
6641 l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
6642 l_rec_acct_attrs.array_num_value(15) := p_source_16;
6643 l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
6644 l_rec_acct_attrs.array_char_value(16) := p_source_27;
6645 l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
6646 l_rec_acct_attrs.array_num_value(17) := p_source_18;
6647 l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
6648 l_rec_acct_attrs.array_char_value(18) := p_source_15;
6649 l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
6650 l_rec_acct_attrs.array_date_value(19) := p_source_19;
6651 l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
6652 l_rec_acct_attrs.array_num_value(20) := p_source_20;
6653 l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
6654 l_rec_acct_attrs.array_char_value(21) := p_source_21;
6655 l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
6656 l_rec_acct_attrs.array_num_value(22) := p_source_22;
6657 l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
6658 l_rec_acct_attrs.array_num_value(23) := p_source_23;
6659 l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
6660 l_rec_acct_attrs.array_num_value(24) := p_source_23;
6661
6662 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
6663 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
6664
6665 ---------------------------------------------------------------------------------------------------------------
6666 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
6667 ---------------------------------------------------------------------------------------------------------------
6668 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
6669
6670 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
6671 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
6672
6673 IF xla_accounting_cache_pkg.GetValueChar
6674 (p_source_code => 'LEDGER_CATEGORY_CODE'
6675 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
6676 AND l_bflow_method_code = 'PRIOR_ENTRY'
6677 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
6678 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
6679 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
6680 )
6681 THEN
6682 xla_ae_lines_pkg.BflowUpgEntry
6683 (p_business_method_code => l_bflow_method_code
6684 ,p_business_class_code => l_bflow_class_code
6685 ,p_balance_type => l_balance_type_code);
6686 ELSE
6687 NULL;
6688 -- No business flow processing for business flow method of NONE.
6689 END IF;
6690
6691 --
6692 -- call analytical criteria
6693 --
6694
6695 --
6696 -- call description
6697 --
6698 -- No description or it is inherited.
6699 --
6700 -- call ADRs
6701 -- Bug 4922099
6702 --
6703 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
6704 (NVL(l_actual_upg_option, 'N') = 'O') OR
6705 (NVL(l_enc_upg_option, 'N') = 'O')
6706 )
6707 THEN
6708 NULL;
6709 --
6710 --
6711
6712 l_ccid := AcctDerRule_4(
6713 p_application_id => p_application_id
6714 , p_ae_header_id => l_ae_header_id
6715 , p_source_4 => p_source_4
6716 , x_transaction_coa_id => l_adr_transaction_coa_id
6717 , x_accounting_coa_id => l_adr_accounting_coa_id
6718 , x_value_type_code => l_adr_value_type_code
6719 , p_side => 'NA'
6720 );
6721
6722 xla_ae_lines_pkg.set_ccid(
6723 p_code_combination_id => l_ccid
6724 , p_value_type_code => l_adr_value_type_code
6725 , p_transaction_coa_id => l_adr_transaction_coa_id
6726 , p_accounting_coa_id => l_adr_accounting_coa_id
6727 , p_adr_code => 'CST_DEFAULT'
6728 , p_adr_type_code => 'S'
6729 , p_component_type => l_component_type
6730 , p_component_code => l_component_code
6731 , p_component_type_code => l_component_type_code
6732 , p_component_appl_id => l_component_appl_id
6733 , p_amb_context_code => l_amb_context_code
6734 , p_side => 'NA'
6735 );
6736
6737
6738 --
6739 --
6740 END IF;
6741 --
6742 -- Bug 4922099
6743 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
6744 (NVL(l_enc_upg_option, 'N') = 'O')
6745 ) AND
6746 (l_bflow_method_code = 'PRIOR_ENTRY')
6747 )
6748 THEN
6749 IF
6750 --
6751 1 = 2
6752 --
6753 THEN
6754 xla_accounting_err_pkg.build_message
6755 (p_appli_s_name => 'XLA'
6756 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
6757 ,p_token_1 => 'LINE_NUMBER'
6758 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
6759 ,p_token_2 => 'LINE_TYPE_NAME'
6760 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
6761 l_component_type
6762 ,l_component_code
6763 ,l_component_type_code
6764 ,l_component_appl_id
6765 ,l_amb_context_code
6766 ,l_entity_code
6767 ,l_event_class_code
6768 )
6769 ,p_token_3 => 'OWNER'
6770 ,p_value_3 => xla_lookups_pkg.get_meaning(
6771 p_lookup_type => 'XLA_OWNER_TYPE'
6772 ,p_lookup_code => l_component_type_code
6773 )
6774 ,p_token_4 => 'PRODUCT_NAME'
6775 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
6776 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
6777 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
6778 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
6779 ,p_ae_header_id => NULL
6780 );
6781
6782 IF (C_LEVEL_ERROR>= g_log_level) THEN
6783 trace
6784 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
6785 ,p_level => C_LEVEL_ERROR
6786 ,p_module => l_log_module);
6787 END IF;
6788 END IF;
6789 END IF;
6790 --
6791 --
6792 ------------------------------------------------------------------------------------------------
6793 -- 4219869 Business Flow
6794 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
6795 -- Prior Entry. Currently, the following code is always generated.
6796 ------------------------------------------------------------------------------------------------
6797 XLA_AE_LINES_PKG.ValidateCurrentLine;
6798
6799 ------------------------------------------------------------------------------------
6800 -- 4219869 Business Flow
6801 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
6802 ------------------------------------------------------------------------------------
6803 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
6804
6805 ----------------------------------------------------------------------------------
6806 -- 4219869 Business Flow
6807 -- Update journal entry status -- Need to generate this within IF <condition>
6808 ----------------------------------------------------------------------------------
6809 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
6810 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
6811 ,p_balance_type_code => l_balance_type_code
6812 );
6813
6814 -------------------------------------------------------------------------------------------
6815 -- 4262811 - Generate the Accrual Reversal lines
6816 -------------------------------------------------------------------------------------------
6817 BEGIN
6818 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
6819 (g_array_event(p_event_id).array_value_num('header_index'));
6820 IF l_acc_rev_flag IS NULL THEN
6821 l_acc_rev_flag := 'N';
6822 END IF;
6823 EXCEPTION
6824 WHEN OTHERS THEN
6825 l_acc_rev_flag := 'N';
6826 END;
6827 --
6828 IF (l_acc_rev_flag = 'Y') THEN
6829
6830 -- 4645092 ------------------------------------------------------------------------------
6831 -- To allow MPA report to determine if it should generate report process
6832 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
6833 ------------------------------------------------------------------------------------------
6834
6835 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
6836 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
6837 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
6838 -- call ADRs
6839 -- Bug 4922099
6840 --
6841 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
6842 (NVL(l_actual_upg_option, 'N') = 'O') OR
6843 (NVL(l_enc_upg_option, 'N') = 'O')
6844 )
6845 THEN
6846 NULL;
6847 --
6848 --
6849
6850 l_ccid := AcctDerRule_4(
6851 p_application_id => p_application_id
6852 , p_ae_header_id => l_ae_header_id
6853 , p_source_4 => p_source_4
6854 , x_transaction_coa_id => l_adr_transaction_coa_id
6855 , x_accounting_coa_id => l_adr_accounting_coa_id
6856 , x_value_type_code => l_adr_value_type_code
6857 , p_side => 'NA'
6858 );
6859
6860 xla_ae_lines_pkg.set_ccid(
6861 p_code_combination_id => l_ccid
6862 , p_value_type_code => l_adr_value_type_code
6863 , p_transaction_coa_id => l_adr_transaction_coa_id
6864 , p_accounting_coa_id => l_adr_accounting_coa_id
6865 , p_adr_code => 'CST_DEFAULT'
6866 , p_adr_type_code => 'S'
6867 , p_component_type => l_component_type
6868 , p_component_code => l_component_code
6869 , p_component_type_code => l_component_type_code
6870 , p_component_appl_id => l_component_appl_id
6871 , p_amb_context_code => l_amb_context_code
6872 , p_side => 'NA'
6873 );
6874
6875
6876 --
6877 --
6878 END IF;
6879
6880 --
6881 -- Update the line information that should be overwritten
6882 --
6883 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
6884 p_header_num => 1);
6885 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
6886
6887 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
6888
6889 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
6890 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
6891 END IF;
6892
6893 --
6894 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
6895 --
6896 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
6897 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
6898 ELSE
6899 ---------------------------------------------------------------------------------------------------
6900 -- 4262811a Switch Sign
6901 ---------------------------------------------------------------------------------------------------
6902 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
6903 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
6904 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
6905 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
6906 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
6907 -- 5132302
6908 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
6909 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
6910
6911 END IF;
6912
6913 -- 4955764
6914 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
6915 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
6916
6917
6918 XLA_AE_LINES_PKG.ValidateCurrentLine;
6919 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
6920
6921 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
6922 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
6923 ,p_balance_type_code => l_balance_type_code);
6924
6925 END IF;
6926
6927 -----------------------------------------------------------------------------------------
6928 -- 4262811 Multiperiod Accounting
6929 -----------------------------------------------------------------------------------------
6930 -- No MPA option is assigned.
6931
6932
6933 END IF;
6934 END IF;
6935 --
6936
6937 --
6938 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6939 trace
6940 (p_msg => 'END of AcctLineType_15'
6941 ,p_level => C_LEVEL_PROCEDURE
6942 ,p_module => l_log_module);
6943 END IF;
6944 --
6945 EXCEPTION
6946 WHEN xla_exceptions_pkg.application_exception THEN
6947 RAISE;
6948 WHEN OTHERS THEN
6949 xla_exceptions_pkg.raise_message
6950 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_15');
6951 END AcctLineType_15;
6952 --
6953
6954 ---------------------------------------
6955 --
6956 -- PRIVATE FUNCTION
6957 -- AcctLineType_16
6958 --
6959 ---------------------------------------
6960 PROCEDURE AcctLineType_16 (
6961 p_application_id IN NUMBER
6962 ,p_event_id IN NUMBER
6963 ,p_calculate_acctd_flag IN VARCHAR2
6964 ,p_calculate_g_l_flag IN VARCHAR2
6965 ,p_actual_flag IN OUT VARCHAR2
6966 ,p_balance_type_code OUT VARCHAR2
6967 ,p_gain_or_loss_ref OUT VARCHAR2
6968
6969 --Cost Management Default Account
6970 , p_source_4 IN NUMBER
6971 --DISTRIBUTION_IDENTIFIER
6972 , p_source_11 IN NUMBER
6973 --Distribution Type
6974 , p_source_12 IN VARCHAR2
6975 , p_source_12_meaning IN VARCHAR2
6976 --Entered Currency Code
6977 , p_source_15 IN VARCHAR2
6978 --Entered Amount
6979 , p_source_18 IN NUMBER
6980 --Currency Conversion Date
6981 , p_source_19 IN DATE
6982 --Currency Conversion Rate
6983 , p_source_20 IN NUMBER
6984 --Currency Conversion Type
6985 , p_source_21 IN VARCHAR2
6986 --Accounted Amount
6987 , p_source_22 IN NUMBER
6988 --Accounting Line Type
6989 , p_source_24 IN NUMBER
6990 )
6991 IS
6992
6993 l_component_type VARCHAR2(80);
6994 l_component_code VARCHAR2(30);
6995 l_component_type_code VARCHAR2(1);
6996 l_component_appl_id INTEGER;
6997 l_amb_context_code VARCHAR2(30);
6998 l_entity_code VARCHAR2(30);
6999 l_event_class_code VARCHAR2(30);
7000 l_ae_header_id NUMBER;
7001 l_event_type_code VARCHAR2(30);
7002 l_line_definition_code VARCHAR2(30);
7003 l_line_definition_owner_code VARCHAR2(1);
7004 --
7005 -- adr variables
7006 l_segment VARCHAR2(30);
7007 l_ccid NUMBER;
7008 l_adr_transaction_coa_id NUMBER;
7009 l_adr_accounting_coa_id NUMBER;
7010 l_adr_flexfield_segment_code VARCHAR2(30);
7011 l_adr_flex_value_set_id NUMBER;
7012 l_adr_value_type_code VARCHAR2(30);
7013 l_adr_value_combination_id NUMBER;
7014 l_adr_value_segment_code VARCHAR2(30);
7015
7016 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
7017 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
7018 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
7019 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
7020
7021 -- 4262811 Variables ------------------------------------------------------------------------------------------
7022 l_entered_amt_idx NUMBER;
7023 l_accted_amt_idx NUMBER;
7024 l_acc_rev_flag VARCHAR2(1);
7025 l_accrual_line_num NUMBER;
7026 l_tmp_amt NUMBER;
7027 l_acc_rev_natural_side_code VARCHAR2(1);
7028
7029 l_num_entries NUMBER;
7030 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
7031 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
7032 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
7033 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
7034 l_recog_line_1 NUMBER;
7035 l_recog_line_2 NUMBER;
7036
7037 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
7038 l_bflow_applied_to_amt NUMBER; -- 5132302
7039 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
7040
7041 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
7042
7043 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
7044 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
7045
7046 ---------------------------------------------------------------------------------------------------------------
7047
7048
7049 --
7050 -- bulk performance
7051 --
7052 l_balance_type_code VARCHAR2(1);
7053 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
7054 l_log_module VARCHAR2(240);
7055
7056 --
7057 -- Upgrade strategy
7058 --
7059 l_actual_upg_option VARCHAR2(1);
7060 l_enc_upg_option VARCHAR2(1);
7061
7062 --
7063 BEGIN
7064 --
7065 IF g_log_enabled THEN
7066 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_16';
7067 END IF;
7068 --
7069 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7070
7071 trace
7072 (p_msg => 'BEGIN of AcctLineType_16'
7073 ,p_level => C_LEVEL_PROCEDURE
7074 ,p_module => l_log_module);
7075
7076 END IF;
7077 --
7078 l_component_type := 'AMB_JLT';
7079 l_component_code := 'COST_OF_GOODS_SOLD';
7080 l_component_type_code := 'S';
7081 l_component_appl_id := 707;
7082 l_amb_context_code := 'DEFAULT';
7083 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
7084 l_event_class_code := 'USER_DEFINE';
7085 l_event_type_code := 'UFOB_SHIP_SENDER_SHIP_TP';
7086 l_line_definition_owner_code := 'S';
7087 l_line_definition_code := 'USER_FOB_SHIP_SENDER_SHIP_TP';
7088 --
7089 l_balance_type_code := 'A';
7090 l_segment := NULL;
7091 l_ccid := NULL;
7092 l_adr_transaction_coa_id := NULL;
7093 l_adr_accounting_coa_id := NULL;
7094 l_adr_flexfield_segment_code := NULL;
7095 l_adr_flex_value_set_id := NULL;
7096 l_adr_value_type_code := NULL;
7097 l_adr_value_combination_id := NULL;
7098 l_adr_value_segment_code := NULL;
7099
7100 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
7101 l_bflow_class_code := ''; -- 4219869 Business Flow
7102 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
7103 l_budgetary_control_flag := 'N';
7104
7105 l_bflow_applied_to_amt_idx := NULL; -- 5132302
7106 l_bflow_applied_to_amt := NULL; -- 5132302
7107 l_entered_amt_idx := NULL; -- 4262811
7108 l_accted_amt_idx := NULL; -- 4262811
7109 l_acc_rev_flag := NULL; -- 4262811
7110 l_accrual_line_num := NULL; -- 4262811
7111 l_tmp_amt := NULL; -- 4262811
7112 --
7113
7114 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
7115 l_balance_type_code <> 'B' THEN
7116 IF NVL(p_source_24,9E125) = 2 AND
7117 p_source_22 > 0
7118 THEN
7119
7120 --
7121 XLA_AE_LINES_PKG.SetNewLine;
7122
7123 p_balance_type_code := l_balance_type_code;
7124 -- set the flag so later we will know whether the gain loss line needs to be created
7125
7126 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
7127 p_actual_flag :='A';
7128 END IF;
7129
7130 --
7131 -- bulk performance
7132 --
7133 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
7134 p_header_num => 0); -- 4262811
7135 --
7136 -- set accounting line options
7137 --
7138 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
7139 p_natural_side_code => 'D'
7140 , p_gain_or_loss_flag => 'N'
7141 , p_gl_transfer_mode_code => 'S'
7142 , p_acct_entry_type_code => 'A'
7143 , p_switch_side_flag => 'Y'
7144 , p_merge_duplicate_code => 'N'
7145 );
7146 --
7147 l_acc_rev_natural_side_code := 'C'; -- 4262811
7148 --
7149 --
7150 -- set accounting line type info
7151 --
7152 xla_ae_lines_pkg.SetAcctLineType
7153 (p_component_type => l_component_type
7154 ,p_event_type_code => l_event_type_code
7155 ,p_line_definition_owner_code => l_line_definition_owner_code
7156 ,p_line_definition_code => l_line_definition_code
7157 ,p_accounting_line_code => l_component_code
7158 ,p_accounting_line_type_code => l_component_type_code
7159 ,p_accounting_line_appl_id => l_component_appl_id
7160 ,p_amb_context_code => l_amb_context_code
7161 ,p_entity_code => l_entity_code
7162 ,p_event_class_code => l_event_class_code);
7163 --
7164 -- set accounting class
7165 --
7166 xla_ae_lines_pkg.SetAcctClass(
7167 p_accounting_class_code => 'COST_OF_GOODS_SOLD'
7168 , p_ae_header_id => l_ae_header_id
7169 );
7170
7171 --
7172 -- set rounding class
7173 --
7174 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
7175 'COST_OF_GOODS_SOLD';
7176
7177 --
7178 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
7179 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
7180 --
7181 -- bulk performance
7182 --
7183 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
7184
7185 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
7186 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
7187
7188 -- 4955764
7189 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
7190 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
7191
7192 -- 4458381 Public Sector Enh
7193
7194 --
7195 -- set accounting attributes for the line type
7196 --
7197 l_entered_amt_idx := 3;
7198 l_accted_amt_idx := 8;
7199 l_bflow_applied_to_amt_idx := NULL; -- 5132302
7200 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
7201 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
7202 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
7203 l_rec_acct_attrs.array_char_value(2) := p_source_12;
7204 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
7205 l_rec_acct_attrs.array_num_value(3) := p_source_18;
7206 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
7207 l_rec_acct_attrs.array_char_value(4) := p_source_15;
7208 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
7209 l_rec_acct_attrs.array_date_value(5) := p_source_19;
7210 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
7211 l_rec_acct_attrs.array_num_value(6) := p_source_20;
7212 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
7213 l_rec_acct_attrs.array_char_value(7) := p_source_21;
7214 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
7215 l_rec_acct_attrs.array_num_value(8) := p_source_22;
7216
7217 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
7218 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
7219
7220 ---------------------------------------------------------------------------------------------------------------
7221 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
7222 ---------------------------------------------------------------------------------------------------------------
7223 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
7224
7225 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
7226 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
7227
7228 IF xla_accounting_cache_pkg.GetValueChar
7229 (p_source_code => 'LEDGER_CATEGORY_CODE'
7230 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
7231 AND l_bflow_method_code = 'PRIOR_ENTRY'
7232 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
7233 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
7234 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
7235 )
7236 THEN
7237 xla_ae_lines_pkg.BflowUpgEntry
7238 (p_business_method_code => l_bflow_method_code
7239 ,p_business_class_code => l_bflow_class_code
7240 ,p_balance_type => l_balance_type_code);
7241 ELSE
7242 NULL;
7243 -- No business flow processing for business flow method of NONE.
7244 END IF;
7245
7246 --
7247 -- call analytical criteria
7248 --
7249
7250 --
7251 -- call description
7252 --
7253 -- No description or it is inherited.
7254 --
7255 -- call ADRs
7256 -- Bug 4922099
7257 --
7258 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
7259 (NVL(l_actual_upg_option, 'N') = 'O') OR
7260 (NVL(l_enc_upg_option, 'N') = 'O')
7261 )
7262 THEN
7263 NULL;
7264 --
7265 --
7266
7267 l_ccid := AcctDerRule_4(
7268 p_application_id => p_application_id
7269 , p_ae_header_id => l_ae_header_id
7270 , p_source_4 => p_source_4
7271 , x_transaction_coa_id => l_adr_transaction_coa_id
7272 , x_accounting_coa_id => l_adr_accounting_coa_id
7273 , x_value_type_code => l_adr_value_type_code
7274 , p_side => 'NA'
7275 );
7276
7277 xla_ae_lines_pkg.set_ccid(
7278 p_code_combination_id => l_ccid
7279 , p_value_type_code => l_adr_value_type_code
7280 , p_transaction_coa_id => l_adr_transaction_coa_id
7281 , p_accounting_coa_id => l_adr_accounting_coa_id
7282 , p_adr_code => 'CST_DEFAULT'
7283 , p_adr_type_code => 'S'
7284 , p_component_type => l_component_type
7285 , p_component_code => l_component_code
7286 , p_component_type_code => l_component_type_code
7287 , p_component_appl_id => l_component_appl_id
7288 , p_amb_context_code => l_amb_context_code
7289 , p_side => 'NA'
7290 );
7291
7292
7293 --
7294 --
7295 END IF;
7296 --
7297 -- Bug 4922099
7298 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
7299 (NVL(l_enc_upg_option, 'N') = 'O')
7300 ) AND
7301 (l_bflow_method_code = 'PRIOR_ENTRY')
7302 )
7303 THEN
7304 IF
7305 --
7306 1 = 2
7307 --
7308 THEN
7309 xla_accounting_err_pkg.build_message
7310 (p_appli_s_name => 'XLA'
7311 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
7312 ,p_token_1 => 'LINE_NUMBER'
7313 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
7314 ,p_token_2 => 'LINE_TYPE_NAME'
7315 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
7316 l_component_type
7317 ,l_component_code
7318 ,l_component_type_code
7319 ,l_component_appl_id
7320 ,l_amb_context_code
7321 ,l_entity_code
7322 ,l_event_class_code
7323 )
7324 ,p_token_3 => 'OWNER'
7325 ,p_value_3 => xla_lookups_pkg.get_meaning(
7326 p_lookup_type => 'XLA_OWNER_TYPE'
7327 ,p_lookup_code => l_component_type_code
7328 )
7329 ,p_token_4 => 'PRODUCT_NAME'
7330 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
7331 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
7332 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
7333 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
7334 ,p_ae_header_id => NULL
7335 );
7336
7337 IF (C_LEVEL_ERROR>= g_log_level) THEN
7338 trace
7339 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
7340 ,p_level => C_LEVEL_ERROR
7341 ,p_module => l_log_module);
7342 END IF;
7343 END IF;
7344 END IF;
7345 --
7346 --
7347 ------------------------------------------------------------------------------------------------
7348 -- 4219869 Business Flow
7349 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
7350 -- Prior Entry. Currently, the following code is always generated.
7351 ------------------------------------------------------------------------------------------------
7352 XLA_AE_LINES_PKG.ValidateCurrentLine;
7353
7354 ------------------------------------------------------------------------------------
7355 -- 4219869 Business Flow
7356 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
7357 ------------------------------------------------------------------------------------
7358 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
7359
7360 ----------------------------------------------------------------------------------
7361 -- 4219869 Business Flow
7362 -- Update journal entry status -- Need to generate this within IF <condition>
7363 ----------------------------------------------------------------------------------
7364 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
7365 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
7366 ,p_balance_type_code => l_balance_type_code
7367 );
7368
7369 -------------------------------------------------------------------------------------------
7370 -- 4262811 - Generate the Accrual Reversal lines
7371 -------------------------------------------------------------------------------------------
7372 BEGIN
7373 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
7374 (g_array_event(p_event_id).array_value_num('header_index'));
7375 IF l_acc_rev_flag IS NULL THEN
7376 l_acc_rev_flag := 'N';
7377 END IF;
7378 EXCEPTION
7379 WHEN OTHERS THEN
7380 l_acc_rev_flag := 'N';
7381 END;
7382 --
7383 IF (l_acc_rev_flag = 'Y') THEN
7384
7385 -- 4645092 ------------------------------------------------------------------------------
7386 -- To allow MPA report to determine if it should generate report process
7387 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
7388 ------------------------------------------------------------------------------------------
7389
7390 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
7391 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
7392 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
7393 -- call ADRs
7394 -- Bug 4922099
7395 --
7396 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
7397 (NVL(l_actual_upg_option, 'N') = 'O') OR
7398 (NVL(l_enc_upg_option, 'N') = 'O')
7399 )
7400 THEN
7401 NULL;
7402 --
7403 --
7404
7405 l_ccid := AcctDerRule_4(
7406 p_application_id => p_application_id
7407 , p_ae_header_id => l_ae_header_id
7408 , p_source_4 => p_source_4
7409 , x_transaction_coa_id => l_adr_transaction_coa_id
7410 , x_accounting_coa_id => l_adr_accounting_coa_id
7411 , x_value_type_code => l_adr_value_type_code
7412 , p_side => 'NA'
7413 );
7414
7415 xla_ae_lines_pkg.set_ccid(
7416 p_code_combination_id => l_ccid
7417 , p_value_type_code => l_adr_value_type_code
7418 , p_transaction_coa_id => l_adr_transaction_coa_id
7419 , p_accounting_coa_id => l_adr_accounting_coa_id
7420 , p_adr_code => 'CST_DEFAULT'
7421 , p_adr_type_code => 'S'
7422 , p_component_type => l_component_type
7423 , p_component_code => l_component_code
7424 , p_component_type_code => l_component_type_code
7425 , p_component_appl_id => l_component_appl_id
7426 , p_amb_context_code => l_amb_context_code
7427 , p_side => 'NA'
7428 );
7429
7430
7431 --
7432 --
7433 END IF;
7434
7435 --
7436 -- Update the line information that should be overwritten
7437 --
7438 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
7439 p_header_num => 1);
7440 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
7441
7442 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
7443
7444 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
7445 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
7446 END IF;
7447
7448 --
7449 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
7450 --
7451 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
7452 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
7453 ELSE
7454 ---------------------------------------------------------------------------------------------------
7455 -- 4262811a Switch Sign
7456 ---------------------------------------------------------------------------------------------------
7457 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
7458 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
7459 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7460 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
7461 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7462 -- 5132302
7463 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
7464 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7465
7466 END IF;
7467
7468 -- 4955764
7469 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
7470 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
7471
7472
7473 XLA_AE_LINES_PKG.ValidateCurrentLine;
7474 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
7475
7476 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
7477 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
7478 ,p_balance_type_code => l_balance_type_code);
7479
7480 END IF;
7481
7482 -----------------------------------------------------------------------------------------
7483 -- 4262811 Multiperiod Accounting
7484 -----------------------------------------------------------------------------------------
7485 -- No MPA option is assigned.
7486
7487
7488 END IF;
7489 END IF;
7490 --
7491
7492 --
7493 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7494 trace
7495 (p_msg => 'END of AcctLineType_16'
7496 ,p_level => C_LEVEL_PROCEDURE
7497 ,p_module => l_log_module);
7498 END IF;
7499 --
7500 EXCEPTION
7501 WHEN xla_exceptions_pkg.application_exception THEN
7502 RAISE;
7503 WHEN OTHERS THEN
7504 xla_exceptions_pkg.raise_message
7505 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_16');
7506 END AcctLineType_16;
7507 --
7508
7509 ---------------------------------------
7510 --
7511 -- PRIVATE FUNCTION
7512 -- AcctLineType_17
7513 --
7514 ---------------------------------------
7515 PROCEDURE AcctLineType_17 (
7516 p_application_id IN NUMBER
7517 ,p_event_id IN NUMBER
7518 ,p_calculate_acctd_flag IN VARCHAR2
7519 ,p_calculate_g_l_flag IN VARCHAR2
7520 ,p_actual_flag IN OUT VARCHAR2
7521 ,p_balance_type_code OUT VARCHAR2
7522 ,p_gain_or_loss_ref OUT VARCHAR2
7523
7524 --Cost Management Default Account
7525 , p_source_4 IN NUMBER
7526 --DISTRIBUTION_IDENTIFIER
7527 , p_source_11 IN NUMBER
7528 --Distribution Type
7529 , p_source_12 IN VARCHAR2
7530 , p_source_12_meaning IN VARCHAR2
7531 --Entered Currency Code
7532 , p_source_15 IN VARCHAR2
7533 --Entered Amount
7534 , p_source_18 IN NUMBER
7535 --Currency Conversion Date
7536 , p_source_19 IN DATE
7537 --Currency Conversion Rate
7538 , p_source_20 IN NUMBER
7539 --Currency Conversion Type
7540 , p_source_21 IN VARCHAR2
7541 --Accounted Amount
7542 , p_source_22 IN NUMBER
7543 --Accounting Line Type
7544 , p_source_24 IN NUMBER
7545 )
7546 IS
7547
7548 l_component_type VARCHAR2(80);
7549 l_component_code VARCHAR2(30);
7550 l_component_type_code VARCHAR2(1);
7551 l_component_appl_id INTEGER;
7552 l_amb_context_code VARCHAR2(30);
7553 l_entity_code VARCHAR2(30);
7554 l_event_class_code VARCHAR2(30);
7555 l_ae_header_id NUMBER;
7556 l_event_type_code VARCHAR2(30);
7557 l_line_definition_code VARCHAR2(30);
7558 l_line_definition_owner_code VARCHAR2(1);
7559 --
7560 -- adr variables
7561 l_segment VARCHAR2(30);
7562 l_ccid NUMBER;
7563 l_adr_transaction_coa_id NUMBER;
7564 l_adr_accounting_coa_id NUMBER;
7565 l_adr_flexfield_segment_code VARCHAR2(30);
7566 l_adr_flex_value_set_id NUMBER;
7567 l_adr_value_type_code VARCHAR2(30);
7568 l_adr_value_combination_id NUMBER;
7569 l_adr_value_segment_code VARCHAR2(30);
7570
7571 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
7572 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
7573 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
7574 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
7575
7576 -- 4262811 Variables ------------------------------------------------------------------------------------------
7577 l_entered_amt_idx NUMBER;
7578 l_accted_amt_idx NUMBER;
7579 l_acc_rev_flag VARCHAR2(1);
7580 l_accrual_line_num NUMBER;
7581 l_tmp_amt NUMBER;
7582 l_acc_rev_natural_side_code VARCHAR2(1);
7583
7584 l_num_entries NUMBER;
7585 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
7586 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
7587 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
7588 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
7589 l_recog_line_1 NUMBER;
7590 l_recog_line_2 NUMBER;
7591
7592 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
7593 l_bflow_applied_to_amt NUMBER; -- 5132302
7594 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
7595
7596 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
7597
7598 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
7599 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
7600
7601 ---------------------------------------------------------------------------------------------------------------
7602
7603
7604 --
7605 -- bulk performance
7606 --
7607 l_balance_type_code VARCHAR2(1);
7608 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
7609 l_log_module VARCHAR2(240);
7610
7611 --
7612 -- Upgrade strategy
7613 --
7614 l_actual_upg_option VARCHAR2(1);
7615 l_enc_upg_option VARCHAR2(1);
7616
7617 --
7618 BEGIN
7619 --
7620 IF g_log_enabled THEN
7621 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_17';
7622 END IF;
7623 --
7624 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7625
7626 trace
7627 (p_msg => 'BEGIN of AcctLineType_17'
7628 ,p_level => C_LEVEL_PROCEDURE
7629 ,p_module => l_log_module);
7630
7631 END IF;
7632 --
7633 l_component_type := 'AMB_JLT';
7634 l_component_code := 'COST_OF_GOODS_SOLD';
7635 l_component_type_code := 'S';
7636 l_component_appl_id := 707;
7637 l_amb_context_code := 'DEFAULT';
7638 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
7639 l_event_class_code := 'FOB_RCPT_SENDER_RCPT';
7640 l_event_type_code := 'FOB_RCPT_SENDER_RCPT_ALL';
7641 l_line_definition_owner_code := 'S';
7642 l_line_definition_code := 'FOB_RCPT_SENDER_RCPT';
7643 --
7644 l_balance_type_code := 'A';
7645 l_segment := NULL;
7646 l_ccid := NULL;
7647 l_adr_transaction_coa_id := NULL;
7648 l_adr_accounting_coa_id := NULL;
7649 l_adr_flexfield_segment_code := NULL;
7650 l_adr_flex_value_set_id := NULL;
7651 l_adr_value_type_code := NULL;
7652 l_adr_value_combination_id := NULL;
7653 l_adr_value_segment_code := NULL;
7654
7655 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
7656 l_bflow_class_code := ''; -- 4219869 Business Flow
7657 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
7658 l_budgetary_control_flag := 'N';
7659
7660 l_bflow_applied_to_amt_idx := NULL; -- 5132302
7661 l_bflow_applied_to_amt := NULL; -- 5132302
7662 l_entered_amt_idx := NULL; -- 4262811
7663 l_accted_amt_idx := NULL; -- 4262811
7664 l_acc_rev_flag := NULL; -- 4262811
7665 l_accrual_line_num := NULL; -- 4262811
7666 l_tmp_amt := NULL; -- 4262811
7667 --
7668
7669 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
7670 l_balance_type_code <> 'B' THEN
7671 IF NVL(p_source_24,9E125) = 2 AND
7672 p_source_22 > 0
7673 THEN
7674
7675 --
7676 XLA_AE_LINES_PKG.SetNewLine;
7677
7678 p_balance_type_code := l_balance_type_code;
7679 -- set the flag so later we will know whether the gain loss line needs to be created
7680
7681 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
7682 p_actual_flag :='A';
7683 END IF;
7684
7685 --
7686 -- bulk performance
7687 --
7688 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
7689 p_header_num => 0); -- 4262811
7690 --
7691 -- set accounting line options
7692 --
7693 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
7694 p_natural_side_code => 'D'
7695 , p_gain_or_loss_flag => 'N'
7696 , p_gl_transfer_mode_code => 'S'
7697 , p_acct_entry_type_code => 'A'
7698 , p_switch_side_flag => 'Y'
7699 , p_merge_duplicate_code => 'N'
7700 );
7701 --
7702 l_acc_rev_natural_side_code := 'C'; -- 4262811
7703 --
7704 --
7705 -- set accounting line type info
7706 --
7707 xla_ae_lines_pkg.SetAcctLineType
7708 (p_component_type => l_component_type
7709 ,p_event_type_code => l_event_type_code
7710 ,p_line_definition_owner_code => l_line_definition_owner_code
7711 ,p_line_definition_code => l_line_definition_code
7712 ,p_accounting_line_code => l_component_code
7713 ,p_accounting_line_type_code => l_component_type_code
7714 ,p_accounting_line_appl_id => l_component_appl_id
7715 ,p_amb_context_code => l_amb_context_code
7716 ,p_entity_code => l_entity_code
7717 ,p_event_class_code => l_event_class_code);
7718 --
7719 -- set accounting class
7720 --
7721 xla_ae_lines_pkg.SetAcctClass(
7722 p_accounting_class_code => 'COST_OF_GOODS_SOLD'
7723 , p_ae_header_id => l_ae_header_id
7724 );
7725
7726 --
7727 -- set rounding class
7728 --
7729 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
7730 'COST_OF_GOODS_SOLD';
7731
7732 --
7733 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
7734 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
7735 --
7736 -- bulk performance
7737 --
7738 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
7739
7740 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
7741 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
7742
7743 -- 4955764
7744 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
7745 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
7746
7747 -- 4458381 Public Sector Enh
7748
7749 --
7750 -- set accounting attributes for the line type
7751 --
7752 l_entered_amt_idx := 3;
7753 l_accted_amt_idx := 8;
7754 l_bflow_applied_to_amt_idx := NULL; -- 5132302
7755 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
7756 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
7757 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
7758 l_rec_acct_attrs.array_char_value(2) := p_source_12;
7759 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
7760 l_rec_acct_attrs.array_num_value(3) := p_source_18;
7761 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
7762 l_rec_acct_attrs.array_char_value(4) := p_source_15;
7763 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
7764 l_rec_acct_attrs.array_date_value(5) := p_source_19;
7765 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
7766 l_rec_acct_attrs.array_num_value(6) := p_source_20;
7767 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
7768 l_rec_acct_attrs.array_char_value(7) := p_source_21;
7769 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
7770 l_rec_acct_attrs.array_num_value(8) := p_source_22;
7771
7772 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
7773 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
7774
7775 ---------------------------------------------------------------------------------------------------------------
7776 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
7777 ---------------------------------------------------------------------------------------------------------------
7778 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
7779
7780 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
7781 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
7782
7783 IF xla_accounting_cache_pkg.GetValueChar
7784 (p_source_code => 'LEDGER_CATEGORY_CODE'
7785 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
7786 AND l_bflow_method_code = 'PRIOR_ENTRY'
7787 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
7788 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
7789 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
7790 )
7791 THEN
7792 xla_ae_lines_pkg.BflowUpgEntry
7793 (p_business_method_code => l_bflow_method_code
7794 ,p_business_class_code => l_bflow_class_code
7795 ,p_balance_type => l_balance_type_code);
7796 ELSE
7797 NULL;
7798 -- No business flow processing for business flow method of NONE.
7799 END IF;
7800
7801 --
7802 -- call analytical criteria
7803 --
7804
7805 --
7806 -- call description
7807 --
7808 -- No description or it is inherited.
7809 --
7810 -- call ADRs
7811 -- Bug 4922099
7812 --
7813 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
7814 (NVL(l_actual_upg_option, 'N') = 'O') OR
7815 (NVL(l_enc_upg_option, 'N') = 'O')
7816 )
7817 THEN
7818 NULL;
7819 --
7820 --
7821
7822 l_ccid := AcctDerRule_4(
7823 p_application_id => p_application_id
7824 , p_ae_header_id => l_ae_header_id
7825 , p_source_4 => p_source_4
7826 , x_transaction_coa_id => l_adr_transaction_coa_id
7827 , x_accounting_coa_id => l_adr_accounting_coa_id
7828 , x_value_type_code => l_adr_value_type_code
7829 , p_side => 'NA'
7830 );
7831
7832 xla_ae_lines_pkg.set_ccid(
7833 p_code_combination_id => l_ccid
7834 , p_value_type_code => l_adr_value_type_code
7835 , p_transaction_coa_id => l_adr_transaction_coa_id
7836 , p_accounting_coa_id => l_adr_accounting_coa_id
7837 , p_adr_code => 'CST_DEFAULT'
7838 , p_adr_type_code => 'S'
7839 , p_component_type => l_component_type
7840 , p_component_code => l_component_code
7841 , p_component_type_code => l_component_type_code
7842 , p_component_appl_id => l_component_appl_id
7843 , p_amb_context_code => l_amb_context_code
7844 , p_side => 'NA'
7845 );
7846
7847
7848 --
7849 --
7850 END IF;
7851 --
7852 -- Bug 4922099
7853 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
7854 (NVL(l_enc_upg_option, 'N') = 'O')
7855 ) AND
7856 (l_bflow_method_code = 'PRIOR_ENTRY')
7857 )
7858 THEN
7859 IF
7860 --
7861 1 = 2
7862 --
7863 THEN
7864 xla_accounting_err_pkg.build_message
7865 (p_appli_s_name => 'XLA'
7866 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
7867 ,p_token_1 => 'LINE_NUMBER'
7868 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
7869 ,p_token_2 => 'LINE_TYPE_NAME'
7870 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
7871 l_component_type
7872 ,l_component_code
7873 ,l_component_type_code
7874 ,l_component_appl_id
7875 ,l_amb_context_code
7876 ,l_entity_code
7877 ,l_event_class_code
7878 )
7879 ,p_token_3 => 'OWNER'
7880 ,p_value_3 => xla_lookups_pkg.get_meaning(
7881 p_lookup_type => 'XLA_OWNER_TYPE'
7882 ,p_lookup_code => l_component_type_code
7883 )
7884 ,p_token_4 => 'PRODUCT_NAME'
7885 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
7886 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
7887 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
7888 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
7889 ,p_ae_header_id => NULL
7890 );
7891
7892 IF (C_LEVEL_ERROR>= g_log_level) THEN
7893 trace
7894 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
7895 ,p_level => C_LEVEL_ERROR
7896 ,p_module => l_log_module);
7897 END IF;
7898 END IF;
7899 END IF;
7900 --
7901 --
7902 ------------------------------------------------------------------------------------------------
7903 -- 4219869 Business Flow
7904 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
7905 -- Prior Entry. Currently, the following code is always generated.
7906 ------------------------------------------------------------------------------------------------
7907 XLA_AE_LINES_PKG.ValidateCurrentLine;
7908
7909 ------------------------------------------------------------------------------------
7910 -- 4219869 Business Flow
7911 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
7912 ------------------------------------------------------------------------------------
7913 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
7914
7915 ----------------------------------------------------------------------------------
7916 -- 4219869 Business Flow
7917 -- Update journal entry status -- Need to generate this within IF <condition>
7918 ----------------------------------------------------------------------------------
7919 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
7920 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
7921 ,p_balance_type_code => l_balance_type_code
7922 );
7923
7924 -------------------------------------------------------------------------------------------
7925 -- 4262811 - Generate the Accrual Reversal lines
7926 -------------------------------------------------------------------------------------------
7927 BEGIN
7928 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
7929 (g_array_event(p_event_id).array_value_num('header_index'));
7930 IF l_acc_rev_flag IS NULL THEN
7931 l_acc_rev_flag := 'N';
7932 END IF;
7933 EXCEPTION
7934 WHEN OTHERS THEN
7935 l_acc_rev_flag := 'N';
7936 END;
7937 --
7938 IF (l_acc_rev_flag = 'Y') THEN
7939
7940 -- 4645092 ------------------------------------------------------------------------------
7941 -- To allow MPA report to determine if it should generate report process
7942 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
7943 ------------------------------------------------------------------------------------------
7944
7945 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
7946 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
7947 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
7948 -- call ADRs
7949 -- Bug 4922099
7950 --
7951 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
7952 (NVL(l_actual_upg_option, 'N') = 'O') OR
7953 (NVL(l_enc_upg_option, 'N') = 'O')
7954 )
7955 THEN
7956 NULL;
7957 --
7958 --
7959
7960 l_ccid := AcctDerRule_4(
7961 p_application_id => p_application_id
7962 , p_ae_header_id => l_ae_header_id
7963 , p_source_4 => p_source_4
7964 , x_transaction_coa_id => l_adr_transaction_coa_id
7965 , x_accounting_coa_id => l_adr_accounting_coa_id
7966 , x_value_type_code => l_adr_value_type_code
7967 , p_side => 'NA'
7968 );
7969
7970 xla_ae_lines_pkg.set_ccid(
7971 p_code_combination_id => l_ccid
7972 , p_value_type_code => l_adr_value_type_code
7973 , p_transaction_coa_id => l_adr_transaction_coa_id
7974 , p_accounting_coa_id => l_adr_accounting_coa_id
7975 , p_adr_code => 'CST_DEFAULT'
7976 , p_adr_type_code => 'S'
7977 , p_component_type => l_component_type
7978 , p_component_code => l_component_code
7979 , p_component_type_code => l_component_type_code
7980 , p_component_appl_id => l_component_appl_id
7981 , p_amb_context_code => l_amb_context_code
7982 , p_side => 'NA'
7983 );
7984
7985
7986 --
7987 --
7988 END IF;
7989
7990 --
7991 -- Update the line information that should be overwritten
7992 --
7993 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
7994 p_header_num => 1);
7995 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
7996
7997 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
7998
7999 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
8000 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
8001 END IF;
8002
8003 --
8004 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
8005 --
8006 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
8007 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
8008 ELSE
8009 ---------------------------------------------------------------------------------------------------
8010 -- 4262811a Switch Sign
8011 ---------------------------------------------------------------------------------------------------
8012 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
8013 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
8014 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8015 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
8016 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8017 -- 5132302
8018 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
8019 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8020
8021 END IF;
8022
8023 -- 4955764
8024 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
8025 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
8026
8027
8028 XLA_AE_LINES_PKG.ValidateCurrentLine;
8029 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
8030
8031 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
8032 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
8033 ,p_balance_type_code => l_balance_type_code);
8034
8035 END IF;
8036
8037 -----------------------------------------------------------------------------------------
8038 -- 4262811 Multiperiod Accounting
8039 -----------------------------------------------------------------------------------------
8040 -- No MPA option is assigned.
8041
8042
8043 END IF;
8044 END IF;
8045 --
8046
8047 --
8048 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8049 trace
8050 (p_msg => 'END of AcctLineType_17'
8051 ,p_level => C_LEVEL_PROCEDURE
8052 ,p_module => l_log_module);
8053 END IF;
8054 --
8055 EXCEPTION
8056 WHEN xla_exceptions_pkg.application_exception THEN
8057 RAISE;
8058 WHEN OTHERS THEN
8059 xla_exceptions_pkg.raise_message
8060 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_17');
8061 END AcctLineType_17;
8062 --
8063
8064 ---------------------------------------
8065 --
8066 -- PRIVATE FUNCTION
8067 -- AcctLineType_18
8068 --
8069 ---------------------------------------
8070 PROCEDURE AcctLineType_18 (
8071 p_application_id IN NUMBER
8072 ,p_event_id IN NUMBER
8073 ,p_calculate_acctd_flag IN VARCHAR2
8074 ,p_calculate_g_l_flag IN VARCHAR2
8075 ,p_actual_flag IN OUT VARCHAR2
8076 ,p_balance_type_code OUT VARCHAR2
8077 ,p_gain_or_loss_ref OUT VARCHAR2
8078
8079 --Cost Management Default Account
8080 , p_source_4 IN NUMBER
8081 --DISTRIBUTION_IDENTIFIER
8082 , p_source_11 IN NUMBER
8083 --Distribution Type
8084 , p_source_12 IN VARCHAR2
8085 , p_source_12_meaning IN VARCHAR2
8086 --Entered Currency Code
8087 , p_source_15 IN VARCHAR2
8088 --Entered Amount
8089 , p_source_18 IN NUMBER
8090 --Currency Conversion Date
8091 , p_source_19 IN DATE
8092 --Currency Conversion Rate
8093 , p_source_20 IN NUMBER
8094 --Currency Conversion Type
8095 , p_source_21 IN VARCHAR2
8096 --Accounted Amount
8097 , p_source_22 IN NUMBER
8098 --Accounting Line Type
8099 , p_source_24 IN NUMBER
8100 )
8101 IS
8102
8103 l_component_type VARCHAR2(80);
8104 l_component_code VARCHAR2(30);
8105 l_component_type_code VARCHAR2(1);
8106 l_component_appl_id INTEGER;
8107 l_amb_context_code VARCHAR2(30);
8108 l_entity_code VARCHAR2(30);
8109 l_event_class_code VARCHAR2(30);
8110 l_ae_header_id NUMBER;
8111 l_event_type_code VARCHAR2(30);
8112 l_line_definition_code VARCHAR2(30);
8113 l_line_definition_owner_code VARCHAR2(1);
8114 --
8115 -- adr variables
8116 l_segment VARCHAR2(30);
8117 l_ccid NUMBER;
8118 l_adr_transaction_coa_id NUMBER;
8119 l_adr_accounting_coa_id NUMBER;
8120 l_adr_flexfield_segment_code VARCHAR2(30);
8121 l_adr_flex_value_set_id NUMBER;
8122 l_adr_value_type_code VARCHAR2(30);
8123 l_adr_value_combination_id NUMBER;
8124 l_adr_value_segment_code VARCHAR2(30);
8125
8126 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
8127 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
8128 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
8129 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
8130
8131 -- 4262811 Variables ------------------------------------------------------------------------------------------
8132 l_entered_amt_idx NUMBER;
8133 l_accted_amt_idx NUMBER;
8134 l_acc_rev_flag VARCHAR2(1);
8135 l_accrual_line_num NUMBER;
8136 l_tmp_amt NUMBER;
8137 l_acc_rev_natural_side_code VARCHAR2(1);
8138
8139 l_num_entries NUMBER;
8140 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
8141 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
8142 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
8143 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
8144 l_recog_line_1 NUMBER;
8145 l_recog_line_2 NUMBER;
8146
8147 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
8148 l_bflow_applied_to_amt NUMBER; -- 5132302
8149 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
8150
8151 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
8152
8153 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
8154 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
8155
8156 ---------------------------------------------------------------------------------------------------------------
8157
8158
8159 --
8160 -- bulk performance
8161 --
8162 l_balance_type_code VARCHAR2(1);
8163 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
8164 l_log_module VARCHAR2(240);
8165
8166 --
8167 -- Upgrade strategy
8168 --
8169 l_actual_upg_option VARCHAR2(1);
8170 l_enc_upg_option VARCHAR2(1);
8171
8172 --
8173 BEGIN
8174 --
8175 IF g_log_enabled THEN
8176 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_18';
8177 END IF;
8178 --
8179 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8180
8181 trace
8182 (p_msg => 'BEGIN of AcctLineType_18'
8183 ,p_level => C_LEVEL_PROCEDURE
8184 ,p_module => l_log_module);
8185
8186 END IF;
8187 --
8188 l_component_type := 'AMB_JLT';
8189 l_component_code := 'COST_OF_GOODS_SOLD';
8190 l_component_type_code := 'S';
8191 l_component_appl_id := 707;
8192 l_amb_context_code := 'DEFAULT';
8193 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
8194 l_event_class_code := 'SALES_ORDER';
8195 l_event_type_code := 'SALES_ORDER_ALL';
8196 l_line_definition_owner_code := 'S';
8197 l_line_definition_code := 'SALES_ORDER';
8198 --
8199 l_balance_type_code := 'A';
8200 l_segment := NULL;
8201 l_ccid := NULL;
8202 l_adr_transaction_coa_id := NULL;
8203 l_adr_accounting_coa_id := NULL;
8204 l_adr_flexfield_segment_code := NULL;
8205 l_adr_flex_value_set_id := NULL;
8206 l_adr_value_type_code := NULL;
8207 l_adr_value_combination_id := NULL;
8208 l_adr_value_segment_code := NULL;
8209
8210 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
8211 l_bflow_class_code := ''; -- 4219869 Business Flow
8212 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
8213 l_budgetary_control_flag := 'N';
8214
8215 l_bflow_applied_to_amt_idx := NULL; -- 5132302
8216 l_bflow_applied_to_amt := NULL; -- 5132302
8217 l_entered_amt_idx := NULL; -- 4262811
8218 l_accted_amt_idx := NULL; -- 4262811
8219 l_acc_rev_flag := NULL; -- 4262811
8220 l_accrual_line_num := NULL; -- 4262811
8221 l_tmp_amt := NULL; -- 4262811
8222 --
8223
8224 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
8225 l_balance_type_code <> 'B' THEN
8226 IF NVL(p_source_24,9E125) = 35
8227 THEN
8228
8229 --
8230 XLA_AE_LINES_PKG.SetNewLine;
8231
8232 p_balance_type_code := l_balance_type_code;
8233 -- set the flag so later we will know whether the gain loss line needs to be created
8234
8235 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
8236 p_actual_flag :='A';
8237 END IF;
8238
8239 --
8240 -- bulk performance
8241 --
8242 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
8243 p_header_num => 0); -- 4262811
8244 --
8245 -- set accounting line options
8246 --
8247 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
8248 p_natural_side_code => 'D'
8249 , p_gain_or_loss_flag => 'N'
8250 , p_gl_transfer_mode_code => 'S'
8251 , p_acct_entry_type_code => 'A'
8252 , p_switch_side_flag => 'Y'
8253 , p_merge_duplicate_code => 'N'
8254 );
8255 --
8256 l_acc_rev_natural_side_code := 'C'; -- 4262811
8257 --
8258 --
8259 -- set accounting line type info
8260 --
8261 xla_ae_lines_pkg.SetAcctLineType
8262 (p_component_type => l_component_type
8263 ,p_event_type_code => l_event_type_code
8264 ,p_line_definition_owner_code => l_line_definition_owner_code
8265 ,p_line_definition_code => l_line_definition_code
8266 ,p_accounting_line_code => l_component_code
8267 ,p_accounting_line_type_code => l_component_type_code
8268 ,p_accounting_line_appl_id => l_component_appl_id
8269 ,p_amb_context_code => l_amb_context_code
8270 ,p_entity_code => l_entity_code
8271 ,p_event_class_code => l_event_class_code);
8272 --
8273 -- set accounting class
8274 --
8275 xla_ae_lines_pkg.SetAcctClass(
8276 p_accounting_class_code => 'COST_OF_GOODS_SOLD'
8277 , p_ae_header_id => l_ae_header_id
8278 );
8279
8280 --
8281 -- set rounding class
8282 --
8283 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
8284 'COST_OF_GOODS_SOLD';
8285
8286 --
8287 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
8288 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
8289 --
8290 -- bulk performance
8291 --
8292 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
8293
8294 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
8295 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
8296
8297 -- 4955764
8298 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
8299 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
8300
8301 -- 4458381 Public Sector Enh
8302
8303 --
8304 -- set accounting attributes for the line type
8305 --
8306 l_entered_amt_idx := 3;
8307 l_accted_amt_idx := 8;
8308 l_bflow_applied_to_amt_idx := NULL; -- 5132302
8309 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
8310 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
8311 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
8312 l_rec_acct_attrs.array_char_value(2) := p_source_12;
8313 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
8314 l_rec_acct_attrs.array_num_value(3) := p_source_18;
8315 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
8316 l_rec_acct_attrs.array_char_value(4) := p_source_15;
8317 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
8318 l_rec_acct_attrs.array_date_value(5) := p_source_19;
8319 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
8320 l_rec_acct_attrs.array_num_value(6) := p_source_20;
8321 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
8322 l_rec_acct_attrs.array_char_value(7) := p_source_21;
8323 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
8324 l_rec_acct_attrs.array_num_value(8) := p_source_22;
8325
8326 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
8327 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
8328
8329 ---------------------------------------------------------------------------------------------------------------
8330 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
8331 ---------------------------------------------------------------------------------------------------------------
8332 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
8333
8334 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
8335 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
8336
8337 IF xla_accounting_cache_pkg.GetValueChar
8338 (p_source_code => 'LEDGER_CATEGORY_CODE'
8339 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
8340 AND l_bflow_method_code = 'PRIOR_ENTRY'
8341 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
8342 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
8343 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
8344 )
8345 THEN
8346 xla_ae_lines_pkg.BflowUpgEntry
8347 (p_business_method_code => l_bflow_method_code
8348 ,p_business_class_code => l_bflow_class_code
8349 ,p_balance_type => l_balance_type_code);
8350 ELSE
8351 NULL;
8352 -- No business flow processing for business flow method of NONE.
8353 END IF;
8354
8355 --
8356 -- call analytical criteria
8357 --
8358
8359 --
8360 -- call description
8361 --
8362 -- No description or it is inherited.
8363 --
8364 -- call ADRs
8365 -- Bug 4922099
8366 --
8367 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
8368 (NVL(l_actual_upg_option, 'N') = 'O') OR
8369 (NVL(l_enc_upg_option, 'N') = 'O')
8370 )
8371 THEN
8372 NULL;
8373 --
8374 --
8375
8376 l_ccid := AcctDerRule_4(
8377 p_application_id => p_application_id
8378 , p_ae_header_id => l_ae_header_id
8379 , p_source_4 => p_source_4
8380 , x_transaction_coa_id => l_adr_transaction_coa_id
8381 , x_accounting_coa_id => l_adr_accounting_coa_id
8382 , x_value_type_code => l_adr_value_type_code
8383 , p_side => 'NA'
8384 );
8385
8386 xla_ae_lines_pkg.set_ccid(
8387 p_code_combination_id => l_ccid
8388 , p_value_type_code => l_adr_value_type_code
8389 , p_transaction_coa_id => l_adr_transaction_coa_id
8390 , p_accounting_coa_id => l_adr_accounting_coa_id
8391 , p_adr_code => 'CST_DEFAULT'
8392 , p_adr_type_code => 'S'
8393 , p_component_type => l_component_type
8394 , p_component_code => l_component_code
8395 , p_component_type_code => l_component_type_code
8396 , p_component_appl_id => l_component_appl_id
8397 , p_amb_context_code => l_amb_context_code
8398 , p_side => 'NA'
8399 );
8400
8401
8402 --
8403 --
8404 END IF;
8405 --
8406 -- Bug 4922099
8407 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
8408 (NVL(l_enc_upg_option, 'N') = 'O')
8409 ) AND
8410 (l_bflow_method_code = 'PRIOR_ENTRY')
8411 )
8412 THEN
8413 IF
8414 --
8415 1 = 2
8416 --
8417 THEN
8418 xla_accounting_err_pkg.build_message
8419 (p_appli_s_name => 'XLA'
8420 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
8421 ,p_token_1 => 'LINE_NUMBER'
8422 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
8423 ,p_token_2 => 'LINE_TYPE_NAME'
8424 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
8425 l_component_type
8426 ,l_component_code
8427 ,l_component_type_code
8428 ,l_component_appl_id
8429 ,l_amb_context_code
8430 ,l_entity_code
8431 ,l_event_class_code
8432 )
8433 ,p_token_3 => 'OWNER'
8434 ,p_value_3 => xla_lookups_pkg.get_meaning(
8435 p_lookup_type => 'XLA_OWNER_TYPE'
8436 ,p_lookup_code => l_component_type_code
8437 )
8438 ,p_token_4 => 'PRODUCT_NAME'
8439 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
8440 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
8441 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
8442 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
8443 ,p_ae_header_id => NULL
8444 );
8445
8446 IF (C_LEVEL_ERROR>= g_log_level) THEN
8447 trace
8448 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
8449 ,p_level => C_LEVEL_ERROR
8450 ,p_module => l_log_module);
8451 END IF;
8452 END IF;
8453 END IF;
8454 --
8455 --
8456 ------------------------------------------------------------------------------------------------
8457 -- 4219869 Business Flow
8458 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
8459 -- Prior Entry. Currently, the following code is always generated.
8460 ------------------------------------------------------------------------------------------------
8461 XLA_AE_LINES_PKG.ValidateCurrentLine;
8462
8463 ------------------------------------------------------------------------------------
8464 -- 4219869 Business Flow
8465 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
8466 ------------------------------------------------------------------------------------
8467 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
8468
8469 ----------------------------------------------------------------------------------
8470 -- 4219869 Business Flow
8471 -- Update journal entry status -- Need to generate this within IF <condition>
8472 ----------------------------------------------------------------------------------
8473 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
8474 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
8475 ,p_balance_type_code => l_balance_type_code
8476 );
8477
8478 -------------------------------------------------------------------------------------------
8479 -- 4262811 - Generate the Accrual Reversal lines
8480 -------------------------------------------------------------------------------------------
8481 BEGIN
8482 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
8483 (g_array_event(p_event_id).array_value_num('header_index'));
8484 IF l_acc_rev_flag IS NULL THEN
8485 l_acc_rev_flag := 'N';
8486 END IF;
8487 EXCEPTION
8488 WHEN OTHERS THEN
8489 l_acc_rev_flag := 'N';
8490 END;
8491 --
8492 IF (l_acc_rev_flag = 'Y') THEN
8493
8494 -- 4645092 ------------------------------------------------------------------------------
8495 -- To allow MPA report to determine if it should generate report process
8496 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
8497 ------------------------------------------------------------------------------------------
8498
8499 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
8500 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
8501 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
8502 -- call ADRs
8503 -- Bug 4922099
8504 --
8505 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
8506 (NVL(l_actual_upg_option, 'N') = 'O') OR
8507 (NVL(l_enc_upg_option, 'N') = 'O')
8508 )
8509 THEN
8510 NULL;
8511 --
8512 --
8513
8514 l_ccid := AcctDerRule_4(
8515 p_application_id => p_application_id
8516 , p_ae_header_id => l_ae_header_id
8517 , p_source_4 => p_source_4
8518 , x_transaction_coa_id => l_adr_transaction_coa_id
8519 , x_accounting_coa_id => l_adr_accounting_coa_id
8520 , x_value_type_code => l_adr_value_type_code
8521 , p_side => 'NA'
8522 );
8523
8524 xla_ae_lines_pkg.set_ccid(
8525 p_code_combination_id => l_ccid
8526 , p_value_type_code => l_adr_value_type_code
8527 , p_transaction_coa_id => l_adr_transaction_coa_id
8528 , p_accounting_coa_id => l_adr_accounting_coa_id
8529 , p_adr_code => 'CST_DEFAULT'
8530 , p_adr_type_code => 'S'
8531 , p_component_type => l_component_type
8532 , p_component_code => l_component_code
8533 , p_component_type_code => l_component_type_code
8534 , p_component_appl_id => l_component_appl_id
8535 , p_amb_context_code => l_amb_context_code
8536 , p_side => 'NA'
8537 );
8538
8539
8540 --
8541 --
8542 END IF;
8543
8544 --
8545 -- Update the line information that should be overwritten
8546 --
8547 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
8548 p_header_num => 1);
8549 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
8550
8551 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
8552
8553 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
8554 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
8555 END IF;
8556
8557 --
8558 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
8559 --
8560 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
8561 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
8562 ELSE
8563 ---------------------------------------------------------------------------------------------------
8564 -- 4262811a Switch Sign
8565 ---------------------------------------------------------------------------------------------------
8566 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
8567 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
8568 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8569 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
8570 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8571 -- 5132302
8572 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
8573 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8574
8575 END IF;
8576
8577 -- 4955764
8578 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
8579 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
8580
8581
8582 XLA_AE_LINES_PKG.ValidateCurrentLine;
8583 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
8584
8585 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
8586 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
8587 ,p_balance_type_code => l_balance_type_code);
8588
8589 END IF;
8590
8591 -----------------------------------------------------------------------------------------
8592 -- 4262811 Multiperiod Accounting
8593 -----------------------------------------------------------------------------------------
8594 -- No MPA option is assigned.
8595
8596
8597 END IF;
8598 END IF;
8599 --
8600
8601 --
8602 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8603 trace
8604 (p_msg => 'END of AcctLineType_18'
8605 ,p_level => C_LEVEL_PROCEDURE
8606 ,p_module => l_log_module);
8607 END IF;
8608 --
8609 EXCEPTION
8610 WHEN xla_exceptions_pkg.application_exception THEN
8611 RAISE;
8612 WHEN OTHERS THEN
8613 xla_exceptions_pkg.raise_message
8614 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_18');
8615 END AcctLineType_18;
8616 --
8617
8618 ---------------------------------------
8619 --
8620 -- PRIVATE FUNCTION
8621 -- AcctLineType_19
8622 --
8623 ---------------------------------------
8624 PROCEDURE AcctLineType_19 (
8625 p_application_id IN NUMBER
8626 ,p_event_id IN NUMBER
8627 ,p_calculate_acctd_flag IN VARCHAR2
8628 ,p_calculate_g_l_flag IN VARCHAR2
8629 ,p_actual_flag IN OUT VARCHAR2
8630 ,p_balance_type_code OUT VARCHAR2
8631 ,p_gain_or_loss_ref OUT VARCHAR2
8632
8633 --Cost Management Default Account
8634 , p_source_4 IN NUMBER
8635 --DISTRIBUTION_IDENTIFIER
8636 , p_source_11 IN NUMBER
8637 --Distribution Type
8638 , p_source_12 IN VARCHAR2
8639 , p_source_12_meaning IN VARCHAR2
8640 --Entered Currency Code
8641 , p_source_15 IN VARCHAR2
8642 --Entered Amount
8643 , p_source_18 IN NUMBER
8644 --Currency Conversion Date
8645 , p_source_19 IN DATE
8646 --Currency Conversion Rate
8647 , p_source_20 IN NUMBER
8648 --Currency Conversion Type
8649 , p_source_21 IN VARCHAR2
8650 --Accounted Amount
8651 , p_source_22 IN NUMBER
8652 --Accounting Line Type
8653 , p_source_24 IN NUMBER
8654 )
8655 IS
8656
8657 l_component_type VARCHAR2(80);
8658 l_component_code VARCHAR2(30);
8659 l_component_type_code VARCHAR2(1);
8660 l_component_appl_id INTEGER;
8661 l_amb_context_code VARCHAR2(30);
8662 l_entity_code VARCHAR2(30);
8663 l_event_class_code VARCHAR2(30);
8664 l_ae_header_id NUMBER;
8665 l_event_type_code VARCHAR2(30);
8666 l_line_definition_code VARCHAR2(30);
8667 l_line_definition_owner_code VARCHAR2(1);
8668 --
8669 -- adr variables
8670 l_segment VARCHAR2(30);
8671 l_ccid NUMBER;
8672 l_adr_transaction_coa_id NUMBER;
8673 l_adr_accounting_coa_id NUMBER;
8674 l_adr_flexfield_segment_code VARCHAR2(30);
8675 l_adr_flex_value_set_id NUMBER;
8676 l_adr_value_type_code VARCHAR2(30);
8677 l_adr_value_combination_id NUMBER;
8678 l_adr_value_segment_code VARCHAR2(30);
8679
8680 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
8681 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
8682 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
8683 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
8684
8685 -- 4262811 Variables ------------------------------------------------------------------------------------------
8686 l_entered_amt_idx NUMBER;
8687 l_accted_amt_idx NUMBER;
8688 l_acc_rev_flag VARCHAR2(1);
8689 l_accrual_line_num NUMBER;
8690 l_tmp_amt NUMBER;
8691 l_acc_rev_natural_side_code VARCHAR2(1);
8692
8693 l_num_entries NUMBER;
8694 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
8695 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
8696 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
8697 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
8698 l_recog_line_1 NUMBER;
8699 l_recog_line_2 NUMBER;
8700
8701 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
8702 l_bflow_applied_to_amt NUMBER; -- 5132302
8703 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
8704
8705 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
8706
8707 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
8708 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
8709
8710 ---------------------------------------------------------------------------------------------------------------
8711
8712
8713 --
8714 -- bulk performance
8715 --
8716 l_balance_type_code VARCHAR2(1);
8717 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
8718 l_log_module VARCHAR2(240);
8719
8720 --
8721 -- Upgrade strategy
8722 --
8723 l_actual_upg_option VARCHAR2(1);
8724 l_enc_upg_option VARCHAR2(1);
8725
8726 --
8727 BEGIN
8728 --
8729 IF g_log_enabled THEN
8730 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_19';
8731 END IF;
8732 --
8733 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8734
8735 trace
8736 (p_msg => 'BEGIN of AcctLineType_19'
8737 ,p_level => C_LEVEL_PROCEDURE
8738 ,p_module => l_log_module);
8739
8740 END IF;
8741 --
8742 l_component_type := 'AMB_JLT';
8743 l_component_code := 'COST_OF_GOODS_SOLD';
8744 l_component_type_code := 'S';
8745 l_component_appl_id := 707;
8746 l_amb_context_code := 'DEFAULT';
8747 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
8748 l_event_class_code := 'USER_DEFINE';
8749 l_event_type_code := 'UFOB_SHIP_SENDER_SHIP_NO_TP';
8750 l_line_definition_owner_code := 'S';
8751 l_line_definition_code := 'USER_FOB_SHIP_SENDER_SHIP_NOTP';
8752 --
8753 l_balance_type_code := 'A';
8754 l_segment := NULL;
8755 l_ccid := NULL;
8756 l_adr_transaction_coa_id := NULL;
8757 l_adr_accounting_coa_id := NULL;
8758 l_adr_flexfield_segment_code := NULL;
8759 l_adr_flex_value_set_id := NULL;
8760 l_adr_value_type_code := NULL;
8761 l_adr_value_combination_id := NULL;
8762 l_adr_value_segment_code := NULL;
8763
8764 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
8765 l_bflow_class_code := ''; -- 4219869 Business Flow
8766 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
8767 l_budgetary_control_flag := 'N';
8768
8769 l_bflow_applied_to_amt_idx := NULL; -- 5132302
8770 l_bflow_applied_to_amt := NULL; -- 5132302
8771 l_entered_amt_idx := NULL; -- 4262811
8772 l_accted_amt_idx := NULL; -- 4262811
8773 l_acc_rev_flag := NULL; -- 4262811
8774 l_accrual_line_num := NULL; -- 4262811
8775 l_tmp_amt := NULL; -- 4262811
8776 --
8777
8778 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
8779 l_balance_type_code <> 'B' THEN
8780 IF NVL(p_source_24,9E125) = 2 AND
8781 p_source_22 > 0
8782 THEN
8783
8784 --
8785 XLA_AE_LINES_PKG.SetNewLine;
8786
8787 p_balance_type_code := l_balance_type_code;
8788 -- set the flag so later we will know whether the gain loss line needs to be created
8789
8790 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
8791 p_actual_flag :='A';
8792 END IF;
8793
8794 --
8795 -- bulk performance
8796 --
8797 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
8798 p_header_num => 0); -- 4262811
8799 --
8800 -- set accounting line options
8801 --
8802 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
8803 p_natural_side_code => 'D'
8804 , p_gain_or_loss_flag => 'N'
8805 , p_gl_transfer_mode_code => 'S'
8806 , p_acct_entry_type_code => 'A'
8807 , p_switch_side_flag => 'Y'
8808 , p_merge_duplicate_code => 'N'
8809 );
8810 --
8811 l_acc_rev_natural_side_code := 'C'; -- 4262811
8812 --
8813 --
8814 -- set accounting line type info
8815 --
8816 xla_ae_lines_pkg.SetAcctLineType
8817 (p_component_type => l_component_type
8818 ,p_event_type_code => l_event_type_code
8819 ,p_line_definition_owner_code => l_line_definition_owner_code
8820 ,p_line_definition_code => l_line_definition_code
8821 ,p_accounting_line_code => l_component_code
8822 ,p_accounting_line_type_code => l_component_type_code
8823 ,p_accounting_line_appl_id => l_component_appl_id
8824 ,p_amb_context_code => l_amb_context_code
8825 ,p_entity_code => l_entity_code
8826 ,p_event_class_code => l_event_class_code);
8827 --
8828 -- set accounting class
8829 --
8830 xla_ae_lines_pkg.SetAcctClass(
8831 p_accounting_class_code => 'COST_OF_GOODS_SOLD'
8832 , p_ae_header_id => l_ae_header_id
8833 );
8834
8835 --
8836 -- set rounding class
8837 --
8838 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
8839 'COST_OF_GOODS_SOLD';
8840
8841 --
8842 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
8843 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
8844 --
8845 -- bulk performance
8846 --
8847 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
8848
8849 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
8850 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
8851
8852 -- 4955764
8853 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
8854 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
8855
8856 -- 4458381 Public Sector Enh
8857
8858 --
8859 -- set accounting attributes for the line type
8860 --
8861 l_entered_amt_idx := 3;
8862 l_accted_amt_idx := 8;
8863 l_bflow_applied_to_amt_idx := NULL; -- 5132302
8864 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
8865 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
8866 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
8867 l_rec_acct_attrs.array_char_value(2) := p_source_12;
8868 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
8869 l_rec_acct_attrs.array_num_value(3) := p_source_18;
8870 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
8871 l_rec_acct_attrs.array_char_value(4) := p_source_15;
8872 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
8873 l_rec_acct_attrs.array_date_value(5) := p_source_19;
8874 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
8875 l_rec_acct_attrs.array_num_value(6) := p_source_20;
8876 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
8877 l_rec_acct_attrs.array_char_value(7) := p_source_21;
8878 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
8879 l_rec_acct_attrs.array_num_value(8) := p_source_22;
8880
8881 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
8882 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
8883
8884 ---------------------------------------------------------------------------------------------------------------
8885 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
8886 ---------------------------------------------------------------------------------------------------------------
8887 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
8888
8889 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
8890 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
8891
8892 IF xla_accounting_cache_pkg.GetValueChar
8893 (p_source_code => 'LEDGER_CATEGORY_CODE'
8894 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
8895 AND l_bflow_method_code = 'PRIOR_ENTRY'
8896 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
8897 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
8898 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
8899 )
8900 THEN
8901 xla_ae_lines_pkg.BflowUpgEntry
8902 (p_business_method_code => l_bflow_method_code
8903 ,p_business_class_code => l_bflow_class_code
8904 ,p_balance_type => l_balance_type_code);
8905 ELSE
8906 NULL;
8907 -- No business flow processing for business flow method of NONE.
8908 END IF;
8909
8910 --
8911 -- call analytical criteria
8912 --
8913
8914 --
8915 -- call description
8916 --
8917 -- No description or it is inherited.
8918 --
8919 -- call ADRs
8920 -- Bug 4922099
8921 --
8922 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
8923 (NVL(l_actual_upg_option, 'N') = 'O') OR
8924 (NVL(l_enc_upg_option, 'N') = 'O')
8925 )
8926 THEN
8927 NULL;
8928 --
8929 --
8930
8931 l_ccid := AcctDerRule_4(
8932 p_application_id => p_application_id
8933 , p_ae_header_id => l_ae_header_id
8934 , p_source_4 => p_source_4
8935 , x_transaction_coa_id => l_adr_transaction_coa_id
8936 , x_accounting_coa_id => l_adr_accounting_coa_id
8937 , x_value_type_code => l_adr_value_type_code
8938 , p_side => 'NA'
8939 );
8940
8941 xla_ae_lines_pkg.set_ccid(
8942 p_code_combination_id => l_ccid
8943 , p_value_type_code => l_adr_value_type_code
8944 , p_transaction_coa_id => l_adr_transaction_coa_id
8945 , p_accounting_coa_id => l_adr_accounting_coa_id
8946 , p_adr_code => 'CST_DEFAULT'
8947 , p_adr_type_code => 'S'
8948 , p_component_type => l_component_type
8949 , p_component_code => l_component_code
8950 , p_component_type_code => l_component_type_code
8951 , p_component_appl_id => l_component_appl_id
8952 , p_amb_context_code => l_amb_context_code
8953 , p_side => 'NA'
8954 );
8955
8956
8957 --
8958 --
8959 END IF;
8960 --
8961 -- Bug 4922099
8962 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
8963 (NVL(l_enc_upg_option, 'N') = 'O')
8964 ) AND
8965 (l_bflow_method_code = 'PRIOR_ENTRY')
8966 )
8967 THEN
8968 IF
8969 --
8970 1 = 2
8971 --
8972 THEN
8973 xla_accounting_err_pkg.build_message
8974 (p_appli_s_name => 'XLA'
8975 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
8976 ,p_token_1 => 'LINE_NUMBER'
8977 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
8978 ,p_token_2 => 'LINE_TYPE_NAME'
8979 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
8980 l_component_type
8981 ,l_component_code
8982 ,l_component_type_code
8983 ,l_component_appl_id
8984 ,l_amb_context_code
8985 ,l_entity_code
8986 ,l_event_class_code
8987 )
8988 ,p_token_3 => 'OWNER'
8989 ,p_value_3 => xla_lookups_pkg.get_meaning(
8990 p_lookup_type => 'XLA_OWNER_TYPE'
8991 ,p_lookup_code => l_component_type_code
8992 )
8993 ,p_token_4 => 'PRODUCT_NAME'
8994 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
8995 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
8996 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
8997 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
8998 ,p_ae_header_id => NULL
8999 );
9000
9001 IF (C_LEVEL_ERROR>= g_log_level) THEN
9002 trace
9003 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
9004 ,p_level => C_LEVEL_ERROR
9005 ,p_module => l_log_module);
9006 END IF;
9007 END IF;
9008 END IF;
9009 --
9010 --
9011 ------------------------------------------------------------------------------------------------
9012 -- 4219869 Business Flow
9013 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
9014 -- Prior Entry. Currently, the following code is always generated.
9015 ------------------------------------------------------------------------------------------------
9016 XLA_AE_LINES_PKG.ValidateCurrentLine;
9017
9018 ------------------------------------------------------------------------------------
9019 -- 4219869 Business Flow
9020 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
9021 ------------------------------------------------------------------------------------
9022 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
9023
9024 ----------------------------------------------------------------------------------
9025 -- 4219869 Business Flow
9026 -- Update journal entry status -- Need to generate this within IF <condition>
9027 ----------------------------------------------------------------------------------
9028 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
9029 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
9030 ,p_balance_type_code => l_balance_type_code
9031 );
9032
9033 -------------------------------------------------------------------------------------------
9034 -- 4262811 - Generate the Accrual Reversal lines
9035 -------------------------------------------------------------------------------------------
9036 BEGIN
9037 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
9038 (g_array_event(p_event_id).array_value_num('header_index'));
9039 IF l_acc_rev_flag IS NULL THEN
9040 l_acc_rev_flag := 'N';
9041 END IF;
9042 EXCEPTION
9043 WHEN OTHERS THEN
9044 l_acc_rev_flag := 'N';
9045 END;
9046 --
9047 IF (l_acc_rev_flag = 'Y') THEN
9048
9049 -- 4645092 ------------------------------------------------------------------------------
9050 -- To allow MPA report to determine if it should generate report process
9051 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
9052 ------------------------------------------------------------------------------------------
9053
9054 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
9055 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
9056 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
9057 -- call ADRs
9058 -- Bug 4922099
9059 --
9060 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
9061 (NVL(l_actual_upg_option, 'N') = 'O') OR
9062 (NVL(l_enc_upg_option, 'N') = 'O')
9063 )
9064 THEN
9065 NULL;
9066 --
9067 --
9068
9069 l_ccid := AcctDerRule_4(
9070 p_application_id => p_application_id
9071 , p_ae_header_id => l_ae_header_id
9072 , p_source_4 => p_source_4
9073 , x_transaction_coa_id => l_adr_transaction_coa_id
9074 , x_accounting_coa_id => l_adr_accounting_coa_id
9075 , x_value_type_code => l_adr_value_type_code
9076 , p_side => 'NA'
9077 );
9078
9079 xla_ae_lines_pkg.set_ccid(
9080 p_code_combination_id => l_ccid
9081 , p_value_type_code => l_adr_value_type_code
9082 , p_transaction_coa_id => l_adr_transaction_coa_id
9083 , p_accounting_coa_id => l_adr_accounting_coa_id
9084 , p_adr_code => 'CST_DEFAULT'
9085 , p_adr_type_code => 'S'
9086 , p_component_type => l_component_type
9087 , p_component_code => l_component_code
9088 , p_component_type_code => l_component_type_code
9089 , p_component_appl_id => l_component_appl_id
9090 , p_amb_context_code => l_amb_context_code
9091 , p_side => 'NA'
9092 );
9093
9094
9095 --
9096 --
9097 END IF;
9098
9099 --
9100 -- Update the line information that should be overwritten
9101 --
9102 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
9103 p_header_num => 1);
9104 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
9105
9106 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
9107
9108 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
9109 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
9110 END IF;
9111
9112 --
9113 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
9114 --
9115 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
9116 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
9117 ELSE
9118 ---------------------------------------------------------------------------------------------------
9119 -- 4262811a Switch Sign
9120 ---------------------------------------------------------------------------------------------------
9121 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
9122 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
9123 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9124 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
9125 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9126 -- 5132302
9127 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
9128 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9129
9130 END IF;
9131
9132 -- 4955764
9133 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
9134 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
9135
9136
9137 XLA_AE_LINES_PKG.ValidateCurrentLine;
9138 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
9139
9140 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
9141 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
9142 ,p_balance_type_code => l_balance_type_code);
9143
9144 END IF;
9145
9146 -----------------------------------------------------------------------------------------
9147 -- 4262811 Multiperiod Accounting
9148 -----------------------------------------------------------------------------------------
9149 -- No MPA option is assigned.
9150
9151
9152 END IF;
9153 END IF;
9154 --
9155
9156 --
9157 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9158 trace
9159 (p_msg => 'END of AcctLineType_19'
9160 ,p_level => C_LEVEL_PROCEDURE
9161 ,p_module => l_log_module);
9162 END IF;
9163 --
9164 EXCEPTION
9165 WHEN xla_exceptions_pkg.application_exception THEN
9166 RAISE;
9167 WHEN OTHERS THEN
9168 xla_exceptions_pkg.raise_message
9169 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_19');
9170 END AcctLineType_19;
9171 --
9172
9173 ---------------------------------------
9174 --
9175 -- PRIVATE FUNCTION
9176 -- AcctLineType_20
9177 --
9178 ---------------------------------------
9179 PROCEDURE AcctLineType_20 (
9180 p_application_id IN NUMBER
9181 ,p_event_id IN NUMBER
9182 ,p_calculate_acctd_flag IN VARCHAR2
9183 ,p_calculate_g_l_flag IN VARCHAR2
9184 ,p_actual_flag IN OUT VARCHAR2
9185 ,p_balance_type_code OUT VARCHAR2
9186 ,p_gain_or_loss_ref OUT VARCHAR2
9187
9188 --Cost Management Default Account
9189 , p_source_4 IN NUMBER
9190 --DISTRIBUTION_IDENTIFIER
9191 , p_source_11 IN NUMBER
9192 --Distribution Type
9193 , p_source_12 IN VARCHAR2
9194 , p_source_12_meaning IN VARCHAR2
9195 --Entered Currency Code
9196 , p_source_15 IN VARCHAR2
9197 --Entered Amount
9198 , p_source_18 IN NUMBER
9199 --Currency Conversion Date
9200 , p_source_19 IN DATE
9201 --Currency Conversion Rate
9202 , p_source_20 IN NUMBER
9203 --Currency Conversion Type
9204 , p_source_21 IN VARCHAR2
9205 --Accounted Amount
9206 , p_source_22 IN NUMBER
9207 --Accounting Line Type
9208 , p_source_24 IN NUMBER
9209 )
9210 IS
9211
9212 l_component_type VARCHAR2(80);
9213 l_component_code VARCHAR2(30);
9214 l_component_type_code VARCHAR2(1);
9215 l_component_appl_id INTEGER;
9216 l_amb_context_code VARCHAR2(30);
9217 l_entity_code VARCHAR2(30);
9218 l_event_class_code VARCHAR2(30);
9219 l_ae_header_id NUMBER;
9220 l_event_type_code VARCHAR2(30);
9221 l_line_definition_code VARCHAR2(30);
9222 l_line_definition_owner_code VARCHAR2(1);
9223 --
9224 -- adr variables
9225 l_segment VARCHAR2(30);
9226 l_ccid NUMBER;
9227 l_adr_transaction_coa_id NUMBER;
9228 l_adr_accounting_coa_id NUMBER;
9229 l_adr_flexfield_segment_code VARCHAR2(30);
9230 l_adr_flex_value_set_id NUMBER;
9231 l_adr_value_type_code VARCHAR2(30);
9232 l_adr_value_combination_id NUMBER;
9233 l_adr_value_segment_code VARCHAR2(30);
9234
9235 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
9236 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
9237 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
9238 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
9239
9240 -- 4262811 Variables ------------------------------------------------------------------------------------------
9241 l_entered_amt_idx NUMBER;
9242 l_accted_amt_idx NUMBER;
9243 l_acc_rev_flag VARCHAR2(1);
9244 l_accrual_line_num NUMBER;
9245 l_tmp_amt NUMBER;
9246 l_acc_rev_natural_side_code VARCHAR2(1);
9247
9248 l_num_entries NUMBER;
9249 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
9250 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
9251 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
9252 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
9253 l_recog_line_1 NUMBER;
9254 l_recog_line_2 NUMBER;
9255
9256 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
9257 l_bflow_applied_to_amt NUMBER; -- 5132302
9258 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
9259
9260 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
9261
9262 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
9263 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
9264
9265 ---------------------------------------------------------------------------------------------------------------
9266
9267
9268 --
9269 -- bulk performance
9270 --
9271 l_balance_type_code VARCHAR2(1);
9272 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
9273 l_log_module VARCHAR2(240);
9274
9275 --
9276 -- Upgrade strategy
9277 --
9278 l_actual_upg_option VARCHAR2(1);
9279 l_enc_upg_option VARCHAR2(1);
9280
9281 --
9282 BEGIN
9283 --
9284 IF g_log_enabled THEN
9285 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_20';
9286 END IF;
9287 --
9288 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9289
9290 trace
9291 (p_msg => 'BEGIN of AcctLineType_20'
9292 ,p_level => C_LEVEL_PROCEDURE
9293 ,p_module => l_log_module);
9294
9295 END IF;
9296 --
9297 l_component_type := 'AMB_JLT';
9298 l_component_code := 'COST_OF_GOODS_SOLD';
9299 l_component_type_code := 'S';
9300 l_component_appl_id := 707;
9301 l_amb_context_code := 'DEFAULT';
9302 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
9303 l_event_class_code := 'FOB_SHIP_SENDER_SHIP';
9304 l_event_type_code := 'FOB_SHIP_SENDER_SHIP_ALL';
9305 l_line_definition_owner_code := 'S';
9306 l_line_definition_code := 'FOB_SHIP_SENDER_SHIP';
9307 --
9308 l_balance_type_code := 'A';
9309 l_segment := NULL;
9310 l_ccid := NULL;
9311 l_adr_transaction_coa_id := NULL;
9312 l_adr_accounting_coa_id := NULL;
9313 l_adr_flexfield_segment_code := NULL;
9314 l_adr_flex_value_set_id := NULL;
9315 l_adr_value_type_code := NULL;
9316 l_adr_value_combination_id := NULL;
9317 l_adr_value_segment_code := NULL;
9318
9319 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
9320 l_bflow_class_code := ''; -- 4219869 Business Flow
9321 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
9322 l_budgetary_control_flag := 'N';
9323
9324 l_bflow_applied_to_amt_idx := NULL; -- 5132302
9325 l_bflow_applied_to_amt := NULL; -- 5132302
9326 l_entered_amt_idx := NULL; -- 4262811
9327 l_accted_amt_idx := NULL; -- 4262811
9328 l_acc_rev_flag := NULL; -- 4262811
9329 l_accrual_line_num := NULL; -- 4262811
9330 l_tmp_amt := NULL; -- 4262811
9331 --
9332
9333 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
9334 l_balance_type_code <> 'B' THEN
9335 IF NVL(p_source_24,9E125) = 2 AND
9336 p_source_22 > 0
9337 THEN
9338
9339 --
9340 XLA_AE_LINES_PKG.SetNewLine;
9341
9342 p_balance_type_code := l_balance_type_code;
9343 -- set the flag so later we will know whether the gain loss line needs to be created
9344
9345 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
9346 p_actual_flag :='A';
9347 END IF;
9348
9349 --
9350 -- bulk performance
9351 --
9352 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
9353 p_header_num => 0); -- 4262811
9354 --
9355 -- set accounting line options
9356 --
9357 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
9358 p_natural_side_code => 'D'
9359 , p_gain_or_loss_flag => 'N'
9360 , p_gl_transfer_mode_code => 'S'
9361 , p_acct_entry_type_code => 'A'
9362 , p_switch_side_flag => 'Y'
9363 , p_merge_duplicate_code => 'N'
9364 );
9365 --
9366 l_acc_rev_natural_side_code := 'C'; -- 4262811
9367 --
9368 --
9369 -- set accounting line type info
9370 --
9371 xla_ae_lines_pkg.SetAcctLineType
9372 (p_component_type => l_component_type
9373 ,p_event_type_code => l_event_type_code
9374 ,p_line_definition_owner_code => l_line_definition_owner_code
9375 ,p_line_definition_code => l_line_definition_code
9376 ,p_accounting_line_code => l_component_code
9377 ,p_accounting_line_type_code => l_component_type_code
9378 ,p_accounting_line_appl_id => l_component_appl_id
9379 ,p_amb_context_code => l_amb_context_code
9380 ,p_entity_code => l_entity_code
9381 ,p_event_class_code => l_event_class_code);
9382 --
9383 -- set accounting class
9384 --
9385 xla_ae_lines_pkg.SetAcctClass(
9386 p_accounting_class_code => 'COST_OF_GOODS_SOLD'
9387 , p_ae_header_id => l_ae_header_id
9388 );
9389
9390 --
9391 -- set rounding class
9392 --
9393 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
9394 'COST_OF_GOODS_SOLD';
9395
9396 --
9397 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
9398 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
9399 --
9400 -- bulk performance
9401 --
9402 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
9403
9404 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
9405 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
9406
9407 -- 4955764
9408 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
9409 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
9410
9411 -- 4458381 Public Sector Enh
9412
9413 --
9414 -- set accounting attributes for the line type
9415 --
9416 l_entered_amt_idx := 3;
9417 l_accted_amt_idx := 8;
9418 l_bflow_applied_to_amt_idx := NULL; -- 5132302
9419 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
9420 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
9421 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
9422 l_rec_acct_attrs.array_char_value(2) := p_source_12;
9423 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
9424 l_rec_acct_attrs.array_num_value(3) := p_source_18;
9425 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
9426 l_rec_acct_attrs.array_char_value(4) := p_source_15;
9427 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
9428 l_rec_acct_attrs.array_date_value(5) := p_source_19;
9429 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
9430 l_rec_acct_attrs.array_num_value(6) := p_source_20;
9431 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
9432 l_rec_acct_attrs.array_char_value(7) := p_source_21;
9433 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
9434 l_rec_acct_attrs.array_num_value(8) := p_source_22;
9435
9436 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
9437 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
9438
9439 ---------------------------------------------------------------------------------------------------------------
9440 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
9441 ---------------------------------------------------------------------------------------------------------------
9442 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
9443
9444 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
9445 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
9446
9447 IF xla_accounting_cache_pkg.GetValueChar
9448 (p_source_code => 'LEDGER_CATEGORY_CODE'
9449 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
9450 AND l_bflow_method_code = 'PRIOR_ENTRY'
9451 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
9452 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
9453 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
9454 )
9455 THEN
9456 xla_ae_lines_pkg.BflowUpgEntry
9457 (p_business_method_code => l_bflow_method_code
9458 ,p_business_class_code => l_bflow_class_code
9459 ,p_balance_type => l_balance_type_code);
9460 ELSE
9461 NULL;
9462 -- No business flow processing for business flow method of NONE.
9463 END IF;
9464
9465 --
9466 -- call analytical criteria
9467 --
9468
9469 --
9470 -- call description
9471 --
9472 -- No description or it is inherited.
9473 --
9474 -- call ADRs
9475 -- Bug 4922099
9476 --
9477 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
9478 (NVL(l_actual_upg_option, 'N') = 'O') OR
9479 (NVL(l_enc_upg_option, 'N') = 'O')
9480 )
9481 THEN
9482 NULL;
9483 --
9484 --
9485
9486 l_ccid := AcctDerRule_4(
9487 p_application_id => p_application_id
9488 , p_ae_header_id => l_ae_header_id
9489 , p_source_4 => p_source_4
9490 , x_transaction_coa_id => l_adr_transaction_coa_id
9491 , x_accounting_coa_id => l_adr_accounting_coa_id
9492 , x_value_type_code => l_adr_value_type_code
9493 , p_side => 'NA'
9494 );
9495
9496 xla_ae_lines_pkg.set_ccid(
9497 p_code_combination_id => l_ccid
9498 , p_value_type_code => l_adr_value_type_code
9499 , p_transaction_coa_id => l_adr_transaction_coa_id
9500 , p_accounting_coa_id => l_adr_accounting_coa_id
9501 , p_adr_code => 'CST_DEFAULT'
9502 , p_adr_type_code => 'S'
9503 , p_component_type => l_component_type
9504 , p_component_code => l_component_code
9505 , p_component_type_code => l_component_type_code
9506 , p_component_appl_id => l_component_appl_id
9507 , p_amb_context_code => l_amb_context_code
9508 , p_side => 'NA'
9509 );
9510
9511
9512 --
9513 --
9514 END IF;
9515 --
9516 -- Bug 4922099
9517 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
9518 (NVL(l_enc_upg_option, 'N') = 'O')
9519 ) AND
9520 (l_bflow_method_code = 'PRIOR_ENTRY')
9521 )
9522 THEN
9523 IF
9524 --
9525 1 = 2
9526 --
9527 THEN
9528 xla_accounting_err_pkg.build_message
9529 (p_appli_s_name => 'XLA'
9530 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
9531 ,p_token_1 => 'LINE_NUMBER'
9532 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
9533 ,p_token_2 => 'LINE_TYPE_NAME'
9534 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
9535 l_component_type
9536 ,l_component_code
9537 ,l_component_type_code
9538 ,l_component_appl_id
9539 ,l_amb_context_code
9540 ,l_entity_code
9541 ,l_event_class_code
9542 )
9543 ,p_token_3 => 'OWNER'
9544 ,p_value_3 => xla_lookups_pkg.get_meaning(
9545 p_lookup_type => 'XLA_OWNER_TYPE'
9546 ,p_lookup_code => l_component_type_code
9547 )
9548 ,p_token_4 => 'PRODUCT_NAME'
9549 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
9550 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
9551 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
9552 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
9553 ,p_ae_header_id => NULL
9554 );
9555
9556 IF (C_LEVEL_ERROR>= g_log_level) THEN
9557 trace
9558 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
9559 ,p_level => C_LEVEL_ERROR
9560 ,p_module => l_log_module);
9561 END IF;
9562 END IF;
9563 END IF;
9564 --
9565 --
9566 ------------------------------------------------------------------------------------------------
9567 -- 4219869 Business Flow
9568 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
9569 -- Prior Entry. Currently, the following code is always generated.
9570 ------------------------------------------------------------------------------------------------
9571 XLA_AE_LINES_PKG.ValidateCurrentLine;
9572
9573 ------------------------------------------------------------------------------------
9574 -- 4219869 Business Flow
9575 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
9576 ------------------------------------------------------------------------------------
9577 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
9578
9579 ----------------------------------------------------------------------------------
9580 -- 4219869 Business Flow
9581 -- Update journal entry status -- Need to generate this within IF <condition>
9582 ----------------------------------------------------------------------------------
9583 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
9584 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
9585 ,p_balance_type_code => l_balance_type_code
9586 );
9587
9588 -------------------------------------------------------------------------------------------
9589 -- 4262811 - Generate the Accrual Reversal lines
9590 -------------------------------------------------------------------------------------------
9591 BEGIN
9592 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
9593 (g_array_event(p_event_id).array_value_num('header_index'));
9594 IF l_acc_rev_flag IS NULL THEN
9595 l_acc_rev_flag := 'N';
9596 END IF;
9597 EXCEPTION
9598 WHEN OTHERS THEN
9599 l_acc_rev_flag := 'N';
9600 END;
9601 --
9602 IF (l_acc_rev_flag = 'Y') THEN
9603
9604 -- 4645092 ------------------------------------------------------------------------------
9605 -- To allow MPA report to determine if it should generate report process
9606 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
9607 ------------------------------------------------------------------------------------------
9608
9609 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
9610 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
9611 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
9612 -- call ADRs
9613 -- Bug 4922099
9614 --
9615 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
9616 (NVL(l_actual_upg_option, 'N') = 'O') OR
9617 (NVL(l_enc_upg_option, 'N') = 'O')
9618 )
9619 THEN
9620 NULL;
9621 --
9622 --
9623
9624 l_ccid := AcctDerRule_4(
9625 p_application_id => p_application_id
9626 , p_ae_header_id => l_ae_header_id
9627 , p_source_4 => p_source_4
9628 , x_transaction_coa_id => l_adr_transaction_coa_id
9629 , x_accounting_coa_id => l_adr_accounting_coa_id
9630 , x_value_type_code => l_adr_value_type_code
9631 , p_side => 'NA'
9632 );
9633
9634 xla_ae_lines_pkg.set_ccid(
9635 p_code_combination_id => l_ccid
9636 , p_value_type_code => l_adr_value_type_code
9637 , p_transaction_coa_id => l_adr_transaction_coa_id
9638 , p_accounting_coa_id => l_adr_accounting_coa_id
9639 , p_adr_code => 'CST_DEFAULT'
9640 , p_adr_type_code => 'S'
9641 , p_component_type => l_component_type
9642 , p_component_code => l_component_code
9643 , p_component_type_code => l_component_type_code
9644 , p_component_appl_id => l_component_appl_id
9645 , p_amb_context_code => l_amb_context_code
9646 , p_side => 'NA'
9647 );
9648
9649
9650 --
9651 --
9652 END IF;
9653
9654 --
9655 -- Update the line information that should be overwritten
9656 --
9657 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
9658 p_header_num => 1);
9659 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
9660
9661 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
9662
9663 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
9664 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
9665 END IF;
9666
9667 --
9668 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
9669 --
9670 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
9671 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
9672 ELSE
9673 ---------------------------------------------------------------------------------------------------
9674 -- 4262811a Switch Sign
9675 ---------------------------------------------------------------------------------------------------
9676 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
9677 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
9678 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9679 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
9680 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9681 -- 5132302
9682 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
9683 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9684
9685 END IF;
9686
9687 -- 4955764
9688 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
9689 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
9690
9691
9692 XLA_AE_LINES_PKG.ValidateCurrentLine;
9693 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
9694
9695 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
9696 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
9697 ,p_balance_type_code => l_balance_type_code);
9698
9699 END IF;
9700
9701 -----------------------------------------------------------------------------------------
9702 -- 4262811 Multiperiod Accounting
9703 -----------------------------------------------------------------------------------------
9704 -- No MPA option is assigned.
9705
9706
9707 END IF;
9708 END IF;
9709 --
9710
9711 --
9712 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9713 trace
9714 (p_msg => 'END of AcctLineType_20'
9715 ,p_level => C_LEVEL_PROCEDURE
9716 ,p_module => l_log_module);
9717 END IF;
9718 --
9719 EXCEPTION
9720 WHEN xla_exceptions_pkg.application_exception THEN
9721 RAISE;
9722 WHEN OTHERS THEN
9723 xla_exceptions_pkg.raise_message
9724 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_20');
9725 END AcctLineType_20;
9726 --
9727
9728 ---------------------------------------
9729 --
9730 -- PRIVATE FUNCTION
9731 -- AcctLineType_21
9732 --
9733 ---------------------------------------
9734 PROCEDURE AcctLineType_21 (
9735 p_application_id IN NUMBER
9736 ,p_event_id IN NUMBER
9737 ,p_calculate_acctd_flag IN VARCHAR2
9738 ,p_calculate_g_l_flag IN VARCHAR2
9739 ,p_actual_flag IN OUT VARCHAR2
9740 ,p_balance_type_code OUT VARCHAR2
9741 ,p_gain_or_loss_ref OUT VARCHAR2
9742
9743 --Cost Management Default Account
9744 , p_source_4 IN NUMBER
9745 --DISTRIBUTION_IDENTIFIER
9746 , p_source_11 IN NUMBER
9747 --Distribution Type
9748 , p_source_12 IN VARCHAR2
9749 , p_source_12_meaning IN VARCHAR2
9750 --Entered Currency Code
9751 , p_source_15 IN VARCHAR2
9752 --Entered Amount
9753 , p_source_18 IN NUMBER
9754 --Currency Conversion Date
9755 , p_source_19 IN DATE
9756 --Currency Conversion Rate
9757 , p_source_20 IN NUMBER
9758 --Currency Conversion Type
9759 , p_source_21 IN VARCHAR2
9760 --Accounted Amount
9761 , p_source_22 IN NUMBER
9762 --Accounting Line Type
9763 , p_source_24 IN NUMBER
9764 )
9765 IS
9766
9767 l_component_type VARCHAR2(80);
9768 l_component_code VARCHAR2(30);
9769 l_component_type_code VARCHAR2(1);
9770 l_component_appl_id INTEGER;
9771 l_amb_context_code VARCHAR2(30);
9772 l_entity_code VARCHAR2(30);
9773 l_event_class_code VARCHAR2(30);
9774 l_ae_header_id NUMBER;
9775 l_event_type_code VARCHAR2(30);
9776 l_line_definition_code VARCHAR2(30);
9777 l_line_definition_owner_code VARCHAR2(1);
9778 --
9779 -- adr variables
9780 l_segment VARCHAR2(30);
9781 l_ccid NUMBER;
9782 l_adr_transaction_coa_id NUMBER;
9783 l_adr_accounting_coa_id NUMBER;
9784 l_adr_flexfield_segment_code VARCHAR2(30);
9785 l_adr_flex_value_set_id NUMBER;
9786 l_adr_value_type_code VARCHAR2(30);
9787 l_adr_value_combination_id NUMBER;
9788 l_adr_value_segment_code VARCHAR2(30);
9789
9790 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
9791 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
9792 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
9793 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
9794
9795 -- 4262811 Variables ------------------------------------------------------------------------------------------
9796 l_entered_amt_idx NUMBER;
9797 l_accted_amt_idx NUMBER;
9798 l_acc_rev_flag VARCHAR2(1);
9799 l_accrual_line_num NUMBER;
9800 l_tmp_amt NUMBER;
9801 l_acc_rev_natural_side_code VARCHAR2(1);
9802
9803 l_num_entries NUMBER;
9804 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
9805 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
9806 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
9807 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
9808 l_recog_line_1 NUMBER;
9809 l_recog_line_2 NUMBER;
9810
9811 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
9812 l_bflow_applied_to_amt NUMBER; -- 5132302
9813 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
9814
9815 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
9816
9817 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
9818 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
9819
9820 ---------------------------------------------------------------------------------------------------------------
9821
9822
9823 --
9824 -- bulk performance
9825 --
9826 l_balance_type_code VARCHAR2(1);
9827 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
9828 l_log_module VARCHAR2(240);
9829
9830 --
9831 -- Upgrade strategy
9832 --
9833 l_actual_upg_option VARCHAR2(1);
9834 l_enc_upg_option VARCHAR2(1);
9835
9836 --
9837 BEGIN
9838 --
9839 IF g_log_enabled THEN
9840 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_21';
9841 END IF;
9842 --
9843 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9844
9845 trace
9846 (p_msg => 'BEGIN of AcctLineType_21'
9847 ,p_level => C_LEVEL_PROCEDURE
9848 ,p_module => l_log_module);
9849
9850 END IF;
9851 --
9852 l_component_type := 'AMB_JLT';
9853 l_component_code := 'COST_UPDATE_ADJUSTMENT';
9854 l_component_type_code := 'S';
9855 l_component_appl_id := 707;
9856 l_amb_context_code := 'DEFAULT';
9857 l_entity_code := 'WIP_ACCOUNTING_EVENTS';
9858 l_event_class_code := 'WIP_COST_UPD';
9859 l_event_type_code := 'WIP_COST_UPD_ALL';
9860 l_line_definition_owner_code := 'S';
9861 l_line_definition_code := 'COST_UPDATE';
9862 --
9863 l_balance_type_code := 'A';
9864 l_segment := NULL;
9865 l_ccid := NULL;
9866 l_adr_transaction_coa_id := NULL;
9867 l_adr_accounting_coa_id := NULL;
9868 l_adr_flexfield_segment_code := NULL;
9869 l_adr_flex_value_set_id := NULL;
9870 l_adr_value_type_code := NULL;
9871 l_adr_value_combination_id := NULL;
9872 l_adr_value_segment_code := NULL;
9873
9874 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
9875 l_bflow_class_code := ''; -- 4219869 Business Flow
9876 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
9877 l_budgetary_control_flag := 'N';
9878
9879 l_bflow_applied_to_amt_idx := NULL; -- 5132302
9880 l_bflow_applied_to_amt := NULL; -- 5132302
9881 l_entered_amt_idx := NULL; -- 4262811
9882 l_accted_amt_idx := NULL; -- 4262811
9883 l_acc_rev_flag := NULL; -- 4262811
9884 l_accrual_line_num := NULL; -- 4262811
9885 l_tmp_amt := NULL; -- 4262811
9886 --
9887
9888 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
9889 l_balance_type_code <> 'B' THEN
9890 IF NVL(p_source_24,9E125) = 2
9891 THEN
9892
9893 --
9894 XLA_AE_LINES_PKG.SetNewLine;
9895
9896 p_balance_type_code := l_balance_type_code;
9897 -- set the flag so later we will know whether the gain loss line needs to be created
9898
9899 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
9900 p_actual_flag :='A';
9901 END IF;
9902
9903 --
9904 -- bulk performance
9905 --
9906 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
9907 p_header_num => 0); -- 4262811
9908 --
9909 -- set accounting line options
9910 --
9911 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
9912 p_natural_side_code => 'D'
9913 , p_gain_or_loss_flag => 'N'
9914 , p_gl_transfer_mode_code => 'S'
9915 , p_acct_entry_type_code => 'A'
9916 , p_switch_side_flag => 'Y'
9917 , p_merge_duplicate_code => 'N'
9918 );
9919 --
9920 l_acc_rev_natural_side_code := 'C'; -- 4262811
9921 --
9922 --
9923 -- set accounting line type info
9924 --
9925 xla_ae_lines_pkg.SetAcctLineType
9926 (p_component_type => l_component_type
9927 ,p_event_type_code => l_event_type_code
9928 ,p_line_definition_owner_code => l_line_definition_owner_code
9929 ,p_line_definition_code => l_line_definition_code
9930 ,p_accounting_line_code => l_component_code
9931 ,p_accounting_line_type_code => l_component_type_code
9932 ,p_accounting_line_appl_id => l_component_appl_id
9933 ,p_amb_context_code => l_amb_context_code
9934 ,p_entity_code => l_entity_code
9935 ,p_event_class_code => l_event_class_code);
9936 --
9937 -- set accounting class
9938 --
9939 xla_ae_lines_pkg.SetAcctClass(
9940 p_accounting_class_code => 'COST_UPDATE_ADJUSTMENT'
9941 , p_ae_header_id => l_ae_header_id
9942 );
9943
9944 --
9945 -- set rounding class
9946 --
9947 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
9948 'COST_UPDATE_ADJUSTMENT';
9949
9950 --
9951 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
9952 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
9953 --
9954 -- bulk performance
9955 --
9956 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
9957
9958 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
9959 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
9960
9961 -- 4955764
9962 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
9963 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
9964
9965 -- 4458381 Public Sector Enh
9966
9967 --
9968 -- set accounting attributes for the line type
9969 --
9970 l_entered_amt_idx := 3;
9971 l_accted_amt_idx := 8;
9972 l_bflow_applied_to_amt_idx := NULL; -- 5132302
9973 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
9974 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
9975 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
9976 l_rec_acct_attrs.array_char_value(2) := p_source_12;
9977 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
9978 l_rec_acct_attrs.array_num_value(3) := p_source_18;
9979 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
9980 l_rec_acct_attrs.array_char_value(4) := p_source_15;
9981 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
9982 l_rec_acct_attrs.array_date_value(5) := p_source_19;
9983 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
9984 l_rec_acct_attrs.array_num_value(6) := p_source_20;
9985 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
9986 l_rec_acct_attrs.array_char_value(7) := p_source_21;
9987 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
9988 l_rec_acct_attrs.array_num_value(8) := p_source_22;
9989
9990 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
9991 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
9992
9993 ---------------------------------------------------------------------------------------------------------------
9994 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
9995 ---------------------------------------------------------------------------------------------------------------
9996 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
9997
9998 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
9999 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
10000
10001 IF xla_accounting_cache_pkg.GetValueChar
10002 (p_source_code => 'LEDGER_CATEGORY_CODE'
10003 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
10004 AND l_bflow_method_code = 'PRIOR_ENTRY'
10005 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
10006 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
10007 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
10008 )
10009 THEN
10010 xla_ae_lines_pkg.BflowUpgEntry
10011 (p_business_method_code => l_bflow_method_code
10012 ,p_business_class_code => l_bflow_class_code
10013 ,p_balance_type => l_balance_type_code);
10014 ELSE
10015 NULL;
10016 -- No business flow processing for business flow method of NONE.
10017 END IF;
10018
10019 --
10020 -- call analytical criteria
10021 --
10022
10023 --
10024 -- call description
10025 --
10026 -- No description or it is inherited.
10027 --
10028 -- call ADRs
10029 -- Bug 4922099
10030 --
10031 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
10032 (NVL(l_actual_upg_option, 'N') = 'O') OR
10033 (NVL(l_enc_upg_option, 'N') = 'O')
10034 )
10035 THEN
10036 NULL;
10037 --
10038 --
10039
10040 l_ccid := AcctDerRule_4(
10041 p_application_id => p_application_id
10042 , p_ae_header_id => l_ae_header_id
10043 , p_source_4 => p_source_4
10044 , x_transaction_coa_id => l_adr_transaction_coa_id
10045 , x_accounting_coa_id => l_adr_accounting_coa_id
10046 , x_value_type_code => l_adr_value_type_code
10047 , p_side => 'NA'
10048 );
10049
10050 xla_ae_lines_pkg.set_ccid(
10051 p_code_combination_id => l_ccid
10052 , p_value_type_code => l_adr_value_type_code
10053 , p_transaction_coa_id => l_adr_transaction_coa_id
10054 , p_accounting_coa_id => l_adr_accounting_coa_id
10055 , p_adr_code => 'CST_DEFAULT'
10056 , p_adr_type_code => 'S'
10057 , p_component_type => l_component_type
10058 , p_component_code => l_component_code
10059 , p_component_type_code => l_component_type_code
10060 , p_component_appl_id => l_component_appl_id
10061 , p_amb_context_code => l_amb_context_code
10062 , p_side => 'NA'
10063 );
10064
10065
10066 --
10067 --
10068 END IF;
10069 --
10070 -- Bug 4922099
10071 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
10072 (NVL(l_enc_upg_option, 'N') = 'O')
10073 ) AND
10074 (l_bflow_method_code = 'PRIOR_ENTRY')
10075 )
10076 THEN
10077 IF
10078 --
10079 1 = 2
10080 --
10081 THEN
10082 xla_accounting_err_pkg.build_message
10083 (p_appli_s_name => 'XLA'
10084 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
10085 ,p_token_1 => 'LINE_NUMBER'
10086 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
10087 ,p_token_2 => 'LINE_TYPE_NAME'
10088 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
10089 l_component_type
10090 ,l_component_code
10091 ,l_component_type_code
10092 ,l_component_appl_id
10093 ,l_amb_context_code
10094 ,l_entity_code
10095 ,l_event_class_code
10096 )
10097 ,p_token_3 => 'OWNER'
10098 ,p_value_3 => xla_lookups_pkg.get_meaning(
10099 p_lookup_type => 'XLA_OWNER_TYPE'
10100 ,p_lookup_code => l_component_type_code
10101 )
10102 ,p_token_4 => 'PRODUCT_NAME'
10103 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
10104 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
10105 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
10106 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
10107 ,p_ae_header_id => NULL
10108 );
10109
10110 IF (C_LEVEL_ERROR>= g_log_level) THEN
10111 trace
10112 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
10113 ,p_level => C_LEVEL_ERROR
10114 ,p_module => l_log_module);
10115 END IF;
10116 END IF;
10117 END IF;
10118 --
10119 --
10120 ------------------------------------------------------------------------------------------------
10121 -- 4219869 Business Flow
10122 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
10123 -- Prior Entry. Currently, the following code is always generated.
10124 ------------------------------------------------------------------------------------------------
10125 XLA_AE_LINES_PKG.ValidateCurrentLine;
10126
10127 ------------------------------------------------------------------------------------
10128 -- 4219869 Business Flow
10129 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
10130 ------------------------------------------------------------------------------------
10131 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
10132
10133 ----------------------------------------------------------------------------------
10134 -- 4219869 Business Flow
10135 -- Update journal entry status -- Need to generate this within IF <condition>
10136 ----------------------------------------------------------------------------------
10137 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
10138 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
10139 ,p_balance_type_code => l_balance_type_code
10140 );
10141
10142 -------------------------------------------------------------------------------------------
10143 -- 4262811 - Generate the Accrual Reversal lines
10144 -------------------------------------------------------------------------------------------
10145 BEGIN
10146 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
10147 (g_array_event(p_event_id).array_value_num('header_index'));
10148 IF l_acc_rev_flag IS NULL THEN
10149 l_acc_rev_flag := 'N';
10150 END IF;
10151 EXCEPTION
10152 WHEN OTHERS THEN
10153 l_acc_rev_flag := 'N';
10154 END;
10155 --
10156 IF (l_acc_rev_flag = 'Y') THEN
10157
10158 -- 4645092 ------------------------------------------------------------------------------
10159 -- To allow MPA report to determine if it should generate report process
10160 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
10161 ------------------------------------------------------------------------------------------
10162
10163 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
10164 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
10165 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
10166 -- call ADRs
10167 -- Bug 4922099
10168 --
10169 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
10170 (NVL(l_actual_upg_option, 'N') = 'O') OR
10171 (NVL(l_enc_upg_option, 'N') = 'O')
10172 )
10173 THEN
10174 NULL;
10175 --
10176 --
10177
10178 l_ccid := AcctDerRule_4(
10179 p_application_id => p_application_id
10180 , p_ae_header_id => l_ae_header_id
10181 , p_source_4 => p_source_4
10182 , x_transaction_coa_id => l_adr_transaction_coa_id
10183 , x_accounting_coa_id => l_adr_accounting_coa_id
10184 , x_value_type_code => l_adr_value_type_code
10185 , p_side => 'NA'
10186 );
10187
10188 xla_ae_lines_pkg.set_ccid(
10189 p_code_combination_id => l_ccid
10190 , p_value_type_code => l_adr_value_type_code
10191 , p_transaction_coa_id => l_adr_transaction_coa_id
10192 , p_accounting_coa_id => l_adr_accounting_coa_id
10193 , p_adr_code => 'CST_DEFAULT'
10194 , p_adr_type_code => 'S'
10195 , p_component_type => l_component_type
10196 , p_component_code => l_component_code
10197 , p_component_type_code => l_component_type_code
10198 , p_component_appl_id => l_component_appl_id
10199 , p_amb_context_code => l_amb_context_code
10200 , p_side => 'NA'
10201 );
10202
10203
10204 --
10205 --
10206 END IF;
10207
10208 --
10209 -- Update the line information that should be overwritten
10210 --
10211 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
10212 p_header_num => 1);
10213 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
10214
10215 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
10216
10217 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
10218 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
10219 END IF;
10220
10221 --
10222 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
10223 --
10224 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
10225 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
10226 ELSE
10227 ---------------------------------------------------------------------------------------------------
10228 -- 4262811a Switch Sign
10229 ---------------------------------------------------------------------------------------------------
10230 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
10231 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
10232 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10233 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
10234 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10235 -- 5132302
10236 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
10237 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10238
10239 END IF;
10240
10241 -- 4955764
10242 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
10243 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
10244
10245
10246 XLA_AE_LINES_PKG.ValidateCurrentLine;
10247 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
10248
10249 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
10250 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
10251 ,p_balance_type_code => l_balance_type_code);
10252
10253 END IF;
10254
10255 -----------------------------------------------------------------------------------------
10256 -- 4262811 Multiperiod Accounting
10257 -----------------------------------------------------------------------------------------
10258 -- No MPA option is assigned.
10259
10260
10261 END IF;
10262 END IF;
10263 --
10264
10265 --
10266 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
10267 trace
10268 (p_msg => 'END of AcctLineType_21'
10269 ,p_level => C_LEVEL_PROCEDURE
10270 ,p_module => l_log_module);
10271 END IF;
10272 --
10273 EXCEPTION
10274 WHEN xla_exceptions_pkg.application_exception THEN
10275 RAISE;
10276 WHEN OTHERS THEN
10277 xla_exceptions_pkg.raise_message
10278 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_21');
10279 END AcctLineType_21;
10280 --
10281
10282 ---------------------------------------
10283 --
10284 -- PRIVATE FUNCTION
10285 -- AcctLineType_22
10286 --
10287 ---------------------------------------
10288 PROCEDURE AcctLineType_22 (
10289 p_application_id IN NUMBER
10290 ,p_event_id IN NUMBER
10291 ,p_calculate_acctd_flag IN VARCHAR2
10292 ,p_calculate_g_l_flag IN VARCHAR2
10293 ,p_actual_flag IN OUT VARCHAR2
10294 ,p_balance_type_code OUT VARCHAR2
10295 ,p_gain_or_loss_ref OUT VARCHAR2
10296
10297 --Cost Management Default Account
10298 , p_source_4 IN NUMBER
10299 --DISTRIBUTION_IDENTIFIER
10300 , p_source_11 IN NUMBER
10301 --Distribution Type
10302 , p_source_12 IN VARCHAR2
10303 , p_source_12_meaning IN VARCHAR2
10304 --Entered Currency Code
10305 , p_source_15 IN VARCHAR2
10306 --Entered Amount
10307 , p_source_18 IN NUMBER
10308 --Currency Conversion Date
10309 , p_source_19 IN DATE
10310 --Currency Conversion Rate
10311 , p_source_20 IN NUMBER
10312 --Currency Conversion Type
10313 , p_source_21 IN VARCHAR2
10314 --Accounted Amount
10315 , p_source_22 IN NUMBER
10316 --Accounting Line Type
10317 , p_source_24 IN NUMBER
10318 )
10319 IS
10320
10321 l_component_type VARCHAR2(80);
10322 l_component_code VARCHAR2(30);
10323 l_component_type_code VARCHAR2(1);
10324 l_component_appl_id INTEGER;
10325 l_amb_context_code VARCHAR2(30);
10326 l_entity_code VARCHAR2(30);
10327 l_event_class_code VARCHAR2(30);
10328 l_ae_header_id NUMBER;
10329 l_event_type_code VARCHAR2(30);
10330 l_line_definition_code VARCHAR2(30);
10331 l_line_definition_owner_code VARCHAR2(1);
10332 --
10333 -- adr variables
10334 l_segment VARCHAR2(30);
10335 l_ccid NUMBER;
10336 l_adr_transaction_coa_id NUMBER;
10337 l_adr_accounting_coa_id NUMBER;
10338 l_adr_flexfield_segment_code VARCHAR2(30);
10339 l_adr_flex_value_set_id NUMBER;
10340 l_adr_value_type_code VARCHAR2(30);
10341 l_adr_value_combination_id NUMBER;
10342 l_adr_value_segment_code VARCHAR2(30);
10343
10344 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
10345 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
10346 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
10347 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
10348
10349 -- 4262811 Variables ------------------------------------------------------------------------------------------
10350 l_entered_amt_idx NUMBER;
10351 l_accted_amt_idx NUMBER;
10352 l_acc_rev_flag VARCHAR2(1);
10353 l_accrual_line_num NUMBER;
10354 l_tmp_amt NUMBER;
10355 l_acc_rev_natural_side_code VARCHAR2(1);
10356
10357 l_num_entries NUMBER;
10358 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
10359 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
10360 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
10361 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
10362 l_recog_line_1 NUMBER;
10363 l_recog_line_2 NUMBER;
10364
10365 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
10366 l_bflow_applied_to_amt NUMBER; -- 5132302
10367 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
10368
10369 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
10370
10371 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
10372 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
10373
10374 ---------------------------------------------------------------------------------------------------------------
10375
10376
10377 --
10378 -- bulk performance
10379 --
10380 l_balance_type_code VARCHAR2(1);
10381 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
10382 l_log_module VARCHAR2(240);
10383
10384 --
10385 -- Upgrade strategy
10386 --
10387 l_actual_upg_option VARCHAR2(1);
10388 l_enc_upg_option VARCHAR2(1);
10389
10390 --
10391 BEGIN
10392 --
10393 IF g_log_enabled THEN
10394 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_22';
10395 END IF;
10396 --
10397 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
10398
10399 trace
10400 (p_msg => 'BEGIN of AcctLineType_22'
10401 ,p_level => C_LEVEL_PROCEDURE
10402 ,p_module => l_log_module);
10403
10404 END IF;
10405 --
10406 l_component_type := 'AMB_JLT';
10407 l_component_code := 'COST_UPDATE_ADJUSTMENT';
10408 l_component_type_code := 'S';
10409 l_component_appl_id := 707;
10410 l_amb_context_code := 'DEFAULT';
10411 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
10412 l_event_class_code := 'USER_DEFINE';
10413 l_event_type_code := 'UIPV_TXFR';
10414 l_line_definition_owner_code := 'S';
10415 l_line_definition_code := 'USER_IPV_TXFR';
10416 --
10417 l_balance_type_code := 'A';
10418 l_segment := NULL;
10419 l_ccid := NULL;
10420 l_adr_transaction_coa_id := NULL;
10421 l_adr_accounting_coa_id := NULL;
10422 l_adr_flexfield_segment_code := NULL;
10423 l_adr_flex_value_set_id := NULL;
10424 l_adr_value_type_code := NULL;
10425 l_adr_value_combination_id := NULL;
10426 l_adr_value_segment_code := NULL;
10427
10428 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
10429 l_bflow_class_code := ''; -- 4219869 Business Flow
10430 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
10431 l_budgetary_control_flag := 'N';
10432
10433 l_bflow_applied_to_amt_idx := NULL; -- 5132302
10434 l_bflow_applied_to_amt := NULL; -- 5132302
10435 l_entered_amt_idx := NULL; -- 4262811
10436 l_accted_amt_idx := NULL; -- 4262811
10437 l_acc_rev_flag := NULL; -- 4262811
10438 l_accrual_line_num := NULL; -- 4262811
10439 l_tmp_amt := NULL; -- 4262811
10440 --
10441
10442 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
10443 l_balance_type_code <> 'B' THEN
10444 IF NVL(p_source_24,9E125) = 2
10445 THEN
10446
10447 --
10448 XLA_AE_LINES_PKG.SetNewLine;
10449
10450 p_balance_type_code := l_balance_type_code;
10451 -- set the flag so later we will know whether the gain loss line needs to be created
10452
10453 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
10454 p_actual_flag :='A';
10455 END IF;
10456
10457 --
10458 -- bulk performance
10459 --
10460 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
10461 p_header_num => 0); -- 4262811
10462 --
10463 -- set accounting line options
10464 --
10465 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
10466 p_natural_side_code => 'D'
10467 , p_gain_or_loss_flag => 'N'
10468 , p_gl_transfer_mode_code => 'S'
10469 , p_acct_entry_type_code => 'A'
10470 , p_switch_side_flag => 'Y'
10471 , p_merge_duplicate_code => 'N'
10472 );
10473 --
10474 l_acc_rev_natural_side_code := 'C'; -- 4262811
10475 --
10476 --
10477 -- set accounting line type info
10478 --
10479 xla_ae_lines_pkg.SetAcctLineType
10480 (p_component_type => l_component_type
10481 ,p_event_type_code => l_event_type_code
10482 ,p_line_definition_owner_code => l_line_definition_owner_code
10483 ,p_line_definition_code => l_line_definition_code
10484 ,p_accounting_line_code => l_component_code
10485 ,p_accounting_line_type_code => l_component_type_code
10486 ,p_accounting_line_appl_id => l_component_appl_id
10487 ,p_amb_context_code => l_amb_context_code
10488 ,p_entity_code => l_entity_code
10489 ,p_event_class_code => l_event_class_code);
10490 --
10491 -- set accounting class
10492 --
10493 xla_ae_lines_pkg.SetAcctClass(
10494 p_accounting_class_code => 'COST_UPDATE_ADJUSTMENT'
10495 , p_ae_header_id => l_ae_header_id
10496 );
10497
10498 --
10499 -- set rounding class
10500 --
10501 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
10502 'COST_UPDATE_ADJUSTMENT';
10503
10504 --
10505 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
10506 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
10507 --
10508 -- bulk performance
10509 --
10510 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
10511
10512 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
10513 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
10514
10515 -- 4955764
10516 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
10517 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
10518
10519 -- 4458381 Public Sector Enh
10520
10521 --
10522 -- set accounting attributes for the line type
10523 --
10524 l_entered_amt_idx := 3;
10525 l_accted_amt_idx := 8;
10526 l_bflow_applied_to_amt_idx := NULL; -- 5132302
10527 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
10528 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
10529 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
10530 l_rec_acct_attrs.array_char_value(2) := p_source_12;
10531 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
10532 l_rec_acct_attrs.array_num_value(3) := p_source_18;
10533 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
10534 l_rec_acct_attrs.array_char_value(4) := p_source_15;
10535 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
10536 l_rec_acct_attrs.array_date_value(5) := p_source_19;
10537 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
10538 l_rec_acct_attrs.array_num_value(6) := p_source_20;
10539 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
10540 l_rec_acct_attrs.array_char_value(7) := p_source_21;
10541 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
10542 l_rec_acct_attrs.array_num_value(8) := p_source_22;
10543
10544 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
10545 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
10546
10547 ---------------------------------------------------------------------------------------------------------------
10548 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
10549 ---------------------------------------------------------------------------------------------------------------
10550 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
10551
10552 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
10553 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
10554
10555 IF xla_accounting_cache_pkg.GetValueChar
10556 (p_source_code => 'LEDGER_CATEGORY_CODE'
10557 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
10558 AND l_bflow_method_code = 'PRIOR_ENTRY'
10559 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
10560 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
10561 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
10562 )
10563 THEN
10564 xla_ae_lines_pkg.BflowUpgEntry
10565 (p_business_method_code => l_bflow_method_code
10566 ,p_business_class_code => l_bflow_class_code
10567 ,p_balance_type => l_balance_type_code);
10568 ELSE
10569 NULL;
10570 -- No business flow processing for business flow method of NONE.
10571 END IF;
10572
10573 --
10574 -- call analytical criteria
10575 --
10576
10577 --
10578 -- call description
10579 --
10580 -- No description or it is inherited.
10581 --
10582 -- call ADRs
10583 -- Bug 4922099
10584 --
10585 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
10586 (NVL(l_actual_upg_option, 'N') = 'O') OR
10587 (NVL(l_enc_upg_option, 'N') = 'O')
10588 )
10589 THEN
10590 NULL;
10591 --
10592 --
10593
10594 l_ccid := AcctDerRule_4(
10595 p_application_id => p_application_id
10596 , p_ae_header_id => l_ae_header_id
10597 , p_source_4 => p_source_4
10598 , x_transaction_coa_id => l_adr_transaction_coa_id
10599 , x_accounting_coa_id => l_adr_accounting_coa_id
10600 , x_value_type_code => l_adr_value_type_code
10601 , p_side => 'NA'
10602 );
10603
10604 xla_ae_lines_pkg.set_ccid(
10605 p_code_combination_id => l_ccid
10606 , p_value_type_code => l_adr_value_type_code
10607 , p_transaction_coa_id => l_adr_transaction_coa_id
10608 , p_accounting_coa_id => l_adr_accounting_coa_id
10609 , p_adr_code => 'CST_DEFAULT'
10610 , p_adr_type_code => 'S'
10611 , p_component_type => l_component_type
10612 , p_component_code => l_component_code
10613 , p_component_type_code => l_component_type_code
10614 , p_component_appl_id => l_component_appl_id
10615 , p_amb_context_code => l_amb_context_code
10616 , p_side => 'NA'
10617 );
10618
10619
10620 --
10621 --
10622 END IF;
10623 --
10624 -- Bug 4922099
10625 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
10626 (NVL(l_enc_upg_option, 'N') = 'O')
10627 ) AND
10628 (l_bflow_method_code = 'PRIOR_ENTRY')
10629 )
10630 THEN
10631 IF
10632 --
10633 1 = 2
10634 --
10635 THEN
10636 xla_accounting_err_pkg.build_message
10637 (p_appli_s_name => 'XLA'
10638 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
10639 ,p_token_1 => 'LINE_NUMBER'
10640 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
10641 ,p_token_2 => 'LINE_TYPE_NAME'
10642 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
10643 l_component_type
10644 ,l_component_code
10645 ,l_component_type_code
10646 ,l_component_appl_id
10647 ,l_amb_context_code
10648 ,l_entity_code
10649 ,l_event_class_code
10650 )
10651 ,p_token_3 => 'OWNER'
10652 ,p_value_3 => xla_lookups_pkg.get_meaning(
10653 p_lookup_type => 'XLA_OWNER_TYPE'
10654 ,p_lookup_code => l_component_type_code
10655 )
10656 ,p_token_4 => 'PRODUCT_NAME'
10657 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
10658 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
10659 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
10660 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
10661 ,p_ae_header_id => NULL
10662 );
10663
10664 IF (C_LEVEL_ERROR>= g_log_level) THEN
10665 trace
10666 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
10667 ,p_level => C_LEVEL_ERROR
10668 ,p_module => l_log_module);
10669 END IF;
10670 END IF;
10671 END IF;
10672 --
10673 --
10674 ------------------------------------------------------------------------------------------------
10675 -- 4219869 Business Flow
10676 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
10677 -- Prior Entry. Currently, the following code is always generated.
10678 ------------------------------------------------------------------------------------------------
10679 XLA_AE_LINES_PKG.ValidateCurrentLine;
10680
10681 ------------------------------------------------------------------------------------
10682 -- 4219869 Business Flow
10683 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
10684 ------------------------------------------------------------------------------------
10685 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
10686
10687 ----------------------------------------------------------------------------------
10688 -- 4219869 Business Flow
10689 -- Update journal entry status -- Need to generate this within IF <condition>
10690 ----------------------------------------------------------------------------------
10691 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
10692 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
10693 ,p_balance_type_code => l_balance_type_code
10694 );
10695
10696 -------------------------------------------------------------------------------------------
10697 -- 4262811 - Generate the Accrual Reversal lines
10698 -------------------------------------------------------------------------------------------
10699 BEGIN
10700 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
10701 (g_array_event(p_event_id).array_value_num('header_index'));
10702 IF l_acc_rev_flag IS NULL THEN
10703 l_acc_rev_flag := 'N';
10704 END IF;
10705 EXCEPTION
10706 WHEN OTHERS THEN
10707 l_acc_rev_flag := 'N';
10708 END;
10709 --
10710 IF (l_acc_rev_flag = 'Y') THEN
10711
10712 -- 4645092 ------------------------------------------------------------------------------
10713 -- To allow MPA report to determine if it should generate report process
10714 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
10715 ------------------------------------------------------------------------------------------
10716
10717 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
10718 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
10719 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
10720 -- call ADRs
10721 -- Bug 4922099
10722 --
10723 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
10724 (NVL(l_actual_upg_option, 'N') = 'O') OR
10725 (NVL(l_enc_upg_option, 'N') = 'O')
10726 )
10727 THEN
10728 NULL;
10729 --
10730 --
10731
10732 l_ccid := AcctDerRule_4(
10733 p_application_id => p_application_id
10734 , p_ae_header_id => l_ae_header_id
10735 , p_source_4 => p_source_4
10736 , x_transaction_coa_id => l_adr_transaction_coa_id
10737 , x_accounting_coa_id => l_adr_accounting_coa_id
10738 , x_value_type_code => l_adr_value_type_code
10739 , p_side => 'NA'
10740 );
10741
10742 xla_ae_lines_pkg.set_ccid(
10743 p_code_combination_id => l_ccid
10744 , p_value_type_code => l_adr_value_type_code
10745 , p_transaction_coa_id => l_adr_transaction_coa_id
10746 , p_accounting_coa_id => l_adr_accounting_coa_id
10747 , p_adr_code => 'CST_DEFAULT'
10748 , p_adr_type_code => 'S'
10749 , p_component_type => l_component_type
10750 , p_component_code => l_component_code
10751 , p_component_type_code => l_component_type_code
10752 , p_component_appl_id => l_component_appl_id
10753 , p_amb_context_code => l_amb_context_code
10754 , p_side => 'NA'
10755 );
10756
10757
10758 --
10759 --
10760 END IF;
10761
10762 --
10763 -- Update the line information that should be overwritten
10764 --
10765 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
10766 p_header_num => 1);
10767 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
10768
10769 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
10770
10771 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
10772 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
10773 END IF;
10774
10775 --
10776 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
10777 --
10778 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
10779 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
10780 ELSE
10781 ---------------------------------------------------------------------------------------------------
10782 -- 4262811a Switch Sign
10783 ---------------------------------------------------------------------------------------------------
10784 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
10785 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
10786 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10787 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
10788 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10789 -- 5132302
10790 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
10791 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10792
10793 END IF;
10794
10795 -- 4955764
10796 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
10797 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
10798
10799
10800 XLA_AE_LINES_PKG.ValidateCurrentLine;
10801 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
10802
10803 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
10804 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
10805 ,p_balance_type_code => l_balance_type_code);
10806
10807 END IF;
10808
10809 -----------------------------------------------------------------------------------------
10810 -- 4262811 Multiperiod Accounting
10811 -----------------------------------------------------------------------------------------
10812 -- No MPA option is assigned.
10813
10814
10815 END IF;
10816 END IF;
10817 --
10818
10819 --
10820 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
10821 trace
10822 (p_msg => 'END of AcctLineType_22'
10823 ,p_level => C_LEVEL_PROCEDURE
10824 ,p_module => l_log_module);
10825 END IF;
10826 --
10827 EXCEPTION
10828 WHEN xla_exceptions_pkg.application_exception THEN
10829 RAISE;
10830 WHEN OTHERS THEN
10831 xla_exceptions_pkg.raise_message
10832 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_22');
10833 END AcctLineType_22;
10834 --
10835
10836 ---------------------------------------
10837 --
10838 -- PRIVATE FUNCTION
10839 -- AcctLineType_23
10840 --
10841 ---------------------------------------
10842 PROCEDURE AcctLineType_23 (
10843 p_application_id IN NUMBER
10844 ,p_event_id IN NUMBER
10845 ,p_calculate_acctd_flag IN VARCHAR2
10846 ,p_calculate_g_l_flag IN VARCHAR2
10847 ,p_actual_flag IN OUT VARCHAR2
10848 ,p_balance_type_code OUT VARCHAR2
10849 ,p_gain_or_loss_ref OUT VARCHAR2
10850
10851 --Cost Management Default Account
10852 , p_source_4 IN NUMBER
10853 --DISTRIBUTION_IDENTIFIER
10854 , p_source_11 IN NUMBER
10855 --Distribution Type
10856 , p_source_12 IN VARCHAR2
10857 , p_source_12_meaning IN VARCHAR2
10858 --Entered Currency Code
10859 , p_source_15 IN VARCHAR2
10860 --Entered Amount
10861 , p_source_18 IN NUMBER
10862 --Currency Conversion Date
10863 , p_source_19 IN DATE
10864 --Currency Conversion Rate
10865 , p_source_20 IN NUMBER
10866 --Currency Conversion Type
10867 , p_source_21 IN VARCHAR2
10868 --Accounted Amount
10869 , p_source_22 IN NUMBER
10870 --Accounting Line Type
10871 , p_source_24 IN NUMBER
10872 )
10873 IS
10874
10875 l_component_type VARCHAR2(80);
10876 l_component_code VARCHAR2(30);
10877 l_component_type_code VARCHAR2(1);
10878 l_component_appl_id INTEGER;
10879 l_amb_context_code VARCHAR2(30);
10880 l_entity_code VARCHAR2(30);
10881 l_event_class_code VARCHAR2(30);
10882 l_ae_header_id NUMBER;
10883 l_event_type_code VARCHAR2(30);
10884 l_line_definition_code VARCHAR2(30);
10885 l_line_definition_owner_code VARCHAR2(1);
10886 --
10887 -- adr variables
10888 l_segment VARCHAR2(30);
10889 l_ccid NUMBER;
10890 l_adr_transaction_coa_id NUMBER;
10891 l_adr_accounting_coa_id NUMBER;
10892 l_adr_flexfield_segment_code VARCHAR2(30);
10893 l_adr_flex_value_set_id NUMBER;
10894 l_adr_value_type_code VARCHAR2(30);
10895 l_adr_value_combination_id NUMBER;
10896 l_adr_value_segment_code VARCHAR2(30);
10897
10898 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
10899 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
10900 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
10901 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
10902
10903 -- 4262811 Variables ------------------------------------------------------------------------------------------
10904 l_entered_amt_idx NUMBER;
10905 l_accted_amt_idx NUMBER;
10906 l_acc_rev_flag VARCHAR2(1);
10907 l_accrual_line_num NUMBER;
10908 l_tmp_amt NUMBER;
10909 l_acc_rev_natural_side_code VARCHAR2(1);
10910
10911 l_num_entries NUMBER;
10912 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
10913 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
10914 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
10915 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
10916 l_recog_line_1 NUMBER;
10917 l_recog_line_2 NUMBER;
10918
10919 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
10920 l_bflow_applied_to_amt NUMBER; -- 5132302
10921 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
10922
10923 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
10924
10925 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
10926 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
10927
10928 ---------------------------------------------------------------------------------------------------------------
10929
10930
10931 --
10932 -- bulk performance
10933 --
10934 l_balance_type_code VARCHAR2(1);
10935 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
10936 l_log_module VARCHAR2(240);
10937
10938 --
10939 -- Upgrade strategy
10940 --
10941 l_actual_upg_option VARCHAR2(1);
10942 l_enc_upg_option VARCHAR2(1);
10943
10944 --
10945 BEGIN
10946 --
10947 IF g_log_enabled THEN
10948 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_23';
10949 END IF;
10950 --
10951 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
10952
10953 trace
10954 (p_msg => 'BEGIN of AcctLineType_23'
10955 ,p_level => C_LEVEL_PROCEDURE
10956 ,p_module => l_log_module);
10957
10958 END IF;
10959 --
10960 l_component_type := 'AMB_JLT';
10961 l_component_code := 'COST_UPDATE_ADJUSTMENT';
10962 l_component_type_code := 'S';
10963 l_component_appl_id := 707;
10964 l_amb_context_code := 'DEFAULT';
10965 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
10966 l_event_class_code := 'SALES_ORDER';
10967 l_event_type_code := 'SALES_ORDER_ALL';
10968 l_line_definition_owner_code := 'S';
10969 l_line_definition_code := 'SALES_ORDER';
10970 --
10971 l_balance_type_code := 'A';
10972 l_segment := NULL;
10973 l_ccid := NULL;
10974 l_adr_transaction_coa_id := NULL;
10975 l_adr_accounting_coa_id := NULL;
10976 l_adr_flexfield_segment_code := NULL;
10977 l_adr_flex_value_set_id := NULL;
10978 l_adr_value_type_code := NULL;
10979 l_adr_value_combination_id := NULL;
10980 l_adr_value_segment_code := NULL;
10981
10982 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
10983 l_bflow_class_code := ''; -- 4219869 Business Flow
10984 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
10985 l_budgetary_control_flag := 'N';
10986
10987 l_bflow_applied_to_amt_idx := NULL; -- 5132302
10988 l_bflow_applied_to_amt := NULL; -- 5132302
10989 l_entered_amt_idx := NULL; -- 4262811
10990 l_accted_amt_idx := NULL; -- 4262811
10991 l_acc_rev_flag := NULL; -- 4262811
10992 l_accrual_line_num := NULL; -- 4262811
10993 l_tmp_amt := NULL; -- 4262811
10994 --
10995
10996 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
10997 l_balance_type_code <> 'B' THEN
10998 IF NVL(p_source_24,9E125) = 37
10999 THEN
11000
11001 --
11002 XLA_AE_LINES_PKG.SetNewLine;
11003
11004 p_balance_type_code := l_balance_type_code;
11005 -- set the flag so later we will know whether the gain loss line needs to be created
11006
11007 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
11008 p_actual_flag :='A';
11009 END IF;
11010
11011 --
11012 -- bulk performance
11013 --
11014 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
11015 p_header_num => 0); -- 4262811
11016 --
11017 -- set accounting line options
11018 --
11019 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
11020 p_natural_side_code => 'D'
11021 , p_gain_or_loss_flag => 'N'
11022 , p_gl_transfer_mode_code => 'S'
11023 , p_acct_entry_type_code => 'A'
11024 , p_switch_side_flag => 'Y'
11025 , p_merge_duplicate_code => 'N'
11026 );
11027 --
11028 l_acc_rev_natural_side_code := 'C'; -- 4262811
11029 --
11030 --
11031 -- set accounting line type info
11032 --
11033 xla_ae_lines_pkg.SetAcctLineType
11034 (p_component_type => l_component_type
11035 ,p_event_type_code => l_event_type_code
11036 ,p_line_definition_owner_code => l_line_definition_owner_code
11037 ,p_line_definition_code => l_line_definition_code
11038 ,p_accounting_line_code => l_component_code
11039 ,p_accounting_line_type_code => l_component_type_code
11040 ,p_accounting_line_appl_id => l_component_appl_id
11041 ,p_amb_context_code => l_amb_context_code
11042 ,p_entity_code => l_entity_code
11043 ,p_event_class_code => l_event_class_code);
11044 --
11045 -- set accounting class
11046 --
11047 xla_ae_lines_pkg.SetAcctClass(
11048 p_accounting_class_code => 'COST_UPDATE_ADJUSTMENT'
11049 , p_ae_header_id => l_ae_header_id
11050 );
11051
11052 --
11053 -- set rounding class
11054 --
11055 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
11056 'COST_UPDATE_ADJUSTMENT';
11057
11058 --
11059 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
11060 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
11061 --
11062 -- bulk performance
11063 --
11064 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
11065
11066 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
11067 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
11068
11069 -- 4955764
11070 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
11071 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
11072
11073 -- 4458381 Public Sector Enh
11074
11075 --
11076 -- set accounting attributes for the line type
11077 --
11078 l_entered_amt_idx := 3;
11079 l_accted_amt_idx := 8;
11080 l_bflow_applied_to_amt_idx := NULL; -- 5132302
11081 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
11082 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
11083 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
11084 l_rec_acct_attrs.array_char_value(2) := p_source_12;
11085 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
11086 l_rec_acct_attrs.array_num_value(3) := p_source_18;
11087 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
11088 l_rec_acct_attrs.array_char_value(4) := p_source_15;
11089 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
11090 l_rec_acct_attrs.array_date_value(5) := p_source_19;
11091 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
11092 l_rec_acct_attrs.array_num_value(6) := p_source_20;
11093 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
11094 l_rec_acct_attrs.array_char_value(7) := p_source_21;
11095 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
11096 l_rec_acct_attrs.array_num_value(8) := p_source_22;
11097
11098 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
11099 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
11100
11101 ---------------------------------------------------------------------------------------------------------------
11102 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
11103 ---------------------------------------------------------------------------------------------------------------
11104 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
11105
11106 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
11107 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
11108
11109 IF xla_accounting_cache_pkg.GetValueChar
11110 (p_source_code => 'LEDGER_CATEGORY_CODE'
11111 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
11112 AND l_bflow_method_code = 'PRIOR_ENTRY'
11113 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
11114 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
11115 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
11116 )
11117 THEN
11118 xla_ae_lines_pkg.BflowUpgEntry
11119 (p_business_method_code => l_bflow_method_code
11120 ,p_business_class_code => l_bflow_class_code
11121 ,p_balance_type => l_balance_type_code);
11122 ELSE
11123 NULL;
11124 -- No business flow processing for business flow method of NONE.
11125 END IF;
11126
11127 --
11128 -- call analytical criteria
11129 --
11130
11131 --
11132 -- call description
11133 --
11134 -- No description or it is inherited.
11135 --
11136 -- call ADRs
11137 -- Bug 4922099
11138 --
11139 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
11140 (NVL(l_actual_upg_option, 'N') = 'O') OR
11141 (NVL(l_enc_upg_option, 'N') = 'O')
11142 )
11143 THEN
11144 NULL;
11145 --
11146 --
11147
11148 l_ccid := AcctDerRule_4(
11149 p_application_id => p_application_id
11150 , p_ae_header_id => l_ae_header_id
11151 , p_source_4 => p_source_4
11152 , x_transaction_coa_id => l_adr_transaction_coa_id
11153 , x_accounting_coa_id => l_adr_accounting_coa_id
11154 , x_value_type_code => l_adr_value_type_code
11155 , p_side => 'NA'
11156 );
11157
11158 xla_ae_lines_pkg.set_ccid(
11159 p_code_combination_id => l_ccid
11160 , p_value_type_code => l_adr_value_type_code
11161 , p_transaction_coa_id => l_adr_transaction_coa_id
11162 , p_accounting_coa_id => l_adr_accounting_coa_id
11163 , p_adr_code => 'CST_DEFAULT'
11164 , p_adr_type_code => 'S'
11165 , p_component_type => l_component_type
11166 , p_component_code => l_component_code
11167 , p_component_type_code => l_component_type_code
11168 , p_component_appl_id => l_component_appl_id
11169 , p_amb_context_code => l_amb_context_code
11170 , p_side => 'NA'
11171 );
11172
11173
11174 --
11175 --
11176 END IF;
11177 --
11178 -- Bug 4922099
11179 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
11180 (NVL(l_enc_upg_option, 'N') = 'O')
11181 ) AND
11182 (l_bflow_method_code = 'PRIOR_ENTRY')
11183 )
11184 THEN
11185 IF
11186 --
11187 1 = 2
11188 --
11189 THEN
11190 xla_accounting_err_pkg.build_message
11191 (p_appli_s_name => 'XLA'
11192 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
11193 ,p_token_1 => 'LINE_NUMBER'
11194 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
11195 ,p_token_2 => 'LINE_TYPE_NAME'
11196 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
11197 l_component_type
11198 ,l_component_code
11199 ,l_component_type_code
11200 ,l_component_appl_id
11201 ,l_amb_context_code
11202 ,l_entity_code
11203 ,l_event_class_code
11204 )
11205 ,p_token_3 => 'OWNER'
11206 ,p_value_3 => xla_lookups_pkg.get_meaning(
11207 p_lookup_type => 'XLA_OWNER_TYPE'
11208 ,p_lookup_code => l_component_type_code
11209 )
11210 ,p_token_4 => 'PRODUCT_NAME'
11211 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
11212 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
11213 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
11214 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
11215 ,p_ae_header_id => NULL
11216 );
11217
11218 IF (C_LEVEL_ERROR>= g_log_level) THEN
11219 trace
11220 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
11221 ,p_level => C_LEVEL_ERROR
11222 ,p_module => l_log_module);
11223 END IF;
11224 END IF;
11225 END IF;
11226 --
11227 --
11228 ------------------------------------------------------------------------------------------------
11229 -- 4219869 Business Flow
11230 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
11231 -- Prior Entry. Currently, the following code is always generated.
11232 ------------------------------------------------------------------------------------------------
11233 XLA_AE_LINES_PKG.ValidateCurrentLine;
11234
11235 ------------------------------------------------------------------------------------
11236 -- 4219869 Business Flow
11237 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
11238 ------------------------------------------------------------------------------------
11239 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
11240
11241 ----------------------------------------------------------------------------------
11242 -- 4219869 Business Flow
11243 -- Update journal entry status -- Need to generate this within IF <condition>
11244 ----------------------------------------------------------------------------------
11245 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
11246 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
11247 ,p_balance_type_code => l_balance_type_code
11248 );
11249
11250 -------------------------------------------------------------------------------------------
11251 -- 4262811 - Generate the Accrual Reversal lines
11252 -------------------------------------------------------------------------------------------
11253 BEGIN
11254 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
11255 (g_array_event(p_event_id).array_value_num('header_index'));
11256 IF l_acc_rev_flag IS NULL THEN
11257 l_acc_rev_flag := 'N';
11258 END IF;
11259 EXCEPTION
11260 WHEN OTHERS THEN
11261 l_acc_rev_flag := 'N';
11262 END;
11263 --
11264 IF (l_acc_rev_flag = 'Y') THEN
11265
11266 -- 4645092 ------------------------------------------------------------------------------
11267 -- To allow MPA report to determine if it should generate report process
11268 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
11269 ------------------------------------------------------------------------------------------
11270
11271 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
11272 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
11273 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
11274 -- call ADRs
11275 -- Bug 4922099
11276 --
11277 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
11278 (NVL(l_actual_upg_option, 'N') = 'O') OR
11279 (NVL(l_enc_upg_option, 'N') = 'O')
11280 )
11281 THEN
11282 NULL;
11283 --
11284 --
11285
11286 l_ccid := AcctDerRule_4(
11287 p_application_id => p_application_id
11288 , p_ae_header_id => l_ae_header_id
11289 , p_source_4 => p_source_4
11290 , x_transaction_coa_id => l_adr_transaction_coa_id
11291 , x_accounting_coa_id => l_adr_accounting_coa_id
11292 , x_value_type_code => l_adr_value_type_code
11293 , p_side => 'NA'
11294 );
11295
11296 xla_ae_lines_pkg.set_ccid(
11297 p_code_combination_id => l_ccid
11298 , p_value_type_code => l_adr_value_type_code
11299 , p_transaction_coa_id => l_adr_transaction_coa_id
11300 , p_accounting_coa_id => l_adr_accounting_coa_id
11301 , p_adr_code => 'CST_DEFAULT'
11302 , p_adr_type_code => 'S'
11303 , p_component_type => l_component_type
11304 , p_component_code => l_component_code
11305 , p_component_type_code => l_component_type_code
11306 , p_component_appl_id => l_component_appl_id
11307 , p_amb_context_code => l_amb_context_code
11308 , p_side => 'NA'
11309 );
11310
11311
11312 --
11313 --
11314 END IF;
11315
11316 --
11317 -- Update the line information that should be overwritten
11318 --
11319 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
11320 p_header_num => 1);
11321 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
11322
11323 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
11324
11325 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
11326 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
11327 END IF;
11328
11329 --
11330 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
11331 --
11332 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
11333 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
11334 ELSE
11335 ---------------------------------------------------------------------------------------------------
11336 -- 4262811a Switch Sign
11337 ---------------------------------------------------------------------------------------------------
11338 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
11339 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
11340 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
11341 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
11342 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
11343 -- 5132302
11344 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
11345 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
11346
11347 END IF;
11348
11349 -- 4955764
11350 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
11351 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
11352
11353
11354 XLA_AE_LINES_PKG.ValidateCurrentLine;
11355 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
11356
11357 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
11358 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
11359 ,p_balance_type_code => l_balance_type_code);
11360
11361 END IF;
11362
11363 -----------------------------------------------------------------------------------------
11364 -- 4262811 Multiperiod Accounting
11365 -----------------------------------------------------------------------------------------
11366 -- No MPA option is assigned.
11367
11368
11369 END IF;
11370 END IF;
11371 --
11372
11373 --
11374 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
11375 trace
11376 (p_msg => 'END of AcctLineType_23'
11377 ,p_level => C_LEVEL_PROCEDURE
11378 ,p_module => l_log_module);
11379 END IF;
11380 --
11381 EXCEPTION
11382 WHEN xla_exceptions_pkg.application_exception THEN
11383 RAISE;
11384 WHEN OTHERS THEN
11385 xla_exceptions_pkg.raise_message
11386 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_23');
11387 END AcctLineType_23;
11388 --
11389
11390 ---------------------------------------
11391 --
11392 -- PRIVATE FUNCTION
11393 -- AcctLineType_24
11394 --
11395 ---------------------------------------
11396 PROCEDURE AcctLineType_24 (
11397 p_application_id IN NUMBER
11398 ,p_event_id IN NUMBER
11399 ,p_calculate_acctd_flag IN VARCHAR2
11400 ,p_calculate_g_l_flag IN VARCHAR2
11401 ,p_actual_flag IN OUT VARCHAR2
11402 ,p_balance_type_code OUT VARCHAR2
11403 ,p_gain_or_loss_ref OUT VARCHAR2
11404
11405 --Cost Management Default Account
11406 , p_source_4 IN NUMBER
11407 --DISTRIBUTION_IDENTIFIER
11408 , p_source_11 IN NUMBER
11409 --Distribution Type
11410 , p_source_12 IN VARCHAR2
11411 , p_source_12_meaning IN VARCHAR2
11412 --Entered Currency Code
11413 , p_source_15 IN VARCHAR2
11414 --Entered Amount
11415 , p_source_18 IN NUMBER
11416 --Currency Conversion Date
11417 , p_source_19 IN DATE
11418 --Currency Conversion Rate
11419 , p_source_20 IN NUMBER
11420 --Currency Conversion Type
11421 , p_source_21 IN VARCHAR2
11422 --Accounted Amount
11423 , p_source_22 IN NUMBER
11424 --Accounting Line Type
11425 , p_source_24 IN NUMBER
11426 )
11427 IS
11428
11429 l_component_type VARCHAR2(80);
11430 l_component_code VARCHAR2(30);
11431 l_component_type_code VARCHAR2(1);
11432 l_component_appl_id INTEGER;
11433 l_amb_context_code VARCHAR2(30);
11434 l_entity_code VARCHAR2(30);
11435 l_event_class_code VARCHAR2(30);
11436 l_ae_header_id NUMBER;
11437 l_event_type_code VARCHAR2(30);
11438 l_line_definition_code VARCHAR2(30);
11439 l_line_definition_owner_code VARCHAR2(1);
11440 --
11441 -- adr variables
11442 l_segment VARCHAR2(30);
11443 l_ccid NUMBER;
11444 l_adr_transaction_coa_id NUMBER;
11445 l_adr_accounting_coa_id NUMBER;
11446 l_adr_flexfield_segment_code VARCHAR2(30);
11447 l_adr_flex_value_set_id NUMBER;
11448 l_adr_value_type_code VARCHAR2(30);
11449 l_adr_value_combination_id NUMBER;
11450 l_adr_value_segment_code VARCHAR2(30);
11451
11452 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
11453 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
11454 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
11455 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
11456
11457 -- 4262811 Variables ------------------------------------------------------------------------------------------
11458 l_entered_amt_idx NUMBER;
11459 l_accted_amt_idx NUMBER;
11460 l_acc_rev_flag VARCHAR2(1);
11461 l_accrual_line_num NUMBER;
11462 l_tmp_amt NUMBER;
11463 l_acc_rev_natural_side_code VARCHAR2(1);
11464
11465 l_num_entries NUMBER;
11466 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
11467 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
11468 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
11469 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
11470 l_recog_line_1 NUMBER;
11471 l_recog_line_2 NUMBER;
11472
11473 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
11474 l_bflow_applied_to_amt NUMBER; -- 5132302
11475 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
11476
11477 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
11478
11479 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
11480 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
11481
11482 ---------------------------------------------------------------------------------------------------------------
11483
11484
11485 --
11486 -- bulk performance
11487 --
11488 l_balance_type_code VARCHAR2(1);
11489 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
11490 l_log_module VARCHAR2(240);
11491
11492 --
11493 -- Upgrade strategy
11494 --
11495 l_actual_upg_option VARCHAR2(1);
11496 l_enc_upg_option VARCHAR2(1);
11497
11498 --
11499 BEGIN
11500 --
11501 IF g_log_enabled THEN
11502 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_24';
11503 END IF;
11504 --
11505 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
11506
11507 trace
11508 (p_msg => 'BEGIN of AcctLineType_24'
11509 ,p_level => C_LEVEL_PROCEDURE
11510 ,p_module => l_log_module);
11511
11512 END IF;
11513 --
11514 l_component_type := 'AMB_JLT';
11515 l_component_code := 'COST_UPDATE_ADJUSTMENT';
11516 l_component_type_code := 'S';
11517 l_component_appl_id := 707;
11518 l_amb_context_code := 'DEFAULT';
11519 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
11520 l_event_class_code := 'USER_DEFINE';
11521 l_event_type_code := 'UAVG_COST_UPD';
11522 l_line_definition_owner_code := 'S';
11523 l_line_definition_code := 'USER_COST_UPD';
11524 --
11525 l_balance_type_code := 'A';
11526 l_segment := NULL;
11527 l_ccid := NULL;
11528 l_adr_transaction_coa_id := NULL;
11529 l_adr_accounting_coa_id := NULL;
11530 l_adr_flexfield_segment_code := NULL;
11531 l_adr_flex_value_set_id := NULL;
11532 l_adr_value_type_code := NULL;
11533 l_adr_value_combination_id := NULL;
11534 l_adr_value_segment_code := NULL;
11535
11536 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
11537 l_bflow_class_code := ''; -- 4219869 Business Flow
11538 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
11539 l_budgetary_control_flag := 'N';
11540
11541 l_bflow_applied_to_amt_idx := NULL; -- 5132302
11542 l_bflow_applied_to_amt := NULL; -- 5132302
11543 l_entered_amt_idx := NULL; -- 4262811
11544 l_accted_amt_idx := NULL; -- 4262811
11545 l_acc_rev_flag := NULL; -- 4262811
11546 l_accrual_line_num := NULL; -- 4262811
11547 l_tmp_amt := NULL; -- 4262811
11548 --
11549
11550 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
11551 l_balance_type_code <> 'B' THEN
11552 IF NVL(p_source_24,9E125) = 2
11553 THEN
11554
11555 --
11556 XLA_AE_LINES_PKG.SetNewLine;
11557
11558 p_balance_type_code := l_balance_type_code;
11559 -- set the flag so later we will know whether the gain loss line needs to be created
11560
11561 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
11562 p_actual_flag :='A';
11563 END IF;
11564
11565 --
11566 -- bulk performance
11567 --
11568 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
11569 p_header_num => 0); -- 4262811
11570 --
11571 -- set accounting line options
11572 --
11573 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
11574 p_natural_side_code => 'D'
11575 , p_gain_or_loss_flag => 'N'
11576 , p_gl_transfer_mode_code => 'S'
11577 , p_acct_entry_type_code => 'A'
11578 , p_switch_side_flag => 'Y'
11579 , p_merge_duplicate_code => 'N'
11580 );
11581 --
11582 l_acc_rev_natural_side_code := 'C'; -- 4262811
11583 --
11584 --
11585 -- set accounting line type info
11586 --
11587 xla_ae_lines_pkg.SetAcctLineType
11588 (p_component_type => l_component_type
11589 ,p_event_type_code => l_event_type_code
11590 ,p_line_definition_owner_code => l_line_definition_owner_code
11591 ,p_line_definition_code => l_line_definition_code
11592 ,p_accounting_line_code => l_component_code
11593 ,p_accounting_line_type_code => l_component_type_code
11594 ,p_accounting_line_appl_id => l_component_appl_id
11595 ,p_amb_context_code => l_amb_context_code
11596 ,p_entity_code => l_entity_code
11597 ,p_event_class_code => l_event_class_code);
11598 --
11599 -- set accounting class
11600 --
11601 xla_ae_lines_pkg.SetAcctClass(
11602 p_accounting_class_code => 'COST_UPDATE_ADJUSTMENT'
11603 , p_ae_header_id => l_ae_header_id
11604 );
11605
11606 --
11607 -- set rounding class
11608 --
11609 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
11610 'COST_UPDATE_ADJUSTMENT';
11611
11612 --
11613 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
11614 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
11615 --
11616 -- bulk performance
11617 --
11618 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
11619
11620 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
11621 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
11622
11623 -- 4955764
11624 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
11625 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
11626
11627 -- 4458381 Public Sector Enh
11628
11629 --
11630 -- set accounting attributes for the line type
11631 --
11632 l_entered_amt_idx := 3;
11633 l_accted_amt_idx := 8;
11634 l_bflow_applied_to_amt_idx := NULL; -- 5132302
11635 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
11636 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
11637 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
11638 l_rec_acct_attrs.array_char_value(2) := p_source_12;
11639 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
11640 l_rec_acct_attrs.array_num_value(3) := p_source_18;
11641 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
11642 l_rec_acct_attrs.array_char_value(4) := p_source_15;
11643 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
11644 l_rec_acct_attrs.array_date_value(5) := p_source_19;
11645 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
11646 l_rec_acct_attrs.array_num_value(6) := p_source_20;
11647 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
11648 l_rec_acct_attrs.array_char_value(7) := p_source_21;
11649 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
11650 l_rec_acct_attrs.array_num_value(8) := p_source_22;
11651
11652 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
11653 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
11654
11655 ---------------------------------------------------------------------------------------------------------------
11656 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
11657 ---------------------------------------------------------------------------------------------------------------
11658 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
11659
11660 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
11661 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
11662
11663 IF xla_accounting_cache_pkg.GetValueChar
11664 (p_source_code => 'LEDGER_CATEGORY_CODE'
11665 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
11666 AND l_bflow_method_code = 'PRIOR_ENTRY'
11667 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
11668 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
11669 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
11670 )
11671 THEN
11672 xla_ae_lines_pkg.BflowUpgEntry
11673 (p_business_method_code => l_bflow_method_code
11674 ,p_business_class_code => l_bflow_class_code
11675 ,p_balance_type => l_balance_type_code);
11676 ELSE
11677 NULL;
11678 -- No business flow processing for business flow method of NONE.
11679 END IF;
11680
11681 --
11682 -- call analytical criteria
11683 --
11684
11685 --
11686 -- call description
11687 --
11688 -- No description or it is inherited.
11689 --
11690 -- call ADRs
11691 -- Bug 4922099
11692 --
11693 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
11694 (NVL(l_actual_upg_option, 'N') = 'O') OR
11695 (NVL(l_enc_upg_option, 'N') = 'O')
11696 )
11697 THEN
11698 NULL;
11699 --
11700 --
11701
11702 l_ccid := AcctDerRule_4(
11703 p_application_id => p_application_id
11704 , p_ae_header_id => l_ae_header_id
11705 , p_source_4 => p_source_4
11706 , x_transaction_coa_id => l_adr_transaction_coa_id
11707 , x_accounting_coa_id => l_adr_accounting_coa_id
11708 , x_value_type_code => l_adr_value_type_code
11709 , p_side => 'NA'
11710 );
11711
11712 xla_ae_lines_pkg.set_ccid(
11713 p_code_combination_id => l_ccid
11714 , p_value_type_code => l_adr_value_type_code
11715 , p_transaction_coa_id => l_adr_transaction_coa_id
11716 , p_accounting_coa_id => l_adr_accounting_coa_id
11717 , p_adr_code => 'CST_DEFAULT'
11718 , p_adr_type_code => 'S'
11719 , p_component_type => l_component_type
11720 , p_component_code => l_component_code
11721 , p_component_type_code => l_component_type_code
11722 , p_component_appl_id => l_component_appl_id
11723 , p_amb_context_code => l_amb_context_code
11724 , p_side => 'NA'
11725 );
11726
11727
11728 --
11729 --
11730 END IF;
11731 --
11732 -- Bug 4922099
11733 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
11734 (NVL(l_enc_upg_option, 'N') = 'O')
11735 ) AND
11736 (l_bflow_method_code = 'PRIOR_ENTRY')
11737 )
11738 THEN
11739 IF
11740 --
11741 1 = 2
11742 --
11743 THEN
11744 xla_accounting_err_pkg.build_message
11745 (p_appli_s_name => 'XLA'
11746 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
11747 ,p_token_1 => 'LINE_NUMBER'
11748 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
11749 ,p_token_2 => 'LINE_TYPE_NAME'
11750 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
11751 l_component_type
11752 ,l_component_code
11753 ,l_component_type_code
11754 ,l_component_appl_id
11755 ,l_amb_context_code
11756 ,l_entity_code
11757 ,l_event_class_code
11758 )
11759 ,p_token_3 => 'OWNER'
11760 ,p_value_3 => xla_lookups_pkg.get_meaning(
11761 p_lookup_type => 'XLA_OWNER_TYPE'
11762 ,p_lookup_code => l_component_type_code
11763 )
11764 ,p_token_4 => 'PRODUCT_NAME'
11765 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
11766 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
11767 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
11768 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
11769 ,p_ae_header_id => NULL
11770 );
11771
11772 IF (C_LEVEL_ERROR>= g_log_level) THEN
11773 trace
11774 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
11775 ,p_level => C_LEVEL_ERROR
11776 ,p_module => l_log_module);
11777 END IF;
11778 END IF;
11779 END IF;
11780 --
11781 --
11782 ------------------------------------------------------------------------------------------------
11783 -- 4219869 Business Flow
11784 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
11785 -- Prior Entry. Currently, the following code is always generated.
11786 ------------------------------------------------------------------------------------------------
11787 XLA_AE_LINES_PKG.ValidateCurrentLine;
11788
11789 ------------------------------------------------------------------------------------
11790 -- 4219869 Business Flow
11791 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
11792 ------------------------------------------------------------------------------------
11793 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
11794
11795 ----------------------------------------------------------------------------------
11796 -- 4219869 Business Flow
11797 -- Update journal entry status -- Need to generate this within IF <condition>
11798 ----------------------------------------------------------------------------------
11799 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
11800 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
11801 ,p_balance_type_code => l_balance_type_code
11802 );
11803
11804 -------------------------------------------------------------------------------------------
11805 -- 4262811 - Generate the Accrual Reversal lines
11806 -------------------------------------------------------------------------------------------
11807 BEGIN
11808 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
11809 (g_array_event(p_event_id).array_value_num('header_index'));
11810 IF l_acc_rev_flag IS NULL THEN
11811 l_acc_rev_flag := 'N';
11812 END IF;
11813 EXCEPTION
11814 WHEN OTHERS THEN
11815 l_acc_rev_flag := 'N';
11816 END;
11817 --
11818 IF (l_acc_rev_flag = 'Y') THEN
11819
11820 -- 4645092 ------------------------------------------------------------------------------
11821 -- To allow MPA report to determine if it should generate report process
11822 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
11823 ------------------------------------------------------------------------------------------
11824
11825 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
11826 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
11827 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
11828 -- call ADRs
11829 -- Bug 4922099
11830 --
11831 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
11832 (NVL(l_actual_upg_option, 'N') = 'O') OR
11833 (NVL(l_enc_upg_option, 'N') = 'O')
11834 )
11835 THEN
11836 NULL;
11837 --
11838 --
11839
11840 l_ccid := AcctDerRule_4(
11841 p_application_id => p_application_id
11842 , p_ae_header_id => l_ae_header_id
11843 , p_source_4 => p_source_4
11844 , x_transaction_coa_id => l_adr_transaction_coa_id
11845 , x_accounting_coa_id => l_adr_accounting_coa_id
11846 , x_value_type_code => l_adr_value_type_code
11847 , p_side => 'NA'
11848 );
11849
11850 xla_ae_lines_pkg.set_ccid(
11851 p_code_combination_id => l_ccid
11852 , p_value_type_code => l_adr_value_type_code
11853 , p_transaction_coa_id => l_adr_transaction_coa_id
11854 , p_accounting_coa_id => l_adr_accounting_coa_id
11855 , p_adr_code => 'CST_DEFAULT'
11856 , p_adr_type_code => 'S'
11857 , p_component_type => l_component_type
11858 , p_component_code => l_component_code
11859 , p_component_type_code => l_component_type_code
11860 , p_component_appl_id => l_component_appl_id
11861 , p_amb_context_code => l_amb_context_code
11862 , p_side => 'NA'
11863 );
11864
11865
11866 --
11867 --
11868 END IF;
11869
11870 --
11871 -- Update the line information that should be overwritten
11872 --
11873 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
11874 p_header_num => 1);
11875 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
11876
11877 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
11878
11879 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
11880 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
11881 END IF;
11882
11883 --
11884 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
11885 --
11886 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
11887 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
11888 ELSE
11889 ---------------------------------------------------------------------------------------------------
11890 -- 4262811a Switch Sign
11891 ---------------------------------------------------------------------------------------------------
11892 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
11893 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
11894 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
11895 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
11896 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
11897 -- 5132302
11898 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
11899 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
11900
11901 END IF;
11902
11903 -- 4955764
11904 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
11905 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
11906
11907
11908 XLA_AE_LINES_PKG.ValidateCurrentLine;
11909 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
11910
11911 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
11912 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
11913 ,p_balance_type_code => l_balance_type_code);
11914
11915 END IF;
11916
11917 -----------------------------------------------------------------------------------------
11918 -- 4262811 Multiperiod Accounting
11919 -----------------------------------------------------------------------------------------
11920 -- No MPA option is assigned.
11921
11922
11923 END IF;
11924 END IF;
11925 --
11926
11927 --
11928 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
11929 trace
11930 (p_msg => 'END of AcctLineType_24'
11931 ,p_level => C_LEVEL_PROCEDURE
11932 ,p_module => l_log_module);
11933 END IF;
11934 --
11935 EXCEPTION
11936 WHEN xla_exceptions_pkg.application_exception THEN
11937 RAISE;
11938 WHEN OTHERS THEN
11939 xla_exceptions_pkg.raise_message
11940 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_24');
11941 END AcctLineType_24;
11942 --
11943
11944 ---------------------------------------
11945 --
11946 -- PRIVATE FUNCTION
11947 -- AcctLineType_25
11948 --
11949 ---------------------------------------
11950 PROCEDURE AcctLineType_25 (
11951 p_application_id IN NUMBER
11952 ,p_event_id IN NUMBER
11953 ,p_calculate_acctd_flag IN VARCHAR2
11954 ,p_calculate_g_l_flag IN VARCHAR2
11955 ,p_actual_flag IN OUT VARCHAR2
11956 ,p_balance_type_code OUT VARCHAR2
11957 ,p_gain_or_loss_ref OUT VARCHAR2
11958
11959 --Cost Management Default Account
11960 , p_source_4 IN NUMBER
11961 --DISTRIBUTION_IDENTIFIER
11962 , p_source_11 IN NUMBER
11963 --Distribution Type
11964 , p_source_12 IN VARCHAR2
11965 , p_source_12_meaning IN VARCHAR2
11966 --Entered Currency Code
11967 , p_source_15 IN VARCHAR2
11968 --Entered Amount
11969 , p_source_18 IN NUMBER
11970 --Currency Conversion Date
11971 , p_source_19 IN DATE
11972 --Currency Conversion Rate
11973 , p_source_20 IN NUMBER
11974 --Currency Conversion Type
11975 , p_source_21 IN VARCHAR2
11976 --Accounted Amount
11977 , p_source_22 IN NUMBER
11978 --Accounting Line Type
11979 , p_source_24 IN NUMBER
11980 )
11981 IS
11982
11983 l_component_type VARCHAR2(80);
11984 l_component_code VARCHAR2(30);
11985 l_component_type_code VARCHAR2(1);
11986 l_component_appl_id INTEGER;
11987 l_amb_context_code VARCHAR2(30);
11988 l_entity_code VARCHAR2(30);
11989 l_event_class_code VARCHAR2(30);
11990 l_ae_header_id NUMBER;
11991 l_event_type_code VARCHAR2(30);
11992 l_line_definition_code VARCHAR2(30);
11993 l_line_definition_owner_code VARCHAR2(1);
11994 --
11995 -- adr variables
11996 l_segment VARCHAR2(30);
11997 l_ccid NUMBER;
11998 l_adr_transaction_coa_id NUMBER;
11999 l_adr_accounting_coa_id NUMBER;
12000 l_adr_flexfield_segment_code VARCHAR2(30);
12001 l_adr_flex_value_set_id NUMBER;
12002 l_adr_value_type_code VARCHAR2(30);
12003 l_adr_value_combination_id NUMBER;
12004 l_adr_value_segment_code VARCHAR2(30);
12005
12006 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
12007 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
12008 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
12009 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
12010
12011 -- 4262811 Variables ------------------------------------------------------------------------------------------
12012 l_entered_amt_idx NUMBER;
12013 l_accted_amt_idx NUMBER;
12014 l_acc_rev_flag VARCHAR2(1);
12015 l_accrual_line_num NUMBER;
12016 l_tmp_amt NUMBER;
12017 l_acc_rev_natural_side_code VARCHAR2(1);
12018
12019 l_num_entries NUMBER;
12020 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
12021 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
12022 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
12023 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
12024 l_recog_line_1 NUMBER;
12025 l_recog_line_2 NUMBER;
12026
12027 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
12028 l_bflow_applied_to_amt NUMBER; -- 5132302
12029 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
12030
12031 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
12032
12033 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
12034 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
12035
12036 ---------------------------------------------------------------------------------------------------------------
12037
12038
12039 --
12040 -- bulk performance
12041 --
12042 l_balance_type_code VARCHAR2(1);
12043 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
12044 l_log_module VARCHAR2(240);
12045
12046 --
12047 -- Upgrade strategy
12048 --
12049 l_actual_upg_option VARCHAR2(1);
12050 l_enc_upg_option VARCHAR2(1);
12051
12052 --
12053 BEGIN
12054 --
12055 IF g_log_enabled THEN
12056 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_25';
12057 END IF;
12058 --
12059 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
12060
12061 trace
12062 (p_msg => 'BEGIN of AcctLineType_25'
12063 ,p_level => C_LEVEL_PROCEDURE
12064 ,p_module => l_log_module);
12065
12066 END IF;
12067 --
12068 l_component_type := 'AMB_JLT';
12069 l_component_code := 'COST_VARIANCE';
12070 l_component_type_code := 'S';
12071 l_component_appl_id := 707;
12072 l_amb_context_code := 'DEFAULT';
12073 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
12074 l_event_class_code := 'USER_DEFINE';
12075 l_event_type_code := 'UAVG_COST_UPD';
12076 l_line_definition_owner_code := 'S';
12077 l_line_definition_code := 'USER_COST_UPD';
12078 --
12079 l_balance_type_code := 'A';
12080 l_segment := NULL;
12081 l_ccid := NULL;
12082 l_adr_transaction_coa_id := NULL;
12083 l_adr_accounting_coa_id := NULL;
12084 l_adr_flexfield_segment_code := NULL;
12085 l_adr_flex_value_set_id := NULL;
12086 l_adr_value_type_code := NULL;
12087 l_adr_value_combination_id := NULL;
12088 l_adr_value_segment_code := NULL;
12089
12090 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
12091 l_bflow_class_code := ''; -- 4219869 Business Flow
12092 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
12093 l_budgetary_control_flag := 'N';
12094
12095 l_bflow_applied_to_amt_idx := NULL; -- 5132302
12096 l_bflow_applied_to_amt := NULL; -- 5132302
12097 l_entered_amt_idx := NULL; -- 4262811
12098 l_accted_amt_idx := NULL; -- 4262811
12099 l_acc_rev_flag := NULL; -- 4262811
12100 l_accrual_line_num := NULL; -- 4262811
12101 l_tmp_amt := NULL; -- 4262811
12102 --
12103
12104 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
12105 l_balance_type_code <> 'B' THEN
12106 IF NVL(p_source_24,9E125) = 13
12107 THEN
12108
12109 --
12110 XLA_AE_LINES_PKG.SetNewLine;
12111
12112 p_balance_type_code := l_balance_type_code;
12113 -- set the flag so later we will know whether the gain loss line needs to be created
12114
12115 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
12116 p_actual_flag :='A';
12117 END IF;
12118
12119 --
12120 -- bulk performance
12121 --
12122 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
12123 p_header_num => 0); -- 4262811
12124 --
12125 -- set accounting line options
12126 --
12127 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
12128 p_natural_side_code => 'D'
12129 , p_gain_or_loss_flag => 'N'
12130 , p_gl_transfer_mode_code => 'S'
12131 , p_acct_entry_type_code => 'A'
12132 , p_switch_side_flag => 'Y'
12133 , p_merge_duplicate_code => 'N'
12134 );
12135 --
12136 l_acc_rev_natural_side_code := 'C'; -- 4262811
12137 --
12138 --
12139 -- set accounting line type info
12140 --
12141 xla_ae_lines_pkg.SetAcctLineType
12142 (p_component_type => l_component_type
12143 ,p_event_type_code => l_event_type_code
12144 ,p_line_definition_owner_code => l_line_definition_owner_code
12145 ,p_line_definition_code => l_line_definition_code
12146 ,p_accounting_line_code => l_component_code
12147 ,p_accounting_line_type_code => l_component_type_code
12148 ,p_accounting_line_appl_id => l_component_appl_id
12149 ,p_amb_context_code => l_amb_context_code
12150 ,p_entity_code => l_entity_code
12151 ,p_event_class_code => l_event_class_code);
12152 --
12153 -- set accounting class
12154 --
12155 xla_ae_lines_pkg.SetAcctClass(
12156 p_accounting_class_code => 'COST_VARIANCE'
12157 , p_ae_header_id => l_ae_header_id
12158 );
12159
12160 --
12161 -- set rounding class
12162 --
12163 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
12164 'COST_VARIANCE';
12165
12166 --
12167 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
12168 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
12169 --
12170 -- bulk performance
12171 --
12172 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
12173
12174 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
12175 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
12176
12177 -- 4955764
12178 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
12179 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
12180
12181 -- 4458381 Public Sector Enh
12182
12183 --
12184 -- set accounting attributes for the line type
12185 --
12186 l_entered_amt_idx := 3;
12187 l_accted_amt_idx := 8;
12188 l_bflow_applied_to_amt_idx := NULL; -- 5132302
12189 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
12190 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
12191 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
12192 l_rec_acct_attrs.array_char_value(2) := p_source_12;
12193 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
12194 l_rec_acct_attrs.array_num_value(3) := p_source_18;
12195 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
12196 l_rec_acct_attrs.array_char_value(4) := p_source_15;
12197 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
12198 l_rec_acct_attrs.array_date_value(5) := p_source_19;
12199 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
12200 l_rec_acct_attrs.array_num_value(6) := p_source_20;
12201 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
12202 l_rec_acct_attrs.array_char_value(7) := p_source_21;
12203 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
12204 l_rec_acct_attrs.array_num_value(8) := p_source_22;
12205
12206 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
12207 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
12208
12209 ---------------------------------------------------------------------------------------------------------------
12210 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
12211 ---------------------------------------------------------------------------------------------------------------
12212 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
12213
12214 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
12215 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
12216
12217 IF xla_accounting_cache_pkg.GetValueChar
12218 (p_source_code => 'LEDGER_CATEGORY_CODE'
12219 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
12220 AND l_bflow_method_code = 'PRIOR_ENTRY'
12221 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
12222 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
12223 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
12224 )
12225 THEN
12226 xla_ae_lines_pkg.BflowUpgEntry
12227 (p_business_method_code => l_bflow_method_code
12228 ,p_business_class_code => l_bflow_class_code
12229 ,p_balance_type => l_balance_type_code);
12230 ELSE
12231 NULL;
12232 -- No business flow processing for business flow method of NONE.
12233 END IF;
12234
12235 --
12236 -- call analytical criteria
12237 --
12238
12239 --
12240 -- call description
12241 --
12242 -- No description or it is inherited.
12243 --
12244 -- call ADRs
12245 -- Bug 4922099
12246 --
12247 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
12248 (NVL(l_actual_upg_option, 'N') = 'O') OR
12249 (NVL(l_enc_upg_option, 'N') = 'O')
12250 )
12251 THEN
12252 NULL;
12253 --
12254 --
12255
12256 l_ccid := AcctDerRule_4(
12257 p_application_id => p_application_id
12258 , p_ae_header_id => l_ae_header_id
12259 , p_source_4 => p_source_4
12260 , x_transaction_coa_id => l_adr_transaction_coa_id
12261 , x_accounting_coa_id => l_adr_accounting_coa_id
12262 , x_value_type_code => l_adr_value_type_code
12263 , p_side => 'NA'
12264 );
12265
12266 xla_ae_lines_pkg.set_ccid(
12267 p_code_combination_id => l_ccid
12268 , p_value_type_code => l_adr_value_type_code
12269 , p_transaction_coa_id => l_adr_transaction_coa_id
12270 , p_accounting_coa_id => l_adr_accounting_coa_id
12271 , p_adr_code => 'CST_DEFAULT'
12272 , p_adr_type_code => 'S'
12273 , p_component_type => l_component_type
12274 , p_component_code => l_component_code
12275 , p_component_type_code => l_component_type_code
12276 , p_component_appl_id => l_component_appl_id
12277 , p_amb_context_code => l_amb_context_code
12278 , p_side => 'NA'
12279 );
12280
12281
12282 --
12283 --
12284 END IF;
12285 --
12286 -- Bug 4922099
12287 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
12288 (NVL(l_enc_upg_option, 'N') = 'O')
12289 ) AND
12290 (l_bflow_method_code = 'PRIOR_ENTRY')
12291 )
12292 THEN
12293 IF
12294 --
12295 1 = 2
12296 --
12297 THEN
12298 xla_accounting_err_pkg.build_message
12299 (p_appli_s_name => 'XLA'
12300 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
12301 ,p_token_1 => 'LINE_NUMBER'
12302 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
12303 ,p_token_2 => 'LINE_TYPE_NAME'
12304 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
12305 l_component_type
12306 ,l_component_code
12307 ,l_component_type_code
12308 ,l_component_appl_id
12309 ,l_amb_context_code
12310 ,l_entity_code
12311 ,l_event_class_code
12312 )
12313 ,p_token_3 => 'OWNER'
12314 ,p_value_3 => xla_lookups_pkg.get_meaning(
12315 p_lookup_type => 'XLA_OWNER_TYPE'
12316 ,p_lookup_code => l_component_type_code
12317 )
12318 ,p_token_4 => 'PRODUCT_NAME'
12319 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
12320 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
12321 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
12322 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
12323 ,p_ae_header_id => NULL
12324 );
12325
12326 IF (C_LEVEL_ERROR>= g_log_level) THEN
12327 trace
12328 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
12329 ,p_level => C_LEVEL_ERROR
12330 ,p_module => l_log_module);
12331 END IF;
12332 END IF;
12333 END IF;
12334 --
12335 --
12336 ------------------------------------------------------------------------------------------------
12337 -- 4219869 Business Flow
12338 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
12339 -- Prior Entry. Currently, the following code is always generated.
12340 ------------------------------------------------------------------------------------------------
12341 XLA_AE_LINES_PKG.ValidateCurrentLine;
12342
12343 ------------------------------------------------------------------------------------
12344 -- 4219869 Business Flow
12345 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
12346 ------------------------------------------------------------------------------------
12347 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
12348
12349 ----------------------------------------------------------------------------------
12350 -- 4219869 Business Flow
12351 -- Update journal entry status -- Need to generate this within IF <condition>
12352 ----------------------------------------------------------------------------------
12353 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
12354 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
12355 ,p_balance_type_code => l_balance_type_code
12356 );
12357
12358 -------------------------------------------------------------------------------------------
12359 -- 4262811 - Generate the Accrual Reversal lines
12360 -------------------------------------------------------------------------------------------
12361 BEGIN
12362 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
12363 (g_array_event(p_event_id).array_value_num('header_index'));
12364 IF l_acc_rev_flag IS NULL THEN
12365 l_acc_rev_flag := 'N';
12366 END IF;
12367 EXCEPTION
12368 WHEN OTHERS THEN
12369 l_acc_rev_flag := 'N';
12370 END;
12371 --
12372 IF (l_acc_rev_flag = 'Y') THEN
12373
12374 -- 4645092 ------------------------------------------------------------------------------
12375 -- To allow MPA report to determine if it should generate report process
12376 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
12377 ------------------------------------------------------------------------------------------
12378
12379 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
12380 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
12381 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
12382 -- call ADRs
12383 -- Bug 4922099
12384 --
12385 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
12386 (NVL(l_actual_upg_option, 'N') = 'O') OR
12387 (NVL(l_enc_upg_option, 'N') = 'O')
12388 )
12389 THEN
12390 NULL;
12391 --
12392 --
12393
12394 l_ccid := AcctDerRule_4(
12395 p_application_id => p_application_id
12396 , p_ae_header_id => l_ae_header_id
12397 , p_source_4 => p_source_4
12398 , x_transaction_coa_id => l_adr_transaction_coa_id
12399 , x_accounting_coa_id => l_adr_accounting_coa_id
12400 , x_value_type_code => l_adr_value_type_code
12401 , p_side => 'NA'
12402 );
12403
12404 xla_ae_lines_pkg.set_ccid(
12405 p_code_combination_id => l_ccid
12406 , p_value_type_code => l_adr_value_type_code
12407 , p_transaction_coa_id => l_adr_transaction_coa_id
12408 , p_accounting_coa_id => l_adr_accounting_coa_id
12409 , p_adr_code => 'CST_DEFAULT'
12410 , p_adr_type_code => 'S'
12411 , p_component_type => l_component_type
12412 , p_component_code => l_component_code
12413 , p_component_type_code => l_component_type_code
12414 , p_component_appl_id => l_component_appl_id
12415 , p_amb_context_code => l_amb_context_code
12416 , p_side => 'NA'
12417 );
12418
12419
12420 --
12421 --
12422 END IF;
12423
12424 --
12425 -- Update the line information that should be overwritten
12426 --
12427 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
12428 p_header_num => 1);
12429 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
12430
12431 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
12432
12433 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
12434 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
12435 END IF;
12436
12437 --
12438 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
12439 --
12440 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
12441 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
12442 ELSE
12443 ---------------------------------------------------------------------------------------------------
12444 -- 4262811a Switch Sign
12445 ---------------------------------------------------------------------------------------------------
12446 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
12447 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
12448 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
12449 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
12450 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
12451 -- 5132302
12452 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
12453 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
12454
12455 END IF;
12456
12457 -- 4955764
12458 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
12459 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
12460
12461
12462 XLA_AE_LINES_PKG.ValidateCurrentLine;
12463 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
12464
12465 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
12466 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
12467 ,p_balance_type_code => l_balance_type_code);
12468
12469 END IF;
12470
12471 -----------------------------------------------------------------------------------------
12472 -- 4262811 Multiperiod Accounting
12473 -----------------------------------------------------------------------------------------
12474 -- No MPA option is assigned.
12475
12476
12477 END IF;
12478 END IF;
12479 --
12480
12481 --
12482 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
12483 trace
12484 (p_msg => 'END of AcctLineType_25'
12485 ,p_level => C_LEVEL_PROCEDURE
12486 ,p_module => l_log_module);
12487 END IF;
12488 --
12489 EXCEPTION
12490 WHEN xla_exceptions_pkg.application_exception THEN
12491 RAISE;
12492 WHEN OTHERS THEN
12493 xla_exceptions_pkg.raise_message
12494 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_25');
12495 END AcctLineType_25;
12496 --
12497
12498 ---------------------------------------
12499 --
12500 -- PRIVATE FUNCTION
12501 -- AcctLineType_26
12502 --
12503 ---------------------------------------
12504 PROCEDURE AcctLineType_26 (
12505 p_application_id IN NUMBER
12506 ,p_event_id IN NUMBER
12507 ,p_calculate_acctd_flag IN VARCHAR2
12508 ,p_calculate_g_l_flag IN VARCHAR2
12509 ,p_actual_flag IN OUT VARCHAR2
12510 ,p_balance_type_code OUT VARCHAR2
12511 ,p_gain_or_loss_ref OUT VARCHAR2
12512
12513 --Cost Management Default Account
12514 , p_source_4 IN NUMBER
12515 --DISTRIBUTION_IDENTIFIER
12516 , p_source_11 IN NUMBER
12517 --Distribution Type
12518 , p_source_12 IN VARCHAR2
12519 , p_source_12_meaning IN VARCHAR2
12520 --Entered Currency Code
12521 , p_source_15 IN VARCHAR2
12522 --Entered Amount
12523 , p_source_18 IN NUMBER
12524 --Currency Conversion Date
12525 , p_source_19 IN DATE
12526 --Currency Conversion Rate
12527 , p_source_20 IN NUMBER
12528 --Currency Conversion Type
12529 , p_source_21 IN VARCHAR2
12530 --Accounted Amount
12531 , p_source_22 IN NUMBER
12532 --Accounting Line Type
12533 , p_source_24 IN NUMBER
12534 )
12535 IS
12536
12537 l_component_type VARCHAR2(80);
12538 l_component_code VARCHAR2(30);
12539 l_component_type_code VARCHAR2(1);
12540 l_component_appl_id INTEGER;
12541 l_amb_context_code VARCHAR2(30);
12542 l_entity_code VARCHAR2(30);
12543 l_event_class_code VARCHAR2(30);
12544 l_ae_header_id NUMBER;
12545 l_event_type_code VARCHAR2(30);
12546 l_line_definition_code VARCHAR2(30);
12547 l_line_definition_owner_code VARCHAR2(1);
12548 --
12549 -- adr variables
12550 l_segment VARCHAR2(30);
12551 l_ccid NUMBER;
12552 l_adr_transaction_coa_id NUMBER;
12553 l_adr_accounting_coa_id NUMBER;
12554 l_adr_flexfield_segment_code VARCHAR2(30);
12555 l_adr_flex_value_set_id NUMBER;
12556 l_adr_value_type_code VARCHAR2(30);
12557 l_adr_value_combination_id NUMBER;
12558 l_adr_value_segment_code VARCHAR2(30);
12559
12560 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
12561 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
12562 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
12563 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
12564
12565 -- 4262811 Variables ------------------------------------------------------------------------------------------
12566 l_entered_amt_idx NUMBER;
12567 l_accted_amt_idx NUMBER;
12568 l_acc_rev_flag VARCHAR2(1);
12569 l_accrual_line_num NUMBER;
12570 l_tmp_amt NUMBER;
12571 l_acc_rev_natural_side_code VARCHAR2(1);
12572
12573 l_num_entries NUMBER;
12574 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
12575 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
12576 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
12577 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
12578 l_recog_line_1 NUMBER;
12579 l_recog_line_2 NUMBER;
12580
12581 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
12582 l_bflow_applied_to_amt NUMBER; -- 5132302
12583 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
12584
12585 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
12586
12587 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
12588 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
12589
12590 ---------------------------------------------------------------------------------------------------------------
12591
12592
12593 --
12594 -- bulk performance
12595 --
12596 l_balance_type_code VARCHAR2(1);
12597 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
12598 l_log_module VARCHAR2(240);
12599
12600 --
12601 -- Upgrade strategy
12602 --
12603 l_actual_upg_option VARCHAR2(1);
12604 l_enc_upg_option VARCHAR2(1);
12605
12606 --
12607 BEGIN
12608 --
12609 IF g_log_enabled THEN
12610 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_26';
12611 END IF;
12612 --
12613 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
12614
12615 trace
12616 (p_msg => 'BEGIN of AcctLineType_26'
12617 ,p_level => C_LEVEL_PROCEDURE
12618 ,p_module => l_log_module);
12619
12620 END IF;
12621 --
12622 l_component_type := 'AMB_JLT';
12623 l_component_code := 'COST_VARIANCE';
12624 l_component_type_code := 'S';
12625 l_component_appl_id := 707;
12626 l_amb_context_code := 'DEFAULT';
12627 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
12628 l_event_class_code := 'USER_DEFINE';
12629 l_event_type_code := 'UMISC_ISSUE';
12630 l_line_definition_owner_code := 'S';
12631 l_line_definition_code := 'USER_ISSUE';
12632 --
12633 l_balance_type_code := 'A';
12634 l_segment := NULL;
12635 l_ccid := NULL;
12636 l_adr_transaction_coa_id := NULL;
12637 l_adr_accounting_coa_id := NULL;
12638 l_adr_flexfield_segment_code := NULL;
12639 l_adr_flex_value_set_id := NULL;
12640 l_adr_value_type_code := NULL;
12641 l_adr_value_combination_id := NULL;
12642 l_adr_value_segment_code := NULL;
12643
12644 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
12645 l_bflow_class_code := ''; -- 4219869 Business Flow
12646 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
12647 l_budgetary_control_flag := 'N';
12648
12649 l_bflow_applied_to_amt_idx := NULL; -- 5132302
12650 l_bflow_applied_to_amt := NULL; -- 5132302
12651 l_entered_amt_idx := NULL; -- 4262811
12652 l_accted_amt_idx := NULL; -- 4262811
12653 l_acc_rev_flag := NULL; -- 4262811
12654 l_accrual_line_num := NULL; -- 4262811
12655 l_tmp_amt := NULL; -- 4262811
12656 --
12657
12658 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
12659 l_balance_type_code <> 'B' THEN
12660 IF NVL(p_source_24,9E125) = 13
12661 THEN
12662
12663 --
12664 XLA_AE_LINES_PKG.SetNewLine;
12665
12666 p_balance_type_code := l_balance_type_code;
12667 -- set the flag so later we will know whether the gain loss line needs to be created
12668
12669 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
12670 p_actual_flag :='A';
12671 END IF;
12672
12673 --
12674 -- bulk performance
12675 --
12676 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
12677 p_header_num => 0); -- 4262811
12678 --
12679 -- set accounting line options
12680 --
12681 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
12682 p_natural_side_code => 'D'
12683 , p_gain_or_loss_flag => 'N'
12684 , p_gl_transfer_mode_code => 'S'
12685 , p_acct_entry_type_code => 'A'
12686 , p_switch_side_flag => 'Y'
12687 , p_merge_duplicate_code => 'N'
12688 );
12689 --
12690 l_acc_rev_natural_side_code := 'C'; -- 4262811
12691 --
12692 --
12693 -- set accounting line type info
12694 --
12695 xla_ae_lines_pkg.SetAcctLineType
12696 (p_component_type => l_component_type
12697 ,p_event_type_code => l_event_type_code
12698 ,p_line_definition_owner_code => l_line_definition_owner_code
12699 ,p_line_definition_code => l_line_definition_code
12700 ,p_accounting_line_code => l_component_code
12701 ,p_accounting_line_type_code => l_component_type_code
12702 ,p_accounting_line_appl_id => l_component_appl_id
12703 ,p_amb_context_code => l_amb_context_code
12704 ,p_entity_code => l_entity_code
12705 ,p_event_class_code => l_event_class_code);
12706 --
12707 -- set accounting class
12708 --
12709 xla_ae_lines_pkg.SetAcctClass(
12710 p_accounting_class_code => 'COST_VARIANCE'
12711 , p_ae_header_id => l_ae_header_id
12712 );
12713
12714 --
12715 -- set rounding class
12716 --
12717 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
12718 'COST_VARIANCE';
12719
12720 --
12721 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
12722 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
12723 --
12724 -- bulk performance
12725 --
12726 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
12727
12728 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
12729 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
12730
12731 -- 4955764
12732 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
12733 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
12734
12735 -- 4458381 Public Sector Enh
12736
12737 --
12738 -- set accounting attributes for the line type
12739 --
12740 l_entered_amt_idx := 3;
12741 l_accted_amt_idx := 8;
12742 l_bflow_applied_to_amt_idx := NULL; -- 5132302
12743 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
12744 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
12745 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
12746 l_rec_acct_attrs.array_char_value(2) := p_source_12;
12747 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
12748 l_rec_acct_attrs.array_num_value(3) := p_source_18;
12749 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
12750 l_rec_acct_attrs.array_char_value(4) := p_source_15;
12751 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
12752 l_rec_acct_attrs.array_date_value(5) := p_source_19;
12753 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
12754 l_rec_acct_attrs.array_num_value(6) := p_source_20;
12755 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
12756 l_rec_acct_attrs.array_char_value(7) := p_source_21;
12757 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
12758 l_rec_acct_attrs.array_num_value(8) := p_source_22;
12759
12760 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
12761 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
12762
12763 ---------------------------------------------------------------------------------------------------------------
12764 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
12765 ---------------------------------------------------------------------------------------------------------------
12766 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
12767
12768 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
12769 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
12770
12771 IF xla_accounting_cache_pkg.GetValueChar
12772 (p_source_code => 'LEDGER_CATEGORY_CODE'
12773 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
12774 AND l_bflow_method_code = 'PRIOR_ENTRY'
12775 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
12776 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
12777 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
12778 )
12779 THEN
12780 xla_ae_lines_pkg.BflowUpgEntry
12781 (p_business_method_code => l_bflow_method_code
12782 ,p_business_class_code => l_bflow_class_code
12783 ,p_balance_type => l_balance_type_code);
12784 ELSE
12785 NULL;
12786 -- No business flow processing for business flow method of NONE.
12787 END IF;
12788
12789 --
12790 -- call analytical criteria
12791 --
12792
12793 --
12794 -- call description
12795 --
12796 -- No description or it is inherited.
12797 --
12798 -- call ADRs
12799 -- Bug 4922099
12800 --
12801 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
12802 (NVL(l_actual_upg_option, 'N') = 'O') OR
12803 (NVL(l_enc_upg_option, 'N') = 'O')
12804 )
12805 THEN
12806 NULL;
12807 --
12808 --
12809
12810 l_ccid := AcctDerRule_4(
12811 p_application_id => p_application_id
12812 , p_ae_header_id => l_ae_header_id
12813 , p_source_4 => p_source_4
12814 , x_transaction_coa_id => l_adr_transaction_coa_id
12815 , x_accounting_coa_id => l_adr_accounting_coa_id
12816 , x_value_type_code => l_adr_value_type_code
12817 , p_side => 'NA'
12818 );
12819
12820 xla_ae_lines_pkg.set_ccid(
12821 p_code_combination_id => l_ccid
12822 , p_value_type_code => l_adr_value_type_code
12823 , p_transaction_coa_id => l_adr_transaction_coa_id
12824 , p_accounting_coa_id => l_adr_accounting_coa_id
12825 , p_adr_code => 'CST_DEFAULT'
12826 , p_adr_type_code => 'S'
12827 , p_component_type => l_component_type
12828 , p_component_code => l_component_code
12829 , p_component_type_code => l_component_type_code
12830 , p_component_appl_id => l_component_appl_id
12831 , p_amb_context_code => l_amb_context_code
12832 , p_side => 'NA'
12833 );
12834
12835
12836 --
12837 --
12838 END IF;
12839 --
12840 -- Bug 4922099
12841 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
12842 (NVL(l_enc_upg_option, 'N') = 'O')
12843 ) AND
12844 (l_bflow_method_code = 'PRIOR_ENTRY')
12845 )
12846 THEN
12847 IF
12848 --
12849 1 = 2
12850 --
12851 THEN
12852 xla_accounting_err_pkg.build_message
12853 (p_appli_s_name => 'XLA'
12854 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
12855 ,p_token_1 => 'LINE_NUMBER'
12856 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
12857 ,p_token_2 => 'LINE_TYPE_NAME'
12858 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
12859 l_component_type
12860 ,l_component_code
12861 ,l_component_type_code
12862 ,l_component_appl_id
12863 ,l_amb_context_code
12864 ,l_entity_code
12865 ,l_event_class_code
12866 )
12867 ,p_token_3 => 'OWNER'
12868 ,p_value_3 => xla_lookups_pkg.get_meaning(
12869 p_lookup_type => 'XLA_OWNER_TYPE'
12870 ,p_lookup_code => l_component_type_code
12871 )
12872 ,p_token_4 => 'PRODUCT_NAME'
12873 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
12874 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
12875 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
12876 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
12877 ,p_ae_header_id => NULL
12878 );
12879
12880 IF (C_LEVEL_ERROR>= g_log_level) THEN
12881 trace
12882 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
12883 ,p_level => C_LEVEL_ERROR
12884 ,p_module => l_log_module);
12885 END IF;
12886 END IF;
12887 END IF;
12888 --
12889 --
12890 ------------------------------------------------------------------------------------------------
12891 -- 4219869 Business Flow
12892 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
12893 -- Prior Entry. Currently, the following code is always generated.
12894 ------------------------------------------------------------------------------------------------
12895 XLA_AE_LINES_PKG.ValidateCurrentLine;
12896
12897 ------------------------------------------------------------------------------------
12898 -- 4219869 Business Flow
12899 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
12900 ------------------------------------------------------------------------------------
12901 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
12902
12903 ----------------------------------------------------------------------------------
12904 -- 4219869 Business Flow
12905 -- Update journal entry status -- Need to generate this within IF <condition>
12906 ----------------------------------------------------------------------------------
12907 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
12908 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
12909 ,p_balance_type_code => l_balance_type_code
12910 );
12911
12912 -------------------------------------------------------------------------------------------
12913 -- 4262811 - Generate the Accrual Reversal lines
12914 -------------------------------------------------------------------------------------------
12915 BEGIN
12916 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
12917 (g_array_event(p_event_id).array_value_num('header_index'));
12918 IF l_acc_rev_flag IS NULL THEN
12919 l_acc_rev_flag := 'N';
12920 END IF;
12921 EXCEPTION
12922 WHEN OTHERS THEN
12923 l_acc_rev_flag := 'N';
12924 END;
12925 --
12926 IF (l_acc_rev_flag = 'Y') THEN
12927
12928 -- 4645092 ------------------------------------------------------------------------------
12929 -- To allow MPA report to determine if it should generate report process
12930 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
12931 ------------------------------------------------------------------------------------------
12932
12933 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
12934 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
12935 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
12936 -- call ADRs
12937 -- Bug 4922099
12938 --
12939 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
12940 (NVL(l_actual_upg_option, 'N') = 'O') OR
12941 (NVL(l_enc_upg_option, 'N') = 'O')
12942 )
12943 THEN
12944 NULL;
12945 --
12946 --
12947
12948 l_ccid := AcctDerRule_4(
12949 p_application_id => p_application_id
12950 , p_ae_header_id => l_ae_header_id
12951 , p_source_4 => p_source_4
12952 , x_transaction_coa_id => l_adr_transaction_coa_id
12953 , x_accounting_coa_id => l_adr_accounting_coa_id
12954 , x_value_type_code => l_adr_value_type_code
12955 , p_side => 'NA'
12956 );
12957
12958 xla_ae_lines_pkg.set_ccid(
12959 p_code_combination_id => l_ccid
12960 , p_value_type_code => l_adr_value_type_code
12961 , p_transaction_coa_id => l_adr_transaction_coa_id
12962 , p_accounting_coa_id => l_adr_accounting_coa_id
12963 , p_adr_code => 'CST_DEFAULT'
12964 , p_adr_type_code => 'S'
12965 , p_component_type => l_component_type
12966 , p_component_code => l_component_code
12967 , p_component_type_code => l_component_type_code
12968 , p_component_appl_id => l_component_appl_id
12969 , p_amb_context_code => l_amb_context_code
12970 , p_side => 'NA'
12971 );
12972
12973
12974 --
12975 --
12976 END IF;
12977
12978 --
12979 -- Update the line information that should be overwritten
12980 --
12981 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
12982 p_header_num => 1);
12983 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
12984
12985 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
12986
12987 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
12988 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
12989 END IF;
12990
12991 --
12992 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
12993 --
12994 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
12995 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
12996 ELSE
12997 ---------------------------------------------------------------------------------------------------
12998 -- 4262811a Switch Sign
12999 ---------------------------------------------------------------------------------------------------
13000 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
13001 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
13002 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
13003 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
13004 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
13005 -- 5132302
13006 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
13007 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
13008
13009 END IF;
13010
13011 -- 4955764
13012 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
13013 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
13014
13015
13016 XLA_AE_LINES_PKG.ValidateCurrentLine;
13017 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
13018
13019 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
13020 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
13021 ,p_balance_type_code => l_balance_type_code);
13022
13023 END IF;
13024
13025 -----------------------------------------------------------------------------------------
13026 -- 4262811 Multiperiod Accounting
13027 -----------------------------------------------------------------------------------------
13028 -- No MPA option is assigned.
13029
13030
13031 END IF;
13032 END IF;
13033 --
13034
13035 --
13036 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13037 trace
13038 (p_msg => 'END of AcctLineType_26'
13039 ,p_level => C_LEVEL_PROCEDURE
13040 ,p_module => l_log_module);
13041 END IF;
13042 --
13043 EXCEPTION
13044 WHEN xla_exceptions_pkg.application_exception THEN
13045 RAISE;
13046 WHEN OTHERS THEN
13047 xla_exceptions_pkg.raise_message
13048 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_26');
13049 END AcctLineType_26;
13050 --
13051
13052 ---------------------------------------
13053 --
13054 -- PRIVATE FUNCTION
13055 -- AcctLineType_27
13056 --
13057 ---------------------------------------
13058 PROCEDURE AcctLineType_27 (
13059 p_application_id IN NUMBER
13060 ,p_event_id IN NUMBER
13061 ,p_calculate_acctd_flag IN VARCHAR2
13062 ,p_calculate_g_l_flag IN VARCHAR2
13063 ,p_actual_flag IN OUT VARCHAR2
13064 ,p_balance_type_code OUT VARCHAR2
13065 ,p_gain_or_loss_ref OUT VARCHAR2
13066
13067 --Cost Management Default Account
13068 , p_source_4 IN NUMBER
13069 --Applied to Application ID
13070 , p_source_6 IN NUMBER
13071 --Applied to Distribution Link Type
13072 , p_source_7 IN VARCHAR2
13073 --Applied to Entity Code
13074 , p_source_8 IN VARCHAR2
13075 --DISTRIBUTION_IDENTIFIER
13076 , p_source_11 IN NUMBER
13077 --Distribution Type
13078 , p_source_12 IN VARCHAR2
13079 , p_source_12_meaning IN VARCHAR2
13080 --Encumbrance Reversal Amount Entered
13081 , p_source_14 IN NUMBER
13082 --Entered Currency Code
13083 , p_source_15 IN VARCHAR2
13084 --Transaction Encumbrance Reversal Amount
13085 , p_source_16 IN NUMBER
13086 --Entered Amount
13087 , p_source_18 IN NUMBER
13088 --Currency Conversion Date
13089 , p_source_19 IN DATE
13090 --Currency Conversion Rate
13091 , p_source_20 IN NUMBER
13092 --Currency Conversion Type
13093 , p_source_21 IN VARCHAR2
13094 --Accounted Amount
13095 , p_source_22 IN NUMBER
13096 --Accounting Line Type
13097 , p_source_24 IN NUMBER
13098 --Costing Encumbrance Upgrade Option
13099 , p_source_27 IN VARCHAR2
13100 --TXN_PO_DISTRIBUTION_ID
13101 , p_source_28 IN NUMBER
13102 --TXN_PO_HEADER_ID
13103 , p_source_29 IN NUMBER
13104 --Requisition Budget Account
13105 , p_source_30 IN NUMBER
13106 --Requisition Encumbrance Type Identifier
13107 , p_source_31 IN NUMBER
13108 )
13109 IS
13110
13111 l_component_type VARCHAR2(80);
13112 l_component_code VARCHAR2(30);
13113 l_component_type_code VARCHAR2(1);
13114 l_component_appl_id INTEGER;
13115 l_amb_context_code VARCHAR2(30);
13116 l_entity_code VARCHAR2(30);
13117 l_event_class_code VARCHAR2(30);
13118 l_ae_header_id NUMBER;
13119 l_event_type_code VARCHAR2(30);
13120 l_line_definition_code VARCHAR2(30);
13121 l_line_definition_owner_code VARCHAR2(1);
13122 --
13123 -- adr variables
13124 l_segment VARCHAR2(30);
13125 l_ccid NUMBER;
13126 l_adr_transaction_coa_id NUMBER;
13127 l_adr_accounting_coa_id NUMBER;
13128 l_adr_flexfield_segment_code VARCHAR2(30);
13129 l_adr_flex_value_set_id NUMBER;
13130 l_adr_value_type_code VARCHAR2(30);
13131 l_adr_value_combination_id NUMBER;
13132 l_adr_value_segment_code VARCHAR2(30);
13133
13134 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
13135 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
13136 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
13137 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
13138
13139 -- 4262811 Variables ------------------------------------------------------------------------------------------
13140 l_entered_amt_idx NUMBER;
13141 l_accted_amt_idx NUMBER;
13142 l_acc_rev_flag VARCHAR2(1);
13143 l_accrual_line_num NUMBER;
13144 l_tmp_amt NUMBER;
13145 l_acc_rev_natural_side_code VARCHAR2(1);
13146
13147 l_num_entries NUMBER;
13148 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
13149 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
13150 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
13151 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
13152 l_recog_line_1 NUMBER;
13153 l_recog_line_2 NUMBER;
13154
13155 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
13156 l_bflow_applied_to_amt NUMBER; -- 5132302
13157 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
13158
13159 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
13160
13161 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
13162 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
13163
13164 ---------------------------------------------------------------------------------------------------------------
13165
13166
13167 --
13168 -- bulk performance
13169 --
13170 l_balance_type_code VARCHAR2(1);
13171 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
13172 l_log_module VARCHAR2(240);
13173
13174 --
13175 -- Upgrade strategy
13176 --
13177 l_actual_upg_option VARCHAR2(1);
13178 l_enc_upg_option VARCHAR2(1);
13179
13180 --
13181 BEGIN
13182 --
13183 IF g_log_enabled THEN
13184 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_27';
13185 END IF;
13186 --
13187 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13188
13189 trace
13190 (p_msg => 'BEGIN of AcctLineType_27'
13191 ,p_level => C_LEVEL_PROCEDURE
13192 ,p_module => l_log_module);
13193
13194 END IF;
13195 --
13196 l_component_type := 'AMB_JLT';
13197 l_component_code := 'COST_VARIANCE';
13198 l_component_type_code := 'S';
13199 l_component_appl_id := 707;
13200 l_amb_context_code := 'DEFAULT';
13201 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
13202 l_event_class_code := 'DIR_INTERORG_RCPT';
13203 l_event_type_code := 'DIR_INTERORG_RCPT_ALL';
13204 l_line_definition_owner_code := 'S';
13205 l_line_definition_code := 'DIRECT_INTERORG_RCPT';
13206 --
13207 l_balance_type_code := 'A';
13208 l_segment := NULL;
13209 l_ccid := NULL;
13210 l_adr_transaction_coa_id := NULL;
13211 l_adr_accounting_coa_id := NULL;
13212 l_adr_flexfield_segment_code := NULL;
13213 l_adr_flex_value_set_id := NULL;
13214 l_adr_value_type_code := NULL;
13215 l_adr_value_combination_id := NULL;
13216 l_adr_value_segment_code := NULL;
13217
13218 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
13219 l_bflow_class_code := ''; -- 4219869 Business Flow
13220 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
13221 l_budgetary_control_flag := 'N';
13222
13223 l_bflow_applied_to_amt_idx := NULL; -- 5132302
13224 l_bflow_applied_to_amt := NULL; -- 5132302
13225 l_entered_amt_idx := NULL; -- 4262811
13226 l_accted_amt_idx := NULL; -- 4262811
13227 l_acc_rev_flag := NULL; -- 4262811
13228 l_accrual_line_num := NULL; -- 4262811
13229 l_tmp_amt := NULL; -- 4262811
13230 --
13231
13232 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
13233 l_balance_type_code <> 'B' THEN
13234 IF NVL(p_source_24,9E125) = 13
13235 THEN
13236
13237 --
13238 XLA_AE_LINES_PKG.SetNewLine;
13239
13240 p_balance_type_code := l_balance_type_code;
13241 -- set the flag so later we will know whether the gain loss line needs to be created
13242
13243 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
13244 p_actual_flag :='A';
13245 END IF;
13246
13247 --
13248 -- bulk performance
13249 --
13250 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
13251 p_header_num => 0); -- 4262811
13252 --
13253 -- set accounting line options
13254 --
13255 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
13256 p_natural_side_code => 'D'
13257 , p_gain_or_loss_flag => 'N'
13258 , p_gl_transfer_mode_code => 'S'
13259 , p_acct_entry_type_code => 'A'
13260 , p_switch_side_flag => 'Y'
13261 , p_merge_duplicate_code => 'N'
13262 );
13263 --
13264 l_acc_rev_natural_side_code := 'C'; -- 4262811
13265 --
13266 --
13267 -- set accounting line type info
13268 --
13269 xla_ae_lines_pkg.SetAcctLineType
13270 (p_component_type => l_component_type
13271 ,p_event_type_code => l_event_type_code
13272 ,p_line_definition_owner_code => l_line_definition_owner_code
13273 ,p_line_definition_code => l_line_definition_code
13274 ,p_accounting_line_code => l_component_code
13275 ,p_accounting_line_type_code => l_component_type_code
13276 ,p_accounting_line_appl_id => l_component_appl_id
13277 ,p_amb_context_code => l_amb_context_code
13278 ,p_entity_code => l_entity_code
13279 ,p_event_class_code => l_event_class_code);
13280 --
13281 -- set accounting class
13282 --
13283 xla_ae_lines_pkg.SetAcctClass(
13284 p_accounting_class_code => 'COST_VARIANCE'
13285 , p_ae_header_id => l_ae_header_id
13286 );
13287
13288 --
13289 -- set rounding class
13290 --
13291 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
13292 'COST_VARIANCE';
13293
13294 --
13295 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
13296 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
13297 --
13298 -- bulk performance
13299 --
13300 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
13301
13302 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
13303 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
13304
13305 -- 4955764
13306 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
13307 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
13308
13309 -- 4458381 Public Sector Enh
13310
13311 --
13312 -- set accounting attributes for the line type
13313 --
13314 l_entered_amt_idx := 17;
13315 l_accted_amt_idx := 22;
13316 l_bflow_applied_to_amt_idx := NULL; -- 5132302
13317 l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
13318 l_rec_acct_attrs.array_num_value(1) := p_source_6;
13319 l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
13320 l_rec_acct_attrs.array_char_value(2) := p_source_7;
13321 l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
13322 l_rec_acct_attrs.array_char_value(3) := p_source_8;
13323 l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
13324 l_rec_acct_attrs.array_num_value(4) := to_char(p_source_28);
13325 l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
13326 l_rec_acct_attrs.array_num_value(5) := to_char(p_source_29);
13327 l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
13328 l_rec_acct_attrs.array_num_value(6) := to_char(p_source_11);
13329 l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
13330 l_rec_acct_attrs.array_char_value(7) := p_source_12;
13331 l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
13332 l_rec_acct_attrs.array_num_value(8) := TO_NUMBER(p_source_30);
13333 l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
13334 l_rec_acct_attrs.array_num_value(9) := p_source_14;
13335 l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
13336 l_rec_acct_attrs.array_char_value(10) := p_source_15;
13337 l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
13338 l_rec_acct_attrs.array_num_value(11) := p_source_16;
13339 l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
13340 l_rec_acct_attrs.array_num_value(12) := TO_NUMBER(p_source_30);
13341 l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
13342 l_rec_acct_attrs.array_num_value(13) := p_source_14;
13343 l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
13344 l_rec_acct_attrs.array_char_value(14) := p_source_15;
13345 l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
13346 l_rec_acct_attrs.array_num_value(15) := p_source_16;
13347 l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
13348 l_rec_acct_attrs.array_char_value(16) := p_source_27;
13349 l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
13350 l_rec_acct_attrs.array_num_value(17) := p_source_18;
13351 l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
13352 l_rec_acct_attrs.array_char_value(18) := p_source_15;
13353 l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
13354 l_rec_acct_attrs.array_date_value(19) := p_source_19;
13355 l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
13356 l_rec_acct_attrs.array_num_value(20) := p_source_20;
13357 l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
13358 l_rec_acct_attrs.array_char_value(21) := p_source_21;
13359 l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
13360 l_rec_acct_attrs.array_num_value(22) := p_source_22;
13361 l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
13362 l_rec_acct_attrs.array_num_value(23) := p_source_31;
13363 l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
13364 l_rec_acct_attrs.array_num_value(24) := p_source_31;
13365
13366 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
13367 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
13368
13369 ---------------------------------------------------------------------------------------------------------------
13370 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
13371 ---------------------------------------------------------------------------------------------------------------
13372 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
13373
13374 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
13375 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
13376
13377 IF xla_accounting_cache_pkg.GetValueChar
13378 (p_source_code => 'LEDGER_CATEGORY_CODE'
13379 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
13380 AND l_bflow_method_code = 'PRIOR_ENTRY'
13381 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
13382 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
13383 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
13384 )
13385 THEN
13386 xla_ae_lines_pkg.BflowUpgEntry
13387 (p_business_method_code => l_bflow_method_code
13388 ,p_business_class_code => l_bflow_class_code
13389 ,p_balance_type => l_balance_type_code);
13390 ELSE
13391 NULL;
13392 -- No business flow processing for business flow method of NONE.
13393 END IF;
13394
13395 --
13396 -- call analytical criteria
13397 --
13398
13399 --
13400 -- call description
13401 --
13402 -- No description or it is inherited.
13403 --
13404 -- call ADRs
13405 -- Bug 4922099
13406 --
13407 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
13408 (NVL(l_actual_upg_option, 'N') = 'O') OR
13409 (NVL(l_enc_upg_option, 'N') = 'O')
13410 )
13411 THEN
13412 NULL;
13413 --
13414 --
13415
13416 l_ccid := AcctDerRule_4(
13417 p_application_id => p_application_id
13418 , p_ae_header_id => l_ae_header_id
13419 , p_source_4 => p_source_4
13420 , x_transaction_coa_id => l_adr_transaction_coa_id
13421 , x_accounting_coa_id => l_adr_accounting_coa_id
13422 , x_value_type_code => l_adr_value_type_code
13423 , p_side => 'NA'
13424 );
13425
13426 xla_ae_lines_pkg.set_ccid(
13427 p_code_combination_id => l_ccid
13428 , p_value_type_code => l_adr_value_type_code
13429 , p_transaction_coa_id => l_adr_transaction_coa_id
13430 , p_accounting_coa_id => l_adr_accounting_coa_id
13431 , p_adr_code => 'CST_DEFAULT'
13432 , p_adr_type_code => 'S'
13433 , p_component_type => l_component_type
13434 , p_component_code => l_component_code
13435 , p_component_type_code => l_component_type_code
13436 , p_component_appl_id => l_component_appl_id
13437 , p_amb_context_code => l_amb_context_code
13438 , p_side => 'NA'
13439 );
13440
13441
13442 --
13443 --
13444 END IF;
13445 --
13446 -- Bug 4922099
13447 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
13448 (NVL(l_enc_upg_option, 'N') = 'O')
13449 ) AND
13450 (l_bflow_method_code = 'PRIOR_ENTRY')
13451 )
13452 THEN
13453 IF
13454 --
13455 1 = 2
13456 --
13457 THEN
13458 xla_accounting_err_pkg.build_message
13459 (p_appli_s_name => 'XLA'
13460 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
13461 ,p_token_1 => 'LINE_NUMBER'
13462 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
13463 ,p_token_2 => 'LINE_TYPE_NAME'
13464 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
13465 l_component_type
13466 ,l_component_code
13467 ,l_component_type_code
13468 ,l_component_appl_id
13469 ,l_amb_context_code
13470 ,l_entity_code
13471 ,l_event_class_code
13472 )
13473 ,p_token_3 => 'OWNER'
13474 ,p_value_3 => xla_lookups_pkg.get_meaning(
13475 p_lookup_type => 'XLA_OWNER_TYPE'
13476 ,p_lookup_code => l_component_type_code
13477 )
13478 ,p_token_4 => 'PRODUCT_NAME'
13479 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
13480 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
13481 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
13482 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
13483 ,p_ae_header_id => NULL
13484 );
13485
13486 IF (C_LEVEL_ERROR>= g_log_level) THEN
13487 trace
13488 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
13489 ,p_level => C_LEVEL_ERROR
13490 ,p_module => l_log_module);
13491 END IF;
13492 END IF;
13493 END IF;
13494 --
13495 --
13496 ------------------------------------------------------------------------------------------------
13497 -- 4219869 Business Flow
13498 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
13499 -- Prior Entry. Currently, the following code is always generated.
13500 ------------------------------------------------------------------------------------------------
13501 XLA_AE_LINES_PKG.ValidateCurrentLine;
13502
13503 ------------------------------------------------------------------------------------
13504 -- 4219869 Business Flow
13505 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
13506 ------------------------------------------------------------------------------------
13507 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
13508
13509 ----------------------------------------------------------------------------------
13510 -- 4219869 Business Flow
13511 -- Update journal entry status -- Need to generate this within IF <condition>
13512 ----------------------------------------------------------------------------------
13513 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
13514 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
13515 ,p_balance_type_code => l_balance_type_code
13516 );
13517
13518 -------------------------------------------------------------------------------------------
13519 -- 4262811 - Generate the Accrual Reversal lines
13520 -------------------------------------------------------------------------------------------
13521 BEGIN
13522 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
13523 (g_array_event(p_event_id).array_value_num('header_index'));
13524 IF l_acc_rev_flag IS NULL THEN
13525 l_acc_rev_flag := 'N';
13526 END IF;
13527 EXCEPTION
13528 WHEN OTHERS THEN
13529 l_acc_rev_flag := 'N';
13530 END;
13531 --
13532 IF (l_acc_rev_flag = 'Y') THEN
13533
13534 -- 4645092 ------------------------------------------------------------------------------
13535 -- To allow MPA report to determine if it should generate report process
13536 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
13537 ------------------------------------------------------------------------------------------
13538
13539 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
13540 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
13541 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
13542 -- call ADRs
13543 -- Bug 4922099
13544 --
13545 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
13546 (NVL(l_actual_upg_option, 'N') = 'O') OR
13547 (NVL(l_enc_upg_option, 'N') = 'O')
13548 )
13549 THEN
13550 NULL;
13551 --
13552 --
13553
13554 l_ccid := AcctDerRule_4(
13555 p_application_id => p_application_id
13556 , p_ae_header_id => l_ae_header_id
13557 , p_source_4 => p_source_4
13558 , x_transaction_coa_id => l_adr_transaction_coa_id
13559 , x_accounting_coa_id => l_adr_accounting_coa_id
13560 , x_value_type_code => l_adr_value_type_code
13561 , p_side => 'NA'
13562 );
13563
13564 xla_ae_lines_pkg.set_ccid(
13565 p_code_combination_id => l_ccid
13566 , p_value_type_code => l_adr_value_type_code
13567 , p_transaction_coa_id => l_adr_transaction_coa_id
13568 , p_accounting_coa_id => l_adr_accounting_coa_id
13569 , p_adr_code => 'CST_DEFAULT'
13570 , p_adr_type_code => 'S'
13571 , p_component_type => l_component_type
13572 , p_component_code => l_component_code
13573 , p_component_type_code => l_component_type_code
13574 , p_component_appl_id => l_component_appl_id
13575 , p_amb_context_code => l_amb_context_code
13576 , p_side => 'NA'
13577 );
13578
13579
13580 --
13581 --
13582 END IF;
13583
13584 --
13585 -- Update the line information that should be overwritten
13586 --
13587 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
13588 p_header_num => 1);
13589 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
13590
13591 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
13592
13593 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
13594 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
13595 END IF;
13596
13597 --
13598 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
13599 --
13600 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
13601 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
13602 ELSE
13603 ---------------------------------------------------------------------------------------------------
13604 -- 4262811a Switch Sign
13605 ---------------------------------------------------------------------------------------------------
13606 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
13607 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
13608 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
13609 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
13610 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
13611 -- 5132302
13612 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
13613 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
13614
13615 END IF;
13616
13617 -- 4955764
13618 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
13619 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
13620
13621
13622 XLA_AE_LINES_PKG.ValidateCurrentLine;
13623 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
13624
13625 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
13626 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
13627 ,p_balance_type_code => l_balance_type_code);
13628
13629 END IF;
13630
13631 -----------------------------------------------------------------------------------------
13632 -- 4262811 Multiperiod Accounting
13633 -----------------------------------------------------------------------------------------
13634 -- No MPA option is assigned.
13635
13636
13637 END IF;
13638 END IF;
13639 --
13640
13641 --
13642 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13643 trace
13644 (p_msg => 'END of AcctLineType_27'
13645 ,p_level => C_LEVEL_PROCEDURE
13646 ,p_module => l_log_module);
13647 END IF;
13648 --
13649 EXCEPTION
13650 WHEN xla_exceptions_pkg.application_exception THEN
13651 RAISE;
13652 WHEN OTHERS THEN
13653 xla_exceptions_pkg.raise_message
13654 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_27');
13655 END AcctLineType_27;
13656 --
13657
13658 ---------------------------------------
13659 --
13660 -- PRIVATE FUNCTION
13661 -- AcctLineType_28
13662 --
13663 ---------------------------------------
13664 PROCEDURE AcctLineType_28 (
13665 p_application_id IN NUMBER
13666 ,p_event_id IN NUMBER
13667 ,p_calculate_acctd_flag IN VARCHAR2
13668 ,p_calculate_g_l_flag IN VARCHAR2
13669 ,p_actual_flag IN OUT VARCHAR2
13670 ,p_balance_type_code OUT VARCHAR2
13671 ,p_gain_or_loss_ref OUT VARCHAR2
13672
13673 --Cost Management Default Account
13674 , p_source_4 IN NUMBER
13675 --DISTRIBUTION_IDENTIFIER
13676 , p_source_11 IN NUMBER
13677 --Distribution Type
13678 , p_source_12 IN VARCHAR2
13679 , p_source_12_meaning IN VARCHAR2
13680 --Entered Currency Code
13681 , p_source_15 IN VARCHAR2
13682 --Entered Amount
13683 , p_source_18 IN NUMBER
13684 --Currency Conversion Date
13685 , p_source_19 IN DATE
13686 --Currency Conversion Rate
13687 , p_source_20 IN NUMBER
13688 --Currency Conversion Type
13689 , p_source_21 IN VARCHAR2
13690 --Accounted Amount
13691 , p_source_22 IN NUMBER
13692 --Accounting Line Type
13693 , p_source_24 IN NUMBER
13694 )
13695 IS
13696
13697 l_component_type VARCHAR2(80);
13698 l_component_code VARCHAR2(30);
13699 l_component_type_code VARCHAR2(1);
13700 l_component_appl_id INTEGER;
13701 l_amb_context_code VARCHAR2(30);
13702 l_entity_code VARCHAR2(30);
13703 l_event_class_code VARCHAR2(30);
13704 l_ae_header_id NUMBER;
13705 l_event_type_code VARCHAR2(30);
13706 l_line_definition_code VARCHAR2(30);
13707 l_line_definition_owner_code VARCHAR2(1);
13708 --
13709 -- adr variables
13710 l_segment VARCHAR2(30);
13711 l_ccid NUMBER;
13712 l_adr_transaction_coa_id NUMBER;
13713 l_adr_accounting_coa_id NUMBER;
13714 l_adr_flexfield_segment_code VARCHAR2(30);
13715 l_adr_flex_value_set_id NUMBER;
13716 l_adr_value_type_code VARCHAR2(30);
13717 l_adr_value_combination_id NUMBER;
13718 l_adr_value_segment_code VARCHAR2(30);
13719
13720 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
13721 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
13722 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
13723 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
13724
13725 -- 4262811 Variables ------------------------------------------------------------------------------------------
13726 l_entered_amt_idx NUMBER;
13727 l_accted_amt_idx NUMBER;
13728 l_acc_rev_flag VARCHAR2(1);
13729 l_accrual_line_num NUMBER;
13730 l_tmp_amt NUMBER;
13731 l_acc_rev_natural_side_code VARCHAR2(1);
13732
13733 l_num_entries NUMBER;
13734 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
13735 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
13736 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
13737 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
13738 l_recog_line_1 NUMBER;
13739 l_recog_line_2 NUMBER;
13740
13741 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
13742 l_bflow_applied_to_amt NUMBER; -- 5132302
13743 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
13744
13745 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
13746
13747 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
13748 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
13749
13750 ---------------------------------------------------------------------------------------------------------------
13751
13752
13753 --
13754 -- bulk performance
13755 --
13756 l_balance_type_code VARCHAR2(1);
13757 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
13758 l_log_module VARCHAR2(240);
13759
13760 --
13761 -- Upgrade strategy
13762 --
13763 l_actual_upg_option VARCHAR2(1);
13764 l_enc_upg_option VARCHAR2(1);
13765
13766 --
13767 BEGIN
13768 --
13769 IF g_log_enabled THEN
13770 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_28';
13771 END IF;
13772 --
13773 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13774
13775 trace
13776 (p_msg => 'BEGIN of AcctLineType_28'
13777 ,p_level => C_LEVEL_PROCEDURE
13778 ,p_module => l_log_module);
13779
13780 END IF;
13781 --
13782 l_component_type := 'AMB_JLT';
13783 l_component_code := 'COST_VARIANCE';
13784 l_component_type_code := 'S';
13785 l_component_appl_id := 707;
13786 l_amb_context_code := 'DEFAULT';
13787 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
13788 l_event_class_code := 'FOB_SHIP_RECIPIENT_SHIP';
13789 l_event_type_code := 'FOB_SHIP_RECIPIENT_SHIP_ALL';
13790 l_line_definition_owner_code := 'S';
13791 l_line_definition_code := 'FOB_SHIP_RECIPIENT_SHIP';
13792 --
13793 l_balance_type_code := 'A';
13794 l_segment := NULL;
13795 l_ccid := NULL;
13796 l_adr_transaction_coa_id := NULL;
13797 l_adr_accounting_coa_id := NULL;
13798 l_adr_flexfield_segment_code := NULL;
13799 l_adr_flex_value_set_id := NULL;
13800 l_adr_value_type_code := NULL;
13801 l_adr_value_combination_id := NULL;
13802 l_adr_value_segment_code := NULL;
13803
13804 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
13805 l_bflow_class_code := ''; -- 4219869 Business Flow
13806 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
13807 l_budgetary_control_flag := 'N';
13808
13809 l_bflow_applied_to_amt_idx := NULL; -- 5132302
13810 l_bflow_applied_to_amt := NULL; -- 5132302
13811 l_entered_amt_idx := NULL; -- 4262811
13812 l_accted_amt_idx := NULL; -- 4262811
13813 l_acc_rev_flag := NULL; -- 4262811
13814 l_accrual_line_num := NULL; -- 4262811
13815 l_tmp_amt := NULL; -- 4262811
13816 --
13817
13818 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
13819 l_balance_type_code <> 'B' THEN
13820 IF NVL(p_source_24,9E125) = 13
13821 THEN
13822
13823 --
13824 XLA_AE_LINES_PKG.SetNewLine;
13825
13826 p_balance_type_code := l_balance_type_code;
13827 -- set the flag so later we will know whether the gain loss line needs to be created
13828
13829 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
13830 p_actual_flag :='A';
13831 END IF;
13832
13833 --
13834 -- bulk performance
13835 --
13836 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
13837 p_header_num => 0); -- 4262811
13838 --
13839 -- set accounting line options
13840 --
13841 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
13842 p_natural_side_code => 'D'
13843 , p_gain_or_loss_flag => 'N'
13844 , p_gl_transfer_mode_code => 'S'
13845 , p_acct_entry_type_code => 'A'
13846 , p_switch_side_flag => 'Y'
13847 , p_merge_duplicate_code => 'N'
13848 );
13849 --
13850 l_acc_rev_natural_side_code := 'C'; -- 4262811
13851 --
13852 --
13853 -- set accounting line type info
13854 --
13855 xla_ae_lines_pkg.SetAcctLineType
13856 (p_component_type => l_component_type
13857 ,p_event_type_code => l_event_type_code
13858 ,p_line_definition_owner_code => l_line_definition_owner_code
13859 ,p_line_definition_code => l_line_definition_code
13860 ,p_accounting_line_code => l_component_code
13861 ,p_accounting_line_type_code => l_component_type_code
13862 ,p_accounting_line_appl_id => l_component_appl_id
13863 ,p_amb_context_code => l_amb_context_code
13864 ,p_entity_code => l_entity_code
13865 ,p_event_class_code => l_event_class_code);
13866 --
13867 -- set accounting class
13868 --
13869 xla_ae_lines_pkg.SetAcctClass(
13870 p_accounting_class_code => 'COST_VARIANCE'
13871 , p_ae_header_id => l_ae_header_id
13872 );
13873
13874 --
13875 -- set rounding class
13876 --
13877 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
13878 'COST_VARIANCE';
13879
13880 --
13881 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
13882 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
13883 --
13884 -- bulk performance
13885 --
13886 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
13887
13888 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
13889 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
13890
13891 -- 4955764
13892 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
13893 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
13894
13895 -- 4458381 Public Sector Enh
13896
13897 --
13898 -- set accounting attributes for the line type
13899 --
13900 l_entered_amt_idx := 3;
13901 l_accted_amt_idx := 8;
13902 l_bflow_applied_to_amt_idx := NULL; -- 5132302
13903 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
13904 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
13905 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
13906 l_rec_acct_attrs.array_char_value(2) := p_source_12;
13907 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
13908 l_rec_acct_attrs.array_num_value(3) := p_source_18;
13909 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
13910 l_rec_acct_attrs.array_char_value(4) := p_source_15;
13911 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
13912 l_rec_acct_attrs.array_date_value(5) := p_source_19;
13913 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
13914 l_rec_acct_attrs.array_num_value(6) := p_source_20;
13915 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
13916 l_rec_acct_attrs.array_char_value(7) := p_source_21;
13917 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
13918 l_rec_acct_attrs.array_num_value(8) := p_source_22;
13919
13920 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
13921 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
13922
13923 ---------------------------------------------------------------------------------------------------------------
13924 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
13925 ---------------------------------------------------------------------------------------------------------------
13926 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
13927
13928 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
13929 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
13930
13931 IF xla_accounting_cache_pkg.GetValueChar
13932 (p_source_code => 'LEDGER_CATEGORY_CODE'
13933 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
13934 AND l_bflow_method_code = 'PRIOR_ENTRY'
13935 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
13936 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
13937 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
13938 )
13939 THEN
13940 xla_ae_lines_pkg.BflowUpgEntry
13941 (p_business_method_code => l_bflow_method_code
13942 ,p_business_class_code => l_bflow_class_code
13943 ,p_balance_type => l_balance_type_code);
13944 ELSE
13945 NULL;
13946 -- No business flow processing for business flow method of NONE.
13947 END IF;
13948
13949 --
13950 -- call analytical criteria
13951 --
13952
13953 --
13954 -- call description
13955 --
13956 -- No description or it is inherited.
13957 --
13958 -- call ADRs
13959 -- Bug 4922099
13960 --
13961 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
13962 (NVL(l_actual_upg_option, 'N') = 'O') OR
13963 (NVL(l_enc_upg_option, 'N') = 'O')
13964 )
13965 THEN
13966 NULL;
13967 --
13968 --
13969
13970 l_ccid := AcctDerRule_4(
13971 p_application_id => p_application_id
13972 , p_ae_header_id => l_ae_header_id
13973 , p_source_4 => p_source_4
13974 , x_transaction_coa_id => l_adr_transaction_coa_id
13975 , x_accounting_coa_id => l_adr_accounting_coa_id
13976 , x_value_type_code => l_adr_value_type_code
13977 , p_side => 'NA'
13978 );
13979
13980 xla_ae_lines_pkg.set_ccid(
13981 p_code_combination_id => l_ccid
13982 , p_value_type_code => l_adr_value_type_code
13983 , p_transaction_coa_id => l_adr_transaction_coa_id
13984 , p_accounting_coa_id => l_adr_accounting_coa_id
13985 , p_adr_code => 'CST_DEFAULT'
13986 , p_adr_type_code => 'S'
13987 , p_component_type => l_component_type
13988 , p_component_code => l_component_code
13989 , p_component_type_code => l_component_type_code
13990 , p_component_appl_id => l_component_appl_id
13991 , p_amb_context_code => l_amb_context_code
13992 , p_side => 'NA'
13993 );
13994
13995
13996 --
13997 --
13998 END IF;
13999 --
14000 -- Bug 4922099
14001 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
14002 (NVL(l_enc_upg_option, 'N') = 'O')
14003 ) AND
14004 (l_bflow_method_code = 'PRIOR_ENTRY')
14005 )
14006 THEN
14007 IF
14008 --
14009 1 = 2
14010 --
14011 THEN
14012 xla_accounting_err_pkg.build_message
14013 (p_appli_s_name => 'XLA'
14014 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
14015 ,p_token_1 => 'LINE_NUMBER'
14016 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
14017 ,p_token_2 => 'LINE_TYPE_NAME'
14018 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
14019 l_component_type
14020 ,l_component_code
14021 ,l_component_type_code
14022 ,l_component_appl_id
14023 ,l_amb_context_code
14024 ,l_entity_code
14025 ,l_event_class_code
14026 )
14027 ,p_token_3 => 'OWNER'
14028 ,p_value_3 => xla_lookups_pkg.get_meaning(
14029 p_lookup_type => 'XLA_OWNER_TYPE'
14030 ,p_lookup_code => l_component_type_code
14031 )
14032 ,p_token_4 => 'PRODUCT_NAME'
14033 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
14034 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
14035 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
14036 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
14037 ,p_ae_header_id => NULL
14038 );
14039
14040 IF (C_LEVEL_ERROR>= g_log_level) THEN
14041 trace
14042 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
14043 ,p_level => C_LEVEL_ERROR
14044 ,p_module => l_log_module);
14045 END IF;
14046 END IF;
14047 END IF;
14048 --
14049 --
14050 ------------------------------------------------------------------------------------------------
14051 -- 4219869 Business Flow
14052 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
14053 -- Prior Entry. Currently, the following code is always generated.
14054 ------------------------------------------------------------------------------------------------
14055 XLA_AE_LINES_PKG.ValidateCurrentLine;
14056
14057 ------------------------------------------------------------------------------------
14058 -- 4219869 Business Flow
14059 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
14060 ------------------------------------------------------------------------------------
14061 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
14062
14063 ----------------------------------------------------------------------------------
14064 -- 4219869 Business Flow
14065 -- Update journal entry status -- Need to generate this within IF <condition>
14066 ----------------------------------------------------------------------------------
14067 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
14068 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
14069 ,p_balance_type_code => l_balance_type_code
14070 );
14071
14072 -------------------------------------------------------------------------------------------
14073 -- 4262811 - Generate the Accrual Reversal lines
14074 -------------------------------------------------------------------------------------------
14075 BEGIN
14076 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
14077 (g_array_event(p_event_id).array_value_num('header_index'));
14078 IF l_acc_rev_flag IS NULL THEN
14079 l_acc_rev_flag := 'N';
14080 END IF;
14081 EXCEPTION
14082 WHEN OTHERS THEN
14083 l_acc_rev_flag := 'N';
14084 END;
14085 --
14086 IF (l_acc_rev_flag = 'Y') THEN
14087
14088 -- 4645092 ------------------------------------------------------------------------------
14089 -- To allow MPA report to determine if it should generate report process
14090 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
14091 ------------------------------------------------------------------------------------------
14092
14093 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
14094 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
14095 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
14096 -- call ADRs
14097 -- Bug 4922099
14098 --
14099 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
14100 (NVL(l_actual_upg_option, 'N') = 'O') OR
14101 (NVL(l_enc_upg_option, 'N') = 'O')
14102 )
14103 THEN
14104 NULL;
14105 --
14106 --
14107
14108 l_ccid := AcctDerRule_4(
14109 p_application_id => p_application_id
14110 , p_ae_header_id => l_ae_header_id
14111 , p_source_4 => p_source_4
14112 , x_transaction_coa_id => l_adr_transaction_coa_id
14113 , x_accounting_coa_id => l_adr_accounting_coa_id
14114 , x_value_type_code => l_adr_value_type_code
14115 , p_side => 'NA'
14116 );
14117
14118 xla_ae_lines_pkg.set_ccid(
14119 p_code_combination_id => l_ccid
14120 , p_value_type_code => l_adr_value_type_code
14121 , p_transaction_coa_id => l_adr_transaction_coa_id
14122 , p_accounting_coa_id => l_adr_accounting_coa_id
14123 , p_adr_code => 'CST_DEFAULT'
14124 , p_adr_type_code => 'S'
14125 , p_component_type => l_component_type
14126 , p_component_code => l_component_code
14127 , p_component_type_code => l_component_type_code
14128 , p_component_appl_id => l_component_appl_id
14129 , p_amb_context_code => l_amb_context_code
14130 , p_side => 'NA'
14131 );
14132
14133
14134 --
14135 --
14136 END IF;
14137
14138 --
14139 -- Update the line information that should be overwritten
14140 --
14141 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
14142 p_header_num => 1);
14143 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
14144
14145 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
14146
14147 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
14148 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
14149 END IF;
14150
14151 --
14152 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
14153 --
14154 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
14155 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
14156 ELSE
14157 ---------------------------------------------------------------------------------------------------
14158 -- 4262811a Switch Sign
14159 ---------------------------------------------------------------------------------------------------
14160 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
14161 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
14162 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
14163 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
14164 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
14165 -- 5132302
14166 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
14167 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
14168
14169 END IF;
14170
14171 -- 4955764
14172 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
14173 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
14174
14175
14176 XLA_AE_LINES_PKG.ValidateCurrentLine;
14177 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
14178
14179 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
14180 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
14181 ,p_balance_type_code => l_balance_type_code);
14182
14183 END IF;
14184
14185 -----------------------------------------------------------------------------------------
14186 -- 4262811 Multiperiod Accounting
14187 -----------------------------------------------------------------------------------------
14188 -- No MPA option is assigned.
14189
14190
14191 END IF;
14192 END IF;
14193 --
14194
14195 --
14196 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
14197 trace
14198 (p_msg => 'END of AcctLineType_28'
14199 ,p_level => C_LEVEL_PROCEDURE
14200 ,p_module => l_log_module);
14201 END IF;
14202 --
14203 EXCEPTION
14204 WHEN xla_exceptions_pkg.application_exception THEN
14205 RAISE;
14206 WHEN OTHERS THEN
14207 xla_exceptions_pkg.raise_message
14208 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_28');
14209 END AcctLineType_28;
14210 --
14211
14212 ---------------------------------------
14213 --
14214 -- PRIVATE FUNCTION
14215 -- AcctLineType_29
14216 --
14217 ---------------------------------------
14218 PROCEDURE AcctLineType_29 (
14219 p_application_id IN NUMBER
14220 ,p_event_id IN NUMBER
14221 ,p_calculate_acctd_flag IN VARCHAR2
14222 ,p_calculate_g_l_flag IN VARCHAR2
14223 ,p_actual_flag IN OUT VARCHAR2
14224 ,p_balance_type_code OUT VARCHAR2
14225 ,p_gain_or_loss_ref OUT VARCHAR2
14226
14227 --Cost Management Default Account
14228 , p_source_4 IN NUMBER
14229 --DISTRIBUTION_IDENTIFIER
14230 , p_source_11 IN NUMBER
14231 --Distribution Type
14232 , p_source_12 IN VARCHAR2
14233 , p_source_12_meaning IN VARCHAR2
14234 --Entered Currency Code
14235 , p_source_15 IN VARCHAR2
14236 --Entered Amount
14237 , p_source_18 IN NUMBER
14238 --Currency Conversion Date
14239 , p_source_19 IN DATE
14240 --Currency Conversion Rate
14241 , p_source_20 IN NUMBER
14242 --Currency Conversion Type
14243 , p_source_21 IN VARCHAR2
14244 --Accounted Amount
14245 , p_source_22 IN NUMBER
14246 --Accounting Line Type
14247 , p_source_24 IN NUMBER
14248 )
14249 IS
14250
14251 l_component_type VARCHAR2(80);
14252 l_component_code VARCHAR2(30);
14253 l_component_type_code VARCHAR2(1);
14254 l_component_appl_id INTEGER;
14255 l_amb_context_code VARCHAR2(30);
14256 l_entity_code VARCHAR2(30);
14257 l_event_class_code VARCHAR2(30);
14258 l_ae_header_id NUMBER;
14259 l_event_type_code VARCHAR2(30);
14260 l_line_definition_code VARCHAR2(30);
14261 l_line_definition_owner_code VARCHAR2(1);
14262 --
14263 -- adr variables
14264 l_segment VARCHAR2(30);
14265 l_ccid NUMBER;
14266 l_adr_transaction_coa_id NUMBER;
14267 l_adr_accounting_coa_id NUMBER;
14268 l_adr_flexfield_segment_code VARCHAR2(30);
14269 l_adr_flex_value_set_id NUMBER;
14270 l_adr_value_type_code VARCHAR2(30);
14271 l_adr_value_combination_id NUMBER;
14272 l_adr_value_segment_code VARCHAR2(30);
14273
14274 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
14275 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
14276 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
14277 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
14278
14279 -- 4262811 Variables ------------------------------------------------------------------------------------------
14280 l_entered_amt_idx NUMBER;
14281 l_accted_amt_idx NUMBER;
14282 l_acc_rev_flag VARCHAR2(1);
14283 l_accrual_line_num NUMBER;
14284 l_tmp_amt NUMBER;
14285 l_acc_rev_natural_side_code VARCHAR2(1);
14286
14287 l_num_entries NUMBER;
14288 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
14289 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
14290 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
14291 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
14292 l_recog_line_1 NUMBER;
14293 l_recog_line_2 NUMBER;
14294
14295 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
14296 l_bflow_applied_to_amt NUMBER; -- 5132302
14297 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
14298
14299 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
14300
14301 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
14302 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
14303
14304 ---------------------------------------------------------------------------------------------------------------
14305
14306
14307 --
14308 -- bulk performance
14309 --
14310 l_balance_type_code VARCHAR2(1);
14311 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
14312 l_log_module VARCHAR2(240);
14313
14314 --
14315 -- Upgrade strategy
14316 --
14317 l_actual_upg_option VARCHAR2(1);
14318 l_enc_upg_option VARCHAR2(1);
14319
14320 --
14321 BEGIN
14322 --
14323 IF g_log_enabled THEN
14324 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_29';
14325 END IF;
14326 --
14327 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
14328
14329 trace
14330 (p_msg => 'BEGIN of AcctLineType_29'
14331 ,p_level => C_LEVEL_PROCEDURE
14332 ,p_module => l_log_module);
14333
14334 END IF;
14335 --
14336 l_component_type := 'AMB_JLT';
14337 l_component_code := 'COST_VARIANCE';
14338 l_component_type_code := 'S';
14339 l_component_appl_id := 707;
14340 l_amb_context_code := 'DEFAULT';
14341 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
14342 l_event_class_code := 'INTRAORG_TXFR';
14343 l_event_type_code := 'INTRAORG_TXFR_ALL';
14344 l_line_definition_owner_code := 'S';
14345 l_line_definition_code := 'INTRAORG_TXFR';
14346 --
14347 l_balance_type_code := 'A';
14348 l_segment := NULL;
14349 l_ccid := NULL;
14350 l_adr_transaction_coa_id := NULL;
14351 l_adr_accounting_coa_id := NULL;
14352 l_adr_flexfield_segment_code := NULL;
14353 l_adr_flex_value_set_id := NULL;
14354 l_adr_value_type_code := NULL;
14355 l_adr_value_combination_id := NULL;
14356 l_adr_value_segment_code := NULL;
14357
14358 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
14359 l_bflow_class_code := ''; -- 4219869 Business Flow
14360 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
14361 l_budgetary_control_flag := 'N';
14362
14363 l_bflow_applied_to_amt_idx := NULL; -- 5132302
14364 l_bflow_applied_to_amt := NULL; -- 5132302
14365 l_entered_amt_idx := NULL; -- 4262811
14366 l_accted_amt_idx := NULL; -- 4262811
14367 l_acc_rev_flag := NULL; -- 4262811
14368 l_accrual_line_num := NULL; -- 4262811
14369 l_tmp_amt := NULL; -- 4262811
14370 --
14371
14372 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
14373 l_balance_type_code <> 'B' THEN
14374 IF NVL(p_source_24,9E125) = 13
14375 THEN
14376
14377 --
14378 XLA_AE_LINES_PKG.SetNewLine;
14379
14380 p_balance_type_code := l_balance_type_code;
14381 -- set the flag so later we will know whether the gain loss line needs to be created
14382
14383 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
14384 p_actual_flag :='A';
14385 END IF;
14386
14387 --
14388 -- bulk performance
14389 --
14390 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
14391 p_header_num => 0); -- 4262811
14392 --
14393 -- set accounting line options
14394 --
14395 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
14396 p_natural_side_code => 'D'
14397 , p_gain_or_loss_flag => 'N'
14398 , p_gl_transfer_mode_code => 'S'
14399 , p_acct_entry_type_code => 'A'
14400 , p_switch_side_flag => 'Y'
14401 , p_merge_duplicate_code => 'N'
14402 );
14403 --
14404 l_acc_rev_natural_side_code := 'C'; -- 4262811
14405 --
14406 --
14407 -- set accounting line type info
14408 --
14409 xla_ae_lines_pkg.SetAcctLineType
14410 (p_component_type => l_component_type
14411 ,p_event_type_code => l_event_type_code
14412 ,p_line_definition_owner_code => l_line_definition_owner_code
14413 ,p_line_definition_code => l_line_definition_code
14414 ,p_accounting_line_code => l_component_code
14415 ,p_accounting_line_type_code => l_component_type_code
14416 ,p_accounting_line_appl_id => l_component_appl_id
14417 ,p_amb_context_code => l_amb_context_code
14418 ,p_entity_code => l_entity_code
14419 ,p_event_class_code => l_event_class_code);
14420 --
14421 -- set accounting class
14422 --
14423 xla_ae_lines_pkg.SetAcctClass(
14424 p_accounting_class_code => 'COST_VARIANCE'
14425 , p_ae_header_id => l_ae_header_id
14426 );
14427
14428 --
14429 -- set rounding class
14430 --
14431 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
14432 'COST_VARIANCE';
14433
14434 --
14435 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
14436 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
14437 --
14438 -- bulk performance
14439 --
14440 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
14441
14442 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
14443 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
14444
14445 -- 4955764
14446 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
14447 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
14448
14449 -- 4458381 Public Sector Enh
14450
14451 --
14452 -- set accounting attributes for the line type
14453 --
14454 l_entered_amt_idx := 3;
14455 l_accted_amt_idx := 8;
14456 l_bflow_applied_to_amt_idx := NULL; -- 5132302
14457 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
14458 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
14459 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
14460 l_rec_acct_attrs.array_char_value(2) := p_source_12;
14461 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
14462 l_rec_acct_attrs.array_num_value(3) := p_source_18;
14463 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
14464 l_rec_acct_attrs.array_char_value(4) := p_source_15;
14465 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
14466 l_rec_acct_attrs.array_date_value(5) := p_source_19;
14467 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
14468 l_rec_acct_attrs.array_num_value(6) := p_source_20;
14469 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
14470 l_rec_acct_attrs.array_char_value(7) := p_source_21;
14471 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
14472 l_rec_acct_attrs.array_num_value(8) := p_source_22;
14473
14474 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
14475 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
14476
14477 ---------------------------------------------------------------------------------------------------------------
14478 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
14479 ---------------------------------------------------------------------------------------------------------------
14480 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
14481
14482 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
14483 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
14484
14485 IF xla_accounting_cache_pkg.GetValueChar
14486 (p_source_code => 'LEDGER_CATEGORY_CODE'
14487 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
14488 AND l_bflow_method_code = 'PRIOR_ENTRY'
14489 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
14490 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
14491 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
14492 )
14493 THEN
14494 xla_ae_lines_pkg.BflowUpgEntry
14495 (p_business_method_code => l_bflow_method_code
14496 ,p_business_class_code => l_bflow_class_code
14497 ,p_balance_type => l_balance_type_code);
14498 ELSE
14499 NULL;
14500 -- No business flow processing for business flow method of NONE.
14501 END IF;
14502
14503 --
14504 -- call analytical criteria
14505 --
14506
14507 --
14508 -- call description
14509 --
14510 -- No description or it is inherited.
14511 --
14512 -- call ADRs
14513 -- Bug 4922099
14514 --
14515 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
14516 (NVL(l_actual_upg_option, 'N') = 'O') OR
14517 (NVL(l_enc_upg_option, 'N') = 'O')
14518 )
14519 THEN
14520 NULL;
14521 --
14522 --
14523
14524 l_ccid := AcctDerRule_4(
14525 p_application_id => p_application_id
14526 , p_ae_header_id => l_ae_header_id
14527 , p_source_4 => p_source_4
14528 , x_transaction_coa_id => l_adr_transaction_coa_id
14529 , x_accounting_coa_id => l_adr_accounting_coa_id
14530 , x_value_type_code => l_adr_value_type_code
14531 , p_side => 'NA'
14532 );
14533
14534 xla_ae_lines_pkg.set_ccid(
14535 p_code_combination_id => l_ccid
14536 , p_value_type_code => l_adr_value_type_code
14537 , p_transaction_coa_id => l_adr_transaction_coa_id
14538 , p_accounting_coa_id => l_adr_accounting_coa_id
14539 , p_adr_code => 'CST_DEFAULT'
14540 , p_adr_type_code => 'S'
14541 , p_component_type => l_component_type
14542 , p_component_code => l_component_code
14543 , p_component_type_code => l_component_type_code
14544 , p_component_appl_id => l_component_appl_id
14545 , p_amb_context_code => l_amb_context_code
14546 , p_side => 'NA'
14547 );
14548
14549
14550 --
14551 --
14552 END IF;
14553 --
14554 -- Bug 4922099
14555 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
14556 (NVL(l_enc_upg_option, 'N') = 'O')
14557 ) AND
14558 (l_bflow_method_code = 'PRIOR_ENTRY')
14559 )
14560 THEN
14561 IF
14562 --
14563 1 = 2
14564 --
14565 THEN
14566 xla_accounting_err_pkg.build_message
14567 (p_appli_s_name => 'XLA'
14568 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
14569 ,p_token_1 => 'LINE_NUMBER'
14570 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
14571 ,p_token_2 => 'LINE_TYPE_NAME'
14572 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
14573 l_component_type
14574 ,l_component_code
14575 ,l_component_type_code
14576 ,l_component_appl_id
14577 ,l_amb_context_code
14578 ,l_entity_code
14579 ,l_event_class_code
14580 )
14581 ,p_token_3 => 'OWNER'
14582 ,p_value_3 => xla_lookups_pkg.get_meaning(
14583 p_lookup_type => 'XLA_OWNER_TYPE'
14584 ,p_lookup_code => l_component_type_code
14585 )
14586 ,p_token_4 => 'PRODUCT_NAME'
14587 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
14588 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
14589 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
14590 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
14591 ,p_ae_header_id => NULL
14592 );
14593
14594 IF (C_LEVEL_ERROR>= g_log_level) THEN
14595 trace
14596 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
14597 ,p_level => C_LEVEL_ERROR
14598 ,p_module => l_log_module);
14599 END IF;
14600 END IF;
14601 END IF;
14602 --
14603 --
14604 ------------------------------------------------------------------------------------------------
14605 -- 4219869 Business Flow
14606 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
14607 -- Prior Entry. Currently, the following code is always generated.
14608 ------------------------------------------------------------------------------------------------
14609 XLA_AE_LINES_PKG.ValidateCurrentLine;
14610
14611 ------------------------------------------------------------------------------------
14612 -- 4219869 Business Flow
14613 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
14614 ------------------------------------------------------------------------------------
14615 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
14616
14617 ----------------------------------------------------------------------------------
14618 -- 4219869 Business Flow
14619 -- Update journal entry status -- Need to generate this within IF <condition>
14620 ----------------------------------------------------------------------------------
14621 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
14622 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
14623 ,p_balance_type_code => l_balance_type_code
14624 );
14625
14626 -------------------------------------------------------------------------------------------
14627 -- 4262811 - Generate the Accrual Reversal lines
14628 -------------------------------------------------------------------------------------------
14629 BEGIN
14630 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
14631 (g_array_event(p_event_id).array_value_num('header_index'));
14632 IF l_acc_rev_flag IS NULL THEN
14633 l_acc_rev_flag := 'N';
14634 END IF;
14635 EXCEPTION
14636 WHEN OTHERS THEN
14637 l_acc_rev_flag := 'N';
14638 END;
14639 --
14640 IF (l_acc_rev_flag = 'Y') THEN
14641
14642 -- 4645092 ------------------------------------------------------------------------------
14643 -- To allow MPA report to determine if it should generate report process
14644 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
14645 ------------------------------------------------------------------------------------------
14646
14647 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
14648 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
14649 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
14650 -- call ADRs
14651 -- Bug 4922099
14652 --
14653 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
14654 (NVL(l_actual_upg_option, 'N') = 'O') OR
14655 (NVL(l_enc_upg_option, 'N') = 'O')
14656 )
14657 THEN
14658 NULL;
14659 --
14660 --
14661
14662 l_ccid := AcctDerRule_4(
14663 p_application_id => p_application_id
14664 , p_ae_header_id => l_ae_header_id
14665 , p_source_4 => p_source_4
14666 , x_transaction_coa_id => l_adr_transaction_coa_id
14667 , x_accounting_coa_id => l_adr_accounting_coa_id
14668 , x_value_type_code => l_adr_value_type_code
14669 , p_side => 'NA'
14670 );
14671
14672 xla_ae_lines_pkg.set_ccid(
14673 p_code_combination_id => l_ccid
14674 , p_value_type_code => l_adr_value_type_code
14675 , p_transaction_coa_id => l_adr_transaction_coa_id
14676 , p_accounting_coa_id => l_adr_accounting_coa_id
14677 , p_adr_code => 'CST_DEFAULT'
14678 , p_adr_type_code => 'S'
14679 , p_component_type => l_component_type
14680 , p_component_code => l_component_code
14681 , p_component_type_code => l_component_type_code
14682 , p_component_appl_id => l_component_appl_id
14683 , p_amb_context_code => l_amb_context_code
14684 , p_side => 'NA'
14685 );
14686
14687
14688 --
14689 --
14690 END IF;
14691
14692 --
14693 -- Update the line information that should be overwritten
14694 --
14695 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
14696 p_header_num => 1);
14697 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
14698
14699 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
14700
14701 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
14702 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
14703 END IF;
14704
14705 --
14706 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
14707 --
14708 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
14709 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
14710 ELSE
14711 ---------------------------------------------------------------------------------------------------
14712 -- 4262811a Switch Sign
14713 ---------------------------------------------------------------------------------------------------
14714 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
14715 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
14716 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
14717 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
14718 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
14719 -- 5132302
14720 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
14721 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
14722
14723 END IF;
14724
14725 -- 4955764
14726 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
14727 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
14728
14729
14730 XLA_AE_LINES_PKG.ValidateCurrentLine;
14731 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
14732
14733 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
14734 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
14735 ,p_balance_type_code => l_balance_type_code);
14736
14737 END IF;
14738
14739 -----------------------------------------------------------------------------------------
14740 -- 4262811 Multiperiod Accounting
14741 -----------------------------------------------------------------------------------------
14742 -- No MPA option is assigned.
14743
14744
14745 END IF;
14746 END IF;
14747 --
14748
14749 --
14750 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
14751 trace
14752 (p_msg => 'END of AcctLineType_29'
14753 ,p_level => C_LEVEL_PROCEDURE
14754 ,p_module => l_log_module);
14755 END IF;
14756 --
14757 EXCEPTION
14758 WHEN xla_exceptions_pkg.application_exception THEN
14759 RAISE;
14760 WHEN OTHERS THEN
14761 xla_exceptions_pkg.raise_message
14762 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_29');
14763 END AcctLineType_29;
14764 --
14765
14766 ---------------------------------------
14767 --
14768 -- PRIVATE FUNCTION
14769 -- AcctLineType_30
14770 --
14771 ---------------------------------------
14772 PROCEDURE AcctLineType_30 (
14773 p_application_id IN NUMBER
14774 ,p_event_id IN NUMBER
14775 ,p_calculate_acctd_flag IN VARCHAR2
14776 ,p_calculate_g_l_flag IN VARCHAR2
14777 ,p_actual_flag IN OUT VARCHAR2
14778 ,p_balance_type_code OUT VARCHAR2
14779 ,p_gain_or_loss_ref OUT VARCHAR2
14780
14781 --Cost Management Default Account
14782 , p_source_4 IN NUMBER
14783 --DISTRIBUTION_IDENTIFIER
14784 , p_source_11 IN NUMBER
14785 --Distribution Type
14786 , p_source_12 IN VARCHAR2
14787 , p_source_12_meaning IN VARCHAR2
14788 --Entered Currency Code
14789 , p_source_15 IN VARCHAR2
14790 --Entered Amount
14791 , p_source_18 IN NUMBER
14792 --Currency Conversion Date
14793 , p_source_19 IN DATE
14794 --Currency Conversion Rate
14795 , p_source_20 IN NUMBER
14796 --Currency Conversion Type
14797 , p_source_21 IN VARCHAR2
14798 --Accounted Amount
14799 , p_source_22 IN NUMBER
14800 --Accounting Line Type
14801 , p_source_24 IN NUMBER
14802 )
14803 IS
14804
14805 l_component_type VARCHAR2(80);
14806 l_component_code VARCHAR2(30);
14807 l_component_type_code VARCHAR2(1);
14808 l_component_appl_id INTEGER;
14809 l_amb_context_code VARCHAR2(30);
14810 l_entity_code VARCHAR2(30);
14811 l_event_class_code VARCHAR2(30);
14812 l_ae_header_id NUMBER;
14813 l_event_type_code VARCHAR2(30);
14814 l_line_definition_code VARCHAR2(30);
14815 l_line_definition_owner_code VARCHAR2(1);
14816 --
14817 -- adr variables
14818 l_segment VARCHAR2(30);
14819 l_ccid NUMBER;
14820 l_adr_transaction_coa_id NUMBER;
14821 l_adr_accounting_coa_id NUMBER;
14822 l_adr_flexfield_segment_code VARCHAR2(30);
14823 l_adr_flex_value_set_id NUMBER;
14824 l_adr_value_type_code VARCHAR2(30);
14825 l_adr_value_combination_id NUMBER;
14826 l_adr_value_segment_code VARCHAR2(30);
14827
14828 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
14829 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
14830 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
14831 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
14832
14833 -- 4262811 Variables ------------------------------------------------------------------------------------------
14834 l_entered_amt_idx NUMBER;
14835 l_accted_amt_idx NUMBER;
14836 l_acc_rev_flag VARCHAR2(1);
14837 l_accrual_line_num NUMBER;
14838 l_tmp_amt NUMBER;
14839 l_acc_rev_natural_side_code VARCHAR2(1);
14840
14841 l_num_entries NUMBER;
14842 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
14843 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
14844 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
14845 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
14846 l_recog_line_1 NUMBER;
14847 l_recog_line_2 NUMBER;
14848
14849 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
14850 l_bflow_applied_to_amt NUMBER; -- 5132302
14851 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
14852
14853 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
14854
14855 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
14856 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
14857
14858 ---------------------------------------------------------------------------------------------------------------
14859
14860
14861 --
14862 -- bulk performance
14863 --
14864 l_balance_type_code VARCHAR2(1);
14865 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
14866 l_log_module VARCHAR2(240);
14867
14868 --
14869 -- Upgrade strategy
14870 --
14871 l_actual_upg_option VARCHAR2(1);
14872 l_enc_upg_option VARCHAR2(1);
14873
14874 --
14875 BEGIN
14876 --
14877 IF g_log_enabled THEN
14878 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_30';
14879 END IF;
14880 --
14881 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
14882
14883 trace
14884 (p_msg => 'BEGIN of AcctLineType_30'
14885 ,p_level => C_LEVEL_PROCEDURE
14886 ,p_module => l_log_module);
14887
14888 END IF;
14889 --
14890 l_component_type := 'AMB_JLT';
14891 l_component_code := 'COST_VARIANCE';
14892 l_component_type_code := 'S';
14893 l_component_appl_id := 707;
14894 l_amb_context_code := 'DEFAULT';
14895 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
14896 l_event_class_code := 'USER_DEFINE';
14897 l_event_type_code := 'UFOB_SHIP_RECIPIENT_SHIP_TP';
14898 l_line_definition_owner_code := 'S';
14899 l_line_definition_code := 'USER_FOB_SHIP_RECP_SHIP_TP';
14900 --
14901 l_balance_type_code := 'A';
14902 l_segment := NULL;
14903 l_ccid := NULL;
14904 l_adr_transaction_coa_id := NULL;
14905 l_adr_accounting_coa_id := NULL;
14906 l_adr_flexfield_segment_code := NULL;
14907 l_adr_flex_value_set_id := NULL;
14908 l_adr_value_type_code := NULL;
14909 l_adr_value_combination_id := NULL;
14910 l_adr_value_segment_code := NULL;
14911
14912 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
14913 l_bflow_class_code := ''; -- 4219869 Business Flow
14914 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
14915 l_budgetary_control_flag := 'N';
14916
14917 l_bflow_applied_to_amt_idx := NULL; -- 5132302
14918 l_bflow_applied_to_amt := NULL; -- 5132302
14919 l_entered_amt_idx := NULL; -- 4262811
14920 l_accted_amt_idx := NULL; -- 4262811
14921 l_acc_rev_flag := NULL; -- 4262811
14922 l_accrual_line_num := NULL; -- 4262811
14923 l_tmp_amt := NULL; -- 4262811
14924 --
14925
14926 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
14927 l_balance_type_code <> 'B' THEN
14928 IF NVL(p_source_24,9E125) = 13
14929 THEN
14930
14931 --
14932 XLA_AE_LINES_PKG.SetNewLine;
14933
14934 p_balance_type_code := l_balance_type_code;
14935 -- set the flag so later we will know whether the gain loss line needs to be created
14936
14937 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
14938 p_actual_flag :='A';
14939 END IF;
14940
14941 --
14942 -- bulk performance
14943 --
14944 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
14945 p_header_num => 0); -- 4262811
14946 --
14947 -- set accounting line options
14948 --
14949 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
14950 p_natural_side_code => 'D'
14951 , p_gain_or_loss_flag => 'N'
14952 , p_gl_transfer_mode_code => 'S'
14953 , p_acct_entry_type_code => 'A'
14954 , p_switch_side_flag => 'Y'
14955 , p_merge_duplicate_code => 'N'
14956 );
14957 --
14958 l_acc_rev_natural_side_code := 'C'; -- 4262811
14959 --
14960 --
14961 -- set accounting line type info
14962 --
14963 xla_ae_lines_pkg.SetAcctLineType
14964 (p_component_type => l_component_type
14965 ,p_event_type_code => l_event_type_code
14966 ,p_line_definition_owner_code => l_line_definition_owner_code
14967 ,p_line_definition_code => l_line_definition_code
14968 ,p_accounting_line_code => l_component_code
14969 ,p_accounting_line_type_code => l_component_type_code
14970 ,p_accounting_line_appl_id => l_component_appl_id
14971 ,p_amb_context_code => l_amb_context_code
14972 ,p_entity_code => l_entity_code
14973 ,p_event_class_code => l_event_class_code);
14974 --
14975 -- set accounting class
14976 --
14977 xla_ae_lines_pkg.SetAcctClass(
14978 p_accounting_class_code => 'COST_VARIANCE'
14979 , p_ae_header_id => l_ae_header_id
14980 );
14981
14982 --
14983 -- set rounding class
14984 --
14985 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
14986 'COST_VARIANCE';
14987
14988 --
14989 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
14990 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
14991 --
14992 -- bulk performance
14993 --
14994 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
14995
14996 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
14997 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
14998
14999 -- 4955764
15000 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
15001 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
15002
15003 -- 4458381 Public Sector Enh
15004
15005 --
15006 -- set accounting attributes for the line type
15007 --
15008 l_entered_amt_idx := 3;
15009 l_accted_amt_idx := 8;
15010 l_bflow_applied_to_amt_idx := NULL; -- 5132302
15011 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
15012 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
15013 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
15014 l_rec_acct_attrs.array_char_value(2) := p_source_12;
15015 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
15016 l_rec_acct_attrs.array_num_value(3) := p_source_18;
15017 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
15018 l_rec_acct_attrs.array_char_value(4) := p_source_15;
15019 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
15020 l_rec_acct_attrs.array_date_value(5) := p_source_19;
15021 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
15022 l_rec_acct_attrs.array_num_value(6) := p_source_20;
15023 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
15024 l_rec_acct_attrs.array_char_value(7) := p_source_21;
15025 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
15026 l_rec_acct_attrs.array_num_value(8) := p_source_22;
15027
15028 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
15029 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
15030
15031 ---------------------------------------------------------------------------------------------------------------
15032 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
15033 ---------------------------------------------------------------------------------------------------------------
15034 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
15035
15036 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
15037 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
15038
15039 IF xla_accounting_cache_pkg.GetValueChar
15040 (p_source_code => 'LEDGER_CATEGORY_CODE'
15041 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
15042 AND l_bflow_method_code = 'PRIOR_ENTRY'
15043 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
15044 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
15045 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
15046 )
15047 THEN
15048 xla_ae_lines_pkg.BflowUpgEntry
15049 (p_business_method_code => l_bflow_method_code
15050 ,p_business_class_code => l_bflow_class_code
15051 ,p_balance_type => l_balance_type_code);
15052 ELSE
15053 NULL;
15054 -- No business flow processing for business flow method of NONE.
15055 END IF;
15056
15057 --
15058 -- call analytical criteria
15059 --
15060
15061 --
15062 -- call description
15063 --
15064 -- No description or it is inherited.
15065 --
15066 -- call ADRs
15067 -- Bug 4922099
15068 --
15069 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
15070 (NVL(l_actual_upg_option, 'N') = 'O') OR
15071 (NVL(l_enc_upg_option, 'N') = 'O')
15072 )
15073 THEN
15074 NULL;
15075 --
15076 --
15077
15078 l_ccid := AcctDerRule_4(
15079 p_application_id => p_application_id
15080 , p_ae_header_id => l_ae_header_id
15081 , p_source_4 => p_source_4
15082 , x_transaction_coa_id => l_adr_transaction_coa_id
15083 , x_accounting_coa_id => l_adr_accounting_coa_id
15084 , x_value_type_code => l_adr_value_type_code
15085 , p_side => 'NA'
15086 );
15087
15088 xla_ae_lines_pkg.set_ccid(
15089 p_code_combination_id => l_ccid
15090 , p_value_type_code => l_adr_value_type_code
15091 , p_transaction_coa_id => l_adr_transaction_coa_id
15092 , p_accounting_coa_id => l_adr_accounting_coa_id
15093 , p_adr_code => 'CST_DEFAULT'
15094 , p_adr_type_code => 'S'
15095 , p_component_type => l_component_type
15096 , p_component_code => l_component_code
15097 , p_component_type_code => l_component_type_code
15098 , p_component_appl_id => l_component_appl_id
15099 , p_amb_context_code => l_amb_context_code
15100 , p_side => 'NA'
15101 );
15102
15103
15104 --
15105 --
15106 END IF;
15107 --
15108 -- Bug 4922099
15109 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
15110 (NVL(l_enc_upg_option, 'N') = 'O')
15111 ) AND
15112 (l_bflow_method_code = 'PRIOR_ENTRY')
15113 )
15114 THEN
15115 IF
15116 --
15117 1 = 2
15118 --
15119 THEN
15120 xla_accounting_err_pkg.build_message
15121 (p_appli_s_name => 'XLA'
15122 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
15123 ,p_token_1 => 'LINE_NUMBER'
15124 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
15125 ,p_token_2 => 'LINE_TYPE_NAME'
15126 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
15127 l_component_type
15128 ,l_component_code
15129 ,l_component_type_code
15130 ,l_component_appl_id
15131 ,l_amb_context_code
15132 ,l_entity_code
15133 ,l_event_class_code
15134 )
15135 ,p_token_3 => 'OWNER'
15136 ,p_value_3 => xla_lookups_pkg.get_meaning(
15137 p_lookup_type => 'XLA_OWNER_TYPE'
15138 ,p_lookup_code => l_component_type_code
15139 )
15140 ,p_token_4 => 'PRODUCT_NAME'
15141 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
15142 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
15143 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
15144 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
15145 ,p_ae_header_id => NULL
15146 );
15147
15148 IF (C_LEVEL_ERROR>= g_log_level) THEN
15149 trace
15150 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
15151 ,p_level => C_LEVEL_ERROR
15152 ,p_module => l_log_module);
15153 END IF;
15154 END IF;
15155 END IF;
15156 --
15157 --
15158 ------------------------------------------------------------------------------------------------
15159 -- 4219869 Business Flow
15160 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
15161 -- Prior Entry. Currently, the following code is always generated.
15162 ------------------------------------------------------------------------------------------------
15163 XLA_AE_LINES_PKG.ValidateCurrentLine;
15164
15165 ------------------------------------------------------------------------------------
15166 -- 4219869 Business Flow
15167 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
15168 ------------------------------------------------------------------------------------
15169 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
15170
15171 ----------------------------------------------------------------------------------
15172 -- 4219869 Business Flow
15173 -- Update journal entry status -- Need to generate this within IF <condition>
15174 ----------------------------------------------------------------------------------
15175 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
15176 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
15177 ,p_balance_type_code => l_balance_type_code
15178 );
15179
15180 -------------------------------------------------------------------------------------------
15181 -- 4262811 - Generate the Accrual Reversal lines
15182 -------------------------------------------------------------------------------------------
15183 BEGIN
15184 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
15185 (g_array_event(p_event_id).array_value_num('header_index'));
15186 IF l_acc_rev_flag IS NULL THEN
15187 l_acc_rev_flag := 'N';
15188 END IF;
15189 EXCEPTION
15190 WHEN OTHERS THEN
15191 l_acc_rev_flag := 'N';
15192 END;
15193 --
15194 IF (l_acc_rev_flag = 'Y') THEN
15195
15196 -- 4645092 ------------------------------------------------------------------------------
15197 -- To allow MPA report to determine if it should generate report process
15198 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
15199 ------------------------------------------------------------------------------------------
15200
15201 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
15202 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
15203 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
15204 -- call ADRs
15205 -- Bug 4922099
15206 --
15207 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
15208 (NVL(l_actual_upg_option, 'N') = 'O') OR
15209 (NVL(l_enc_upg_option, 'N') = 'O')
15210 )
15211 THEN
15212 NULL;
15213 --
15214 --
15215
15216 l_ccid := AcctDerRule_4(
15217 p_application_id => p_application_id
15218 , p_ae_header_id => l_ae_header_id
15219 , p_source_4 => p_source_4
15220 , x_transaction_coa_id => l_adr_transaction_coa_id
15221 , x_accounting_coa_id => l_adr_accounting_coa_id
15222 , x_value_type_code => l_adr_value_type_code
15223 , p_side => 'NA'
15224 );
15225
15226 xla_ae_lines_pkg.set_ccid(
15227 p_code_combination_id => l_ccid
15228 , p_value_type_code => l_adr_value_type_code
15229 , p_transaction_coa_id => l_adr_transaction_coa_id
15230 , p_accounting_coa_id => l_adr_accounting_coa_id
15231 , p_adr_code => 'CST_DEFAULT'
15232 , p_adr_type_code => 'S'
15233 , p_component_type => l_component_type
15234 , p_component_code => l_component_code
15235 , p_component_type_code => l_component_type_code
15236 , p_component_appl_id => l_component_appl_id
15237 , p_amb_context_code => l_amb_context_code
15238 , p_side => 'NA'
15239 );
15240
15241
15242 --
15243 --
15244 END IF;
15245
15246 --
15247 -- Update the line information that should be overwritten
15248 --
15249 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
15250 p_header_num => 1);
15251 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
15252
15253 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
15254
15255 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
15256 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
15257 END IF;
15258
15259 --
15260 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
15261 --
15262 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
15263 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
15264 ELSE
15265 ---------------------------------------------------------------------------------------------------
15266 -- 4262811a Switch Sign
15267 ---------------------------------------------------------------------------------------------------
15268 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
15269 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
15270 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
15271 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
15272 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
15273 -- 5132302
15274 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
15275 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
15276
15277 END IF;
15278
15279 -- 4955764
15280 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
15281 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
15282
15283
15284 XLA_AE_LINES_PKG.ValidateCurrentLine;
15285 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
15286
15287 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
15288 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
15289 ,p_balance_type_code => l_balance_type_code);
15290
15291 END IF;
15292
15293 -----------------------------------------------------------------------------------------
15294 -- 4262811 Multiperiod Accounting
15295 -----------------------------------------------------------------------------------------
15296 -- No MPA option is assigned.
15297
15298
15299 END IF;
15300 END IF;
15301 --
15302
15303 --
15304 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
15305 trace
15306 (p_msg => 'END of AcctLineType_30'
15307 ,p_level => C_LEVEL_PROCEDURE
15308 ,p_module => l_log_module);
15309 END IF;
15310 --
15311 EXCEPTION
15312 WHEN xla_exceptions_pkg.application_exception THEN
15313 RAISE;
15314 WHEN OTHERS THEN
15315 xla_exceptions_pkg.raise_message
15316 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_30');
15317 END AcctLineType_30;
15318 --
15319
15320 ---------------------------------------
15321 --
15322 -- PRIVATE FUNCTION
15323 -- AcctLineType_31
15324 --
15325 ---------------------------------------
15326 PROCEDURE AcctLineType_31 (
15327 p_application_id IN NUMBER
15328 ,p_event_id IN NUMBER
15329 ,p_calculate_acctd_flag IN VARCHAR2
15330 ,p_calculate_g_l_flag IN VARCHAR2
15331 ,p_actual_flag IN OUT VARCHAR2
15332 ,p_balance_type_code OUT VARCHAR2
15333 ,p_gain_or_loss_ref OUT VARCHAR2
15334
15335 --Cost Management Default Account
15336 , p_source_4 IN NUMBER
15337 --DISTRIBUTION_IDENTIFIER
15338 , p_source_11 IN NUMBER
15339 --Distribution Type
15340 , p_source_12 IN VARCHAR2
15341 , p_source_12_meaning IN VARCHAR2
15342 --Entered Currency Code
15343 , p_source_15 IN VARCHAR2
15344 --Entered Amount
15345 , p_source_18 IN NUMBER
15346 --Currency Conversion Date
15347 , p_source_19 IN DATE
15348 --Currency Conversion Rate
15349 , p_source_20 IN NUMBER
15350 --Currency Conversion Type
15351 , p_source_21 IN VARCHAR2
15352 --Accounted Amount
15353 , p_source_22 IN NUMBER
15354 --Accounting Line Type
15355 , p_source_24 IN NUMBER
15356 )
15357 IS
15358
15359 l_component_type VARCHAR2(80);
15360 l_component_code VARCHAR2(30);
15361 l_component_type_code VARCHAR2(1);
15362 l_component_appl_id INTEGER;
15363 l_amb_context_code VARCHAR2(30);
15364 l_entity_code VARCHAR2(30);
15365 l_event_class_code VARCHAR2(30);
15366 l_ae_header_id NUMBER;
15367 l_event_type_code VARCHAR2(30);
15368 l_line_definition_code VARCHAR2(30);
15369 l_line_definition_owner_code VARCHAR2(1);
15370 --
15371 -- adr variables
15372 l_segment VARCHAR2(30);
15373 l_ccid NUMBER;
15374 l_adr_transaction_coa_id NUMBER;
15375 l_adr_accounting_coa_id NUMBER;
15376 l_adr_flexfield_segment_code VARCHAR2(30);
15377 l_adr_flex_value_set_id NUMBER;
15378 l_adr_value_type_code VARCHAR2(30);
15379 l_adr_value_combination_id NUMBER;
15380 l_adr_value_segment_code VARCHAR2(30);
15381
15382 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
15383 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
15384 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
15385 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
15386
15387 -- 4262811 Variables ------------------------------------------------------------------------------------------
15388 l_entered_amt_idx NUMBER;
15389 l_accted_amt_idx NUMBER;
15390 l_acc_rev_flag VARCHAR2(1);
15391 l_accrual_line_num NUMBER;
15392 l_tmp_amt NUMBER;
15393 l_acc_rev_natural_side_code VARCHAR2(1);
15394
15395 l_num_entries NUMBER;
15396 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
15397 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
15398 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
15399 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
15400 l_recog_line_1 NUMBER;
15401 l_recog_line_2 NUMBER;
15402
15403 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
15404 l_bflow_applied_to_amt NUMBER; -- 5132302
15405 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
15406
15407 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
15408
15409 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
15410 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
15411
15412 ---------------------------------------------------------------------------------------------------------------
15413
15414
15415 --
15416 -- bulk performance
15417 --
15418 l_balance_type_code VARCHAR2(1);
15419 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
15420 l_log_module VARCHAR2(240);
15421
15422 --
15423 -- Upgrade strategy
15424 --
15425 l_actual_upg_option VARCHAR2(1);
15426 l_enc_upg_option VARCHAR2(1);
15427
15428 --
15429 BEGIN
15430 --
15431 IF g_log_enabled THEN
15432 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_31';
15433 END IF;
15434 --
15435 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
15436
15437 trace
15438 (p_msg => 'BEGIN of AcctLineType_31'
15439 ,p_level => C_LEVEL_PROCEDURE
15440 ,p_module => l_log_module);
15441
15442 END IF;
15443 --
15444 l_component_type := 'AMB_JLT';
15445 l_component_code := 'COST_VARIANCE';
15446 l_component_type_code := 'S';
15447 l_component_appl_id := 707;
15448 l_amb_context_code := 'DEFAULT';
15449 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
15450 l_event_class_code := 'USER_DEFINE';
15451 l_event_type_code := 'UDIR_INTERORG_RCPT_TP';
15452 l_line_definition_owner_code := 'S';
15453 l_line_definition_code := 'USER_DIR_INTERORG_RCPT_TP';
15454 --
15455 l_balance_type_code := 'A';
15456 l_segment := NULL;
15457 l_ccid := NULL;
15458 l_adr_transaction_coa_id := NULL;
15459 l_adr_accounting_coa_id := NULL;
15460 l_adr_flexfield_segment_code := NULL;
15461 l_adr_flex_value_set_id := NULL;
15462 l_adr_value_type_code := NULL;
15463 l_adr_value_combination_id := NULL;
15464 l_adr_value_segment_code := NULL;
15465
15466 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
15467 l_bflow_class_code := ''; -- 4219869 Business Flow
15468 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
15469 l_budgetary_control_flag := 'N';
15470
15471 l_bflow_applied_to_amt_idx := NULL; -- 5132302
15472 l_bflow_applied_to_amt := NULL; -- 5132302
15473 l_entered_amt_idx := NULL; -- 4262811
15474 l_accted_amt_idx := NULL; -- 4262811
15475 l_acc_rev_flag := NULL; -- 4262811
15476 l_accrual_line_num := NULL; -- 4262811
15477 l_tmp_amt := NULL; -- 4262811
15478 --
15479
15480 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
15481 l_balance_type_code <> 'B' THEN
15482 IF NVL(p_source_24,9E125) = 13
15483 THEN
15484
15485 --
15486 XLA_AE_LINES_PKG.SetNewLine;
15487
15488 p_balance_type_code := l_balance_type_code;
15489 -- set the flag so later we will know whether the gain loss line needs to be created
15490
15491 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
15492 p_actual_flag :='A';
15493 END IF;
15494
15495 --
15496 -- bulk performance
15497 --
15498 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
15499 p_header_num => 0); -- 4262811
15500 --
15501 -- set accounting line options
15502 --
15503 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
15504 p_natural_side_code => 'D'
15505 , p_gain_or_loss_flag => 'N'
15506 , p_gl_transfer_mode_code => 'S'
15507 , p_acct_entry_type_code => 'A'
15508 , p_switch_side_flag => 'Y'
15509 , p_merge_duplicate_code => 'N'
15510 );
15511 --
15512 l_acc_rev_natural_side_code := 'C'; -- 4262811
15513 --
15514 --
15515 -- set accounting line type info
15516 --
15517 xla_ae_lines_pkg.SetAcctLineType
15518 (p_component_type => l_component_type
15519 ,p_event_type_code => l_event_type_code
15520 ,p_line_definition_owner_code => l_line_definition_owner_code
15521 ,p_line_definition_code => l_line_definition_code
15522 ,p_accounting_line_code => l_component_code
15523 ,p_accounting_line_type_code => l_component_type_code
15524 ,p_accounting_line_appl_id => l_component_appl_id
15525 ,p_amb_context_code => l_amb_context_code
15526 ,p_entity_code => l_entity_code
15527 ,p_event_class_code => l_event_class_code);
15528 --
15529 -- set accounting class
15530 --
15531 xla_ae_lines_pkg.SetAcctClass(
15532 p_accounting_class_code => 'COST_VARIANCE'
15533 , p_ae_header_id => l_ae_header_id
15534 );
15535
15536 --
15537 -- set rounding class
15538 --
15539 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
15540 'COST_VARIANCE';
15541
15542 --
15543 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
15544 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
15545 --
15546 -- bulk performance
15547 --
15548 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
15549
15550 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
15551 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
15552
15553 -- 4955764
15554 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
15555 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
15556
15557 -- 4458381 Public Sector Enh
15558
15559 --
15560 -- set accounting attributes for the line type
15561 --
15562 l_entered_amt_idx := 3;
15563 l_accted_amt_idx := 8;
15564 l_bflow_applied_to_amt_idx := NULL; -- 5132302
15565 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
15566 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
15567 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
15568 l_rec_acct_attrs.array_char_value(2) := p_source_12;
15569 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
15570 l_rec_acct_attrs.array_num_value(3) := p_source_18;
15571 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
15572 l_rec_acct_attrs.array_char_value(4) := p_source_15;
15573 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
15574 l_rec_acct_attrs.array_date_value(5) := p_source_19;
15575 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
15576 l_rec_acct_attrs.array_num_value(6) := p_source_20;
15577 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
15578 l_rec_acct_attrs.array_char_value(7) := p_source_21;
15579 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
15580 l_rec_acct_attrs.array_num_value(8) := p_source_22;
15581
15582 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
15583 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
15584
15585 ---------------------------------------------------------------------------------------------------------------
15586 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
15587 ---------------------------------------------------------------------------------------------------------------
15588 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
15589
15590 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
15591 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
15592
15593 IF xla_accounting_cache_pkg.GetValueChar
15594 (p_source_code => 'LEDGER_CATEGORY_CODE'
15595 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
15596 AND l_bflow_method_code = 'PRIOR_ENTRY'
15597 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
15598 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
15599 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
15600 )
15601 THEN
15602 xla_ae_lines_pkg.BflowUpgEntry
15603 (p_business_method_code => l_bflow_method_code
15604 ,p_business_class_code => l_bflow_class_code
15605 ,p_balance_type => l_balance_type_code);
15606 ELSE
15607 NULL;
15608 -- No business flow processing for business flow method of NONE.
15609 END IF;
15610
15611 --
15612 -- call analytical criteria
15613 --
15614
15615 --
15616 -- call description
15617 --
15618 -- No description or it is inherited.
15619 --
15620 -- call ADRs
15621 -- Bug 4922099
15622 --
15623 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
15624 (NVL(l_actual_upg_option, 'N') = 'O') OR
15625 (NVL(l_enc_upg_option, 'N') = 'O')
15626 )
15627 THEN
15628 NULL;
15629 --
15630 --
15631
15632 l_ccid := AcctDerRule_4(
15633 p_application_id => p_application_id
15634 , p_ae_header_id => l_ae_header_id
15635 , p_source_4 => p_source_4
15636 , x_transaction_coa_id => l_adr_transaction_coa_id
15637 , x_accounting_coa_id => l_adr_accounting_coa_id
15638 , x_value_type_code => l_adr_value_type_code
15639 , p_side => 'NA'
15640 );
15641
15642 xla_ae_lines_pkg.set_ccid(
15643 p_code_combination_id => l_ccid
15644 , p_value_type_code => l_adr_value_type_code
15645 , p_transaction_coa_id => l_adr_transaction_coa_id
15646 , p_accounting_coa_id => l_adr_accounting_coa_id
15647 , p_adr_code => 'CST_DEFAULT'
15648 , p_adr_type_code => 'S'
15649 , p_component_type => l_component_type
15650 , p_component_code => l_component_code
15651 , p_component_type_code => l_component_type_code
15652 , p_component_appl_id => l_component_appl_id
15653 , p_amb_context_code => l_amb_context_code
15654 , p_side => 'NA'
15655 );
15656
15657
15658 --
15659 --
15660 END IF;
15661 --
15662 -- Bug 4922099
15663 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
15664 (NVL(l_enc_upg_option, 'N') = 'O')
15665 ) AND
15666 (l_bflow_method_code = 'PRIOR_ENTRY')
15667 )
15668 THEN
15669 IF
15670 --
15671 1 = 2
15672 --
15673 THEN
15674 xla_accounting_err_pkg.build_message
15675 (p_appli_s_name => 'XLA'
15676 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
15677 ,p_token_1 => 'LINE_NUMBER'
15678 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
15679 ,p_token_2 => 'LINE_TYPE_NAME'
15680 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
15681 l_component_type
15682 ,l_component_code
15683 ,l_component_type_code
15684 ,l_component_appl_id
15685 ,l_amb_context_code
15686 ,l_entity_code
15687 ,l_event_class_code
15688 )
15689 ,p_token_3 => 'OWNER'
15690 ,p_value_3 => xla_lookups_pkg.get_meaning(
15691 p_lookup_type => 'XLA_OWNER_TYPE'
15692 ,p_lookup_code => l_component_type_code
15693 )
15694 ,p_token_4 => 'PRODUCT_NAME'
15695 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
15696 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
15697 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
15698 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
15699 ,p_ae_header_id => NULL
15700 );
15701
15702 IF (C_LEVEL_ERROR>= g_log_level) THEN
15703 trace
15704 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
15705 ,p_level => C_LEVEL_ERROR
15706 ,p_module => l_log_module);
15707 END IF;
15708 END IF;
15709 END IF;
15710 --
15711 --
15712 ------------------------------------------------------------------------------------------------
15713 -- 4219869 Business Flow
15714 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
15715 -- Prior Entry. Currently, the following code is always generated.
15716 ------------------------------------------------------------------------------------------------
15717 XLA_AE_LINES_PKG.ValidateCurrentLine;
15718
15719 ------------------------------------------------------------------------------------
15720 -- 4219869 Business Flow
15721 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
15722 ------------------------------------------------------------------------------------
15723 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
15724
15725 ----------------------------------------------------------------------------------
15726 -- 4219869 Business Flow
15727 -- Update journal entry status -- Need to generate this within IF <condition>
15728 ----------------------------------------------------------------------------------
15729 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
15730 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
15731 ,p_balance_type_code => l_balance_type_code
15732 );
15733
15734 -------------------------------------------------------------------------------------------
15735 -- 4262811 - Generate the Accrual Reversal lines
15736 -------------------------------------------------------------------------------------------
15737 BEGIN
15738 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
15739 (g_array_event(p_event_id).array_value_num('header_index'));
15740 IF l_acc_rev_flag IS NULL THEN
15741 l_acc_rev_flag := 'N';
15742 END IF;
15743 EXCEPTION
15744 WHEN OTHERS THEN
15745 l_acc_rev_flag := 'N';
15746 END;
15747 --
15748 IF (l_acc_rev_flag = 'Y') THEN
15749
15750 -- 4645092 ------------------------------------------------------------------------------
15751 -- To allow MPA report to determine if it should generate report process
15752 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
15753 ------------------------------------------------------------------------------------------
15754
15755 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
15756 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
15757 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
15758 -- call ADRs
15759 -- Bug 4922099
15760 --
15761 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
15762 (NVL(l_actual_upg_option, 'N') = 'O') OR
15763 (NVL(l_enc_upg_option, 'N') = 'O')
15764 )
15765 THEN
15766 NULL;
15767 --
15768 --
15769
15770 l_ccid := AcctDerRule_4(
15771 p_application_id => p_application_id
15772 , p_ae_header_id => l_ae_header_id
15773 , p_source_4 => p_source_4
15774 , x_transaction_coa_id => l_adr_transaction_coa_id
15775 , x_accounting_coa_id => l_adr_accounting_coa_id
15776 , x_value_type_code => l_adr_value_type_code
15777 , p_side => 'NA'
15778 );
15779
15780 xla_ae_lines_pkg.set_ccid(
15781 p_code_combination_id => l_ccid
15782 , p_value_type_code => l_adr_value_type_code
15783 , p_transaction_coa_id => l_adr_transaction_coa_id
15784 , p_accounting_coa_id => l_adr_accounting_coa_id
15785 , p_adr_code => 'CST_DEFAULT'
15786 , p_adr_type_code => 'S'
15787 , p_component_type => l_component_type
15788 , p_component_code => l_component_code
15789 , p_component_type_code => l_component_type_code
15790 , p_component_appl_id => l_component_appl_id
15791 , p_amb_context_code => l_amb_context_code
15792 , p_side => 'NA'
15793 );
15794
15795
15796 --
15797 --
15798 END IF;
15799
15800 --
15801 -- Update the line information that should be overwritten
15802 --
15803 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
15804 p_header_num => 1);
15805 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
15806
15807 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
15808
15809 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
15810 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
15811 END IF;
15812
15813 --
15814 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
15815 --
15816 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
15817 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
15818 ELSE
15819 ---------------------------------------------------------------------------------------------------
15820 -- 4262811a Switch Sign
15821 ---------------------------------------------------------------------------------------------------
15822 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
15823 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
15824 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
15825 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
15826 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
15827 -- 5132302
15828 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
15829 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
15830
15831 END IF;
15832
15833 -- 4955764
15834 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
15835 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
15836
15837
15838 XLA_AE_LINES_PKG.ValidateCurrentLine;
15839 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
15840
15841 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
15842 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
15843 ,p_balance_type_code => l_balance_type_code);
15844
15845 END IF;
15846
15847 -----------------------------------------------------------------------------------------
15848 -- 4262811 Multiperiod Accounting
15849 -----------------------------------------------------------------------------------------
15850 -- No MPA option is assigned.
15851
15852
15853 END IF;
15854 END IF;
15855 --
15856
15857 --
15858 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
15859 trace
15860 (p_msg => 'END of AcctLineType_31'
15861 ,p_level => C_LEVEL_PROCEDURE
15862 ,p_module => l_log_module);
15863 END IF;
15864 --
15865 EXCEPTION
15866 WHEN xla_exceptions_pkg.application_exception THEN
15867 RAISE;
15868 WHEN OTHERS THEN
15869 xla_exceptions_pkg.raise_message
15870 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_31');
15871 END AcctLineType_31;
15872 --
15873
15874 ---------------------------------------
15875 --
15876 -- PRIVATE FUNCTION
15877 -- AcctLineType_32
15878 --
15879 ---------------------------------------
15880 PROCEDURE AcctLineType_32 (
15881 p_application_id IN NUMBER
15882 ,p_event_id IN NUMBER
15883 ,p_calculate_acctd_flag IN VARCHAR2
15884 ,p_calculate_g_l_flag IN VARCHAR2
15885 ,p_actual_flag IN OUT VARCHAR2
15886 ,p_balance_type_code OUT VARCHAR2
15887 ,p_gain_or_loss_ref OUT VARCHAR2
15888
15889 --Cost Management Default Account
15890 , p_source_4 IN NUMBER
15891 --DISTRIBUTION_IDENTIFIER
15892 , p_source_11 IN NUMBER
15893 --Distribution Type
15894 , p_source_12 IN VARCHAR2
15895 , p_source_12_meaning IN VARCHAR2
15896 --Entered Currency Code
15897 , p_source_15 IN VARCHAR2
15898 --Entered Amount
15899 , p_source_18 IN NUMBER
15900 --Currency Conversion Date
15901 , p_source_19 IN DATE
15902 --Currency Conversion Rate
15903 , p_source_20 IN NUMBER
15904 --Currency Conversion Type
15905 , p_source_21 IN VARCHAR2
15906 --Accounted Amount
15907 , p_source_22 IN NUMBER
15908 --Accounting Line Type
15909 , p_source_24 IN NUMBER
15910 )
15911 IS
15912
15913 l_component_type VARCHAR2(80);
15914 l_component_code VARCHAR2(30);
15915 l_component_type_code VARCHAR2(1);
15916 l_component_appl_id INTEGER;
15917 l_amb_context_code VARCHAR2(30);
15918 l_entity_code VARCHAR2(30);
15919 l_event_class_code VARCHAR2(30);
15920 l_ae_header_id NUMBER;
15921 l_event_type_code VARCHAR2(30);
15922 l_line_definition_code VARCHAR2(30);
15923 l_line_definition_owner_code VARCHAR2(1);
15924 --
15925 -- adr variables
15926 l_segment VARCHAR2(30);
15927 l_ccid NUMBER;
15928 l_adr_transaction_coa_id NUMBER;
15929 l_adr_accounting_coa_id NUMBER;
15930 l_adr_flexfield_segment_code VARCHAR2(30);
15931 l_adr_flex_value_set_id NUMBER;
15932 l_adr_value_type_code VARCHAR2(30);
15933 l_adr_value_combination_id NUMBER;
15934 l_adr_value_segment_code VARCHAR2(30);
15935
15936 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
15937 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
15938 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
15939 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
15940
15941 -- 4262811 Variables ------------------------------------------------------------------------------------------
15942 l_entered_amt_idx NUMBER;
15943 l_accted_amt_idx NUMBER;
15944 l_acc_rev_flag VARCHAR2(1);
15945 l_accrual_line_num NUMBER;
15946 l_tmp_amt NUMBER;
15947 l_acc_rev_natural_side_code VARCHAR2(1);
15948
15949 l_num_entries NUMBER;
15950 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
15951 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
15952 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
15953 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
15954 l_recog_line_1 NUMBER;
15955 l_recog_line_2 NUMBER;
15956
15957 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
15958 l_bflow_applied_to_amt NUMBER; -- 5132302
15959 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
15960
15961 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
15962
15963 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
15964 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
15965
15966 ---------------------------------------------------------------------------------------------------------------
15967
15968
15969 --
15970 -- bulk performance
15971 --
15972 l_balance_type_code VARCHAR2(1);
15973 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
15974 l_log_module VARCHAR2(240);
15975
15976 --
15977 -- Upgrade strategy
15978 --
15979 l_actual_upg_option VARCHAR2(1);
15980 l_enc_upg_option VARCHAR2(1);
15981
15982 --
15983 BEGIN
15984 --
15985 IF g_log_enabled THEN
15986 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_32';
15987 END IF;
15988 --
15989 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
15990
15991 trace
15992 (p_msg => 'BEGIN of AcctLineType_32'
15993 ,p_level => C_LEVEL_PROCEDURE
15994 ,p_module => l_log_module);
15995
15996 END IF;
15997 --
15998 l_component_type := 'AMB_JLT';
15999 l_component_code := 'COST_VARIANCE';
16000 l_component_type_code := 'S';
16001 l_component_appl_id := 707;
16002 l_amb_context_code := 'DEFAULT';
16003 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
16004 l_event_class_code := 'SALES_ORDER';
16005 l_event_type_code := 'SALES_ORDER_ALL';
16006 l_line_definition_owner_code := 'S';
16007 l_line_definition_code := 'SALES_ORDER';
16008 --
16009 l_balance_type_code := 'A';
16010 l_segment := NULL;
16011 l_ccid := NULL;
16012 l_adr_transaction_coa_id := NULL;
16013 l_adr_accounting_coa_id := NULL;
16014 l_adr_flexfield_segment_code := NULL;
16015 l_adr_flex_value_set_id := NULL;
16016 l_adr_value_type_code := NULL;
16017 l_adr_value_combination_id := NULL;
16018 l_adr_value_segment_code := NULL;
16019
16020 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
16021 l_bflow_class_code := ''; -- 4219869 Business Flow
16022 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
16023 l_budgetary_control_flag := 'N';
16024
16025 l_bflow_applied_to_amt_idx := NULL; -- 5132302
16026 l_bflow_applied_to_amt := NULL; -- 5132302
16027 l_entered_amt_idx := NULL; -- 4262811
16028 l_accted_amt_idx := NULL; -- 4262811
16029 l_acc_rev_flag := NULL; -- 4262811
16030 l_accrual_line_num := NULL; -- 4262811
16031 l_tmp_amt := NULL; -- 4262811
16032 --
16033
16034 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
16035 l_balance_type_code <> 'B' THEN
16036 IF NVL(p_source_24,9E125) = 13
16037 THEN
16038
16039 --
16040 XLA_AE_LINES_PKG.SetNewLine;
16041
16042 p_balance_type_code := l_balance_type_code;
16043 -- set the flag so later we will know whether the gain loss line needs to be created
16044
16045 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
16046 p_actual_flag :='A';
16047 END IF;
16048
16049 --
16050 -- bulk performance
16051 --
16052 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
16053 p_header_num => 0); -- 4262811
16054 --
16055 -- set accounting line options
16056 --
16057 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
16058 p_natural_side_code => 'D'
16059 , p_gain_or_loss_flag => 'N'
16060 , p_gl_transfer_mode_code => 'S'
16061 , p_acct_entry_type_code => 'A'
16062 , p_switch_side_flag => 'Y'
16063 , p_merge_duplicate_code => 'N'
16064 );
16065 --
16066 l_acc_rev_natural_side_code := 'C'; -- 4262811
16067 --
16068 --
16069 -- set accounting line type info
16070 --
16071 xla_ae_lines_pkg.SetAcctLineType
16072 (p_component_type => l_component_type
16073 ,p_event_type_code => l_event_type_code
16074 ,p_line_definition_owner_code => l_line_definition_owner_code
16075 ,p_line_definition_code => l_line_definition_code
16076 ,p_accounting_line_code => l_component_code
16077 ,p_accounting_line_type_code => l_component_type_code
16078 ,p_accounting_line_appl_id => l_component_appl_id
16079 ,p_amb_context_code => l_amb_context_code
16080 ,p_entity_code => l_entity_code
16081 ,p_event_class_code => l_event_class_code);
16082 --
16083 -- set accounting class
16084 --
16085 xla_ae_lines_pkg.SetAcctClass(
16086 p_accounting_class_code => 'COST_VARIANCE'
16087 , p_ae_header_id => l_ae_header_id
16088 );
16089
16090 --
16091 -- set rounding class
16092 --
16093 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
16094 'COST_VARIANCE';
16095
16096 --
16097 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
16098 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
16099 --
16100 -- bulk performance
16101 --
16102 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
16103
16104 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
16105 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
16106
16107 -- 4955764
16108 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
16109 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
16110
16111 -- 4458381 Public Sector Enh
16112
16113 --
16114 -- set accounting attributes for the line type
16115 --
16116 l_entered_amt_idx := 3;
16117 l_accted_amt_idx := 8;
16118 l_bflow_applied_to_amt_idx := NULL; -- 5132302
16119 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
16120 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
16121 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
16122 l_rec_acct_attrs.array_char_value(2) := p_source_12;
16123 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
16124 l_rec_acct_attrs.array_num_value(3) := p_source_18;
16125 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
16126 l_rec_acct_attrs.array_char_value(4) := p_source_15;
16127 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
16128 l_rec_acct_attrs.array_date_value(5) := p_source_19;
16129 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
16130 l_rec_acct_attrs.array_num_value(6) := p_source_20;
16131 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
16132 l_rec_acct_attrs.array_char_value(7) := p_source_21;
16133 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
16134 l_rec_acct_attrs.array_num_value(8) := p_source_22;
16135
16136 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
16137 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
16138
16139 ---------------------------------------------------------------------------------------------------------------
16140 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
16141 ---------------------------------------------------------------------------------------------------------------
16142 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
16143
16144 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
16145 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
16146
16147 IF xla_accounting_cache_pkg.GetValueChar
16148 (p_source_code => 'LEDGER_CATEGORY_CODE'
16149 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
16150 AND l_bflow_method_code = 'PRIOR_ENTRY'
16151 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
16152 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
16153 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
16154 )
16155 THEN
16156 xla_ae_lines_pkg.BflowUpgEntry
16157 (p_business_method_code => l_bflow_method_code
16158 ,p_business_class_code => l_bflow_class_code
16159 ,p_balance_type => l_balance_type_code);
16160 ELSE
16161 NULL;
16162 -- No business flow processing for business flow method of NONE.
16163 END IF;
16164
16165 --
16166 -- call analytical criteria
16167 --
16168
16169 --
16170 -- call description
16171 --
16172 -- No description or it is inherited.
16173 --
16174 -- call ADRs
16175 -- Bug 4922099
16176 --
16177 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
16178 (NVL(l_actual_upg_option, 'N') = 'O') OR
16179 (NVL(l_enc_upg_option, 'N') = 'O')
16180 )
16181 THEN
16182 NULL;
16183 --
16184 --
16185
16186 l_ccid := AcctDerRule_4(
16187 p_application_id => p_application_id
16188 , p_ae_header_id => l_ae_header_id
16189 , p_source_4 => p_source_4
16190 , x_transaction_coa_id => l_adr_transaction_coa_id
16191 , x_accounting_coa_id => l_adr_accounting_coa_id
16192 , x_value_type_code => l_adr_value_type_code
16193 , p_side => 'NA'
16194 );
16195
16196 xla_ae_lines_pkg.set_ccid(
16197 p_code_combination_id => l_ccid
16198 , p_value_type_code => l_adr_value_type_code
16199 , p_transaction_coa_id => l_adr_transaction_coa_id
16200 , p_accounting_coa_id => l_adr_accounting_coa_id
16201 , p_adr_code => 'CST_DEFAULT'
16202 , p_adr_type_code => 'S'
16203 , p_component_type => l_component_type
16204 , p_component_code => l_component_code
16205 , p_component_type_code => l_component_type_code
16206 , p_component_appl_id => l_component_appl_id
16207 , p_amb_context_code => l_amb_context_code
16208 , p_side => 'NA'
16209 );
16210
16211
16212 --
16213 --
16214 END IF;
16215 --
16216 -- Bug 4922099
16217 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
16218 (NVL(l_enc_upg_option, 'N') = 'O')
16219 ) AND
16220 (l_bflow_method_code = 'PRIOR_ENTRY')
16221 )
16222 THEN
16223 IF
16224 --
16225 1 = 2
16226 --
16227 THEN
16228 xla_accounting_err_pkg.build_message
16229 (p_appli_s_name => 'XLA'
16230 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
16231 ,p_token_1 => 'LINE_NUMBER'
16232 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
16233 ,p_token_2 => 'LINE_TYPE_NAME'
16234 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
16235 l_component_type
16236 ,l_component_code
16237 ,l_component_type_code
16238 ,l_component_appl_id
16239 ,l_amb_context_code
16240 ,l_entity_code
16241 ,l_event_class_code
16242 )
16243 ,p_token_3 => 'OWNER'
16244 ,p_value_3 => xla_lookups_pkg.get_meaning(
16245 p_lookup_type => 'XLA_OWNER_TYPE'
16246 ,p_lookup_code => l_component_type_code
16247 )
16248 ,p_token_4 => 'PRODUCT_NAME'
16249 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
16250 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
16251 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
16252 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
16253 ,p_ae_header_id => NULL
16254 );
16255
16256 IF (C_LEVEL_ERROR>= g_log_level) THEN
16257 trace
16258 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
16259 ,p_level => C_LEVEL_ERROR
16260 ,p_module => l_log_module);
16261 END IF;
16262 END IF;
16263 END IF;
16264 --
16265 --
16266 ------------------------------------------------------------------------------------------------
16267 -- 4219869 Business Flow
16268 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
16269 -- Prior Entry. Currently, the following code is always generated.
16270 ------------------------------------------------------------------------------------------------
16271 XLA_AE_LINES_PKG.ValidateCurrentLine;
16272
16273 ------------------------------------------------------------------------------------
16274 -- 4219869 Business Flow
16275 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
16276 ------------------------------------------------------------------------------------
16277 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
16278
16279 ----------------------------------------------------------------------------------
16280 -- 4219869 Business Flow
16281 -- Update journal entry status -- Need to generate this within IF <condition>
16282 ----------------------------------------------------------------------------------
16283 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
16284 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
16285 ,p_balance_type_code => l_balance_type_code
16286 );
16287
16288 -------------------------------------------------------------------------------------------
16289 -- 4262811 - Generate the Accrual Reversal lines
16290 -------------------------------------------------------------------------------------------
16291 BEGIN
16292 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
16293 (g_array_event(p_event_id).array_value_num('header_index'));
16294 IF l_acc_rev_flag IS NULL THEN
16295 l_acc_rev_flag := 'N';
16296 END IF;
16297 EXCEPTION
16298 WHEN OTHERS THEN
16299 l_acc_rev_flag := 'N';
16300 END;
16301 --
16302 IF (l_acc_rev_flag = 'Y') THEN
16303
16304 -- 4645092 ------------------------------------------------------------------------------
16305 -- To allow MPA report to determine if it should generate report process
16306 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
16307 ------------------------------------------------------------------------------------------
16308
16309 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
16310 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
16311 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
16312 -- call ADRs
16313 -- Bug 4922099
16314 --
16315 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
16316 (NVL(l_actual_upg_option, 'N') = 'O') OR
16317 (NVL(l_enc_upg_option, 'N') = 'O')
16318 )
16319 THEN
16320 NULL;
16321 --
16322 --
16323
16324 l_ccid := AcctDerRule_4(
16325 p_application_id => p_application_id
16326 , p_ae_header_id => l_ae_header_id
16327 , p_source_4 => p_source_4
16328 , x_transaction_coa_id => l_adr_transaction_coa_id
16329 , x_accounting_coa_id => l_adr_accounting_coa_id
16330 , x_value_type_code => l_adr_value_type_code
16331 , p_side => 'NA'
16332 );
16333
16334 xla_ae_lines_pkg.set_ccid(
16335 p_code_combination_id => l_ccid
16336 , p_value_type_code => l_adr_value_type_code
16337 , p_transaction_coa_id => l_adr_transaction_coa_id
16338 , p_accounting_coa_id => l_adr_accounting_coa_id
16339 , p_adr_code => 'CST_DEFAULT'
16340 , p_adr_type_code => 'S'
16341 , p_component_type => l_component_type
16342 , p_component_code => l_component_code
16343 , p_component_type_code => l_component_type_code
16344 , p_component_appl_id => l_component_appl_id
16345 , p_amb_context_code => l_amb_context_code
16346 , p_side => 'NA'
16347 );
16348
16349
16350 --
16351 --
16352 END IF;
16353
16354 --
16355 -- Update the line information that should be overwritten
16356 --
16357 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
16358 p_header_num => 1);
16359 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
16360
16361 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
16362
16363 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
16364 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
16365 END IF;
16366
16367 --
16368 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
16369 --
16370 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
16371 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
16372 ELSE
16373 ---------------------------------------------------------------------------------------------------
16374 -- 4262811a Switch Sign
16375 ---------------------------------------------------------------------------------------------------
16376 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
16377 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
16378 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
16379 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
16380 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
16381 -- 5132302
16382 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
16383 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
16384
16385 END IF;
16386
16387 -- 4955764
16388 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
16389 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
16390
16391
16392 XLA_AE_LINES_PKG.ValidateCurrentLine;
16393 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
16394
16395 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
16396 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
16397 ,p_balance_type_code => l_balance_type_code);
16398
16399 END IF;
16400
16401 -----------------------------------------------------------------------------------------
16402 -- 4262811 Multiperiod Accounting
16403 -----------------------------------------------------------------------------------------
16404 -- No MPA option is assigned.
16405
16406
16407 END IF;
16408 END IF;
16409 --
16410
16411 --
16412 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
16413 trace
16414 (p_msg => 'END of AcctLineType_32'
16415 ,p_level => C_LEVEL_PROCEDURE
16416 ,p_module => l_log_module);
16417 END IF;
16418 --
16419 EXCEPTION
16420 WHEN xla_exceptions_pkg.application_exception THEN
16421 RAISE;
16422 WHEN OTHERS THEN
16423 xla_exceptions_pkg.raise_message
16424 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_32');
16425 END AcctLineType_32;
16426 --
16427
16428 ---------------------------------------
16429 --
16430 -- PRIVATE FUNCTION
16431 -- AcctLineType_33
16432 --
16433 ---------------------------------------
16434 PROCEDURE AcctLineType_33 (
16435 p_application_id IN NUMBER
16436 ,p_event_id IN NUMBER
16437 ,p_calculate_acctd_flag IN VARCHAR2
16438 ,p_calculate_g_l_flag IN VARCHAR2
16439 ,p_actual_flag IN OUT VARCHAR2
16440 ,p_balance_type_code OUT VARCHAR2
16441 ,p_gain_or_loss_ref OUT VARCHAR2
16442
16443 --Cost Management Default Account
16444 , p_source_4 IN NUMBER
16445 --DISTRIBUTION_IDENTIFIER
16446 , p_source_11 IN NUMBER
16447 --Distribution Type
16448 , p_source_12 IN VARCHAR2
16449 , p_source_12_meaning IN VARCHAR2
16450 --Entered Currency Code
16451 , p_source_15 IN VARCHAR2
16452 --Entered Amount
16453 , p_source_18 IN NUMBER
16454 --Currency Conversion Date
16455 , p_source_19 IN DATE
16456 --Currency Conversion Rate
16457 , p_source_20 IN NUMBER
16458 --Currency Conversion Type
16459 , p_source_21 IN VARCHAR2
16460 --Accounted Amount
16461 , p_source_22 IN NUMBER
16462 --Accounting Line Type
16463 , p_source_24 IN NUMBER
16464 )
16465 IS
16466
16467 l_component_type VARCHAR2(80);
16468 l_component_code VARCHAR2(30);
16469 l_component_type_code VARCHAR2(1);
16470 l_component_appl_id INTEGER;
16471 l_amb_context_code VARCHAR2(30);
16472 l_entity_code VARCHAR2(30);
16473 l_event_class_code VARCHAR2(30);
16474 l_ae_header_id NUMBER;
16475 l_event_type_code VARCHAR2(30);
16476 l_line_definition_code VARCHAR2(30);
16477 l_line_definition_owner_code VARCHAR2(1);
16478 --
16479 -- adr variables
16480 l_segment VARCHAR2(30);
16481 l_ccid NUMBER;
16482 l_adr_transaction_coa_id NUMBER;
16483 l_adr_accounting_coa_id NUMBER;
16484 l_adr_flexfield_segment_code VARCHAR2(30);
16485 l_adr_flex_value_set_id NUMBER;
16486 l_adr_value_type_code VARCHAR2(30);
16487 l_adr_value_combination_id NUMBER;
16488 l_adr_value_segment_code VARCHAR2(30);
16489
16490 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
16491 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
16492 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
16493 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
16494
16495 -- 4262811 Variables ------------------------------------------------------------------------------------------
16496 l_entered_amt_idx NUMBER;
16497 l_accted_amt_idx NUMBER;
16498 l_acc_rev_flag VARCHAR2(1);
16499 l_accrual_line_num NUMBER;
16500 l_tmp_amt NUMBER;
16501 l_acc_rev_natural_side_code VARCHAR2(1);
16502
16503 l_num_entries NUMBER;
16504 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
16505 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
16506 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
16507 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
16508 l_recog_line_1 NUMBER;
16509 l_recog_line_2 NUMBER;
16510
16511 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
16512 l_bflow_applied_to_amt NUMBER; -- 5132302
16513 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
16514
16515 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
16516
16517 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
16518 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
16519
16520 ---------------------------------------------------------------------------------------------------------------
16521
16522
16523 --
16524 -- bulk performance
16525 --
16526 l_balance_type_code VARCHAR2(1);
16527 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
16528 l_log_module VARCHAR2(240);
16529
16530 --
16531 -- Upgrade strategy
16532 --
16533 l_actual_upg_option VARCHAR2(1);
16534 l_enc_upg_option VARCHAR2(1);
16535
16536 --
16537 BEGIN
16538 --
16539 IF g_log_enabled THEN
16540 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_33';
16541 END IF;
16542 --
16543 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
16544
16545 trace
16546 (p_msg => 'BEGIN of AcctLineType_33'
16547 ,p_level => C_LEVEL_PROCEDURE
16548 ,p_module => l_log_module);
16549
16550 END IF;
16551 --
16552 l_component_type := 'AMB_JLT';
16553 l_component_code := 'COST_VARIANCE';
16554 l_component_type_code := 'S';
16555 l_component_appl_id := 707;
16556 l_amb_context_code := 'DEFAULT';
16557 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
16558 l_event_class_code := 'MISC_ISSUE_RCPT';
16559 l_event_type_code := 'MISC_ISSUE_RCPT_ALL';
16560 l_line_definition_owner_code := 'S';
16561 l_line_definition_code := 'MISC_ISSUE_RCPT';
16562 --
16563 l_balance_type_code := 'A';
16564 l_segment := NULL;
16565 l_ccid := NULL;
16566 l_adr_transaction_coa_id := NULL;
16567 l_adr_accounting_coa_id := NULL;
16568 l_adr_flexfield_segment_code := NULL;
16569 l_adr_flex_value_set_id := NULL;
16570 l_adr_value_type_code := NULL;
16571 l_adr_value_combination_id := NULL;
16572 l_adr_value_segment_code := NULL;
16573
16574 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
16575 l_bflow_class_code := ''; -- 4219869 Business Flow
16576 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
16577 l_budgetary_control_flag := 'N';
16578
16579 l_bflow_applied_to_amt_idx := NULL; -- 5132302
16580 l_bflow_applied_to_amt := NULL; -- 5132302
16581 l_entered_amt_idx := NULL; -- 4262811
16582 l_accted_amt_idx := NULL; -- 4262811
16583 l_acc_rev_flag := NULL; -- 4262811
16584 l_accrual_line_num := NULL; -- 4262811
16585 l_tmp_amt := NULL; -- 4262811
16586 --
16587
16588 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
16589 l_balance_type_code <> 'B' THEN
16590 IF NVL(p_source_24,9E125) = 13
16591 THEN
16592
16593 --
16594 XLA_AE_LINES_PKG.SetNewLine;
16595
16596 p_balance_type_code := l_balance_type_code;
16597 -- set the flag so later we will know whether the gain loss line needs to be created
16598
16599 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
16600 p_actual_flag :='A';
16601 END IF;
16602
16603 --
16604 -- bulk performance
16605 --
16606 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
16607 p_header_num => 0); -- 4262811
16608 --
16609 -- set accounting line options
16610 --
16611 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
16612 p_natural_side_code => 'D'
16613 , p_gain_or_loss_flag => 'N'
16614 , p_gl_transfer_mode_code => 'S'
16615 , p_acct_entry_type_code => 'A'
16616 , p_switch_side_flag => 'Y'
16617 , p_merge_duplicate_code => 'N'
16618 );
16619 --
16620 l_acc_rev_natural_side_code := 'C'; -- 4262811
16621 --
16622 --
16623 -- set accounting line type info
16624 --
16625 xla_ae_lines_pkg.SetAcctLineType
16626 (p_component_type => l_component_type
16627 ,p_event_type_code => l_event_type_code
16628 ,p_line_definition_owner_code => l_line_definition_owner_code
16629 ,p_line_definition_code => l_line_definition_code
16630 ,p_accounting_line_code => l_component_code
16631 ,p_accounting_line_type_code => l_component_type_code
16632 ,p_accounting_line_appl_id => l_component_appl_id
16633 ,p_amb_context_code => l_amb_context_code
16634 ,p_entity_code => l_entity_code
16635 ,p_event_class_code => l_event_class_code);
16636 --
16637 -- set accounting class
16638 --
16639 xla_ae_lines_pkg.SetAcctClass(
16640 p_accounting_class_code => 'COST_VARIANCE'
16641 , p_ae_header_id => l_ae_header_id
16642 );
16643
16644 --
16645 -- set rounding class
16646 --
16647 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
16648 'COST_VARIANCE';
16649
16650 --
16651 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
16652 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
16653 --
16654 -- bulk performance
16655 --
16656 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
16657
16658 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
16659 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
16660
16661 -- 4955764
16662 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
16663 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
16664
16665 -- 4458381 Public Sector Enh
16666
16667 --
16668 -- set accounting attributes for the line type
16669 --
16670 l_entered_amt_idx := 3;
16671 l_accted_amt_idx := 8;
16672 l_bflow_applied_to_amt_idx := NULL; -- 5132302
16673 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
16674 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
16675 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
16676 l_rec_acct_attrs.array_char_value(2) := p_source_12;
16677 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
16678 l_rec_acct_attrs.array_num_value(3) := p_source_18;
16679 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
16680 l_rec_acct_attrs.array_char_value(4) := p_source_15;
16681 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
16682 l_rec_acct_attrs.array_date_value(5) := p_source_19;
16683 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
16684 l_rec_acct_attrs.array_num_value(6) := p_source_20;
16685 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
16686 l_rec_acct_attrs.array_char_value(7) := p_source_21;
16687 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
16688 l_rec_acct_attrs.array_num_value(8) := p_source_22;
16689
16690 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
16691 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
16692
16693 ---------------------------------------------------------------------------------------------------------------
16694 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
16695 ---------------------------------------------------------------------------------------------------------------
16696 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
16697
16698 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
16699 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
16700
16701 IF xla_accounting_cache_pkg.GetValueChar
16702 (p_source_code => 'LEDGER_CATEGORY_CODE'
16703 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
16704 AND l_bflow_method_code = 'PRIOR_ENTRY'
16705 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
16706 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
16707 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
16708 )
16709 THEN
16710 xla_ae_lines_pkg.BflowUpgEntry
16711 (p_business_method_code => l_bflow_method_code
16712 ,p_business_class_code => l_bflow_class_code
16713 ,p_balance_type => l_balance_type_code);
16714 ELSE
16715 NULL;
16716 -- No business flow processing for business flow method of NONE.
16717 END IF;
16718
16719 --
16720 -- call analytical criteria
16721 --
16722
16723 --
16724 -- call description
16725 --
16726 -- No description or it is inherited.
16727 --
16728 -- call ADRs
16729 -- Bug 4922099
16730 --
16731 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
16732 (NVL(l_actual_upg_option, 'N') = 'O') OR
16733 (NVL(l_enc_upg_option, 'N') = 'O')
16734 )
16735 THEN
16736 NULL;
16737 --
16738 --
16739
16740 l_ccid := AcctDerRule_4(
16741 p_application_id => p_application_id
16742 , p_ae_header_id => l_ae_header_id
16743 , p_source_4 => p_source_4
16744 , x_transaction_coa_id => l_adr_transaction_coa_id
16745 , x_accounting_coa_id => l_adr_accounting_coa_id
16746 , x_value_type_code => l_adr_value_type_code
16747 , p_side => 'NA'
16748 );
16749
16750 xla_ae_lines_pkg.set_ccid(
16751 p_code_combination_id => l_ccid
16752 , p_value_type_code => l_adr_value_type_code
16753 , p_transaction_coa_id => l_adr_transaction_coa_id
16754 , p_accounting_coa_id => l_adr_accounting_coa_id
16755 , p_adr_code => 'CST_DEFAULT'
16756 , p_adr_type_code => 'S'
16757 , p_component_type => l_component_type
16758 , p_component_code => l_component_code
16759 , p_component_type_code => l_component_type_code
16760 , p_component_appl_id => l_component_appl_id
16761 , p_amb_context_code => l_amb_context_code
16762 , p_side => 'NA'
16763 );
16764
16765
16766 --
16767 --
16768 END IF;
16769 --
16770 -- Bug 4922099
16771 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
16772 (NVL(l_enc_upg_option, 'N') = 'O')
16773 ) AND
16774 (l_bflow_method_code = 'PRIOR_ENTRY')
16775 )
16776 THEN
16777 IF
16778 --
16779 1 = 2
16780 --
16781 THEN
16782 xla_accounting_err_pkg.build_message
16783 (p_appli_s_name => 'XLA'
16784 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
16785 ,p_token_1 => 'LINE_NUMBER'
16786 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
16787 ,p_token_2 => 'LINE_TYPE_NAME'
16788 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
16789 l_component_type
16790 ,l_component_code
16791 ,l_component_type_code
16792 ,l_component_appl_id
16793 ,l_amb_context_code
16794 ,l_entity_code
16795 ,l_event_class_code
16796 )
16797 ,p_token_3 => 'OWNER'
16798 ,p_value_3 => xla_lookups_pkg.get_meaning(
16799 p_lookup_type => 'XLA_OWNER_TYPE'
16800 ,p_lookup_code => l_component_type_code
16801 )
16802 ,p_token_4 => 'PRODUCT_NAME'
16803 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
16804 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
16805 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
16806 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
16807 ,p_ae_header_id => NULL
16808 );
16809
16810 IF (C_LEVEL_ERROR>= g_log_level) THEN
16811 trace
16812 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
16813 ,p_level => C_LEVEL_ERROR
16814 ,p_module => l_log_module);
16815 END IF;
16816 END IF;
16817 END IF;
16818 --
16819 --
16820 ------------------------------------------------------------------------------------------------
16821 -- 4219869 Business Flow
16822 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
16823 -- Prior Entry. Currently, the following code is always generated.
16824 ------------------------------------------------------------------------------------------------
16825 XLA_AE_LINES_PKG.ValidateCurrentLine;
16826
16827 ------------------------------------------------------------------------------------
16828 -- 4219869 Business Flow
16829 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
16830 ------------------------------------------------------------------------------------
16831 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
16832
16833 ----------------------------------------------------------------------------------
16834 -- 4219869 Business Flow
16835 -- Update journal entry status -- Need to generate this within IF <condition>
16836 ----------------------------------------------------------------------------------
16837 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
16838 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
16839 ,p_balance_type_code => l_balance_type_code
16840 );
16841
16842 -------------------------------------------------------------------------------------------
16843 -- 4262811 - Generate the Accrual Reversal lines
16844 -------------------------------------------------------------------------------------------
16845 BEGIN
16846 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
16847 (g_array_event(p_event_id).array_value_num('header_index'));
16848 IF l_acc_rev_flag IS NULL THEN
16849 l_acc_rev_flag := 'N';
16850 END IF;
16851 EXCEPTION
16852 WHEN OTHERS THEN
16853 l_acc_rev_flag := 'N';
16854 END;
16855 --
16856 IF (l_acc_rev_flag = 'Y') THEN
16857
16858 -- 4645092 ------------------------------------------------------------------------------
16859 -- To allow MPA report to determine if it should generate report process
16860 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
16861 ------------------------------------------------------------------------------------------
16862
16863 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
16864 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
16865 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
16866 -- call ADRs
16867 -- Bug 4922099
16868 --
16869 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
16870 (NVL(l_actual_upg_option, 'N') = 'O') OR
16871 (NVL(l_enc_upg_option, 'N') = 'O')
16872 )
16873 THEN
16874 NULL;
16875 --
16876 --
16877
16878 l_ccid := AcctDerRule_4(
16879 p_application_id => p_application_id
16880 , p_ae_header_id => l_ae_header_id
16881 , p_source_4 => p_source_4
16882 , x_transaction_coa_id => l_adr_transaction_coa_id
16883 , x_accounting_coa_id => l_adr_accounting_coa_id
16884 , x_value_type_code => l_adr_value_type_code
16885 , p_side => 'NA'
16886 );
16887
16888 xla_ae_lines_pkg.set_ccid(
16889 p_code_combination_id => l_ccid
16890 , p_value_type_code => l_adr_value_type_code
16891 , p_transaction_coa_id => l_adr_transaction_coa_id
16892 , p_accounting_coa_id => l_adr_accounting_coa_id
16893 , p_adr_code => 'CST_DEFAULT'
16894 , p_adr_type_code => 'S'
16895 , p_component_type => l_component_type
16896 , p_component_code => l_component_code
16897 , p_component_type_code => l_component_type_code
16898 , p_component_appl_id => l_component_appl_id
16899 , p_amb_context_code => l_amb_context_code
16900 , p_side => 'NA'
16901 );
16902
16903
16904 --
16905 --
16906 END IF;
16907
16908 --
16909 -- Update the line information that should be overwritten
16910 --
16911 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
16912 p_header_num => 1);
16913 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
16914
16915 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
16916
16917 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
16918 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
16919 END IF;
16920
16921 --
16922 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
16923 --
16924 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
16925 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
16926 ELSE
16927 ---------------------------------------------------------------------------------------------------
16928 -- 4262811a Switch Sign
16929 ---------------------------------------------------------------------------------------------------
16930 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
16931 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
16932 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
16933 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
16934 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
16935 -- 5132302
16936 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
16937 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
16938
16939 END IF;
16940
16941 -- 4955764
16942 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
16943 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
16944
16945
16946 XLA_AE_LINES_PKG.ValidateCurrentLine;
16947 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
16948
16949 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
16950 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
16951 ,p_balance_type_code => l_balance_type_code);
16952
16953 END IF;
16954
16955 -----------------------------------------------------------------------------------------
16956 -- 4262811 Multiperiod Accounting
16957 -----------------------------------------------------------------------------------------
16958 -- No MPA option is assigned.
16959
16960
16961 END IF;
16962 END IF;
16963 --
16964
16965 --
16966 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
16967 trace
16968 (p_msg => 'END of AcctLineType_33'
16969 ,p_level => C_LEVEL_PROCEDURE
16970 ,p_module => l_log_module);
16971 END IF;
16972 --
16973 EXCEPTION
16974 WHEN xla_exceptions_pkg.application_exception THEN
16975 RAISE;
16976 WHEN OTHERS THEN
16977 xla_exceptions_pkg.raise_message
16978 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_33');
16979 END AcctLineType_33;
16980 --
16981
16982 ---------------------------------------
16983 --
16984 -- PRIVATE FUNCTION
16985 -- AcctLineType_34
16986 --
16987 ---------------------------------------
16988 PROCEDURE AcctLineType_34 (
16989 p_application_id IN NUMBER
16990 ,p_event_id IN NUMBER
16991 ,p_calculate_acctd_flag IN VARCHAR2
16992 ,p_calculate_g_l_flag IN VARCHAR2
16993 ,p_actual_flag IN OUT VARCHAR2
16994 ,p_balance_type_code OUT VARCHAR2
16995 ,p_gain_or_loss_ref OUT VARCHAR2
16996
16997 --Cost Management Default Account
16998 , p_source_4 IN NUMBER
16999 --Applied to Application ID
17000 , p_source_6 IN NUMBER
17001 --Applied to Distribution Link Type
17002 , p_source_7 IN VARCHAR2
17003 --Applied to Entity Code
17004 , p_source_8 IN VARCHAR2
17005 --DISTRIBUTION_IDENTIFIER
17006 , p_source_11 IN NUMBER
17007 --Distribution Type
17008 , p_source_12 IN VARCHAR2
17009 , p_source_12_meaning IN VARCHAR2
17010 --Encumbrance Reversal Amount Entered
17011 , p_source_14 IN NUMBER
17012 --Entered Currency Code
17013 , p_source_15 IN VARCHAR2
17014 --Transaction Encumbrance Reversal Amount
17015 , p_source_16 IN NUMBER
17016 --Entered Amount
17017 , p_source_18 IN NUMBER
17018 --Currency Conversion Date
17019 , p_source_19 IN DATE
17020 --Currency Conversion Rate
17021 , p_source_20 IN NUMBER
17022 --Currency Conversion Type
17023 , p_source_21 IN VARCHAR2
17024 --Accounted Amount
17025 , p_source_22 IN NUMBER
17026 --Accounting Line Type
17027 , p_source_24 IN NUMBER
17028 --Costing Encumbrance Upgrade Option
17029 , p_source_27 IN VARCHAR2
17030 --TXN_PO_DISTRIBUTION_ID
17031 , p_source_28 IN NUMBER
17032 --TXN_PO_HEADER_ID
17033 , p_source_29 IN NUMBER
17034 --Requisition Budget Account
17035 , p_source_30 IN NUMBER
17036 --Requisition Encumbrance Type Identifier
17037 , p_source_31 IN NUMBER
17038 )
17039 IS
17040
17041 l_component_type VARCHAR2(80);
17042 l_component_code VARCHAR2(30);
17043 l_component_type_code VARCHAR2(1);
17044 l_component_appl_id INTEGER;
17045 l_amb_context_code VARCHAR2(30);
17046 l_entity_code VARCHAR2(30);
17047 l_event_class_code VARCHAR2(30);
17048 l_ae_header_id NUMBER;
17049 l_event_type_code VARCHAR2(30);
17050 l_line_definition_code VARCHAR2(30);
17051 l_line_definition_owner_code VARCHAR2(1);
17052 --
17053 -- adr variables
17054 l_segment VARCHAR2(30);
17055 l_ccid NUMBER;
17056 l_adr_transaction_coa_id NUMBER;
17057 l_adr_accounting_coa_id NUMBER;
17058 l_adr_flexfield_segment_code VARCHAR2(30);
17059 l_adr_flex_value_set_id NUMBER;
17060 l_adr_value_type_code VARCHAR2(30);
17061 l_adr_value_combination_id NUMBER;
17062 l_adr_value_segment_code VARCHAR2(30);
17063
17064 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
17065 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
17066 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
17067 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
17068
17069 -- 4262811 Variables ------------------------------------------------------------------------------------------
17070 l_entered_amt_idx NUMBER;
17071 l_accted_amt_idx NUMBER;
17072 l_acc_rev_flag VARCHAR2(1);
17073 l_accrual_line_num NUMBER;
17074 l_tmp_amt NUMBER;
17075 l_acc_rev_natural_side_code VARCHAR2(1);
17076
17077 l_num_entries NUMBER;
17078 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
17079 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
17080 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
17081 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
17082 l_recog_line_1 NUMBER;
17083 l_recog_line_2 NUMBER;
17084
17085 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
17086 l_bflow_applied_to_amt NUMBER; -- 5132302
17087 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
17088
17089 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
17090
17091 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
17092 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
17093
17094 ---------------------------------------------------------------------------------------------------------------
17095
17096
17097 --
17098 -- bulk performance
17099 --
17100 l_balance_type_code VARCHAR2(1);
17101 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
17102 l_log_module VARCHAR2(240);
17103
17104 --
17105 -- Upgrade strategy
17106 --
17107 l_actual_upg_option VARCHAR2(1);
17108 l_enc_upg_option VARCHAR2(1);
17109
17110 --
17111 BEGIN
17112 --
17113 IF g_log_enabled THEN
17114 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_34';
17115 END IF;
17116 --
17117 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
17118
17119 trace
17120 (p_msg => 'BEGIN of AcctLineType_34'
17121 ,p_level => C_LEVEL_PROCEDURE
17122 ,p_module => l_log_module);
17123
17124 END IF;
17125 --
17126 l_component_type := 'AMB_JLT';
17127 l_component_code := 'COST_VARIANCE';
17128 l_component_type_code := 'S';
17129 l_component_appl_id := 707;
17130 l_amb_context_code := 'DEFAULT';
17131 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
17132 l_event_class_code := 'FOB_RCPT_RECIPIENT_RCPT';
17133 l_event_type_code := 'FOB_RCPT_RECIPIENT_RCPT_ALL';
17134 l_line_definition_owner_code := 'S';
17135 l_line_definition_code := 'FOB_RCPT_RECIPIENT_RCPT';
17136 --
17137 l_balance_type_code := 'A';
17138 l_segment := NULL;
17139 l_ccid := NULL;
17140 l_adr_transaction_coa_id := NULL;
17141 l_adr_accounting_coa_id := NULL;
17142 l_adr_flexfield_segment_code := NULL;
17143 l_adr_flex_value_set_id := NULL;
17144 l_adr_value_type_code := NULL;
17145 l_adr_value_combination_id := NULL;
17146 l_adr_value_segment_code := NULL;
17147
17148 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
17149 l_bflow_class_code := ''; -- 4219869 Business Flow
17150 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
17151 l_budgetary_control_flag := 'N';
17152
17153 l_bflow_applied_to_amt_idx := NULL; -- 5132302
17154 l_bflow_applied_to_amt := NULL; -- 5132302
17155 l_entered_amt_idx := NULL; -- 4262811
17156 l_accted_amt_idx := NULL; -- 4262811
17157 l_acc_rev_flag := NULL; -- 4262811
17158 l_accrual_line_num := NULL; -- 4262811
17159 l_tmp_amt := NULL; -- 4262811
17160 --
17161
17162 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
17163 l_balance_type_code <> 'B' THEN
17164 IF NVL(p_source_24,9E125) = 13
17165 THEN
17166
17167 --
17168 XLA_AE_LINES_PKG.SetNewLine;
17169
17170 p_balance_type_code := l_balance_type_code;
17171 -- set the flag so later we will know whether the gain loss line needs to be created
17172
17173 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
17174 p_actual_flag :='A';
17175 END IF;
17176
17177 --
17178 -- bulk performance
17179 --
17180 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
17181 p_header_num => 0); -- 4262811
17182 --
17183 -- set accounting line options
17184 --
17185 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
17186 p_natural_side_code => 'D'
17187 , p_gain_or_loss_flag => 'N'
17188 , p_gl_transfer_mode_code => 'S'
17189 , p_acct_entry_type_code => 'A'
17190 , p_switch_side_flag => 'Y'
17191 , p_merge_duplicate_code => 'N'
17192 );
17193 --
17194 l_acc_rev_natural_side_code := 'C'; -- 4262811
17195 --
17196 --
17197 -- set accounting line type info
17198 --
17199 xla_ae_lines_pkg.SetAcctLineType
17200 (p_component_type => l_component_type
17201 ,p_event_type_code => l_event_type_code
17202 ,p_line_definition_owner_code => l_line_definition_owner_code
17203 ,p_line_definition_code => l_line_definition_code
17204 ,p_accounting_line_code => l_component_code
17205 ,p_accounting_line_type_code => l_component_type_code
17206 ,p_accounting_line_appl_id => l_component_appl_id
17207 ,p_amb_context_code => l_amb_context_code
17208 ,p_entity_code => l_entity_code
17209 ,p_event_class_code => l_event_class_code);
17210 --
17211 -- set accounting class
17212 --
17213 xla_ae_lines_pkg.SetAcctClass(
17214 p_accounting_class_code => 'COST_VARIANCE'
17215 , p_ae_header_id => l_ae_header_id
17216 );
17217
17218 --
17219 -- set rounding class
17220 --
17221 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
17222 'COST_VARIANCE';
17223
17224 --
17225 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
17226 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
17227 --
17228 -- bulk performance
17229 --
17230 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
17231
17232 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
17233 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
17234
17235 -- 4955764
17236 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
17237 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
17238
17239 -- 4458381 Public Sector Enh
17240
17241 --
17242 -- set accounting attributes for the line type
17243 --
17244 l_entered_amt_idx := 17;
17245 l_accted_amt_idx := 22;
17246 l_bflow_applied_to_amt_idx := NULL; -- 5132302
17247 l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
17248 l_rec_acct_attrs.array_num_value(1) := p_source_6;
17249 l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
17250 l_rec_acct_attrs.array_char_value(2) := p_source_7;
17251 l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
17252 l_rec_acct_attrs.array_char_value(3) := p_source_8;
17253 l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
17254 l_rec_acct_attrs.array_num_value(4) := to_char(p_source_28);
17255 l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
17256 l_rec_acct_attrs.array_num_value(5) := to_char(p_source_29);
17257 l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
17258 l_rec_acct_attrs.array_num_value(6) := to_char(p_source_11);
17259 l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
17260 l_rec_acct_attrs.array_char_value(7) := p_source_12;
17261 l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
17262 l_rec_acct_attrs.array_num_value(8) := TO_NUMBER(p_source_30);
17263 l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
17264 l_rec_acct_attrs.array_num_value(9) := p_source_14;
17265 l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
17266 l_rec_acct_attrs.array_char_value(10) := p_source_15;
17267 l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
17268 l_rec_acct_attrs.array_num_value(11) := p_source_16;
17269 l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
17270 l_rec_acct_attrs.array_num_value(12) := TO_NUMBER(p_source_30);
17271 l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
17272 l_rec_acct_attrs.array_num_value(13) := p_source_14;
17273 l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
17274 l_rec_acct_attrs.array_char_value(14) := p_source_15;
17275 l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
17276 l_rec_acct_attrs.array_num_value(15) := p_source_16;
17277 l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
17278 l_rec_acct_attrs.array_char_value(16) := p_source_27;
17279 l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
17280 l_rec_acct_attrs.array_num_value(17) := p_source_18;
17281 l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
17282 l_rec_acct_attrs.array_char_value(18) := p_source_15;
17283 l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
17284 l_rec_acct_attrs.array_date_value(19) := p_source_19;
17285 l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
17286 l_rec_acct_attrs.array_num_value(20) := p_source_20;
17287 l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
17288 l_rec_acct_attrs.array_char_value(21) := p_source_21;
17289 l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
17290 l_rec_acct_attrs.array_num_value(22) := p_source_22;
17291 l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
17292 l_rec_acct_attrs.array_num_value(23) := p_source_31;
17293 l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
17294 l_rec_acct_attrs.array_num_value(24) := p_source_31;
17295
17296 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
17297 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
17298
17299 ---------------------------------------------------------------------------------------------------------------
17300 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
17301 ---------------------------------------------------------------------------------------------------------------
17302 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
17303
17304 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
17305 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
17306
17307 IF xla_accounting_cache_pkg.GetValueChar
17308 (p_source_code => 'LEDGER_CATEGORY_CODE'
17309 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
17310 AND l_bflow_method_code = 'PRIOR_ENTRY'
17311 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
17312 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
17313 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
17314 )
17315 THEN
17316 xla_ae_lines_pkg.BflowUpgEntry
17317 (p_business_method_code => l_bflow_method_code
17318 ,p_business_class_code => l_bflow_class_code
17319 ,p_balance_type => l_balance_type_code);
17320 ELSE
17321 NULL;
17322 -- No business flow processing for business flow method of NONE.
17323 END IF;
17324
17325 --
17326 -- call analytical criteria
17327 --
17328
17329 --
17330 -- call description
17331 --
17332 -- No description or it is inherited.
17333 --
17334 -- call ADRs
17335 -- Bug 4922099
17336 --
17337 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
17338 (NVL(l_actual_upg_option, 'N') = 'O') OR
17339 (NVL(l_enc_upg_option, 'N') = 'O')
17340 )
17341 THEN
17342 NULL;
17343 --
17344 --
17345
17346 l_ccid := AcctDerRule_4(
17347 p_application_id => p_application_id
17348 , p_ae_header_id => l_ae_header_id
17349 , p_source_4 => p_source_4
17350 , x_transaction_coa_id => l_adr_transaction_coa_id
17351 , x_accounting_coa_id => l_adr_accounting_coa_id
17352 , x_value_type_code => l_adr_value_type_code
17353 , p_side => 'NA'
17354 );
17355
17356 xla_ae_lines_pkg.set_ccid(
17357 p_code_combination_id => l_ccid
17358 , p_value_type_code => l_adr_value_type_code
17359 , p_transaction_coa_id => l_adr_transaction_coa_id
17360 , p_accounting_coa_id => l_adr_accounting_coa_id
17361 , p_adr_code => 'CST_DEFAULT'
17362 , p_adr_type_code => 'S'
17363 , p_component_type => l_component_type
17364 , p_component_code => l_component_code
17365 , p_component_type_code => l_component_type_code
17366 , p_component_appl_id => l_component_appl_id
17367 , p_amb_context_code => l_amb_context_code
17368 , p_side => 'NA'
17369 );
17370
17371
17372 --
17373 --
17374 END IF;
17375 --
17376 -- Bug 4922099
17377 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
17378 (NVL(l_enc_upg_option, 'N') = 'O')
17379 ) AND
17380 (l_bflow_method_code = 'PRIOR_ENTRY')
17381 )
17382 THEN
17383 IF
17384 --
17385 1 = 2
17386 --
17387 THEN
17388 xla_accounting_err_pkg.build_message
17389 (p_appli_s_name => 'XLA'
17390 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
17391 ,p_token_1 => 'LINE_NUMBER'
17392 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
17393 ,p_token_2 => 'LINE_TYPE_NAME'
17394 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
17395 l_component_type
17396 ,l_component_code
17397 ,l_component_type_code
17398 ,l_component_appl_id
17399 ,l_amb_context_code
17400 ,l_entity_code
17401 ,l_event_class_code
17402 )
17403 ,p_token_3 => 'OWNER'
17404 ,p_value_3 => xla_lookups_pkg.get_meaning(
17405 p_lookup_type => 'XLA_OWNER_TYPE'
17406 ,p_lookup_code => l_component_type_code
17407 )
17408 ,p_token_4 => 'PRODUCT_NAME'
17409 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
17410 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
17411 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
17412 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
17413 ,p_ae_header_id => NULL
17414 );
17415
17416 IF (C_LEVEL_ERROR>= g_log_level) THEN
17417 trace
17418 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
17419 ,p_level => C_LEVEL_ERROR
17420 ,p_module => l_log_module);
17421 END IF;
17422 END IF;
17423 END IF;
17424 --
17425 --
17426 ------------------------------------------------------------------------------------------------
17427 -- 4219869 Business Flow
17428 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
17429 -- Prior Entry. Currently, the following code is always generated.
17430 ------------------------------------------------------------------------------------------------
17431 XLA_AE_LINES_PKG.ValidateCurrentLine;
17432
17433 ------------------------------------------------------------------------------------
17434 -- 4219869 Business Flow
17435 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
17436 ------------------------------------------------------------------------------------
17437 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
17438
17439 ----------------------------------------------------------------------------------
17440 -- 4219869 Business Flow
17441 -- Update journal entry status -- Need to generate this within IF <condition>
17442 ----------------------------------------------------------------------------------
17443 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
17444 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
17445 ,p_balance_type_code => l_balance_type_code
17446 );
17447
17448 -------------------------------------------------------------------------------------------
17449 -- 4262811 - Generate the Accrual Reversal lines
17450 -------------------------------------------------------------------------------------------
17451 BEGIN
17452 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
17453 (g_array_event(p_event_id).array_value_num('header_index'));
17454 IF l_acc_rev_flag IS NULL THEN
17455 l_acc_rev_flag := 'N';
17456 END IF;
17457 EXCEPTION
17458 WHEN OTHERS THEN
17459 l_acc_rev_flag := 'N';
17460 END;
17461 --
17462 IF (l_acc_rev_flag = 'Y') THEN
17463
17464 -- 4645092 ------------------------------------------------------------------------------
17465 -- To allow MPA report to determine if it should generate report process
17466 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
17467 ------------------------------------------------------------------------------------------
17468
17469 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
17470 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
17471 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
17472 -- call ADRs
17473 -- Bug 4922099
17474 --
17475 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
17476 (NVL(l_actual_upg_option, 'N') = 'O') OR
17477 (NVL(l_enc_upg_option, 'N') = 'O')
17478 )
17479 THEN
17480 NULL;
17481 --
17482 --
17483
17484 l_ccid := AcctDerRule_4(
17485 p_application_id => p_application_id
17486 , p_ae_header_id => l_ae_header_id
17487 , p_source_4 => p_source_4
17488 , x_transaction_coa_id => l_adr_transaction_coa_id
17489 , x_accounting_coa_id => l_adr_accounting_coa_id
17490 , x_value_type_code => l_adr_value_type_code
17491 , p_side => 'NA'
17492 );
17493
17494 xla_ae_lines_pkg.set_ccid(
17495 p_code_combination_id => l_ccid
17496 , p_value_type_code => l_adr_value_type_code
17497 , p_transaction_coa_id => l_adr_transaction_coa_id
17498 , p_accounting_coa_id => l_adr_accounting_coa_id
17499 , p_adr_code => 'CST_DEFAULT'
17500 , p_adr_type_code => 'S'
17501 , p_component_type => l_component_type
17502 , p_component_code => l_component_code
17503 , p_component_type_code => l_component_type_code
17504 , p_component_appl_id => l_component_appl_id
17505 , p_amb_context_code => l_amb_context_code
17506 , p_side => 'NA'
17507 );
17508
17509
17510 --
17511 --
17512 END IF;
17513
17514 --
17515 -- Update the line information that should be overwritten
17516 --
17517 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
17518 p_header_num => 1);
17519 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
17520
17521 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
17522
17523 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
17524 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
17525 END IF;
17526
17527 --
17528 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
17529 --
17530 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
17531 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
17532 ELSE
17533 ---------------------------------------------------------------------------------------------------
17534 -- 4262811a Switch Sign
17535 ---------------------------------------------------------------------------------------------------
17536 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
17537 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
17538 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
17539 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
17540 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
17541 -- 5132302
17542 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
17543 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
17544
17545 END IF;
17546
17547 -- 4955764
17548 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
17549 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
17550
17551
17552 XLA_AE_LINES_PKG.ValidateCurrentLine;
17553 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
17554
17555 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
17556 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
17557 ,p_balance_type_code => l_balance_type_code);
17558
17559 END IF;
17560
17561 -----------------------------------------------------------------------------------------
17562 -- 4262811 Multiperiod Accounting
17563 -----------------------------------------------------------------------------------------
17564 -- No MPA option is assigned.
17565
17566
17567 END IF;
17568 END IF;
17569 --
17570
17571 --
17572 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
17573 trace
17574 (p_msg => 'END of AcctLineType_34'
17575 ,p_level => C_LEVEL_PROCEDURE
17576 ,p_module => l_log_module);
17577 END IF;
17578 --
17579 EXCEPTION
17580 WHEN xla_exceptions_pkg.application_exception THEN
17581 RAISE;
17582 WHEN OTHERS THEN
17583 xla_exceptions_pkg.raise_message
17584 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_34');
17585 END AcctLineType_34;
17586 --
17587
17588 ---------------------------------------
17589 --
17590 -- PRIVATE FUNCTION
17591 -- AcctLineType_35
17592 --
17593 ---------------------------------------
17594 PROCEDURE AcctLineType_35 (
17595 p_application_id IN NUMBER
17596 ,p_event_id IN NUMBER
17597 ,p_calculate_acctd_flag IN VARCHAR2
17598 ,p_calculate_g_l_flag IN VARCHAR2
17599 ,p_actual_flag IN OUT VARCHAR2
17600 ,p_balance_type_code OUT VARCHAR2
17601 ,p_gain_or_loss_ref OUT VARCHAR2
17602
17603 --Cost Management Default Account
17604 , p_source_4 IN NUMBER
17605 --DISTRIBUTION_IDENTIFIER
17606 , p_source_11 IN NUMBER
17607 --Distribution Type
17608 , p_source_12 IN VARCHAR2
17609 , p_source_12_meaning IN VARCHAR2
17610 --Entered Currency Code
17611 , p_source_15 IN VARCHAR2
17612 --Entered Amount
17613 , p_source_18 IN NUMBER
17614 --Currency Conversion Date
17615 , p_source_19 IN DATE
17616 --Currency Conversion Rate
17617 , p_source_20 IN NUMBER
17618 --Currency Conversion Type
17619 , p_source_21 IN VARCHAR2
17620 --Accounted Amount
17621 , p_source_22 IN NUMBER
17622 --Accounting Line Type
17623 , p_source_24 IN NUMBER
17624 )
17625 IS
17626
17627 l_component_type VARCHAR2(80);
17628 l_component_code VARCHAR2(30);
17629 l_component_type_code VARCHAR2(1);
17630 l_component_appl_id INTEGER;
17631 l_amb_context_code VARCHAR2(30);
17632 l_entity_code VARCHAR2(30);
17633 l_event_class_code VARCHAR2(30);
17634 l_ae_header_id NUMBER;
17635 l_event_type_code VARCHAR2(30);
17636 l_line_definition_code VARCHAR2(30);
17637 l_line_definition_owner_code VARCHAR2(1);
17638 --
17639 -- adr variables
17640 l_segment VARCHAR2(30);
17641 l_ccid NUMBER;
17642 l_adr_transaction_coa_id NUMBER;
17643 l_adr_accounting_coa_id NUMBER;
17644 l_adr_flexfield_segment_code VARCHAR2(30);
17645 l_adr_flex_value_set_id NUMBER;
17646 l_adr_value_type_code VARCHAR2(30);
17647 l_adr_value_combination_id NUMBER;
17648 l_adr_value_segment_code VARCHAR2(30);
17649
17650 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
17651 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
17652 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
17653 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
17654
17655 -- 4262811 Variables ------------------------------------------------------------------------------------------
17656 l_entered_amt_idx NUMBER;
17657 l_accted_amt_idx NUMBER;
17658 l_acc_rev_flag VARCHAR2(1);
17659 l_accrual_line_num NUMBER;
17660 l_tmp_amt NUMBER;
17661 l_acc_rev_natural_side_code VARCHAR2(1);
17662
17663 l_num_entries NUMBER;
17664 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
17665 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
17666 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
17667 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
17668 l_recog_line_1 NUMBER;
17669 l_recog_line_2 NUMBER;
17670
17671 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
17672 l_bflow_applied_to_amt NUMBER; -- 5132302
17673 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
17674
17675 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
17676
17677 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
17678 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
17679
17680 ---------------------------------------------------------------------------------------------------------------
17681
17682
17683 --
17684 -- bulk performance
17685 --
17686 l_balance_type_code VARCHAR2(1);
17687 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
17688 l_log_module VARCHAR2(240);
17689
17690 --
17691 -- Upgrade strategy
17692 --
17693 l_actual_upg_option VARCHAR2(1);
17694 l_enc_upg_option VARCHAR2(1);
17695
17696 --
17697 BEGIN
17698 --
17699 IF g_log_enabled THEN
17700 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_35';
17701 END IF;
17702 --
17703 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
17704
17705 trace
17706 (p_msg => 'BEGIN of AcctLineType_35'
17707 ,p_level => C_LEVEL_PROCEDURE
17708 ,p_module => l_log_module);
17709
17710 END IF;
17711 --
17712 l_component_type := 'AMB_JLT';
17713 l_component_code := 'COST_VARIANCE';
17714 l_component_type_code := 'S';
17715 l_component_appl_id := 707;
17716 l_amb_context_code := 'DEFAULT';
17717 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
17718 l_event_class_code := 'USER_DEFINE';
17719 l_event_type_code := 'USUB_TXFR';
17720 l_line_definition_owner_code := 'S';
17721 l_line_definition_code := 'USER_SUB_TXFR';
17722 --
17723 l_balance_type_code := 'A';
17724 l_segment := NULL;
17725 l_ccid := NULL;
17726 l_adr_transaction_coa_id := NULL;
17727 l_adr_accounting_coa_id := NULL;
17728 l_adr_flexfield_segment_code := NULL;
17729 l_adr_flex_value_set_id := NULL;
17730 l_adr_value_type_code := NULL;
17731 l_adr_value_combination_id := NULL;
17732 l_adr_value_segment_code := NULL;
17733
17734 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
17735 l_bflow_class_code := ''; -- 4219869 Business Flow
17736 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
17737 l_budgetary_control_flag := 'N';
17738
17739 l_bflow_applied_to_amt_idx := NULL; -- 5132302
17740 l_bflow_applied_to_amt := NULL; -- 5132302
17741 l_entered_amt_idx := NULL; -- 4262811
17742 l_accted_amt_idx := NULL; -- 4262811
17743 l_acc_rev_flag := NULL; -- 4262811
17744 l_accrual_line_num := NULL; -- 4262811
17745 l_tmp_amt := NULL; -- 4262811
17746 --
17747
17748 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
17749 l_balance_type_code <> 'B' THEN
17750 IF NVL(p_source_24,9E125) = 13
17751 THEN
17752
17753 --
17754 XLA_AE_LINES_PKG.SetNewLine;
17755
17756 p_balance_type_code := l_balance_type_code;
17757 -- set the flag so later we will know whether the gain loss line needs to be created
17758
17759 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
17760 p_actual_flag :='A';
17761 END IF;
17762
17763 --
17764 -- bulk performance
17765 --
17766 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
17767 p_header_num => 0); -- 4262811
17768 --
17769 -- set accounting line options
17770 --
17771 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
17772 p_natural_side_code => 'D'
17773 , p_gain_or_loss_flag => 'N'
17774 , p_gl_transfer_mode_code => 'S'
17775 , p_acct_entry_type_code => 'A'
17776 , p_switch_side_flag => 'Y'
17777 , p_merge_duplicate_code => 'N'
17778 );
17779 --
17780 l_acc_rev_natural_side_code := 'C'; -- 4262811
17781 --
17782 --
17783 -- set accounting line type info
17784 --
17785 xla_ae_lines_pkg.SetAcctLineType
17786 (p_component_type => l_component_type
17787 ,p_event_type_code => l_event_type_code
17788 ,p_line_definition_owner_code => l_line_definition_owner_code
17789 ,p_line_definition_code => l_line_definition_code
17790 ,p_accounting_line_code => l_component_code
17791 ,p_accounting_line_type_code => l_component_type_code
17792 ,p_accounting_line_appl_id => l_component_appl_id
17793 ,p_amb_context_code => l_amb_context_code
17794 ,p_entity_code => l_entity_code
17795 ,p_event_class_code => l_event_class_code);
17796 --
17797 -- set accounting class
17798 --
17799 xla_ae_lines_pkg.SetAcctClass(
17800 p_accounting_class_code => 'COST_VARIANCE'
17801 , p_ae_header_id => l_ae_header_id
17802 );
17803
17804 --
17805 -- set rounding class
17806 --
17807 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
17808 'COST_VARIANCE';
17809
17810 --
17811 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
17812 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
17813 --
17814 -- bulk performance
17815 --
17816 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
17817
17818 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
17819 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
17820
17821 -- 4955764
17822 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
17823 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
17824
17825 -- 4458381 Public Sector Enh
17826
17827 --
17828 -- set accounting attributes for the line type
17829 --
17830 l_entered_amt_idx := 3;
17831 l_accted_amt_idx := 8;
17832 l_bflow_applied_to_amt_idx := NULL; -- 5132302
17833 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
17834 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
17835 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
17836 l_rec_acct_attrs.array_char_value(2) := p_source_12;
17837 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
17838 l_rec_acct_attrs.array_num_value(3) := p_source_18;
17839 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
17840 l_rec_acct_attrs.array_char_value(4) := p_source_15;
17841 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
17842 l_rec_acct_attrs.array_date_value(5) := p_source_19;
17843 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
17844 l_rec_acct_attrs.array_num_value(6) := p_source_20;
17845 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
17846 l_rec_acct_attrs.array_char_value(7) := p_source_21;
17847 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
17848 l_rec_acct_attrs.array_num_value(8) := p_source_22;
17849
17850 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
17851 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
17852
17853 ---------------------------------------------------------------------------------------------------------------
17854 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
17855 ---------------------------------------------------------------------------------------------------------------
17856 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
17857
17858 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
17859 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
17860
17861 IF xla_accounting_cache_pkg.GetValueChar
17862 (p_source_code => 'LEDGER_CATEGORY_CODE'
17863 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
17864 AND l_bflow_method_code = 'PRIOR_ENTRY'
17865 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
17866 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
17867 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
17868 )
17869 THEN
17870 xla_ae_lines_pkg.BflowUpgEntry
17871 (p_business_method_code => l_bflow_method_code
17872 ,p_business_class_code => l_bflow_class_code
17873 ,p_balance_type => l_balance_type_code);
17874 ELSE
17875 NULL;
17876 -- No business flow processing for business flow method of NONE.
17877 END IF;
17878
17879 --
17880 -- call analytical criteria
17881 --
17882
17883 --
17884 -- call description
17885 --
17886 -- No description or it is inherited.
17887 --
17888 -- call ADRs
17889 -- Bug 4922099
17890 --
17891 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
17892 (NVL(l_actual_upg_option, 'N') = 'O') OR
17893 (NVL(l_enc_upg_option, 'N') = 'O')
17894 )
17895 THEN
17896 NULL;
17897 --
17898 --
17899
17900 l_ccid := AcctDerRule_4(
17901 p_application_id => p_application_id
17902 , p_ae_header_id => l_ae_header_id
17903 , p_source_4 => p_source_4
17904 , x_transaction_coa_id => l_adr_transaction_coa_id
17905 , x_accounting_coa_id => l_adr_accounting_coa_id
17906 , x_value_type_code => l_adr_value_type_code
17907 , p_side => 'NA'
17908 );
17909
17910 xla_ae_lines_pkg.set_ccid(
17911 p_code_combination_id => l_ccid
17912 , p_value_type_code => l_adr_value_type_code
17913 , p_transaction_coa_id => l_adr_transaction_coa_id
17914 , p_accounting_coa_id => l_adr_accounting_coa_id
17915 , p_adr_code => 'CST_DEFAULT'
17916 , p_adr_type_code => 'S'
17917 , p_component_type => l_component_type
17918 , p_component_code => l_component_code
17919 , p_component_type_code => l_component_type_code
17920 , p_component_appl_id => l_component_appl_id
17921 , p_amb_context_code => l_amb_context_code
17922 , p_side => 'NA'
17923 );
17924
17925
17926 --
17927 --
17928 END IF;
17929 --
17930 -- Bug 4922099
17931 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
17932 (NVL(l_enc_upg_option, 'N') = 'O')
17933 ) AND
17934 (l_bflow_method_code = 'PRIOR_ENTRY')
17935 )
17936 THEN
17937 IF
17938 --
17939 1 = 2
17940 --
17941 THEN
17942 xla_accounting_err_pkg.build_message
17943 (p_appli_s_name => 'XLA'
17944 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
17945 ,p_token_1 => 'LINE_NUMBER'
17946 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
17947 ,p_token_2 => 'LINE_TYPE_NAME'
17948 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
17949 l_component_type
17950 ,l_component_code
17951 ,l_component_type_code
17952 ,l_component_appl_id
17953 ,l_amb_context_code
17954 ,l_entity_code
17955 ,l_event_class_code
17956 )
17957 ,p_token_3 => 'OWNER'
17958 ,p_value_3 => xla_lookups_pkg.get_meaning(
17959 p_lookup_type => 'XLA_OWNER_TYPE'
17960 ,p_lookup_code => l_component_type_code
17961 )
17962 ,p_token_4 => 'PRODUCT_NAME'
17963 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
17964 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
17965 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
17966 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
17967 ,p_ae_header_id => NULL
17968 );
17969
17970 IF (C_LEVEL_ERROR>= g_log_level) THEN
17971 trace
17972 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
17973 ,p_level => C_LEVEL_ERROR
17974 ,p_module => l_log_module);
17975 END IF;
17976 END IF;
17977 END IF;
17978 --
17979 --
17980 ------------------------------------------------------------------------------------------------
17981 -- 4219869 Business Flow
17982 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
17983 -- Prior Entry. Currently, the following code is always generated.
17984 ------------------------------------------------------------------------------------------------
17985 XLA_AE_LINES_PKG.ValidateCurrentLine;
17986
17987 ------------------------------------------------------------------------------------
17988 -- 4219869 Business Flow
17989 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
17990 ------------------------------------------------------------------------------------
17991 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
17992
17993 ----------------------------------------------------------------------------------
17994 -- 4219869 Business Flow
17995 -- Update journal entry status -- Need to generate this within IF <condition>
17996 ----------------------------------------------------------------------------------
17997 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
17998 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
17999 ,p_balance_type_code => l_balance_type_code
18000 );
18001
18002 -------------------------------------------------------------------------------------------
18003 -- 4262811 - Generate the Accrual Reversal lines
18004 -------------------------------------------------------------------------------------------
18005 BEGIN
18006 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
18007 (g_array_event(p_event_id).array_value_num('header_index'));
18008 IF l_acc_rev_flag IS NULL THEN
18009 l_acc_rev_flag := 'N';
18010 END IF;
18011 EXCEPTION
18012 WHEN OTHERS THEN
18013 l_acc_rev_flag := 'N';
18014 END;
18015 --
18016 IF (l_acc_rev_flag = 'Y') THEN
18017
18018 -- 4645092 ------------------------------------------------------------------------------
18019 -- To allow MPA report to determine if it should generate report process
18020 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
18021 ------------------------------------------------------------------------------------------
18022
18023 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
18024 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
18025 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
18026 -- call ADRs
18027 -- Bug 4922099
18028 --
18029 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
18030 (NVL(l_actual_upg_option, 'N') = 'O') OR
18031 (NVL(l_enc_upg_option, 'N') = 'O')
18032 )
18033 THEN
18034 NULL;
18035 --
18036 --
18037
18038 l_ccid := AcctDerRule_4(
18039 p_application_id => p_application_id
18040 , p_ae_header_id => l_ae_header_id
18041 , p_source_4 => p_source_4
18042 , x_transaction_coa_id => l_adr_transaction_coa_id
18043 , x_accounting_coa_id => l_adr_accounting_coa_id
18044 , x_value_type_code => l_adr_value_type_code
18045 , p_side => 'NA'
18046 );
18047
18048 xla_ae_lines_pkg.set_ccid(
18049 p_code_combination_id => l_ccid
18050 , p_value_type_code => l_adr_value_type_code
18051 , p_transaction_coa_id => l_adr_transaction_coa_id
18052 , p_accounting_coa_id => l_adr_accounting_coa_id
18053 , p_adr_code => 'CST_DEFAULT'
18054 , p_adr_type_code => 'S'
18055 , p_component_type => l_component_type
18056 , p_component_code => l_component_code
18057 , p_component_type_code => l_component_type_code
18058 , p_component_appl_id => l_component_appl_id
18059 , p_amb_context_code => l_amb_context_code
18060 , p_side => 'NA'
18061 );
18062
18063
18064 --
18065 --
18066 END IF;
18067
18068 --
18069 -- Update the line information that should be overwritten
18070 --
18071 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
18072 p_header_num => 1);
18073 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
18074
18075 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
18076
18077 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
18078 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
18079 END IF;
18080
18081 --
18082 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
18083 --
18084 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
18085 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
18086 ELSE
18087 ---------------------------------------------------------------------------------------------------
18088 -- 4262811a Switch Sign
18089 ---------------------------------------------------------------------------------------------------
18090 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
18091 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
18092 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
18093 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
18094 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
18095 -- 5132302
18096 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
18097 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
18098
18099 END IF;
18100
18101 -- 4955764
18102 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
18103 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
18104
18105
18106 XLA_AE_LINES_PKG.ValidateCurrentLine;
18107 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
18108
18109 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
18110 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
18111 ,p_balance_type_code => l_balance_type_code);
18112
18113 END IF;
18114
18115 -----------------------------------------------------------------------------------------
18116 -- 4262811 Multiperiod Accounting
18117 -----------------------------------------------------------------------------------------
18118 -- No MPA option is assigned.
18119
18120
18121 END IF;
18122 END IF;
18123 --
18124
18125 --
18126 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
18127 trace
18128 (p_msg => 'END of AcctLineType_35'
18129 ,p_level => C_LEVEL_PROCEDURE
18130 ,p_module => l_log_module);
18131 END IF;
18132 --
18133 EXCEPTION
18134 WHEN xla_exceptions_pkg.application_exception THEN
18135 RAISE;
18136 WHEN OTHERS THEN
18137 xla_exceptions_pkg.raise_message
18138 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_35');
18139 END AcctLineType_35;
18140 --
18141
18142 ---------------------------------------
18143 --
18144 -- PRIVATE FUNCTION
18145 -- AcctLineType_36
18146 --
18147 ---------------------------------------
18148 PROCEDURE AcctLineType_36 (
18149 p_application_id IN NUMBER
18150 ,p_event_id IN NUMBER
18151 ,p_calculate_acctd_flag IN VARCHAR2
18152 ,p_calculate_g_l_flag IN VARCHAR2
18153 ,p_actual_flag IN OUT VARCHAR2
18154 ,p_balance_type_code OUT VARCHAR2
18155 ,p_gain_or_loss_ref OUT VARCHAR2
18156
18157 --Cost Management Default Account
18158 , p_source_4 IN NUMBER
18159 --DISTRIBUTION_IDENTIFIER
18160 , p_source_11 IN NUMBER
18161 --Distribution Type
18162 , p_source_12 IN VARCHAR2
18163 , p_source_12_meaning IN VARCHAR2
18164 --Entered Currency Code
18165 , p_source_15 IN VARCHAR2
18166 --Entered Amount
18167 , p_source_18 IN NUMBER
18168 --Currency Conversion Date
18169 , p_source_19 IN DATE
18170 --Currency Conversion Rate
18171 , p_source_20 IN NUMBER
18172 --Currency Conversion Type
18173 , p_source_21 IN VARCHAR2
18174 --Accounted Amount
18175 , p_source_22 IN NUMBER
18176 --Accounting Line Type
18177 , p_source_24 IN NUMBER
18178 )
18179 IS
18180
18181 l_component_type VARCHAR2(80);
18182 l_component_code VARCHAR2(30);
18183 l_component_type_code VARCHAR2(1);
18184 l_component_appl_id INTEGER;
18185 l_amb_context_code VARCHAR2(30);
18186 l_entity_code VARCHAR2(30);
18187 l_event_class_code VARCHAR2(30);
18188 l_ae_header_id NUMBER;
18189 l_event_type_code VARCHAR2(30);
18190 l_line_definition_code VARCHAR2(30);
18191 l_line_definition_owner_code VARCHAR2(1);
18192 --
18193 -- adr variables
18194 l_segment VARCHAR2(30);
18195 l_ccid NUMBER;
18196 l_adr_transaction_coa_id NUMBER;
18197 l_adr_accounting_coa_id NUMBER;
18198 l_adr_flexfield_segment_code VARCHAR2(30);
18199 l_adr_flex_value_set_id NUMBER;
18200 l_adr_value_type_code VARCHAR2(30);
18201 l_adr_value_combination_id NUMBER;
18202 l_adr_value_segment_code VARCHAR2(30);
18203
18204 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
18205 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
18206 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
18207 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
18208
18209 -- 4262811 Variables ------------------------------------------------------------------------------------------
18210 l_entered_amt_idx NUMBER;
18211 l_accted_amt_idx NUMBER;
18212 l_acc_rev_flag VARCHAR2(1);
18213 l_accrual_line_num NUMBER;
18214 l_tmp_amt NUMBER;
18215 l_acc_rev_natural_side_code VARCHAR2(1);
18216
18217 l_num_entries NUMBER;
18218 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
18219 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
18220 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
18221 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
18222 l_recog_line_1 NUMBER;
18223 l_recog_line_2 NUMBER;
18224
18225 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
18226 l_bflow_applied_to_amt NUMBER; -- 5132302
18227 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
18228
18229 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
18230
18231 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
18232 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
18233
18234 ---------------------------------------------------------------------------------------------------------------
18235
18236
18237 --
18238 -- bulk performance
18239 --
18240 l_balance_type_code VARCHAR2(1);
18241 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
18242 l_log_module VARCHAR2(240);
18243
18244 --
18245 -- Upgrade strategy
18246 --
18247 l_actual_upg_option VARCHAR2(1);
18248 l_enc_upg_option VARCHAR2(1);
18249
18250 --
18251 BEGIN
18252 --
18253 IF g_log_enabled THEN
18254 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_36';
18255 END IF;
18256 --
18257 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
18258
18259 trace
18260 (p_msg => 'BEGIN of AcctLineType_36'
18261 ,p_level => C_LEVEL_PROCEDURE
18262 ,p_module => l_log_module);
18263
18264 END IF;
18265 --
18266 l_component_type := 'AMB_JLT';
18267 l_component_code := 'COST_VARIANCE';
18268 l_component_type_code := 'S';
18269 l_component_appl_id := 707;
18270 l_amb_context_code := 'DEFAULT';
18271 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
18272 l_event_class_code := 'USER_DEFINE';
18273 l_event_type_code := 'UDIR_INTERORG_RCPT_NO_TP';
18274 l_line_definition_owner_code := 'S';
18275 l_line_definition_code := 'USER_DIR_INTERORG_RCPT_NO_TP';
18276 --
18277 l_balance_type_code := 'A';
18278 l_segment := NULL;
18279 l_ccid := NULL;
18280 l_adr_transaction_coa_id := NULL;
18281 l_adr_accounting_coa_id := NULL;
18282 l_adr_flexfield_segment_code := NULL;
18283 l_adr_flex_value_set_id := NULL;
18284 l_adr_value_type_code := NULL;
18285 l_adr_value_combination_id := NULL;
18286 l_adr_value_segment_code := NULL;
18287
18288 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
18289 l_bflow_class_code := ''; -- 4219869 Business Flow
18290 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
18291 l_budgetary_control_flag := 'N';
18292
18293 l_bflow_applied_to_amt_idx := NULL; -- 5132302
18294 l_bflow_applied_to_amt := NULL; -- 5132302
18295 l_entered_amt_idx := NULL; -- 4262811
18296 l_accted_amt_idx := NULL; -- 4262811
18297 l_acc_rev_flag := NULL; -- 4262811
18298 l_accrual_line_num := NULL; -- 4262811
18299 l_tmp_amt := NULL; -- 4262811
18300 --
18301
18302 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
18303 l_balance_type_code <> 'B' THEN
18304 IF NVL(p_source_24,9E125) = 13
18305 THEN
18306
18307 --
18308 XLA_AE_LINES_PKG.SetNewLine;
18309
18310 p_balance_type_code := l_balance_type_code;
18311 -- set the flag so later we will know whether the gain loss line needs to be created
18312
18313 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
18314 p_actual_flag :='A';
18315 END IF;
18316
18317 --
18318 -- bulk performance
18319 --
18320 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
18321 p_header_num => 0); -- 4262811
18322 --
18323 -- set accounting line options
18324 --
18325 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
18326 p_natural_side_code => 'D'
18327 , p_gain_or_loss_flag => 'N'
18328 , p_gl_transfer_mode_code => 'S'
18329 , p_acct_entry_type_code => 'A'
18330 , p_switch_side_flag => 'Y'
18331 , p_merge_duplicate_code => 'N'
18332 );
18333 --
18334 l_acc_rev_natural_side_code := 'C'; -- 4262811
18335 --
18336 --
18337 -- set accounting line type info
18338 --
18339 xla_ae_lines_pkg.SetAcctLineType
18340 (p_component_type => l_component_type
18341 ,p_event_type_code => l_event_type_code
18342 ,p_line_definition_owner_code => l_line_definition_owner_code
18343 ,p_line_definition_code => l_line_definition_code
18344 ,p_accounting_line_code => l_component_code
18345 ,p_accounting_line_type_code => l_component_type_code
18346 ,p_accounting_line_appl_id => l_component_appl_id
18347 ,p_amb_context_code => l_amb_context_code
18348 ,p_entity_code => l_entity_code
18349 ,p_event_class_code => l_event_class_code);
18350 --
18351 -- set accounting class
18352 --
18353 xla_ae_lines_pkg.SetAcctClass(
18354 p_accounting_class_code => 'COST_VARIANCE'
18355 , p_ae_header_id => l_ae_header_id
18356 );
18357
18358 --
18359 -- set rounding class
18360 --
18361 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
18362 'COST_VARIANCE';
18363
18364 --
18365 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
18366 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
18367 --
18368 -- bulk performance
18369 --
18370 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
18371
18372 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
18373 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
18374
18375 -- 4955764
18376 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
18377 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
18378
18379 -- 4458381 Public Sector Enh
18380
18381 --
18382 -- set accounting attributes for the line type
18383 --
18384 l_entered_amt_idx := 3;
18385 l_accted_amt_idx := 8;
18386 l_bflow_applied_to_amt_idx := NULL; -- 5132302
18387 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
18388 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
18389 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
18390 l_rec_acct_attrs.array_char_value(2) := p_source_12;
18391 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
18392 l_rec_acct_attrs.array_num_value(3) := p_source_18;
18393 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
18394 l_rec_acct_attrs.array_char_value(4) := p_source_15;
18395 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
18396 l_rec_acct_attrs.array_date_value(5) := p_source_19;
18397 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
18398 l_rec_acct_attrs.array_num_value(6) := p_source_20;
18399 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
18400 l_rec_acct_attrs.array_char_value(7) := p_source_21;
18401 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
18402 l_rec_acct_attrs.array_num_value(8) := p_source_22;
18403
18404 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
18405 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
18406
18407 ---------------------------------------------------------------------------------------------------------------
18408 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
18409 ---------------------------------------------------------------------------------------------------------------
18410 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
18411
18412 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
18413 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
18414
18415 IF xla_accounting_cache_pkg.GetValueChar
18416 (p_source_code => 'LEDGER_CATEGORY_CODE'
18417 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
18418 AND l_bflow_method_code = 'PRIOR_ENTRY'
18419 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
18420 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
18421 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
18422 )
18423 THEN
18424 xla_ae_lines_pkg.BflowUpgEntry
18425 (p_business_method_code => l_bflow_method_code
18426 ,p_business_class_code => l_bflow_class_code
18427 ,p_balance_type => l_balance_type_code);
18428 ELSE
18429 NULL;
18430 -- No business flow processing for business flow method of NONE.
18431 END IF;
18432
18433 --
18434 -- call analytical criteria
18435 --
18436
18437 --
18438 -- call description
18439 --
18440 -- No description or it is inherited.
18441 --
18442 -- call ADRs
18443 -- Bug 4922099
18444 --
18445 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
18446 (NVL(l_actual_upg_option, 'N') = 'O') OR
18447 (NVL(l_enc_upg_option, 'N') = 'O')
18448 )
18449 THEN
18450 NULL;
18451 --
18452 --
18453
18454 l_ccid := AcctDerRule_4(
18455 p_application_id => p_application_id
18456 , p_ae_header_id => l_ae_header_id
18457 , p_source_4 => p_source_4
18458 , x_transaction_coa_id => l_adr_transaction_coa_id
18459 , x_accounting_coa_id => l_adr_accounting_coa_id
18460 , x_value_type_code => l_adr_value_type_code
18461 , p_side => 'NA'
18462 );
18463
18464 xla_ae_lines_pkg.set_ccid(
18465 p_code_combination_id => l_ccid
18466 , p_value_type_code => l_adr_value_type_code
18467 , p_transaction_coa_id => l_adr_transaction_coa_id
18468 , p_accounting_coa_id => l_adr_accounting_coa_id
18469 , p_adr_code => 'CST_DEFAULT'
18470 , p_adr_type_code => 'S'
18471 , p_component_type => l_component_type
18472 , p_component_code => l_component_code
18473 , p_component_type_code => l_component_type_code
18474 , p_component_appl_id => l_component_appl_id
18475 , p_amb_context_code => l_amb_context_code
18476 , p_side => 'NA'
18477 );
18478
18479
18480 --
18481 --
18482 END IF;
18483 --
18484 -- Bug 4922099
18485 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
18486 (NVL(l_enc_upg_option, 'N') = 'O')
18487 ) AND
18488 (l_bflow_method_code = 'PRIOR_ENTRY')
18489 )
18490 THEN
18491 IF
18492 --
18493 1 = 2
18494 --
18495 THEN
18496 xla_accounting_err_pkg.build_message
18497 (p_appli_s_name => 'XLA'
18498 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
18499 ,p_token_1 => 'LINE_NUMBER'
18500 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
18501 ,p_token_2 => 'LINE_TYPE_NAME'
18502 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
18503 l_component_type
18504 ,l_component_code
18505 ,l_component_type_code
18506 ,l_component_appl_id
18507 ,l_amb_context_code
18508 ,l_entity_code
18509 ,l_event_class_code
18510 )
18511 ,p_token_3 => 'OWNER'
18512 ,p_value_3 => xla_lookups_pkg.get_meaning(
18513 p_lookup_type => 'XLA_OWNER_TYPE'
18514 ,p_lookup_code => l_component_type_code
18515 )
18516 ,p_token_4 => 'PRODUCT_NAME'
18517 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
18518 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
18519 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
18520 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
18521 ,p_ae_header_id => NULL
18522 );
18523
18524 IF (C_LEVEL_ERROR>= g_log_level) THEN
18525 trace
18526 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
18527 ,p_level => C_LEVEL_ERROR
18528 ,p_module => l_log_module);
18529 END IF;
18530 END IF;
18531 END IF;
18532 --
18533 --
18534 ------------------------------------------------------------------------------------------------
18535 -- 4219869 Business Flow
18536 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
18537 -- Prior Entry. Currently, the following code is always generated.
18538 ------------------------------------------------------------------------------------------------
18539 XLA_AE_LINES_PKG.ValidateCurrentLine;
18540
18541 ------------------------------------------------------------------------------------
18542 -- 4219869 Business Flow
18543 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
18544 ------------------------------------------------------------------------------------
18545 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
18546
18547 ----------------------------------------------------------------------------------
18548 -- 4219869 Business Flow
18549 -- Update journal entry status -- Need to generate this within IF <condition>
18550 ----------------------------------------------------------------------------------
18551 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
18552 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
18553 ,p_balance_type_code => l_balance_type_code
18554 );
18555
18556 -------------------------------------------------------------------------------------------
18557 -- 4262811 - Generate the Accrual Reversal lines
18558 -------------------------------------------------------------------------------------------
18559 BEGIN
18560 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
18561 (g_array_event(p_event_id).array_value_num('header_index'));
18562 IF l_acc_rev_flag IS NULL THEN
18563 l_acc_rev_flag := 'N';
18564 END IF;
18565 EXCEPTION
18566 WHEN OTHERS THEN
18567 l_acc_rev_flag := 'N';
18568 END;
18569 --
18570 IF (l_acc_rev_flag = 'Y') THEN
18571
18572 -- 4645092 ------------------------------------------------------------------------------
18573 -- To allow MPA report to determine if it should generate report process
18574 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
18575 ------------------------------------------------------------------------------------------
18576
18577 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
18578 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
18579 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
18580 -- call ADRs
18581 -- Bug 4922099
18582 --
18583 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
18584 (NVL(l_actual_upg_option, 'N') = 'O') OR
18585 (NVL(l_enc_upg_option, 'N') = 'O')
18586 )
18587 THEN
18588 NULL;
18589 --
18590 --
18591
18592 l_ccid := AcctDerRule_4(
18593 p_application_id => p_application_id
18594 , p_ae_header_id => l_ae_header_id
18595 , p_source_4 => p_source_4
18596 , x_transaction_coa_id => l_adr_transaction_coa_id
18597 , x_accounting_coa_id => l_adr_accounting_coa_id
18598 , x_value_type_code => l_adr_value_type_code
18599 , p_side => 'NA'
18600 );
18601
18602 xla_ae_lines_pkg.set_ccid(
18603 p_code_combination_id => l_ccid
18604 , p_value_type_code => l_adr_value_type_code
18605 , p_transaction_coa_id => l_adr_transaction_coa_id
18606 , p_accounting_coa_id => l_adr_accounting_coa_id
18607 , p_adr_code => 'CST_DEFAULT'
18608 , p_adr_type_code => 'S'
18609 , p_component_type => l_component_type
18610 , p_component_code => l_component_code
18611 , p_component_type_code => l_component_type_code
18612 , p_component_appl_id => l_component_appl_id
18613 , p_amb_context_code => l_amb_context_code
18614 , p_side => 'NA'
18615 );
18616
18617
18618 --
18619 --
18620 END IF;
18621
18622 --
18623 -- Update the line information that should be overwritten
18624 --
18625 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
18626 p_header_num => 1);
18627 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
18628
18629 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
18630
18631 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
18632 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
18633 END IF;
18634
18635 --
18636 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
18637 --
18638 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
18639 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
18640 ELSE
18641 ---------------------------------------------------------------------------------------------------
18642 -- 4262811a Switch Sign
18643 ---------------------------------------------------------------------------------------------------
18644 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
18645 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
18646 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
18647 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
18648 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
18649 -- 5132302
18650 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
18651 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
18652
18653 END IF;
18654
18655 -- 4955764
18656 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
18657 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
18658
18659
18660 XLA_AE_LINES_PKG.ValidateCurrentLine;
18661 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
18662
18663 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
18664 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
18665 ,p_balance_type_code => l_balance_type_code);
18666
18667 END IF;
18668
18669 -----------------------------------------------------------------------------------------
18670 -- 4262811 Multiperiod Accounting
18671 -----------------------------------------------------------------------------------------
18672 -- No MPA option is assigned.
18673
18674
18675 END IF;
18676 END IF;
18677 --
18678
18679 --
18680 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
18681 trace
18682 (p_msg => 'END of AcctLineType_36'
18683 ,p_level => C_LEVEL_PROCEDURE
18684 ,p_module => l_log_module);
18685 END IF;
18686 --
18687 EXCEPTION
18688 WHEN xla_exceptions_pkg.application_exception THEN
18689 RAISE;
18690 WHEN OTHERS THEN
18691 xla_exceptions_pkg.raise_message
18692 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_36');
18693 END AcctLineType_36;
18694 --
18695
18696 ---------------------------------------
18697 --
18698 -- PRIVATE FUNCTION
18699 -- AcctLineType_37
18700 --
18701 ---------------------------------------
18702 PROCEDURE AcctLineType_37 (
18703 p_application_id IN NUMBER
18704 ,p_event_id IN NUMBER
18705 ,p_calculate_acctd_flag IN VARCHAR2
18706 ,p_calculate_g_l_flag IN VARCHAR2
18707 ,p_actual_flag IN OUT VARCHAR2
18708 ,p_balance_type_code OUT VARCHAR2
18709 ,p_gain_or_loss_ref OUT VARCHAR2
18710
18711 --Cost Management Default Account
18712 , p_source_4 IN NUMBER
18713 --DISTRIBUTION_IDENTIFIER
18714 , p_source_11 IN NUMBER
18715 --Distribution Type
18716 , p_source_12 IN VARCHAR2
18717 , p_source_12_meaning IN VARCHAR2
18718 --Entered Currency Code
18719 , p_source_15 IN VARCHAR2
18720 --Entered Amount
18721 , p_source_18 IN NUMBER
18722 --Currency Conversion Date
18723 , p_source_19 IN DATE
18724 --Currency Conversion Rate
18725 , p_source_20 IN NUMBER
18726 --Currency Conversion Type
18727 , p_source_21 IN VARCHAR2
18728 --Accounted Amount
18729 , p_source_22 IN NUMBER
18730 --Accounting Line Type
18731 , p_source_24 IN NUMBER
18732 )
18733 IS
18734
18735 l_component_type VARCHAR2(80);
18736 l_component_code VARCHAR2(30);
18737 l_component_type_code VARCHAR2(1);
18738 l_component_appl_id INTEGER;
18739 l_amb_context_code VARCHAR2(30);
18740 l_entity_code VARCHAR2(30);
18741 l_event_class_code VARCHAR2(30);
18742 l_ae_header_id NUMBER;
18743 l_event_type_code VARCHAR2(30);
18744 l_line_definition_code VARCHAR2(30);
18745 l_line_definition_owner_code VARCHAR2(1);
18746 --
18747 -- adr variables
18748 l_segment VARCHAR2(30);
18749 l_ccid NUMBER;
18750 l_adr_transaction_coa_id NUMBER;
18751 l_adr_accounting_coa_id NUMBER;
18752 l_adr_flexfield_segment_code VARCHAR2(30);
18753 l_adr_flex_value_set_id NUMBER;
18754 l_adr_value_type_code VARCHAR2(30);
18755 l_adr_value_combination_id NUMBER;
18756 l_adr_value_segment_code VARCHAR2(30);
18757
18758 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
18759 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
18760 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
18761 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
18762
18763 -- 4262811 Variables ------------------------------------------------------------------------------------------
18764 l_entered_amt_idx NUMBER;
18765 l_accted_amt_idx NUMBER;
18766 l_acc_rev_flag VARCHAR2(1);
18767 l_accrual_line_num NUMBER;
18768 l_tmp_amt NUMBER;
18769 l_acc_rev_natural_side_code VARCHAR2(1);
18770
18771 l_num_entries NUMBER;
18772 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
18773 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
18774 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
18775 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
18776 l_recog_line_1 NUMBER;
18777 l_recog_line_2 NUMBER;
18778
18779 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
18780 l_bflow_applied_to_amt NUMBER; -- 5132302
18781 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
18782
18783 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
18784
18785 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
18786 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
18787
18788 ---------------------------------------------------------------------------------------------------------------
18789
18790
18791 --
18792 -- bulk performance
18793 --
18794 l_balance_type_code VARCHAR2(1);
18795 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
18796 l_log_module VARCHAR2(240);
18797
18798 --
18799 -- Upgrade strategy
18800 --
18801 l_actual_upg_option VARCHAR2(1);
18802 l_enc_upg_option VARCHAR2(1);
18803
18804 --
18805 BEGIN
18806 --
18807 IF g_log_enabled THEN
18808 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_37';
18809 END IF;
18810 --
18811 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
18812
18813 trace
18814 (p_msg => 'BEGIN of AcctLineType_37'
18815 ,p_level => C_LEVEL_PROCEDURE
18816 ,p_module => l_log_module);
18817
18818 END IF;
18819 --
18820 l_component_type := 'AMB_JLT';
18821 l_component_code := 'COST_VARIANCE';
18822 l_component_type_code := 'S';
18823 l_component_appl_id := 707;
18824 l_amb_context_code := 'DEFAULT';
18825 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
18826 l_event_class_code := 'USER_DEFINE';
18827 l_event_type_code := 'UDIR_INTERORG_RCPT';
18828 l_line_definition_owner_code := 'S';
18829 l_line_definition_code := 'USER_DIR_INTERORG_RCPT';
18830 --
18831 l_balance_type_code := 'A';
18832 l_segment := NULL;
18833 l_ccid := NULL;
18834 l_adr_transaction_coa_id := NULL;
18835 l_adr_accounting_coa_id := NULL;
18836 l_adr_flexfield_segment_code := NULL;
18837 l_adr_flex_value_set_id := NULL;
18838 l_adr_value_type_code := NULL;
18839 l_adr_value_combination_id := NULL;
18840 l_adr_value_segment_code := NULL;
18841
18842 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
18843 l_bflow_class_code := ''; -- 4219869 Business Flow
18844 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
18845 l_budgetary_control_flag := 'N';
18846
18847 l_bflow_applied_to_amt_idx := NULL; -- 5132302
18848 l_bflow_applied_to_amt := NULL; -- 5132302
18849 l_entered_amt_idx := NULL; -- 4262811
18850 l_accted_amt_idx := NULL; -- 4262811
18851 l_acc_rev_flag := NULL; -- 4262811
18852 l_accrual_line_num := NULL; -- 4262811
18853 l_tmp_amt := NULL; -- 4262811
18854 --
18855
18856 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
18857 l_balance_type_code <> 'B' THEN
18858 IF NVL(p_source_24,9E125) = 13
18859 THEN
18860
18861 --
18862 XLA_AE_LINES_PKG.SetNewLine;
18863
18864 p_balance_type_code := l_balance_type_code;
18865 -- set the flag so later we will know whether the gain loss line needs to be created
18866
18867 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
18868 p_actual_flag :='A';
18869 END IF;
18870
18871 --
18872 -- bulk performance
18873 --
18874 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
18875 p_header_num => 0); -- 4262811
18876 --
18877 -- set accounting line options
18878 --
18879 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
18880 p_natural_side_code => 'D'
18881 , p_gain_or_loss_flag => 'N'
18882 , p_gl_transfer_mode_code => 'S'
18883 , p_acct_entry_type_code => 'A'
18884 , p_switch_side_flag => 'Y'
18885 , p_merge_duplicate_code => 'N'
18886 );
18887 --
18888 l_acc_rev_natural_side_code := 'C'; -- 4262811
18889 --
18890 --
18891 -- set accounting line type info
18892 --
18893 xla_ae_lines_pkg.SetAcctLineType
18894 (p_component_type => l_component_type
18895 ,p_event_type_code => l_event_type_code
18896 ,p_line_definition_owner_code => l_line_definition_owner_code
18897 ,p_line_definition_code => l_line_definition_code
18898 ,p_accounting_line_code => l_component_code
18899 ,p_accounting_line_type_code => l_component_type_code
18900 ,p_accounting_line_appl_id => l_component_appl_id
18901 ,p_amb_context_code => l_amb_context_code
18902 ,p_entity_code => l_entity_code
18903 ,p_event_class_code => l_event_class_code);
18904 --
18905 -- set accounting class
18906 --
18907 xla_ae_lines_pkg.SetAcctClass(
18908 p_accounting_class_code => 'COST_VARIANCE'
18909 , p_ae_header_id => l_ae_header_id
18910 );
18911
18912 --
18913 -- set rounding class
18914 --
18915 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
18916 'COST_VARIANCE';
18917
18918 --
18919 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
18920 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
18921 --
18922 -- bulk performance
18923 --
18924 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
18925
18926 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
18927 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
18928
18929 -- 4955764
18930 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
18931 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
18932
18933 -- 4458381 Public Sector Enh
18934
18935 --
18936 -- set accounting attributes for the line type
18937 --
18938 l_entered_amt_idx := 3;
18939 l_accted_amt_idx := 8;
18940 l_bflow_applied_to_amt_idx := NULL; -- 5132302
18941 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
18942 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
18943 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
18944 l_rec_acct_attrs.array_char_value(2) := p_source_12;
18945 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
18946 l_rec_acct_attrs.array_num_value(3) := p_source_18;
18947 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
18948 l_rec_acct_attrs.array_char_value(4) := p_source_15;
18949 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
18950 l_rec_acct_attrs.array_date_value(5) := p_source_19;
18951 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
18952 l_rec_acct_attrs.array_num_value(6) := p_source_20;
18953 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
18954 l_rec_acct_attrs.array_char_value(7) := p_source_21;
18955 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
18956 l_rec_acct_attrs.array_num_value(8) := p_source_22;
18957
18958 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
18959 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
18960
18961 ---------------------------------------------------------------------------------------------------------------
18962 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
18963 ---------------------------------------------------------------------------------------------------------------
18964 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
18965
18966 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
18967 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
18968
18969 IF xla_accounting_cache_pkg.GetValueChar
18970 (p_source_code => 'LEDGER_CATEGORY_CODE'
18971 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
18972 AND l_bflow_method_code = 'PRIOR_ENTRY'
18973 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
18974 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
18975 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
18976 )
18977 THEN
18978 xla_ae_lines_pkg.BflowUpgEntry
18979 (p_business_method_code => l_bflow_method_code
18980 ,p_business_class_code => l_bflow_class_code
18981 ,p_balance_type => l_balance_type_code);
18982 ELSE
18983 NULL;
18984 -- No business flow processing for business flow method of NONE.
18985 END IF;
18986
18987 --
18988 -- call analytical criteria
18989 --
18990
18991 --
18992 -- call description
18993 --
18994 -- No description or it is inherited.
18995 --
18996 -- call ADRs
18997 -- Bug 4922099
18998 --
18999 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
19000 (NVL(l_actual_upg_option, 'N') = 'O') OR
19001 (NVL(l_enc_upg_option, 'N') = 'O')
19002 )
19003 THEN
19004 NULL;
19005 --
19006 --
19007
19008 l_ccid := AcctDerRule_4(
19009 p_application_id => p_application_id
19010 , p_ae_header_id => l_ae_header_id
19011 , p_source_4 => p_source_4
19012 , x_transaction_coa_id => l_adr_transaction_coa_id
19013 , x_accounting_coa_id => l_adr_accounting_coa_id
19014 , x_value_type_code => l_adr_value_type_code
19015 , p_side => 'NA'
19016 );
19017
19018 xla_ae_lines_pkg.set_ccid(
19019 p_code_combination_id => l_ccid
19020 , p_value_type_code => l_adr_value_type_code
19021 , p_transaction_coa_id => l_adr_transaction_coa_id
19022 , p_accounting_coa_id => l_adr_accounting_coa_id
19023 , p_adr_code => 'CST_DEFAULT'
19024 , p_adr_type_code => 'S'
19025 , p_component_type => l_component_type
19026 , p_component_code => l_component_code
19027 , p_component_type_code => l_component_type_code
19028 , p_component_appl_id => l_component_appl_id
19029 , p_amb_context_code => l_amb_context_code
19030 , p_side => 'NA'
19031 );
19032
19033
19034 --
19035 --
19036 END IF;
19037 --
19038 -- Bug 4922099
19039 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
19040 (NVL(l_enc_upg_option, 'N') = 'O')
19041 ) AND
19042 (l_bflow_method_code = 'PRIOR_ENTRY')
19043 )
19044 THEN
19045 IF
19046 --
19047 1 = 2
19048 --
19049 THEN
19050 xla_accounting_err_pkg.build_message
19051 (p_appli_s_name => 'XLA'
19052 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
19053 ,p_token_1 => 'LINE_NUMBER'
19054 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
19055 ,p_token_2 => 'LINE_TYPE_NAME'
19056 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
19057 l_component_type
19058 ,l_component_code
19059 ,l_component_type_code
19060 ,l_component_appl_id
19061 ,l_amb_context_code
19062 ,l_entity_code
19063 ,l_event_class_code
19064 )
19065 ,p_token_3 => 'OWNER'
19066 ,p_value_3 => xla_lookups_pkg.get_meaning(
19067 p_lookup_type => 'XLA_OWNER_TYPE'
19068 ,p_lookup_code => l_component_type_code
19069 )
19070 ,p_token_4 => 'PRODUCT_NAME'
19071 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
19072 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
19073 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
19074 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
19075 ,p_ae_header_id => NULL
19076 );
19077
19078 IF (C_LEVEL_ERROR>= g_log_level) THEN
19079 trace
19080 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
19081 ,p_level => C_LEVEL_ERROR
19082 ,p_module => l_log_module);
19083 END IF;
19084 END IF;
19085 END IF;
19086 --
19087 --
19088 ------------------------------------------------------------------------------------------------
19089 -- 4219869 Business Flow
19090 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
19091 -- Prior Entry. Currently, the following code is always generated.
19092 ------------------------------------------------------------------------------------------------
19093 XLA_AE_LINES_PKG.ValidateCurrentLine;
19094
19095 ------------------------------------------------------------------------------------
19096 -- 4219869 Business Flow
19097 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
19098 ------------------------------------------------------------------------------------
19099 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
19100
19101 ----------------------------------------------------------------------------------
19102 -- 4219869 Business Flow
19103 -- Update journal entry status -- Need to generate this within IF <condition>
19104 ----------------------------------------------------------------------------------
19105 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
19106 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
19107 ,p_balance_type_code => l_balance_type_code
19108 );
19109
19110 -------------------------------------------------------------------------------------------
19111 -- 4262811 - Generate the Accrual Reversal lines
19112 -------------------------------------------------------------------------------------------
19113 BEGIN
19114 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
19115 (g_array_event(p_event_id).array_value_num('header_index'));
19116 IF l_acc_rev_flag IS NULL THEN
19117 l_acc_rev_flag := 'N';
19118 END IF;
19119 EXCEPTION
19120 WHEN OTHERS THEN
19121 l_acc_rev_flag := 'N';
19122 END;
19123 --
19124 IF (l_acc_rev_flag = 'Y') THEN
19125
19126 -- 4645092 ------------------------------------------------------------------------------
19127 -- To allow MPA report to determine if it should generate report process
19128 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
19129 ------------------------------------------------------------------------------------------
19130
19131 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
19132 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
19133 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
19134 -- call ADRs
19135 -- Bug 4922099
19136 --
19137 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
19138 (NVL(l_actual_upg_option, 'N') = 'O') OR
19139 (NVL(l_enc_upg_option, 'N') = 'O')
19140 )
19141 THEN
19142 NULL;
19143 --
19144 --
19145
19146 l_ccid := AcctDerRule_4(
19147 p_application_id => p_application_id
19148 , p_ae_header_id => l_ae_header_id
19149 , p_source_4 => p_source_4
19150 , x_transaction_coa_id => l_adr_transaction_coa_id
19151 , x_accounting_coa_id => l_adr_accounting_coa_id
19152 , x_value_type_code => l_adr_value_type_code
19153 , p_side => 'NA'
19154 );
19155
19156 xla_ae_lines_pkg.set_ccid(
19157 p_code_combination_id => l_ccid
19158 , p_value_type_code => l_adr_value_type_code
19159 , p_transaction_coa_id => l_adr_transaction_coa_id
19160 , p_accounting_coa_id => l_adr_accounting_coa_id
19161 , p_adr_code => 'CST_DEFAULT'
19162 , p_adr_type_code => 'S'
19163 , p_component_type => l_component_type
19164 , p_component_code => l_component_code
19165 , p_component_type_code => l_component_type_code
19166 , p_component_appl_id => l_component_appl_id
19167 , p_amb_context_code => l_amb_context_code
19168 , p_side => 'NA'
19169 );
19170
19171
19172 --
19173 --
19174 END IF;
19175
19176 --
19177 -- Update the line information that should be overwritten
19178 --
19179 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
19180 p_header_num => 1);
19181 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
19182
19183 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
19184
19185 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
19186 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
19187 END IF;
19188
19189 --
19190 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
19191 --
19192 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
19193 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
19194 ELSE
19195 ---------------------------------------------------------------------------------------------------
19196 -- 4262811a Switch Sign
19197 ---------------------------------------------------------------------------------------------------
19198 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
19199 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
19200 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
19201 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
19202 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
19203 -- 5132302
19204 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
19205 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
19206
19207 END IF;
19208
19209 -- 4955764
19210 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
19211 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
19212
19213
19214 XLA_AE_LINES_PKG.ValidateCurrentLine;
19215 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
19216
19217 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
19218 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
19219 ,p_balance_type_code => l_balance_type_code);
19220
19221 END IF;
19222
19223 -----------------------------------------------------------------------------------------
19224 -- 4262811 Multiperiod Accounting
19225 -----------------------------------------------------------------------------------------
19226 -- No MPA option is assigned.
19227
19228
19229 END IF;
19230 END IF;
19231 --
19232
19233 --
19234 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
19235 trace
19236 (p_msg => 'END of AcctLineType_37'
19237 ,p_level => C_LEVEL_PROCEDURE
19238 ,p_module => l_log_module);
19239 END IF;
19240 --
19241 EXCEPTION
19242 WHEN xla_exceptions_pkg.application_exception THEN
19243 RAISE;
19244 WHEN OTHERS THEN
19245 xla_exceptions_pkg.raise_message
19246 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_37');
19247 END AcctLineType_37;
19248 --
19249
19250 ---------------------------------------
19251 --
19252 -- PRIVATE FUNCTION
19253 -- AcctLineType_38
19254 --
19255 ---------------------------------------
19256 PROCEDURE AcctLineType_38 (
19257 p_application_id IN NUMBER
19258 ,p_event_id IN NUMBER
19259 ,p_calculate_acctd_flag IN VARCHAR2
19260 ,p_calculate_g_l_flag IN VARCHAR2
19261 ,p_actual_flag IN OUT VARCHAR2
19262 ,p_balance_type_code OUT VARCHAR2
19263 ,p_gain_or_loss_ref OUT VARCHAR2
19264
19265 --Cost Management Default Account
19266 , p_source_4 IN NUMBER
19267 --Applied to Application ID
19268 , p_source_6 IN NUMBER
19269 --Applied to Distribution Link Type
19270 , p_source_7 IN VARCHAR2
19271 --Applied to Entity Code
19272 , p_source_8 IN VARCHAR2
19273 --Applied To Purchase Document Identifier
19274 , p_source_10 IN NUMBER
19275 --DISTRIBUTION_IDENTIFIER
19276 , p_source_11 IN NUMBER
19277 --Distribution Type
19278 , p_source_12 IN VARCHAR2
19279 , p_source_12_meaning IN VARCHAR2
19280 --PO Budget Account
19281 , p_source_13 IN NUMBER
19282 --Encumbrance Reversal Amount Entered
19283 , p_source_14 IN NUMBER
19284 --Entered Currency Code
19285 , p_source_15 IN VARCHAR2
19286 --Transaction Encumbrance Reversal Amount
19287 , p_source_16 IN NUMBER
19288 --Entered Amount
19289 , p_source_18 IN NUMBER
19290 --Currency Conversion Date
19291 , p_source_19 IN DATE
19292 --Currency Conversion Rate
19293 , p_source_20 IN NUMBER
19294 --Currency Conversion Type
19295 , p_source_21 IN VARCHAR2
19296 --Accounted Amount
19297 , p_source_22 IN NUMBER
19298 --Purchasing Encumbrance Type Identifier
19299 , p_source_23 IN NUMBER
19300 --Accounting Line Type
19301 , p_source_24 IN NUMBER
19302 --Costing Encumbrance Upgrade Option
19303 , p_source_27 IN VARCHAR2
19304 --TXN_PO_DISTRIBUTION_ID
19305 , p_source_28 IN NUMBER
19306 )
19307 IS
19308
19309 l_component_type VARCHAR2(80);
19310 l_component_code VARCHAR2(30);
19311 l_component_type_code VARCHAR2(1);
19312 l_component_appl_id INTEGER;
19313 l_amb_context_code VARCHAR2(30);
19314 l_entity_code VARCHAR2(30);
19315 l_event_class_code VARCHAR2(30);
19316 l_ae_header_id NUMBER;
19317 l_event_type_code VARCHAR2(30);
19318 l_line_definition_code VARCHAR2(30);
19319 l_line_definition_owner_code VARCHAR2(1);
19320 --
19321 -- adr variables
19322 l_segment VARCHAR2(30);
19323 l_ccid NUMBER;
19324 l_adr_transaction_coa_id NUMBER;
19325 l_adr_accounting_coa_id NUMBER;
19326 l_adr_flexfield_segment_code VARCHAR2(30);
19327 l_adr_flex_value_set_id NUMBER;
19328 l_adr_value_type_code VARCHAR2(30);
19329 l_adr_value_combination_id NUMBER;
19330 l_adr_value_segment_code VARCHAR2(30);
19331
19332 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
19333 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
19334 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
19335 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
19336
19337 -- 4262811 Variables ------------------------------------------------------------------------------------------
19338 l_entered_amt_idx NUMBER;
19339 l_accted_amt_idx NUMBER;
19340 l_acc_rev_flag VARCHAR2(1);
19341 l_accrual_line_num NUMBER;
19342 l_tmp_amt NUMBER;
19343 l_acc_rev_natural_side_code VARCHAR2(1);
19344
19345 l_num_entries NUMBER;
19346 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
19347 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
19348 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
19349 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
19350 l_recog_line_1 NUMBER;
19351 l_recog_line_2 NUMBER;
19352
19353 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
19354 l_bflow_applied_to_amt NUMBER; -- 5132302
19355 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
19356
19357 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
19358
19359 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
19360 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
19361
19362 ---------------------------------------------------------------------------------------------------------------
19363
19364
19365 --
19366 -- bulk performance
19367 --
19368 l_balance_type_code VARCHAR2(1);
19369 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
19370 l_log_module VARCHAR2(240);
19371
19372 --
19373 -- Upgrade strategy
19374 --
19375 l_actual_upg_option VARCHAR2(1);
19376 l_enc_upg_option VARCHAR2(1);
19377
19378 --
19379 BEGIN
19380 --
19381 IF g_log_enabled THEN
19382 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_38';
19383 END IF;
19384 --
19385 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
19386
19387 trace
19388 (p_msg => 'BEGIN of AcctLineType_38'
19389 ,p_level => C_LEVEL_PROCEDURE
19390 ,p_module => l_log_module);
19391
19392 END IF;
19393 --
19394 l_component_type := 'AMB_JLT';
19395 l_component_code := 'COST_VARIANCE';
19396 l_component_type_code := 'S';
19397 l_component_appl_id := 707;
19398 l_amb_context_code := 'DEFAULT';
19399 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
19400 l_event_class_code := 'PURCHASE_ORDER';
19401 l_event_type_code := 'PURCHASE_ORDER_ALL';
19402 l_line_definition_owner_code := 'S';
19403 l_line_definition_code := 'PURCHASE_ORDER';
19404 --
19405 l_balance_type_code := 'A';
19406 l_segment := NULL;
19407 l_ccid := NULL;
19408 l_adr_transaction_coa_id := NULL;
19409 l_adr_accounting_coa_id := NULL;
19410 l_adr_flexfield_segment_code := NULL;
19411 l_adr_flex_value_set_id := NULL;
19412 l_adr_value_type_code := NULL;
19413 l_adr_value_combination_id := NULL;
19414 l_adr_value_segment_code := NULL;
19415
19416 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
19417 l_bflow_class_code := ''; -- 4219869 Business Flow
19418 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
19419 l_budgetary_control_flag := 'N';
19420
19421 l_bflow_applied_to_amt_idx := NULL; -- 5132302
19422 l_bflow_applied_to_amt := NULL; -- 5132302
19423 l_entered_amt_idx := NULL; -- 4262811
19424 l_accted_amt_idx := NULL; -- 4262811
19425 l_acc_rev_flag := NULL; -- 4262811
19426 l_accrual_line_num := NULL; -- 4262811
19427 l_tmp_amt := NULL; -- 4262811
19428 --
19429
19430 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
19431 l_balance_type_code <> 'B' THEN
19432 IF NVL(p_source_24,9E125) = 13
19433 THEN
19434
19435 --
19436 XLA_AE_LINES_PKG.SetNewLine;
19437
19438 p_balance_type_code := l_balance_type_code;
19439 -- set the flag so later we will know whether the gain loss line needs to be created
19440
19441 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
19442 p_actual_flag :='A';
19443 END IF;
19444
19445 --
19446 -- bulk performance
19447 --
19448 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
19449 p_header_num => 0); -- 4262811
19450 --
19451 -- set accounting line options
19452 --
19453 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
19454 p_natural_side_code => 'D'
19455 , p_gain_or_loss_flag => 'N'
19456 , p_gl_transfer_mode_code => 'S'
19457 , p_acct_entry_type_code => 'A'
19458 , p_switch_side_flag => 'Y'
19459 , p_merge_duplicate_code => 'N'
19460 );
19461 --
19462 l_acc_rev_natural_side_code := 'C'; -- 4262811
19463 --
19464 --
19465 -- set accounting line type info
19466 --
19467 xla_ae_lines_pkg.SetAcctLineType
19468 (p_component_type => l_component_type
19469 ,p_event_type_code => l_event_type_code
19470 ,p_line_definition_owner_code => l_line_definition_owner_code
19471 ,p_line_definition_code => l_line_definition_code
19472 ,p_accounting_line_code => l_component_code
19473 ,p_accounting_line_type_code => l_component_type_code
19474 ,p_accounting_line_appl_id => l_component_appl_id
19475 ,p_amb_context_code => l_amb_context_code
19476 ,p_entity_code => l_entity_code
19477 ,p_event_class_code => l_event_class_code);
19478 --
19479 -- set accounting class
19480 --
19481 xla_ae_lines_pkg.SetAcctClass(
19482 p_accounting_class_code => 'COST_VARIANCE'
19483 , p_ae_header_id => l_ae_header_id
19484 );
19485
19486 --
19487 -- set rounding class
19488 --
19489 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
19490 'COST_VARIANCE';
19491
19492 --
19493 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
19494 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
19495 --
19496 -- bulk performance
19497 --
19498 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
19499
19500 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
19501 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
19502
19503 -- 4955764
19504 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
19505 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
19506
19507 -- 4458381 Public Sector Enh
19508
19509 --
19510 -- set accounting attributes for the line type
19511 --
19512 l_entered_amt_idx := 17;
19513 l_accted_amt_idx := 22;
19514 l_bflow_applied_to_amt_idx := NULL; -- 5132302
19515 l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
19516 l_rec_acct_attrs.array_num_value(1) := p_source_6;
19517 l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
19518 l_rec_acct_attrs.array_char_value(2) := p_source_7;
19519 l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
19520 l_rec_acct_attrs.array_char_value(3) := p_source_8;
19521 l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
19522 l_rec_acct_attrs.array_num_value(4) := to_char(p_source_28);
19523 l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
19524 l_rec_acct_attrs.array_num_value(5) := to_char(p_source_10);
19525 l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
19526 l_rec_acct_attrs.array_num_value(6) := to_char(p_source_11);
19527 l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
19528 l_rec_acct_attrs.array_char_value(7) := p_source_12;
19529 l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
19530 l_rec_acct_attrs.array_num_value(8) := TO_NUMBER(p_source_13);
19531 l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
19532 l_rec_acct_attrs.array_num_value(9) := p_source_14;
19533 l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
19534 l_rec_acct_attrs.array_char_value(10) := p_source_15;
19535 l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
19536 l_rec_acct_attrs.array_num_value(11) := p_source_16;
19537 l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
19538 l_rec_acct_attrs.array_num_value(12) := TO_NUMBER(p_source_13);
19539 l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
19540 l_rec_acct_attrs.array_num_value(13) := p_source_14;
19541 l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
19542 l_rec_acct_attrs.array_char_value(14) := p_source_15;
19543 l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
19544 l_rec_acct_attrs.array_num_value(15) := p_source_16;
19545 l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
19546 l_rec_acct_attrs.array_char_value(16) := p_source_27;
19547 l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
19548 l_rec_acct_attrs.array_num_value(17) := p_source_18;
19549 l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
19550 l_rec_acct_attrs.array_char_value(18) := p_source_15;
19551 l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
19552 l_rec_acct_attrs.array_date_value(19) := p_source_19;
19553 l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
19554 l_rec_acct_attrs.array_num_value(20) := p_source_20;
19555 l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
19556 l_rec_acct_attrs.array_char_value(21) := p_source_21;
19557 l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
19558 l_rec_acct_attrs.array_num_value(22) := p_source_22;
19559 l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
19560 l_rec_acct_attrs.array_num_value(23) := p_source_23;
19561 l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
19562 l_rec_acct_attrs.array_num_value(24) := p_source_23;
19563
19564 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
19565 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
19566
19567 ---------------------------------------------------------------------------------------------------------------
19568 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
19569 ---------------------------------------------------------------------------------------------------------------
19570 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
19571
19572 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
19573 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
19574
19575 IF xla_accounting_cache_pkg.GetValueChar
19576 (p_source_code => 'LEDGER_CATEGORY_CODE'
19577 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
19578 AND l_bflow_method_code = 'PRIOR_ENTRY'
19579 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
19580 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
19581 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
19582 )
19583 THEN
19584 xla_ae_lines_pkg.BflowUpgEntry
19585 (p_business_method_code => l_bflow_method_code
19586 ,p_business_class_code => l_bflow_class_code
19587 ,p_balance_type => l_balance_type_code);
19588 ELSE
19589 NULL;
19590 -- No business flow processing for business flow method of NONE.
19591 END IF;
19592
19593 --
19594 -- call analytical criteria
19595 --
19596
19597 --
19598 -- call description
19599 --
19600 -- No description or it is inherited.
19601 --
19602 -- call ADRs
19603 -- Bug 4922099
19604 --
19605 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
19606 (NVL(l_actual_upg_option, 'N') = 'O') OR
19607 (NVL(l_enc_upg_option, 'N') = 'O')
19608 )
19609 THEN
19610 NULL;
19611 --
19612 --
19613
19614 l_ccid := AcctDerRule_4(
19615 p_application_id => p_application_id
19616 , p_ae_header_id => l_ae_header_id
19617 , p_source_4 => p_source_4
19618 , x_transaction_coa_id => l_adr_transaction_coa_id
19619 , x_accounting_coa_id => l_adr_accounting_coa_id
19620 , x_value_type_code => l_adr_value_type_code
19621 , p_side => 'NA'
19622 );
19623
19624 xla_ae_lines_pkg.set_ccid(
19625 p_code_combination_id => l_ccid
19626 , p_value_type_code => l_adr_value_type_code
19627 , p_transaction_coa_id => l_adr_transaction_coa_id
19628 , p_accounting_coa_id => l_adr_accounting_coa_id
19629 , p_adr_code => 'CST_DEFAULT'
19630 , p_adr_type_code => 'S'
19631 , p_component_type => l_component_type
19632 , p_component_code => l_component_code
19633 , p_component_type_code => l_component_type_code
19634 , p_component_appl_id => l_component_appl_id
19635 , p_amb_context_code => l_amb_context_code
19636 , p_side => 'NA'
19637 );
19638
19639
19640 --
19641 --
19642 END IF;
19643 --
19644 -- Bug 4922099
19645 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
19646 (NVL(l_enc_upg_option, 'N') = 'O')
19647 ) AND
19648 (l_bflow_method_code = 'PRIOR_ENTRY')
19649 )
19650 THEN
19651 IF
19652 --
19653 1 = 2
19654 --
19655 THEN
19656 xla_accounting_err_pkg.build_message
19657 (p_appli_s_name => 'XLA'
19658 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
19659 ,p_token_1 => 'LINE_NUMBER'
19660 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
19661 ,p_token_2 => 'LINE_TYPE_NAME'
19662 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
19663 l_component_type
19664 ,l_component_code
19665 ,l_component_type_code
19666 ,l_component_appl_id
19667 ,l_amb_context_code
19668 ,l_entity_code
19669 ,l_event_class_code
19670 )
19671 ,p_token_3 => 'OWNER'
19672 ,p_value_3 => xla_lookups_pkg.get_meaning(
19673 p_lookup_type => 'XLA_OWNER_TYPE'
19674 ,p_lookup_code => l_component_type_code
19675 )
19676 ,p_token_4 => 'PRODUCT_NAME'
19677 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
19678 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
19679 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
19680 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
19681 ,p_ae_header_id => NULL
19682 );
19683
19684 IF (C_LEVEL_ERROR>= g_log_level) THEN
19685 trace
19686 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
19687 ,p_level => C_LEVEL_ERROR
19688 ,p_module => l_log_module);
19689 END IF;
19690 END IF;
19691 END IF;
19692 --
19693 --
19694 ------------------------------------------------------------------------------------------------
19695 -- 4219869 Business Flow
19696 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
19697 -- Prior Entry. Currently, the following code is always generated.
19698 ------------------------------------------------------------------------------------------------
19699 XLA_AE_LINES_PKG.ValidateCurrentLine;
19700
19701 ------------------------------------------------------------------------------------
19702 -- 4219869 Business Flow
19703 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
19704 ------------------------------------------------------------------------------------
19705 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
19706
19707 ----------------------------------------------------------------------------------
19708 -- 4219869 Business Flow
19709 -- Update journal entry status -- Need to generate this within IF <condition>
19710 ----------------------------------------------------------------------------------
19711 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
19712 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
19713 ,p_balance_type_code => l_balance_type_code
19714 );
19715
19716 -------------------------------------------------------------------------------------------
19717 -- 4262811 - Generate the Accrual Reversal lines
19718 -------------------------------------------------------------------------------------------
19719 BEGIN
19720 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
19721 (g_array_event(p_event_id).array_value_num('header_index'));
19722 IF l_acc_rev_flag IS NULL THEN
19723 l_acc_rev_flag := 'N';
19724 END IF;
19725 EXCEPTION
19726 WHEN OTHERS THEN
19727 l_acc_rev_flag := 'N';
19728 END;
19729 --
19730 IF (l_acc_rev_flag = 'Y') THEN
19731
19732 -- 4645092 ------------------------------------------------------------------------------
19733 -- To allow MPA report to determine if it should generate report process
19734 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
19735 ------------------------------------------------------------------------------------------
19736
19737 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
19738 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
19739 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
19740 -- call ADRs
19741 -- Bug 4922099
19742 --
19743 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
19744 (NVL(l_actual_upg_option, 'N') = 'O') OR
19745 (NVL(l_enc_upg_option, 'N') = 'O')
19746 )
19747 THEN
19748 NULL;
19749 --
19750 --
19751
19752 l_ccid := AcctDerRule_4(
19753 p_application_id => p_application_id
19754 , p_ae_header_id => l_ae_header_id
19755 , p_source_4 => p_source_4
19756 , x_transaction_coa_id => l_adr_transaction_coa_id
19757 , x_accounting_coa_id => l_adr_accounting_coa_id
19758 , x_value_type_code => l_adr_value_type_code
19759 , p_side => 'NA'
19760 );
19761
19762 xla_ae_lines_pkg.set_ccid(
19763 p_code_combination_id => l_ccid
19764 , p_value_type_code => l_adr_value_type_code
19765 , p_transaction_coa_id => l_adr_transaction_coa_id
19766 , p_accounting_coa_id => l_adr_accounting_coa_id
19767 , p_adr_code => 'CST_DEFAULT'
19768 , p_adr_type_code => 'S'
19769 , p_component_type => l_component_type
19770 , p_component_code => l_component_code
19771 , p_component_type_code => l_component_type_code
19772 , p_component_appl_id => l_component_appl_id
19773 , p_amb_context_code => l_amb_context_code
19774 , p_side => 'NA'
19775 );
19776
19777
19778 --
19779 --
19780 END IF;
19781
19782 --
19783 -- Update the line information that should be overwritten
19784 --
19785 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
19786 p_header_num => 1);
19787 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
19788
19789 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
19790
19791 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
19792 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
19793 END IF;
19794
19795 --
19796 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
19797 --
19798 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
19799 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
19800 ELSE
19801 ---------------------------------------------------------------------------------------------------
19802 -- 4262811a Switch Sign
19803 ---------------------------------------------------------------------------------------------------
19804 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
19805 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
19806 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
19807 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
19808 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
19809 -- 5132302
19810 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
19811 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
19812
19813 END IF;
19814
19815 -- 4955764
19816 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
19817 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
19818
19819
19820 XLA_AE_LINES_PKG.ValidateCurrentLine;
19821 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
19822
19823 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
19824 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
19825 ,p_balance_type_code => l_balance_type_code);
19826
19827 END IF;
19828
19829 -----------------------------------------------------------------------------------------
19830 -- 4262811 Multiperiod Accounting
19831 -----------------------------------------------------------------------------------------
19832 -- No MPA option is assigned.
19833
19834
19835 END IF;
19836 END IF;
19837 --
19838
19839 --
19840 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
19841 trace
19842 (p_msg => 'END of AcctLineType_38'
19843 ,p_level => C_LEVEL_PROCEDURE
19844 ,p_module => l_log_module);
19845 END IF;
19846 --
19847 EXCEPTION
19848 WHEN xla_exceptions_pkg.application_exception THEN
19849 RAISE;
19850 WHEN OTHERS THEN
19851 xla_exceptions_pkg.raise_message
19852 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_38');
19853 END AcctLineType_38;
19854 --
19855
19856 ---------------------------------------
19857 --
19858 -- PRIVATE FUNCTION
19859 -- AcctLineType_39
19860 --
19861 ---------------------------------------
19862 PROCEDURE AcctLineType_39 (
19863 p_application_id IN NUMBER
19864 ,p_event_id IN NUMBER
19865 ,p_calculate_acctd_flag IN VARCHAR2
19866 ,p_calculate_g_l_flag IN VARCHAR2
19867 ,p_actual_flag IN OUT VARCHAR2
19868 ,p_balance_type_code OUT VARCHAR2
19869 ,p_gain_or_loss_ref OUT VARCHAR2
19870
19871 --Cost Management Default Account
19872 , p_source_4 IN NUMBER
19873 --DISTRIBUTION_IDENTIFIER
19874 , p_source_11 IN NUMBER
19875 --Distribution Type
19876 , p_source_12 IN VARCHAR2
19877 , p_source_12_meaning IN VARCHAR2
19878 --Entered Currency Code
19879 , p_source_15 IN VARCHAR2
19880 --Entered Amount
19881 , p_source_18 IN NUMBER
19882 --Currency Conversion Date
19883 , p_source_19 IN DATE
19884 --Currency Conversion Rate
19885 , p_source_20 IN NUMBER
19886 --Currency Conversion Type
19887 , p_source_21 IN VARCHAR2
19888 --Accounted Amount
19889 , p_source_22 IN NUMBER
19890 --Accounting Line Type
19891 , p_source_24 IN NUMBER
19892 )
19893 IS
19894
19895 l_component_type VARCHAR2(80);
19896 l_component_code VARCHAR2(30);
19897 l_component_type_code VARCHAR2(1);
19898 l_component_appl_id INTEGER;
19899 l_amb_context_code VARCHAR2(30);
19900 l_entity_code VARCHAR2(30);
19901 l_event_class_code VARCHAR2(30);
19902 l_ae_header_id NUMBER;
19903 l_event_type_code VARCHAR2(30);
19904 l_line_definition_code VARCHAR2(30);
19905 l_line_definition_owner_code VARCHAR2(1);
19906 --
19907 -- adr variables
19908 l_segment VARCHAR2(30);
19909 l_ccid NUMBER;
19910 l_adr_transaction_coa_id NUMBER;
19911 l_adr_accounting_coa_id NUMBER;
19912 l_adr_flexfield_segment_code VARCHAR2(30);
19913 l_adr_flex_value_set_id NUMBER;
19914 l_adr_value_type_code VARCHAR2(30);
19915 l_adr_value_combination_id NUMBER;
19916 l_adr_value_segment_code VARCHAR2(30);
19917
19918 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
19919 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
19920 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
19921 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
19922
19923 -- 4262811 Variables ------------------------------------------------------------------------------------------
19924 l_entered_amt_idx NUMBER;
19925 l_accted_amt_idx NUMBER;
19926 l_acc_rev_flag VARCHAR2(1);
19927 l_accrual_line_num NUMBER;
19928 l_tmp_amt NUMBER;
19929 l_acc_rev_natural_side_code VARCHAR2(1);
19930
19931 l_num_entries NUMBER;
19932 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
19933 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
19934 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
19935 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
19936 l_recog_line_1 NUMBER;
19937 l_recog_line_2 NUMBER;
19938
19939 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
19940 l_bflow_applied_to_amt NUMBER; -- 5132302
19941 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
19942
19943 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
19944
19945 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
19946 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
19947
19948 ---------------------------------------------------------------------------------------------------------------
19949
19950
19951 --
19952 -- bulk performance
19953 --
19954 l_balance_type_code VARCHAR2(1);
19955 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
19956 l_log_module VARCHAR2(240);
19957
19958 --
19959 -- Upgrade strategy
19960 --
19961 l_actual_upg_option VARCHAR2(1);
19962 l_enc_upg_option VARCHAR2(1);
19963
19964 --
19965 BEGIN
19966 --
19967 IF g_log_enabled THEN
19968 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_39';
19969 END IF;
19970 --
19971 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
19972
19973 trace
19974 (p_msg => 'BEGIN of AcctLineType_39'
19975 ,p_level => C_LEVEL_PROCEDURE
19976 ,p_module => l_log_module);
19977
19978 END IF;
19979 --
19980 l_component_type := 'AMB_JLT';
19981 l_component_code := 'COST_VARIANCE';
19982 l_component_type_code := 'S';
19983 l_component_appl_id := 707;
19984 l_amb_context_code := 'DEFAULT';
19985 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
19986 l_event_class_code := 'WIP_MTL';
19987 l_event_type_code := 'WIP_MTL_ALL';
19988 l_line_definition_owner_code := 'S';
19989 l_line_definition_code := 'WIP_MTL';
19990 --
19991 l_balance_type_code := 'A';
19992 l_segment := NULL;
19993 l_ccid := NULL;
19994 l_adr_transaction_coa_id := NULL;
19995 l_adr_accounting_coa_id := NULL;
19996 l_adr_flexfield_segment_code := NULL;
19997 l_adr_flex_value_set_id := NULL;
19998 l_adr_value_type_code := NULL;
19999 l_adr_value_combination_id := NULL;
20000 l_adr_value_segment_code := NULL;
20001
20002 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
20003 l_bflow_class_code := ''; -- 4219869 Business Flow
20004 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
20005 l_budgetary_control_flag := 'N';
20006
20007 l_bflow_applied_to_amt_idx := NULL; -- 5132302
20008 l_bflow_applied_to_amt := NULL; -- 5132302
20009 l_entered_amt_idx := NULL; -- 4262811
20010 l_accted_amt_idx := NULL; -- 4262811
20011 l_acc_rev_flag := NULL; -- 4262811
20012 l_accrual_line_num := NULL; -- 4262811
20013 l_tmp_amt := NULL; -- 4262811
20014 --
20015
20016 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
20017 l_balance_type_code <> 'B' THEN
20018 IF NVL(p_source_24,9E125) = 13
20019 THEN
20020
20021 --
20022 XLA_AE_LINES_PKG.SetNewLine;
20023
20024 p_balance_type_code := l_balance_type_code;
20025 -- set the flag so later we will know whether the gain loss line needs to be created
20026
20027 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
20028 p_actual_flag :='A';
20029 END IF;
20030
20031 --
20032 -- bulk performance
20033 --
20034 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
20035 p_header_num => 0); -- 4262811
20036 --
20037 -- set accounting line options
20038 --
20039 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
20040 p_natural_side_code => 'D'
20041 , p_gain_or_loss_flag => 'N'
20042 , p_gl_transfer_mode_code => 'S'
20043 , p_acct_entry_type_code => 'A'
20044 , p_switch_side_flag => 'Y'
20045 , p_merge_duplicate_code => 'N'
20046 );
20047 --
20048 l_acc_rev_natural_side_code := 'C'; -- 4262811
20049 --
20050 --
20051 -- set accounting line type info
20052 --
20053 xla_ae_lines_pkg.SetAcctLineType
20054 (p_component_type => l_component_type
20055 ,p_event_type_code => l_event_type_code
20056 ,p_line_definition_owner_code => l_line_definition_owner_code
20057 ,p_line_definition_code => l_line_definition_code
20058 ,p_accounting_line_code => l_component_code
20059 ,p_accounting_line_type_code => l_component_type_code
20060 ,p_accounting_line_appl_id => l_component_appl_id
20061 ,p_amb_context_code => l_amb_context_code
20062 ,p_entity_code => l_entity_code
20063 ,p_event_class_code => l_event_class_code);
20064 --
20065 -- set accounting class
20066 --
20067 xla_ae_lines_pkg.SetAcctClass(
20068 p_accounting_class_code => 'COST_VARIANCE'
20069 , p_ae_header_id => l_ae_header_id
20070 );
20071
20072 --
20073 -- set rounding class
20074 --
20075 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
20076 'COST_VARIANCE';
20077
20078 --
20079 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
20080 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
20081 --
20082 -- bulk performance
20083 --
20084 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
20085
20086 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
20087 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
20088
20089 -- 4955764
20090 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
20091 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
20092
20093 -- 4458381 Public Sector Enh
20094
20095 --
20096 -- set accounting attributes for the line type
20097 --
20098 l_entered_amt_idx := 3;
20099 l_accted_amt_idx := 8;
20100 l_bflow_applied_to_amt_idx := NULL; -- 5132302
20101 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
20102 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
20103 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
20104 l_rec_acct_attrs.array_char_value(2) := p_source_12;
20105 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
20106 l_rec_acct_attrs.array_num_value(3) := p_source_18;
20107 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
20108 l_rec_acct_attrs.array_char_value(4) := p_source_15;
20109 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
20110 l_rec_acct_attrs.array_date_value(5) := p_source_19;
20111 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
20112 l_rec_acct_attrs.array_num_value(6) := p_source_20;
20113 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
20114 l_rec_acct_attrs.array_char_value(7) := p_source_21;
20115 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
20116 l_rec_acct_attrs.array_num_value(8) := p_source_22;
20117
20118 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
20119 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
20120
20121 ---------------------------------------------------------------------------------------------------------------
20122 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
20123 ---------------------------------------------------------------------------------------------------------------
20124 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
20125
20126 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
20127 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
20128
20129 IF xla_accounting_cache_pkg.GetValueChar
20130 (p_source_code => 'LEDGER_CATEGORY_CODE'
20131 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
20132 AND l_bflow_method_code = 'PRIOR_ENTRY'
20133 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
20134 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
20135 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
20136 )
20137 THEN
20138 xla_ae_lines_pkg.BflowUpgEntry
20139 (p_business_method_code => l_bflow_method_code
20140 ,p_business_class_code => l_bflow_class_code
20141 ,p_balance_type => l_balance_type_code);
20142 ELSE
20143 NULL;
20144 -- No business flow processing for business flow method of NONE.
20145 END IF;
20146
20147 --
20148 -- call analytical criteria
20149 --
20150
20151 --
20152 -- call description
20153 --
20154 -- No description or it is inherited.
20155 --
20156 -- call ADRs
20157 -- Bug 4922099
20158 --
20159 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
20160 (NVL(l_actual_upg_option, 'N') = 'O') OR
20161 (NVL(l_enc_upg_option, 'N') = 'O')
20162 )
20163 THEN
20164 NULL;
20165 --
20166 --
20167
20168 l_ccid := AcctDerRule_4(
20169 p_application_id => p_application_id
20170 , p_ae_header_id => l_ae_header_id
20171 , p_source_4 => p_source_4
20172 , x_transaction_coa_id => l_adr_transaction_coa_id
20173 , x_accounting_coa_id => l_adr_accounting_coa_id
20174 , x_value_type_code => l_adr_value_type_code
20175 , p_side => 'NA'
20176 );
20177
20178 xla_ae_lines_pkg.set_ccid(
20179 p_code_combination_id => l_ccid
20180 , p_value_type_code => l_adr_value_type_code
20181 , p_transaction_coa_id => l_adr_transaction_coa_id
20182 , p_accounting_coa_id => l_adr_accounting_coa_id
20183 , p_adr_code => 'CST_DEFAULT'
20184 , p_adr_type_code => 'S'
20185 , p_component_type => l_component_type
20186 , p_component_code => l_component_code
20187 , p_component_type_code => l_component_type_code
20188 , p_component_appl_id => l_component_appl_id
20189 , p_amb_context_code => l_amb_context_code
20190 , p_side => 'NA'
20191 );
20192
20193
20194 --
20195 --
20196 END IF;
20197 --
20198 -- Bug 4922099
20199 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
20200 (NVL(l_enc_upg_option, 'N') = 'O')
20201 ) AND
20202 (l_bflow_method_code = 'PRIOR_ENTRY')
20203 )
20204 THEN
20205 IF
20206 --
20207 1 = 2
20208 --
20209 THEN
20210 xla_accounting_err_pkg.build_message
20211 (p_appli_s_name => 'XLA'
20212 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
20213 ,p_token_1 => 'LINE_NUMBER'
20214 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
20215 ,p_token_2 => 'LINE_TYPE_NAME'
20216 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
20217 l_component_type
20218 ,l_component_code
20219 ,l_component_type_code
20220 ,l_component_appl_id
20221 ,l_amb_context_code
20222 ,l_entity_code
20223 ,l_event_class_code
20224 )
20225 ,p_token_3 => 'OWNER'
20226 ,p_value_3 => xla_lookups_pkg.get_meaning(
20227 p_lookup_type => 'XLA_OWNER_TYPE'
20228 ,p_lookup_code => l_component_type_code
20229 )
20230 ,p_token_4 => 'PRODUCT_NAME'
20231 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
20232 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
20233 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
20234 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
20235 ,p_ae_header_id => NULL
20236 );
20237
20238 IF (C_LEVEL_ERROR>= g_log_level) THEN
20239 trace
20240 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
20241 ,p_level => C_LEVEL_ERROR
20242 ,p_module => l_log_module);
20243 END IF;
20244 END IF;
20245 END IF;
20246 --
20247 --
20248 ------------------------------------------------------------------------------------------------
20249 -- 4219869 Business Flow
20250 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
20251 -- Prior Entry. Currently, the following code is always generated.
20252 ------------------------------------------------------------------------------------------------
20253 XLA_AE_LINES_PKG.ValidateCurrentLine;
20254
20255 ------------------------------------------------------------------------------------
20256 -- 4219869 Business Flow
20257 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
20258 ------------------------------------------------------------------------------------
20259 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
20260
20261 ----------------------------------------------------------------------------------
20262 -- 4219869 Business Flow
20263 -- Update journal entry status -- Need to generate this within IF <condition>
20264 ----------------------------------------------------------------------------------
20265 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
20266 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
20267 ,p_balance_type_code => l_balance_type_code
20268 );
20269
20270 -------------------------------------------------------------------------------------------
20271 -- 4262811 - Generate the Accrual Reversal lines
20272 -------------------------------------------------------------------------------------------
20273 BEGIN
20274 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
20275 (g_array_event(p_event_id).array_value_num('header_index'));
20276 IF l_acc_rev_flag IS NULL THEN
20277 l_acc_rev_flag := 'N';
20278 END IF;
20279 EXCEPTION
20280 WHEN OTHERS THEN
20281 l_acc_rev_flag := 'N';
20282 END;
20283 --
20284 IF (l_acc_rev_flag = 'Y') THEN
20285
20286 -- 4645092 ------------------------------------------------------------------------------
20287 -- To allow MPA report to determine if it should generate report process
20288 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
20289 ------------------------------------------------------------------------------------------
20290
20291 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
20292 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
20293 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
20294 -- call ADRs
20295 -- Bug 4922099
20296 --
20297 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
20298 (NVL(l_actual_upg_option, 'N') = 'O') OR
20299 (NVL(l_enc_upg_option, 'N') = 'O')
20300 )
20301 THEN
20302 NULL;
20303 --
20304 --
20305
20306 l_ccid := AcctDerRule_4(
20307 p_application_id => p_application_id
20308 , p_ae_header_id => l_ae_header_id
20309 , p_source_4 => p_source_4
20310 , x_transaction_coa_id => l_adr_transaction_coa_id
20311 , x_accounting_coa_id => l_adr_accounting_coa_id
20312 , x_value_type_code => l_adr_value_type_code
20313 , p_side => 'NA'
20314 );
20315
20316 xla_ae_lines_pkg.set_ccid(
20317 p_code_combination_id => l_ccid
20318 , p_value_type_code => l_adr_value_type_code
20319 , p_transaction_coa_id => l_adr_transaction_coa_id
20320 , p_accounting_coa_id => l_adr_accounting_coa_id
20321 , p_adr_code => 'CST_DEFAULT'
20322 , p_adr_type_code => 'S'
20323 , p_component_type => l_component_type
20324 , p_component_code => l_component_code
20325 , p_component_type_code => l_component_type_code
20326 , p_component_appl_id => l_component_appl_id
20327 , p_amb_context_code => l_amb_context_code
20328 , p_side => 'NA'
20329 );
20330
20331
20332 --
20333 --
20334 END IF;
20335
20336 --
20337 -- Update the line information that should be overwritten
20338 --
20339 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
20340 p_header_num => 1);
20341 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
20342
20343 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
20344
20345 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
20346 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
20347 END IF;
20348
20349 --
20350 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
20351 --
20352 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
20353 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
20354 ELSE
20355 ---------------------------------------------------------------------------------------------------
20356 -- 4262811a Switch Sign
20357 ---------------------------------------------------------------------------------------------------
20358 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
20359 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
20360 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
20361 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
20362 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
20363 -- 5132302
20364 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
20365 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
20366
20367 END IF;
20368
20369 -- 4955764
20370 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
20371 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
20372
20373
20374 XLA_AE_LINES_PKG.ValidateCurrentLine;
20375 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
20376
20377 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
20378 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
20379 ,p_balance_type_code => l_balance_type_code);
20380
20381 END IF;
20382
20383 -----------------------------------------------------------------------------------------
20384 -- 4262811 Multiperiod Accounting
20385 -----------------------------------------------------------------------------------------
20386 -- No MPA option is assigned.
20387
20388
20389 END IF;
20390 END IF;
20391 --
20392
20393 --
20394 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
20395 trace
20396 (p_msg => 'END of AcctLineType_39'
20397 ,p_level => C_LEVEL_PROCEDURE
20398 ,p_module => l_log_module);
20399 END IF;
20400 --
20401 EXCEPTION
20402 WHEN xla_exceptions_pkg.application_exception THEN
20403 RAISE;
20404 WHEN OTHERS THEN
20405 xla_exceptions_pkg.raise_message
20406 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_39');
20407 END AcctLineType_39;
20408 --
20409
20410 ---------------------------------------
20411 --
20412 -- PRIVATE FUNCTION
20413 -- AcctLineType_40
20414 --
20415 ---------------------------------------
20416 PROCEDURE AcctLineType_40 (
20417 p_application_id IN NUMBER
20418 ,p_event_id IN NUMBER
20419 ,p_calculate_acctd_flag IN VARCHAR2
20420 ,p_calculate_g_l_flag IN VARCHAR2
20421 ,p_actual_flag IN OUT VARCHAR2
20422 ,p_balance_type_code OUT VARCHAR2
20423 ,p_gain_or_loss_ref OUT VARCHAR2
20424
20425 --Cost Management Default Account
20426 , p_source_4 IN NUMBER
20427 --DISTRIBUTION_IDENTIFIER
20428 , p_source_11 IN NUMBER
20429 --Distribution Type
20430 , p_source_12 IN VARCHAR2
20431 , p_source_12_meaning IN VARCHAR2
20432 --Entered Currency Code
20433 , p_source_15 IN VARCHAR2
20434 --Entered Amount
20435 , p_source_18 IN NUMBER
20436 --Currency Conversion Date
20437 , p_source_19 IN DATE
20438 --Currency Conversion Rate
20439 , p_source_20 IN NUMBER
20440 --Currency Conversion Type
20441 , p_source_21 IN VARCHAR2
20442 --Accounted Amount
20443 , p_source_22 IN NUMBER
20444 --Accounting Line Type
20445 , p_source_24 IN NUMBER
20446 )
20447 IS
20448
20449 l_component_type VARCHAR2(80);
20450 l_component_code VARCHAR2(30);
20451 l_component_type_code VARCHAR2(1);
20452 l_component_appl_id INTEGER;
20453 l_amb_context_code VARCHAR2(30);
20454 l_entity_code VARCHAR2(30);
20455 l_event_class_code VARCHAR2(30);
20456 l_ae_header_id NUMBER;
20457 l_event_type_code VARCHAR2(30);
20458 l_line_definition_code VARCHAR2(30);
20459 l_line_definition_owner_code VARCHAR2(1);
20460 --
20461 -- adr variables
20462 l_segment VARCHAR2(30);
20463 l_ccid NUMBER;
20464 l_adr_transaction_coa_id NUMBER;
20465 l_adr_accounting_coa_id NUMBER;
20466 l_adr_flexfield_segment_code VARCHAR2(30);
20467 l_adr_flex_value_set_id NUMBER;
20468 l_adr_value_type_code VARCHAR2(30);
20469 l_adr_value_combination_id NUMBER;
20470 l_adr_value_segment_code VARCHAR2(30);
20471
20472 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
20473 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
20474 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
20475 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
20476
20477 -- 4262811 Variables ------------------------------------------------------------------------------------------
20478 l_entered_amt_idx NUMBER;
20479 l_accted_amt_idx NUMBER;
20480 l_acc_rev_flag VARCHAR2(1);
20481 l_accrual_line_num NUMBER;
20482 l_tmp_amt NUMBER;
20483 l_acc_rev_natural_side_code VARCHAR2(1);
20484
20485 l_num_entries NUMBER;
20486 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
20487 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
20488 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
20489 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
20490 l_recog_line_1 NUMBER;
20491 l_recog_line_2 NUMBER;
20492
20493 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
20494 l_bflow_applied_to_amt NUMBER; -- 5132302
20495 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
20496
20497 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
20498
20499 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
20500 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
20501
20502 ---------------------------------------------------------------------------------------------------------------
20503
20504
20505 --
20506 -- bulk performance
20507 --
20508 l_balance_type_code VARCHAR2(1);
20509 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
20510 l_log_module VARCHAR2(240);
20511
20512 --
20513 -- Upgrade strategy
20514 --
20515 l_actual_upg_option VARCHAR2(1);
20516 l_enc_upg_option VARCHAR2(1);
20517
20518 --
20519 BEGIN
20520 --
20521 IF g_log_enabled THEN
20522 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_40';
20523 END IF;
20524 --
20525 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
20526
20527 trace
20528 (p_msg => 'BEGIN of AcctLineType_40'
20529 ,p_level => C_LEVEL_PROCEDURE
20530 ,p_module => l_log_module);
20531
20532 END IF;
20533 --
20534 l_component_type := 'AMB_JLT';
20535 l_component_code := 'COST_VARIANCE';
20536 l_component_type_code := 'S';
20537 l_component_appl_id := 707;
20538 l_amb_context_code := 'DEFAULT';
20539 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
20540 l_event_class_code := 'USER_DEFINE';
20541 l_event_type_code := 'UIPV_TXFR';
20542 l_line_definition_owner_code := 'S';
20543 l_line_definition_code := 'USER_IPV_TXFR';
20544 --
20545 l_balance_type_code := 'A';
20546 l_segment := NULL;
20547 l_ccid := NULL;
20548 l_adr_transaction_coa_id := NULL;
20549 l_adr_accounting_coa_id := NULL;
20550 l_adr_flexfield_segment_code := NULL;
20551 l_adr_flex_value_set_id := NULL;
20552 l_adr_value_type_code := NULL;
20553 l_adr_value_combination_id := NULL;
20554 l_adr_value_segment_code := NULL;
20555
20556 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
20557 l_bflow_class_code := ''; -- 4219869 Business Flow
20558 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
20559 l_budgetary_control_flag := 'N';
20560
20561 l_bflow_applied_to_amt_idx := NULL; -- 5132302
20562 l_bflow_applied_to_amt := NULL; -- 5132302
20563 l_entered_amt_idx := NULL; -- 4262811
20564 l_accted_amt_idx := NULL; -- 4262811
20565 l_acc_rev_flag := NULL; -- 4262811
20566 l_accrual_line_num := NULL; -- 4262811
20567 l_tmp_amt := NULL; -- 4262811
20568 --
20569
20570 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
20571 l_balance_type_code <> 'B' THEN
20572 IF NVL(p_source_24,9E125) = 13
20573 THEN
20574
20575 --
20576 XLA_AE_LINES_PKG.SetNewLine;
20577
20578 p_balance_type_code := l_balance_type_code;
20579 -- set the flag so later we will know whether the gain loss line needs to be created
20580
20581 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
20582 p_actual_flag :='A';
20583 END IF;
20584
20585 --
20586 -- bulk performance
20587 --
20588 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
20589 p_header_num => 0); -- 4262811
20590 --
20591 -- set accounting line options
20592 --
20593 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
20594 p_natural_side_code => 'D'
20595 , p_gain_or_loss_flag => 'N'
20596 , p_gl_transfer_mode_code => 'S'
20597 , p_acct_entry_type_code => 'A'
20598 , p_switch_side_flag => 'Y'
20599 , p_merge_duplicate_code => 'N'
20600 );
20601 --
20602 l_acc_rev_natural_side_code := 'C'; -- 4262811
20603 --
20604 --
20605 -- set accounting line type info
20606 --
20607 xla_ae_lines_pkg.SetAcctLineType
20608 (p_component_type => l_component_type
20609 ,p_event_type_code => l_event_type_code
20610 ,p_line_definition_owner_code => l_line_definition_owner_code
20611 ,p_line_definition_code => l_line_definition_code
20612 ,p_accounting_line_code => l_component_code
20613 ,p_accounting_line_type_code => l_component_type_code
20614 ,p_accounting_line_appl_id => l_component_appl_id
20615 ,p_amb_context_code => l_amb_context_code
20616 ,p_entity_code => l_entity_code
20617 ,p_event_class_code => l_event_class_code);
20618 --
20619 -- set accounting class
20620 --
20621 xla_ae_lines_pkg.SetAcctClass(
20622 p_accounting_class_code => 'COST_VARIANCE'
20623 , p_ae_header_id => l_ae_header_id
20624 );
20625
20626 --
20627 -- set rounding class
20628 --
20629 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
20630 'COST_VARIANCE';
20631
20632 --
20633 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
20634 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
20635 --
20636 -- bulk performance
20637 --
20638 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
20639
20640 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
20641 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
20642
20643 -- 4955764
20644 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
20645 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
20646
20647 -- 4458381 Public Sector Enh
20648
20649 --
20650 -- set accounting attributes for the line type
20651 --
20652 l_entered_amt_idx := 3;
20653 l_accted_amt_idx := 8;
20654 l_bflow_applied_to_amt_idx := NULL; -- 5132302
20655 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
20656 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
20657 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
20658 l_rec_acct_attrs.array_char_value(2) := p_source_12;
20659 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
20660 l_rec_acct_attrs.array_num_value(3) := p_source_18;
20661 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
20662 l_rec_acct_attrs.array_char_value(4) := p_source_15;
20663 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
20664 l_rec_acct_attrs.array_date_value(5) := p_source_19;
20665 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
20666 l_rec_acct_attrs.array_num_value(6) := p_source_20;
20667 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
20668 l_rec_acct_attrs.array_char_value(7) := p_source_21;
20669 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
20670 l_rec_acct_attrs.array_num_value(8) := p_source_22;
20671
20672 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
20673 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
20674
20675 ---------------------------------------------------------------------------------------------------------------
20676 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
20677 ---------------------------------------------------------------------------------------------------------------
20678 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
20679
20680 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
20681 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
20682
20683 IF xla_accounting_cache_pkg.GetValueChar
20684 (p_source_code => 'LEDGER_CATEGORY_CODE'
20685 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
20686 AND l_bflow_method_code = 'PRIOR_ENTRY'
20687 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
20688 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
20689 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
20690 )
20691 THEN
20692 xla_ae_lines_pkg.BflowUpgEntry
20693 (p_business_method_code => l_bflow_method_code
20694 ,p_business_class_code => l_bflow_class_code
20695 ,p_balance_type => l_balance_type_code);
20696 ELSE
20697 NULL;
20698 -- No business flow processing for business flow method of NONE.
20699 END IF;
20700
20701 --
20702 -- call analytical criteria
20703 --
20704
20705 --
20706 -- call description
20707 --
20708 -- No description or it is inherited.
20709 --
20710 -- call ADRs
20711 -- Bug 4922099
20712 --
20713 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
20714 (NVL(l_actual_upg_option, 'N') = 'O') OR
20715 (NVL(l_enc_upg_option, 'N') = 'O')
20716 )
20717 THEN
20718 NULL;
20719 --
20720 --
20721
20722 l_ccid := AcctDerRule_4(
20723 p_application_id => p_application_id
20724 , p_ae_header_id => l_ae_header_id
20725 , p_source_4 => p_source_4
20726 , x_transaction_coa_id => l_adr_transaction_coa_id
20727 , x_accounting_coa_id => l_adr_accounting_coa_id
20728 , x_value_type_code => l_adr_value_type_code
20729 , p_side => 'NA'
20730 );
20731
20732 xla_ae_lines_pkg.set_ccid(
20733 p_code_combination_id => l_ccid
20734 , p_value_type_code => l_adr_value_type_code
20735 , p_transaction_coa_id => l_adr_transaction_coa_id
20736 , p_accounting_coa_id => l_adr_accounting_coa_id
20737 , p_adr_code => 'CST_DEFAULT'
20738 , p_adr_type_code => 'S'
20739 , p_component_type => l_component_type
20740 , p_component_code => l_component_code
20741 , p_component_type_code => l_component_type_code
20742 , p_component_appl_id => l_component_appl_id
20743 , p_amb_context_code => l_amb_context_code
20744 , p_side => 'NA'
20745 );
20746
20747
20748 --
20749 --
20750 END IF;
20751 --
20752 -- Bug 4922099
20753 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
20754 (NVL(l_enc_upg_option, 'N') = 'O')
20755 ) AND
20756 (l_bflow_method_code = 'PRIOR_ENTRY')
20757 )
20758 THEN
20759 IF
20760 --
20761 1 = 2
20762 --
20763 THEN
20764 xla_accounting_err_pkg.build_message
20765 (p_appli_s_name => 'XLA'
20766 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
20767 ,p_token_1 => 'LINE_NUMBER'
20768 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
20769 ,p_token_2 => 'LINE_TYPE_NAME'
20770 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
20771 l_component_type
20772 ,l_component_code
20773 ,l_component_type_code
20774 ,l_component_appl_id
20775 ,l_amb_context_code
20776 ,l_entity_code
20777 ,l_event_class_code
20778 )
20779 ,p_token_3 => 'OWNER'
20780 ,p_value_3 => xla_lookups_pkg.get_meaning(
20781 p_lookup_type => 'XLA_OWNER_TYPE'
20782 ,p_lookup_code => l_component_type_code
20783 )
20784 ,p_token_4 => 'PRODUCT_NAME'
20785 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
20786 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
20787 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
20788 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
20789 ,p_ae_header_id => NULL
20790 );
20791
20792 IF (C_LEVEL_ERROR>= g_log_level) THEN
20793 trace
20794 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
20795 ,p_level => C_LEVEL_ERROR
20796 ,p_module => l_log_module);
20797 END IF;
20798 END IF;
20799 END IF;
20800 --
20801 --
20802 ------------------------------------------------------------------------------------------------
20803 -- 4219869 Business Flow
20804 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
20805 -- Prior Entry. Currently, the following code is always generated.
20806 ------------------------------------------------------------------------------------------------
20807 XLA_AE_LINES_PKG.ValidateCurrentLine;
20808
20809 ------------------------------------------------------------------------------------
20810 -- 4219869 Business Flow
20811 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
20812 ------------------------------------------------------------------------------------
20813 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
20814
20815 ----------------------------------------------------------------------------------
20816 -- 4219869 Business Flow
20817 -- Update journal entry status -- Need to generate this within IF <condition>
20818 ----------------------------------------------------------------------------------
20819 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
20820 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
20821 ,p_balance_type_code => l_balance_type_code
20822 );
20823
20824 -------------------------------------------------------------------------------------------
20825 -- 4262811 - Generate the Accrual Reversal lines
20826 -------------------------------------------------------------------------------------------
20827 BEGIN
20828 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
20829 (g_array_event(p_event_id).array_value_num('header_index'));
20830 IF l_acc_rev_flag IS NULL THEN
20831 l_acc_rev_flag := 'N';
20832 END IF;
20833 EXCEPTION
20834 WHEN OTHERS THEN
20835 l_acc_rev_flag := 'N';
20836 END;
20837 --
20838 IF (l_acc_rev_flag = 'Y') THEN
20839
20840 -- 4645092 ------------------------------------------------------------------------------
20841 -- To allow MPA report to determine if it should generate report process
20842 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
20843 ------------------------------------------------------------------------------------------
20844
20845 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
20846 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
20847 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
20848 -- call ADRs
20849 -- Bug 4922099
20850 --
20851 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
20852 (NVL(l_actual_upg_option, 'N') = 'O') OR
20853 (NVL(l_enc_upg_option, 'N') = 'O')
20854 )
20855 THEN
20856 NULL;
20857 --
20858 --
20859
20860 l_ccid := AcctDerRule_4(
20861 p_application_id => p_application_id
20862 , p_ae_header_id => l_ae_header_id
20863 , p_source_4 => p_source_4
20864 , x_transaction_coa_id => l_adr_transaction_coa_id
20865 , x_accounting_coa_id => l_adr_accounting_coa_id
20866 , x_value_type_code => l_adr_value_type_code
20867 , p_side => 'NA'
20868 );
20869
20870 xla_ae_lines_pkg.set_ccid(
20871 p_code_combination_id => l_ccid
20872 , p_value_type_code => l_adr_value_type_code
20873 , p_transaction_coa_id => l_adr_transaction_coa_id
20874 , p_accounting_coa_id => l_adr_accounting_coa_id
20875 , p_adr_code => 'CST_DEFAULT'
20876 , p_adr_type_code => 'S'
20877 , p_component_type => l_component_type
20878 , p_component_code => l_component_code
20879 , p_component_type_code => l_component_type_code
20880 , p_component_appl_id => l_component_appl_id
20881 , p_amb_context_code => l_amb_context_code
20882 , p_side => 'NA'
20883 );
20884
20885
20886 --
20887 --
20888 END IF;
20889
20890 --
20891 -- Update the line information that should be overwritten
20892 --
20893 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
20894 p_header_num => 1);
20895 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
20896
20897 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
20898
20899 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
20900 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
20901 END IF;
20902
20903 --
20904 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
20905 --
20906 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
20907 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
20908 ELSE
20909 ---------------------------------------------------------------------------------------------------
20910 -- 4262811a Switch Sign
20911 ---------------------------------------------------------------------------------------------------
20912 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
20913 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
20914 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
20915 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
20916 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
20917 -- 5132302
20918 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
20919 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
20920
20921 END IF;
20922
20923 -- 4955764
20924 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
20925 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
20926
20927
20928 XLA_AE_LINES_PKG.ValidateCurrentLine;
20929 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
20930
20931 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
20932 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
20933 ,p_balance_type_code => l_balance_type_code);
20934
20935 END IF;
20936
20937 -----------------------------------------------------------------------------------------
20938 -- 4262811 Multiperiod Accounting
20939 -----------------------------------------------------------------------------------------
20940 -- No MPA option is assigned.
20941
20942
20943 END IF;
20944 END IF;
20945 --
20946
20947 --
20948 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
20949 trace
20950 (p_msg => 'END of AcctLineType_40'
20951 ,p_level => C_LEVEL_PROCEDURE
20952 ,p_module => l_log_module);
20953 END IF;
20954 --
20955 EXCEPTION
20956 WHEN xla_exceptions_pkg.application_exception THEN
20957 RAISE;
20958 WHEN OTHERS THEN
20959 xla_exceptions_pkg.raise_message
20960 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_40');
20961 END AcctLineType_40;
20962 --
20963
20964 ---------------------------------------
20965 --
20966 -- PRIVATE FUNCTION
20967 -- AcctLineType_41
20968 --
20969 ---------------------------------------
20970 PROCEDURE AcctLineType_41 (
20971 p_application_id IN NUMBER
20972 ,p_event_id IN NUMBER
20973 ,p_calculate_acctd_flag IN VARCHAR2
20974 ,p_calculate_g_l_flag IN VARCHAR2
20975 ,p_actual_flag IN OUT VARCHAR2
20976 ,p_balance_type_code OUT VARCHAR2
20977 ,p_gain_or_loss_ref OUT VARCHAR2
20978
20979 --Cost Management Default Account
20980 , p_source_4 IN NUMBER
20981 --DISTRIBUTION_IDENTIFIER
20982 , p_source_11 IN NUMBER
20983 --Distribution Type
20984 , p_source_12 IN VARCHAR2
20985 , p_source_12_meaning IN VARCHAR2
20986 --Entered Currency Code
20987 , p_source_15 IN VARCHAR2
20988 --Entered Amount
20989 , p_source_18 IN NUMBER
20990 --Currency Conversion Date
20991 , p_source_19 IN DATE
20992 --Currency Conversion Rate
20993 , p_source_20 IN NUMBER
20994 --Currency Conversion Type
20995 , p_source_21 IN VARCHAR2
20996 --Accounted Amount
20997 , p_source_22 IN NUMBER
20998 --Accounting Line Type
20999 , p_source_24 IN NUMBER
21000 )
21001 IS
21002
21003 l_component_type VARCHAR2(80);
21004 l_component_code VARCHAR2(30);
21005 l_component_type_code VARCHAR2(1);
21006 l_component_appl_id INTEGER;
21007 l_amb_context_code VARCHAR2(30);
21008 l_entity_code VARCHAR2(30);
21009 l_event_class_code VARCHAR2(30);
21010 l_ae_header_id NUMBER;
21011 l_event_type_code VARCHAR2(30);
21012 l_line_definition_code VARCHAR2(30);
21013 l_line_definition_owner_code VARCHAR2(1);
21014 --
21015 -- adr variables
21016 l_segment VARCHAR2(30);
21017 l_ccid NUMBER;
21018 l_adr_transaction_coa_id NUMBER;
21019 l_adr_accounting_coa_id NUMBER;
21020 l_adr_flexfield_segment_code VARCHAR2(30);
21021 l_adr_flex_value_set_id NUMBER;
21022 l_adr_value_type_code VARCHAR2(30);
21023 l_adr_value_combination_id NUMBER;
21024 l_adr_value_segment_code VARCHAR2(30);
21025
21026 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
21027 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
21028 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
21029 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
21030
21031 -- 4262811 Variables ------------------------------------------------------------------------------------------
21032 l_entered_amt_idx NUMBER;
21033 l_accted_amt_idx NUMBER;
21034 l_acc_rev_flag VARCHAR2(1);
21035 l_accrual_line_num NUMBER;
21036 l_tmp_amt NUMBER;
21037 l_acc_rev_natural_side_code VARCHAR2(1);
21038
21039 l_num_entries NUMBER;
21040 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
21041 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
21042 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
21043 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
21044 l_recog_line_1 NUMBER;
21045 l_recog_line_2 NUMBER;
21046
21047 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
21048 l_bflow_applied_to_amt NUMBER; -- 5132302
21049 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
21050
21051 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
21052
21053 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
21054 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
21055
21056 ---------------------------------------------------------------------------------------------------------------
21057
21058
21059 --
21060 -- bulk performance
21061 --
21062 l_balance_type_code VARCHAR2(1);
21063 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
21064 l_log_module VARCHAR2(240);
21065
21066 --
21067 -- Upgrade strategy
21068 --
21069 l_actual_upg_option VARCHAR2(1);
21070 l_enc_upg_option VARCHAR2(1);
21071
21072 --
21073 BEGIN
21074 --
21075 IF g_log_enabled THEN
21076 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_41';
21077 END IF;
21078 --
21079 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
21080
21081 trace
21082 (p_msg => 'BEGIN of AcctLineType_41'
21083 ,p_level => C_LEVEL_PROCEDURE
21084 ,p_module => l_log_module);
21085
21086 END IF;
21087 --
21088 l_component_type := 'AMB_JLT';
21089 l_component_code := 'COST_VARIANCE';
21090 l_component_type_code := 'S';
21091 l_component_appl_id := 707;
21092 l_amb_context_code := 'DEFAULT';
21093 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
21094 l_event_class_code := 'USER_DEFINE';
21095 l_event_type_code := 'UCG_TXFR';
21096 l_line_definition_owner_code := 'S';
21097 l_line_definition_code := 'USER_CG_TXFR';
21098 --
21099 l_balance_type_code := 'A';
21100 l_segment := NULL;
21101 l_ccid := NULL;
21102 l_adr_transaction_coa_id := NULL;
21103 l_adr_accounting_coa_id := NULL;
21104 l_adr_flexfield_segment_code := NULL;
21105 l_adr_flex_value_set_id := NULL;
21106 l_adr_value_type_code := NULL;
21107 l_adr_value_combination_id := NULL;
21108 l_adr_value_segment_code := NULL;
21109
21110 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
21111 l_bflow_class_code := ''; -- 4219869 Business Flow
21112 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
21113 l_budgetary_control_flag := 'N';
21114
21115 l_bflow_applied_to_amt_idx := NULL; -- 5132302
21116 l_bflow_applied_to_amt := NULL; -- 5132302
21117 l_entered_amt_idx := NULL; -- 4262811
21118 l_accted_amt_idx := NULL; -- 4262811
21119 l_acc_rev_flag := NULL; -- 4262811
21120 l_accrual_line_num := NULL; -- 4262811
21121 l_tmp_amt := NULL; -- 4262811
21122 --
21123
21124 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
21125 l_balance_type_code <> 'B' THEN
21126 IF NVL(p_source_24,9E125) = 13
21127 THEN
21128
21129 --
21130 XLA_AE_LINES_PKG.SetNewLine;
21131
21132 p_balance_type_code := l_balance_type_code;
21133 -- set the flag so later we will know whether the gain loss line needs to be created
21134
21135 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
21136 p_actual_flag :='A';
21137 END IF;
21138
21139 --
21140 -- bulk performance
21141 --
21142 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
21143 p_header_num => 0); -- 4262811
21144 --
21145 -- set accounting line options
21146 --
21147 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
21148 p_natural_side_code => 'D'
21149 , p_gain_or_loss_flag => 'N'
21150 , p_gl_transfer_mode_code => 'S'
21151 , p_acct_entry_type_code => 'A'
21152 , p_switch_side_flag => 'Y'
21153 , p_merge_duplicate_code => 'N'
21154 );
21155 --
21156 l_acc_rev_natural_side_code := 'C'; -- 4262811
21157 --
21158 --
21159 -- set accounting line type info
21160 --
21161 xla_ae_lines_pkg.SetAcctLineType
21162 (p_component_type => l_component_type
21163 ,p_event_type_code => l_event_type_code
21164 ,p_line_definition_owner_code => l_line_definition_owner_code
21165 ,p_line_definition_code => l_line_definition_code
21166 ,p_accounting_line_code => l_component_code
21167 ,p_accounting_line_type_code => l_component_type_code
21168 ,p_accounting_line_appl_id => l_component_appl_id
21169 ,p_amb_context_code => l_amb_context_code
21170 ,p_entity_code => l_entity_code
21171 ,p_event_class_code => l_event_class_code);
21172 --
21173 -- set accounting class
21174 --
21175 xla_ae_lines_pkg.SetAcctClass(
21176 p_accounting_class_code => 'COST_VARIANCE'
21177 , p_ae_header_id => l_ae_header_id
21178 );
21179
21180 --
21181 -- set rounding class
21182 --
21183 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
21184 'COST_VARIANCE';
21185
21186 --
21187 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
21188 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
21189 --
21190 -- bulk performance
21191 --
21192 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
21193
21194 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
21195 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
21196
21197 -- 4955764
21198 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
21199 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
21200
21201 -- 4458381 Public Sector Enh
21202
21203 --
21204 -- set accounting attributes for the line type
21205 --
21206 l_entered_amt_idx := 3;
21207 l_accted_amt_idx := 8;
21208 l_bflow_applied_to_amt_idx := NULL; -- 5132302
21209 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
21210 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
21211 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
21212 l_rec_acct_attrs.array_char_value(2) := p_source_12;
21213 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
21214 l_rec_acct_attrs.array_num_value(3) := p_source_18;
21215 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
21216 l_rec_acct_attrs.array_char_value(4) := p_source_15;
21217 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
21218 l_rec_acct_attrs.array_date_value(5) := p_source_19;
21219 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
21220 l_rec_acct_attrs.array_num_value(6) := p_source_20;
21221 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
21222 l_rec_acct_attrs.array_char_value(7) := p_source_21;
21223 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
21224 l_rec_acct_attrs.array_num_value(8) := p_source_22;
21225
21226 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
21227 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
21228
21229 ---------------------------------------------------------------------------------------------------------------
21230 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
21231 ---------------------------------------------------------------------------------------------------------------
21232 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
21233
21234 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
21235 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
21236
21237 IF xla_accounting_cache_pkg.GetValueChar
21238 (p_source_code => 'LEDGER_CATEGORY_CODE'
21239 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
21240 AND l_bflow_method_code = 'PRIOR_ENTRY'
21241 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
21242 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
21243 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
21244 )
21245 THEN
21246 xla_ae_lines_pkg.BflowUpgEntry
21247 (p_business_method_code => l_bflow_method_code
21248 ,p_business_class_code => l_bflow_class_code
21249 ,p_balance_type => l_balance_type_code);
21250 ELSE
21251 NULL;
21252 -- No business flow processing for business flow method of NONE.
21253 END IF;
21254
21255 --
21256 -- call analytical criteria
21257 --
21258
21259 --
21260 -- call description
21261 --
21262 -- No description or it is inherited.
21263 --
21264 -- call ADRs
21265 -- Bug 4922099
21266 --
21267 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
21268 (NVL(l_actual_upg_option, 'N') = 'O') OR
21269 (NVL(l_enc_upg_option, 'N') = 'O')
21270 )
21271 THEN
21272 NULL;
21273 --
21274 --
21275
21276 l_ccid := AcctDerRule_4(
21277 p_application_id => p_application_id
21278 , p_ae_header_id => l_ae_header_id
21279 , p_source_4 => p_source_4
21280 , x_transaction_coa_id => l_adr_transaction_coa_id
21281 , x_accounting_coa_id => l_adr_accounting_coa_id
21282 , x_value_type_code => l_adr_value_type_code
21283 , p_side => 'NA'
21284 );
21285
21286 xla_ae_lines_pkg.set_ccid(
21287 p_code_combination_id => l_ccid
21288 , p_value_type_code => l_adr_value_type_code
21289 , p_transaction_coa_id => l_adr_transaction_coa_id
21290 , p_accounting_coa_id => l_adr_accounting_coa_id
21291 , p_adr_code => 'CST_DEFAULT'
21292 , p_adr_type_code => 'S'
21293 , p_component_type => l_component_type
21294 , p_component_code => l_component_code
21295 , p_component_type_code => l_component_type_code
21296 , p_component_appl_id => l_component_appl_id
21297 , p_amb_context_code => l_amb_context_code
21298 , p_side => 'NA'
21299 );
21300
21301
21302 --
21303 --
21304 END IF;
21305 --
21306 -- Bug 4922099
21307 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
21308 (NVL(l_enc_upg_option, 'N') = 'O')
21309 ) AND
21310 (l_bflow_method_code = 'PRIOR_ENTRY')
21311 )
21312 THEN
21313 IF
21314 --
21315 1 = 2
21316 --
21317 THEN
21318 xla_accounting_err_pkg.build_message
21319 (p_appli_s_name => 'XLA'
21320 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
21321 ,p_token_1 => 'LINE_NUMBER'
21322 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
21323 ,p_token_2 => 'LINE_TYPE_NAME'
21324 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
21325 l_component_type
21326 ,l_component_code
21327 ,l_component_type_code
21328 ,l_component_appl_id
21329 ,l_amb_context_code
21330 ,l_entity_code
21331 ,l_event_class_code
21332 )
21333 ,p_token_3 => 'OWNER'
21334 ,p_value_3 => xla_lookups_pkg.get_meaning(
21335 p_lookup_type => 'XLA_OWNER_TYPE'
21336 ,p_lookup_code => l_component_type_code
21337 )
21338 ,p_token_4 => 'PRODUCT_NAME'
21339 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
21340 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
21341 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
21342 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
21343 ,p_ae_header_id => NULL
21344 );
21345
21346 IF (C_LEVEL_ERROR>= g_log_level) THEN
21347 trace
21348 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
21349 ,p_level => C_LEVEL_ERROR
21350 ,p_module => l_log_module);
21351 END IF;
21352 END IF;
21353 END IF;
21354 --
21355 --
21356 ------------------------------------------------------------------------------------------------
21357 -- 4219869 Business Flow
21358 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
21359 -- Prior Entry. Currently, the following code is always generated.
21360 ------------------------------------------------------------------------------------------------
21361 XLA_AE_LINES_PKG.ValidateCurrentLine;
21362
21363 ------------------------------------------------------------------------------------
21364 -- 4219869 Business Flow
21365 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
21366 ------------------------------------------------------------------------------------
21367 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
21368
21369 ----------------------------------------------------------------------------------
21370 -- 4219869 Business Flow
21371 -- Update journal entry status -- Need to generate this within IF <condition>
21372 ----------------------------------------------------------------------------------
21373 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
21374 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
21375 ,p_balance_type_code => l_balance_type_code
21376 );
21377
21378 -------------------------------------------------------------------------------------------
21379 -- 4262811 - Generate the Accrual Reversal lines
21380 -------------------------------------------------------------------------------------------
21381 BEGIN
21382 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
21383 (g_array_event(p_event_id).array_value_num('header_index'));
21384 IF l_acc_rev_flag IS NULL THEN
21385 l_acc_rev_flag := 'N';
21386 END IF;
21387 EXCEPTION
21388 WHEN OTHERS THEN
21389 l_acc_rev_flag := 'N';
21390 END;
21391 --
21392 IF (l_acc_rev_flag = 'Y') THEN
21393
21394 -- 4645092 ------------------------------------------------------------------------------
21395 -- To allow MPA report to determine if it should generate report process
21396 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
21397 ------------------------------------------------------------------------------------------
21398
21399 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
21400 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
21401 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
21402 -- call ADRs
21403 -- Bug 4922099
21404 --
21405 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
21406 (NVL(l_actual_upg_option, 'N') = 'O') OR
21407 (NVL(l_enc_upg_option, 'N') = 'O')
21408 )
21409 THEN
21410 NULL;
21411 --
21412 --
21413
21414 l_ccid := AcctDerRule_4(
21415 p_application_id => p_application_id
21416 , p_ae_header_id => l_ae_header_id
21417 , p_source_4 => p_source_4
21418 , x_transaction_coa_id => l_adr_transaction_coa_id
21419 , x_accounting_coa_id => l_adr_accounting_coa_id
21420 , x_value_type_code => l_adr_value_type_code
21421 , p_side => 'NA'
21422 );
21423
21424 xla_ae_lines_pkg.set_ccid(
21425 p_code_combination_id => l_ccid
21426 , p_value_type_code => l_adr_value_type_code
21427 , p_transaction_coa_id => l_adr_transaction_coa_id
21428 , p_accounting_coa_id => l_adr_accounting_coa_id
21429 , p_adr_code => 'CST_DEFAULT'
21430 , p_adr_type_code => 'S'
21431 , p_component_type => l_component_type
21432 , p_component_code => l_component_code
21433 , p_component_type_code => l_component_type_code
21434 , p_component_appl_id => l_component_appl_id
21435 , p_amb_context_code => l_amb_context_code
21436 , p_side => 'NA'
21437 );
21438
21439
21440 --
21441 --
21442 END IF;
21443
21444 --
21445 -- Update the line information that should be overwritten
21446 --
21447 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
21448 p_header_num => 1);
21449 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
21450
21451 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
21452
21453 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
21454 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
21455 END IF;
21456
21457 --
21458 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
21459 --
21460 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
21461 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
21462 ELSE
21463 ---------------------------------------------------------------------------------------------------
21464 -- 4262811a Switch Sign
21465 ---------------------------------------------------------------------------------------------------
21466 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
21467 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
21468 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
21469 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
21470 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
21471 -- 5132302
21472 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
21473 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
21474
21475 END IF;
21476
21477 -- 4955764
21478 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
21479 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
21480
21481
21482 XLA_AE_LINES_PKG.ValidateCurrentLine;
21483 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
21484
21485 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
21486 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
21487 ,p_balance_type_code => l_balance_type_code);
21488
21489 END IF;
21490
21491 -----------------------------------------------------------------------------------------
21492 -- 4262811 Multiperiod Accounting
21493 -----------------------------------------------------------------------------------------
21494 -- No MPA option is assigned.
21495
21496
21497 END IF;
21498 END IF;
21499 --
21500
21501 --
21502 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
21503 trace
21504 (p_msg => 'END of AcctLineType_41'
21505 ,p_level => C_LEVEL_PROCEDURE
21506 ,p_module => l_log_module);
21507 END IF;
21508 --
21509 EXCEPTION
21510 WHEN xla_exceptions_pkg.application_exception THEN
21511 RAISE;
21512 WHEN OTHERS THEN
21513 xla_exceptions_pkg.raise_message
21514 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_41');
21515 END AcctLineType_41;
21516 --
21517
21518 ---------------------------------------
21519 --
21520 -- PRIVATE FUNCTION
21521 -- AcctLineType_42
21522 --
21523 ---------------------------------------
21524 PROCEDURE AcctLineType_42 (
21525 p_application_id IN NUMBER
21526 ,p_event_id IN NUMBER
21527 ,p_calculate_acctd_flag IN VARCHAR2
21528 ,p_calculate_g_l_flag IN VARCHAR2
21529 ,p_actual_flag IN OUT VARCHAR2
21530 ,p_balance_type_code OUT VARCHAR2
21531 ,p_gain_or_loss_ref OUT VARCHAR2
21532
21533 --Cost Management Default Account
21534 , p_source_4 IN NUMBER
21535 --DISTRIBUTION_IDENTIFIER
21536 , p_source_11 IN NUMBER
21537 --Distribution Type
21538 , p_source_12 IN VARCHAR2
21539 , p_source_12_meaning IN VARCHAR2
21540 --Entered Currency Code
21541 , p_source_15 IN VARCHAR2
21542 --Entered Amount
21543 , p_source_18 IN NUMBER
21544 --Currency Conversion Date
21545 , p_source_19 IN DATE
21546 --Currency Conversion Rate
21547 , p_source_20 IN NUMBER
21548 --Currency Conversion Type
21549 , p_source_21 IN VARCHAR2
21550 --Accounted Amount
21551 , p_source_22 IN NUMBER
21552 --Accounting Line Type
21553 , p_source_24 IN NUMBER
21554 )
21555 IS
21556
21557 l_component_type VARCHAR2(80);
21558 l_component_code VARCHAR2(30);
21559 l_component_type_code VARCHAR2(1);
21560 l_component_appl_id INTEGER;
21561 l_amb_context_code VARCHAR2(30);
21562 l_entity_code VARCHAR2(30);
21563 l_event_class_code VARCHAR2(30);
21564 l_ae_header_id NUMBER;
21565 l_event_type_code VARCHAR2(30);
21566 l_line_definition_code VARCHAR2(30);
21567 l_line_definition_owner_code VARCHAR2(1);
21568 --
21569 -- adr variables
21570 l_segment VARCHAR2(30);
21571 l_ccid NUMBER;
21572 l_adr_transaction_coa_id NUMBER;
21573 l_adr_accounting_coa_id NUMBER;
21574 l_adr_flexfield_segment_code VARCHAR2(30);
21575 l_adr_flex_value_set_id NUMBER;
21576 l_adr_value_type_code VARCHAR2(30);
21577 l_adr_value_combination_id NUMBER;
21578 l_adr_value_segment_code VARCHAR2(30);
21579
21580 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
21581 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
21582 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
21583 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
21584
21585 -- 4262811 Variables ------------------------------------------------------------------------------------------
21586 l_entered_amt_idx NUMBER;
21587 l_accted_amt_idx NUMBER;
21588 l_acc_rev_flag VARCHAR2(1);
21589 l_accrual_line_num NUMBER;
21590 l_tmp_amt NUMBER;
21591 l_acc_rev_natural_side_code VARCHAR2(1);
21592
21593 l_num_entries NUMBER;
21594 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
21595 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
21596 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
21597 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
21598 l_recog_line_1 NUMBER;
21599 l_recog_line_2 NUMBER;
21600
21601 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
21602 l_bflow_applied_to_amt NUMBER; -- 5132302
21603 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
21604
21605 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
21606
21607 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
21608 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
21609
21610 ---------------------------------------------------------------------------------------------------------------
21611
21612
21613 --
21614 -- bulk performance
21615 --
21616 l_balance_type_code VARCHAR2(1);
21617 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
21618 l_log_module VARCHAR2(240);
21619
21620 --
21621 -- Upgrade strategy
21622 --
21623 l_actual_upg_option VARCHAR2(1);
21624 l_enc_upg_option VARCHAR2(1);
21625
21626 --
21627 BEGIN
21628 --
21629 IF g_log_enabled THEN
21630 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_42';
21631 END IF;
21632 --
21633 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
21634
21635 trace
21636 (p_msg => 'BEGIN of AcctLineType_42'
21637 ,p_level => C_LEVEL_PROCEDURE
21638 ,p_module => l_log_module);
21639
21640 END IF;
21641 --
21642 l_component_type := 'AMB_JLT';
21643 l_component_code := 'COST_VARIANCE';
21644 l_component_type_code := 'S';
21645 l_component_appl_id := 707;
21646 l_amb_context_code := 'DEFAULT';
21647 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
21648 l_event_class_code := 'CON_INV_OWNR_TXFR';
21649 l_event_type_code := 'CON_INV_OWNR_TXFR_ALL';
21650 l_line_definition_owner_code := 'S';
21651 l_line_definition_code := 'CON_INV_OWNR_TXFR';
21652 --
21653 l_balance_type_code := 'A';
21654 l_segment := NULL;
21655 l_ccid := NULL;
21656 l_adr_transaction_coa_id := NULL;
21657 l_adr_accounting_coa_id := NULL;
21658 l_adr_flexfield_segment_code := NULL;
21659 l_adr_flex_value_set_id := NULL;
21660 l_adr_value_type_code := NULL;
21661 l_adr_value_combination_id := NULL;
21662 l_adr_value_segment_code := NULL;
21663
21664 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
21665 l_bflow_class_code := ''; -- 4219869 Business Flow
21666 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
21667 l_budgetary_control_flag := 'N';
21668
21669 l_bflow_applied_to_amt_idx := NULL; -- 5132302
21670 l_bflow_applied_to_amt := NULL; -- 5132302
21671 l_entered_amt_idx := NULL; -- 4262811
21672 l_accted_amt_idx := NULL; -- 4262811
21673 l_acc_rev_flag := NULL; -- 4262811
21674 l_accrual_line_num := NULL; -- 4262811
21675 l_tmp_amt := NULL; -- 4262811
21676 --
21677
21678 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
21679 l_balance_type_code <> 'B' THEN
21680 IF NVL(p_source_24,9E125) = 13
21681 THEN
21682
21683 --
21684 XLA_AE_LINES_PKG.SetNewLine;
21685
21686 p_balance_type_code := l_balance_type_code;
21687 -- set the flag so later we will know whether the gain loss line needs to be created
21688
21689 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
21690 p_actual_flag :='A';
21691 END IF;
21692
21693 --
21694 -- bulk performance
21695 --
21696 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
21697 p_header_num => 0); -- 4262811
21698 --
21699 -- set accounting line options
21700 --
21701 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
21702 p_natural_side_code => 'D'
21703 , p_gain_or_loss_flag => 'N'
21704 , p_gl_transfer_mode_code => 'S'
21705 , p_acct_entry_type_code => 'A'
21706 , p_switch_side_flag => 'Y'
21707 , p_merge_duplicate_code => 'N'
21708 );
21709 --
21710 l_acc_rev_natural_side_code := 'C'; -- 4262811
21711 --
21712 --
21713 -- set accounting line type info
21714 --
21715 xla_ae_lines_pkg.SetAcctLineType
21716 (p_component_type => l_component_type
21717 ,p_event_type_code => l_event_type_code
21718 ,p_line_definition_owner_code => l_line_definition_owner_code
21719 ,p_line_definition_code => l_line_definition_code
21720 ,p_accounting_line_code => l_component_code
21721 ,p_accounting_line_type_code => l_component_type_code
21722 ,p_accounting_line_appl_id => l_component_appl_id
21723 ,p_amb_context_code => l_amb_context_code
21724 ,p_entity_code => l_entity_code
21725 ,p_event_class_code => l_event_class_code);
21726 --
21727 -- set accounting class
21728 --
21729 xla_ae_lines_pkg.SetAcctClass(
21730 p_accounting_class_code => 'COST_VARIANCE'
21731 , p_ae_header_id => l_ae_header_id
21732 );
21733
21734 --
21735 -- set rounding class
21736 --
21737 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
21738 'COST_VARIANCE';
21739
21740 --
21741 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
21742 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
21743 --
21744 -- bulk performance
21745 --
21746 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
21747
21748 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
21749 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
21750
21751 -- 4955764
21752 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
21753 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
21754
21755 -- 4458381 Public Sector Enh
21756
21757 --
21758 -- set accounting attributes for the line type
21759 --
21760 l_entered_amt_idx := 3;
21761 l_accted_amt_idx := 8;
21762 l_bflow_applied_to_amt_idx := NULL; -- 5132302
21763 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
21764 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
21765 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
21766 l_rec_acct_attrs.array_char_value(2) := p_source_12;
21767 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
21768 l_rec_acct_attrs.array_num_value(3) := p_source_18;
21769 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
21770 l_rec_acct_attrs.array_char_value(4) := p_source_15;
21771 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
21772 l_rec_acct_attrs.array_date_value(5) := p_source_19;
21773 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
21774 l_rec_acct_attrs.array_num_value(6) := p_source_20;
21775 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
21776 l_rec_acct_attrs.array_char_value(7) := p_source_21;
21777 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
21778 l_rec_acct_attrs.array_num_value(8) := p_source_22;
21779
21780 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
21781 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
21782
21783 ---------------------------------------------------------------------------------------------------------------
21784 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
21785 ---------------------------------------------------------------------------------------------------------------
21786 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
21787
21788 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
21789 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
21790
21791 IF xla_accounting_cache_pkg.GetValueChar
21792 (p_source_code => 'LEDGER_CATEGORY_CODE'
21793 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
21794 AND l_bflow_method_code = 'PRIOR_ENTRY'
21795 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
21796 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
21797 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
21798 )
21799 THEN
21800 xla_ae_lines_pkg.BflowUpgEntry
21801 (p_business_method_code => l_bflow_method_code
21802 ,p_business_class_code => l_bflow_class_code
21803 ,p_balance_type => l_balance_type_code);
21804 ELSE
21805 NULL;
21806 -- No business flow processing for business flow method of NONE.
21807 END IF;
21808
21809 --
21810 -- call analytical criteria
21811 --
21812
21813 --
21814 -- call description
21815 --
21816 -- No description or it is inherited.
21817 --
21818 -- call ADRs
21819 -- Bug 4922099
21820 --
21821 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
21822 (NVL(l_actual_upg_option, 'N') = 'O') OR
21823 (NVL(l_enc_upg_option, 'N') = 'O')
21824 )
21825 THEN
21826 NULL;
21827 --
21828 --
21829
21830 l_ccid := AcctDerRule_4(
21831 p_application_id => p_application_id
21832 , p_ae_header_id => l_ae_header_id
21833 , p_source_4 => p_source_4
21834 , x_transaction_coa_id => l_adr_transaction_coa_id
21835 , x_accounting_coa_id => l_adr_accounting_coa_id
21836 , x_value_type_code => l_adr_value_type_code
21837 , p_side => 'NA'
21838 );
21839
21840 xla_ae_lines_pkg.set_ccid(
21841 p_code_combination_id => l_ccid
21842 , p_value_type_code => l_adr_value_type_code
21843 , p_transaction_coa_id => l_adr_transaction_coa_id
21844 , p_accounting_coa_id => l_adr_accounting_coa_id
21845 , p_adr_code => 'CST_DEFAULT'
21846 , p_adr_type_code => 'S'
21847 , p_component_type => l_component_type
21848 , p_component_code => l_component_code
21849 , p_component_type_code => l_component_type_code
21850 , p_component_appl_id => l_component_appl_id
21851 , p_amb_context_code => l_amb_context_code
21852 , p_side => 'NA'
21853 );
21854
21855
21856 --
21857 --
21858 END IF;
21859 --
21860 -- Bug 4922099
21861 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
21862 (NVL(l_enc_upg_option, 'N') = 'O')
21863 ) AND
21864 (l_bflow_method_code = 'PRIOR_ENTRY')
21865 )
21866 THEN
21867 IF
21868 --
21869 1 = 2
21870 --
21871 THEN
21872 xla_accounting_err_pkg.build_message
21873 (p_appli_s_name => 'XLA'
21874 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
21875 ,p_token_1 => 'LINE_NUMBER'
21876 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
21877 ,p_token_2 => 'LINE_TYPE_NAME'
21878 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
21879 l_component_type
21880 ,l_component_code
21881 ,l_component_type_code
21882 ,l_component_appl_id
21883 ,l_amb_context_code
21884 ,l_entity_code
21885 ,l_event_class_code
21886 )
21887 ,p_token_3 => 'OWNER'
21888 ,p_value_3 => xla_lookups_pkg.get_meaning(
21889 p_lookup_type => 'XLA_OWNER_TYPE'
21890 ,p_lookup_code => l_component_type_code
21891 )
21892 ,p_token_4 => 'PRODUCT_NAME'
21893 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
21894 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
21895 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
21896 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
21897 ,p_ae_header_id => NULL
21898 );
21899
21900 IF (C_LEVEL_ERROR>= g_log_level) THEN
21901 trace
21902 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
21903 ,p_level => C_LEVEL_ERROR
21904 ,p_module => l_log_module);
21905 END IF;
21906 END IF;
21907 END IF;
21908 --
21909 --
21910 ------------------------------------------------------------------------------------------------
21911 -- 4219869 Business Flow
21912 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
21913 -- Prior Entry. Currently, the following code is always generated.
21914 ------------------------------------------------------------------------------------------------
21915 XLA_AE_LINES_PKG.ValidateCurrentLine;
21916
21917 ------------------------------------------------------------------------------------
21918 -- 4219869 Business Flow
21919 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
21920 ------------------------------------------------------------------------------------
21921 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
21922
21923 ----------------------------------------------------------------------------------
21924 -- 4219869 Business Flow
21925 -- Update journal entry status -- Need to generate this within IF <condition>
21926 ----------------------------------------------------------------------------------
21927 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
21928 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
21929 ,p_balance_type_code => l_balance_type_code
21930 );
21931
21932 -------------------------------------------------------------------------------------------
21933 -- 4262811 - Generate the Accrual Reversal lines
21934 -------------------------------------------------------------------------------------------
21935 BEGIN
21936 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
21937 (g_array_event(p_event_id).array_value_num('header_index'));
21938 IF l_acc_rev_flag IS NULL THEN
21939 l_acc_rev_flag := 'N';
21940 END IF;
21941 EXCEPTION
21942 WHEN OTHERS THEN
21943 l_acc_rev_flag := 'N';
21944 END;
21945 --
21946 IF (l_acc_rev_flag = 'Y') THEN
21947
21948 -- 4645092 ------------------------------------------------------------------------------
21949 -- To allow MPA report to determine if it should generate report process
21950 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
21951 ------------------------------------------------------------------------------------------
21952
21953 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
21954 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
21955 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
21956 -- call ADRs
21957 -- Bug 4922099
21958 --
21959 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
21960 (NVL(l_actual_upg_option, 'N') = 'O') OR
21961 (NVL(l_enc_upg_option, 'N') = 'O')
21962 )
21963 THEN
21964 NULL;
21965 --
21966 --
21967
21968 l_ccid := AcctDerRule_4(
21969 p_application_id => p_application_id
21970 , p_ae_header_id => l_ae_header_id
21971 , p_source_4 => p_source_4
21972 , x_transaction_coa_id => l_adr_transaction_coa_id
21973 , x_accounting_coa_id => l_adr_accounting_coa_id
21974 , x_value_type_code => l_adr_value_type_code
21975 , p_side => 'NA'
21976 );
21977
21978 xla_ae_lines_pkg.set_ccid(
21979 p_code_combination_id => l_ccid
21980 , p_value_type_code => l_adr_value_type_code
21981 , p_transaction_coa_id => l_adr_transaction_coa_id
21982 , p_accounting_coa_id => l_adr_accounting_coa_id
21983 , p_adr_code => 'CST_DEFAULT'
21984 , p_adr_type_code => 'S'
21985 , p_component_type => l_component_type
21986 , p_component_code => l_component_code
21987 , p_component_type_code => l_component_type_code
21988 , p_component_appl_id => l_component_appl_id
21989 , p_amb_context_code => l_amb_context_code
21990 , p_side => 'NA'
21991 );
21992
21993
21994 --
21995 --
21996 END IF;
21997
21998 --
21999 -- Update the line information that should be overwritten
22000 --
22001 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
22002 p_header_num => 1);
22003 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
22004
22005 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
22006
22007 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
22008 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
22009 END IF;
22010
22011 --
22012 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
22013 --
22014 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
22015 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
22016 ELSE
22017 ---------------------------------------------------------------------------------------------------
22018 -- 4262811a Switch Sign
22019 ---------------------------------------------------------------------------------------------------
22020 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
22021 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
22022 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
22023 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
22024 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
22025 -- 5132302
22026 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
22027 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
22028
22029 END IF;
22030
22031 -- 4955764
22032 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
22033 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
22034
22035
22036 XLA_AE_LINES_PKG.ValidateCurrentLine;
22037 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
22038
22039 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
22040 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
22041 ,p_balance_type_code => l_balance_type_code);
22042
22043 END IF;
22044
22045 -----------------------------------------------------------------------------------------
22046 -- 4262811 Multiperiod Accounting
22047 -----------------------------------------------------------------------------------------
22048 -- No MPA option is assigned.
22049
22050
22051 END IF;
22052 END IF;
22053 --
22054
22055 --
22056 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
22057 trace
22058 (p_msg => 'END of AcctLineType_42'
22059 ,p_level => C_LEVEL_PROCEDURE
22060 ,p_module => l_log_module);
22061 END IF;
22062 --
22063 EXCEPTION
22064 WHEN xla_exceptions_pkg.application_exception THEN
22065 RAISE;
22066 WHEN OTHERS THEN
22067 xla_exceptions_pkg.raise_message
22068 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_42');
22069 END AcctLineType_42;
22070 --
22071
22072 ---------------------------------------
22073 --
22074 -- PRIVATE FUNCTION
22075 -- AcctLineType_43
22076 --
22077 ---------------------------------------
22078 PROCEDURE AcctLineType_43 (
22079 p_application_id IN NUMBER
22080 ,p_event_id IN NUMBER
22081 ,p_calculate_acctd_flag IN VARCHAR2
22082 ,p_calculate_g_l_flag IN VARCHAR2
22083 ,p_actual_flag IN OUT VARCHAR2
22084 ,p_balance_type_code OUT VARCHAR2
22085 ,p_gain_or_loss_ref OUT VARCHAR2
22086
22087 --Cost Management Default Account
22088 , p_source_4 IN NUMBER
22089 --DISTRIBUTION_IDENTIFIER
22090 , p_source_11 IN NUMBER
22091 --Distribution Type
22092 , p_source_12 IN VARCHAR2
22093 , p_source_12_meaning IN VARCHAR2
22094 --Entered Currency Code
22095 , p_source_15 IN VARCHAR2
22096 --Entered Amount
22097 , p_source_18 IN NUMBER
22098 --Currency Conversion Date
22099 , p_source_19 IN DATE
22100 --Currency Conversion Rate
22101 , p_source_20 IN NUMBER
22102 --Currency Conversion Type
22103 , p_source_21 IN VARCHAR2
22104 --Accounted Amount
22105 , p_source_22 IN NUMBER
22106 --Accounting Line Type
22107 , p_source_24 IN NUMBER
22108 )
22109 IS
22110
22111 l_component_type VARCHAR2(80);
22112 l_component_code VARCHAR2(30);
22113 l_component_type_code VARCHAR2(1);
22114 l_component_appl_id INTEGER;
22115 l_amb_context_code VARCHAR2(30);
22116 l_entity_code VARCHAR2(30);
22117 l_event_class_code VARCHAR2(30);
22118 l_ae_header_id NUMBER;
22119 l_event_type_code VARCHAR2(30);
22120 l_line_definition_code VARCHAR2(30);
22121 l_line_definition_owner_code VARCHAR2(1);
22122 --
22123 -- adr variables
22124 l_segment VARCHAR2(30);
22125 l_ccid NUMBER;
22126 l_adr_transaction_coa_id NUMBER;
22127 l_adr_accounting_coa_id NUMBER;
22128 l_adr_flexfield_segment_code VARCHAR2(30);
22129 l_adr_flex_value_set_id NUMBER;
22130 l_adr_value_type_code VARCHAR2(30);
22131 l_adr_value_combination_id NUMBER;
22132 l_adr_value_segment_code VARCHAR2(30);
22133
22134 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
22135 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
22136 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
22137 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
22138
22139 -- 4262811 Variables ------------------------------------------------------------------------------------------
22140 l_entered_amt_idx NUMBER;
22141 l_accted_amt_idx NUMBER;
22142 l_acc_rev_flag VARCHAR2(1);
22143 l_accrual_line_num NUMBER;
22144 l_tmp_amt NUMBER;
22145 l_acc_rev_natural_side_code VARCHAR2(1);
22146
22147 l_num_entries NUMBER;
22148 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
22149 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
22150 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
22151 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
22152 l_recog_line_1 NUMBER;
22153 l_recog_line_2 NUMBER;
22154
22155 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
22156 l_bflow_applied_to_amt NUMBER; -- 5132302
22157 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
22158
22159 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
22160
22161 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
22162 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
22163
22164 ---------------------------------------------------------------------------------------------------------------
22165
22166
22167 --
22168 -- bulk performance
22169 --
22170 l_balance_type_code VARCHAR2(1);
22171 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
22172 l_log_module VARCHAR2(240);
22173
22174 --
22175 -- Upgrade strategy
22176 --
22177 l_actual_upg_option VARCHAR2(1);
22178 l_enc_upg_option VARCHAR2(1);
22179
22180 --
22181 BEGIN
22182 --
22183 IF g_log_enabled THEN
22184 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_43';
22185 END IF;
22186 --
22187 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
22188
22189 trace
22190 (p_msg => 'BEGIN of AcctLineType_43'
22191 ,p_level => C_LEVEL_PROCEDURE
22192 ,p_module => l_log_module);
22193
22194 END IF;
22195 --
22196 l_component_type := 'AMB_JLT';
22197 l_component_code := 'COST_VARIANCE';
22198 l_component_type_code := 'S';
22199 l_component_appl_id := 707;
22200 l_amb_context_code := 'DEFAULT';
22201 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
22202 l_event_class_code := 'USER_DEFINE';
22203 l_event_type_code := 'UMISC_RCPT';
22204 l_line_definition_owner_code := 'S';
22205 l_line_definition_code := 'USER_RCPT';
22206 --
22207 l_balance_type_code := 'A';
22208 l_segment := NULL;
22209 l_ccid := NULL;
22210 l_adr_transaction_coa_id := NULL;
22211 l_adr_accounting_coa_id := NULL;
22212 l_adr_flexfield_segment_code := NULL;
22213 l_adr_flex_value_set_id := NULL;
22214 l_adr_value_type_code := NULL;
22215 l_adr_value_combination_id := NULL;
22216 l_adr_value_segment_code := NULL;
22217
22218 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
22219 l_bflow_class_code := ''; -- 4219869 Business Flow
22220 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
22221 l_budgetary_control_flag := 'N';
22222
22223 l_bflow_applied_to_amt_idx := NULL; -- 5132302
22224 l_bflow_applied_to_amt := NULL; -- 5132302
22225 l_entered_amt_idx := NULL; -- 4262811
22226 l_accted_amt_idx := NULL; -- 4262811
22227 l_acc_rev_flag := NULL; -- 4262811
22228 l_accrual_line_num := NULL; -- 4262811
22229 l_tmp_amt := NULL; -- 4262811
22230 --
22231
22232 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
22233 l_balance_type_code <> 'B' THEN
22234 IF NVL(p_source_24,9E125) = 13
22235 THEN
22236
22237 --
22238 XLA_AE_LINES_PKG.SetNewLine;
22239
22240 p_balance_type_code := l_balance_type_code;
22241 -- set the flag so later we will know whether the gain loss line needs to be created
22242
22243 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
22244 p_actual_flag :='A';
22245 END IF;
22246
22247 --
22248 -- bulk performance
22249 --
22250 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
22251 p_header_num => 0); -- 4262811
22252 --
22253 -- set accounting line options
22254 --
22255 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
22256 p_natural_side_code => 'D'
22257 , p_gain_or_loss_flag => 'N'
22258 , p_gl_transfer_mode_code => 'S'
22259 , p_acct_entry_type_code => 'A'
22260 , p_switch_side_flag => 'Y'
22261 , p_merge_duplicate_code => 'N'
22262 );
22263 --
22264 l_acc_rev_natural_side_code := 'C'; -- 4262811
22265 --
22266 --
22267 -- set accounting line type info
22268 --
22269 xla_ae_lines_pkg.SetAcctLineType
22270 (p_component_type => l_component_type
22271 ,p_event_type_code => l_event_type_code
22272 ,p_line_definition_owner_code => l_line_definition_owner_code
22273 ,p_line_definition_code => l_line_definition_code
22274 ,p_accounting_line_code => l_component_code
22275 ,p_accounting_line_type_code => l_component_type_code
22276 ,p_accounting_line_appl_id => l_component_appl_id
22277 ,p_amb_context_code => l_amb_context_code
22278 ,p_entity_code => l_entity_code
22279 ,p_event_class_code => l_event_class_code);
22280 --
22281 -- set accounting class
22282 --
22283 xla_ae_lines_pkg.SetAcctClass(
22284 p_accounting_class_code => 'COST_VARIANCE'
22285 , p_ae_header_id => l_ae_header_id
22286 );
22287
22288 --
22289 -- set rounding class
22290 --
22291 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
22292 'COST_VARIANCE';
22293
22294 --
22295 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
22296 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
22297 --
22298 -- bulk performance
22299 --
22300 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
22301
22302 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
22303 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
22304
22305 -- 4955764
22306 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
22307 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
22308
22309 -- 4458381 Public Sector Enh
22310
22311 --
22312 -- set accounting attributes for the line type
22313 --
22314 l_entered_amt_idx := 3;
22315 l_accted_amt_idx := 8;
22316 l_bflow_applied_to_amt_idx := NULL; -- 5132302
22317 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
22318 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
22319 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
22320 l_rec_acct_attrs.array_char_value(2) := p_source_12;
22321 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
22322 l_rec_acct_attrs.array_num_value(3) := p_source_18;
22323 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
22324 l_rec_acct_attrs.array_char_value(4) := p_source_15;
22325 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
22326 l_rec_acct_attrs.array_date_value(5) := p_source_19;
22327 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
22328 l_rec_acct_attrs.array_num_value(6) := p_source_20;
22329 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
22330 l_rec_acct_attrs.array_char_value(7) := p_source_21;
22331 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
22332 l_rec_acct_attrs.array_num_value(8) := p_source_22;
22333
22334 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
22335 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
22336
22337 ---------------------------------------------------------------------------------------------------------------
22338 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
22339 ---------------------------------------------------------------------------------------------------------------
22340 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
22341
22342 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
22343 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
22344
22345 IF xla_accounting_cache_pkg.GetValueChar
22346 (p_source_code => 'LEDGER_CATEGORY_CODE'
22347 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
22348 AND l_bflow_method_code = 'PRIOR_ENTRY'
22349 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
22350 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
22351 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
22352 )
22353 THEN
22354 xla_ae_lines_pkg.BflowUpgEntry
22355 (p_business_method_code => l_bflow_method_code
22356 ,p_business_class_code => l_bflow_class_code
22357 ,p_balance_type => l_balance_type_code);
22358 ELSE
22359 NULL;
22360 -- No business flow processing for business flow method of NONE.
22361 END IF;
22362
22363 --
22364 -- call analytical criteria
22365 --
22366
22367 --
22368 -- call description
22369 --
22370 -- No description or it is inherited.
22371 --
22372 -- call ADRs
22373 -- Bug 4922099
22374 --
22375 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
22376 (NVL(l_actual_upg_option, 'N') = 'O') OR
22377 (NVL(l_enc_upg_option, 'N') = 'O')
22378 )
22379 THEN
22380 NULL;
22381 --
22382 --
22383
22384 l_ccid := AcctDerRule_4(
22385 p_application_id => p_application_id
22386 , p_ae_header_id => l_ae_header_id
22387 , p_source_4 => p_source_4
22388 , x_transaction_coa_id => l_adr_transaction_coa_id
22389 , x_accounting_coa_id => l_adr_accounting_coa_id
22390 , x_value_type_code => l_adr_value_type_code
22391 , p_side => 'NA'
22392 );
22393
22394 xla_ae_lines_pkg.set_ccid(
22395 p_code_combination_id => l_ccid
22396 , p_value_type_code => l_adr_value_type_code
22397 , p_transaction_coa_id => l_adr_transaction_coa_id
22398 , p_accounting_coa_id => l_adr_accounting_coa_id
22399 , p_adr_code => 'CST_DEFAULT'
22400 , p_adr_type_code => 'S'
22401 , p_component_type => l_component_type
22402 , p_component_code => l_component_code
22403 , p_component_type_code => l_component_type_code
22404 , p_component_appl_id => l_component_appl_id
22405 , p_amb_context_code => l_amb_context_code
22406 , p_side => 'NA'
22407 );
22408
22409
22410 --
22411 --
22412 END IF;
22413 --
22414 -- Bug 4922099
22415 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
22416 (NVL(l_enc_upg_option, 'N') = 'O')
22417 ) AND
22418 (l_bflow_method_code = 'PRIOR_ENTRY')
22419 )
22420 THEN
22421 IF
22422 --
22423 1 = 2
22424 --
22425 THEN
22426 xla_accounting_err_pkg.build_message
22427 (p_appli_s_name => 'XLA'
22428 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
22429 ,p_token_1 => 'LINE_NUMBER'
22430 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
22431 ,p_token_2 => 'LINE_TYPE_NAME'
22432 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
22433 l_component_type
22434 ,l_component_code
22435 ,l_component_type_code
22436 ,l_component_appl_id
22437 ,l_amb_context_code
22438 ,l_entity_code
22439 ,l_event_class_code
22440 )
22441 ,p_token_3 => 'OWNER'
22442 ,p_value_3 => xla_lookups_pkg.get_meaning(
22443 p_lookup_type => 'XLA_OWNER_TYPE'
22444 ,p_lookup_code => l_component_type_code
22445 )
22446 ,p_token_4 => 'PRODUCT_NAME'
22447 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
22448 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
22449 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
22450 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
22451 ,p_ae_header_id => NULL
22452 );
22453
22454 IF (C_LEVEL_ERROR>= g_log_level) THEN
22455 trace
22456 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
22457 ,p_level => C_LEVEL_ERROR
22458 ,p_module => l_log_module);
22459 END IF;
22460 END IF;
22461 END IF;
22462 --
22463 --
22464 ------------------------------------------------------------------------------------------------
22465 -- 4219869 Business Flow
22466 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
22467 -- Prior Entry. Currently, the following code is always generated.
22468 ------------------------------------------------------------------------------------------------
22469 XLA_AE_LINES_PKG.ValidateCurrentLine;
22470
22471 ------------------------------------------------------------------------------------
22472 -- 4219869 Business Flow
22473 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
22474 ------------------------------------------------------------------------------------
22475 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
22476
22477 ----------------------------------------------------------------------------------
22478 -- 4219869 Business Flow
22479 -- Update journal entry status -- Need to generate this within IF <condition>
22480 ----------------------------------------------------------------------------------
22481 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
22482 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
22483 ,p_balance_type_code => l_balance_type_code
22484 );
22485
22486 -------------------------------------------------------------------------------------------
22487 -- 4262811 - Generate the Accrual Reversal lines
22488 -------------------------------------------------------------------------------------------
22489 BEGIN
22490 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
22491 (g_array_event(p_event_id).array_value_num('header_index'));
22492 IF l_acc_rev_flag IS NULL THEN
22493 l_acc_rev_flag := 'N';
22494 END IF;
22495 EXCEPTION
22496 WHEN OTHERS THEN
22497 l_acc_rev_flag := 'N';
22498 END;
22499 --
22500 IF (l_acc_rev_flag = 'Y') THEN
22501
22502 -- 4645092 ------------------------------------------------------------------------------
22503 -- To allow MPA report to determine if it should generate report process
22504 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
22505 ------------------------------------------------------------------------------------------
22506
22507 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
22508 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
22509 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
22510 -- call ADRs
22511 -- Bug 4922099
22512 --
22513 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
22514 (NVL(l_actual_upg_option, 'N') = 'O') OR
22515 (NVL(l_enc_upg_option, 'N') = 'O')
22516 )
22517 THEN
22518 NULL;
22519 --
22520 --
22521
22522 l_ccid := AcctDerRule_4(
22523 p_application_id => p_application_id
22524 , p_ae_header_id => l_ae_header_id
22525 , p_source_4 => p_source_4
22526 , x_transaction_coa_id => l_adr_transaction_coa_id
22527 , x_accounting_coa_id => l_adr_accounting_coa_id
22528 , x_value_type_code => l_adr_value_type_code
22529 , p_side => 'NA'
22530 );
22531
22532 xla_ae_lines_pkg.set_ccid(
22533 p_code_combination_id => l_ccid
22534 , p_value_type_code => l_adr_value_type_code
22535 , p_transaction_coa_id => l_adr_transaction_coa_id
22536 , p_accounting_coa_id => l_adr_accounting_coa_id
22537 , p_adr_code => 'CST_DEFAULT'
22538 , p_adr_type_code => 'S'
22539 , p_component_type => l_component_type
22540 , p_component_code => l_component_code
22541 , p_component_type_code => l_component_type_code
22542 , p_component_appl_id => l_component_appl_id
22543 , p_amb_context_code => l_amb_context_code
22544 , p_side => 'NA'
22545 );
22546
22547
22548 --
22549 --
22550 END IF;
22551
22552 --
22553 -- Update the line information that should be overwritten
22554 --
22555 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
22556 p_header_num => 1);
22557 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
22558
22559 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
22560
22561 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
22562 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
22563 END IF;
22564
22565 --
22566 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
22567 --
22568 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
22569 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
22570 ELSE
22571 ---------------------------------------------------------------------------------------------------
22572 -- 4262811a Switch Sign
22573 ---------------------------------------------------------------------------------------------------
22574 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
22575 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
22576 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
22577 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
22578 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
22579 -- 5132302
22580 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
22581 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
22582
22583 END IF;
22584
22585 -- 4955764
22586 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
22587 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
22588
22589
22590 XLA_AE_LINES_PKG.ValidateCurrentLine;
22591 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
22592
22593 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
22594 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
22595 ,p_balance_type_code => l_balance_type_code);
22596
22597 END IF;
22598
22599 -----------------------------------------------------------------------------------------
22600 -- 4262811 Multiperiod Accounting
22601 -----------------------------------------------------------------------------------------
22602 -- No MPA option is assigned.
22603
22604
22605 END IF;
22606 END IF;
22607 --
22608
22609 --
22610 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
22611 trace
22612 (p_msg => 'END of AcctLineType_43'
22613 ,p_level => C_LEVEL_PROCEDURE
22614 ,p_module => l_log_module);
22615 END IF;
22616 --
22617 EXCEPTION
22618 WHEN xla_exceptions_pkg.application_exception THEN
22619 RAISE;
22620 WHEN OTHERS THEN
22621 xla_exceptions_pkg.raise_message
22622 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_43');
22623 END AcctLineType_43;
22624 --
22625
22626 ---------------------------------------
22627 --
22628 -- PRIVATE FUNCTION
22629 -- AcctLineType_44
22630 --
22631 ---------------------------------------
22632 PROCEDURE AcctLineType_44 (
22633 p_application_id IN NUMBER
22634 ,p_event_id IN NUMBER
22635 ,p_calculate_acctd_flag IN VARCHAR2
22636 ,p_calculate_g_l_flag IN VARCHAR2
22637 ,p_actual_flag IN OUT VARCHAR2
22638 ,p_balance_type_code OUT VARCHAR2
22639 ,p_gain_or_loss_ref OUT VARCHAR2
22640
22641 --Cost Management Default Account
22642 , p_source_4 IN NUMBER
22643 --DISTRIBUTION_IDENTIFIER
22644 , p_source_11 IN NUMBER
22645 --Distribution Type
22646 , p_source_12 IN VARCHAR2
22647 , p_source_12_meaning IN VARCHAR2
22648 --Entered Currency Code
22649 , p_source_15 IN VARCHAR2
22650 --Entered Amount
22651 , p_source_18 IN NUMBER
22652 --Currency Conversion Date
22653 , p_source_19 IN DATE
22654 --Currency Conversion Rate
22655 , p_source_20 IN NUMBER
22656 --Currency Conversion Type
22657 , p_source_21 IN VARCHAR2
22658 --Accounted Amount
22659 , p_source_22 IN NUMBER
22660 --Accounting Line Type
22661 , p_source_24 IN NUMBER
22662 )
22663 IS
22664
22665 l_component_type VARCHAR2(80);
22666 l_component_code VARCHAR2(30);
22667 l_component_type_code VARCHAR2(1);
22668 l_component_appl_id INTEGER;
22669 l_amb_context_code VARCHAR2(30);
22670 l_entity_code VARCHAR2(30);
22671 l_event_class_code VARCHAR2(30);
22672 l_ae_header_id NUMBER;
22673 l_event_type_code VARCHAR2(30);
22674 l_line_definition_code VARCHAR2(30);
22675 l_line_definition_owner_code VARCHAR2(1);
22676 --
22677 -- adr variables
22678 l_segment VARCHAR2(30);
22679 l_ccid NUMBER;
22680 l_adr_transaction_coa_id NUMBER;
22681 l_adr_accounting_coa_id NUMBER;
22682 l_adr_flexfield_segment_code VARCHAR2(30);
22683 l_adr_flex_value_set_id NUMBER;
22684 l_adr_value_type_code VARCHAR2(30);
22685 l_adr_value_combination_id NUMBER;
22686 l_adr_value_segment_code VARCHAR2(30);
22687
22688 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
22689 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
22690 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
22691 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
22692
22693 -- 4262811 Variables ------------------------------------------------------------------------------------------
22694 l_entered_amt_idx NUMBER;
22695 l_accted_amt_idx NUMBER;
22696 l_acc_rev_flag VARCHAR2(1);
22697 l_accrual_line_num NUMBER;
22698 l_tmp_amt NUMBER;
22699 l_acc_rev_natural_side_code VARCHAR2(1);
22700
22701 l_num_entries NUMBER;
22702 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
22703 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
22704 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
22705 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
22706 l_recog_line_1 NUMBER;
22707 l_recog_line_2 NUMBER;
22708
22709 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
22710 l_bflow_applied_to_amt NUMBER; -- 5132302
22711 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
22712
22713 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
22714
22715 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
22716 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
22717
22718 ---------------------------------------------------------------------------------------------------------------
22719
22720
22721 --
22722 -- bulk performance
22723 --
22724 l_balance_type_code VARCHAR2(1);
22725 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
22726 l_log_module VARCHAR2(240);
22727
22728 --
22729 -- Upgrade strategy
22730 --
22731 l_actual_upg_option VARCHAR2(1);
22732 l_enc_upg_option VARCHAR2(1);
22733
22734 --
22735 BEGIN
22736 --
22737 IF g_log_enabled THEN
22738 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_44';
22739 END IF;
22740 --
22741 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
22742
22743 trace
22744 (p_msg => 'BEGIN of AcctLineType_44'
22745 ,p_level => C_LEVEL_PROCEDURE
22746 ,p_module => l_log_module);
22747
22748 END IF;
22749 --
22750 l_component_type := 'AMB_JLT';
22751 l_component_code := 'COST_VARIANCE';
22752 l_component_type_code := 'S';
22753 l_component_appl_id := 707;
22754 l_amb_context_code := 'DEFAULT';
22755 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
22756 l_event_class_code := 'USER_DEFINE';
22757 l_event_type_code := 'UFOB_SHIP_RECIPIENT_SHIP_NO_TP';
22758 l_line_definition_owner_code := 'S';
22759 l_line_definition_code := 'USER_FOB_SHIP_RECP_SHIP_NO_TP';
22760 --
22761 l_balance_type_code := 'A';
22762 l_segment := NULL;
22763 l_ccid := NULL;
22764 l_adr_transaction_coa_id := NULL;
22765 l_adr_accounting_coa_id := NULL;
22766 l_adr_flexfield_segment_code := NULL;
22767 l_adr_flex_value_set_id := NULL;
22768 l_adr_value_type_code := NULL;
22769 l_adr_value_combination_id := NULL;
22770 l_adr_value_segment_code := NULL;
22771
22772 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
22773 l_bflow_class_code := ''; -- 4219869 Business Flow
22774 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
22775 l_budgetary_control_flag := 'N';
22776
22777 l_bflow_applied_to_amt_idx := NULL; -- 5132302
22778 l_bflow_applied_to_amt := NULL; -- 5132302
22779 l_entered_amt_idx := NULL; -- 4262811
22780 l_accted_amt_idx := NULL; -- 4262811
22781 l_acc_rev_flag := NULL; -- 4262811
22782 l_accrual_line_num := NULL; -- 4262811
22783 l_tmp_amt := NULL; -- 4262811
22784 --
22785
22786 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
22787 l_balance_type_code <> 'B' THEN
22788 IF NVL(p_source_24,9E125) = 13
22789 THEN
22790
22791 --
22792 XLA_AE_LINES_PKG.SetNewLine;
22793
22794 p_balance_type_code := l_balance_type_code;
22795 -- set the flag so later we will know whether the gain loss line needs to be created
22796
22797 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
22798 p_actual_flag :='A';
22799 END IF;
22800
22801 --
22802 -- bulk performance
22803 --
22804 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
22805 p_header_num => 0); -- 4262811
22806 --
22807 -- set accounting line options
22808 --
22809 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
22810 p_natural_side_code => 'D'
22811 , p_gain_or_loss_flag => 'N'
22812 , p_gl_transfer_mode_code => 'S'
22813 , p_acct_entry_type_code => 'A'
22814 , p_switch_side_flag => 'Y'
22815 , p_merge_duplicate_code => 'N'
22816 );
22817 --
22818 l_acc_rev_natural_side_code := 'C'; -- 4262811
22819 --
22820 --
22821 -- set accounting line type info
22822 --
22823 xla_ae_lines_pkg.SetAcctLineType
22824 (p_component_type => l_component_type
22825 ,p_event_type_code => l_event_type_code
22826 ,p_line_definition_owner_code => l_line_definition_owner_code
22827 ,p_line_definition_code => l_line_definition_code
22828 ,p_accounting_line_code => l_component_code
22829 ,p_accounting_line_type_code => l_component_type_code
22830 ,p_accounting_line_appl_id => l_component_appl_id
22831 ,p_amb_context_code => l_amb_context_code
22832 ,p_entity_code => l_entity_code
22833 ,p_event_class_code => l_event_class_code);
22834 --
22835 -- set accounting class
22836 --
22837 xla_ae_lines_pkg.SetAcctClass(
22838 p_accounting_class_code => 'COST_VARIANCE'
22839 , p_ae_header_id => l_ae_header_id
22840 );
22841
22842 --
22843 -- set rounding class
22844 --
22845 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
22846 'COST_VARIANCE';
22847
22848 --
22849 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
22850 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
22851 --
22852 -- bulk performance
22853 --
22854 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
22855
22856 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
22857 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
22858
22859 -- 4955764
22860 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
22861 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
22862
22863 -- 4458381 Public Sector Enh
22864
22865 --
22866 -- set accounting attributes for the line type
22867 --
22868 l_entered_amt_idx := 3;
22869 l_accted_amt_idx := 8;
22870 l_bflow_applied_to_amt_idx := NULL; -- 5132302
22871 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
22872 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
22873 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
22874 l_rec_acct_attrs.array_char_value(2) := p_source_12;
22875 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
22876 l_rec_acct_attrs.array_num_value(3) := p_source_18;
22877 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
22878 l_rec_acct_attrs.array_char_value(4) := p_source_15;
22879 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
22880 l_rec_acct_attrs.array_date_value(5) := p_source_19;
22881 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
22882 l_rec_acct_attrs.array_num_value(6) := p_source_20;
22883 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
22884 l_rec_acct_attrs.array_char_value(7) := p_source_21;
22885 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
22886 l_rec_acct_attrs.array_num_value(8) := p_source_22;
22887
22888 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
22889 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
22890
22891 ---------------------------------------------------------------------------------------------------------------
22892 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
22893 ---------------------------------------------------------------------------------------------------------------
22894 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
22895
22896 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
22897 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
22898
22899 IF xla_accounting_cache_pkg.GetValueChar
22900 (p_source_code => 'LEDGER_CATEGORY_CODE'
22901 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
22902 AND l_bflow_method_code = 'PRIOR_ENTRY'
22903 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
22904 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
22905 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
22906 )
22907 THEN
22908 xla_ae_lines_pkg.BflowUpgEntry
22909 (p_business_method_code => l_bflow_method_code
22910 ,p_business_class_code => l_bflow_class_code
22911 ,p_balance_type => l_balance_type_code);
22912 ELSE
22913 NULL;
22914 -- No business flow processing for business flow method of NONE.
22915 END IF;
22916
22917 --
22918 -- call analytical criteria
22919 --
22920
22921 --
22922 -- call description
22923 --
22924 -- No description or it is inherited.
22925 --
22926 -- call ADRs
22927 -- Bug 4922099
22928 --
22929 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
22930 (NVL(l_actual_upg_option, 'N') = 'O') OR
22931 (NVL(l_enc_upg_option, 'N') = 'O')
22932 )
22933 THEN
22934 NULL;
22935 --
22936 --
22937
22938 l_ccid := AcctDerRule_4(
22939 p_application_id => p_application_id
22940 , p_ae_header_id => l_ae_header_id
22941 , p_source_4 => p_source_4
22942 , x_transaction_coa_id => l_adr_transaction_coa_id
22943 , x_accounting_coa_id => l_adr_accounting_coa_id
22944 , x_value_type_code => l_adr_value_type_code
22945 , p_side => 'NA'
22946 );
22947
22948 xla_ae_lines_pkg.set_ccid(
22949 p_code_combination_id => l_ccid
22950 , p_value_type_code => l_adr_value_type_code
22951 , p_transaction_coa_id => l_adr_transaction_coa_id
22952 , p_accounting_coa_id => l_adr_accounting_coa_id
22953 , p_adr_code => 'CST_DEFAULT'
22954 , p_adr_type_code => 'S'
22955 , p_component_type => l_component_type
22956 , p_component_code => l_component_code
22957 , p_component_type_code => l_component_type_code
22958 , p_component_appl_id => l_component_appl_id
22959 , p_amb_context_code => l_amb_context_code
22960 , p_side => 'NA'
22961 );
22962
22963
22964 --
22965 --
22966 END IF;
22967 --
22968 -- Bug 4922099
22969 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
22970 (NVL(l_enc_upg_option, 'N') = 'O')
22971 ) AND
22972 (l_bflow_method_code = 'PRIOR_ENTRY')
22973 )
22974 THEN
22975 IF
22976 --
22977 1 = 2
22978 --
22979 THEN
22980 xla_accounting_err_pkg.build_message
22981 (p_appli_s_name => 'XLA'
22982 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
22983 ,p_token_1 => 'LINE_NUMBER'
22984 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
22985 ,p_token_2 => 'LINE_TYPE_NAME'
22986 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
22987 l_component_type
22988 ,l_component_code
22989 ,l_component_type_code
22990 ,l_component_appl_id
22991 ,l_amb_context_code
22992 ,l_entity_code
22993 ,l_event_class_code
22994 )
22995 ,p_token_3 => 'OWNER'
22996 ,p_value_3 => xla_lookups_pkg.get_meaning(
22997 p_lookup_type => 'XLA_OWNER_TYPE'
22998 ,p_lookup_code => l_component_type_code
22999 )
23000 ,p_token_4 => 'PRODUCT_NAME'
23001 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
23002 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
23003 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
23004 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
23005 ,p_ae_header_id => NULL
23006 );
23007
23008 IF (C_LEVEL_ERROR>= g_log_level) THEN
23009 trace
23010 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
23011 ,p_level => C_LEVEL_ERROR
23012 ,p_module => l_log_module);
23013 END IF;
23014 END IF;
23015 END IF;
23016 --
23017 --
23018 ------------------------------------------------------------------------------------------------
23019 -- 4219869 Business Flow
23020 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
23021 -- Prior Entry. Currently, the following code is always generated.
23022 ------------------------------------------------------------------------------------------------
23023 XLA_AE_LINES_PKG.ValidateCurrentLine;
23024
23025 ------------------------------------------------------------------------------------
23026 -- 4219869 Business Flow
23027 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
23028 ------------------------------------------------------------------------------------
23029 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
23030
23031 ----------------------------------------------------------------------------------
23032 -- 4219869 Business Flow
23033 -- Update journal entry status -- Need to generate this within IF <condition>
23034 ----------------------------------------------------------------------------------
23035 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
23036 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
23037 ,p_balance_type_code => l_balance_type_code
23038 );
23039
23040 -------------------------------------------------------------------------------------------
23041 -- 4262811 - Generate the Accrual Reversal lines
23042 -------------------------------------------------------------------------------------------
23043 BEGIN
23044 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
23045 (g_array_event(p_event_id).array_value_num('header_index'));
23046 IF l_acc_rev_flag IS NULL THEN
23047 l_acc_rev_flag := 'N';
23048 END IF;
23049 EXCEPTION
23050 WHEN OTHERS THEN
23051 l_acc_rev_flag := 'N';
23052 END;
23053 --
23054 IF (l_acc_rev_flag = 'Y') THEN
23055
23056 -- 4645092 ------------------------------------------------------------------------------
23057 -- To allow MPA report to determine if it should generate report process
23058 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
23059 ------------------------------------------------------------------------------------------
23060
23061 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
23062 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
23063 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
23064 -- call ADRs
23065 -- Bug 4922099
23066 --
23067 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
23068 (NVL(l_actual_upg_option, 'N') = 'O') OR
23069 (NVL(l_enc_upg_option, 'N') = 'O')
23070 )
23071 THEN
23072 NULL;
23073 --
23074 --
23075
23076 l_ccid := AcctDerRule_4(
23077 p_application_id => p_application_id
23078 , p_ae_header_id => l_ae_header_id
23079 , p_source_4 => p_source_4
23080 , x_transaction_coa_id => l_adr_transaction_coa_id
23081 , x_accounting_coa_id => l_adr_accounting_coa_id
23082 , x_value_type_code => l_adr_value_type_code
23083 , p_side => 'NA'
23084 );
23085
23086 xla_ae_lines_pkg.set_ccid(
23087 p_code_combination_id => l_ccid
23088 , p_value_type_code => l_adr_value_type_code
23089 , p_transaction_coa_id => l_adr_transaction_coa_id
23090 , p_accounting_coa_id => l_adr_accounting_coa_id
23091 , p_adr_code => 'CST_DEFAULT'
23092 , p_adr_type_code => 'S'
23093 , p_component_type => l_component_type
23094 , p_component_code => l_component_code
23095 , p_component_type_code => l_component_type_code
23096 , p_component_appl_id => l_component_appl_id
23097 , p_amb_context_code => l_amb_context_code
23098 , p_side => 'NA'
23099 );
23100
23101
23102 --
23103 --
23104 END IF;
23105
23106 --
23107 -- Update the line information that should be overwritten
23108 --
23109 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
23110 p_header_num => 1);
23111 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
23112
23113 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
23114
23115 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
23116 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
23117 END IF;
23118
23119 --
23120 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
23121 --
23122 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
23123 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
23124 ELSE
23125 ---------------------------------------------------------------------------------------------------
23126 -- 4262811a Switch Sign
23127 ---------------------------------------------------------------------------------------------------
23128 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
23129 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
23130 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
23131 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
23132 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
23133 -- 5132302
23134 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
23135 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
23136
23137 END IF;
23138
23139 -- 4955764
23140 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
23141 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
23142
23143
23144 XLA_AE_LINES_PKG.ValidateCurrentLine;
23145 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
23146
23147 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
23148 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
23149 ,p_balance_type_code => l_balance_type_code);
23150
23151 END IF;
23152
23153 -----------------------------------------------------------------------------------------
23154 -- 4262811 Multiperiod Accounting
23155 -----------------------------------------------------------------------------------------
23156 -- No MPA option is assigned.
23157
23158
23159 END IF;
23160 END IF;
23161 --
23162
23163 --
23164 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
23165 trace
23166 (p_msg => 'END of AcctLineType_44'
23167 ,p_level => C_LEVEL_PROCEDURE
23168 ,p_module => l_log_module);
23169 END IF;
23170 --
23171 EXCEPTION
23172 WHEN xla_exceptions_pkg.application_exception THEN
23173 RAISE;
23174 WHEN OTHERS THEN
23175 xla_exceptions_pkg.raise_message
23176 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_44');
23177 END AcctLineType_44;
23178 --
23179
23180 ---------------------------------------
23181 --
23182 -- PRIVATE FUNCTION
23183 -- AcctLineType_45
23184 --
23185 ---------------------------------------
23186 PROCEDURE AcctLineType_45 (
23187 p_application_id IN NUMBER
23188 ,p_event_id IN NUMBER
23189 ,p_calculate_acctd_flag IN VARCHAR2
23190 ,p_calculate_g_l_flag IN VARCHAR2
23191 ,p_actual_flag IN OUT VARCHAR2
23192 ,p_balance_type_code OUT VARCHAR2
23193 ,p_gain_or_loss_ref OUT VARCHAR2
23194
23195 --Cost Management Default Account
23196 , p_source_4 IN NUMBER
23197 --DISTRIBUTION_IDENTIFIER
23198 , p_source_11 IN NUMBER
23199 --Distribution Type
23200 , p_source_12 IN VARCHAR2
23201 , p_source_12_meaning IN VARCHAR2
23202 --Entered Currency Code
23203 , p_source_15 IN VARCHAR2
23204 --Entered Amount
23205 , p_source_18 IN NUMBER
23206 --Currency Conversion Date
23207 , p_source_19 IN DATE
23208 --Currency Conversion Rate
23209 , p_source_20 IN NUMBER
23210 --Currency Conversion Type
23211 , p_source_21 IN VARCHAR2
23212 --Accounted Amount
23213 , p_source_22 IN NUMBER
23214 --Accounting Line Type
23215 , p_source_24 IN NUMBER
23216 )
23217 IS
23218
23219 l_component_type VARCHAR2(80);
23220 l_component_code VARCHAR2(30);
23221 l_component_type_code VARCHAR2(1);
23222 l_component_appl_id INTEGER;
23223 l_amb_context_code VARCHAR2(30);
23224 l_entity_code VARCHAR2(30);
23225 l_event_class_code VARCHAR2(30);
23226 l_ae_header_id NUMBER;
23227 l_event_type_code VARCHAR2(30);
23228 l_line_definition_code VARCHAR2(30);
23229 l_line_definition_owner_code VARCHAR2(1);
23230 --
23231 -- adr variables
23232 l_segment VARCHAR2(30);
23233 l_ccid NUMBER;
23234 l_adr_transaction_coa_id NUMBER;
23235 l_adr_accounting_coa_id NUMBER;
23236 l_adr_flexfield_segment_code VARCHAR2(30);
23237 l_adr_flex_value_set_id NUMBER;
23238 l_adr_value_type_code VARCHAR2(30);
23239 l_adr_value_combination_id NUMBER;
23240 l_adr_value_segment_code VARCHAR2(30);
23241
23242 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
23243 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
23244 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
23245 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
23246
23247 -- 4262811 Variables ------------------------------------------------------------------------------------------
23248 l_entered_amt_idx NUMBER;
23249 l_accted_amt_idx NUMBER;
23250 l_acc_rev_flag VARCHAR2(1);
23251 l_accrual_line_num NUMBER;
23252 l_tmp_amt NUMBER;
23253 l_acc_rev_natural_side_code VARCHAR2(1);
23254
23255 l_num_entries NUMBER;
23256 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
23257 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
23258 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
23259 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
23260 l_recog_line_1 NUMBER;
23261 l_recog_line_2 NUMBER;
23262
23263 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
23264 l_bflow_applied_to_amt NUMBER; -- 5132302
23265 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
23266
23267 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
23268
23269 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
23270 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
23271
23272 ---------------------------------------------------------------------------------------------------------------
23273
23274
23275 --
23276 -- bulk performance
23277 --
23278 l_balance_type_code VARCHAR2(1);
23279 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
23280 l_log_module VARCHAR2(240);
23281
23282 --
23283 -- Upgrade strategy
23284 --
23285 l_actual_upg_option VARCHAR2(1);
23286 l_enc_upg_option VARCHAR2(1);
23287
23288 --
23289 BEGIN
23290 --
23291 IF g_log_enabled THEN
23292 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_45';
23293 END IF;
23294 --
23295 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
23296
23297 trace
23298 (p_msg => 'BEGIN of AcctLineType_45'
23299 ,p_level => C_LEVEL_PROCEDURE
23300 ,p_module => l_log_module);
23301
23302 END IF;
23303 --
23304 l_component_type := 'AMB_JLT';
23305 l_component_code := 'DEFERRED_COGS';
23306 l_component_type_code := 'S';
23307 l_component_appl_id := 707;
23308 l_amb_context_code := 'DEFAULT';
23309 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
23310 l_event_class_code := 'SALES_ORDER';
23311 l_event_type_code := 'SALES_ORDER_ALL';
23312 l_line_definition_owner_code := 'S';
23313 l_line_definition_code := 'SALES_ORDER';
23314 --
23315 l_balance_type_code := 'A';
23316 l_segment := NULL;
23317 l_ccid := NULL;
23318 l_adr_transaction_coa_id := NULL;
23319 l_adr_accounting_coa_id := NULL;
23320 l_adr_flexfield_segment_code := NULL;
23321 l_adr_flex_value_set_id := NULL;
23322 l_adr_value_type_code := NULL;
23323 l_adr_value_combination_id := NULL;
23324 l_adr_value_segment_code := NULL;
23325
23326 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
23327 l_bflow_class_code := ''; -- 4219869 Business Flow
23328 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
23329 l_budgetary_control_flag := 'N';
23330
23331 l_bflow_applied_to_amt_idx := NULL; -- 5132302
23332 l_bflow_applied_to_amt := NULL; -- 5132302
23333 l_entered_amt_idx := NULL; -- 4262811
23334 l_accted_amt_idx := NULL; -- 4262811
23335 l_acc_rev_flag := NULL; -- 4262811
23336 l_accrual_line_num := NULL; -- 4262811
23337 l_tmp_amt := NULL; -- 4262811
23338 --
23339
23340 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
23341 l_balance_type_code <> 'B' THEN
23342 IF NVL(p_source_24,9E125) = 36
23343 THEN
23344
23345 --
23346 XLA_AE_LINES_PKG.SetNewLine;
23347
23348 p_balance_type_code := l_balance_type_code;
23349 -- set the flag so later we will know whether the gain loss line needs to be created
23350
23351 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
23352 p_actual_flag :='A';
23353 END IF;
23354
23355 --
23356 -- bulk performance
23357 --
23358 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
23359 p_header_num => 0); -- 4262811
23360 --
23361 -- set accounting line options
23362 --
23363 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
23364 p_natural_side_code => 'D'
23365 , p_gain_or_loss_flag => 'N'
23366 , p_gl_transfer_mode_code => 'S'
23367 , p_acct_entry_type_code => 'A'
23368 , p_switch_side_flag => 'Y'
23369 , p_merge_duplicate_code => 'N'
23370 );
23371 --
23372 l_acc_rev_natural_side_code := 'C'; -- 4262811
23373 --
23374 --
23375 -- set accounting line type info
23376 --
23377 xla_ae_lines_pkg.SetAcctLineType
23378 (p_component_type => l_component_type
23379 ,p_event_type_code => l_event_type_code
23380 ,p_line_definition_owner_code => l_line_definition_owner_code
23381 ,p_line_definition_code => l_line_definition_code
23382 ,p_accounting_line_code => l_component_code
23383 ,p_accounting_line_type_code => l_component_type_code
23384 ,p_accounting_line_appl_id => l_component_appl_id
23385 ,p_amb_context_code => l_amb_context_code
23386 ,p_entity_code => l_entity_code
23387 ,p_event_class_code => l_event_class_code);
23388 --
23389 -- set accounting class
23390 --
23391 xla_ae_lines_pkg.SetAcctClass(
23392 p_accounting_class_code => 'DEFERRED_COGS'
23393 , p_ae_header_id => l_ae_header_id
23394 );
23395
23396 --
23397 -- set rounding class
23398 --
23399 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
23400 'DEFERRED_COGS';
23401
23402 --
23403 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
23404 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
23405 --
23406 -- bulk performance
23407 --
23408 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
23409
23410 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
23411 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
23412
23413 -- 4955764
23414 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
23415 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
23416
23417 -- 4458381 Public Sector Enh
23418
23419 --
23420 -- set accounting attributes for the line type
23421 --
23422 l_entered_amt_idx := 3;
23423 l_accted_amt_idx := 8;
23424 l_bflow_applied_to_amt_idx := NULL; -- 5132302
23425 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
23426 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
23427 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
23428 l_rec_acct_attrs.array_char_value(2) := p_source_12;
23429 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
23430 l_rec_acct_attrs.array_num_value(3) := p_source_18;
23431 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
23432 l_rec_acct_attrs.array_char_value(4) := p_source_15;
23433 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
23434 l_rec_acct_attrs.array_date_value(5) := p_source_19;
23435 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
23436 l_rec_acct_attrs.array_num_value(6) := p_source_20;
23437 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
23438 l_rec_acct_attrs.array_char_value(7) := p_source_21;
23439 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
23440 l_rec_acct_attrs.array_num_value(8) := p_source_22;
23441
23442 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
23443 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
23444
23445 ---------------------------------------------------------------------------------------------------------------
23446 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
23447 ---------------------------------------------------------------------------------------------------------------
23448 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
23449
23450 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
23451 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
23452
23453 IF xla_accounting_cache_pkg.GetValueChar
23454 (p_source_code => 'LEDGER_CATEGORY_CODE'
23455 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
23456 AND l_bflow_method_code = 'PRIOR_ENTRY'
23457 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
23458 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
23459 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
23460 )
23461 THEN
23462 xla_ae_lines_pkg.BflowUpgEntry
23463 (p_business_method_code => l_bflow_method_code
23464 ,p_business_class_code => l_bflow_class_code
23465 ,p_balance_type => l_balance_type_code);
23466 ELSE
23467 NULL;
23468 -- No business flow processing for business flow method of NONE.
23469 END IF;
23470
23471 --
23472 -- call analytical criteria
23473 --
23474
23475 --
23476 -- call description
23477 --
23478 -- No description or it is inherited.
23479 --
23480 -- call ADRs
23481 -- Bug 4922099
23482 --
23483 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
23484 (NVL(l_actual_upg_option, 'N') = 'O') OR
23485 (NVL(l_enc_upg_option, 'N') = 'O')
23486 )
23487 THEN
23488 NULL;
23489 --
23490 --
23491
23492 l_ccid := AcctDerRule_4(
23493 p_application_id => p_application_id
23494 , p_ae_header_id => l_ae_header_id
23495 , p_source_4 => p_source_4
23496 , x_transaction_coa_id => l_adr_transaction_coa_id
23497 , x_accounting_coa_id => l_adr_accounting_coa_id
23498 , x_value_type_code => l_adr_value_type_code
23499 , p_side => 'NA'
23500 );
23501
23502 xla_ae_lines_pkg.set_ccid(
23503 p_code_combination_id => l_ccid
23504 , p_value_type_code => l_adr_value_type_code
23505 , p_transaction_coa_id => l_adr_transaction_coa_id
23506 , p_accounting_coa_id => l_adr_accounting_coa_id
23507 , p_adr_code => 'CST_DEFAULT'
23508 , p_adr_type_code => 'S'
23509 , p_component_type => l_component_type
23510 , p_component_code => l_component_code
23511 , p_component_type_code => l_component_type_code
23512 , p_component_appl_id => l_component_appl_id
23513 , p_amb_context_code => l_amb_context_code
23514 , p_side => 'NA'
23515 );
23516
23517
23518 --
23519 --
23520 END IF;
23521 --
23522 -- Bug 4922099
23523 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
23524 (NVL(l_enc_upg_option, 'N') = 'O')
23525 ) AND
23526 (l_bflow_method_code = 'PRIOR_ENTRY')
23527 )
23528 THEN
23529 IF
23530 --
23531 1 = 2
23532 --
23533 THEN
23534 xla_accounting_err_pkg.build_message
23535 (p_appli_s_name => 'XLA'
23536 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
23537 ,p_token_1 => 'LINE_NUMBER'
23538 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
23539 ,p_token_2 => 'LINE_TYPE_NAME'
23540 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
23541 l_component_type
23542 ,l_component_code
23543 ,l_component_type_code
23544 ,l_component_appl_id
23545 ,l_amb_context_code
23546 ,l_entity_code
23547 ,l_event_class_code
23548 )
23549 ,p_token_3 => 'OWNER'
23550 ,p_value_3 => xla_lookups_pkg.get_meaning(
23551 p_lookup_type => 'XLA_OWNER_TYPE'
23552 ,p_lookup_code => l_component_type_code
23553 )
23554 ,p_token_4 => 'PRODUCT_NAME'
23555 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
23556 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
23557 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
23558 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
23559 ,p_ae_header_id => NULL
23560 );
23561
23562 IF (C_LEVEL_ERROR>= g_log_level) THEN
23563 trace
23564 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
23565 ,p_level => C_LEVEL_ERROR
23566 ,p_module => l_log_module);
23567 END IF;
23568 END IF;
23569 END IF;
23570 --
23571 --
23572 ------------------------------------------------------------------------------------------------
23573 -- 4219869 Business Flow
23574 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
23575 -- Prior Entry. Currently, the following code is always generated.
23576 ------------------------------------------------------------------------------------------------
23577 XLA_AE_LINES_PKG.ValidateCurrentLine;
23578
23579 ------------------------------------------------------------------------------------
23580 -- 4219869 Business Flow
23581 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
23582 ------------------------------------------------------------------------------------
23583 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
23584
23585 ----------------------------------------------------------------------------------
23586 -- 4219869 Business Flow
23587 -- Update journal entry status -- Need to generate this within IF <condition>
23588 ----------------------------------------------------------------------------------
23589 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
23590 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
23591 ,p_balance_type_code => l_balance_type_code
23592 );
23593
23594 -------------------------------------------------------------------------------------------
23595 -- 4262811 - Generate the Accrual Reversal lines
23596 -------------------------------------------------------------------------------------------
23597 BEGIN
23598 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
23599 (g_array_event(p_event_id).array_value_num('header_index'));
23600 IF l_acc_rev_flag IS NULL THEN
23601 l_acc_rev_flag := 'N';
23602 END IF;
23603 EXCEPTION
23604 WHEN OTHERS THEN
23605 l_acc_rev_flag := 'N';
23606 END;
23607 --
23608 IF (l_acc_rev_flag = 'Y') THEN
23609
23610 -- 4645092 ------------------------------------------------------------------------------
23611 -- To allow MPA report to determine if it should generate report process
23612 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
23613 ------------------------------------------------------------------------------------------
23614
23615 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
23616 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
23617 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
23618 -- call ADRs
23619 -- Bug 4922099
23620 --
23621 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
23622 (NVL(l_actual_upg_option, 'N') = 'O') OR
23623 (NVL(l_enc_upg_option, 'N') = 'O')
23624 )
23625 THEN
23626 NULL;
23627 --
23628 --
23629
23630 l_ccid := AcctDerRule_4(
23631 p_application_id => p_application_id
23632 , p_ae_header_id => l_ae_header_id
23633 , p_source_4 => p_source_4
23634 , x_transaction_coa_id => l_adr_transaction_coa_id
23635 , x_accounting_coa_id => l_adr_accounting_coa_id
23636 , x_value_type_code => l_adr_value_type_code
23637 , p_side => 'NA'
23638 );
23639
23640 xla_ae_lines_pkg.set_ccid(
23641 p_code_combination_id => l_ccid
23642 , p_value_type_code => l_adr_value_type_code
23643 , p_transaction_coa_id => l_adr_transaction_coa_id
23644 , p_accounting_coa_id => l_adr_accounting_coa_id
23645 , p_adr_code => 'CST_DEFAULT'
23646 , p_adr_type_code => 'S'
23647 , p_component_type => l_component_type
23648 , p_component_code => l_component_code
23649 , p_component_type_code => l_component_type_code
23650 , p_component_appl_id => l_component_appl_id
23651 , p_amb_context_code => l_amb_context_code
23652 , p_side => 'NA'
23653 );
23654
23655
23656 --
23657 --
23658 END IF;
23659
23660 --
23661 -- Update the line information that should be overwritten
23662 --
23663 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
23664 p_header_num => 1);
23665 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
23666
23667 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
23668
23669 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
23670 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
23671 END IF;
23672
23673 --
23674 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
23675 --
23676 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
23677 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
23678 ELSE
23679 ---------------------------------------------------------------------------------------------------
23680 -- 4262811a Switch Sign
23681 ---------------------------------------------------------------------------------------------------
23682 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
23683 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
23684 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
23685 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
23686 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
23687 -- 5132302
23688 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
23689 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
23690
23691 END IF;
23692
23693 -- 4955764
23694 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
23695 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
23696
23697
23698 XLA_AE_LINES_PKG.ValidateCurrentLine;
23699 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
23700
23701 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
23702 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
23703 ,p_balance_type_code => l_balance_type_code);
23704
23705 END IF;
23706
23707 -----------------------------------------------------------------------------------------
23708 -- 4262811 Multiperiod Accounting
23709 -----------------------------------------------------------------------------------------
23710 -- No MPA option is assigned.
23711
23712
23713 END IF;
23714 END IF;
23715 --
23716
23717 --
23718 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
23719 trace
23720 (p_msg => 'END of AcctLineType_45'
23721 ,p_level => C_LEVEL_PROCEDURE
23722 ,p_module => l_log_module);
23723 END IF;
23724 --
23725 EXCEPTION
23726 WHEN xla_exceptions_pkg.application_exception THEN
23727 RAISE;
23728 WHEN OTHERS THEN
23729 xla_exceptions_pkg.raise_message
23730 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_45');
23731 END AcctLineType_45;
23732 --
23733
23734 ---------------------------------------
23735 --
23736 -- PRIVATE FUNCTION
23737 -- AcctLineType_46
23738 --
23739 ---------------------------------------
23740 PROCEDURE AcctLineType_46 (
23741 p_application_id IN NUMBER
23742 ,p_event_id IN NUMBER
23743 ,p_calculate_acctd_flag IN VARCHAR2
23744 ,p_calculate_g_l_flag IN VARCHAR2
23745 ,p_actual_flag IN OUT VARCHAR2
23746 ,p_balance_type_code OUT VARCHAR2
23747 ,p_gain_or_loss_ref OUT VARCHAR2
23748
23749 --Cost Management Default Account
23750 , p_source_4 IN NUMBER
23751 --DISTRIBUTION_IDENTIFIER
23752 , p_source_11 IN NUMBER
23753 --Distribution Type
23754 , p_source_12 IN VARCHAR2
23755 , p_source_12_meaning IN VARCHAR2
23756 --Entered Currency Code
23757 , p_source_15 IN VARCHAR2
23758 --Entered Amount
23759 , p_source_18 IN NUMBER
23760 --Currency Conversion Date
23761 , p_source_19 IN DATE
23762 --Currency Conversion Rate
23763 , p_source_20 IN NUMBER
23764 --Currency Conversion Type
23765 , p_source_21 IN VARCHAR2
23766 --Accounted Amount
23767 , p_source_22 IN NUMBER
23768 --Accounting Line Type
23769 , p_source_24 IN NUMBER
23770 )
23771 IS
23772
23773 l_component_type VARCHAR2(80);
23774 l_component_code VARCHAR2(30);
23775 l_component_type_code VARCHAR2(1);
23776 l_component_appl_id INTEGER;
23777 l_amb_context_code VARCHAR2(30);
23778 l_entity_code VARCHAR2(30);
23779 l_event_class_code VARCHAR2(30);
23780 l_ae_header_id NUMBER;
23781 l_event_type_code VARCHAR2(30);
23782 l_line_definition_code VARCHAR2(30);
23783 l_line_definition_owner_code VARCHAR2(1);
23784 --
23785 -- adr variables
23786 l_segment VARCHAR2(30);
23787 l_ccid NUMBER;
23788 l_adr_transaction_coa_id NUMBER;
23789 l_adr_accounting_coa_id NUMBER;
23790 l_adr_flexfield_segment_code VARCHAR2(30);
23791 l_adr_flex_value_set_id NUMBER;
23792 l_adr_value_type_code VARCHAR2(30);
23793 l_adr_value_combination_id NUMBER;
23794 l_adr_value_segment_code VARCHAR2(30);
23795
23796 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
23797 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
23798 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
23799 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
23800
23801 -- 4262811 Variables ------------------------------------------------------------------------------------------
23802 l_entered_amt_idx NUMBER;
23803 l_accted_amt_idx NUMBER;
23804 l_acc_rev_flag VARCHAR2(1);
23805 l_accrual_line_num NUMBER;
23806 l_tmp_amt NUMBER;
23807 l_acc_rev_natural_side_code VARCHAR2(1);
23808
23809 l_num_entries NUMBER;
23810 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
23811 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
23812 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
23813 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
23814 l_recog_line_1 NUMBER;
23815 l_recog_line_2 NUMBER;
23816
23817 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
23818 l_bflow_applied_to_amt NUMBER; -- 5132302
23819 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
23820
23821 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
23822
23823 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
23824 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
23825
23826 ---------------------------------------------------------------------------------------------------------------
23827
23828
23829 --
23830 -- bulk performance
23831 --
23832 l_balance_type_code VARCHAR2(1);
23833 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
23834 l_log_module VARCHAR2(240);
23835
23836 --
23837 -- Upgrade strategy
23838 --
23839 l_actual_upg_option VARCHAR2(1);
23840 l_enc_upg_option VARCHAR2(1);
23841
23842 --
23843 BEGIN
23844 --
23845 IF g_log_enabled THEN
23846 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_46';
23847 END IF;
23848 --
23849 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
23850
23851 trace
23852 (p_msg => 'BEGIN of AcctLineType_46'
23853 ,p_level => C_LEVEL_PROCEDURE
23854 ,p_module => l_log_module);
23855
23856 END IF;
23857 --
23858 l_component_type := 'AMB_JLT';
23859 l_component_code := 'EST_SCRAP_ABSORPTION';
23860 l_component_type_code := 'S';
23861 l_component_appl_id := 707;
23862 l_amb_context_code := 'DEFAULT';
23863 l_entity_code := 'WIP_ACCOUNTING_EVENTS';
23864 l_event_class_code := 'ABSORPTION';
23865 l_event_type_code := 'ABSORPTION_ALL';
23866 l_line_definition_owner_code := 'S';
23867 l_line_definition_code := 'ABSORPTION';
23868 --
23869 l_balance_type_code := 'A';
23870 l_segment := NULL;
23871 l_ccid := NULL;
23872 l_adr_transaction_coa_id := NULL;
23873 l_adr_accounting_coa_id := NULL;
23874 l_adr_flexfield_segment_code := NULL;
23875 l_adr_flex_value_set_id := NULL;
23876 l_adr_value_type_code := NULL;
23877 l_adr_value_combination_id := NULL;
23878 l_adr_value_segment_code := NULL;
23879
23880 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
23881 l_bflow_class_code := ''; -- 4219869 Business Flow
23882 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
23883 l_budgetary_control_flag := 'N';
23884
23885 l_bflow_applied_to_amt_idx := NULL; -- 5132302
23886 l_bflow_applied_to_amt := NULL; -- 5132302
23887 l_entered_amt_idx := NULL; -- 4262811
23888 l_accted_amt_idx := NULL; -- 4262811
23889 l_acc_rev_flag := NULL; -- 4262811
23890 l_accrual_line_num := NULL; -- 4262811
23891 l_tmp_amt := NULL; -- 4262811
23892 --
23893
23894 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
23895 l_balance_type_code <> 'B' THEN
23896 IF NVL(p_source_24,9E125) = 29
23897 THEN
23898
23899 --
23900 XLA_AE_LINES_PKG.SetNewLine;
23901
23902 p_balance_type_code := l_balance_type_code;
23903 -- set the flag so later we will know whether the gain loss line needs to be created
23904
23905 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
23906 p_actual_flag :='A';
23907 END IF;
23908
23909 --
23910 -- bulk performance
23911 --
23912 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
23913 p_header_num => 0); -- 4262811
23914 --
23915 -- set accounting line options
23916 --
23917 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
23918 p_natural_side_code => 'D'
23919 , p_gain_or_loss_flag => 'N'
23920 , p_gl_transfer_mode_code => 'S'
23921 , p_acct_entry_type_code => 'A'
23922 , p_switch_side_flag => 'Y'
23923 , p_merge_duplicate_code => 'N'
23924 );
23925 --
23926 l_acc_rev_natural_side_code := 'C'; -- 4262811
23927 --
23928 --
23929 -- set accounting line type info
23930 --
23931 xla_ae_lines_pkg.SetAcctLineType
23932 (p_component_type => l_component_type
23933 ,p_event_type_code => l_event_type_code
23934 ,p_line_definition_owner_code => l_line_definition_owner_code
23935 ,p_line_definition_code => l_line_definition_code
23936 ,p_accounting_line_code => l_component_code
23937 ,p_accounting_line_type_code => l_component_type_code
23938 ,p_accounting_line_appl_id => l_component_appl_id
23939 ,p_amb_context_code => l_amb_context_code
23940 ,p_entity_code => l_entity_code
23941 ,p_event_class_code => l_event_class_code);
23942 --
23943 -- set accounting class
23944 --
23945 xla_ae_lines_pkg.SetAcctClass(
23946 p_accounting_class_code => 'ESTIMATED_SCRAP_ABSORPTION'
23947 , p_ae_header_id => l_ae_header_id
23948 );
23949
23950 --
23951 -- set rounding class
23952 --
23953 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
23954 'ESTIMATED_SCRAP_ABSORPTION';
23955
23956 --
23957 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
23958 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
23959 --
23960 -- bulk performance
23961 --
23962 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
23963
23964 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
23965 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
23966
23967 -- 4955764
23968 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
23969 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
23970
23971 -- 4458381 Public Sector Enh
23972
23973 --
23974 -- set accounting attributes for the line type
23975 --
23976 l_entered_amt_idx := 3;
23977 l_accted_amt_idx := 8;
23978 l_bflow_applied_to_amt_idx := NULL; -- 5132302
23979 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
23980 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
23981 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
23982 l_rec_acct_attrs.array_char_value(2) := p_source_12;
23983 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
23984 l_rec_acct_attrs.array_num_value(3) := p_source_18;
23985 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
23986 l_rec_acct_attrs.array_char_value(4) := p_source_15;
23987 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
23988 l_rec_acct_attrs.array_date_value(5) := p_source_19;
23989 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
23990 l_rec_acct_attrs.array_num_value(6) := p_source_20;
23991 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
23992 l_rec_acct_attrs.array_char_value(7) := p_source_21;
23993 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
23994 l_rec_acct_attrs.array_num_value(8) := p_source_22;
23995
23996 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
23997 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
23998
23999 ---------------------------------------------------------------------------------------------------------------
24000 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
24001 ---------------------------------------------------------------------------------------------------------------
24002 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
24003
24004 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
24005 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
24006
24007 IF xla_accounting_cache_pkg.GetValueChar
24008 (p_source_code => 'LEDGER_CATEGORY_CODE'
24009 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
24010 AND l_bflow_method_code = 'PRIOR_ENTRY'
24011 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
24012 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
24013 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
24014 )
24015 THEN
24016 xla_ae_lines_pkg.BflowUpgEntry
24017 (p_business_method_code => l_bflow_method_code
24018 ,p_business_class_code => l_bflow_class_code
24019 ,p_balance_type => l_balance_type_code);
24020 ELSE
24021 NULL;
24022 -- No business flow processing for business flow method of NONE.
24023 END IF;
24024
24025 --
24026 -- call analytical criteria
24027 --
24028
24029 --
24030 -- call description
24031 --
24032 -- No description or it is inherited.
24033 --
24034 -- call ADRs
24035 -- Bug 4922099
24036 --
24037 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
24038 (NVL(l_actual_upg_option, 'N') = 'O') OR
24039 (NVL(l_enc_upg_option, 'N') = 'O')
24040 )
24041 THEN
24042 NULL;
24043 --
24044 --
24045
24046 l_ccid := AcctDerRule_4(
24047 p_application_id => p_application_id
24048 , p_ae_header_id => l_ae_header_id
24049 , p_source_4 => p_source_4
24050 , x_transaction_coa_id => l_adr_transaction_coa_id
24051 , x_accounting_coa_id => l_adr_accounting_coa_id
24052 , x_value_type_code => l_adr_value_type_code
24053 , p_side => 'NA'
24054 );
24055
24056 xla_ae_lines_pkg.set_ccid(
24057 p_code_combination_id => l_ccid
24058 , p_value_type_code => l_adr_value_type_code
24059 , p_transaction_coa_id => l_adr_transaction_coa_id
24060 , p_accounting_coa_id => l_adr_accounting_coa_id
24061 , p_adr_code => 'CST_DEFAULT'
24062 , p_adr_type_code => 'S'
24063 , p_component_type => l_component_type
24064 , p_component_code => l_component_code
24065 , p_component_type_code => l_component_type_code
24066 , p_component_appl_id => l_component_appl_id
24067 , p_amb_context_code => l_amb_context_code
24068 , p_side => 'NA'
24069 );
24070
24071
24072 --
24073 --
24074 END IF;
24075 --
24076 -- Bug 4922099
24077 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
24078 (NVL(l_enc_upg_option, 'N') = 'O')
24079 ) AND
24080 (l_bflow_method_code = 'PRIOR_ENTRY')
24081 )
24082 THEN
24083 IF
24084 --
24085 1 = 2
24086 --
24087 THEN
24088 xla_accounting_err_pkg.build_message
24089 (p_appli_s_name => 'XLA'
24090 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
24091 ,p_token_1 => 'LINE_NUMBER'
24092 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
24093 ,p_token_2 => 'LINE_TYPE_NAME'
24094 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
24095 l_component_type
24096 ,l_component_code
24097 ,l_component_type_code
24098 ,l_component_appl_id
24099 ,l_amb_context_code
24100 ,l_entity_code
24101 ,l_event_class_code
24102 )
24103 ,p_token_3 => 'OWNER'
24104 ,p_value_3 => xla_lookups_pkg.get_meaning(
24105 p_lookup_type => 'XLA_OWNER_TYPE'
24106 ,p_lookup_code => l_component_type_code
24107 )
24108 ,p_token_4 => 'PRODUCT_NAME'
24109 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
24110 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
24111 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
24112 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
24113 ,p_ae_header_id => NULL
24114 );
24115
24116 IF (C_LEVEL_ERROR>= g_log_level) THEN
24117 trace
24118 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
24119 ,p_level => C_LEVEL_ERROR
24120 ,p_module => l_log_module);
24121 END IF;
24122 END IF;
24123 END IF;
24124 --
24125 --
24126 ------------------------------------------------------------------------------------------------
24127 -- 4219869 Business Flow
24128 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
24129 -- Prior Entry. Currently, the following code is always generated.
24130 ------------------------------------------------------------------------------------------------
24131 XLA_AE_LINES_PKG.ValidateCurrentLine;
24132
24133 ------------------------------------------------------------------------------------
24134 -- 4219869 Business Flow
24135 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
24136 ------------------------------------------------------------------------------------
24137 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
24138
24139 ----------------------------------------------------------------------------------
24140 -- 4219869 Business Flow
24141 -- Update journal entry status -- Need to generate this within IF <condition>
24142 ----------------------------------------------------------------------------------
24143 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
24144 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
24145 ,p_balance_type_code => l_balance_type_code
24146 );
24147
24148 -------------------------------------------------------------------------------------------
24149 -- 4262811 - Generate the Accrual Reversal lines
24150 -------------------------------------------------------------------------------------------
24151 BEGIN
24152 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
24153 (g_array_event(p_event_id).array_value_num('header_index'));
24154 IF l_acc_rev_flag IS NULL THEN
24155 l_acc_rev_flag := 'N';
24156 END IF;
24157 EXCEPTION
24158 WHEN OTHERS THEN
24159 l_acc_rev_flag := 'N';
24160 END;
24161 --
24162 IF (l_acc_rev_flag = 'Y') THEN
24163
24164 -- 4645092 ------------------------------------------------------------------------------
24165 -- To allow MPA report to determine if it should generate report process
24166 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
24167 ------------------------------------------------------------------------------------------
24168
24169 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
24170 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
24171 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
24172 -- call ADRs
24173 -- Bug 4922099
24174 --
24175 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
24176 (NVL(l_actual_upg_option, 'N') = 'O') OR
24177 (NVL(l_enc_upg_option, 'N') = 'O')
24178 )
24179 THEN
24180 NULL;
24181 --
24182 --
24183
24184 l_ccid := AcctDerRule_4(
24185 p_application_id => p_application_id
24186 , p_ae_header_id => l_ae_header_id
24187 , p_source_4 => p_source_4
24188 , x_transaction_coa_id => l_adr_transaction_coa_id
24189 , x_accounting_coa_id => l_adr_accounting_coa_id
24190 , x_value_type_code => l_adr_value_type_code
24191 , p_side => 'NA'
24192 );
24193
24194 xla_ae_lines_pkg.set_ccid(
24195 p_code_combination_id => l_ccid
24196 , p_value_type_code => l_adr_value_type_code
24197 , p_transaction_coa_id => l_adr_transaction_coa_id
24198 , p_accounting_coa_id => l_adr_accounting_coa_id
24199 , p_adr_code => 'CST_DEFAULT'
24200 , p_adr_type_code => 'S'
24201 , p_component_type => l_component_type
24202 , p_component_code => l_component_code
24203 , p_component_type_code => l_component_type_code
24204 , p_component_appl_id => l_component_appl_id
24205 , p_amb_context_code => l_amb_context_code
24206 , p_side => 'NA'
24207 );
24208
24209
24210 --
24211 --
24212 END IF;
24213
24214 --
24215 -- Update the line information that should be overwritten
24216 --
24217 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
24218 p_header_num => 1);
24219 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
24220
24221 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
24222
24223 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
24224 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
24225 END IF;
24226
24227 --
24228 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
24229 --
24230 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
24231 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
24232 ELSE
24233 ---------------------------------------------------------------------------------------------------
24234 -- 4262811a Switch Sign
24235 ---------------------------------------------------------------------------------------------------
24236 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
24237 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
24238 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
24239 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
24240 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
24241 -- 5132302
24242 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
24243 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
24244
24245 END IF;
24246
24247 -- 4955764
24248 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
24249 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
24250
24251
24252 XLA_AE_LINES_PKG.ValidateCurrentLine;
24253 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
24254
24255 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
24256 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
24257 ,p_balance_type_code => l_balance_type_code);
24258
24259 END IF;
24260
24261 -----------------------------------------------------------------------------------------
24262 -- 4262811 Multiperiod Accounting
24263 -----------------------------------------------------------------------------------------
24264 -- No MPA option is assigned.
24265
24266
24267 END IF;
24268 END IF;
24269 --
24270
24271 --
24272 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
24273 trace
24274 (p_msg => 'END of AcctLineType_46'
24275 ,p_level => C_LEVEL_PROCEDURE
24276 ,p_module => l_log_module);
24277 END IF;
24278 --
24279 EXCEPTION
24280 WHEN xla_exceptions_pkg.application_exception THEN
24281 RAISE;
24282 WHEN OTHERS THEN
24283 xla_exceptions_pkg.raise_message
24284 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_46');
24285 END AcctLineType_46;
24286 --
24287
24288 ---------------------------------------
24289 --
24290 -- PRIVATE FUNCTION
24291 -- AcctLineType_47
24292 --
24293 ---------------------------------------
24294 PROCEDURE AcctLineType_47 (
24295 p_application_id IN NUMBER
24296 ,p_event_id IN NUMBER
24297 ,p_calculate_acctd_flag IN VARCHAR2
24298 ,p_calculate_g_l_flag IN VARCHAR2
24299 ,p_actual_flag IN OUT VARCHAR2
24300 ,p_balance_type_code OUT VARCHAR2
24301 ,p_gain_or_loss_ref OUT VARCHAR2
24302
24303 --Cost Management Default Account
24304 , p_source_4 IN NUMBER
24305 --DISTRIBUTION_IDENTIFIER
24306 , p_source_11 IN NUMBER
24307 --Distribution Type
24308 , p_source_12 IN VARCHAR2
24309 , p_source_12_meaning IN VARCHAR2
24310 --Entered Currency Code
24311 , p_source_15 IN VARCHAR2
24312 --Entered Amount
24313 , p_source_18 IN NUMBER
24314 --Currency Conversion Date
24315 , p_source_19 IN DATE
24316 --Currency Conversion Rate
24317 , p_source_20 IN NUMBER
24318 --Currency Conversion Type
24319 , p_source_21 IN VARCHAR2
24320 --Accounted Amount
24321 , p_source_22 IN NUMBER
24322 --Accounting Line Type
24323 , p_source_24 IN NUMBER
24324 )
24325 IS
24326
24327 l_component_type VARCHAR2(80);
24328 l_component_code VARCHAR2(30);
24329 l_component_type_code VARCHAR2(1);
24330 l_component_appl_id INTEGER;
24331 l_amb_context_code VARCHAR2(30);
24332 l_entity_code VARCHAR2(30);
24333 l_event_class_code VARCHAR2(30);
24334 l_ae_header_id NUMBER;
24335 l_event_type_code VARCHAR2(30);
24336 l_line_definition_code VARCHAR2(30);
24337 l_line_definition_owner_code VARCHAR2(1);
24338 --
24339 -- adr variables
24340 l_segment VARCHAR2(30);
24341 l_ccid NUMBER;
24342 l_adr_transaction_coa_id NUMBER;
24343 l_adr_accounting_coa_id NUMBER;
24344 l_adr_flexfield_segment_code VARCHAR2(30);
24345 l_adr_flex_value_set_id NUMBER;
24346 l_adr_value_type_code VARCHAR2(30);
24347 l_adr_value_combination_id NUMBER;
24348 l_adr_value_segment_code VARCHAR2(30);
24349
24350 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
24351 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
24352 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
24353 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
24354
24355 -- 4262811 Variables ------------------------------------------------------------------------------------------
24356 l_entered_amt_idx NUMBER;
24357 l_accted_amt_idx NUMBER;
24358 l_acc_rev_flag VARCHAR2(1);
24359 l_accrual_line_num NUMBER;
24360 l_tmp_amt NUMBER;
24361 l_acc_rev_natural_side_code VARCHAR2(1);
24362
24363 l_num_entries NUMBER;
24364 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
24365 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
24366 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
24367 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
24368 l_recog_line_1 NUMBER;
24369 l_recog_line_2 NUMBER;
24370
24371 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
24372 l_bflow_applied_to_amt NUMBER; -- 5132302
24373 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
24374
24375 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
24376
24377 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
24378 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
24379
24380 ---------------------------------------------------------------------------------------------------------------
24381
24382
24383 --
24384 -- bulk performance
24385 --
24386 l_balance_type_code VARCHAR2(1);
24387 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
24388 l_log_module VARCHAR2(240);
24389
24390 --
24391 -- Upgrade strategy
24392 --
24393 l_actual_upg_option VARCHAR2(1);
24394 l_enc_upg_option VARCHAR2(1);
24395
24396 --
24397 BEGIN
24398 --
24399 IF g_log_enabled THEN
24400 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_47';
24401 END IF;
24402 --
24403 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
24404
24405 trace
24406 (p_msg => 'BEGIN of AcctLineType_47'
24407 ,p_level => C_LEVEL_PROCEDURE
24408 ,p_module => l_log_module);
24409
24410 END IF;
24411 --
24412 l_component_type := 'AMB_JLT';
24413 l_component_code := 'EXPENSE';
24414 l_component_type_code := 'S';
24415 l_component_appl_id := 707;
24416 l_amb_context_code := 'DEFAULT';
24417 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
24418 l_event_class_code := 'USER_DEFINE';
24419 l_event_type_code := 'UAVG_COST_UPD';
24420 l_line_definition_owner_code := 'S';
24421 l_line_definition_code := 'USER_COST_UPD';
24422 --
24423 l_balance_type_code := 'A';
24424 l_segment := NULL;
24425 l_ccid := NULL;
24426 l_adr_transaction_coa_id := NULL;
24427 l_adr_accounting_coa_id := NULL;
24428 l_adr_flexfield_segment_code := NULL;
24429 l_adr_flex_value_set_id := NULL;
24430 l_adr_value_type_code := NULL;
24431 l_adr_value_combination_id := NULL;
24432 l_adr_value_segment_code := NULL;
24433
24434 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
24435 l_bflow_class_code := ''; -- 4219869 Business Flow
24436 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
24437 l_budgetary_control_flag := 'N';
24438
24439 l_bflow_applied_to_amt_idx := NULL; -- 5132302
24440 l_bflow_applied_to_amt := NULL; -- 5132302
24441 l_entered_amt_idx := NULL; -- 4262811
24442 l_accted_amt_idx := NULL; -- 4262811
24443 l_acc_rev_flag := NULL; -- 4262811
24444 l_accrual_line_num := NULL; -- 4262811
24445 l_tmp_amt := NULL; -- 4262811
24446 --
24447
24448 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
24449 l_balance_type_code <> 'B' THEN
24450 IF NVL(p_source_24,9E125) = 20
24451 THEN
24452
24453 --
24454 XLA_AE_LINES_PKG.SetNewLine;
24455
24456 p_balance_type_code := l_balance_type_code;
24457 -- set the flag so later we will know whether the gain loss line needs to be created
24458
24459 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
24460 p_actual_flag :='A';
24461 END IF;
24462
24463 --
24464 -- bulk performance
24465 --
24466 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
24467 p_header_num => 0); -- 4262811
24468 --
24469 -- set accounting line options
24470 --
24471 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
24472 p_natural_side_code => 'D'
24473 , p_gain_or_loss_flag => 'N'
24474 , p_gl_transfer_mode_code => 'S'
24475 , p_acct_entry_type_code => 'A'
24476 , p_switch_side_flag => 'Y'
24477 , p_merge_duplicate_code => 'N'
24478 );
24479 --
24480 l_acc_rev_natural_side_code := 'C'; -- 4262811
24481 --
24482 --
24483 -- set accounting line type info
24484 --
24485 xla_ae_lines_pkg.SetAcctLineType
24486 (p_component_type => l_component_type
24487 ,p_event_type_code => l_event_type_code
24488 ,p_line_definition_owner_code => l_line_definition_owner_code
24489 ,p_line_definition_code => l_line_definition_code
24490 ,p_accounting_line_code => l_component_code
24491 ,p_accounting_line_type_code => l_component_type_code
24492 ,p_accounting_line_appl_id => l_component_appl_id
24493 ,p_amb_context_code => l_amb_context_code
24494 ,p_entity_code => l_entity_code
24495 ,p_event_class_code => l_event_class_code);
24496 --
24497 -- set accounting class
24498 --
24499 xla_ae_lines_pkg.SetAcctClass(
24500 p_accounting_class_code => 'EXPENSE'
24501 , p_ae_header_id => l_ae_header_id
24502 );
24503
24504 --
24505 -- set rounding class
24506 --
24507 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
24508 'EXPENSE';
24509
24510 --
24511 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
24512 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
24513 --
24514 -- bulk performance
24515 --
24516 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
24517
24518 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
24519 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
24520
24521 -- 4955764
24522 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
24523 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
24524
24525 -- 4458381 Public Sector Enh
24526
24527 --
24528 -- set accounting attributes for the line type
24529 --
24530 l_entered_amt_idx := 3;
24531 l_accted_amt_idx := 8;
24532 l_bflow_applied_to_amt_idx := NULL; -- 5132302
24533 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
24534 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
24535 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
24536 l_rec_acct_attrs.array_char_value(2) := p_source_12;
24537 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
24538 l_rec_acct_attrs.array_num_value(3) := p_source_18;
24539 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
24540 l_rec_acct_attrs.array_char_value(4) := p_source_15;
24541 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
24542 l_rec_acct_attrs.array_date_value(5) := p_source_19;
24543 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
24544 l_rec_acct_attrs.array_num_value(6) := p_source_20;
24545 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
24546 l_rec_acct_attrs.array_char_value(7) := p_source_21;
24547 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
24548 l_rec_acct_attrs.array_num_value(8) := p_source_22;
24549
24550 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
24551 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
24552
24553 ---------------------------------------------------------------------------------------------------------------
24554 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
24555 ---------------------------------------------------------------------------------------------------------------
24556 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
24557
24558 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
24559 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
24560
24561 IF xla_accounting_cache_pkg.GetValueChar
24562 (p_source_code => 'LEDGER_CATEGORY_CODE'
24563 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
24564 AND l_bflow_method_code = 'PRIOR_ENTRY'
24565 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
24566 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
24567 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
24568 )
24569 THEN
24570 xla_ae_lines_pkg.BflowUpgEntry
24571 (p_business_method_code => l_bflow_method_code
24572 ,p_business_class_code => l_bflow_class_code
24573 ,p_balance_type => l_balance_type_code);
24574 ELSE
24575 NULL;
24576 -- No business flow processing for business flow method of NONE.
24577 END IF;
24578
24579 --
24580 -- call analytical criteria
24581 --
24582
24583 --
24584 -- call description
24585 --
24586 -- No description or it is inherited.
24587 --
24588 -- call ADRs
24589 -- Bug 4922099
24590 --
24591 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
24592 (NVL(l_actual_upg_option, 'N') = 'O') OR
24593 (NVL(l_enc_upg_option, 'N') = 'O')
24594 )
24595 THEN
24596 NULL;
24597 --
24598 --
24599
24600 l_ccid := AcctDerRule_4(
24601 p_application_id => p_application_id
24602 , p_ae_header_id => l_ae_header_id
24603 , p_source_4 => p_source_4
24604 , x_transaction_coa_id => l_adr_transaction_coa_id
24605 , x_accounting_coa_id => l_adr_accounting_coa_id
24606 , x_value_type_code => l_adr_value_type_code
24607 , p_side => 'NA'
24608 );
24609
24610 xla_ae_lines_pkg.set_ccid(
24611 p_code_combination_id => l_ccid
24612 , p_value_type_code => l_adr_value_type_code
24613 , p_transaction_coa_id => l_adr_transaction_coa_id
24614 , p_accounting_coa_id => l_adr_accounting_coa_id
24615 , p_adr_code => 'CST_DEFAULT'
24616 , p_adr_type_code => 'S'
24617 , p_component_type => l_component_type
24618 , p_component_code => l_component_code
24619 , p_component_type_code => l_component_type_code
24620 , p_component_appl_id => l_component_appl_id
24621 , p_amb_context_code => l_amb_context_code
24622 , p_side => 'NA'
24623 );
24624
24625
24626 --
24627 --
24628 END IF;
24629 --
24630 -- Bug 4922099
24631 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
24632 (NVL(l_enc_upg_option, 'N') = 'O')
24633 ) AND
24634 (l_bflow_method_code = 'PRIOR_ENTRY')
24635 )
24636 THEN
24637 IF
24638 --
24639 1 = 2
24640 --
24641 THEN
24642 xla_accounting_err_pkg.build_message
24643 (p_appli_s_name => 'XLA'
24644 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
24645 ,p_token_1 => 'LINE_NUMBER'
24646 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
24647 ,p_token_2 => 'LINE_TYPE_NAME'
24648 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
24649 l_component_type
24650 ,l_component_code
24651 ,l_component_type_code
24652 ,l_component_appl_id
24653 ,l_amb_context_code
24654 ,l_entity_code
24655 ,l_event_class_code
24656 )
24657 ,p_token_3 => 'OWNER'
24658 ,p_value_3 => xla_lookups_pkg.get_meaning(
24659 p_lookup_type => 'XLA_OWNER_TYPE'
24660 ,p_lookup_code => l_component_type_code
24661 )
24662 ,p_token_4 => 'PRODUCT_NAME'
24663 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
24664 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
24665 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
24666 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
24667 ,p_ae_header_id => NULL
24668 );
24669
24670 IF (C_LEVEL_ERROR>= g_log_level) THEN
24671 trace
24672 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
24673 ,p_level => C_LEVEL_ERROR
24674 ,p_module => l_log_module);
24675 END IF;
24676 END IF;
24677 END IF;
24678 --
24679 --
24680 ------------------------------------------------------------------------------------------------
24681 -- 4219869 Business Flow
24682 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
24683 -- Prior Entry. Currently, the following code is always generated.
24684 ------------------------------------------------------------------------------------------------
24685 XLA_AE_LINES_PKG.ValidateCurrentLine;
24686
24687 ------------------------------------------------------------------------------------
24688 -- 4219869 Business Flow
24689 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
24690 ------------------------------------------------------------------------------------
24691 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
24692
24693 ----------------------------------------------------------------------------------
24694 -- 4219869 Business Flow
24695 -- Update journal entry status -- Need to generate this within IF <condition>
24696 ----------------------------------------------------------------------------------
24697 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
24698 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
24699 ,p_balance_type_code => l_balance_type_code
24700 );
24701
24702 -------------------------------------------------------------------------------------------
24703 -- 4262811 - Generate the Accrual Reversal lines
24704 -------------------------------------------------------------------------------------------
24705 BEGIN
24706 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
24707 (g_array_event(p_event_id).array_value_num('header_index'));
24708 IF l_acc_rev_flag IS NULL THEN
24709 l_acc_rev_flag := 'N';
24710 END IF;
24711 EXCEPTION
24712 WHEN OTHERS THEN
24713 l_acc_rev_flag := 'N';
24714 END;
24715 --
24716 IF (l_acc_rev_flag = 'Y') THEN
24717
24718 -- 4645092 ------------------------------------------------------------------------------
24719 -- To allow MPA report to determine if it should generate report process
24720 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
24721 ------------------------------------------------------------------------------------------
24722
24723 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
24724 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
24725 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
24726 -- call ADRs
24727 -- Bug 4922099
24728 --
24729 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
24730 (NVL(l_actual_upg_option, 'N') = 'O') OR
24731 (NVL(l_enc_upg_option, 'N') = 'O')
24732 )
24733 THEN
24734 NULL;
24735 --
24736 --
24737
24738 l_ccid := AcctDerRule_4(
24739 p_application_id => p_application_id
24740 , p_ae_header_id => l_ae_header_id
24741 , p_source_4 => p_source_4
24742 , x_transaction_coa_id => l_adr_transaction_coa_id
24743 , x_accounting_coa_id => l_adr_accounting_coa_id
24744 , x_value_type_code => l_adr_value_type_code
24745 , p_side => 'NA'
24746 );
24747
24748 xla_ae_lines_pkg.set_ccid(
24749 p_code_combination_id => l_ccid
24750 , p_value_type_code => l_adr_value_type_code
24751 , p_transaction_coa_id => l_adr_transaction_coa_id
24752 , p_accounting_coa_id => l_adr_accounting_coa_id
24753 , p_adr_code => 'CST_DEFAULT'
24754 , p_adr_type_code => 'S'
24755 , p_component_type => l_component_type
24756 , p_component_code => l_component_code
24757 , p_component_type_code => l_component_type_code
24758 , p_component_appl_id => l_component_appl_id
24759 , p_amb_context_code => l_amb_context_code
24760 , p_side => 'NA'
24761 );
24762
24763
24764 --
24765 --
24766 END IF;
24767
24768 --
24769 -- Update the line information that should be overwritten
24770 --
24771 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
24772 p_header_num => 1);
24773 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
24774
24775 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
24776
24777 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
24778 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
24779 END IF;
24780
24781 --
24782 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
24783 --
24784 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
24785 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
24786 ELSE
24787 ---------------------------------------------------------------------------------------------------
24788 -- 4262811a Switch Sign
24789 ---------------------------------------------------------------------------------------------------
24790 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
24791 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
24792 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
24793 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
24794 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
24795 -- 5132302
24796 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
24797 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
24798
24799 END IF;
24800
24801 -- 4955764
24802 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
24803 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
24804
24805
24806 XLA_AE_LINES_PKG.ValidateCurrentLine;
24807 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
24808
24809 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
24810 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
24811 ,p_balance_type_code => l_balance_type_code);
24812
24813 END IF;
24814
24815 -----------------------------------------------------------------------------------------
24816 -- 4262811 Multiperiod Accounting
24817 -----------------------------------------------------------------------------------------
24818 -- No MPA option is assigned.
24819
24820
24821 END IF;
24822 END IF;
24823 --
24824
24825 --
24826 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
24827 trace
24828 (p_msg => 'END of AcctLineType_47'
24829 ,p_level => C_LEVEL_PROCEDURE
24830 ,p_module => l_log_module);
24831 END IF;
24832 --
24833 EXCEPTION
24834 WHEN xla_exceptions_pkg.application_exception THEN
24835 RAISE;
24836 WHEN OTHERS THEN
24837 xla_exceptions_pkg.raise_message
24838 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_47');
24839 END AcctLineType_47;
24840 --
24841
24842 ---------------------------------------
24843 --
24844 -- PRIVATE FUNCTION
24845 -- AcctLineType_48
24846 --
24847 ---------------------------------------
24848 PROCEDURE AcctLineType_48 (
24849 p_application_id IN NUMBER
24850 ,p_event_id IN NUMBER
24851 ,p_calculate_acctd_flag IN VARCHAR2
24852 ,p_calculate_g_l_flag IN VARCHAR2
24853 ,p_actual_flag IN OUT VARCHAR2
24854 ,p_balance_type_code OUT VARCHAR2
24855 ,p_gain_or_loss_ref OUT VARCHAR2
24856
24857 --Cost Management Default Account
24858 , p_source_4 IN NUMBER
24859 --Receiving Accounting Line Type
24860 , p_source_5 IN VARCHAR2
24861 --DISTRIBUTION_IDENTIFIER
24862 , p_source_11 IN NUMBER
24863 --Distribution Type
24864 , p_source_12 IN VARCHAR2
24865 , p_source_12_meaning IN VARCHAR2
24866 --Entered Amount
24867 , p_source_18 IN NUMBER
24868 --Accounted Amount
24869 , p_source_22 IN NUMBER
24870 --Entered Currency Code
24871 , p_source_32 IN VARCHAR2
24872 --Currency Conversion Date
24873 , p_source_33 IN DATE
24874 --Currency Conversion Rate
24875 , p_source_34 IN NUMBER
24876 )
24877 IS
24878
24879 l_component_type VARCHAR2(80);
24880 l_component_code VARCHAR2(30);
24881 l_component_type_code VARCHAR2(1);
24882 l_component_appl_id INTEGER;
24883 l_amb_context_code VARCHAR2(30);
24884 l_entity_code VARCHAR2(30);
24885 l_event_class_code VARCHAR2(30);
24886 l_ae_header_id NUMBER;
24887 l_event_type_code VARCHAR2(30);
24888 l_line_definition_code VARCHAR2(30);
24889 l_line_definition_owner_code VARCHAR2(1);
24890 --
24891 -- adr variables
24892 l_segment VARCHAR2(30);
24893 l_ccid NUMBER;
24894 l_adr_transaction_coa_id NUMBER;
24895 l_adr_accounting_coa_id NUMBER;
24896 l_adr_flexfield_segment_code VARCHAR2(30);
24897 l_adr_flex_value_set_id NUMBER;
24898 l_adr_value_type_code VARCHAR2(30);
24899 l_adr_value_combination_id NUMBER;
24900 l_adr_value_segment_code VARCHAR2(30);
24901
24902 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
24903 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
24904 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
24905 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
24906
24907 -- 4262811 Variables ------------------------------------------------------------------------------------------
24908 l_entered_amt_idx NUMBER;
24909 l_accted_amt_idx NUMBER;
24910 l_acc_rev_flag VARCHAR2(1);
24911 l_accrual_line_num NUMBER;
24912 l_tmp_amt NUMBER;
24913 l_acc_rev_natural_side_code VARCHAR2(1);
24914
24915 l_num_entries NUMBER;
24916 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
24917 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
24918 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
24919 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
24920 l_recog_line_1 NUMBER;
24921 l_recog_line_2 NUMBER;
24922
24923 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
24924 l_bflow_applied_to_amt NUMBER; -- 5132302
24925 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
24926
24927 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
24928
24929 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
24930 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
24931
24932 ---------------------------------------------------------------------------------------------------------------
24933
24934
24935 --
24936 -- bulk performance
24937 --
24938 l_balance_type_code VARCHAR2(1);
24939 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
24940 l_log_module VARCHAR2(240);
24941
24942 --
24943 -- Upgrade strategy
24944 --
24945 l_actual_upg_option VARCHAR2(1);
24946 l_enc_upg_option VARCHAR2(1);
24947
24948 --
24949 BEGIN
24950 --
24951 IF g_log_enabled THEN
24952 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_48';
24953 END IF;
24954 --
24955 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
24956
24957 trace
24958 (p_msg => 'BEGIN of AcctLineType_48'
24959 ,p_level => C_LEVEL_PROCEDURE
24960 ,p_module => l_log_module);
24961
24962 END IF;
24963 --
24964 l_component_type := 'AMB_JLT';
24965 l_component_code := 'EXPENSE';
24966 l_component_type_code := 'S';
24967 l_component_appl_id := 707;
24968 l_amb_context_code := 'DEFAULT';
24969 l_entity_code := 'RCV_ACCOUNTING_EVENTS';
24970 l_event_class_code := 'LDD_COST_ADJ_DEL';
24971 l_event_type_code := 'LDD_COST_ADJ_DEL_ALL';
24972 l_line_definition_owner_code := 'S';
24973 l_line_definition_code := 'LDD_COST_ADJ_DEL';
24974 --
24975 l_balance_type_code := 'A';
24976 l_segment := NULL;
24977 l_ccid := NULL;
24978 l_adr_transaction_coa_id := NULL;
24979 l_adr_accounting_coa_id := NULL;
24980 l_adr_flexfield_segment_code := NULL;
24981 l_adr_flex_value_set_id := NULL;
24982 l_adr_value_type_code := NULL;
24983 l_adr_value_combination_id := NULL;
24984 l_adr_value_segment_code := NULL;
24985
24986 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
24987 l_bflow_class_code := ''; -- 4219869 Business Flow
24988 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
24989 l_budgetary_control_flag := 'N';
24990
24991 l_bflow_applied_to_amt_idx := NULL; -- 5132302
24992 l_bflow_applied_to_amt := NULL; -- 5132302
24993 l_entered_amt_idx := NULL; -- 4262811
24994 l_accted_amt_idx := NULL; -- 4262811
24995 l_acc_rev_flag := NULL; -- 4262811
24996 l_accrual_line_num := NULL; -- 4262811
24997 l_tmp_amt := NULL; -- 4262811
24998 --
24999
25000 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
25001 l_balance_type_code <> 'B' THEN
25002 IF NVL(p_source_5,'
25003 ') = 'Expense'
25004 THEN
25005
25006 --
25007 XLA_AE_LINES_PKG.SetNewLine;
25008
25009 p_balance_type_code := l_balance_type_code;
25010 -- set the flag so later we will know whether the gain loss line needs to be created
25011
25012 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
25013 p_actual_flag :='A';
25014 END IF;
25015
25016 --
25017 -- bulk performance
25018 --
25019 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
25020 p_header_num => 0); -- 4262811
25021 --
25022 -- set accounting line options
25023 --
25024 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
25025 p_natural_side_code => 'D'
25026 , p_gain_or_loss_flag => 'N'
25027 , p_gl_transfer_mode_code => 'S'
25028 , p_acct_entry_type_code => 'A'
25029 , p_switch_side_flag => 'Y'
25030 , p_merge_duplicate_code => 'N'
25031 );
25032 --
25033 l_acc_rev_natural_side_code := 'C'; -- 4262811
25034 --
25035 --
25036 -- set accounting line type info
25037 --
25038 xla_ae_lines_pkg.SetAcctLineType
25039 (p_component_type => l_component_type
25040 ,p_event_type_code => l_event_type_code
25041 ,p_line_definition_owner_code => l_line_definition_owner_code
25042 ,p_line_definition_code => l_line_definition_code
25043 ,p_accounting_line_code => l_component_code
25044 ,p_accounting_line_type_code => l_component_type_code
25045 ,p_accounting_line_appl_id => l_component_appl_id
25046 ,p_amb_context_code => l_amb_context_code
25047 ,p_entity_code => l_entity_code
25048 ,p_event_class_code => l_event_class_code);
25049 --
25050 -- set accounting class
25051 --
25052 xla_ae_lines_pkg.SetAcctClass(
25053 p_accounting_class_code => 'EXPENSE'
25054 , p_ae_header_id => l_ae_header_id
25055 );
25056
25057 --
25058 -- set rounding class
25059 --
25060 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
25061 'EXPENSE';
25062
25063 --
25064 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
25065 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
25066 --
25067 -- bulk performance
25068 --
25069 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
25070
25071 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
25072 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
25073
25074 -- 4955764
25075 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
25076 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
25077
25078 -- 4458381 Public Sector Enh
25079
25080 --
25081 -- set accounting attributes for the line type
25082 --
25083 l_entered_amt_idx := 3;
25084 l_accted_amt_idx := 7;
25085 l_bflow_applied_to_amt_idx := NULL; -- 5132302
25086 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
25087 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
25088 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
25089 l_rec_acct_attrs.array_char_value(2) := p_source_12;
25090 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
25091 l_rec_acct_attrs.array_num_value(3) := p_source_18;
25092 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
25093 l_rec_acct_attrs.array_char_value(4) := p_source_32;
25094 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
25095 l_rec_acct_attrs.array_date_value(5) := p_source_33;
25096 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
25097 l_rec_acct_attrs.array_num_value(6) := p_source_34;
25098 l_rec_acct_attrs.array_acct_attr_code(7) := 'LEDGER_AMOUNT';
25099 l_rec_acct_attrs.array_num_value(7) := p_source_22;
25100
25101 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
25102 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
25103
25104 ---------------------------------------------------------------------------------------------------------------
25105 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
25106 ---------------------------------------------------------------------------------------------------------------
25107 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
25108
25109 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
25110 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
25111
25112 IF xla_accounting_cache_pkg.GetValueChar
25113 (p_source_code => 'LEDGER_CATEGORY_CODE'
25114 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
25115 AND l_bflow_method_code = 'PRIOR_ENTRY'
25116 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
25117 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
25118 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
25119 )
25120 THEN
25121 xla_ae_lines_pkg.BflowUpgEntry
25122 (p_business_method_code => l_bflow_method_code
25123 ,p_business_class_code => l_bflow_class_code
25124 ,p_balance_type => l_balance_type_code);
25125 ELSE
25126 NULL;
25127 -- No business flow processing for business flow method of NONE.
25128 END IF;
25129
25130 --
25131 -- call analytical criteria
25132 --
25133
25134 --
25135 -- call description
25136 --
25137 -- No description or it is inherited.
25138 --
25139 -- call ADRs
25140 -- Bug 4922099
25141 --
25142 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
25143 (NVL(l_actual_upg_option, 'N') = 'O') OR
25144 (NVL(l_enc_upg_option, 'N') = 'O')
25145 )
25146 THEN
25147 NULL;
25148 --
25149 --
25150
25151 l_ccid := AcctDerRule_4(
25152 p_application_id => p_application_id
25153 , p_ae_header_id => l_ae_header_id
25154 , p_source_4 => p_source_4
25155 , x_transaction_coa_id => l_adr_transaction_coa_id
25156 , x_accounting_coa_id => l_adr_accounting_coa_id
25157 , x_value_type_code => l_adr_value_type_code
25158 , p_side => 'NA'
25159 );
25160
25161 xla_ae_lines_pkg.set_ccid(
25162 p_code_combination_id => l_ccid
25163 , p_value_type_code => l_adr_value_type_code
25164 , p_transaction_coa_id => l_adr_transaction_coa_id
25165 , p_accounting_coa_id => l_adr_accounting_coa_id
25166 , p_adr_code => 'CST_DEFAULT'
25167 , p_adr_type_code => 'S'
25168 , p_component_type => l_component_type
25169 , p_component_code => l_component_code
25170 , p_component_type_code => l_component_type_code
25171 , p_component_appl_id => l_component_appl_id
25172 , p_amb_context_code => l_amb_context_code
25173 , p_side => 'NA'
25174 );
25175
25176
25177 --
25178 --
25179 END IF;
25180 --
25181 -- Bug 4922099
25182 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
25183 (NVL(l_enc_upg_option, 'N') = 'O')
25184 ) AND
25185 (l_bflow_method_code = 'PRIOR_ENTRY')
25186 )
25187 THEN
25188 IF
25189 --
25190 1 = 2
25191 --
25192 THEN
25193 xla_accounting_err_pkg.build_message
25194 (p_appli_s_name => 'XLA'
25195 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
25196 ,p_token_1 => 'LINE_NUMBER'
25197 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
25198 ,p_token_2 => 'LINE_TYPE_NAME'
25199 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
25200 l_component_type
25201 ,l_component_code
25202 ,l_component_type_code
25203 ,l_component_appl_id
25204 ,l_amb_context_code
25205 ,l_entity_code
25206 ,l_event_class_code
25207 )
25208 ,p_token_3 => 'OWNER'
25209 ,p_value_3 => xla_lookups_pkg.get_meaning(
25210 p_lookup_type => 'XLA_OWNER_TYPE'
25211 ,p_lookup_code => l_component_type_code
25212 )
25213 ,p_token_4 => 'PRODUCT_NAME'
25214 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
25215 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
25216 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
25217 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
25218 ,p_ae_header_id => NULL
25219 );
25220
25221 IF (C_LEVEL_ERROR>= g_log_level) THEN
25222 trace
25223 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
25224 ,p_level => C_LEVEL_ERROR
25225 ,p_module => l_log_module);
25226 END IF;
25227 END IF;
25228 END IF;
25229 --
25230 --
25231 ------------------------------------------------------------------------------------------------
25232 -- 4219869 Business Flow
25233 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
25234 -- Prior Entry. Currently, the following code is always generated.
25235 ------------------------------------------------------------------------------------------------
25236 XLA_AE_LINES_PKG.ValidateCurrentLine;
25237
25238 ------------------------------------------------------------------------------------
25239 -- 4219869 Business Flow
25240 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
25241 ------------------------------------------------------------------------------------
25242 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
25243
25244 ----------------------------------------------------------------------------------
25245 -- 4219869 Business Flow
25246 -- Update journal entry status -- Need to generate this within IF <condition>
25247 ----------------------------------------------------------------------------------
25248 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
25249 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
25250 ,p_balance_type_code => l_balance_type_code
25251 );
25252
25253 -------------------------------------------------------------------------------------------
25254 -- 4262811 - Generate the Accrual Reversal lines
25255 -------------------------------------------------------------------------------------------
25256 BEGIN
25257 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
25258 (g_array_event(p_event_id).array_value_num('header_index'));
25259 IF l_acc_rev_flag IS NULL THEN
25260 l_acc_rev_flag := 'N';
25261 END IF;
25262 EXCEPTION
25263 WHEN OTHERS THEN
25264 l_acc_rev_flag := 'N';
25265 END;
25266 --
25267 IF (l_acc_rev_flag = 'Y') THEN
25268
25269 -- 4645092 ------------------------------------------------------------------------------
25270 -- To allow MPA report to determine if it should generate report process
25271 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
25272 ------------------------------------------------------------------------------------------
25273
25274 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
25275 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
25276 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
25277 -- call ADRs
25278 -- Bug 4922099
25279 --
25280 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
25281 (NVL(l_actual_upg_option, 'N') = 'O') OR
25282 (NVL(l_enc_upg_option, 'N') = 'O')
25283 )
25284 THEN
25285 NULL;
25286 --
25287 --
25288
25289 l_ccid := AcctDerRule_4(
25290 p_application_id => p_application_id
25291 , p_ae_header_id => l_ae_header_id
25292 , p_source_4 => p_source_4
25293 , x_transaction_coa_id => l_adr_transaction_coa_id
25294 , x_accounting_coa_id => l_adr_accounting_coa_id
25295 , x_value_type_code => l_adr_value_type_code
25296 , p_side => 'NA'
25297 );
25298
25299 xla_ae_lines_pkg.set_ccid(
25300 p_code_combination_id => l_ccid
25301 , p_value_type_code => l_adr_value_type_code
25302 , p_transaction_coa_id => l_adr_transaction_coa_id
25303 , p_accounting_coa_id => l_adr_accounting_coa_id
25304 , p_adr_code => 'CST_DEFAULT'
25305 , p_adr_type_code => 'S'
25306 , p_component_type => l_component_type
25307 , p_component_code => l_component_code
25308 , p_component_type_code => l_component_type_code
25309 , p_component_appl_id => l_component_appl_id
25310 , p_amb_context_code => l_amb_context_code
25311 , p_side => 'NA'
25312 );
25313
25314
25315 --
25316 --
25317 END IF;
25318
25319 --
25320 -- Update the line information that should be overwritten
25321 --
25322 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
25323 p_header_num => 1);
25324 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
25325
25326 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
25327
25328 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
25329 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
25330 END IF;
25331
25332 --
25333 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
25334 --
25335 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
25336 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
25337 ELSE
25338 ---------------------------------------------------------------------------------------------------
25339 -- 4262811a Switch Sign
25340 ---------------------------------------------------------------------------------------------------
25341 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
25342 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
25343 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
25344 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
25345 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
25346 -- 5132302
25347 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
25348 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
25349
25350 END IF;
25351
25352 -- 4955764
25353 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
25354 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
25355
25356
25357 XLA_AE_LINES_PKG.ValidateCurrentLine;
25358 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
25359
25360 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
25361 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
25362 ,p_balance_type_code => l_balance_type_code);
25363
25364 END IF;
25365
25366 -----------------------------------------------------------------------------------------
25367 -- 4262811 Multiperiod Accounting
25368 -----------------------------------------------------------------------------------------
25369 -- No MPA option is assigned.
25370
25371
25372 END IF;
25373 END IF;
25374 --
25375
25376 --
25377 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
25378 trace
25379 (p_msg => 'END of AcctLineType_48'
25380 ,p_level => C_LEVEL_PROCEDURE
25381 ,p_module => l_log_module);
25382 END IF;
25383 --
25384 EXCEPTION
25385 WHEN xla_exceptions_pkg.application_exception THEN
25386 RAISE;
25387 WHEN OTHERS THEN
25388 xla_exceptions_pkg.raise_message
25389 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_48');
25390 END AcctLineType_48;
25391 --
25392
25393 ---------------------------------------
25394 --
25395 -- PRIVATE FUNCTION
25396 -- AcctLineType_49
25397 --
25398 ---------------------------------------
25399 PROCEDURE AcctLineType_49 (
25400 p_application_id IN NUMBER
25401 ,p_event_id IN NUMBER
25402 ,p_calculate_acctd_flag IN VARCHAR2
25403 ,p_calculate_g_l_flag IN VARCHAR2
25404 ,p_actual_flag IN OUT VARCHAR2
25405 ,p_balance_type_code OUT VARCHAR2
25406 ,p_gain_or_loss_ref OUT VARCHAR2
25407
25408 --Cost Management Default Account
25409 , p_source_4 IN NUMBER
25410 --DISTRIBUTION_IDENTIFIER
25411 , p_source_11 IN NUMBER
25412 --Distribution Type
25413 , p_source_12 IN VARCHAR2
25414 , p_source_12_meaning IN VARCHAR2
25415 --Entered Currency Code
25416 , p_source_15 IN VARCHAR2
25417 --Entered Amount
25418 , p_source_18 IN NUMBER
25419 --Currency Conversion Date
25420 , p_source_19 IN DATE
25421 --Currency Conversion Rate
25422 , p_source_20 IN NUMBER
25423 --Currency Conversion Type
25424 , p_source_21 IN VARCHAR2
25425 --Accounted Amount
25426 , p_source_22 IN NUMBER
25427 --Accounting Line Type
25428 , p_source_24 IN NUMBER
25429 )
25430 IS
25431
25432 l_component_type VARCHAR2(80);
25433 l_component_code VARCHAR2(30);
25434 l_component_type_code VARCHAR2(1);
25435 l_component_appl_id INTEGER;
25436 l_amb_context_code VARCHAR2(30);
25437 l_entity_code VARCHAR2(30);
25438 l_event_class_code VARCHAR2(30);
25439 l_ae_header_id NUMBER;
25440 l_event_type_code VARCHAR2(30);
25441 l_line_definition_code VARCHAR2(30);
25442 l_line_definition_owner_code VARCHAR2(1);
25443 --
25444 -- adr variables
25445 l_segment VARCHAR2(30);
25446 l_ccid NUMBER;
25447 l_adr_transaction_coa_id NUMBER;
25448 l_adr_accounting_coa_id NUMBER;
25449 l_adr_flexfield_segment_code VARCHAR2(30);
25450 l_adr_flex_value_set_id NUMBER;
25451 l_adr_value_type_code VARCHAR2(30);
25452 l_adr_value_combination_id NUMBER;
25453 l_adr_value_segment_code VARCHAR2(30);
25454
25455 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
25456 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
25457 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
25458 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
25459
25460 -- 4262811 Variables ------------------------------------------------------------------------------------------
25461 l_entered_amt_idx NUMBER;
25462 l_accted_amt_idx NUMBER;
25463 l_acc_rev_flag VARCHAR2(1);
25464 l_accrual_line_num NUMBER;
25465 l_tmp_amt NUMBER;
25466 l_acc_rev_natural_side_code VARCHAR2(1);
25467
25468 l_num_entries NUMBER;
25469 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
25470 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
25471 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
25472 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
25473 l_recog_line_1 NUMBER;
25474 l_recog_line_2 NUMBER;
25475
25476 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
25477 l_bflow_applied_to_amt NUMBER; -- 5132302
25478 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
25479
25480 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
25481
25482 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
25483 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
25484
25485 ---------------------------------------------------------------------------------------------------------------
25486
25487
25488 --
25489 -- bulk performance
25490 --
25491 l_balance_type_code VARCHAR2(1);
25492 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
25493 l_log_module VARCHAR2(240);
25494
25495 --
25496 -- Upgrade strategy
25497 --
25498 l_actual_upg_option VARCHAR2(1);
25499 l_enc_upg_option VARCHAR2(1);
25500
25501 --
25502 BEGIN
25503 --
25504 IF g_log_enabled THEN
25505 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_49';
25506 END IF;
25507 --
25508 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
25509
25510 trace
25511 (p_msg => 'BEGIN of AcctLineType_49'
25512 ,p_level => C_LEVEL_PROCEDURE
25513 ,p_module => l_log_module);
25514
25515 END IF;
25516 --
25517 l_component_type := 'AMB_JLT';
25518 l_component_code := 'INTERCOMPANY_ACCRUAL';
25519 l_component_type_code := 'S';
25520 l_component_appl_id := 707;
25521 l_amb_context_code := 'DEFAULT';
25522 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
25523 l_event_class_code := 'LOG_INTERCOMPANY';
25524 l_event_type_code := 'LOG_INTERCOMPANY_ALL';
25525 l_line_definition_owner_code := 'S';
25526 l_line_definition_code := 'LOG_INTERCOMPANY';
25527 --
25528 l_balance_type_code := 'A';
25529 l_segment := NULL;
25530 l_ccid := NULL;
25531 l_adr_transaction_coa_id := NULL;
25532 l_adr_accounting_coa_id := NULL;
25533 l_adr_flexfield_segment_code := NULL;
25534 l_adr_flex_value_set_id := NULL;
25535 l_adr_value_type_code := NULL;
25536 l_adr_value_combination_id := NULL;
25537 l_adr_value_segment_code := NULL;
25538
25539 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
25540 l_bflow_class_code := ''; -- 4219869 Business Flow
25541 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
25542 l_budgetary_control_flag := 'N';
25543
25544 l_bflow_applied_to_amt_idx := NULL; -- 5132302
25545 l_bflow_applied_to_amt := NULL; -- 5132302
25546 l_entered_amt_idx := NULL; -- 4262811
25547 l_accted_amt_idx := NULL; -- 4262811
25548 l_acc_rev_flag := NULL; -- 4262811
25549 l_accrual_line_num := NULL; -- 4262811
25550 l_tmp_amt := NULL; -- 4262811
25551 --
25552
25553 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
25554 l_balance_type_code <> 'B' THEN
25555 IF NVL(p_source_24,9E125) = 16
25556 THEN
25557
25558 --
25559 XLA_AE_LINES_PKG.SetNewLine;
25560
25561 p_balance_type_code := l_balance_type_code;
25562 -- set the flag so later we will know whether the gain loss line needs to be created
25563
25564 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
25565 p_actual_flag :='A';
25566 END IF;
25567
25568 --
25569 -- bulk performance
25570 --
25571 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
25572 p_header_num => 0); -- 4262811
25573 --
25574 -- set accounting line options
25575 --
25576 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
25577 p_natural_side_code => 'D'
25578 , p_gain_or_loss_flag => 'N'
25579 , p_gl_transfer_mode_code => 'S'
25580 , p_acct_entry_type_code => 'A'
25581 , p_switch_side_flag => 'Y'
25582 , p_merge_duplicate_code => 'N'
25583 );
25584 --
25585 l_acc_rev_natural_side_code := 'C'; -- 4262811
25586 --
25587 --
25588 -- set accounting line type info
25589 --
25590 xla_ae_lines_pkg.SetAcctLineType
25591 (p_component_type => l_component_type
25592 ,p_event_type_code => l_event_type_code
25593 ,p_line_definition_owner_code => l_line_definition_owner_code
25594 ,p_line_definition_code => l_line_definition_code
25595 ,p_accounting_line_code => l_component_code
25596 ,p_accounting_line_type_code => l_component_type_code
25597 ,p_accounting_line_appl_id => l_component_appl_id
25598 ,p_amb_context_code => l_amb_context_code
25599 ,p_entity_code => l_entity_code
25600 ,p_event_class_code => l_event_class_code);
25601 --
25602 -- set accounting class
25603 --
25604 xla_ae_lines_pkg.SetAcctClass(
25605 p_accounting_class_code => 'INTERCOMPANY_ACCRUAL'
25606 , p_ae_header_id => l_ae_header_id
25607 );
25608
25609 --
25610 -- set rounding class
25611 --
25612 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
25613 'INTERCOMPANY_ACCRUAL';
25614
25615 --
25616 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
25617 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
25618 --
25619 -- bulk performance
25620 --
25621 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
25622
25623 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
25624 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
25625
25626 -- 4955764
25627 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
25628 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
25629
25630 -- 4458381 Public Sector Enh
25631
25632 --
25633 -- set accounting attributes for the line type
25634 --
25635 l_entered_amt_idx := 3;
25636 l_accted_amt_idx := 8;
25637 l_bflow_applied_to_amt_idx := NULL; -- 5132302
25638 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
25639 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
25640 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
25641 l_rec_acct_attrs.array_char_value(2) := p_source_12;
25642 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
25643 l_rec_acct_attrs.array_num_value(3) := p_source_18;
25644 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
25645 l_rec_acct_attrs.array_char_value(4) := p_source_15;
25646 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
25647 l_rec_acct_attrs.array_date_value(5) := p_source_19;
25648 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
25649 l_rec_acct_attrs.array_num_value(6) := p_source_20;
25650 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
25651 l_rec_acct_attrs.array_char_value(7) := p_source_21;
25652 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
25653 l_rec_acct_attrs.array_num_value(8) := p_source_22;
25654
25655 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
25656 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
25657
25658 ---------------------------------------------------------------------------------------------------------------
25659 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
25660 ---------------------------------------------------------------------------------------------------------------
25661 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
25662
25663 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
25664 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
25665
25666 IF xla_accounting_cache_pkg.GetValueChar
25667 (p_source_code => 'LEDGER_CATEGORY_CODE'
25668 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
25669 AND l_bflow_method_code = 'PRIOR_ENTRY'
25670 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
25671 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
25672 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
25673 )
25674 THEN
25675 xla_ae_lines_pkg.BflowUpgEntry
25676 (p_business_method_code => l_bflow_method_code
25677 ,p_business_class_code => l_bflow_class_code
25678 ,p_balance_type => l_balance_type_code);
25679 ELSE
25680 NULL;
25681 -- No business flow processing for business flow method of NONE.
25682 END IF;
25683
25684 --
25685 -- call analytical criteria
25686 --
25687
25688 --
25689 -- call description
25690 --
25691 -- No description or it is inherited.
25692 --
25693 -- call ADRs
25694 -- Bug 4922099
25695 --
25696 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
25697 (NVL(l_actual_upg_option, 'N') = 'O') OR
25698 (NVL(l_enc_upg_option, 'N') = 'O')
25699 )
25700 THEN
25701 NULL;
25702 --
25703 --
25704
25705 l_ccid := AcctDerRule_4(
25706 p_application_id => p_application_id
25707 , p_ae_header_id => l_ae_header_id
25708 , p_source_4 => p_source_4
25709 , x_transaction_coa_id => l_adr_transaction_coa_id
25710 , x_accounting_coa_id => l_adr_accounting_coa_id
25711 , x_value_type_code => l_adr_value_type_code
25712 , p_side => 'NA'
25713 );
25714
25715 xla_ae_lines_pkg.set_ccid(
25716 p_code_combination_id => l_ccid
25717 , p_value_type_code => l_adr_value_type_code
25718 , p_transaction_coa_id => l_adr_transaction_coa_id
25719 , p_accounting_coa_id => l_adr_accounting_coa_id
25720 , p_adr_code => 'CST_DEFAULT'
25721 , p_adr_type_code => 'S'
25722 , p_component_type => l_component_type
25723 , p_component_code => l_component_code
25724 , p_component_type_code => l_component_type_code
25725 , p_component_appl_id => l_component_appl_id
25726 , p_amb_context_code => l_amb_context_code
25727 , p_side => 'NA'
25728 );
25729
25730
25731 --
25732 --
25733 END IF;
25734 --
25735 -- Bug 4922099
25736 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
25737 (NVL(l_enc_upg_option, 'N') = 'O')
25738 ) AND
25739 (l_bflow_method_code = 'PRIOR_ENTRY')
25740 )
25741 THEN
25742 IF
25743 --
25744 1 = 2
25745 --
25746 THEN
25747 xla_accounting_err_pkg.build_message
25748 (p_appli_s_name => 'XLA'
25749 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
25750 ,p_token_1 => 'LINE_NUMBER'
25751 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
25752 ,p_token_2 => 'LINE_TYPE_NAME'
25753 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
25754 l_component_type
25755 ,l_component_code
25756 ,l_component_type_code
25757 ,l_component_appl_id
25758 ,l_amb_context_code
25759 ,l_entity_code
25760 ,l_event_class_code
25761 )
25762 ,p_token_3 => 'OWNER'
25763 ,p_value_3 => xla_lookups_pkg.get_meaning(
25764 p_lookup_type => 'XLA_OWNER_TYPE'
25765 ,p_lookup_code => l_component_type_code
25766 )
25767 ,p_token_4 => 'PRODUCT_NAME'
25768 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
25769 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
25770 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
25771 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
25772 ,p_ae_header_id => NULL
25773 );
25774
25775 IF (C_LEVEL_ERROR>= g_log_level) THEN
25776 trace
25777 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
25778 ,p_level => C_LEVEL_ERROR
25779 ,p_module => l_log_module);
25780 END IF;
25781 END IF;
25782 END IF;
25783 --
25784 --
25785 ------------------------------------------------------------------------------------------------
25786 -- 4219869 Business Flow
25787 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
25788 -- Prior Entry. Currently, the following code is always generated.
25789 ------------------------------------------------------------------------------------------------
25790 XLA_AE_LINES_PKG.ValidateCurrentLine;
25791
25792 ------------------------------------------------------------------------------------
25793 -- 4219869 Business Flow
25794 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
25795 ------------------------------------------------------------------------------------
25796 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
25797
25798 ----------------------------------------------------------------------------------
25799 -- 4219869 Business Flow
25800 -- Update journal entry status -- Need to generate this within IF <condition>
25801 ----------------------------------------------------------------------------------
25802 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
25803 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
25804 ,p_balance_type_code => l_balance_type_code
25805 );
25806
25807 -------------------------------------------------------------------------------------------
25808 -- 4262811 - Generate the Accrual Reversal lines
25809 -------------------------------------------------------------------------------------------
25810 BEGIN
25811 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
25812 (g_array_event(p_event_id).array_value_num('header_index'));
25813 IF l_acc_rev_flag IS NULL THEN
25814 l_acc_rev_flag := 'N';
25815 END IF;
25816 EXCEPTION
25817 WHEN OTHERS THEN
25818 l_acc_rev_flag := 'N';
25819 END;
25820 --
25821 IF (l_acc_rev_flag = 'Y') THEN
25822
25823 -- 4645092 ------------------------------------------------------------------------------
25824 -- To allow MPA report to determine if it should generate report process
25825 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
25826 ------------------------------------------------------------------------------------------
25827
25828 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
25829 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
25830 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
25831 -- call ADRs
25832 -- Bug 4922099
25833 --
25834 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
25835 (NVL(l_actual_upg_option, 'N') = 'O') OR
25836 (NVL(l_enc_upg_option, 'N') = 'O')
25837 )
25838 THEN
25839 NULL;
25840 --
25841 --
25842
25843 l_ccid := AcctDerRule_4(
25844 p_application_id => p_application_id
25845 , p_ae_header_id => l_ae_header_id
25846 , p_source_4 => p_source_4
25847 , x_transaction_coa_id => l_adr_transaction_coa_id
25848 , x_accounting_coa_id => l_adr_accounting_coa_id
25849 , x_value_type_code => l_adr_value_type_code
25850 , p_side => 'NA'
25851 );
25852
25853 xla_ae_lines_pkg.set_ccid(
25854 p_code_combination_id => l_ccid
25855 , p_value_type_code => l_adr_value_type_code
25856 , p_transaction_coa_id => l_adr_transaction_coa_id
25857 , p_accounting_coa_id => l_adr_accounting_coa_id
25858 , p_adr_code => 'CST_DEFAULT'
25859 , p_adr_type_code => 'S'
25860 , p_component_type => l_component_type
25861 , p_component_code => l_component_code
25862 , p_component_type_code => l_component_type_code
25863 , p_component_appl_id => l_component_appl_id
25864 , p_amb_context_code => l_amb_context_code
25865 , p_side => 'NA'
25866 );
25867
25868
25869 --
25870 --
25871 END IF;
25872
25873 --
25874 -- Update the line information that should be overwritten
25875 --
25876 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
25877 p_header_num => 1);
25878 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
25879
25880 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
25881
25882 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
25883 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
25884 END IF;
25885
25886 --
25887 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
25888 --
25889 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
25890 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
25891 ELSE
25892 ---------------------------------------------------------------------------------------------------
25893 -- 4262811a Switch Sign
25894 ---------------------------------------------------------------------------------------------------
25895 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
25896 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
25897 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
25898 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
25899 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
25900 -- 5132302
25901 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
25902 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
25903
25904 END IF;
25905
25906 -- 4955764
25907 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
25908 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
25909
25910
25911 XLA_AE_LINES_PKG.ValidateCurrentLine;
25912 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
25913
25914 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
25915 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
25916 ,p_balance_type_code => l_balance_type_code);
25917
25918 END IF;
25919
25920 -----------------------------------------------------------------------------------------
25921 -- 4262811 Multiperiod Accounting
25922 -----------------------------------------------------------------------------------------
25923 -- No MPA option is assigned.
25924
25925
25926 END IF;
25927 END IF;
25928 --
25929
25930 --
25931 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
25932 trace
25933 (p_msg => 'END of AcctLineType_49'
25934 ,p_level => C_LEVEL_PROCEDURE
25935 ,p_module => l_log_module);
25936 END IF;
25937 --
25938 EXCEPTION
25939 WHEN xla_exceptions_pkg.application_exception THEN
25940 RAISE;
25941 WHEN OTHERS THEN
25942 xla_exceptions_pkg.raise_message
25943 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_49');
25944 END AcctLineType_49;
25945 --
25946
25947 ---------------------------------------
25948 --
25949 -- PRIVATE FUNCTION
25950 -- AcctLineType_50
25951 --
25952 ---------------------------------------
25953 PROCEDURE AcctLineType_50 (
25954 p_application_id IN NUMBER
25955 ,p_event_id IN NUMBER
25956 ,p_calculate_acctd_flag IN VARCHAR2
25957 ,p_calculate_g_l_flag IN VARCHAR2
25958 ,p_actual_flag IN OUT VARCHAR2
25959 ,p_balance_type_code OUT VARCHAR2
25960 ,p_gain_or_loss_ref OUT VARCHAR2
25961
25962 --Cost Management Default Account
25963 , p_source_4 IN NUMBER
25964 --Receiving Accounting Line Type
25965 , p_source_5 IN VARCHAR2
25966 --DISTRIBUTION_IDENTIFIER
25967 , p_source_11 IN NUMBER
25968 --Distribution Type
25969 , p_source_12 IN VARCHAR2
25970 , p_source_12_meaning IN VARCHAR2
25971 --Entered Currency Code
25972 , p_source_15 IN VARCHAR2
25973 --Entered Amount
25974 , p_source_18 IN NUMBER
25975 --Currency Conversion Date
25976 , p_source_19 IN DATE
25977 --Currency Conversion Rate
25978 , p_source_20 IN NUMBER
25979 --Currency Conversion Type
25980 , p_source_21 IN VARCHAR2
25981 --Accounted Amount
25982 , p_source_22 IN NUMBER
25983 )
25984 IS
25985
25986 l_component_type VARCHAR2(80);
25987 l_component_code VARCHAR2(30);
25988 l_component_type_code VARCHAR2(1);
25989 l_component_appl_id INTEGER;
25990 l_amb_context_code VARCHAR2(30);
25991 l_entity_code VARCHAR2(30);
25992 l_event_class_code VARCHAR2(30);
25993 l_ae_header_id NUMBER;
25994 l_event_type_code VARCHAR2(30);
25995 l_line_definition_code VARCHAR2(30);
25996 l_line_definition_owner_code VARCHAR2(1);
25997 --
25998 -- adr variables
25999 l_segment VARCHAR2(30);
26000 l_ccid NUMBER;
26001 l_adr_transaction_coa_id NUMBER;
26002 l_adr_accounting_coa_id NUMBER;
26003 l_adr_flexfield_segment_code VARCHAR2(30);
26004 l_adr_flex_value_set_id NUMBER;
26005 l_adr_value_type_code VARCHAR2(30);
26006 l_adr_value_combination_id NUMBER;
26007 l_adr_value_segment_code VARCHAR2(30);
26008
26009 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
26010 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
26011 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
26012 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
26013
26014 -- 4262811 Variables ------------------------------------------------------------------------------------------
26015 l_entered_amt_idx NUMBER;
26016 l_accted_amt_idx NUMBER;
26017 l_acc_rev_flag VARCHAR2(1);
26018 l_accrual_line_num NUMBER;
26019 l_tmp_amt NUMBER;
26020 l_acc_rev_natural_side_code VARCHAR2(1);
26021
26022 l_num_entries NUMBER;
26023 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
26024 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
26025 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
26026 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
26027 l_recog_line_1 NUMBER;
26028 l_recog_line_2 NUMBER;
26029
26030 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
26031 l_bflow_applied_to_amt NUMBER; -- 5132302
26032 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
26033
26034 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
26035
26036 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
26037 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
26038
26039 ---------------------------------------------------------------------------------------------------------------
26040
26041
26042 --
26043 -- bulk performance
26044 --
26045 l_balance_type_code VARCHAR2(1);
26046 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
26047 l_log_module VARCHAR2(240);
26048
26049 --
26050 -- Upgrade strategy
26051 --
26052 l_actual_upg_option VARCHAR2(1);
26053 l_enc_upg_option VARCHAR2(1);
26054
26055 --
26056 BEGIN
26057 --
26058 IF g_log_enabled THEN
26059 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_50';
26060 END IF;
26061 --
26062 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
26063
26064 trace
26065 (p_msg => 'BEGIN of AcctLineType_50'
26066 ,p_level => C_LEVEL_PROCEDURE
26067 ,p_module => l_log_module);
26068
26069 END IF;
26070 --
26071 l_component_type := 'AMB_JLT';
26072 l_component_code := 'INTERCOMPANY_ACCRUAL';
26073 l_component_type_code := 'S';
26074 l_component_appl_id := 707;
26075 l_amb_context_code := 'DEFAULT';
26076 l_entity_code := 'RCV_ACCOUNTING_EVENTS';
26077 l_event_class_code := 'RCPT_REC_INSP';
26078 l_event_type_code := 'RCPT_REC_INSP_ALL';
26079 l_line_definition_owner_code := 'S';
26080 l_line_definition_code := 'RCPT_REC_INSP';
26081 --
26082 l_balance_type_code := 'A';
26083 l_segment := NULL;
26084 l_ccid := NULL;
26085 l_adr_transaction_coa_id := NULL;
26086 l_adr_accounting_coa_id := NULL;
26087 l_adr_flexfield_segment_code := NULL;
26088 l_adr_flex_value_set_id := NULL;
26089 l_adr_value_type_code := NULL;
26090 l_adr_value_combination_id := NULL;
26091 l_adr_value_segment_code := NULL;
26092
26093 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
26094 l_bflow_class_code := ''; -- 4219869 Business Flow
26095 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
26096 l_budgetary_control_flag := 'N';
26097
26098 l_bflow_applied_to_amt_idx := NULL; -- 5132302
26099 l_bflow_applied_to_amt := NULL; -- 5132302
26100 l_entered_amt_idx := NULL; -- 4262811
26101 l_accted_amt_idx := NULL; -- 4262811
26102 l_acc_rev_flag := NULL; -- 4262811
26103 l_accrual_line_num := NULL; -- 4262811
26104 l_tmp_amt := NULL; -- 4262811
26105 --
26106
26107 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
26108 l_balance_type_code <> 'B' THEN
26109 IF NVL(p_source_5,'
26110 ') = 'IC Accrual'
26111 THEN
26112
26113 --
26114 XLA_AE_LINES_PKG.SetNewLine;
26115
26116 p_balance_type_code := l_balance_type_code;
26117 -- set the flag so later we will know whether the gain loss line needs to be created
26118
26119 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
26120 p_actual_flag :='A';
26121 END IF;
26122
26123 --
26124 -- bulk performance
26125 --
26126 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
26127 p_header_num => 0); -- 4262811
26128 --
26129 -- set accounting line options
26130 --
26131 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
26132 p_natural_side_code => 'D'
26133 , p_gain_or_loss_flag => 'N'
26134 , p_gl_transfer_mode_code => 'S'
26135 , p_acct_entry_type_code => 'A'
26136 , p_switch_side_flag => 'Y'
26137 , p_merge_duplicate_code => 'N'
26138 );
26139 --
26140 l_acc_rev_natural_side_code := 'C'; -- 4262811
26141 --
26142 --
26143 -- set accounting line type info
26144 --
26145 xla_ae_lines_pkg.SetAcctLineType
26146 (p_component_type => l_component_type
26147 ,p_event_type_code => l_event_type_code
26148 ,p_line_definition_owner_code => l_line_definition_owner_code
26149 ,p_line_definition_code => l_line_definition_code
26150 ,p_accounting_line_code => l_component_code
26151 ,p_accounting_line_type_code => l_component_type_code
26152 ,p_accounting_line_appl_id => l_component_appl_id
26153 ,p_amb_context_code => l_amb_context_code
26154 ,p_entity_code => l_entity_code
26155 ,p_event_class_code => l_event_class_code);
26156 --
26157 -- set accounting class
26158 --
26159 xla_ae_lines_pkg.SetAcctClass(
26160 p_accounting_class_code => 'INTERCOMPANY_ACCRUAL'
26161 , p_ae_header_id => l_ae_header_id
26162 );
26163
26164 --
26165 -- set rounding class
26166 --
26167 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
26168 'INTERCOMPANY_ACCRUAL';
26169
26170 --
26171 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
26172 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
26173 --
26174 -- bulk performance
26175 --
26176 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
26177
26178 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
26179 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
26180
26181 -- 4955764
26182 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
26183 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
26184
26185 -- 4458381 Public Sector Enh
26186
26187 --
26188 -- set accounting attributes for the line type
26189 --
26190 l_entered_amt_idx := 3;
26191 l_accted_amt_idx := 8;
26192 l_bflow_applied_to_amt_idx := NULL; -- 5132302
26193 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
26194 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
26195 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
26196 l_rec_acct_attrs.array_char_value(2) := p_source_12;
26197 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
26198 l_rec_acct_attrs.array_num_value(3) := p_source_18;
26199 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
26200 l_rec_acct_attrs.array_char_value(4) := p_source_15;
26201 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
26202 l_rec_acct_attrs.array_date_value(5) := p_source_19;
26203 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
26204 l_rec_acct_attrs.array_num_value(6) := p_source_20;
26205 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
26206 l_rec_acct_attrs.array_char_value(7) := p_source_21;
26207 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
26208 l_rec_acct_attrs.array_num_value(8) := p_source_22;
26209
26210 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
26211 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
26212
26213 ---------------------------------------------------------------------------------------------------------------
26214 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
26215 ---------------------------------------------------------------------------------------------------------------
26216 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
26217
26218 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
26219 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
26220
26221 IF xla_accounting_cache_pkg.GetValueChar
26222 (p_source_code => 'LEDGER_CATEGORY_CODE'
26223 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
26224 AND l_bflow_method_code = 'PRIOR_ENTRY'
26225 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
26226 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
26227 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
26228 )
26229 THEN
26230 xla_ae_lines_pkg.BflowUpgEntry
26231 (p_business_method_code => l_bflow_method_code
26232 ,p_business_class_code => l_bflow_class_code
26233 ,p_balance_type => l_balance_type_code);
26234 ELSE
26235 NULL;
26236 -- No business flow processing for business flow method of NONE.
26237 END IF;
26238
26239 --
26240 -- call analytical criteria
26241 --
26242
26243 --
26244 -- call description
26245 --
26246 -- No description or it is inherited.
26247 --
26248 -- call ADRs
26249 -- Bug 4922099
26250 --
26251 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
26252 (NVL(l_actual_upg_option, 'N') = 'O') OR
26253 (NVL(l_enc_upg_option, 'N') = 'O')
26254 )
26255 THEN
26256 NULL;
26257 --
26258 --
26259
26260 l_ccid := AcctDerRule_4(
26261 p_application_id => p_application_id
26262 , p_ae_header_id => l_ae_header_id
26263 , p_source_4 => p_source_4
26264 , x_transaction_coa_id => l_adr_transaction_coa_id
26265 , x_accounting_coa_id => l_adr_accounting_coa_id
26266 , x_value_type_code => l_adr_value_type_code
26267 , p_side => 'NA'
26268 );
26269
26270 xla_ae_lines_pkg.set_ccid(
26271 p_code_combination_id => l_ccid
26272 , p_value_type_code => l_adr_value_type_code
26273 , p_transaction_coa_id => l_adr_transaction_coa_id
26274 , p_accounting_coa_id => l_adr_accounting_coa_id
26275 , p_adr_code => 'CST_DEFAULT'
26276 , p_adr_type_code => 'S'
26277 , p_component_type => l_component_type
26278 , p_component_code => l_component_code
26279 , p_component_type_code => l_component_type_code
26280 , p_component_appl_id => l_component_appl_id
26281 , p_amb_context_code => l_amb_context_code
26282 , p_side => 'NA'
26283 );
26284
26285
26286 --
26287 --
26288 END IF;
26289 --
26290 -- Bug 4922099
26291 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
26292 (NVL(l_enc_upg_option, 'N') = 'O')
26293 ) AND
26294 (l_bflow_method_code = 'PRIOR_ENTRY')
26295 )
26296 THEN
26297 IF
26298 --
26299 1 = 2
26300 --
26301 THEN
26302 xla_accounting_err_pkg.build_message
26303 (p_appli_s_name => 'XLA'
26304 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
26305 ,p_token_1 => 'LINE_NUMBER'
26306 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
26307 ,p_token_2 => 'LINE_TYPE_NAME'
26308 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
26309 l_component_type
26310 ,l_component_code
26311 ,l_component_type_code
26312 ,l_component_appl_id
26313 ,l_amb_context_code
26314 ,l_entity_code
26315 ,l_event_class_code
26316 )
26317 ,p_token_3 => 'OWNER'
26318 ,p_value_3 => xla_lookups_pkg.get_meaning(
26319 p_lookup_type => 'XLA_OWNER_TYPE'
26320 ,p_lookup_code => l_component_type_code
26321 )
26322 ,p_token_4 => 'PRODUCT_NAME'
26323 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
26324 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
26325 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
26326 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
26327 ,p_ae_header_id => NULL
26328 );
26329
26330 IF (C_LEVEL_ERROR>= g_log_level) THEN
26331 trace
26332 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
26333 ,p_level => C_LEVEL_ERROR
26334 ,p_module => l_log_module);
26335 END IF;
26336 END IF;
26337 END IF;
26338 --
26339 --
26340 ------------------------------------------------------------------------------------------------
26341 -- 4219869 Business Flow
26342 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
26343 -- Prior Entry. Currently, the following code is always generated.
26344 ------------------------------------------------------------------------------------------------
26345 XLA_AE_LINES_PKG.ValidateCurrentLine;
26346
26347 ------------------------------------------------------------------------------------
26348 -- 4219869 Business Flow
26349 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
26350 ------------------------------------------------------------------------------------
26351 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
26352
26353 ----------------------------------------------------------------------------------
26354 -- 4219869 Business Flow
26355 -- Update journal entry status -- Need to generate this within IF <condition>
26356 ----------------------------------------------------------------------------------
26357 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
26358 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
26359 ,p_balance_type_code => l_balance_type_code
26360 );
26361
26362 -------------------------------------------------------------------------------------------
26363 -- 4262811 - Generate the Accrual Reversal lines
26364 -------------------------------------------------------------------------------------------
26365 BEGIN
26366 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
26367 (g_array_event(p_event_id).array_value_num('header_index'));
26368 IF l_acc_rev_flag IS NULL THEN
26369 l_acc_rev_flag := 'N';
26370 END IF;
26371 EXCEPTION
26372 WHEN OTHERS THEN
26373 l_acc_rev_flag := 'N';
26374 END;
26375 --
26376 IF (l_acc_rev_flag = 'Y') THEN
26377
26378 -- 4645092 ------------------------------------------------------------------------------
26379 -- To allow MPA report to determine if it should generate report process
26380 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
26381 ------------------------------------------------------------------------------------------
26382
26383 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
26384 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
26385 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
26386 -- call ADRs
26387 -- Bug 4922099
26388 --
26389 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
26390 (NVL(l_actual_upg_option, 'N') = 'O') OR
26391 (NVL(l_enc_upg_option, 'N') = 'O')
26392 )
26393 THEN
26394 NULL;
26395 --
26396 --
26397
26398 l_ccid := AcctDerRule_4(
26399 p_application_id => p_application_id
26400 , p_ae_header_id => l_ae_header_id
26401 , p_source_4 => p_source_4
26402 , x_transaction_coa_id => l_adr_transaction_coa_id
26403 , x_accounting_coa_id => l_adr_accounting_coa_id
26404 , x_value_type_code => l_adr_value_type_code
26405 , p_side => 'NA'
26406 );
26407
26408 xla_ae_lines_pkg.set_ccid(
26409 p_code_combination_id => l_ccid
26410 , p_value_type_code => l_adr_value_type_code
26411 , p_transaction_coa_id => l_adr_transaction_coa_id
26412 , p_accounting_coa_id => l_adr_accounting_coa_id
26413 , p_adr_code => 'CST_DEFAULT'
26414 , p_adr_type_code => 'S'
26415 , p_component_type => l_component_type
26416 , p_component_code => l_component_code
26417 , p_component_type_code => l_component_type_code
26418 , p_component_appl_id => l_component_appl_id
26419 , p_amb_context_code => l_amb_context_code
26420 , p_side => 'NA'
26421 );
26422
26423
26424 --
26425 --
26426 END IF;
26427
26428 --
26429 -- Update the line information that should be overwritten
26430 --
26431 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
26432 p_header_num => 1);
26433 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
26434
26435 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
26436
26437 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
26438 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
26439 END IF;
26440
26441 --
26442 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
26443 --
26444 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
26445 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
26446 ELSE
26447 ---------------------------------------------------------------------------------------------------
26448 -- 4262811a Switch Sign
26449 ---------------------------------------------------------------------------------------------------
26450 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
26451 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
26452 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
26453 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
26454 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
26455 -- 5132302
26456 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
26457 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
26458
26459 END IF;
26460
26461 -- 4955764
26462 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
26463 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
26464
26465
26466 XLA_AE_LINES_PKG.ValidateCurrentLine;
26467 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
26468
26469 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
26470 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
26471 ,p_balance_type_code => l_balance_type_code);
26472
26473 END IF;
26474
26475 -----------------------------------------------------------------------------------------
26476 -- 4262811 Multiperiod Accounting
26477 -----------------------------------------------------------------------------------------
26478 -- No MPA option is assigned.
26479
26480
26481 END IF;
26482 END IF;
26483 --
26484
26485 --
26486 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
26487 trace
26488 (p_msg => 'END of AcctLineType_50'
26489 ,p_level => C_LEVEL_PROCEDURE
26490 ,p_module => l_log_module);
26491 END IF;
26492 --
26493 EXCEPTION
26494 WHEN xla_exceptions_pkg.application_exception THEN
26495 RAISE;
26496 WHEN OTHERS THEN
26497 xla_exceptions_pkg.raise_message
26498 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_50');
26499 END AcctLineType_50;
26500 --
26501
26502 ---------------------------------------
26503 --
26504 -- PRIVATE FUNCTION
26505 -- AcctLineType_51
26506 --
26507 ---------------------------------------
26508 PROCEDURE AcctLineType_51 (
26509 p_application_id IN NUMBER
26510 ,p_event_id IN NUMBER
26511 ,p_calculate_acctd_flag IN VARCHAR2
26512 ,p_calculate_g_l_flag IN VARCHAR2
26513 ,p_actual_flag IN OUT VARCHAR2
26514 ,p_balance_type_code OUT VARCHAR2
26515 ,p_gain_or_loss_ref OUT VARCHAR2
26516
26517 --Cost Management Default Account
26518 , p_source_4 IN NUMBER
26519 --DISTRIBUTION_IDENTIFIER
26520 , p_source_11 IN NUMBER
26521 --Distribution Type
26522 , p_source_12 IN VARCHAR2
26523 , p_source_12_meaning IN VARCHAR2
26524 --Entered Currency Code
26525 , p_source_15 IN VARCHAR2
26526 --Entered Amount
26527 , p_source_18 IN NUMBER
26528 --Currency Conversion Date
26529 , p_source_19 IN DATE
26530 --Currency Conversion Rate
26531 , p_source_20 IN NUMBER
26532 --Currency Conversion Type
26533 , p_source_21 IN VARCHAR2
26534 --Accounted Amount
26535 , p_source_22 IN NUMBER
26536 --Accounting Line Type
26537 , p_source_24 IN NUMBER
26538 )
26539 IS
26540
26541 l_component_type VARCHAR2(80);
26542 l_component_code VARCHAR2(30);
26543 l_component_type_code VARCHAR2(1);
26544 l_component_appl_id INTEGER;
26545 l_amb_context_code VARCHAR2(30);
26546 l_entity_code VARCHAR2(30);
26547 l_event_class_code VARCHAR2(30);
26548 l_ae_header_id NUMBER;
26549 l_event_type_code VARCHAR2(30);
26550 l_line_definition_code VARCHAR2(30);
26551 l_line_definition_owner_code VARCHAR2(1);
26552 --
26553 -- adr variables
26554 l_segment VARCHAR2(30);
26555 l_ccid NUMBER;
26556 l_adr_transaction_coa_id NUMBER;
26557 l_adr_accounting_coa_id NUMBER;
26558 l_adr_flexfield_segment_code VARCHAR2(30);
26559 l_adr_flex_value_set_id NUMBER;
26560 l_adr_value_type_code VARCHAR2(30);
26561 l_adr_value_combination_id NUMBER;
26562 l_adr_value_segment_code VARCHAR2(30);
26563
26564 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
26565 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
26566 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
26567 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
26568
26569 -- 4262811 Variables ------------------------------------------------------------------------------------------
26570 l_entered_amt_idx NUMBER;
26571 l_accted_amt_idx NUMBER;
26572 l_acc_rev_flag VARCHAR2(1);
26573 l_accrual_line_num NUMBER;
26574 l_tmp_amt NUMBER;
26575 l_acc_rev_natural_side_code VARCHAR2(1);
26576
26577 l_num_entries NUMBER;
26578 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
26579 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
26580 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
26581 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
26582 l_recog_line_1 NUMBER;
26583 l_recog_line_2 NUMBER;
26584
26585 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
26586 l_bflow_applied_to_amt NUMBER; -- 5132302
26587 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
26588
26589 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
26590
26591 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
26592 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
26593
26594 ---------------------------------------------------------------------------------------------------------------
26595
26596
26597 --
26598 -- bulk performance
26599 --
26600 l_balance_type_code VARCHAR2(1);
26601 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
26602 l_log_module VARCHAR2(240);
26603
26604 --
26605 -- Upgrade strategy
26606 --
26607 l_actual_upg_option VARCHAR2(1);
26608 l_enc_upg_option VARCHAR2(1);
26609
26610 --
26611 BEGIN
26612 --
26613 IF g_log_enabled THEN
26614 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_51';
26615 END IF;
26616 --
26617 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
26618
26619 trace
26620 (p_msg => 'BEGIN of AcctLineType_51'
26621 ,p_level => C_LEVEL_PROCEDURE
26622 ,p_module => l_log_module);
26623
26624 END IF;
26625 --
26626 l_component_type := 'AMB_JLT';
26627 l_component_code := 'INTERCOMPANY_ACCRUAL';
26628 l_component_type_code := 'S';
26629 l_component_appl_id := 707;
26630 l_amb_context_code := 'DEFAULT';
26631 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
26632 l_event_class_code := 'FOB_SHIP_RECIPIENT_SHIP';
26633 l_event_type_code := 'FOB_SHIP_RECIPIENT_SHIP_ALL';
26634 l_line_definition_owner_code := 'S';
26635 l_line_definition_code := 'FOB_SHIP_RECIPIENT_SHIP';
26636 --
26637 l_balance_type_code := 'A';
26638 l_segment := NULL;
26639 l_ccid := NULL;
26640 l_adr_transaction_coa_id := NULL;
26641 l_adr_accounting_coa_id := NULL;
26642 l_adr_flexfield_segment_code := NULL;
26643 l_adr_flex_value_set_id := NULL;
26644 l_adr_value_type_code := NULL;
26645 l_adr_value_combination_id := NULL;
26646 l_adr_value_segment_code := NULL;
26647
26648 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
26649 l_bflow_class_code := ''; -- 4219869 Business Flow
26650 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
26651 l_budgetary_control_flag := 'N';
26652
26653 l_bflow_applied_to_amt_idx := NULL; -- 5132302
26654 l_bflow_applied_to_amt := NULL; -- 5132302
26655 l_entered_amt_idx := NULL; -- 4262811
26656 l_accted_amt_idx := NULL; -- 4262811
26657 l_acc_rev_flag := NULL; -- 4262811
26658 l_accrual_line_num := NULL; -- 4262811
26659 l_tmp_amt := NULL; -- 4262811
26660 --
26661
26662 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
26663 l_balance_type_code <> 'B' THEN
26664 IF NVL(p_source_24,9E125) = 2 AND
26665 p_source_22 < 0
26666 THEN
26667
26668 --
26669 XLA_AE_LINES_PKG.SetNewLine;
26670
26671 p_balance_type_code := l_balance_type_code;
26672 -- set the flag so later we will know whether the gain loss line needs to be created
26673
26674 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
26675 p_actual_flag :='A';
26676 END IF;
26677
26678 --
26679 -- bulk performance
26680 --
26681 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
26682 p_header_num => 0); -- 4262811
26683 --
26684 -- set accounting line options
26685 --
26686 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
26687 p_natural_side_code => 'D'
26688 , p_gain_or_loss_flag => 'N'
26689 , p_gl_transfer_mode_code => 'S'
26690 , p_acct_entry_type_code => 'A'
26691 , p_switch_side_flag => 'Y'
26692 , p_merge_duplicate_code => 'N'
26693 );
26694 --
26695 l_acc_rev_natural_side_code := 'C'; -- 4262811
26696 --
26697 --
26698 -- set accounting line type info
26699 --
26700 xla_ae_lines_pkg.SetAcctLineType
26701 (p_component_type => l_component_type
26702 ,p_event_type_code => l_event_type_code
26703 ,p_line_definition_owner_code => l_line_definition_owner_code
26704 ,p_line_definition_code => l_line_definition_code
26705 ,p_accounting_line_code => l_component_code
26706 ,p_accounting_line_type_code => l_component_type_code
26707 ,p_accounting_line_appl_id => l_component_appl_id
26708 ,p_amb_context_code => l_amb_context_code
26709 ,p_entity_code => l_entity_code
26710 ,p_event_class_code => l_event_class_code);
26711 --
26712 -- set accounting class
26713 --
26714 xla_ae_lines_pkg.SetAcctClass(
26715 p_accounting_class_code => 'INTERCOMPANY_ACCRUAL'
26716 , p_ae_header_id => l_ae_header_id
26717 );
26718
26719 --
26720 -- set rounding class
26721 --
26722 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
26723 'INTERCOMPANY_ACCRUAL';
26724
26725 --
26726 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
26727 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
26728 --
26729 -- bulk performance
26730 --
26731 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
26732
26733 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
26734 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
26735
26736 -- 4955764
26737 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
26738 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
26739
26740 -- 4458381 Public Sector Enh
26741
26742 --
26743 -- set accounting attributes for the line type
26744 --
26745 l_entered_amt_idx := 3;
26746 l_accted_amt_idx := 8;
26747 l_bflow_applied_to_amt_idx := NULL; -- 5132302
26748 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
26749 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
26750 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
26751 l_rec_acct_attrs.array_char_value(2) := p_source_12;
26752 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
26753 l_rec_acct_attrs.array_num_value(3) := p_source_18;
26754 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
26755 l_rec_acct_attrs.array_char_value(4) := p_source_15;
26756 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
26757 l_rec_acct_attrs.array_date_value(5) := p_source_19;
26758 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
26759 l_rec_acct_attrs.array_num_value(6) := p_source_20;
26760 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
26761 l_rec_acct_attrs.array_char_value(7) := p_source_21;
26762 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
26763 l_rec_acct_attrs.array_num_value(8) := p_source_22;
26764
26765 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
26766 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
26767
26768 ---------------------------------------------------------------------------------------------------------------
26769 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
26770 ---------------------------------------------------------------------------------------------------------------
26771 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
26772
26773 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
26774 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
26775
26776 IF xla_accounting_cache_pkg.GetValueChar
26777 (p_source_code => 'LEDGER_CATEGORY_CODE'
26778 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
26779 AND l_bflow_method_code = 'PRIOR_ENTRY'
26780 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
26781 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
26782 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
26783 )
26784 THEN
26785 xla_ae_lines_pkg.BflowUpgEntry
26786 (p_business_method_code => l_bflow_method_code
26787 ,p_business_class_code => l_bflow_class_code
26788 ,p_balance_type => l_balance_type_code);
26789 ELSE
26790 NULL;
26791 -- No business flow processing for business flow method of NONE.
26792 END IF;
26793
26794 --
26795 -- call analytical criteria
26796 --
26797
26798 --
26799 -- call description
26800 --
26801 -- No description or it is inherited.
26802 --
26803 -- call ADRs
26804 -- Bug 4922099
26805 --
26806 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
26807 (NVL(l_actual_upg_option, 'N') = 'O') OR
26808 (NVL(l_enc_upg_option, 'N') = 'O')
26809 )
26810 THEN
26811 NULL;
26812 --
26813 --
26814
26815 l_ccid := AcctDerRule_4(
26816 p_application_id => p_application_id
26817 , p_ae_header_id => l_ae_header_id
26818 , p_source_4 => p_source_4
26819 , x_transaction_coa_id => l_adr_transaction_coa_id
26820 , x_accounting_coa_id => l_adr_accounting_coa_id
26821 , x_value_type_code => l_adr_value_type_code
26822 , p_side => 'NA'
26823 );
26824
26825 xla_ae_lines_pkg.set_ccid(
26826 p_code_combination_id => l_ccid
26827 , p_value_type_code => l_adr_value_type_code
26828 , p_transaction_coa_id => l_adr_transaction_coa_id
26829 , p_accounting_coa_id => l_adr_accounting_coa_id
26830 , p_adr_code => 'CST_DEFAULT'
26831 , p_adr_type_code => 'S'
26832 , p_component_type => l_component_type
26833 , p_component_code => l_component_code
26834 , p_component_type_code => l_component_type_code
26835 , p_component_appl_id => l_component_appl_id
26836 , p_amb_context_code => l_amb_context_code
26837 , p_side => 'NA'
26838 );
26839
26840
26841 --
26842 --
26843 END IF;
26844 --
26845 -- Bug 4922099
26846 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
26847 (NVL(l_enc_upg_option, 'N') = 'O')
26848 ) AND
26849 (l_bflow_method_code = 'PRIOR_ENTRY')
26850 )
26851 THEN
26852 IF
26853 --
26854 1 = 2
26855 --
26856 THEN
26857 xla_accounting_err_pkg.build_message
26858 (p_appli_s_name => 'XLA'
26859 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
26860 ,p_token_1 => 'LINE_NUMBER'
26861 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
26862 ,p_token_2 => 'LINE_TYPE_NAME'
26863 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
26864 l_component_type
26865 ,l_component_code
26866 ,l_component_type_code
26867 ,l_component_appl_id
26868 ,l_amb_context_code
26869 ,l_entity_code
26870 ,l_event_class_code
26871 )
26872 ,p_token_3 => 'OWNER'
26873 ,p_value_3 => xla_lookups_pkg.get_meaning(
26874 p_lookup_type => 'XLA_OWNER_TYPE'
26875 ,p_lookup_code => l_component_type_code
26876 )
26877 ,p_token_4 => 'PRODUCT_NAME'
26878 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
26879 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
26880 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
26881 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
26882 ,p_ae_header_id => NULL
26883 );
26884
26885 IF (C_LEVEL_ERROR>= g_log_level) THEN
26886 trace
26887 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
26888 ,p_level => C_LEVEL_ERROR
26889 ,p_module => l_log_module);
26890 END IF;
26891 END IF;
26892 END IF;
26893 --
26894 --
26895 ------------------------------------------------------------------------------------------------
26896 -- 4219869 Business Flow
26897 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
26898 -- Prior Entry. Currently, the following code is always generated.
26899 ------------------------------------------------------------------------------------------------
26900 XLA_AE_LINES_PKG.ValidateCurrentLine;
26901
26902 ------------------------------------------------------------------------------------
26903 -- 4219869 Business Flow
26904 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
26905 ------------------------------------------------------------------------------------
26906 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
26907
26908 ----------------------------------------------------------------------------------
26909 -- 4219869 Business Flow
26910 -- Update journal entry status -- Need to generate this within IF <condition>
26911 ----------------------------------------------------------------------------------
26912 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
26913 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
26914 ,p_balance_type_code => l_balance_type_code
26915 );
26916
26917 -------------------------------------------------------------------------------------------
26918 -- 4262811 - Generate the Accrual Reversal lines
26919 -------------------------------------------------------------------------------------------
26920 BEGIN
26921 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
26922 (g_array_event(p_event_id).array_value_num('header_index'));
26923 IF l_acc_rev_flag IS NULL THEN
26924 l_acc_rev_flag := 'N';
26925 END IF;
26926 EXCEPTION
26927 WHEN OTHERS THEN
26928 l_acc_rev_flag := 'N';
26929 END;
26930 --
26931 IF (l_acc_rev_flag = 'Y') THEN
26932
26933 -- 4645092 ------------------------------------------------------------------------------
26934 -- To allow MPA report to determine if it should generate report process
26935 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
26936 ------------------------------------------------------------------------------------------
26937
26938 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
26939 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
26940 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
26941 -- call ADRs
26942 -- Bug 4922099
26943 --
26944 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
26945 (NVL(l_actual_upg_option, 'N') = 'O') OR
26946 (NVL(l_enc_upg_option, 'N') = 'O')
26947 )
26948 THEN
26949 NULL;
26950 --
26951 --
26952
26953 l_ccid := AcctDerRule_4(
26954 p_application_id => p_application_id
26955 , p_ae_header_id => l_ae_header_id
26956 , p_source_4 => p_source_4
26957 , x_transaction_coa_id => l_adr_transaction_coa_id
26958 , x_accounting_coa_id => l_adr_accounting_coa_id
26959 , x_value_type_code => l_adr_value_type_code
26960 , p_side => 'NA'
26961 );
26962
26963 xla_ae_lines_pkg.set_ccid(
26964 p_code_combination_id => l_ccid
26965 , p_value_type_code => l_adr_value_type_code
26966 , p_transaction_coa_id => l_adr_transaction_coa_id
26967 , p_accounting_coa_id => l_adr_accounting_coa_id
26968 , p_adr_code => 'CST_DEFAULT'
26969 , p_adr_type_code => 'S'
26970 , p_component_type => l_component_type
26971 , p_component_code => l_component_code
26972 , p_component_type_code => l_component_type_code
26973 , p_component_appl_id => l_component_appl_id
26974 , p_amb_context_code => l_amb_context_code
26975 , p_side => 'NA'
26976 );
26977
26978
26979 --
26980 --
26981 END IF;
26982
26983 --
26984 -- Update the line information that should be overwritten
26985 --
26986 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
26987 p_header_num => 1);
26988 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
26989
26990 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
26991
26992 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
26993 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
26994 END IF;
26995
26996 --
26997 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
26998 --
26999 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
27000 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
27001 ELSE
27002 ---------------------------------------------------------------------------------------------------
27003 -- 4262811a Switch Sign
27004 ---------------------------------------------------------------------------------------------------
27005 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
27006 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
27007 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
27008 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
27009 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
27010 -- 5132302
27011 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
27012 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
27013
27014 END IF;
27015
27016 -- 4955764
27017 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
27018 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
27019
27020
27021 XLA_AE_LINES_PKG.ValidateCurrentLine;
27022 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
27023
27024 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
27025 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
27026 ,p_balance_type_code => l_balance_type_code);
27027
27028 END IF;
27029
27030 -----------------------------------------------------------------------------------------
27031 -- 4262811 Multiperiod Accounting
27032 -----------------------------------------------------------------------------------------
27033 -- No MPA option is assigned.
27034
27035
27036 END IF;
27037 END IF;
27038 --
27039
27040 --
27041 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
27042 trace
27043 (p_msg => 'END of AcctLineType_51'
27044 ,p_level => C_LEVEL_PROCEDURE
27045 ,p_module => l_log_module);
27046 END IF;
27047 --
27048 EXCEPTION
27049 WHEN xla_exceptions_pkg.application_exception THEN
27050 RAISE;
27051 WHEN OTHERS THEN
27052 xla_exceptions_pkg.raise_message
27053 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_51');
27054 END AcctLineType_51;
27055 --
27056
27057 ---------------------------------------
27058 --
27059 -- PRIVATE FUNCTION
27060 -- AcctLineType_52
27061 --
27062 ---------------------------------------
27063 PROCEDURE AcctLineType_52 (
27064 p_application_id IN NUMBER
27065 ,p_event_id IN NUMBER
27066 ,p_calculate_acctd_flag IN VARCHAR2
27067 ,p_calculate_g_l_flag IN VARCHAR2
27068 ,p_actual_flag IN OUT VARCHAR2
27069 ,p_balance_type_code OUT VARCHAR2
27070 ,p_gain_or_loss_ref OUT VARCHAR2
27071
27072 --Cost Management Default Account
27073 , p_source_4 IN NUMBER
27074 --DISTRIBUTION_IDENTIFIER
27075 , p_source_11 IN NUMBER
27076 --Distribution Type
27077 , p_source_12 IN VARCHAR2
27078 , p_source_12_meaning IN VARCHAR2
27079 --Entered Currency Code
27080 , p_source_15 IN VARCHAR2
27081 --Entered Amount
27082 , p_source_18 IN NUMBER
27083 --Currency Conversion Date
27084 , p_source_19 IN DATE
27085 --Currency Conversion Rate
27086 , p_source_20 IN NUMBER
27087 --Currency Conversion Type
27088 , p_source_21 IN VARCHAR2
27089 --Accounted Amount
27090 , p_source_22 IN NUMBER
27091 --Accounting Line Type
27092 , p_source_24 IN NUMBER
27093 )
27094 IS
27095
27096 l_component_type VARCHAR2(80);
27097 l_component_code VARCHAR2(30);
27098 l_component_type_code VARCHAR2(1);
27099 l_component_appl_id INTEGER;
27100 l_amb_context_code VARCHAR2(30);
27101 l_entity_code VARCHAR2(30);
27102 l_event_class_code VARCHAR2(30);
27103 l_ae_header_id NUMBER;
27104 l_event_type_code VARCHAR2(30);
27105 l_line_definition_code VARCHAR2(30);
27106 l_line_definition_owner_code VARCHAR2(1);
27107 --
27108 -- adr variables
27109 l_segment VARCHAR2(30);
27110 l_ccid NUMBER;
27111 l_adr_transaction_coa_id NUMBER;
27112 l_adr_accounting_coa_id NUMBER;
27113 l_adr_flexfield_segment_code VARCHAR2(30);
27114 l_adr_flex_value_set_id NUMBER;
27115 l_adr_value_type_code VARCHAR2(30);
27116 l_adr_value_combination_id NUMBER;
27117 l_adr_value_segment_code VARCHAR2(30);
27118
27119 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
27120 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
27121 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
27122 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
27123
27124 -- 4262811 Variables ------------------------------------------------------------------------------------------
27125 l_entered_amt_idx NUMBER;
27126 l_accted_amt_idx NUMBER;
27127 l_acc_rev_flag VARCHAR2(1);
27128 l_accrual_line_num NUMBER;
27129 l_tmp_amt NUMBER;
27130 l_acc_rev_natural_side_code VARCHAR2(1);
27131
27132 l_num_entries NUMBER;
27133 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
27134 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
27135 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
27136 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
27137 l_recog_line_1 NUMBER;
27138 l_recog_line_2 NUMBER;
27139
27140 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
27141 l_bflow_applied_to_amt NUMBER; -- 5132302
27142 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
27143
27144 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
27145
27146 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
27147 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
27148
27149 ---------------------------------------------------------------------------------------------------------------
27150
27151
27152 --
27153 -- bulk performance
27154 --
27155 l_balance_type_code VARCHAR2(1);
27156 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
27157 l_log_module VARCHAR2(240);
27158
27159 --
27160 -- Upgrade strategy
27161 --
27162 l_actual_upg_option VARCHAR2(1);
27163 l_enc_upg_option VARCHAR2(1);
27164
27165 --
27166 BEGIN
27167 --
27168 IF g_log_enabled THEN
27169 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_52';
27170 END IF;
27171 --
27172 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
27173
27174 trace
27175 (p_msg => 'BEGIN of AcctLineType_52'
27176 ,p_level => C_LEVEL_PROCEDURE
27177 ,p_module => l_log_module);
27178
27179 END IF;
27180 --
27181 l_component_type := 'AMB_JLT';
27182 l_component_code := 'INTERCOMPANY_ACCRUAL';
27183 l_component_type_code := 'S';
27184 l_component_appl_id := 707;
27185 l_amb_context_code := 'DEFAULT';
27186 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
27187 l_event_class_code := 'USER_DEFINE';
27188 l_event_type_code := 'UFOB_SHIP_RECIPIENT_SHIP_NO_TP';
27189 l_line_definition_owner_code := 'S';
27190 l_line_definition_code := 'USER_FOB_SHIP_RECP_SHIP_NO_TP';
27191 --
27192 l_balance_type_code := 'A';
27193 l_segment := NULL;
27194 l_ccid := NULL;
27195 l_adr_transaction_coa_id := NULL;
27196 l_adr_accounting_coa_id := NULL;
27197 l_adr_flexfield_segment_code := NULL;
27198 l_adr_flex_value_set_id := NULL;
27199 l_adr_value_type_code := NULL;
27200 l_adr_value_combination_id := NULL;
27201 l_adr_value_segment_code := NULL;
27202
27203 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
27204 l_bflow_class_code := ''; -- 4219869 Business Flow
27205 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
27206 l_budgetary_control_flag := 'N';
27207
27208 l_bflow_applied_to_amt_idx := NULL; -- 5132302
27209 l_bflow_applied_to_amt := NULL; -- 5132302
27210 l_entered_amt_idx := NULL; -- 4262811
27211 l_accted_amt_idx := NULL; -- 4262811
27212 l_acc_rev_flag := NULL; -- 4262811
27213 l_accrual_line_num := NULL; -- 4262811
27214 l_tmp_amt := NULL; -- 4262811
27215 --
27216
27217 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
27218 l_balance_type_code <> 'B' THEN
27219 IF NVL(p_source_24,9E125) = 2 AND
27220 p_source_22 < 0
27221 THEN
27222
27223 --
27224 XLA_AE_LINES_PKG.SetNewLine;
27225
27226 p_balance_type_code := l_balance_type_code;
27227 -- set the flag so later we will know whether the gain loss line needs to be created
27228
27229 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
27230 p_actual_flag :='A';
27231 END IF;
27232
27233 --
27234 -- bulk performance
27235 --
27236 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
27237 p_header_num => 0); -- 4262811
27238 --
27239 -- set accounting line options
27240 --
27241 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
27242 p_natural_side_code => 'D'
27243 , p_gain_or_loss_flag => 'N'
27244 , p_gl_transfer_mode_code => 'S'
27245 , p_acct_entry_type_code => 'A'
27246 , p_switch_side_flag => 'Y'
27247 , p_merge_duplicate_code => 'N'
27248 );
27249 --
27250 l_acc_rev_natural_side_code := 'C'; -- 4262811
27251 --
27252 --
27253 -- set accounting line type info
27254 --
27255 xla_ae_lines_pkg.SetAcctLineType
27256 (p_component_type => l_component_type
27257 ,p_event_type_code => l_event_type_code
27258 ,p_line_definition_owner_code => l_line_definition_owner_code
27259 ,p_line_definition_code => l_line_definition_code
27260 ,p_accounting_line_code => l_component_code
27261 ,p_accounting_line_type_code => l_component_type_code
27262 ,p_accounting_line_appl_id => l_component_appl_id
27263 ,p_amb_context_code => l_amb_context_code
27264 ,p_entity_code => l_entity_code
27265 ,p_event_class_code => l_event_class_code);
27266 --
27267 -- set accounting class
27268 --
27269 xla_ae_lines_pkg.SetAcctClass(
27270 p_accounting_class_code => 'INTERCOMPANY_ACCRUAL'
27271 , p_ae_header_id => l_ae_header_id
27272 );
27273
27274 --
27275 -- set rounding class
27276 --
27277 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
27278 'INTERCOMPANY_ACCRUAL';
27279
27280 --
27281 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
27282 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
27283 --
27284 -- bulk performance
27285 --
27286 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
27287
27288 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
27289 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
27290
27291 -- 4955764
27292 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
27293 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
27294
27295 -- 4458381 Public Sector Enh
27296
27297 --
27298 -- set accounting attributes for the line type
27299 --
27300 l_entered_amt_idx := 3;
27301 l_accted_amt_idx := 8;
27302 l_bflow_applied_to_amt_idx := NULL; -- 5132302
27303 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
27304 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
27305 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
27306 l_rec_acct_attrs.array_char_value(2) := p_source_12;
27307 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
27308 l_rec_acct_attrs.array_num_value(3) := p_source_18;
27309 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
27310 l_rec_acct_attrs.array_char_value(4) := p_source_15;
27311 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
27312 l_rec_acct_attrs.array_date_value(5) := p_source_19;
27313 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
27314 l_rec_acct_attrs.array_num_value(6) := p_source_20;
27315 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
27316 l_rec_acct_attrs.array_char_value(7) := p_source_21;
27317 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
27318 l_rec_acct_attrs.array_num_value(8) := p_source_22;
27319
27320 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
27321 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
27322
27323 ---------------------------------------------------------------------------------------------------------------
27324 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
27325 ---------------------------------------------------------------------------------------------------------------
27326 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
27327
27328 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
27329 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
27330
27331 IF xla_accounting_cache_pkg.GetValueChar
27332 (p_source_code => 'LEDGER_CATEGORY_CODE'
27333 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
27334 AND l_bflow_method_code = 'PRIOR_ENTRY'
27335 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
27336 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
27337 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
27338 )
27339 THEN
27340 xla_ae_lines_pkg.BflowUpgEntry
27341 (p_business_method_code => l_bflow_method_code
27342 ,p_business_class_code => l_bflow_class_code
27343 ,p_balance_type => l_balance_type_code);
27344 ELSE
27345 NULL;
27346 -- No business flow processing for business flow method of NONE.
27347 END IF;
27348
27349 --
27350 -- call analytical criteria
27351 --
27352
27353 --
27354 -- call description
27355 --
27356 -- No description or it is inherited.
27357 --
27358 -- call ADRs
27359 -- Bug 4922099
27360 --
27361 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
27362 (NVL(l_actual_upg_option, 'N') = 'O') OR
27363 (NVL(l_enc_upg_option, 'N') = 'O')
27364 )
27365 THEN
27366 NULL;
27367 --
27368 --
27369
27370 l_ccid := AcctDerRule_4(
27371 p_application_id => p_application_id
27372 , p_ae_header_id => l_ae_header_id
27373 , p_source_4 => p_source_4
27374 , x_transaction_coa_id => l_adr_transaction_coa_id
27375 , x_accounting_coa_id => l_adr_accounting_coa_id
27376 , x_value_type_code => l_adr_value_type_code
27377 , p_side => 'NA'
27378 );
27379
27380 xla_ae_lines_pkg.set_ccid(
27381 p_code_combination_id => l_ccid
27382 , p_value_type_code => l_adr_value_type_code
27383 , p_transaction_coa_id => l_adr_transaction_coa_id
27384 , p_accounting_coa_id => l_adr_accounting_coa_id
27385 , p_adr_code => 'CST_DEFAULT'
27386 , p_adr_type_code => 'S'
27387 , p_component_type => l_component_type
27388 , p_component_code => l_component_code
27389 , p_component_type_code => l_component_type_code
27390 , p_component_appl_id => l_component_appl_id
27391 , p_amb_context_code => l_amb_context_code
27392 , p_side => 'NA'
27393 );
27394
27395
27396 --
27397 --
27398 END IF;
27399 --
27400 -- Bug 4922099
27401 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
27402 (NVL(l_enc_upg_option, 'N') = 'O')
27403 ) AND
27404 (l_bflow_method_code = 'PRIOR_ENTRY')
27405 )
27406 THEN
27407 IF
27408 --
27409 1 = 2
27410 --
27411 THEN
27412 xla_accounting_err_pkg.build_message
27413 (p_appli_s_name => 'XLA'
27414 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
27415 ,p_token_1 => 'LINE_NUMBER'
27416 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
27417 ,p_token_2 => 'LINE_TYPE_NAME'
27418 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
27419 l_component_type
27420 ,l_component_code
27421 ,l_component_type_code
27422 ,l_component_appl_id
27423 ,l_amb_context_code
27424 ,l_entity_code
27425 ,l_event_class_code
27426 )
27427 ,p_token_3 => 'OWNER'
27428 ,p_value_3 => xla_lookups_pkg.get_meaning(
27429 p_lookup_type => 'XLA_OWNER_TYPE'
27430 ,p_lookup_code => l_component_type_code
27431 )
27432 ,p_token_4 => 'PRODUCT_NAME'
27433 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
27434 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
27435 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
27436 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
27437 ,p_ae_header_id => NULL
27438 );
27439
27440 IF (C_LEVEL_ERROR>= g_log_level) THEN
27441 trace
27442 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
27443 ,p_level => C_LEVEL_ERROR
27444 ,p_module => l_log_module);
27445 END IF;
27446 END IF;
27447 END IF;
27448 --
27449 --
27450 ------------------------------------------------------------------------------------------------
27451 -- 4219869 Business Flow
27452 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
27453 -- Prior Entry. Currently, the following code is always generated.
27454 ------------------------------------------------------------------------------------------------
27455 XLA_AE_LINES_PKG.ValidateCurrentLine;
27456
27457 ------------------------------------------------------------------------------------
27458 -- 4219869 Business Flow
27459 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
27460 ------------------------------------------------------------------------------------
27461 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
27462
27463 ----------------------------------------------------------------------------------
27464 -- 4219869 Business Flow
27465 -- Update journal entry status -- Need to generate this within IF <condition>
27466 ----------------------------------------------------------------------------------
27467 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
27468 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
27469 ,p_balance_type_code => l_balance_type_code
27470 );
27471
27472 -------------------------------------------------------------------------------------------
27473 -- 4262811 - Generate the Accrual Reversal lines
27474 -------------------------------------------------------------------------------------------
27475 BEGIN
27476 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
27477 (g_array_event(p_event_id).array_value_num('header_index'));
27478 IF l_acc_rev_flag IS NULL THEN
27479 l_acc_rev_flag := 'N';
27480 END IF;
27481 EXCEPTION
27482 WHEN OTHERS THEN
27483 l_acc_rev_flag := 'N';
27484 END;
27485 --
27486 IF (l_acc_rev_flag = 'Y') THEN
27487
27488 -- 4645092 ------------------------------------------------------------------------------
27489 -- To allow MPA report to determine if it should generate report process
27490 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
27491 ------------------------------------------------------------------------------------------
27492
27493 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
27494 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
27495 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
27496 -- call ADRs
27497 -- Bug 4922099
27498 --
27499 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
27500 (NVL(l_actual_upg_option, 'N') = 'O') OR
27501 (NVL(l_enc_upg_option, 'N') = 'O')
27502 )
27503 THEN
27504 NULL;
27505 --
27506 --
27507
27508 l_ccid := AcctDerRule_4(
27509 p_application_id => p_application_id
27510 , p_ae_header_id => l_ae_header_id
27511 , p_source_4 => p_source_4
27512 , x_transaction_coa_id => l_adr_transaction_coa_id
27513 , x_accounting_coa_id => l_adr_accounting_coa_id
27514 , x_value_type_code => l_adr_value_type_code
27515 , p_side => 'NA'
27516 );
27517
27518 xla_ae_lines_pkg.set_ccid(
27519 p_code_combination_id => l_ccid
27520 , p_value_type_code => l_adr_value_type_code
27521 , p_transaction_coa_id => l_adr_transaction_coa_id
27522 , p_accounting_coa_id => l_adr_accounting_coa_id
27523 , p_adr_code => 'CST_DEFAULT'
27524 , p_adr_type_code => 'S'
27525 , p_component_type => l_component_type
27526 , p_component_code => l_component_code
27527 , p_component_type_code => l_component_type_code
27528 , p_component_appl_id => l_component_appl_id
27529 , p_amb_context_code => l_amb_context_code
27530 , p_side => 'NA'
27531 );
27532
27533
27534 --
27535 --
27536 END IF;
27537
27538 --
27539 -- Update the line information that should be overwritten
27540 --
27541 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
27542 p_header_num => 1);
27543 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
27544
27545 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
27546
27547 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
27548 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
27549 END IF;
27550
27551 --
27552 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
27553 --
27554 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
27555 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
27556 ELSE
27557 ---------------------------------------------------------------------------------------------------
27558 -- 4262811a Switch Sign
27559 ---------------------------------------------------------------------------------------------------
27560 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
27561 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
27562 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
27563 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
27564 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
27565 -- 5132302
27566 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
27567 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
27568
27569 END IF;
27570
27571 -- 4955764
27572 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
27573 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
27574
27575
27576 XLA_AE_LINES_PKG.ValidateCurrentLine;
27577 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
27578
27579 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
27580 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
27581 ,p_balance_type_code => l_balance_type_code);
27582
27583 END IF;
27584
27585 -----------------------------------------------------------------------------------------
27586 -- 4262811 Multiperiod Accounting
27587 -----------------------------------------------------------------------------------------
27588 -- No MPA option is assigned.
27589
27590
27591 END IF;
27592 END IF;
27593 --
27594
27595 --
27596 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
27597 trace
27598 (p_msg => 'END of AcctLineType_52'
27599 ,p_level => C_LEVEL_PROCEDURE
27600 ,p_module => l_log_module);
27601 END IF;
27602 --
27603 EXCEPTION
27604 WHEN xla_exceptions_pkg.application_exception THEN
27605 RAISE;
27606 WHEN OTHERS THEN
27607 xla_exceptions_pkg.raise_message
27608 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_52');
27609 END AcctLineType_52;
27610 --
27611
27612 ---------------------------------------
27613 --
27614 -- PRIVATE FUNCTION
27615 -- AcctLineType_53
27616 --
27617 ---------------------------------------
27618 PROCEDURE AcctLineType_53 (
27619 p_application_id IN NUMBER
27620 ,p_event_id IN NUMBER
27621 ,p_calculate_acctd_flag IN VARCHAR2
27622 ,p_calculate_g_l_flag IN VARCHAR2
27623 ,p_actual_flag IN OUT VARCHAR2
27624 ,p_balance_type_code OUT VARCHAR2
27625 ,p_gain_or_loss_ref OUT VARCHAR2
27626
27627 --Cost Management Default Account
27628 , p_source_4 IN NUMBER
27629 --DISTRIBUTION_IDENTIFIER
27630 , p_source_11 IN NUMBER
27631 --Distribution Type
27632 , p_source_12 IN VARCHAR2
27633 , p_source_12_meaning IN VARCHAR2
27634 --Entered Currency Code
27635 , p_source_15 IN VARCHAR2
27636 --Entered Amount
27637 , p_source_18 IN NUMBER
27638 --Currency Conversion Date
27639 , p_source_19 IN DATE
27640 --Currency Conversion Rate
27641 , p_source_20 IN NUMBER
27642 --Currency Conversion Type
27643 , p_source_21 IN VARCHAR2
27644 --Accounted Amount
27645 , p_source_22 IN NUMBER
27646 --Accounting Line Type
27647 , p_source_24 IN NUMBER
27648 )
27649 IS
27650
27651 l_component_type VARCHAR2(80);
27652 l_component_code VARCHAR2(30);
27653 l_component_type_code VARCHAR2(1);
27654 l_component_appl_id INTEGER;
27655 l_amb_context_code VARCHAR2(30);
27656 l_entity_code VARCHAR2(30);
27657 l_event_class_code VARCHAR2(30);
27658 l_ae_header_id NUMBER;
27659 l_event_type_code VARCHAR2(30);
27660 l_line_definition_code VARCHAR2(30);
27661 l_line_definition_owner_code VARCHAR2(1);
27662 --
27663 -- adr variables
27664 l_segment VARCHAR2(30);
27665 l_ccid NUMBER;
27666 l_adr_transaction_coa_id NUMBER;
27667 l_adr_accounting_coa_id NUMBER;
27668 l_adr_flexfield_segment_code VARCHAR2(30);
27669 l_adr_flex_value_set_id NUMBER;
27670 l_adr_value_type_code VARCHAR2(30);
27671 l_adr_value_combination_id NUMBER;
27672 l_adr_value_segment_code VARCHAR2(30);
27673
27674 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
27675 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
27676 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
27677 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
27678
27679 -- 4262811 Variables ------------------------------------------------------------------------------------------
27680 l_entered_amt_idx NUMBER;
27681 l_accted_amt_idx NUMBER;
27682 l_acc_rev_flag VARCHAR2(1);
27683 l_accrual_line_num NUMBER;
27684 l_tmp_amt NUMBER;
27685 l_acc_rev_natural_side_code VARCHAR2(1);
27686
27687 l_num_entries NUMBER;
27688 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
27689 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
27690 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
27691 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
27692 l_recog_line_1 NUMBER;
27693 l_recog_line_2 NUMBER;
27694
27695 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
27696 l_bflow_applied_to_amt NUMBER; -- 5132302
27697 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
27698
27699 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
27700
27701 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
27702 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
27703
27704 ---------------------------------------------------------------------------------------------------------------
27705
27706
27707 --
27708 -- bulk performance
27709 --
27710 l_balance_type_code VARCHAR2(1);
27711 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
27712 l_log_module VARCHAR2(240);
27713
27714 --
27715 -- Upgrade strategy
27716 --
27717 l_actual_upg_option VARCHAR2(1);
27718 l_enc_upg_option VARCHAR2(1);
27719
27720 --
27721 BEGIN
27722 --
27723 IF g_log_enabled THEN
27724 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_53';
27725 END IF;
27726 --
27727 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
27728
27729 trace
27730 (p_msg => 'BEGIN of AcctLineType_53'
27731 ,p_level => C_LEVEL_PROCEDURE
27732 ,p_module => l_log_module);
27733
27734 END IF;
27735 --
27736 l_component_type := 'AMB_JLT';
27737 l_component_code := 'INTERCOMPANY_ACCRUAL';
27738 l_component_type_code := 'S';
27739 l_component_appl_id := 707;
27740 l_amb_context_code := 'DEFAULT';
27741 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
27742 l_event_class_code := 'USER_DEFINE';
27743 l_event_type_code := 'UFOB_SHIP_RECIPIENT_SHIP_TP';
27744 l_line_definition_owner_code := 'S';
27745 l_line_definition_code := 'USER_FOB_SHIP_RECP_SHIP_TP';
27746 --
27747 l_balance_type_code := 'A';
27748 l_segment := NULL;
27749 l_ccid := NULL;
27750 l_adr_transaction_coa_id := NULL;
27751 l_adr_accounting_coa_id := NULL;
27752 l_adr_flexfield_segment_code := NULL;
27753 l_adr_flex_value_set_id := NULL;
27754 l_adr_value_type_code := NULL;
27755 l_adr_value_combination_id := NULL;
27756 l_adr_value_segment_code := NULL;
27757
27758 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
27759 l_bflow_class_code := ''; -- 4219869 Business Flow
27760 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
27761 l_budgetary_control_flag := 'N';
27762
27763 l_bflow_applied_to_amt_idx := NULL; -- 5132302
27764 l_bflow_applied_to_amt := NULL; -- 5132302
27765 l_entered_amt_idx := NULL; -- 4262811
27766 l_accted_amt_idx := NULL; -- 4262811
27767 l_acc_rev_flag := NULL; -- 4262811
27768 l_accrual_line_num := NULL; -- 4262811
27769 l_tmp_amt := NULL; -- 4262811
27770 --
27771
27772 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
27773 l_balance_type_code <> 'B' THEN
27774 IF NVL(p_source_24,9E125) = 2 AND
27775 p_source_22 < 0
27776 THEN
27777
27778 --
27779 XLA_AE_LINES_PKG.SetNewLine;
27780
27781 p_balance_type_code := l_balance_type_code;
27782 -- set the flag so later we will know whether the gain loss line needs to be created
27783
27784 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
27785 p_actual_flag :='A';
27786 END IF;
27787
27788 --
27789 -- bulk performance
27790 --
27791 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
27792 p_header_num => 0); -- 4262811
27793 --
27794 -- set accounting line options
27795 --
27796 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
27797 p_natural_side_code => 'D'
27798 , p_gain_or_loss_flag => 'N'
27799 , p_gl_transfer_mode_code => 'S'
27800 , p_acct_entry_type_code => 'A'
27801 , p_switch_side_flag => 'Y'
27802 , p_merge_duplicate_code => 'N'
27803 );
27804 --
27805 l_acc_rev_natural_side_code := 'C'; -- 4262811
27806 --
27807 --
27808 -- set accounting line type info
27809 --
27810 xla_ae_lines_pkg.SetAcctLineType
27811 (p_component_type => l_component_type
27812 ,p_event_type_code => l_event_type_code
27813 ,p_line_definition_owner_code => l_line_definition_owner_code
27814 ,p_line_definition_code => l_line_definition_code
27815 ,p_accounting_line_code => l_component_code
27816 ,p_accounting_line_type_code => l_component_type_code
27817 ,p_accounting_line_appl_id => l_component_appl_id
27818 ,p_amb_context_code => l_amb_context_code
27819 ,p_entity_code => l_entity_code
27820 ,p_event_class_code => l_event_class_code);
27821 --
27822 -- set accounting class
27823 --
27824 xla_ae_lines_pkg.SetAcctClass(
27825 p_accounting_class_code => 'INTERCOMPANY_ACCRUAL'
27826 , p_ae_header_id => l_ae_header_id
27827 );
27828
27829 --
27830 -- set rounding class
27831 --
27832 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
27833 'INTERCOMPANY_ACCRUAL';
27834
27835 --
27836 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
27837 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
27838 --
27839 -- bulk performance
27840 --
27841 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
27842
27843 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
27844 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
27845
27846 -- 4955764
27847 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
27848 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
27849
27850 -- 4458381 Public Sector Enh
27851
27852 --
27853 -- set accounting attributes for the line type
27854 --
27855 l_entered_amt_idx := 3;
27856 l_accted_amt_idx := 8;
27857 l_bflow_applied_to_amt_idx := NULL; -- 5132302
27858 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
27859 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
27860 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
27861 l_rec_acct_attrs.array_char_value(2) := p_source_12;
27862 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
27863 l_rec_acct_attrs.array_num_value(3) := p_source_18;
27864 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
27865 l_rec_acct_attrs.array_char_value(4) := p_source_15;
27866 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
27867 l_rec_acct_attrs.array_date_value(5) := p_source_19;
27868 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
27869 l_rec_acct_attrs.array_num_value(6) := p_source_20;
27870 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
27871 l_rec_acct_attrs.array_char_value(7) := p_source_21;
27872 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
27873 l_rec_acct_attrs.array_num_value(8) := p_source_22;
27874
27875 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
27876 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
27877
27878 ---------------------------------------------------------------------------------------------------------------
27879 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
27880 ---------------------------------------------------------------------------------------------------------------
27881 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
27882
27883 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
27884 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
27885
27886 IF xla_accounting_cache_pkg.GetValueChar
27887 (p_source_code => 'LEDGER_CATEGORY_CODE'
27888 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
27889 AND l_bflow_method_code = 'PRIOR_ENTRY'
27890 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
27891 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
27892 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
27893 )
27894 THEN
27895 xla_ae_lines_pkg.BflowUpgEntry
27896 (p_business_method_code => l_bflow_method_code
27897 ,p_business_class_code => l_bflow_class_code
27898 ,p_balance_type => l_balance_type_code);
27899 ELSE
27900 NULL;
27901 -- No business flow processing for business flow method of NONE.
27902 END IF;
27903
27904 --
27905 -- call analytical criteria
27906 --
27907
27908 --
27909 -- call description
27910 --
27911 -- No description or it is inherited.
27912 --
27913 -- call ADRs
27914 -- Bug 4922099
27915 --
27916 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
27917 (NVL(l_actual_upg_option, 'N') = 'O') OR
27918 (NVL(l_enc_upg_option, 'N') = 'O')
27919 )
27920 THEN
27921 NULL;
27922 --
27923 --
27924
27925 l_ccid := AcctDerRule_4(
27926 p_application_id => p_application_id
27927 , p_ae_header_id => l_ae_header_id
27928 , p_source_4 => p_source_4
27929 , x_transaction_coa_id => l_adr_transaction_coa_id
27930 , x_accounting_coa_id => l_adr_accounting_coa_id
27931 , x_value_type_code => l_adr_value_type_code
27932 , p_side => 'NA'
27933 );
27934
27935 xla_ae_lines_pkg.set_ccid(
27936 p_code_combination_id => l_ccid
27937 , p_value_type_code => l_adr_value_type_code
27938 , p_transaction_coa_id => l_adr_transaction_coa_id
27939 , p_accounting_coa_id => l_adr_accounting_coa_id
27940 , p_adr_code => 'CST_DEFAULT'
27941 , p_adr_type_code => 'S'
27942 , p_component_type => l_component_type
27943 , p_component_code => l_component_code
27944 , p_component_type_code => l_component_type_code
27945 , p_component_appl_id => l_component_appl_id
27946 , p_amb_context_code => l_amb_context_code
27947 , p_side => 'NA'
27948 );
27949
27950
27951 --
27952 --
27953 END IF;
27954 --
27955 -- Bug 4922099
27956 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
27957 (NVL(l_enc_upg_option, 'N') = 'O')
27958 ) AND
27959 (l_bflow_method_code = 'PRIOR_ENTRY')
27960 )
27961 THEN
27962 IF
27963 --
27964 1 = 2
27965 --
27966 THEN
27967 xla_accounting_err_pkg.build_message
27968 (p_appli_s_name => 'XLA'
27969 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
27970 ,p_token_1 => 'LINE_NUMBER'
27971 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
27972 ,p_token_2 => 'LINE_TYPE_NAME'
27973 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
27974 l_component_type
27975 ,l_component_code
27976 ,l_component_type_code
27977 ,l_component_appl_id
27978 ,l_amb_context_code
27979 ,l_entity_code
27980 ,l_event_class_code
27981 )
27982 ,p_token_3 => 'OWNER'
27983 ,p_value_3 => xla_lookups_pkg.get_meaning(
27984 p_lookup_type => 'XLA_OWNER_TYPE'
27985 ,p_lookup_code => l_component_type_code
27986 )
27987 ,p_token_4 => 'PRODUCT_NAME'
27988 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
27989 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
27990 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
27991 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
27992 ,p_ae_header_id => NULL
27993 );
27994
27995 IF (C_LEVEL_ERROR>= g_log_level) THEN
27996 trace
27997 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
27998 ,p_level => C_LEVEL_ERROR
27999 ,p_module => l_log_module);
28000 END IF;
28001 END IF;
28002 END IF;
28003 --
28004 --
28005 ------------------------------------------------------------------------------------------------
28006 -- 4219869 Business Flow
28007 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
28008 -- Prior Entry. Currently, the following code is always generated.
28009 ------------------------------------------------------------------------------------------------
28010 XLA_AE_LINES_PKG.ValidateCurrentLine;
28011
28012 ------------------------------------------------------------------------------------
28013 -- 4219869 Business Flow
28014 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
28015 ------------------------------------------------------------------------------------
28016 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
28017
28018 ----------------------------------------------------------------------------------
28019 -- 4219869 Business Flow
28020 -- Update journal entry status -- Need to generate this within IF <condition>
28021 ----------------------------------------------------------------------------------
28022 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
28023 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
28024 ,p_balance_type_code => l_balance_type_code
28025 );
28026
28027 -------------------------------------------------------------------------------------------
28028 -- 4262811 - Generate the Accrual Reversal lines
28029 -------------------------------------------------------------------------------------------
28030 BEGIN
28031 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
28032 (g_array_event(p_event_id).array_value_num('header_index'));
28033 IF l_acc_rev_flag IS NULL THEN
28034 l_acc_rev_flag := 'N';
28035 END IF;
28036 EXCEPTION
28037 WHEN OTHERS THEN
28038 l_acc_rev_flag := 'N';
28039 END;
28040 --
28041 IF (l_acc_rev_flag = 'Y') THEN
28042
28043 -- 4645092 ------------------------------------------------------------------------------
28044 -- To allow MPA report to determine if it should generate report process
28045 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
28046 ------------------------------------------------------------------------------------------
28047
28048 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
28049 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
28050 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
28051 -- call ADRs
28052 -- Bug 4922099
28053 --
28054 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
28055 (NVL(l_actual_upg_option, 'N') = 'O') OR
28056 (NVL(l_enc_upg_option, 'N') = 'O')
28057 )
28058 THEN
28059 NULL;
28060 --
28061 --
28062
28063 l_ccid := AcctDerRule_4(
28064 p_application_id => p_application_id
28065 , p_ae_header_id => l_ae_header_id
28066 , p_source_4 => p_source_4
28067 , x_transaction_coa_id => l_adr_transaction_coa_id
28068 , x_accounting_coa_id => l_adr_accounting_coa_id
28069 , x_value_type_code => l_adr_value_type_code
28070 , p_side => 'NA'
28071 );
28072
28073 xla_ae_lines_pkg.set_ccid(
28074 p_code_combination_id => l_ccid
28075 , p_value_type_code => l_adr_value_type_code
28076 , p_transaction_coa_id => l_adr_transaction_coa_id
28077 , p_accounting_coa_id => l_adr_accounting_coa_id
28078 , p_adr_code => 'CST_DEFAULT'
28079 , p_adr_type_code => 'S'
28080 , p_component_type => l_component_type
28081 , p_component_code => l_component_code
28082 , p_component_type_code => l_component_type_code
28083 , p_component_appl_id => l_component_appl_id
28084 , p_amb_context_code => l_amb_context_code
28085 , p_side => 'NA'
28086 );
28087
28088
28089 --
28090 --
28091 END IF;
28092
28093 --
28094 -- Update the line information that should be overwritten
28095 --
28096 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
28097 p_header_num => 1);
28098 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
28099
28100 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
28101
28102 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
28103 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
28104 END IF;
28105
28106 --
28107 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
28108 --
28109 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
28110 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
28111 ELSE
28112 ---------------------------------------------------------------------------------------------------
28113 -- 4262811a Switch Sign
28114 ---------------------------------------------------------------------------------------------------
28115 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
28116 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
28117 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
28118 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
28119 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
28120 -- 5132302
28121 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
28122 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
28123
28124 END IF;
28125
28126 -- 4955764
28127 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
28128 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
28129
28130
28131 XLA_AE_LINES_PKG.ValidateCurrentLine;
28132 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
28133
28134 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
28135 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
28136 ,p_balance_type_code => l_balance_type_code);
28137
28138 END IF;
28139
28140 -----------------------------------------------------------------------------------------
28141 -- 4262811 Multiperiod Accounting
28142 -----------------------------------------------------------------------------------------
28143 -- No MPA option is assigned.
28144
28145
28146 END IF;
28147 END IF;
28148 --
28149
28150 --
28151 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
28152 trace
28153 (p_msg => 'END of AcctLineType_53'
28154 ,p_level => C_LEVEL_PROCEDURE
28155 ,p_module => l_log_module);
28156 END IF;
28157 --
28158 EXCEPTION
28159 WHEN xla_exceptions_pkg.application_exception THEN
28160 RAISE;
28161 WHEN OTHERS THEN
28162 xla_exceptions_pkg.raise_message
28163 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_53');
28164 END AcctLineType_53;
28165 --
28166
28167 ---------------------------------------
28168 --
28169 -- PRIVATE FUNCTION
28170 -- AcctLineType_54
28171 --
28172 ---------------------------------------
28173 PROCEDURE AcctLineType_54 (
28174 p_application_id IN NUMBER
28175 ,p_event_id IN NUMBER
28176 ,p_calculate_acctd_flag IN VARCHAR2
28177 ,p_calculate_g_l_flag IN VARCHAR2
28178 ,p_actual_flag IN OUT VARCHAR2
28179 ,p_balance_type_code OUT VARCHAR2
28180 ,p_gain_or_loss_ref OUT VARCHAR2
28181
28182 --Cost Management Default Account
28183 , p_source_4 IN NUMBER
28184 --Applied to Application ID
28185 , p_source_6 IN NUMBER
28186 --Applied to Distribution Link Type
28187 , p_source_7 IN VARCHAR2
28188 --Applied to Entity Code
28189 , p_source_8 IN VARCHAR2
28190 --DISTRIBUTION_IDENTIFIER
28191 , p_source_11 IN NUMBER
28192 --Distribution Type
28193 , p_source_12 IN VARCHAR2
28194 , p_source_12_meaning IN VARCHAR2
28195 --Encumbrance Reversal Amount Entered
28196 , p_source_14 IN NUMBER
28197 --Entered Currency Code
28198 , p_source_15 IN VARCHAR2
28199 --Transaction Encumbrance Reversal Amount
28200 , p_source_16 IN NUMBER
28201 --Entered Amount
28202 , p_source_18 IN NUMBER
28203 --Currency Conversion Date
28204 , p_source_19 IN DATE
28205 --Currency Conversion Rate
28206 , p_source_20 IN NUMBER
28207 --Currency Conversion Type
28208 , p_source_21 IN VARCHAR2
28209 --Accounted Amount
28210 , p_source_22 IN NUMBER
28211 --Accounting Line Type
28212 , p_source_24 IN NUMBER
28213 --Costing Encumbrance Upgrade Option
28214 , p_source_27 IN VARCHAR2
28215 --TXN_PO_DISTRIBUTION_ID
28216 , p_source_28 IN NUMBER
28217 --TXN_PO_HEADER_ID
28218 , p_source_29 IN NUMBER
28219 --Requisition Budget Account
28220 , p_source_30 IN NUMBER
28221 --Requisition Encumbrance Type Identifier
28222 , p_source_31 IN NUMBER
28223 )
28224 IS
28225
28226 l_component_type VARCHAR2(80);
28227 l_component_code VARCHAR2(30);
28228 l_component_type_code VARCHAR2(1);
28229 l_component_appl_id INTEGER;
28230 l_amb_context_code VARCHAR2(30);
28231 l_entity_code VARCHAR2(30);
28232 l_event_class_code VARCHAR2(30);
28233 l_ae_header_id NUMBER;
28234 l_event_type_code VARCHAR2(30);
28235 l_line_definition_code VARCHAR2(30);
28236 l_line_definition_owner_code VARCHAR2(1);
28237 --
28238 -- adr variables
28239 l_segment VARCHAR2(30);
28240 l_ccid NUMBER;
28241 l_adr_transaction_coa_id NUMBER;
28242 l_adr_accounting_coa_id NUMBER;
28243 l_adr_flexfield_segment_code VARCHAR2(30);
28244 l_adr_flex_value_set_id NUMBER;
28245 l_adr_value_type_code VARCHAR2(30);
28246 l_adr_value_combination_id NUMBER;
28247 l_adr_value_segment_code VARCHAR2(30);
28248
28249 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
28250 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
28251 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
28252 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
28253
28254 -- 4262811 Variables ------------------------------------------------------------------------------------------
28255 l_entered_amt_idx NUMBER;
28256 l_accted_amt_idx NUMBER;
28257 l_acc_rev_flag VARCHAR2(1);
28258 l_accrual_line_num NUMBER;
28259 l_tmp_amt NUMBER;
28260 l_acc_rev_natural_side_code VARCHAR2(1);
28261
28262 l_num_entries NUMBER;
28263 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
28264 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
28265 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
28266 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
28267 l_recog_line_1 NUMBER;
28268 l_recog_line_2 NUMBER;
28269
28270 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
28271 l_bflow_applied_to_amt NUMBER; -- 5132302
28272 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
28273
28274 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
28275
28276 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
28277 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
28278
28279 ---------------------------------------------------------------------------------------------------------------
28280
28281
28282 --
28283 -- bulk performance
28284 --
28285 l_balance_type_code VARCHAR2(1);
28286 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
28287 l_log_module VARCHAR2(240);
28288
28289 --
28290 -- Upgrade strategy
28291 --
28292 l_actual_upg_option VARCHAR2(1);
28293 l_enc_upg_option VARCHAR2(1);
28294
28295 --
28296 BEGIN
28297 --
28298 IF g_log_enabled THEN
28299 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_54';
28300 END IF;
28301 --
28302 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
28303
28304 trace
28305 (p_msg => 'BEGIN of AcctLineType_54'
28306 ,p_level => C_LEVEL_PROCEDURE
28307 ,p_module => l_log_module);
28308
28309 END IF;
28310 --
28311 l_component_type := 'AMB_JLT';
28312 l_component_code := 'INTERCOMPANY_ACCRUAL';
28313 l_component_type_code := 'S';
28314 l_component_appl_id := 707;
28315 l_amb_context_code := 'DEFAULT';
28316 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
28317 l_event_class_code := 'FOB_RCPT_RECIPIENT_RCPT';
28318 l_event_type_code := 'FOB_RCPT_RECIPIENT_RCPT_ALL';
28319 l_line_definition_owner_code := 'S';
28320 l_line_definition_code := 'FOB_RCPT_RECIPIENT_RCPT';
28321 --
28322 l_balance_type_code := 'A';
28323 l_segment := NULL;
28324 l_ccid := NULL;
28325 l_adr_transaction_coa_id := NULL;
28326 l_adr_accounting_coa_id := NULL;
28327 l_adr_flexfield_segment_code := NULL;
28328 l_adr_flex_value_set_id := NULL;
28329 l_adr_value_type_code := NULL;
28330 l_adr_value_combination_id := NULL;
28331 l_adr_value_segment_code := NULL;
28332
28333 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
28334 l_bflow_class_code := ''; -- 4219869 Business Flow
28335 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
28336 l_budgetary_control_flag := 'N';
28337
28338 l_bflow_applied_to_amt_idx := NULL; -- 5132302
28339 l_bflow_applied_to_amt := NULL; -- 5132302
28340 l_entered_amt_idx := NULL; -- 4262811
28341 l_accted_amt_idx := NULL; -- 4262811
28342 l_acc_rev_flag := NULL; -- 4262811
28343 l_accrual_line_num := NULL; -- 4262811
28344 l_tmp_amt := NULL; -- 4262811
28345 --
28346
28347 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
28348 l_balance_type_code <> 'B' THEN
28349 IF NVL(p_source_24,9E125) = 2 AND
28350 p_source_22 < 0
28351 THEN
28352
28353 --
28354 XLA_AE_LINES_PKG.SetNewLine;
28355
28356 p_balance_type_code := l_balance_type_code;
28357 -- set the flag so later we will know whether the gain loss line needs to be created
28358
28359 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
28360 p_actual_flag :='A';
28361 END IF;
28362
28363 --
28364 -- bulk performance
28365 --
28366 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
28367 p_header_num => 0); -- 4262811
28368 --
28369 -- set accounting line options
28370 --
28371 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
28372 p_natural_side_code => 'D'
28373 , p_gain_or_loss_flag => 'N'
28374 , p_gl_transfer_mode_code => 'S'
28375 , p_acct_entry_type_code => 'A'
28376 , p_switch_side_flag => 'Y'
28377 , p_merge_duplicate_code => 'N'
28378 );
28379 --
28380 l_acc_rev_natural_side_code := 'C'; -- 4262811
28381 --
28382 --
28383 -- set accounting line type info
28384 --
28385 xla_ae_lines_pkg.SetAcctLineType
28386 (p_component_type => l_component_type
28387 ,p_event_type_code => l_event_type_code
28388 ,p_line_definition_owner_code => l_line_definition_owner_code
28389 ,p_line_definition_code => l_line_definition_code
28390 ,p_accounting_line_code => l_component_code
28391 ,p_accounting_line_type_code => l_component_type_code
28392 ,p_accounting_line_appl_id => l_component_appl_id
28393 ,p_amb_context_code => l_amb_context_code
28394 ,p_entity_code => l_entity_code
28395 ,p_event_class_code => l_event_class_code);
28396 --
28397 -- set accounting class
28398 --
28399 xla_ae_lines_pkg.SetAcctClass(
28400 p_accounting_class_code => 'INTERCOMPANY_ACCRUAL'
28401 , p_ae_header_id => l_ae_header_id
28402 );
28403
28404 --
28405 -- set rounding class
28406 --
28407 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
28408 'INTERCOMPANY_ACCRUAL';
28409
28410 --
28411 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
28412 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
28413 --
28414 -- bulk performance
28415 --
28416 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
28417
28418 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
28419 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
28420
28421 -- 4955764
28422 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
28423 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
28424
28425 -- 4458381 Public Sector Enh
28426
28427 --
28428 -- set accounting attributes for the line type
28429 --
28430 l_entered_amt_idx := 17;
28431 l_accted_amt_idx := 22;
28432 l_bflow_applied_to_amt_idx := NULL; -- 5132302
28433 l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
28434 l_rec_acct_attrs.array_num_value(1) := p_source_6;
28435 l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
28436 l_rec_acct_attrs.array_char_value(2) := p_source_7;
28437 l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
28438 l_rec_acct_attrs.array_char_value(3) := p_source_8;
28439 l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
28440 l_rec_acct_attrs.array_num_value(4) := to_char(p_source_28);
28441 l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
28442 l_rec_acct_attrs.array_num_value(5) := to_char(p_source_29);
28443 l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
28444 l_rec_acct_attrs.array_num_value(6) := to_char(p_source_11);
28445 l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
28446 l_rec_acct_attrs.array_char_value(7) := p_source_12;
28447 l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
28448 l_rec_acct_attrs.array_num_value(8) := TO_NUMBER(p_source_30);
28449 l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
28450 l_rec_acct_attrs.array_num_value(9) := p_source_14;
28451 l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
28452 l_rec_acct_attrs.array_char_value(10) := p_source_15;
28453 l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
28454 l_rec_acct_attrs.array_num_value(11) := p_source_16;
28455 l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
28456 l_rec_acct_attrs.array_num_value(12) := TO_NUMBER(p_source_30);
28457 l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
28458 l_rec_acct_attrs.array_num_value(13) := p_source_14;
28459 l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
28460 l_rec_acct_attrs.array_char_value(14) := p_source_15;
28461 l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
28462 l_rec_acct_attrs.array_num_value(15) := p_source_16;
28463 l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
28464 l_rec_acct_attrs.array_char_value(16) := p_source_27;
28465 l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
28466 l_rec_acct_attrs.array_num_value(17) := p_source_18;
28467 l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
28468 l_rec_acct_attrs.array_char_value(18) := p_source_15;
28469 l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
28470 l_rec_acct_attrs.array_date_value(19) := p_source_19;
28471 l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
28472 l_rec_acct_attrs.array_num_value(20) := p_source_20;
28473 l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
28474 l_rec_acct_attrs.array_char_value(21) := p_source_21;
28475 l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
28476 l_rec_acct_attrs.array_num_value(22) := p_source_22;
28477 l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
28478 l_rec_acct_attrs.array_num_value(23) := p_source_31;
28479 l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
28480 l_rec_acct_attrs.array_num_value(24) := p_source_31;
28481
28482 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
28483 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
28484
28485 ---------------------------------------------------------------------------------------------------------------
28486 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
28487 ---------------------------------------------------------------------------------------------------------------
28488 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
28489
28490 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
28491 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
28492
28493 IF xla_accounting_cache_pkg.GetValueChar
28494 (p_source_code => 'LEDGER_CATEGORY_CODE'
28495 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
28496 AND l_bflow_method_code = 'PRIOR_ENTRY'
28497 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
28498 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
28499 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
28500 )
28501 THEN
28502 xla_ae_lines_pkg.BflowUpgEntry
28503 (p_business_method_code => l_bflow_method_code
28504 ,p_business_class_code => l_bflow_class_code
28505 ,p_balance_type => l_balance_type_code);
28506 ELSE
28507 NULL;
28508 -- No business flow processing for business flow method of NONE.
28509 END IF;
28510
28511 --
28512 -- call analytical criteria
28513 --
28514
28515 --
28516 -- call description
28517 --
28518 -- No description or it is inherited.
28519 --
28520 -- call ADRs
28521 -- Bug 4922099
28522 --
28523 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
28524 (NVL(l_actual_upg_option, 'N') = 'O') OR
28525 (NVL(l_enc_upg_option, 'N') = 'O')
28526 )
28527 THEN
28528 NULL;
28529 --
28530 --
28531
28532 l_ccid := AcctDerRule_4(
28533 p_application_id => p_application_id
28534 , p_ae_header_id => l_ae_header_id
28535 , p_source_4 => p_source_4
28536 , x_transaction_coa_id => l_adr_transaction_coa_id
28537 , x_accounting_coa_id => l_adr_accounting_coa_id
28538 , x_value_type_code => l_adr_value_type_code
28539 , p_side => 'NA'
28540 );
28541
28542 xla_ae_lines_pkg.set_ccid(
28543 p_code_combination_id => l_ccid
28544 , p_value_type_code => l_adr_value_type_code
28545 , p_transaction_coa_id => l_adr_transaction_coa_id
28546 , p_accounting_coa_id => l_adr_accounting_coa_id
28547 , p_adr_code => 'CST_DEFAULT'
28548 , p_adr_type_code => 'S'
28549 , p_component_type => l_component_type
28550 , p_component_code => l_component_code
28551 , p_component_type_code => l_component_type_code
28552 , p_component_appl_id => l_component_appl_id
28553 , p_amb_context_code => l_amb_context_code
28554 , p_side => 'NA'
28555 );
28556
28557
28558 --
28559 --
28560 END IF;
28561 --
28562 -- Bug 4922099
28563 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
28564 (NVL(l_enc_upg_option, 'N') = 'O')
28565 ) AND
28566 (l_bflow_method_code = 'PRIOR_ENTRY')
28567 )
28568 THEN
28569 IF
28570 --
28571 1 = 2
28572 --
28573 THEN
28574 xla_accounting_err_pkg.build_message
28575 (p_appli_s_name => 'XLA'
28576 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
28577 ,p_token_1 => 'LINE_NUMBER'
28578 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
28579 ,p_token_2 => 'LINE_TYPE_NAME'
28580 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
28581 l_component_type
28582 ,l_component_code
28583 ,l_component_type_code
28584 ,l_component_appl_id
28585 ,l_amb_context_code
28586 ,l_entity_code
28587 ,l_event_class_code
28588 )
28589 ,p_token_3 => 'OWNER'
28590 ,p_value_3 => xla_lookups_pkg.get_meaning(
28591 p_lookup_type => 'XLA_OWNER_TYPE'
28592 ,p_lookup_code => l_component_type_code
28593 )
28594 ,p_token_4 => 'PRODUCT_NAME'
28595 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
28596 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
28597 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
28598 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
28599 ,p_ae_header_id => NULL
28600 );
28601
28602 IF (C_LEVEL_ERROR>= g_log_level) THEN
28603 trace
28604 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
28605 ,p_level => C_LEVEL_ERROR
28606 ,p_module => l_log_module);
28607 END IF;
28608 END IF;
28609 END IF;
28610 --
28611 --
28612 ------------------------------------------------------------------------------------------------
28613 -- 4219869 Business Flow
28614 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
28615 -- Prior Entry. Currently, the following code is always generated.
28616 ------------------------------------------------------------------------------------------------
28617 XLA_AE_LINES_PKG.ValidateCurrentLine;
28618
28619 ------------------------------------------------------------------------------------
28620 -- 4219869 Business Flow
28621 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
28622 ------------------------------------------------------------------------------------
28623 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
28624
28625 ----------------------------------------------------------------------------------
28626 -- 4219869 Business Flow
28627 -- Update journal entry status -- Need to generate this within IF <condition>
28628 ----------------------------------------------------------------------------------
28629 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
28630 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
28631 ,p_balance_type_code => l_balance_type_code
28632 );
28633
28634 -------------------------------------------------------------------------------------------
28635 -- 4262811 - Generate the Accrual Reversal lines
28636 -------------------------------------------------------------------------------------------
28637 BEGIN
28638 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
28639 (g_array_event(p_event_id).array_value_num('header_index'));
28640 IF l_acc_rev_flag IS NULL THEN
28641 l_acc_rev_flag := 'N';
28642 END IF;
28643 EXCEPTION
28644 WHEN OTHERS THEN
28645 l_acc_rev_flag := 'N';
28646 END;
28647 --
28648 IF (l_acc_rev_flag = 'Y') THEN
28649
28650 -- 4645092 ------------------------------------------------------------------------------
28651 -- To allow MPA report to determine if it should generate report process
28652 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
28653 ------------------------------------------------------------------------------------------
28654
28655 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
28656 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
28657 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
28658 -- call ADRs
28659 -- Bug 4922099
28660 --
28661 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
28662 (NVL(l_actual_upg_option, 'N') = 'O') OR
28663 (NVL(l_enc_upg_option, 'N') = 'O')
28664 )
28665 THEN
28666 NULL;
28667 --
28668 --
28669
28670 l_ccid := AcctDerRule_4(
28671 p_application_id => p_application_id
28672 , p_ae_header_id => l_ae_header_id
28673 , p_source_4 => p_source_4
28674 , x_transaction_coa_id => l_adr_transaction_coa_id
28675 , x_accounting_coa_id => l_adr_accounting_coa_id
28676 , x_value_type_code => l_adr_value_type_code
28677 , p_side => 'NA'
28678 );
28679
28680 xla_ae_lines_pkg.set_ccid(
28681 p_code_combination_id => l_ccid
28682 , p_value_type_code => l_adr_value_type_code
28683 , p_transaction_coa_id => l_adr_transaction_coa_id
28684 , p_accounting_coa_id => l_adr_accounting_coa_id
28685 , p_adr_code => 'CST_DEFAULT'
28686 , p_adr_type_code => 'S'
28687 , p_component_type => l_component_type
28688 , p_component_code => l_component_code
28689 , p_component_type_code => l_component_type_code
28690 , p_component_appl_id => l_component_appl_id
28691 , p_amb_context_code => l_amb_context_code
28692 , p_side => 'NA'
28693 );
28694
28695
28696 --
28697 --
28698 END IF;
28699
28700 --
28701 -- Update the line information that should be overwritten
28702 --
28703 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
28704 p_header_num => 1);
28705 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
28706
28707 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
28708
28709 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
28710 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
28711 END IF;
28712
28713 --
28714 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
28715 --
28716 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
28717 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
28718 ELSE
28719 ---------------------------------------------------------------------------------------------------
28720 -- 4262811a Switch Sign
28721 ---------------------------------------------------------------------------------------------------
28722 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
28723 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
28724 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
28725 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
28726 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
28727 -- 5132302
28728 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
28729 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
28730
28731 END IF;
28732
28733 -- 4955764
28734 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
28735 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
28736
28737
28738 XLA_AE_LINES_PKG.ValidateCurrentLine;
28739 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
28740
28741 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
28742 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
28743 ,p_balance_type_code => l_balance_type_code);
28744
28745 END IF;
28746
28747 -----------------------------------------------------------------------------------------
28748 -- 4262811 Multiperiod Accounting
28749 -----------------------------------------------------------------------------------------
28750 -- No MPA option is assigned.
28751
28752
28753 END IF;
28754 END IF;
28755 --
28756
28757 --
28758 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
28759 trace
28760 (p_msg => 'END of AcctLineType_54'
28761 ,p_level => C_LEVEL_PROCEDURE
28762 ,p_module => l_log_module);
28763 END IF;
28764 --
28765 EXCEPTION
28766 WHEN xla_exceptions_pkg.application_exception THEN
28767 RAISE;
28768 WHEN OTHERS THEN
28769 xla_exceptions_pkg.raise_message
28770 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_54');
28771 END AcctLineType_54;
28772 --
28773
28774 ---------------------------------------
28775 --
28776 -- PRIVATE FUNCTION
28777 -- AcctLineType_55
28778 --
28779 ---------------------------------------
28780 PROCEDURE AcctLineType_55 (
28781 p_application_id IN NUMBER
28782 ,p_event_id IN NUMBER
28783 ,p_calculate_acctd_flag IN VARCHAR2
28784 ,p_calculate_g_l_flag IN VARCHAR2
28785 ,p_actual_flag IN OUT VARCHAR2
28786 ,p_balance_type_code OUT VARCHAR2
28787 ,p_gain_or_loss_ref OUT VARCHAR2
28788
28789 --Cost Management Default Account
28790 , p_source_4 IN NUMBER
28791 --DISTRIBUTION_IDENTIFIER
28792 , p_source_11 IN NUMBER
28793 --Distribution Type
28794 , p_source_12 IN VARCHAR2
28795 , p_source_12_meaning IN VARCHAR2
28796 --Entered Currency Code
28797 , p_source_15 IN VARCHAR2
28798 --Entered Amount
28799 , p_source_18 IN NUMBER
28800 --Currency Conversion Date
28801 , p_source_19 IN DATE
28802 --Currency Conversion Rate
28803 , p_source_20 IN NUMBER
28804 --Currency Conversion Type
28805 , p_source_21 IN VARCHAR2
28806 --Accounted Amount
28807 , p_source_22 IN NUMBER
28808 --Accounting Line Type
28809 , p_source_24 IN NUMBER
28810 --Transaction Action Name
28811 , p_source_35 IN NUMBER
28812 , p_source_35_meaning IN VARCHAR2
28813 )
28814 IS
28815
28816 l_component_type VARCHAR2(80);
28817 l_component_code VARCHAR2(30);
28818 l_component_type_code VARCHAR2(1);
28819 l_component_appl_id INTEGER;
28820 l_amb_context_code VARCHAR2(30);
28821 l_entity_code VARCHAR2(30);
28822 l_event_class_code VARCHAR2(30);
28823 l_ae_header_id NUMBER;
28824 l_event_type_code VARCHAR2(30);
28825 l_line_definition_code VARCHAR2(30);
28826 l_line_definition_owner_code VARCHAR2(1);
28827 --
28828 -- adr variables
28829 l_segment VARCHAR2(30);
28830 l_ccid NUMBER;
28831 l_adr_transaction_coa_id NUMBER;
28832 l_adr_accounting_coa_id NUMBER;
28833 l_adr_flexfield_segment_code VARCHAR2(30);
28834 l_adr_flex_value_set_id NUMBER;
28835 l_adr_value_type_code VARCHAR2(30);
28836 l_adr_value_combination_id NUMBER;
28837 l_adr_value_segment_code VARCHAR2(30);
28838
28839 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
28840 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
28841 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
28842 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
28843
28844 -- 4262811 Variables ------------------------------------------------------------------------------------------
28845 l_entered_amt_idx NUMBER;
28846 l_accted_amt_idx NUMBER;
28847 l_acc_rev_flag VARCHAR2(1);
28848 l_accrual_line_num NUMBER;
28849 l_tmp_amt NUMBER;
28850 l_acc_rev_natural_side_code VARCHAR2(1);
28851
28852 l_num_entries NUMBER;
28853 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
28854 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
28855 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
28856 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
28857 l_recog_line_1 NUMBER;
28858 l_recog_line_2 NUMBER;
28859
28860 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
28861 l_bflow_applied_to_amt NUMBER; -- 5132302
28862 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
28863
28864 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
28865
28866 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
28867 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
28868
28869 ---------------------------------------------------------------------------------------------------------------
28870
28871
28872 --
28873 -- bulk performance
28874 --
28875 l_balance_type_code VARCHAR2(1);
28876 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
28877 l_log_module VARCHAR2(240);
28878
28879 --
28880 -- Upgrade strategy
28881 --
28882 l_actual_upg_option VARCHAR2(1);
28883 l_enc_upg_option VARCHAR2(1);
28884
28885 --
28886 BEGIN
28887 --
28888 IF g_log_enabled THEN
28889 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_55';
28890 END IF;
28891 --
28892 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
28893
28894 trace
28895 (p_msg => 'BEGIN of AcctLineType_55'
28896 ,p_level => C_LEVEL_PROCEDURE
28897 ,p_module => l_log_module);
28898
28899 END IF;
28900 --
28901 l_component_type := 'AMB_JLT';
28902 l_component_code := 'INTERCOMPANY_COGS';
28903 l_component_type_code := 'S';
28904 l_component_appl_id := 707;
28905 l_amb_context_code := 'DEFAULT';
28906 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
28907 l_event_class_code := 'LOG_INTERCOMPANY';
28908 l_event_type_code := 'LOG_INTERCOMPANY_ALL';
28909 l_line_definition_owner_code := 'S';
28910 l_line_definition_code := 'LOG_INTERCOMPANY';
28911 --
28912 l_balance_type_code := 'A';
28913 l_segment := NULL;
28914 l_ccid := NULL;
28915 l_adr_transaction_coa_id := NULL;
28916 l_adr_accounting_coa_id := NULL;
28917 l_adr_flexfield_segment_code := NULL;
28918 l_adr_flex_value_set_id := NULL;
28919 l_adr_value_type_code := NULL;
28920 l_adr_value_combination_id := NULL;
28921 l_adr_value_segment_code := NULL;
28922
28923 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
28924 l_bflow_class_code := ''; -- 4219869 Business Flow
28925 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
28926 l_budgetary_control_flag := 'N';
28927
28928 l_bflow_applied_to_amt_idx := NULL; -- 5132302
28929 l_bflow_applied_to_amt := NULL; -- 5132302
28930 l_entered_amt_idx := NULL; -- 4262811
28931 l_accted_amt_idx := NULL; -- 4262811
28932 l_acc_rev_flag := NULL; -- 4262811
28933 l_accrual_line_num := NULL; -- 4262811
28934 l_tmp_amt := NULL; -- 4262811
28935 --
28936
28937 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
28938 l_balance_type_code <> 'B' THEN
28939 IF NVL(p_source_24,9E125) = 2 AND
28940 ((p_source_22 >= 0 AND
28941 NVL(p_source_35,9E125) = 9) OR
28942 (p_source_22 <= 0 AND
28943 NVL(p_source_35,9E125) = 14)
28944 ) THEN
28945
28946 --
28947 XLA_AE_LINES_PKG.SetNewLine;
28948
28949 p_balance_type_code := l_balance_type_code;
28950 -- set the flag so later we will know whether the gain loss line needs to be created
28951
28952 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
28953 p_actual_flag :='A';
28954 END IF;
28955
28956 --
28957 -- bulk performance
28958 --
28959 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
28960 p_header_num => 0); -- 4262811
28961 --
28962 -- set accounting line options
28963 --
28964 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
28965 p_natural_side_code => 'D'
28966 , p_gain_or_loss_flag => 'N'
28967 , p_gl_transfer_mode_code => 'S'
28968 , p_acct_entry_type_code => 'A'
28969 , p_switch_side_flag => 'Y'
28970 , p_merge_duplicate_code => 'N'
28971 );
28972 --
28973 l_acc_rev_natural_side_code := 'C'; -- 4262811
28974 --
28975 --
28976 -- set accounting line type info
28977 --
28978 xla_ae_lines_pkg.SetAcctLineType
28979 (p_component_type => l_component_type
28980 ,p_event_type_code => l_event_type_code
28981 ,p_line_definition_owner_code => l_line_definition_owner_code
28982 ,p_line_definition_code => l_line_definition_code
28983 ,p_accounting_line_code => l_component_code
28984 ,p_accounting_line_type_code => l_component_type_code
28985 ,p_accounting_line_appl_id => l_component_appl_id
28986 ,p_amb_context_code => l_amb_context_code
28987 ,p_entity_code => l_entity_code
28988 ,p_event_class_code => l_event_class_code);
28989 --
28990 -- set accounting class
28991 --
28992 xla_ae_lines_pkg.SetAcctClass(
28993 p_accounting_class_code => 'INTERCOMPANY_COGS'
28994 , p_ae_header_id => l_ae_header_id
28995 );
28996
28997 --
28998 -- set rounding class
28999 --
29000 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
29001 'INTERCOMPANY_COGS';
29002
29003 --
29004 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
29005 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
29006 --
29007 -- bulk performance
29008 --
29009 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
29010
29011 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
29012 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
29013
29014 -- 4955764
29015 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
29016 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
29017
29018 -- 4458381 Public Sector Enh
29019
29020 --
29021 -- set accounting attributes for the line type
29022 --
29023 l_entered_amt_idx := 3;
29024 l_accted_amt_idx := 8;
29025 l_bflow_applied_to_amt_idx := NULL; -- 5132302
29026 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
29027 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
29028 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
29029 l_rec_acct_attrs.array_char_value(2) := p_source_12;
29030 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
29031 l_rec_acct_attrs.array_num_value(3) := p_source_18;
29032 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
29033 l_rec_acct_attrs.array_char_value(4) := p_source_15;
29034 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
29035 l_rec_acct_attrs.array_date_value(5) := p_source_19;
29036 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
29037 l_rec_acct_attrs.array_num_value(6) := p_source_20;
29038 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
29039 l_rec_acct_attrs.array_char_value(7) := p_source_21;
29040 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
29041 l_rec_acct_attrs.array_num_value(8) := p_source_22;
29042
29043 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
29044 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
29045
29046 ---------------------------------------------------------------------------------------------------------------
29047 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
29048 ---------------------------------------------------------------------------------------------------------------
29049 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
29050
29051 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
29052 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
29053
29054 IF xla_accounting_cache_pkg.GetValueChar
29055 (p_source_code => 'LEDGER_CATEGORY_CODE'
29056 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
29057 AND l_bflow_method_code = 'PRIOR_ENTRY'
29058 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
29059 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
29060 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
29061 )
29062 THEN
29063 xla_ae_lines_pkg.BflowUpgEntry
29064 (p_business_method_code => l_bflow_method_code
29065 ,p_business_class_code => l_bflow_class_code
29066 ,p_balance_type => l_balance_type_code);
29067 ELSE
29068 NULL;
29069 -- No business flow processing for business flow method of NONE.
29070 END IF;
29071
29072 --
29073 -- call analytical criteria
29074 --
29075
29076 --
29077 -- call description
29078 --
29079 -- No description or it is inherited.
29080 --
29081 -- call ADRs
29082 -- Bug 4922099
29083 --
29084 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
29085 (NVL(l_actual_upg_option, 'N') = 'O') OR
29086 (NVL(l_enc_upg_option, 'N') = 'O')
29087 )
29088 THEN
29089 NULL;
29090 --
29091 --
29092
29093 l_ccid := AcctDerRule_4(
29094 p_application_id => p_application_id
29095 , p_ae_header_id => l_ae_header_id
29096 , p_source_4 => p_source_4
29097 , x_transaction_coa_id => l_adr_transaction_coa_id
29098 , x_accounting_coa_id => l_adr_accounting_coa_id
29099 , x_value_type_code => l_adr_value_type_code
29100 , p_side => 'NA'
29101 );
29102
29103 xla_ae_lines_pkg.set_ccid(
29104 p_code_combination_id => l_ccid
29105 , p_value_type_code => l_adr_value_type_code
29106 , p_transaction_coa_id => l_adr_transaction_coa_id
29107 , p_accounting_coa_id => l_adr_accounting_coa_id
29108 , p_adr_code => 'CST_DEFAULT'
29109 , p_adr_type_code => 'S'
29110 , p_component_type => l_component_type
29111 , p_component_code => l_component_code
29112 , p_component_type_code => l_component_type_code
29113 , p_component_appl_id => l_component_appl_id
29114 , p_amb_context_code => l_amb_context_code
29115 , p_side => 'NA'
29116 );
29117
29118
29119 --
29120 --
29121 END IF;
29122 --
29123 -- Bug 4922099
29124 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
29125 (NVL(l_enc_upg_option, 'N') = 'O')
29126 ) AND
29127 (l_bflow_method_code = 'PRIOR_ENTRY')
29128 )
29129 THEN
29130 IF
29131 --
29132 1 = 2
29133 --
29134 THEN
29135 xla_accounting_err_pkg.build_message
29136 (p_appli_s_name => 'XLA'
29137 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
29138 ,p_token_1 => 'LINE_NUMBER'
29139 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
29140 ,p_token_2 => 'LINE_TYPE_NAME'
29141 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
29142 l_component_type
29143 ,l_component_code
29144 ,l_component_type_code
29145 ,l_component_appl_id
29146 ,l_amb_context_code
29147 ,l_entity_code
29148 ,l_event_class_code
29149 )
29150 ,p_token_3 => 'OWNER'
29151 ,p_value_3 => xla_lookups_pkg.get_meaning(
29152 p_lookup_type => 'XLA_OWNER_TYPE'
29153 ,p_lookup_code => l_component_type_code
29154 )
29155 ,p_token_4 => 'PRODUCT_NAME'
29156 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
29157 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
29158 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
29159 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
29160 ,p_ae_header_id => NULL
29161 );
29162
29163 IF (C_LEVEL_ERROR>= g_log_level) THEN
29164 trace
29165 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
29166 ,p_level => C_LEVEL_ERROR
29167 ,p_module => l_log_module);
29168 END IF;
29169 END IF;
29170 END IF;
29171 --
29172 --
29173 ------------------------------------------------------------------------------------------------
29174 -- 4219869 Business Flow
29175 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
29176 -- Prior Entry. Currently, the following code is always generated.
29177 ------------------------------------------------------------------------------------------------
29178 XLA_AE_LINES_PKG.ValidateCurrentLine;
29179
29180 ------------------------------------------------------------------------------------
29181 -- 4219869 Business Flow
29182 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
29183 ------------------------------------------------------------------------------------
29184 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
29185
29186 ----------------------------------------------------------------------------------
29187 -- 4219869 Business Flow
29188 -- Update journal entry status -- Need to generate this within IF <condition>
29189 ----------------------------------------------------------------------------------
29190 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
29191 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
29192 ,p_balance_type_code => l_balance_type_code
29193 );
29194
29195 -------------------------------------------------------------------------------------------
29196 -- 4262811 - Generate the Accrual Reversal lines
29197 -------------------------------------------------------------------------------------------
29198 BEGIN
29199 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
29200 (g_array_event(p_event_id).array_value_num('header_index'));
29201 IF l_acc_rev_flag IS NULL THEN
29202 l_acc_rev_flag := 'N';
29203 END IF;
29204 EXCEPTION
29205 WHEN OTHERS THEN
29206 l_acc_rev_flag := 'N';
29207 END;
29208 --
29209 IF (l_acc_rev_flag = 'Y') THEN
29210
29211 -- 4645092 ------------------------------------------------------------------------------
29212 -- To allow MPA report to determine if it should generate report process
29213 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
29214 ------------------------------------------------------------------------------------------
29215
29216 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
29217 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
29218 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
29219 -- call ADRs
29220 -- Bug 4922099
29221 --
29222 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
29223 (NVL(l_actual_upg_option, 'N') = 'O') OR
29224 (NVL(l_enc_upg_option, 'N') = 'O')
29225 )
29226 THEN
29227 NULL;
29228 --
29229 --
29230
29231 l_ccid := AcctDerRule_4(
29232 p_application_id => p_application_id
29233 , p_ae_header_id => l_ae_header_id
29234 , p_source_4 => p_source_4
29235 , x_transaction_coa_id => l_adr_transaction_coa_id
29236 , x_accounting_coa_id => l_adr_accounting_coa_id
29237 , x_value_type_code => l_adr_value_type_code
29238 , p_side => 'NA'
29239 );
29240
29241 xla_ae_lines_pkg.set_ccid(
29242 p_code_combination_id => l_ccid
29243 , p_value_type_code => l_adr_value_type_code
29244 , p_transaction_coa_id => l_adr_transaction_coa_id
29245 , p_accounting_coa_id => l_adr_accounting_coa_id
29246 , p_adr_code => 'CST_DEFAULT'
29247 , p_adr_type_code => 'S'
29248 , p_component_type => l_component_type
29249 , p_component_code => l_component_code
29250 , p_component_type_code => l_component_type_code
29251 , p_component_appl_id => l_component_appl_id
29252 , p_amb_context_code => l_amb_context_code
29253 , p_side => 'NA'
29254 );
29255
29256
29257 --
29258 --
29259 END IF;
29260
29261 --
29262 -- Update the line information that should be overwritten
29263 --
29264 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
29265 p_header_num => 1);
29266 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
29267
29268 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
29269
29270 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
29271 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
29272 END IF;
29273
29274 --
29275 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
29276 --
29277 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
29278 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
29279 ELSE
29280 ---------------------------------------------------------------------------------------------------
29281 -- 4262811a Switch Sign
29282 ---------------------------------------------------------------------------------------------------
29283 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
29284 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
29285 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
29286 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
29287 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
29288 -- 5132302
29289 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
29290 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
29291
29292 END IF;
29293
29294 -- 4955764
29295 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
29296 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
29297
29298
29299 XLA_AE_LINES_PKG.ValidateCurrentLine;
29300 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
29301
29302 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
29303 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
29304 ,p_balance_type_code => l_balance_type_code);
29305
29306 END IF;
29307
29308 -----------------------------------------------------------------------------------------
29309 -- 4262811 Multiperiod Accounting
29310 -----------------------------------------------------------------------------------------
29311 -- No MPA option is assigned.
29312
29313
29314 END IF;
29315 END IF;
29316 --
29317
29318 --
29319 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
29320 trace
29321 (p_msg => 'END of AcctLineType_55'
29322 ,p_level => C_LEVEL_PROCEDURE
29323 ,p_module => l_log_module);
29324 END IF;
29325 --
29326 EXCEPTION
29327 WHEN xla_exceptions_pkg.application_exception THEN
29328 RAISE;
29329 WHEN OTHERS THEN
29330 xla_exceptions_pkg.raise_message
29331 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_55');
29332 END AcctLineType_55;
29333 --
29334
29335 ---------------------------------------
29336 --
29337 -- PRIVATE FUNCTION
29338 -- AcctLineType_56
29339 --
29340 ---------------------------------------
29341 PROCEDURE AcctLineType_56 (
29342 p_application_id IN NUMBER
29343 ,p_event_id IN NUMBER
29344 ,p_calculate_acctd_flag IN VARCHAR2
29345 ,p_calculate_g_l_flag IN VARCHAR2
29346 ,p_actual_flag IN OUT VARCHAR2
29347 ,p_balance_type_code OUT VARCHAR2
29348 ,p_gain_or_loss_ref OUT VARCHAR2
29349
29350 --Cost Management Default Account
29351 , p_source_4 IN NUMBER
29352 --Receiving Accounting Line Type
29353 , p_source_5 IN VARCHAR2
29354 --DISTRIBUTION_IDENTIFIER
29355 , p_source_11 IN NUMBER
29356 --Distribution Type
29357 , p_source_12 IN VARCHAR2
29358 , p_source_12_meaning IN VARCHAR2
29359 --Entered Currency Code
29360 , p_source_15 IN VARCHAR2
29361 --Entered Amount
29362 , p_source_18 IN NUMBER
29363 --Currency Conversion Date
29364 , p_source_19 IN DATE
29365 --Currency Conversion Rate
29366 , p_source_20 IN NUMBER
29367 --Currency Conversion Type
29368 , p_source_21 IN VARCHAR2
29369 --Accounted Amount
29370 , p_source_22 IN NUMBER
29371 )
29372 IS
29373
29374 l_component_type VARCHAR2(80);
29375 l_component_code VARCHAR2(30);
29376 l_component_type_code VARCHAR2(1);
29377 l_component_appl_id INTEGER;
29378 l_amb_context_code VARCHAR2(30);
29379 l_entity_code VARCHAR2(30);
29380 l_event_class_code VARCHAR2(30);
29381 l_ae_header_id NUMBER;
29382 l_event_type_code VARCHAR2(30);
29383 l_line_definition_code VARCHAR2(30);
29384 l_line_definition_owner_code VARCHAR2(1);
29385 --
29386 -- adr variables
29387 l_segment VARCHAR2(30);
29388 l_ccid NUMBER;
29389 l_adr_transaction_coa_id NUMBER;
29390 l_adr_accounting_coa_id NUMBER;
29391 l_adr_flexfield_segment_code VARCHAR2(30);
29392 l_adr_flex_value_set_id NUMBER;
29393 l_adr_value_type_code VARCHAR2(30);
29394 l_adr_value_combination_id NUMBER;
29395 l_adr_value_segment_code VARCHAR2(30);
29396
29397 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
29398 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
29399 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
29400 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
29401
29402 -- 4262811 Variables ------------------------------------------------------------------------------------------
29403 l_entered_amt_idx NUMBER;
29404 l_accted_amt_idx NUMBER;
29405 l_acc_rev_flag VARCHAR2(1);
29406 l_accrual_line_num NUMBER;
29407 l_tmp_amt NUMBER;
29408 l_acc_rev_natural_side_code VARCHAR2(1);
29409
29410 l_num_entries NUMBER;
29411 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
29412 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
29413 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
29414 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
29415 l_recog_line_1 NUMBER;
29416 l_recog_line_2 NUMBER;
29417
29418 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
29419 l_bflow_applied_to_amt NUMBER; -- 5132302
29420 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
29421
29422 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
29423
29424 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
29425 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
29426
29427 ---------------------------------------------------------------------------------------------------------------
29428
29429
29430 --
29431 -- bulk performance
29432 --
29433 l_balance_type_code VARCHAR2(1);
29434 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
29435 l_log_module VARCHAR2(240);
29436
29437 --
29438 -- Upgrade strategy
29439 --
29440 l_actual_upg_option VARCHAR2(1);
29441 l_enc_upg_option VARCHAR2(1);
29442
29443 --
29444 BEGIN
29445 --
29446 IF g_log_enabled THEN
29447 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_56';
29448 END IF;
29449 --
29450 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
29451
29452 trace
29453 (p_msg => 'BEGIN of AcctLineType_56'
29454 ,p_level => C_LEVEL_PROCEDURE
29455 ,p_module => l_log_module);
29456
29457 END IF;
29458 --
29459 l_component_type := 'AMB_JLT';
29460 l_component_code := 'INTERCOMPANY_COGS';
29461 l_component_type_code := 'S';
29462 l_component_appl_id := 707;
29463 l_amb_context_code := 'DEFAULT';
29464 l_entity_code := 'RCV_ACCOUNTING_EVENTS';
29465 l_event_class_code := 'RETR_PRICE_ADJ_RCV';
29466 l_event_type_code := 'RETR_PRICE_ADJ_RCV_ALL';
29467 l_line_definition_owner_code := 'S';
29468 l_line_definition_code := 'RETR_PRICE_ADJ_RCV';
29469 --
29470 l_balance_type_code := 'A';
29471 l_segment := NULL;
29472 l_ccid := NULL;
29473 l_adr_transaction_coa_id := NULL;
29474 l_adr_accounting_coa_id := NULL;
29475 l_adr_flexfield_segment_code := NULL;
29476 l_adr_flex_value_set_id := NULL;
29477 l_adr_value_type_code := NULL;
29478 l_adr_value_combination_id := NULL;
29479 l_adr_value_segment_code := NULL;
29480
29481 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
29482 l_bflow_class_code := ''; -- 4219869 Business Flow
29483 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
29484 l_budgetary_control_flag := 'N';
29485
29486 l_bflow_applied_to_amt_idx := NULL; -- 5132302
29487 l_bflow_applied_to_amt := NULL; -- 5132302
29488 l_entered_amt_idx := NULL; -- 4262811
29489 l_accted_amt_idx := NULL; -- 4262811
29490 l_acc_rev_flag := NULL; -- 4262811
29491 l_accrual_line_num := NULL; -- 4262811
29492 l_tmp_amt := NULL; -- 4262811
29493 --
29494
29495 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
29496 l_balance_type_code <> 'B' THEN
29497 IF NVL(p_source_5,'
29498 ') = 'IC Cost of Sales'
29499 THEN
29500
29501 --
29502 XLA_AE_LINES_PKG.SetNewLine;
29503
29504 p_balance_type_code := l_balance_type_code;
29505 -- set the flag so later we will know whether the gain loss line needs to be created
29506
29507 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
29508 p_actual_flag :='A';
29509 END IF;
29510
29511 --
29512 -- bulk performance
29513 --
29514 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
29515 p_header_num => 0); -- 4262811
29516 --
29517 -- set accounting line options
29518 --
29519 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
29520 p_natural_side_code => 'D'
29521 , p_gain_or_loss_flag => 'N'
29522 , p_gl_transfer_mode_code => 'S'
29523 , p_acct_entry_type_code => 'A'
29524 , p_switch_side_flag => 'Y'
29525 , p_merge_duplicate_code => 'N'
29526 );
29527 --
29528 l_acc_rev_natural_side_code := 'C'; -- 4262811
29529 --
29530 --
29531 -- set accounting line type info
29532 --
29533 xla_ae_lines_pkg.SetAcctLineType
29534 (p_component_type => l_component_type
29535 ,p_event_type_code => l_event_type_code
29536 ,p_line_definition_owner_code => l_line_definition_owner_code
29537 ,p_line_definition_code => l_line_definition_code
29538 ,p_accounting_line_code => l_component_code
29539 ,p_accounting_line_type_code => l_component_type_code
29540 ,p_accounting_line_appl_id => l_component_appl_id
29541 ,p_amb_context_code => l_amb_context_code
29542 ,p_entity_code => l_entity_code
29543 ,p_event_class_code => l_event_class_code);
29544 --
29545 -- set accounting class
29546 --
29547 xla_ae_lines_pkg.SetAcctClass(
29548 p_accounting_class_code => 'INTERCOMPANY_COGS'
29549 , p_ae_header_id => l_ae_header_id
29550 );
29551
29552 --
29553 -- set rounding class
29554 --
29555 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
29556 'INTERCOMPANY_COGS';
29557
29558 --
29559 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
29560 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
29561 --
29562 -- bulk performance
29563 --
29564 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
29565
29566 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
29567 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
29568
29569 -- 4955764
29570 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
29571 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
29572
29573 -- 4458381 Public Sector Enh
29574
29575 --
29576 -- set accounting attributes for the line type
29577 --
29578 l_entered_amt_idx := 3;
29579 l_accted_amt_idx := 8;
29580 l_bflow_applied_to_amt_idx := NULL; -- 5132302
29581 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
29582 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
29583 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
29584 l_rec_acct_attrs.array_char_value(2) := p_source_12;
29585 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
29586 l_rec_acct_attrs.array_num_value(3) := p_source_18;
29587 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
29588 l_rec_acct_attrs.array_char_value(4) := p_source_15;
29589 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
29590 l_rec_acct_attrs.array_date_value(5) := p_source_19;
29591 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
29592 l_rec_acct_attrs.array_num_value(6) := p_source_20;
29593 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
29594 l_rec_acct_attrs.array_char_value(7) := p_source_21;
29595 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
29596 l_rec_acct_attrs.array_num_value(8) := p_source_22;
29597
29598 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
29599 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
29600
29601 ---------------------------------------------------------------------------------------------------------------
29602 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
29603 ---------------------------------------------------------------------------------------------------------------
29604 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
29605
29606 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
29607 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
29608
29609 IF xla_accounting_cache_pkg.GetValueChar
29610 (p_source_code => 'LEDGER_CATEGORY_CODE'
29611 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
29612 AND l_bflow_method_code = 'PRIOR_ENTRY'
29613 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
29614 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
29615 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
29616 )
29617 THEN
29618 xla_ae_lines_pkg.BflowUpgEntry
29619 (p_business_method_code => l_bflow_method_code
29620 ,p_business_class_code => l_bflow_class_code
29621 ,p_balance_type => l_balance_type_code);
29622 ELSE
29623 NULL;
29624 -- No business flow processing for business flow method of NONE.
29625 END IF;
29626
29627 --
29628 -- call analytical criteria
29629 --
29630
29631 --
29632 -- call description
29633 --
29634 -- No description or it is inherited.
29635 --
29636 -- call ADRs
29637 -- Bug 4922099
29638 --
29639 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
29640 (NVL(l_actual_upg_option, 'N') = 'O') OR
29641 (NVL(l_enc_upg_option, 'N') = 'O')
29642 )
29643 THEN
29644 NULL;
29645 --
29646 --
29647
29648 l_ccid := AcctDerRule_4(
29649 p_application_id => p_application_id
29650 , p_ae_header_id => l_ae_header_id
29651 , p_source_4 => p_source_4
29652 , x_transaction_coa_id => l_adr_transaction_coa_id
29653 , x_accounting_coa_id => l_adr_accounting_coa_id
29654 , x_value_type_code => l_adr_value_type_code
29655 , p_side => 'NA'
29656 );
29657
29658 xla_ae_lines_pkg.set_ccid(
29659 p_code_combination_id => l_ccid
29660 , p_value_type_code => l_adr_value_type_code
29661 , p_transaction_coa_id => l_adr_transaction_coa_id
29662 , p_accounting_coa_id => l_adr_accounting_coa_id
29663 , p_adr_code => 'CST_DEFAULT'
29664 , p_adr_type_code => 'S'
29665 , p_component_type => l_component_type
29666 , p_component_code => l_component_code
29667 , p_component_type_code => l_component_type_code
29668 , p_component_appl_id => l_component_appl_id
29669 , p_amb_context_code => l_amb_context_code
29670 , p_side => 'NA'
29671 );
29672
29673
29674 --
29675 --
29676 END IF;
29677 --
29678 -- Bug 4922099
29679 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
29680 (NVL(l_enc_upg_option, 'N') = 'O')
29681 ) AND
29682 (l_bflow_method_code = 'PRIOR_ENTRY')
29683 )
29684 THEN
29685 IF
29686 --
29687 1 = 2
29688 --
29689 THEN
29690 xla_accounting_err_pkg.build_message
29691 (p_appli_s_name => 'XLA'
29692 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
29693 ,p_token_1 => 'LINE_NUMBER'
29694 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
29695 ,p_token_2 => 'LINE_TYPE_NAME'
29696 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
29697 l_component_type
29698 ,l_component_code
29699 ,l_component_type_code
29700 ,l_component_appl_id
29701 ,l_amb_context_code
29702 ,l_entity_code
29703 ,l_event_class_code
29704 )
29705 ,p_token_3 => 'OWNER'
29706 ,p_value_3 => xla_lookups_pkg.get_meaning(
29707 p_lookup_type => 'XLA_OWNER_TYPE'
29708 ,p_lookup_code => l_component_type_code
29709 )
29710 ,p_token_4 => 'PRODUCT_NAME'
29711 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
29712 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
29713 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
29714 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
29715 ,p_ae_header_id => NULL
29716 );
29717
29718 IF (C_LEVEL_ERROR>= g_log_level) THEN
29719 trace
29720 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
29721 ,p_level => C_LEVEL_ERROR
29722 ,p_module => l_log_module);
29723 END IF;
29724 END IF;
29725 END IF;
29726 --
29727 --
29728 ------------------------------------------------------------------------------------------------
29729 -- 4219869 Business Flow
29730 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
29731 -- Prior Entry. Currently, the following code is always generated.
29732 ------------------------------------------------------------------------------------------------
29733 XLA_AE_LINES_PKG.ValidateCurrentLine;
29734
29735 ------------------------------------------------------------------------------------
29736 -- 4219869 Business Flow
29737 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
29738 ------------------------------------------------------------------------------------
29739 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
29740
29741 ----------------------------------------------------------------------------------
29742 -- 4219869 Business Flow
29743 -- Update journal entry status -- Need to generate this within IF <condition>
29744 ----------------------------------------------------------------------------------
29745 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
29746 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
29747 ,p_balance_type_code => l_balance_type_code
29748 );
29749
29750 -------------------------------------------------------------------------------------------
29751 -- 4262811 - Generate the Accrual Reversal lines
29752 -------------------------------------------------------------------------------------------
29753 BEGIN
29754 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
29755 (g_array_event(p_event_id).array_value_num('header_index'));
29756 IF l_acc_rev_flag IS NULL THEN
29757 l_acc_rev_flag := 'N';
29758 END IF;
29759 EXCEPTION
29760 WHEN OTHERS THEN
29761 l_acc_rev_flag := 'N';
29762 END;
29763 --
29764 IF (l_acc_rev_flag = 'Y') THEN
29765
29766 -- 4645092 ------------------------------------------------------------------------------
29767 -- To allow MPA report to determine if it should generate report process
29768 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
29769 ------------------------------------------------------------------------------------------
29770
29771 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
29772 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
29773 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
29774 -- call ADRs
29775 -- Bug 4922099
29776 --
29777 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
29778 (NVL(l_actual_upg_option, 'N') = 'O') OR
29779 (NVL(l_enc_upg_option, 'N') = 'O')
29780 )
29781 THEN
29782 NULL;
29783 --
29784 --
29785
29786 l_ccid := AcctDerRule_4(
29787 p_application_id => p_application_id
29788 , p_ae_header_id => l_ae_header_id
29789 , p_source_4 => p_source_4
29790 , x_transaction_coa_id => l_adr_transaction_coa_id
29791 , x_accounting_coa_id => l_adr_accounting_coa_id
29792 , x_value_type_code => l_adr_value_type_code
29793 , p_side => 'NA'
29794 );
29795
29796 xla_ae_lines_pkg.set_ccid(
29797 p_code_combination_id => l_ccid
29798 , p_value_type_code => l_adr_value_type_code
29799 , p_transaction_coa_id => l_adr_transaction_coa_id
29800 , p_accounting_coa_id => l_adr_accounting_coa_id
29801 , p_adr_code => 'CST_DEFAULT'
29802 , p_adr_type_code => 'S'
29803 , p_component_type => l_component_type
29804 , p_component_code => l_component_code
29805 , p_component_type_code => l_component_type_code
29806 , p_component_appl_id => l_component_appl_id
29807 , p_amb_context_code => l_amb_context_code
29808 , p_side => 'NA'
29809 );
29810
29811
29812 --
29813 --
29814 END IF;
29815
29816 --
29817 -- Update the line information that should be overwritten
29818 --
29819 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
29820 p_header_num => 1);
29821 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
29822
29823 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
29824
29825 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
29826 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
29827 END IF;
29828
29829 --
29830 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
29831 --
29832 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
29833 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
29834 ELSE
29835 ---------------------------------------------------------------------------------------------------
29836 -- 4262811a Switch Sign
29837 ---------------------------------------------------------------------------------------------------
29838 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
29839 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
29840 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
29841 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
29842 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
29843 -- 5132302
29844 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
29845 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
29846
29847 END IF;
29848
29849 -- 4955764
29850 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
29851 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
29852
29853
29854 XLA_AE_LINES_PKG.ValidateCurrentLine;
29855 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
29856
29857 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
29858 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
29859 ,p_balance_type_code => l_balance_type_code);
29860
29861 END IF;
29862
29863 -----------------------------------------------------------------------------------------
29864 -- 4262811 Multiperiod Accounting
29865 -----------------------------------------------------------------------------------------
29866 -- No MPA option is assigned.
29867
29868
29869 END IF;
29870 END IF;
29871 --
29872
29873 --
29874 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
29875 trace
29876 (p_msg => 'END of AcctLineType_56'
29877 ,p_level => C_LEVEL_PROCEDURE
29878 ,p_module => l_log_module);
29879 END IF;
29880 --
29881 EXCEPTION
29882 WHEN xla_exceptions_pkg.application_exception THEN
29883 RAISE;
29884 WHEN OTHERS THEN
29885 xla_exceptions_pkg.raise_message
29886 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_56');
29887 END AcctLineType_56;
29888 --
29889
29890 ---------------------------------------
29891 --
29892 -- PRIVATE FUNCTION
29893 -- AcctLineType_57
29894 --
29895 ---------------------------------------
29896 PROCEDURE AcctLineType_57 (
29897 p_application_id IN NUMBER
29898 ,p_event_id IN NUMBER
29899 ,p_calculate_acctd_flag IN VARCHAR2
29900 ,p_calculate_g_l_flag IN VARCHAR2
29901 ,p_actual_flag IN OUT VARCHAR2
29902 ,p_balance_type_code OUT VARCHAR2
29903 ,p_gain_or_loss_ref OUT VARCHAR2
29904
29905 --Cost Management Default Account
29906 , p_source_4 IN NUMBER
29907 --Receiving Accounting Line Type
29908 , p_source_5 IN VARCHAR2
29909 --DISTRIBUTION_IDENTIFIER
29910 , p_source_11 IN NUMBER
29911 --Distribution Type
29912 , p_source_12 IN VARCHAR2
29913 , p_source_12_meaning IN VARCHAR2
29914 --Entered Currency Code
29915 , p_source_15 IN VARCHAR2
29916 --Entered Amount
29917 , p_source_18 IN NUMBER
29918 --Currency Conversion Date
29919 , p_source_19 IN DATE
29920 --Currency Conversion Rate
29921 , p_source_20 IN NUMBER
29922 --Currency Conversion Type
29923 , p_source_21 IN VARCHAR2
29924 --Accounted Amount
29925 , p_source_22 IN NUMBER
29926 )
29927 IS
29928
29929 l_component_type VARCHAR2(80);
29930 l_component_code VARCHAR2(30);
29931 l_component_type_code VARCHAR2(1);
29932 l_component_appl_id INTEGER;
29933 l_amb_context_code VARCHAR2(30);
29934 l_entity_code VARCHAR2(30);
29935 l_event_class_code VARCHAR2(30);
29936 l_ae_header_id NUMBER;
29937 l_event_type_code VARCHAR2(30);
29938 l_line_definition_code VARCHAR2(30);
29939 l_line_definition_owner_code VARCHAR2(1);
29940 --
29941 -- adr variables
29942 l_segment VARCHAR2(30);
29943 l_ccid NUMBER;
29944 l_adr_transaction_coa_id NUMBER;
29945 l_adr_accounting_coa_id NUMBER;
29946 l_adr_flexfield_segment_code VARCHAR2(30);
29947 l_adr_flex_value_set_id NUMBER;
29948 l_adr_value_type_code VARCHAR2(30);
29949 l_adr_value_combination_id NUMBER;
29950 l_adr_value_segment_code VARCHAR2(30);
29951
29952 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
29953 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
29954 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
29955 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
29956
29957 -- 4262811 Variables ------------------------------------------------------------------------------------------
29958 l_entered_amt_idx NUMBER;
29959 l_accted_amt_idx NUMBER;
29960 l_acc_rev_flag VARCHAR2(1);
29961 l_accrual_line_num NUMBER;
29962 l_tmp_amt NUMBER;
29963 l_acc_rev_natural_side_code VARCHAR2(1);
29964
29965 l_num_entries NUMBER;
29966 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
29967 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
29968 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
29969 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
29970 l_recog_line_1 NUMBER;
29971 l_recog_line_2 NUMBER;
29972
29973 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
29974 l_bflow_applied_to_amt NUMBER; -- 5132302
29975 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
29976
29977 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
29978
29979 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
29980 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
29981
29982 ---------------------------------------------------------------------------------------------------------------
29983
29984
29985 --
29986 -- bulk performance
29987 --
29988 l_balance_type_code VARCHAR2(1);
29989 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
29990 l_log_module VARCHAR2(240);
29991
29992 --
29993 -- Upgrade strategy
29994 --
29995 l_actual_upg_option VARCHAR2(1);
29996 l_enc_upg_option VARCHAR2(1);
29997
29998 --
29999 BEGIN
30000 --
30001 IF g_log_enabled THEN
30002 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_57';
30003 END IF;
30004 --
30005 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
30006
30007 trace
30008 (p_msg => 'BEGIN of AcctLineType_57'
30009 ,p_level => C_LEVEL_PROCEDURE
30010 ,p_module => l_log_module);
30011
30012 END IF;
30013 --
30014 l_component_type := 'AMB_JLT';
30015 l_component_code := 'INTERCOMPANY_COGS';
30016 l_component_type_code := 'S';
30017 l_component_appl_id := 707;
30018 l_amb_context_code := 'DEFAULT';
30019 l_entity_code := 'RCV_ACCOUNTING_EVENTS';
30020 l_event_class_code := 'RCPT_REC_INSP';
30021 l_event_type_code := 'RCPT_REC_INSP_ALL';
30022 l_line_definition_owner_code := 'S';
30023 l_line_definition_code := 'RCPT_REC_INSP';
30024 --
30025 l_balance_type_code := 'A';
30026 l_segment := NULL;
30027 l_ccid := NULL;
30028 l_adr_transaction_coa_id := NULL;
30029 l_adr_accounting_coa_id := NULL;
30030 l_adr_flexfield_segment_code := NULL;
30031 l_adr_flex_value_set_id := NULL;
30032 l_adr_value_type_code := NULL;
30033 l_adr_value_combination_id := NULL;
30034 l_adr_value_segment_code := NULL;
30035
30036 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
30037 l_bflow_class_code := ''; -- 4219869 Business Flow
30038 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
30039 l_budgetary_control_flag := 'N';
30040
30041 l_bflow_applied_to_amt_idx := NULL; -- 5132302
30042 l_bflow_applied_to_amt := NULL; -- 5132302
30043 l_entered_amt_idx := NULL; -- 4262811
30044 l_accted_amt_idx := NULL; -- 4262811
30045 l_acc_rev_flag := NULL; -- 4262811
30046 l_accrual_line_num := NULL; -- 4262811
30047 l_tmp_amt := NULL; -- 4262811
30048 --
30049
30050 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
30051 l_balance_type_code <> 'B' THEN
30052 IF NVL(p_source_5,'
30053 ') = 'IC Cost of Sales'
30054 THEN
30055
30056 --
30057 XLA_AE_LINES_PKG.SetNewLine;
30058
30059 p_balance_type_code := l_balance_type_code;
30060 -- set the flag so later we will know whether the gain loss line needs to be created
30061
30062 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
30063 p_actual_flag :='A';
30064 END IF;
30065
30066 --
30067 -- bulk performance
30068 --
30069 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
30070 p_header_num => 0); -- 4262811
30071 --
30072 -- set accounting line options
30073 --
30074 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
30075 p_natural_side_code => 'D'
30076 , p_gain_or_loss_flag => 'N'
30077 , p_gl_transfer_mode_code => 'S'
30078 , p_acct_entry_type_code => 'A'
30079 , p_switch_side_flag => 'Y'
30080 , p_merge_duplicate_code => 'N'
30081 );
30082 --
30083 l_acc_rev_natural_side_code := 'C'; -- 4262811
30084 --
30085 --
30086 -- set accounting line type info
30087 --
30088 xla_ae_lines_pkg.SetAcctLineType
30089 (p_component_type => l_component_type
30090 ,p_event_type_code => l_event_type_code
30091 ,p_line_definition_owner_code => l_line_definition_owner_code
30092 ,p_line_definition_code => l_line_definition_code
30093 ,p_accounting_line_code => l_component_code
30094 ,p_accounting_line_type_code => l_component_type_code
30095 ,p_accounting_line_appl_id => l_component_appl_id
30096 ,p_amb_context_code => l_amb_context_code
30097 ,p_entity_code => l_entity_code
30098 ,p_event_class_code => l_event_class_code);
30099 --
30100 -- set accounting class
30101 --
30102 xla_ae_lines_pkg.SetAcctClass(
30103 p_accounting_class_code => 'INTERCOMPANY_COGS'
30104 , p_ae_header_id => l_ae_header_id
30105 );
30106
30107 --
30108 -- set rounding class
30109 --
30110 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
30111 'INTERCOMPANY_COGS';
30112
30113 --
30114 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
30115 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
30116 --
30117 -- bulk performance
30118 --
30119 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
30120
30121 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
30122 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
30123
30124 -- 4955764
30125 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
30126 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
30127
30128 -- 4458381 Public Sector Enh
30129
30130 --
30131 -- set accounting attributes for the line type
30132 --
30133 l_entered_amt_idx := 3;
30134 l_accted_amt_idx := 8;
30135 l_bflow_applied_to_amt_idx := NULL; -- 5132302
30136 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
30137 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
30138 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
30139 l_rec_acct_attrs.array_char_value(2) := p_source_12;
30140 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
30141 l_rec_acct_attrs.array_num_value(3) := p_source_18;
30142 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
30143 l_rec_acct_attrs.array_char_value(4) := p_source_15;
30144 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
30145 l_rec_acct_attrs.array_date_value(5) := p_source_19;
30146 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
30147 l_rec_acct_attrs.array_num_value(6) := p_source_20;
30148 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
30149 l_rec_acct_attrs.array_char_value(7) := p_source_21;
30150 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
30151 l_rec_acct_attrs.array_num_value(8) := p_source_22;
30152
30153 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
30154 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
30155
30156 ---------------------------------------------------------------------------------------------------------------
30157 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
30158 ---------------------------------------------------------------------------------------------------------------
30159 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
30160
30161 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
30162 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
30163
30164 IF xla_accounting_cache_pkg.GetValueChar
30165 (p_source_code => 'LEDGER_CATEGORY_CODE'
30166 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
30167 AND l_bflow_method_code = 'PRIOR_ENTRY'
30168 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
30169 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
30170 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
30171 )
30172 THEN
30173 xla_ae_lines_pkg.BflowUpgEntry
30174 (p_business_method_code => l_bflow_method_code
30175 ,p_business_class_code => l_bflow_class_code
30176 ,p_balance_type => l_balance_type_code);
30177 ELSE
30178 NULL;
30179 -- No business flow processing for business flow method of NONE.
30180 END IF;
30181
30182 --
30183 -- call analytical criteria
30184 --
30185
30186 --
30187 -- call description
30188 --
30189 -- No description or it is inherited.
30190 --
30191 -- call ADRs
30192 -- Bug 4922099
30193 --
30194 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
30195 (NVL(l_actual_upg_option, 'N') = 'O') OR
30196 (NVL(l_enc_upg_option, 'N') = 'O')
30197 )
30198 THEN
30199 NULL;
30200 --
30201 --
30202
30203 l_ccid := AcctDerRule_4(
30204 p_application_id => p_application_id
30205 , p_ae_header_id => l_ae_header_id
30206 , p_source_4 => p_source_4
30207 , x_transaction_coa_id => l_adr_transaction_coa_id
30208 , x_accounting_coa_id => l_adr_accounting_coa_id
30209 , x_value_type_code => l_adr_value_type_code
30210 , p_side => 'NA'
30211 );
30212
30213 xla_ae_lines_pkg.set_ccid(
30214 p_code_combination_id => l_ccid
30215 , p_value_type_code => l_adr_value_type_code
30216 , p_transaction_coa_id => l_adr_transaction_coa_id
30217 , p_accounting_coa_id => l_adr_accounting_coa_id
30218 , p_adr_code => 'CST_DEFAULT'
30219 , p_adr_type_code => 'S'
30220 , p_component_type => l_component_type
30221 , p_component_code => l_component_code
30222 , p_component_type_code => l_component_type_code
30223 , p_component_appl_id => l_component_appl_id
30224 , p_amb_context_code => l_amb_context_code
30225 , p_side => 'NA'
30226 );
30227
30228
30229 --
30230 --
30231 END IF;
30232 --
30233 -- Bug 4922099
30234 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
30235 (NVL(l_enc_upg_option, 'N') = 'O')
30236 ) AND
30237 (l_bflow_method_code = 'PRIOR_ENTRY')
30238 )
30239 THEN
30240 IF
30241 --
30242 1 = 2
30243 --
30244 THEN
30245 xla_accounting_err_pkg.build_message
30246 (p_appli_s_name => 'XLA'
30247 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
30248 ,p_token_1 => 'LINE_NUMBER'
30249 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
30250 ,p_token_2 => 'LINE_TYPE_NAME'
30251 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
30252 l_component_type
30253 ,l_component_code
30254 ,l_component_type_code
30255 ,l_component_appl_id
30256 ,l_amb_context_code
30257 ,l_entity_code
30258 ,l_event_class_code
30259 )
30260 ,p_token_3 => 'OWNER'
30261 ,p_value_3 => xla_lookups_pkg.get_meaning(
30262 p_lookup_type => 'XLA_OWNER_TYPE'
30263 ,p_lookup_code => l_component_type_code
30264 )
30265 ,p_token_4 => 'PRODUCT_NAME'
30266 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
30267 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
30268 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
30269 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
30270 ,p_ae_header_id => NULL
30271 );
30272
30273 IF (C_LEVEL_ERROR>= g_log_level) THEN
30274 trace
30275 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
30276 ,p_level => C_LEVEL_ERROR
30277 ,p_module => l_log_module);
30278 END IF;
30279 END IF;
30280 END IF;
30281 --
30282 --
30283 ------------------------------------------------------------------------------------------------
30284 -- 4219869 Business Flow
30285 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
30286 -- Prior Entry. Currently, the following code is always generated.
30287 ------------------------------------------------------------------------------------------------
30288 XLA_AE_LINES_PKG.ValidateCurrentLine;
30289
30290 ------------------------------------------------------------------------------------
30291 -- 4219869 Business Flow
30292 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
30293 ------------------------------------------------------------------------------------
30294 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
30295
30296 ----------------------------------------------------------------------------------
30297 -- 4219869 Business Flow
30298 -- Update journal entry status -- Need to generate this within IF <condition>
30299 ----------------------------------------------------------------------------------
30300 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
30301 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
30302 ,p_balance_type_code => l_balance_type_code
30303 );
30304
30305 -------------------------------------------------------------------------------------------
30306 -- 4262811 - Generate the Accrual Reversal lines
30307 -------------------------------------------------------------------------------------------
30308 BEGIN
30309 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
30310 (g_array_event(p_event_id).array_value_num('header_index'));
30311 IF l_acc_rev_flag IS NULL THEN
30312 l_acc_rev_flag := 'N';
30313 END IF;
30314 EXCEPTION
30315 WHEN OTHERS THEN
30316 l_acc_rev_flag := 'N';
30317 END;
30318 --
30319 IF (l_acc_rev_flag = 'Y') THEN
30320
30321 -- 4645092 ------------------------------------------------------------------------------
30322 -- To allow MPA report to determine if it should generate report process
30323 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
30324 ------------------------------------------------------------------------------------------
30325
30326 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
30327 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
30328 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
30329 -- call ADRs
30330 -- Bug 4922099
30331 --
30332 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
30333 (NVL(l_actual_upg_option, 'N') = 'O') OR
30334 (NVL(l_enc_upg_option, 'N') = 'O')
30335 )
30336 THEN
30337 NULL;
30338 --
30339 --
30340
30341 l_ccid := AcctDerRule_4(
30342 p_application_id => p_application_id
30343 , p_ae_header_id => l_ae_header_id
30344 , p_source_4 => p_source_4
30345 , x_transaction_coa_id => l_adr_transaction_coa_id
30346 , x_accounting_coa_id => l_adr_accounting_coa_id
30347 , x_value_type_code => l_adr_value_type_code
30348 , p_side => 'NA'
30349 );
30350
30351 xla_ae_lines_pkg.set_ccid(
30352 p_code_combination_id => l_ccid
30353 , p_value_type_code => l_adr_value_type_code
30354 , p_transaction_coa_id => l_adr_transaction_coa_id
30355 , p_accounting_coa_id => l_adr_accounting_coa_id
30356 , p_adr_code => 'CST_DEFAULT'
30357 , p_adr_type_code => 'S'
30358 , p_component_type => l_component_type
30359 , p_component_code => l_component_code
30360 , p_component_type_code => l_component_type_code
30361 , p_component_appl_id => l_component_appl_id
30362 , p_amb_context_code => l_amb_context_code
30363 , p_side => 'NA'
30364 );
30365
30366
30367 --
30368 --
30369 END IF;
30370
30371 --
30372 -- Update the line information that should be overwritten
30373 --
30374 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
30375 p_header_num => 1);
30376 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
30377
30378 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
30379
30380 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
30381 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
30382 END IF;
30383
30384 --
30385 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
30386 --
30387 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
30388 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
30389 ELSE
30390 ---------------------------------------------------------------------------------------------------
30391 -- 4262811a Switch Sign
30392 ---------------------------------------------------------------------------------------------------
30393 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
30394 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
30395 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
30396 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
30397 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
30398 -- 5132302
30399 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
30400 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
30401
30402 END IF;
30403
30404 -- 4955764
30405 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
30406 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
30407
30408
30409 XLA_AE_LINES_PKG.ValidateCurrentLine;
30410 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
30411
30412 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
30413 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
30414 ,p_balance_type_code => l_balance_type_code);
30415
30416 END IF;
30417
30418 -----------------------------------------------------------------------------------------
30419 -- 4262811 Multiperiod Accounting
30420 -----------------------------------------------------------------------------------------
30421 -- No MPA option is assigned.
30422
30423
30424 END IF;
30425 END IF;
30426 --
30427
30428 --
30429 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
30430 trace
30431 (p_msg => 'END of AcctLineType_57'
30432 ,p_level => C_LEVEL_PROCEDURE
30433 ,p_module => l_log_module);
30434 END IF;
30435 --
30436 EXCEPTION
30437 WHEN xla_exceptions_pkg.application_exception THEN
30438 RAISE;
30439 WHEN OTHERS THEN
30440 xla_exceptions_pkg.raise_message
30441 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_57');
30442 END AcctLineType_57;
30443 --
30444
30445 ---------------------------------------
30446 --
30447 -- PRIVATE FUNCTION
30448 -- AcctLineType_58
30449 --
30450 ---------------------------------------
30451 PROCEDURE AcctLineType_58 (
30452 p_application_id IN NUMBER
30453 ,p_event_id IN NUMBER
30454 ,p_calculate_acctd_flag IN VARCHAR2
30455 ,p_calculate_g_l_flag IN VARCHAR2
30456 ,p_actual_flag IN OUT VARCHAR2
30457 ,p_balance_type_code OUT VARCHAR2
30458 ,p_gain_or_loss_ref OUT VARCHAR2
30459
30460 --Cost Management Default Account
30461 , p_source_4 IN NUMBER
30462 --DISTRIBUTION_IDENTIFIER
30463 , p_source_11 IN NUMBER
30464 --Distribution Type
30465 , p_source_12 IN VARCHAR2
30466 , p_source_12_meaning IN VARCHAR2
30467 --Entered Currency Code
30468 , p_source_15 IN VARCHAR2
30469 --Entered Amount
30470 , p_source_18 IN NUMBER
30471 --Currency Conversion Date
30472 , p_source_19 IN DATE
30473 --Currency Conversion Rate
30474 , p_source_20 IN NUMBER
30475 --Currency Conversion Type
30476 , p_source_21 IN VARCHAR2
30477 --Accounted Amount
30478 , p_source_22 IN NUMBER
30479 --Accounting Line Type
30480 , p_source_24 IN NUMBER
30481 )
30482 IS
30483
30484 l_component_type VARCHAR2(80);
30485 l_component_code VARCHAR2(30);
30486 l_component_type_code VARCHAR2(1);
30487 l_component_appl_id INTEGER;
30488 l_amb_context_code VARCHAR2(30);
30489 l_entity_code VARCHAR2(30);
30490 l_event_class_code VARCHAR2(30);
30491 l_ae_header_id NUMBER;
30492 l_event_type_code VARCHAR2(30);
30493 l_line_definition_code VARCHAR2(30);
30494 l_line_definition_owner_code VARCHAR2(1);
30495 --
30496 -- adr variables
30497 l_segment VARCHAR2(30);
30498 l_ccid NUMBER;
30499 l_adr_transaction_coa_id NUMBER;
30500 l_adr_accounting_coa_id NUMBER;
30501 l_adr_flexfield_segment_code VARCHAR2(30);
30502 l_adr_flex_value_set_id NUMBER;
30503 l_adr_value_type_code VARCHAR2(30);
30504 l_adr_value_combination_id NUMBER;
30505 l_adr_value_segment_code VARCHAR2(30);
30506
30507 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
30508 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
30509 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
30510 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
30511
30512 -- 4262811 Variables ------------------------------------------------------------------------------------------
30513 l_entered_amt_idx NUMBER;
30514 l_accted_amt_idx NUMBER;
30515 l_acc_rev_flag VARCHAR2(1);
30516 l_accrual_line_num NUMBER;
30517 l_tmp_amt NUMBER;
30518 l_acc_rev_natural_side_code VARCHAR2(1);
30519
30520 l_num_entries NUMBER;
30521 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
30522 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
30523 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
30524 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
30525 l_recog_line_1 NUMBER;
30526 l_recog_line_2 NUMBER;
30527
30528 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
30529 l_bflow_applied_to_amt NUMBER; -- 5132302
30530 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
30531
30532 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
30533
30534 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
30535 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
30536
30537 ---------------------------------------------------------------------------------------------------------------
30538
30539
30540 --
30541 -- bulk performance
30542 --
30543 l_balance_type_code VARCHAR2(1);
30544 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
30545 l_log_module VARCHAR2(240);
30546
30547 --
30548 -- Upgrade strategy
30549 --
30550 l_actual_upg_option VARCHAR2(1);
30551 l_enc_upg_option VARCHAR2(1);
30552
30553 --
30554 BEGIN
30555 --
30556 IF g_log_enabled THEN
30557 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_58';
30558 END IF;
30559 --
30560 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
30561
30562 trace
30563 (p_msg => 'BEGIN of AcctLineType_58'
30564 ,p_level => C_LEVEL_PROCEDURE
30565 ,p_module => l_log_module);
30566
30567 END IF;
30568 --
30569 l_component_type := 'AMB_JLT';
30570 l_component_code := 'INTERORG_FREIGHT_CHARGE';
30571 l_component_type_code := 'S';
30572 l_component_appl_id := 707;
30573 l_amb_context_code := 'DEFAULT';
30574 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
30575 l_event_class_code := 'USER_DEFINE';
30576 l_event_type_code := 'UFOB_SHIP_RECIPIENT_SHIP_NO_TP';
30577 l_line_definition_owner_code := 'S';
30578 l_line_definition_code := 'USER_FOB_SHIP_RECP_SHIP_NO_TP';
30579 --
30580 l_balance_type_code := 'A';
30581 l_segment := NULL;
30582 l_ccid := NULL;
30583 l_adr_transaction_coa_id := NULL;
30584 l_adr_accounting_coa_id := NULL;
30585 l_adr_flexfield_segment_code := NULL;
30586 l_adr_flex_value_set_id := NULL;
30587 l_adr_value_type_code := NULL;
30588 l_adr_value_combination_id := NULL;
30589 l_adr_value_segment_code := NULL;
30590
30591 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
30592 l_bflow_class_code := ''; -- 4219869 Business Flow
30593 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
30594 l_budgetary_control_flag := 'N';
30595
30596 l_bflow_applied_to_amt_idx := NULL; -- 5132302
30597 l_bflow_applied_to_amt := NULL; -- 5132302
30598 l_entered_amt_idx := NULL; -- 4262811
30599 l_accted_amt_idx := NULL; -- 4262811
30600 l_acc_rev_flag := NULL; -- 4262811
30601 l_accrual_line_num := NULL; -- 4262811
30602 l_tmp_amt := NULL; -- 4262811
30603 --
30604
30605 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
30606 l_balance_type_code <> 'B' THEN
30607 IF NVL(p_source_24,9E125) = 12
30608 THEN
30609
30610 --
30611 XLA_AE_LINES_PKG.SetNewLine;
30612
30613 p_balance_type_code := l_balance_type_code;
30614 -- set the flag so later we will know whether the gain loss line needs to be created
30615
30616 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
30617 p_actual_flag :='A';
30618 END IF;
30619
30620 --
30621 -- bulk performance
30622 --
30623 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
30624 p_header_num => 0); -- 4262811
30625 --
30626 -- set accounting line options
30627 --
30628 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
30629 p_natural_side_code => 'D'
30630 , p_gain_or_loss_flag => 'N'
30631 , p_gl_transfer_mode_code => 'S'
30632 , p_acct_entry_type_code => 'A'
30633 , p_switch_side_flag => 'Y'
30634 , p_merge_duplicate_code => 'N'
30635 );
30636 --
30637 l_acc_rev_natural_side_code := 'C'; -- 4262811
30638 --
30639 --
30640 -- set accounting line type info
30641 --
30642 xla_ae_lines_pkg.SetAcctLineType
30643 (p_component_type => l_component_type
30644 ,p_event_type_code => l_event_type_code
30645 ,p_line_definition_owner_code => l_line_definition_owner_code
30646 ,p_line_definition_code => l_line_definition_code
30647 ,p_accounting_line_code => l_component_code
30648 ,p_accounting_line_type_code => l_component_type_code
30649 ,p_accounting_line_appl_id => l_component_appl_id
30650 ,p_amb_context_code => l_amb_context_code
30651 ,p_entity_code => l_entity_code
30652 ,p_event_class_code => l_event_class_code);
30653 --
30654 -- set accounting class
30655 --
30656 xla_ae_lines_pkg.SetAcctClass(
30657 p_accounting_class_code => 'INTERORG_FREIGHT_CHARGE'
30658 , p_ae_header_id => l_ae_header_id
30659 );
30660
30661 --
30662 -- set rounding class
30663 --
30664 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
30665 'INTERORG_FREIGHT_CHARGE';
30666
30667 --
30668 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
30669 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
30670 --
30671 -- bulk performance
30672 --
30673 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
30674
30675 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
30676 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
30677
30678 -- 4955764
30679 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
30680 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
30681
30682 -- 4458381 Public Sector Enh
30683
30684 --
30685 -- set accounting attributes for the line type
30686 --
30687 l_entered_amt_idx := 3;
30688 l_accted_amt_idx := 8;
30689 l_bflow_applied_to_amt_idx := NULL; -- 5132302
30690 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
30691 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
30692 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
30693 l_rec_acct_attrs.array_char_value(2) := p_source_12;
30694 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
30695 l_rec_acct_attrs.array_num_value(3) := p_source_18;
30696 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
30697 l_rec_acct_attrs.array_char_value(4) := p_source_15;
30698 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
30699 l_rec_acct_attrs.array_date_value(5) := p_source_19;
30700 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
30701 l_rec_acct_attrs.array_num_value(6) := p_source_20;
30702 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
30703 l_rec_acct_attrs.array_char_value(7) := p_source_21;
30704 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
30705 l_rec_acct_attrs.array_num_value(8) := p_source_22;
30706
30707 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
30708 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
30709
30710 ---------------------------------------------------------------------------------------------------------------
30711 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
30712 ---------------------------------------------------------------------------------------------------------------
30713 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
30714
30715 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
30716 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
30717
30718 IF xla_accounting_cache_pkg.GetValueChar
30719 (p_source_code => 'LEDGER_CATEGORY_CODE'
30720 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
30721 AND l_bflow_method_code = 'PRIOR_ENTRY'
30722 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
30723 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
30724 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
30725 )
30726 THEN
30727 xla_ae_lines_pkg.BflowUpgEntry
30728 (p_business_method_code => l_bflow_method_code
30729 ,p_business_class_code => l_bflow_class_code
30730 ,p_balance_type => l_balance_type_code);
30731 ELSE
30732 NULL;
30733 -- No business flow processing for business flow method of NONE.
30734 END IF;
30735
30736 --
30737 -- call analytical criteria
30738 --
30739
30740 --
30741 -- call description
30742 --
30743 -- No description or it is inherited.
30744 --
30745 -- call ADRs
30746 -- Bug 4922099
30747 --
30748 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
30749 (NVL(l_actual_upg_option, 'N') = 'O') OR
30750 (NVL(l_enc_upg_option, 'N') = 'O')
30751 )
30752 THEN
30753 NULL;
30754 --
30755 --
30756
30757 l_ccid := AcctDerRule_4(
30758 p_application_id => p_application_id
30759 , p_ae_header_id => l_ae_header_id
30760 , p_source_4 => p_source_4
30761 , x_transaction_coa_id => l_adr_transaction_coa_id
30762 , x_accounting_coa_id => l_adr_accounting_coa_id
30763 , x_value_type_code => l_adr_value_type_code
30764 , p_side => 'NA'
30765 );
30766
30767 xla_ae_lines_pkg.set_ccid(
30768 p_code_combination_id => l_ccid
30769 , p_value_type_code => l_adr_value_type_code
30770 , p_transaction_coa_id => l_adr_transaction_coa_id
30771 , p_accounting_coa_id => l_adr_accounting_coa_id
30772 , p_adr_code => 'CST_DEFAULT'
30773 , p_adr_type_code => 'S'
30774 , p_component_type => l_component_type
30775 , p_component_code => l_component_code
30776 , p_component_type_code => l_component_type_code
30777 , p_component_appl_id => l_component_appl_id
30778 , p_amb_context_code => l_amb_context_code
30779 , p_side => 'NA'
30780 );
30781
30782
30783 --
30784 --
30785 END IF;
30786 --
30787 -- Bug 4922099
30788 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
30789 (NVL(l_enc_upg_option, 'N') = 'O')
30790 ) AND
30791 (l_bflow_method_code = 'PRIOR_ENTRY')
30792 )
30793 THEN
30794 IF
30795 --
30796 1 = 2
30797 --
30798 THEN
30799 xla_accounting_err_pkg.build_message
30800 (p_appli_s_name => 'XLA'
30801 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
30802 ,p_token_1 => 'LINE_NUMBER'
30803 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
30804 ,p_token_2 => 'LINE_TYPE_NAME'
30805 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
30806 l_component_type
30807 ,l_component_code
30808 ,l_component_type_code
30809 ,l_component_appl_id
30810 ,l_amb_context_code
30811 ,l_entity_code
30812 ,l_event_class_code
30813 )
30814 ,p_token_3 => 'OWNER'
30815 ,p_value_3 => xla_lookups_pkg.get_meaning(
30816 p_lookup_type => 'XLA_OWNER_TYPE'
30817 ,p_lookup_code => l_component_type_code
30818 )
30819 ,p_token_4 => 'PRODUCT_NAME'
30820 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
30821 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
30822 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
30823 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
30824 ,p_ae_header_id => NULL
30825 );
30826
30827 IF (C_LEVEL_ERROR>= g_log_level) THEN
30828 trace
30829 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
30830 ,p_level => C_LEVEL_ERROR
30831 ,p_module => l_log_module);
30832 END IF;
30833 END IF;
30834 END IF;
30835 --
30836 --
30837 ------------------------------------------------------------------------------------------------
30838 -- 4219869 Business Flow
30839 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
30840 -- Prior Entry. Currently, the following code is always generated.
30841 ------------------------------------------------------------------------------------------------
30842 XLA_AE_LINES_PKG.ValidateCurrentLine;
30843
30844 ------------------------------------------------------------------------------------
30845 -- 4219869 Business Flow
30846 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
30847 ------------------------------------------------------------------------------------
30848 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
30849
30850 ----------------------------------------------------------------------------------
30851 -- 4219869 Business Flow
30852 -- Update journal entry status -- Need to generate this within IF <condition>
30853 ----------------------------------------------------------------------------------
30854 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
30855 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
30856 ,p_balance_type_code => l_balance_type_code
30857 );
30858
30859 -------------------------------------------------------------------------------------------
30860 -- 4262811 - Generate the Accrual Reversal lines
30861 -------------------------------------------------------------------------------------------
30862 BEGIN
30863 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
30864 (g_array_event(p_event_id).array_value_num('header_index'));
30865 IF l_acc_rev_flag IS NULL THEN
30866 l_acc_rev_flag := 'N';
30867 END IF;
30868 EXCEPTION
30869 WHEN OTHERS THEN
30870 l_acc_rev_flag := 'N';
30871 END;
30872 --
30873 IF (l_acc_rev_flag = 'Y') THEN
30874
30875 -- 4645092 ------------------------------------------------------------------------------
30876 -- To allow MPA report to determine if it should generate report process
30877 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
30878 ------------------------------------------------------------------------------------------
30879
30880 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
30881 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
30882 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
30883 -- call ADRs
30884 -- Bug 4922099
30885 --
30886 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
30887 (NVL(l_actual_upg_option, 'N') = 'O') OR
30888 (NVL(l_enc_upg_option, 'N') = 'O')
30889 )
30890 THEN
30891 NULL;
30892 --
30893 --
30894
30895 l_ccid := AcctDerRule_4(
30896 p_application_id => p_application_id
30897 , p_ae_header_id => l_ae_header_id
30898 , p_source_4 => p_source_4
30899 , x_transaction_coa_id => l_adr_transaction_coa_id
30900 , x_accounting_coa_id => l_adr_accounting_coa_id
30901 , x_value_type_code => l_adr_value_type_code
30902 , p_side => 'NA'
30903 );
30904
30905 xla_ae_lines_pkg.set_ccid(
30906 p_code_combination_id => l_ccid
30907 , p_value_type_code => l_adr_value_type_code
30908 , p_transaction_coa_id => l_adr_transaction_coa_id
30909 , p_accounting_coa_id => l_adr_accounting_coa_id
30910 , p_adr_code => 'CST_DEFAULT'
30911 , p_adr_type_code => 'S'
30912 , p_component_type => l_component_type
30913 , p_component_code => l_component_code
30914 , p_component_type_code => l_component_type_code
30915 , p_component_appl_id => l_component_appl_id
30916 , p_amb_context_code => l_amb_context_code
30917 , p_side => 'NA'
30918 );
30919
30920
30921 --
30922 --
30923 END IF;
30924
30925 --
30926 -- Update the line information that should be overwritten
30927 --
30928 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
30929 p_header_num => 1);
30930 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
30931
30932 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
30933
30934 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
30935 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
30936 END IF;
30937
30938 --
30939 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
30940 --
30941 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
30942 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
30943 ELSE
30944 ---------------------------------------------------------------------------------------------------
30945 -- 4262811a Switch Sign
30946 ---------------------------------------------------------------------------------------------------
30947 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
30948 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
30949 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
30950 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
30951 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
30952 -- 5132302
30953 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
30954 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
30955
30956 END IF;
30957
30958 -- 4955764
30959 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
30960 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
30961
30962
30963 XLA_AE_LINES_PKG.ValidateCurrentLine;
30964 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
30965
30966 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
30967 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
30968 ,p_balance_type_code => l_balance_type_code);
30969
30970 END IF;
30971
30972 -----------------------------------------------------------------------------------------
30973 -- 4262811 Multiperiod Accounting
30974 -----------------------------------------------------------------------------------------
30975 -- No MPA option is assigned.
30976
30977
30978 END IF;
30979 END IF;
30980 --
30981
30982 --
30983 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
30984 trace
30985 (p_msg => 'END of AcctLineType_58'
30986 ,p_level => C_LEVEL_PROCEDURE
30987 ,p_module => l_log_module);
30988 END IF;
30989 --
30990 EXCEPTION
30991 WHEN xla_exceptions_pkg.application_exception THEN
30992 RAISE;
30993 WHEN OTHERS THEN
30994 xla_exceptions_pkg.raise_message
30995 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_58');
30996 END AcctLineType_58;
30997 --
30998
30999 ---------------------------------------
31000 --
31001 -- PRIVATE FUNCTION
31002 -- AcctLineType_59
31003 --
31004 ---------------------------------------
31005 PROCEDURE AcctLineType_59 (
31006 p_application_id IN NUMBER
31007 ,p_event_id IN NUMBER
31008 ,p_calculate_acctd_flag IN VARCHAR2
31009 ,p_calculate_g_l_flag IN VARCHAR2
31010 ,p_actual_flag IN OUT VARCHAR2
31011 ,p_balance_type_code OUT VARCHAR2
31012 ,p_gain_or_loss_ref OUT VARCHAR2
31013
31014 --Cost Management Default Account
31015 , p_source_4 IN NUMBER
31016 --DISTRIBUTION_IDENTIFIER
31017 , p_source_11 IN NUMBER
31018 --Distribution Type
31019 , p_source_12 IN VARCHAR2
31020 , p_source_12_meaning IN VARCHAR2
31021 --Entered Currency Code
31022 , p_source_15 IN VARCHAR2
31023 --Entered Amount
31024 , p_source_18 IN NUMBER
31025 --Currency Conversion Date
31026 , p_source_19 IN DATE
31027 --Currency Conversion Rate
31028 , p_source_20 IN NUMBER
31029 --Currency Conversion Type
31030 , p_source_21 IN VARCHAR2
31031 --Accounted Amount
31032 , p_source_22 IN NUMBER
31033 --Accounting Line Type
31034 , p_source_24 IN NUMBER
31035 )
31036 IS
31037
31038 l_component_type VARCHAR2(80);
31039 l_component_code VARCHAR2(30);
31040 l_component_type_code VARCHAR2(1);
31041 l_component_appl_id INTEGER;
31042 l_amb_context_code VARCHAR2(30);
31043 l_entity_code VARCHAR2(30);
31044 l_event_class_code VARCHAR2(30);
31045 l_ae_header_id NUMBER;
31046 l_event_type_code VARCHAR2(30);
31047 l_line_definition_code VARCHAR2(30);
31048 l_line_definition_owner_code VARCHAR2(1);
31049 --
31050 -- adr variables
31051 l_segment VARCHAR2(30);
31052 l_ccid NUMBER;
31053 l_adr_transaction_coa_id NUMBER;
31054 l_adr_accounting_coa_id NUMBER;
31055 l_adr_flexfield_segment_code VARCHAR2(30);
31056 l_adr_flex_value_set_id NUMBER;
31057 l_adr_value_type_code VARCHAR2(30);
31058 l_adr_value_combination_id NUMBER;
31059 l_adr_value_segment_code VARCHAR2(30);
31060
31061 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
31062 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
31063 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
31064 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
31065
31066 -- 4262811 Variables ------------------------------------------------------------------------------------------
31067 l_entered_amt_idx NUMBER;
31068 l_accted_amt_idx NUMBER;
31069 l_acc_rev_flag VARCHAR2(1);
31070 l_accrual_line_num NUMBER;
31071 l_tmp_amt NUMBER;
31072 l_acc_rev_natural_side_code VARCHAR2(1);
31073
31074 l_num_entries NUMBER;
31075 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
31076 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
31077 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
31078 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
31079 l_recog_line_1 NUMBER;
31080 l_recog_line_2 NUMBER;
31081
31082 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
31083 l_bflow_applied_to_amt NUMBER; -- 5132302
31084 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
31085
31086 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
31087
31088 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
31089 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
31090
31091 ---------------------------------------------------------------------------------------------------------------
31092
31093
31094 --
31095 -- bulk performance
31096 --
31097 l_balance_type_code VARCHAR2(1);
31098 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
31099 l_log_module VARCHAR2(240);
31100
31101 --
31102 -- Upgrade strategy
31103 --
31104 l_actual_upg_option VARCHAR2(1);
31105 l_enc_upg_option VARCHAR2(1);
31106
31107 --
31108 BEGIN
31109 --
31110 IF g_log_enabled THEN
31111 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_59';
31112 END IF;
31113 --
31114 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
31115
31116 trace
31117 (p_msg => 'BEGIN of AcctLineType_59'
31118 ,p_level => C_LEVEL_PROCEDURE
31119 ,p_module => l_log_module);
31120
31121 END IF;
31122 --
31123 l_component_type := 'AMB_JLT';
31124 l_component_code := 'INTERORG_FREIGHT_CHARGE';
31125 l_component_type_code := 'S';
31126 l_component_appl_id := 707;
31127 l_amb_context_code := 'DEFAULT';
31128 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
31129 l_event_class_code := 'USER_DEFINE';
31130 l_event_type_code := 'UDIR_INTERORG_RCPT_NO_TP';
31131 l_line_definition_owner_code := 'S';
31132 l_line_definition_code := 'USER_DIR_INTERORG_RCPT_NO_TP';
31133 --
31134 l_balance_type_code := 'A';
31135 l_segment := NULL;
31136 l_ccid := NULL;
31137 l_adr_transaction_coa_id := NULL;
31138 l_adr_accounting_coa_id := NULL;
31139 l_adr_flexfield_segment_code := NULL;
31140 l_adr_flex_value_set_id := NULL;
31141 l_adr_value_type_code := NULL;
31142 l_adr_value_combination_id := NULL;
31143 l_adr_value_segment_code := NULL;
31144
31145 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
31146 l_bflow_class_code := ''; -- 4219869 Business Flow
31147 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
31148 l_budgetary_control_flag := 'N';
31149
31150 l_bflow_applied_to_amt_idx := NULL; -- 5132302
31151 l_bflow_applied_to_amt := NULL; -- 5132302
31152 l_entered_amt_idx := NULL; -- 4262811
31153 l_accted_amt_idx := NULL; -- 4262811
31154 l_acc_rev_flag := NULL; -- 4262811
31155 l_accrual_line_num := NULL; -- 4262811
31156 l_tmp_amt := NULL; -- 4262811
31157 --
31158
31159 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
31160 l_balance_type_code <> 'B' THEN
31161 IF NVL(p_source_24,9E125) = 12
31162 THEN
31163
31164 --
31165 XLA_AE_LINES_PKG.SetNewLine;
31166
31167 p_balance_type_code := l_balance_type_code;
31168 -- set the flag so later we will know whether the gain loss line needs to be created
31169
31170 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
31171 p_actual_flag :='A';
31172 END IF;
31173
31174 --
31175 -- bulk performance
31176 --
31177 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
31178 p_header_num => 0); -- 4262811
31179 --
31180 -- set accounting line options
31181 --
31182 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
31183 p_natural_side_code => 'D'
31184 , p_gain_or_loss_flag => 'N'
31185 , p_gl_transfer_mode_code => 'S'
31186 , p_acct_entry_type_code => 'A'
31187 , p_switch_side_flag => 'Y'
31188 , p_merge_duplicate_code => 'N'
31189 );
31190 --
31191 l_acc_rev_natural_side_code := 'C'; -- 4262811
31192 --
31193 --
31194 -- set accounting line type info
31195 --
31196 xla_ae_lines_pkg.SetAcctLineType
31197 (p_component_type => l_component_type
31198 ,p_event_type_code => l_event_type_code
31199 ,p_line_definition_owner_code => l_line_definition_owner_code
31200 ,p_line_definition_code => l_line_definition_code
31201 ,p_accounting_line_code => l_component_code
31202 ,p_accounting_line_type_code => l_component_type_code
31203 ,p_accounting_line_appl_id => l_component_appl_id
31204 ,p_amb_context_code => l_amb_context_code
31205 ,p_entity_code => l_entity_code
31206 ,p_event_class_code => l_event_class_code);
31207 --
31208 -- set accounting class
31209 --
31210 xla_ae_lines_pkg.SetAcctClass(
31211 p_accounting_class_code => 'INTERORG_FREIGHT_CHARGE'
31212 , p_ae_header_id => l_ae_header_id
31213 );
31214
31215 --
31216 -- set rounding class
31217 --
31218 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
31219 'INTERORG_FREIGHT_CHARGE';
31220
31221 --
31222 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
31223 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
31224 --
31225 -- bulk performance
31226 --
31227 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
31228
31229 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
31230 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
31231
31232 -- 4955764
31233 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
31234 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
31235
31236 -- 4458381 Public Sector Enh
31237
31238 --
31239 -- set accounting attributes for the line type
31240 --
31241 l_entered_amt_idx := 3;
31242 l_accted_amt_idx := 8;
31243 l_bflow_applied_to_amt_idx := NULL; -- 5132302
31244 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
31245 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
31246 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
31247 l_rec_acct_attrs.array_char_value(2) := p_source_12;
31248 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
31249 l_rec_acct_attrs.array_num_value(3) := p_source_18;
31250 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
31251 l_rec_acct_attrs.array_char_value(4) := p_source_15;
31252 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
31253 l_rec_acct_attrs.array_date_value(5) := p_source_19;
31254 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
31255 l_rec_acct_attrs.array_num_value(6) := p_source_20;
31256 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
31257 l_rec_acct_attrs.array_char_value(7) := p_source_21;
31258 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
31259 l_rec_acct_attrs.array_num_value(8) := p_source_22;
31260
31261 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
31262 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
31263
31264 ---------------------------------------------------------------------------------------------------------------
31265 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
31266 ---------------------------------------------------------------------------------------------------------------
31267 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
31268
31269 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
31270 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
31271
31272 IF xla_accounting_cache_pkg.GetValueChar
31273 (p_source_code => 'LEDGER_CATEGORY_CODE'
31274 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
31275 AND l_bflow_method_code = 'PRIOR_ENTRY'
31276 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
31277 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
31278 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
31279 )
31280 THEN
31281 xla_ae_lines_pkg.BflowUpgEntry
31282 (p_business_method_code => l_bflow_method_code
31283 ,p_business_class_code => l_bflow_class_code
31284 ,p_balance_type => l_balance_type_code);
31285 ELSE
31286 NULL;
31287 -- No business flow processing for business flow method of NONE.
31288 END IF;
31289
31290 --
31291 -- call analytical criteria
31292 --
31293
31294 --
31295 -- call description
31296 --
31297 -- No description or it is inherited.
31298 --
31299 -- call ADRs
31300 -- Bug 4922099
31301 --
31302 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
31303 (NVL(l_actual_upg_option, 'N') = 'O') OR
31304 (NVL(l_enc_upg_option, 'N') = 'O')
31305 )
31306 THEN
31307 NULL;
31308 --
31309 --
31310
31311 l_ccid := AcctDerRule_4(
31312 p_application_id => p_application_id
31313 , p_ae_header_id => l_ae_header_id
31314 , p_source_4 => p_source_4
31315 , x_transaction_coa_id => l_adr_transaction_coa_id
31316 , x_accounting_coa_id => l_adr_accounting_coa_id
31317 , x_value_type_code => l_adr_value_type_code
31318 , p_side => 'NA'
31319 );
31320
31321 xla_ae_lines_pkg.set_ccid(
31322 p_code_combination_id => l_ccid
31323 , p_value_type_code => l_adr_value_type_code
31324 , p_transaction_coa_id => l_adr_transaction_coa_id
31325 , p_accounting_coa_id => l_adr_accounting_coa_id
31326 , p_adr_code => 'CST_DEFAULT'
31327 , p_adr_type_code => 'S'
31328 , p_component_type => l_component_type
31329 , p_component_code => l_component_code
31330 , p_component_type_code => l_component_type_code
31331 , p_component_appl_id => l_component_appl_id
31332 , p_amb_context_code => l_amb_context_code
31333 , p_side => 'NA'
31334 );
31335
31336
31337 --
31338 --
31339 END IF;
31340 --
31341 -- Bug 4922099
31342 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
31343 (NVL(l_enc_upg_option, 'N') = 'O')
31344 ) AND
31345 (l_bflow_method_code = 'PRIOR_ENTRY')
31346 )
31347 THEN
31348 IF
31349 --
31350 1 = 2
31351 --
31352 THEN
31353 xla_accounting_err_pkg.build_message
31354 (p_appli_s_name => 'XLA'
31355 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
31356 ,p_token_1 => 'LINE_NUMBER'
31357 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
31358 ,p_token_2 => 'LINE_TYPE_NAME'
31359 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
31360 l_component_type
31361 ,l_component_code
31362 ,l_component_type_code
31363 ,l_component_appl_id
31364 ,l_amb_context_code
31365 ,l_entity_code
31366 ,l_event_class_code
31367 )
31368 ,p_token_3 => 'OWNER'
31369 ,p_value_3 => xla_lookups_pkg.get_meaning(
31370 p_lookup_type => 'XLA_OWNER_TYPE'
31371 ,p_lookup_code => l_component_type_code
31372 )
31373 ,p_token_4 => 'PRODUCT_NAME'
31374 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
31375 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
31376 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
31377 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
31378 ,p_ae_header_id => NULL
31379 );
31380
31381 IF (C_LEVEL_ERROR>= g_log_level) THEN
31382 trace
31383 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
31384 ,p_level => C_LEVEL_ERROR
31385 ,p_module => l_log_module);
31386 END IF;
31387 END IF;
31388 END IF;
31389 --
31390 --
31391 ------------------------------------------------------------------------------------------------
31392 -- 4219869 Business Flow
31393 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
31394 -- Prior Entry. Currently, the following code is always generated.
31395 ------------------------------------------------------------------------------------------------
31396 XLA_AE_LINES_PKG.ValidateCurrentLine;
31397
31398 ------------------------------------------------------------------------------------
31399 -- 4219869 Business Flow
31400 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
31401 ------------------------------------------------------------------------------------
31402 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
31403
31404 ----------------------------------------------------------------------------------
31405 -- 4219869 Business Flow
31406 -- Update journal entry status -- Need to generate this within IF <condition>
31407 ----------------------------------------------------------------------------------
31408 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
31409 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
31410 ,p_balance_type_code => l_balance_type_code
31411 );
31412
31413 -------------------------------------------------------------------------------------------
31414 -- 4262811 - Generate the Accrual Reversal lines
31415 -------------------------------------------------------------------------------------------
31416 BEGIN
31417 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
31418 (g_array_event(p_event_id).array_value_num('header_index'));
31419 IF l_acc_rev_flag IS NULL THEN
31420 l_acc_rev_flag := 'N';
31421 END IF;
31422 EXCEPTION
31423 WHEN OTHERS THEN
31424 l_acc_rev_flag := 'N';
31425 END;
31426 --
31427 IF (l_acc_rev_flag = 'Y') THEN
31428
31429 -- 4645092 ------------------------------------------------------------------------------
31430 -- To allow MPA report to determine if it should generate report process
31431 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
31432 ------------------------------------------------------------------------------------------
31433
31434 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
31435 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
31436 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
31437 -- call ADRs
31438 -- Bug 4922099
31439 --
31440 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
31441 (NVL(l_actual_upg_option, 'N') = 'O') OR
31442 (NVL(l_enc_upg_option, 'N') = 'O')
31443 )
31444 THEN
31445 NULL;
31446 --
31447 --
31448
31449 l_ccid := AcctDerRule_4(
31450 p_application_id => p_application_id
31451 , p_ae_header_id => l_ae_header_id
31452 , p_source_4 => p_source_4
31453 , x_transaction_coa_id => l_adr_transaction_coa_id
31454 , x_accounting_coa_id => l_adr_accounting_coa_id
31455 , x_value_type_code => l_adr_value_type_code
31456 , p_side => 'NA'
31457 );
31458
31459 xla_ae_lines_pkg.set_ccid(
31460 p_code_combination_id => l_ccid
31461 , p_value_type_code => l_adr_value_type_code
31462 , p_transaction_coa_id => l_adr_transaction_coa_id
31463 , p_accounting_coa_id => l_adr_accounting_coa_id
31464 , p_adr_code => 'CST_DEFAULT'
31465 , p_adr_type_code => 'S'
31466 , p_component_type => l_component_type
31467 , p_component_code => l_component_code
31468 , p_component_type_code => l_component_type_code
31469 , p_component_appl_id => l_component_appl_id
31470 , p_amb_context_code => l_amb_context_code
31471 , p_side => 'NA'
31472 );
31473
31474
31475 --
31476 --
31477 END IF;
31478
31479 --
31480 -- Update the line information that should be overwritten
31481 --
31482 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
31483 p_header_num => 1);
31484 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
31485
31486 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
31487
31488 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
31489 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
31490 END IF;
31491
31492 --
31493 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
31494 --
31495 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
31496 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
31497 ELSE
31498 ---------------------------------------------------------------------------------------------------
31499 -- 4262811a Switch Sign
31500 ---------------------------------------------------------------------------------------------------
31501 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
31502 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
31503 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
31504 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
31505 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
31506 -- 5132302
31507 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
31508 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
31509
31510 END IF;
31511
31512 -- 4955764
31513 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
31514 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
31515
31516
31517 XLA_AE_LINES_PKG.ValidateCurrentLine;
31518 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
31519
31520 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
31521 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
31522 ,p_balance_type_code => l_balance_type_code);
31523
31524 END IF;
31525
31526 -----------------------------------------------------------------------------------------
31527 -- 4262811 Multiperiod Accounting
31528 -----------------------------------------------------------------------------------------
31529 -- No MPA option is assigned.
31530
31531
31532 END IF;
31533 END IF;
31534 --
31535
31536 --
31537 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
31538 trace
31539 (p_msg => 'END of AcctLineType_59'
31540 ,p_level => C_LEVEL_PROCEDURE
31541 ,p_module => l_log_module);
31542 END IF;
31543 --
31544 EXCEPTION
31545 WHEN xla_exceptions_pkg.application_exception THEN
31546 RAISE;
31547 WHEN OTHERS THEN
31548 xla_exceptions_pkg.raise_message
31549 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_59');
31550 END AcctLineType_59;
31551 --
31552
31553 ---------------------------------------
31554 --
31555 -- PRIVATE FUNCTION
31556 -- AcctLineType_60
31557 --
31558 ---------------------------------------
31559 PROCEDURE AcctLineType_60 (
31560 p_application_id IN NUMBER
31561 ,p_event_id IN NUMBER
31562 ,p_calculate_acctd_flag IN VARCHAR2
31563 ,p_calculate_g_l_flag IN VARCHAR2
31564 ,p_actual_flag IN OUT VARCHAR2
31565 ,p_balance_type_code OUT VARCHAR2
31566 ,p_gain_or_loss_ref OUT VARCHAR2
31567
31568 --Cost Management Default Account
31569 , p_source_4 IN NUMBER
31570 --DISTRIBUTION_IDENTIFIER
31571 , p_source_11 IN NUMBER
31572 --Distribution Type
31573 , p_source_12 IN VARCHAR2
31574 , p_source_12_meaning IN VARCHAR2
31575 --Entered Currency Code
31576 , p_source_15 IN VARCHAR2
31577 --Entered Amount
31578 , p_source_18 IN NUMBER
31579 --Currency Conversion Date
31580 , p_source_19 IN DATE
31581 --Currency Conversion Rate
31582 , p_source_20 IN NUMBER
31583 --Currency Conversion Type
31584 , p_source_21 IN VARCHAR2
31585 --Accounted Amount
31586 , p_source_22 IN NUMBER
31587 --Accounting Line Type
31588 , p_source_24 IN NUMBER
31589 )
31590 IS
31591
31592 l_component_type VARCHAR2(80);
31593 l_component_code VARCHAR2(30);
31594 l_component_type_code VARCHAR2(1);
31595 l_component_appl_id INTEGER;
31596 l_amb_context_code VARCHAR2(30);
31597 l_entity_code VARCHAR2(30);
31598 l_event_class_code VARCHAR2(30);
31599 l_ae_header_id NUMBER;
31600 l_event_type_code VARCHAR2(30);
31601 l_line_definition_code VARCHAR2(30);
31602 l_line_definition_owner_code VARCHAR2(1);
31603 --
31604 -- adr variables
31605 l_segment VARCHAR2(30);
31606 l_ccid NUMBER;
31607 l_adr_transaction_coa_id NUMBER;
31608 l_adr_accounting_coa_id NUMBER;
31609 l_adr_flexfield_segment_code VARCHAR2(30);
31610 l_adr_flex_value_set_id NUMBER;
31611 l_adr_value_type_code VARCHAR2(30);
31612 l_adr_value_combination_id NUMBER;
31613 l_adr_value_segment_code VARCHAR2(30);
31614
31615 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
31616 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
31617 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
31618 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
31619
31620 -- 4262811 Variables ------------------------------------------------------------------------------------------
31621 l_entered_amt_idx NUMBER;
31622 l_accted_amt_idx NUMBER;
31623 l_acc_rev_flag VARCHAR2(1);
31624 l_accrual_line_num NUMBER;
31625 l_tmp_amt NUMBER;
31626 l_acc_rev_natural_side_code VARCHAR2(1);
31627
31628 l_num_entries NUMBER;
31629 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
31630 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
31631 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
31632 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
31633 l_recog_line_1 NUMBER;
31634 l_recog_line_2 NUMBER;
31635
31636 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
31637 l_bflow_applied_to_amt NUMBER; -- 5132302
31638 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
31639
31640 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
31641
31642 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
31643 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
31644
31645 ---------------------------------------------------------------------------------------------------------------
31646
31647
31648 --
31649 -- bulk performance
31650 --
31651 l_balance_type_code VARCHAR2(1);
31652 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
31653 l_log_module VARCHAR2(240);
31654
31655 --
31656 -- Upgrade strategy
31657 --
31658 l_actual_upg_option VARCHAR2(1);
31659 l_enc_upg_option VARCHAR2(1);
31660
31661 --
31662 BEGIN
31663 --
31664 IF g_log_enabled THEN
31665 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_60';
31666 END IF;
31667 --
31668 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
31669
31670 trace
31671 (p_msg => 'BEGIN of AcctLineType_60'
31672 ,p_level => C_LEVEL_PROCEDURE
31673 ,p_module => l_log_module);
31674
31675 END IF;
31676 --
31677 l_component_type := 'AMB_JLT';
31678 l_component_code := 'INTERORG_FREIGHT_CHARGE';
31679 l_component_type_code := 'S';
31680 l_component_appl_id := 707;
31681 l_amb_context_code := 'DEFAULT';
31682 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
31683 l_event_class_code := 'DIR_INTERORG_SHIP';
31684 l_event_type_code := 'DIR_INTERORG_SHIP_ALL';
31685 l_line_definition_owner_code := 'S';
31686 l_line_definition_code := 'DIRECT_INTERORG_SHIP';
31687 --
31688 l_balance_type_code := 'A';
31689 l_segment := NULL;
31690 l_ccid := NULL;
31691 l_adr_transaction_coa_id := NULL;
31692 l_adr_accounting_coa_id := NULL;
31693 l_adr_flexfield_segment_code := NULL;
31694 l_adr_flex_value_set_id := NULL;
31695 l_adr_value_type_code := NULL;
31696 l_adr_value_combination_id := NULL;
31697 l_adr_value_segment_code := NULL;
31698
31699 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
31700 l_bflow_class_code := ''; -- 4219869 Business Flow
31701 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
31702 l_budgetary_control_flag := 'N';
31703
31704 l_bflow_applied_to_amt_idx := NULL; -- 5132302
31705 l_bflow_applied_to_amt := NULL; -- 5132302
31706 l_entered_amt_idx := NULL; -- 4262811
31707 l_accted_amt_idx := NULL; -- 4262811
31708 l_acc_rev_flag := NULL; -- 4262811
31709 l_accrual_line_num := NULL; -- 4262811
31710 l_tmp_amt := NULL; -- 4262811
31711 --
31712
31713 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
31714 l_balance_type_code <> 'B' THEN
31715 IF NVL(p_source_24,9E125) = 12
31716 THEN
31717
31718 --
31719 XLA_AE_LINES_PKG.SetNewLine;
31720
31721 p_balance_type_code := l_balance_type_code;
31722 -- set the flag so later we will know whether the gain loss line needs to be created
31723
31724 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
31725 p_actual_flag :='A';
31726 END IF;
31727
31728 --
31729 -- bulk performance
31730 --
31731 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
31732 p_header_num => 0); -- 4262811
31733 --
31734 -- set accounting line options
31735 --
31736 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
31737 p_natural_side_code => 'D'
31738 , p_gain_or_loss_flag => 'N'
31739 , p_gl_transfer_mode_code => 'S'
31740 , p_acct_entry_type_code => 'A'
31741 , p_switch_side_flag => 'Y'
31742 , p_merge_duplicate_code => 'N'
31743 );
31744 --
31745 l_acc_rev_natural_side_code := 'C'; -- 4262811
31746 --
31747 --
31748 -- set accounting line type info
31749 --
31750 xla_ae_lines_pkg.SetAcctLineType
31751 (p_component_type => l_component_type
31752 ,p_event_type_code => l_event_type_code
31753 ,p_line_definition_owner_code => l_line_definition_owner_code
31754 ,p_line_definition_code => l_line_definition_code
31755 ,p_accounting_line_code => l_component_code
31756 ,p_accounting_line_type_code => l_component_type_code
31757 ,p_accounting_line_appl_id => l_component_appl_id
31758 ,p_amb_context_code => l_amb_context_code
31759 ,p_entity_code => l_entity_code
31760 ,p_event_class_code => l_event_class_code);
31761 --
31762 -- set accounting class
31763 --
31764 xla_ae_lines_pkg.SetAcctClass(
31765 p_accounting_class_code => 'INTERORG_FREIGHT_CHARGE'
31766 , p_ae_header_id => l_ae_header_id
31767 );
31768
31769 --
31770 -- set rounding class
31771 --
31772 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
31773 'INTERORG_FREIGHT_CHARGE';
31774
31775 --
31776 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
31777 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
31778 --
31779 -- bulk performance
31780 --
31781 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
31782
31783 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
31784 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
31785
31786 -- 4955764
31787 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
31788 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
31789
31790 -- 4458381 Public Sector Enh
31791
31792 --
31793 -- set accounting attributes for the line type
31794 --
31795 l_entered_amt_idx := 3;
31796 l_accted_amt_idx := 8;
31797 l_bflow_applied_to_amt_idx := NULL; -- 5132302
31798 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
31799 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
31800 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
31801 l_rec_acct_attrs.array_char_value(2) := p_source_12;
31802 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
31803 l_rec_acct_attrs.array_num_value(3) := p_source_18;
31804 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
31805 l_rec_acct_attrs.array_char_value(4) := p_source_15;
31806 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
31807 l_rec_acct_attrs.array_date_value(5) := p_source_19;
31808 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
31809 l_rec_acct_attrs.array_num_value(6) := p_source_20;
31810 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
31811 l_rec_acct_attrs.array_char_value(7) := p_source_21;
31812 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
31813 l_rec_acct_attrs.array_num_value(8) := p_source_22;
31814
31815 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
31816 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
31817
31818 ---------------------------------------------------------------------------------------------------------------
31819 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
31820 ---------------------------------------------------------------------------------------------------------------
31821 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
31822
31823 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
31824 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
31825
31826 IF xla_accounting_cache_pkg.GetValueChar
31827 (p_source_code => 'LEDGER_CATEGORY_CODE'
31828 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
31829 AND l_bflow_method_code = 'PRIOR_ENTRY'
31830 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
31831 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
31832 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
31833 )
31834 THEN
31835 xla_ae_lines_pkg.BflowUpgEntry
31836 (p_business_method_code => l_bflow_method_code
31837 ,p_business_class_code => l_bflow_class_code
31838 ,p_balance_type => l_balance_type_code);
31839 ELSE
31840 NULL;
31841 -- No business flow processing for business flow method of NONE.
31842 END IF;
31843
31844 --
31845 -- call analytical criteria
31846 --
31847
31848 --
31849 -- call description
31850 --
31851 -- No description or it is inherited.
31852 --
31853 -- call ADRs
31854 -- Bug 4922099
31855 --
31856 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
31857 (NVL(l_actual_upg_option, 'N') = 'O') OR
31858 (NVL(l_enc_upg_option, 'N') = 'O')
31859 )
31860 THEN
31861 NULL;
31862 --
31863 --
31864
31865 l_ccid := AcctDerRule_4(
31866 p_application_id => p_application_id
31867 , p_ae_header_id => l_ae_header_id
31868 , p_source_4 => p_source_4
31869 , x_transaction_coa_id => l_adr_transaction_coa_id
31870 , x_accounting_coa_id => l_adr_accounting_coa_id
31871 , x_value_type_code => l_adr_value_type_code
31872 , p_side => 'NA'
31873 );
31874
31875 xla_ae_lines_pkg.set_ccid(
31876 p_code_combination_id => l_ccid
31877 , p_value_type_code => l_adr_value_type_code
31878 , p_transaction_coa_id => l_adr_transaction_coa_id
31879 , p_accounting_coa_id => l_adr_accounting_coa_id
31880 , p_adr_code => 'CST_DEFAULT'
31881 , p_adr_type_code => 'S'
31882 , p_component_type => l_component_type
31883 , p_component_code => l_component_code
31884 , p_component_type_code => l_component_type_code
31885 , p_component_appl_id => l_component_appl_id
31886 , p_amb_context_code => l_amb_context_code
31887 , p_side => 'NA'
31888 );
31889
31890
31891 --
31892 --
31893 END IF;
31894 --
31895 -- Bug 4922099
31896 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
31897 (NVL(l_enc_upg_option, 'N') = 'O')
31898 ) AND
31899 (l_bflow_method_code = 'PRIOR_ENTRY')
31900 )
31901 THEN
31902 IF
31903 --
31904 1 = 2
31905 --
31906 THEN
31907 xla_accounting_err_pkg.build_message
31908 (p_appli_s_name => 'XLA'
31909 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
31910 ,p_token_1 => 'LINE_NUMBER'
31911 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
31912 ,p_token_2 => 'LINE_TYPE_NAME'
31913 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
31914 l_component_type
31915 ,l_component_code
31916 ,l_component_type_code
31917 ,l_component_appl_id
31918 ,l_amb_context_code
31919 ,l_entity_code
31920 ,l_event_class_code
31921 )
31922 ,p_token_3 => 'OWNER'
31923 ,p_value_3 => xla_lookups_pkg.get_meaning(
31924 p_lookup_type => 'XLA_OWNER_TYPE'
31925 ,p_lookup_code => l_component_type_code
31926 )
31927 ,p_token_4 => 'PRODUCT_NAME'
31928 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
31929 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
31930 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
31931 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
31932 ,p_ae_header_id => NULL
31933 );
31934
31935 IF (C_LEVEL_ERROR>= g_log_level) THEN
31936 trace
31937 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
31938 ,p_level => C_LEVEL_ERROR
31939 ,p_module => l_log_module);
31940 END IF;
31941 END IF;
31942 END IF;
31943 --
31944 --
31945 ------------------------------------------------------------------------------------------------
31946 -- 4219869 Business Flow
31947 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
31948 -- Prior Entry. Currently, the following code is always generated.
31949 ------------------------------------------------------------------------------------------------
31950 XLA_AE_LINES_PKG.ValidateCurrentLine;
31951
31952 ------------------------------------------------------------------------------------
31953 -- 4219869 Business Flow
31954 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
31955 ------------------------------------------------------------------------------------
31956 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
31957
31958 ----------------------------------------------------------------------------------
31959 -- 4219869 Business Flow
31960 -- Update journal entry status -- Need to generate this within IF <condition>
31961 ----------------------------------------------------------------------------------
31962 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
31963 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
31964 ,p_balance_type_code => l_balance_type_code
31965 );
31966
31967 -------------------------------------------------------------------------------------------
31968 -- 4262811 - Generate the Accrual Reversal lines
31969 -------------------------------------------------------------------------------------------
31970 BEGIN
31971 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
31972 (g_array_event(p_event_id).array_value_num('header_index'));
31973 IF l_acc_rev_flag IS NULL THEN
31974 l_acc_rev_flag := 'N';
31975 END IF;
31976 EXCEPTION
31977 WHEN OTHERS THEN
31978 l_acc_rev_flag := 'N';
31979 END;
31980 --
31981 IF (l_acc_rev_flag = 'Y') THEN
31982
31983 -- 4645092 ------------------------------------------------------------------------------
31984 -- To allow MPA report to determine if it should generate report process
31985 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
31986 ------------------------------------------------------------------------------------------
31987
31988 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
31989 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
31990 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
31991 -- call ADRs
31992 -- Bug 4922099
31993 --
31994 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
31995 (NVL(l_actual_upg_option, 'N') = 'O') OR
31996 (NVL(l_enc_upg_option, 'N') = 'O')
31997 )
31998 THEN
31999 NULL;
32000 --
32001 --
32002
32003 l_ccid := AcctDerRule_4(
32004 p_application_id => p_application_id
32005 , p_ae_header_id => l_ae_header_id
32006 , p_source_4 => p_source_4
32007 , x_transaction_coa_id => l_adr_transaction_coa_id
32008 , x_accounting_coa_id => l_adr_accounting_coa_id
32009 , x_value_type_code => l_adr_value_type_code
32010 , p_side => 'NA'
32011 );
32012
32013 xla_ae_lines_pkg.set_ccid(
32014 p_code_combination_id => l_ccid
32015 , p_value_type_code => l_adr_value_type_code
32016 , p_transaction_coa_id => l_adr_transaction_coa_id
32017 , p_accounting_coa_id => l_adr_accounting_coa_id
32018 , p_adr_code => 'CST_DEFAULT'
32019 , p_adr_type_code => 'S'
32020 , p_component_type => l_component_type
32021 , p_component_code => l_component_code
32022 , p_component_type_code => l_component_type_code
32023 , p_component_appl_id => l_component_appl_id
32024 , p_amb_context_code => l_amb_context_code
32025 , p_side => 'NA'
32026 );
32027
32028
32029 --
32030 --
32031 END IF;
32032
32033 --
32034 -- Update the line information that should be overwritten
32035 --
32036 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
32037 p_header_num => 1);
32038 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
32039
32040 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
32041
32042 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
32043 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
32044 END IF;
32045
32046 --
32047 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
32048 --
32049 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
32050 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
32051 ELSE
32052 ---------------------------------------------------------------------------------------------------
32053 -- 4262811a Switch Sign
32054 ---------------------------------------------------------------------------------------------------
32055 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
32056 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
32057 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
32058 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
32059 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
32060 -- 5132302
32061 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
32062 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
32063
32064 END IF;
32065
32066 -- 4955764
32067 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
32068 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
32069
32070
32071 XLA_AE_LINES_PKG.ValidateCurrentLine;
32072 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
32073
32074 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
32075 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
32076 ,p_balance_type_code => l_balance_type_code);
32077
32078 END IF;
32079
32080 -----------------------------------------------------------------------------------------
32081 -- 4262811 Multiperiod Accounting
32082 -----------------------------------------------------------------------------------------
32083 -- No MPA option is assigned.
32084
32085
32086 END IF;
32087 END IF;
32088 --
32089
32090 --
32091 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
32092 trace
32093 (p_msg => 'END of AcctLineType_60'
32094 ,p_level => C_LEVEL_PROCEDURE
32095 ,p_module => l_log_module);
32096 END IF;
32097 --
32098 EXCEPTION
32099 WHEN xla_exceptions_pkg.application_exception THEN
32100 RAISE;
32101 WHEN OTHERS THEN
32102 xla_exceptions_pkg.raise_message
32103 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_60');
32104 END AcctLineType_60;
32105 --
32106
32107 ---------------------------------------
32108 --
32109 -- PRIVATE FUNCTION
32110 -- AcctLineType_61
32111 --
32112 ---------------------------------------
32113 PROCEDURE AcctLineType_61 (
32114 p_application_id IN NUMBER
32115 ,p_event_id IN NUMBER
32116 ,p_calculate_acctd_flag IN VARCHAR2
32117 ,p_calculate_g_l_flag IN VARCHAR2
32118 ,p_actual_flag IN OUT VARCHAR2
32119 ,p_balance_type_code OUT VARCHAR2
32120 ,p_gain_or_loss_ref OUT VARCHAR2
32121
32122 --Cost Management Default Account
32123 , p_source_4 IN NUMBER
32124 --DISTRIBUTION_IDENTIFIER
32125 , p_source_11 IN NUMBER
32126 --Distribution Type
32127 , p_source_12 IN VARCHAR2
32128 , p_source_12_meaning IN VARCHAR2
32129 --Entered Currency Code
32130 , p_source_15 IN VARCHAR2
32131 --Entered Amount
32132 , p_source_18 IN NUMBER
32133 --Currency Conversion Date
32134 , p_source_19 IN DATE
32135 --Currency Conversion Rate
32136 , p_source_20 IN NUMBER
32137 --Currency Conversion Type
32138 , p_source_21 IN VARCHAR2
32139 --Accounted Amount
32140 , p_source_22 IN NUMBER
32141 --Accounting Line Type
32142 , p_source_24 IN NUMBER
32143 )
32144 IS
32145
32146 l_component_type VARCHAR2(80);
32147 l_component_code VARCHAR2(30);
32148 l_component_type_code VARCHAR2(1);
32149 l_component_appl_id INTEGER;
32150 l_amb_context_code VARCHAR2(30);
32151 l_entity_code VARCHAR2(30);
32152 l_event_class_code VARCHAR2(30);
32153 l_ae_header_id NUMBER;
32154 l_event_type_code VARCHAR2(30);
32155 l_line_definition_code VARCHAR2(30);
32156 l_line_definition_owner_code VARCHAR2(1);
32157 --
32158 -- adr variables
32159 l_segment VARCHAR2(30);
32160 l_ccid NUMBER;
32161 l_adr_transaction_coa_id NUMBER;
32162 l_adr_accounting_coa_id NUMBER;
32163 l_adr_flexfield_segment_code VARCHAR2(30);
32164 l_adr_flex_value_set_id NUMBER;
32165 l_adr_value_type_code VARCHAR2(30);
32166 l_adr_value_combination_id NUMBER;
32167 l_adr_value_segment_code VARCHAR2(30);
32168
32169 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
32170 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
32171 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
32172 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
32173
32174 -- 4262811 Variables ------------------------------------------------------------------------------------------
32175 l_entered_amt_idx NUMBER;
32176 l_accted_amt_idx NUMBER;
32177 l_acc_rev_flag VARCHAR2(1);
32178 l_accrual_line_num NUMBER;
32179 l_tmp_amt NUMBER;
32180 l_acc_rev_natural_side_code VARCHAR2(1);
32181
32182 l_num_entries NUMBER;
32183 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
32184 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
32185 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
32186 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
32187 l_recog_line_1 NUMBER;
32188 l_recog_line_2 NUMBER;
32189
32190 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
32191 l_bflow_applied_to_amt NUMBER; -- 5132302
32192 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
32193
32194 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
32195
32196 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
32197 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
32198
32199 ---------------------------------------------------------------------------------------------------------------
32200
32201
32202 --
32203 -- bulk performance
32204 --
32205 l_balance_type_code VARCHAR2(1);
32206 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
32207 l_log_module VARCHAR2(240);
32208
32209 --
32210 -- Upgrade strategy
32211 --
32212 l_actual_upg_option VARCHAR2(1);
32213 l_enc_upg_option VARCHAR2(1);
32214
32215 --
32216 BEGIN
32217 --
32218 IF g_log_enabled THEN
32219 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_61';
32220 END IF;
32221 --
32222 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
32223
32224 trace
32225 (p_msg => 'BEGIN of AcctLineType_61'
32226 ,p_level => C_LEVEL_PROCEDURE
32227 ,p_module => l_log_module);
32228
32229 END IF;
32230 --
32231 l_component_type := 'AMB_JLT';
32232 l_component_code := 'INTERORG_FREIGHT_CHARGE';
32233 l_component_type_code := 'S';
32234 l_component_appl_id := 707;
32235 l_amb_context_code := 'DEFAULT';
32236 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
32237 l_event_class_code := 'USER_DEFINE';
32238 l_event_type_code := 'UDIR_INTERORG_SHIP_NO_TP';
32239 l_line_definition_owner_code := 'S';
32240 l_line_definition_code := 'USER_DIR_INTERORG_SHIP_NO_TP';
32241 --
32242 l_balance_type_code := 'A';
32243 l_segment := NULL;
32244 l_ccid := NULL;
32245 l_adr_transaction_coa_id := NULL;
32246 l_adr_accounting_coa_id := NULL;
32247 l_adr_flexfield_segment_code := NULL;
32248 l_adr_flex_value_set_id := NULL;
32249 l_adr_value_type_code := NULL;
32250 l_adr_value_combination_id := NULL;
32251 l_adr_value_segment_code := NULL;
32252
32253 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
32254 l_bflow_class_code := ''; -- 4219869 Business Flow
32255 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
32256 l_budgetary_control_flag := 'N';
32257
32258 l_bflow_applied_to_amt_idx := NULL; -- 5132302
32259 l_bflow_applied_to_amt := NULL; -- 5132302
32260 l_entered_amt_idx := NULL; -- 4262811
32261 l_accted_amt_idx := NULL; -- 4262811
32262 l_acc_rev_flag := NULL; -- 4262811
32263 l_accrual_line_num := NULL; -- 4262811
32264 l_tmp_amt := NULL; -- 4262811
32265 --
32266
32267 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
32268 l_balance_type_code <> 'B' THEN
32269 IF NVL(p_source_24,9E125) = 12
32270 THEN
32271
32272 --
32273 XLA_AE_LINES_PKG.SetNewLine;
32274
32275 p_balance_type_code := l_balance_type_code;
32276 -- set the flag so later we will know whether the gain loss line needs to be created
32277
32278 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
32279 p_actual_flag :='A';
32280 END IF;
32281
32282 --
32283 -- bulk performance
32284 --
32285 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
32286 p_header_num => 0); -- 4262811
32287 --
32288 -- set accounting line options
32289 --
32290 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
32291 p_natural_side_code => 'D'
32292 , p_gain_or_loss_flag => 'N'
32293 , p_gl_transfer_mode_code => 'S'
32294 , p_acct_entry_type_code => 'A'
32295 , p_switch_side_flag => 'Y'
32296 , p_merge_duplicate_code => 'N'
32297 );
32298 --
32299 l_acc_rev_natural_side_code := 'C'; -- 4262811
32300 --
32301 --
32302 -- set accounting line type info
32303 --
32304 xla_ae_lines_pkg.SetAcctLineType
32305 (p_component_type => l_component_type
32306 ,p_event_type_code => l_event_type_code
32307 ,p_line_definition_owner_code => l_line_definition_owner_code
32308 ,p_line_definition_code => l_line_definition_code
32309 ,p_accounting_line_code => l_component_code
32310 ,p_accounting_line_type_code => l_component_type_code
32311 ,p_accounting_line_appl_id => l_component_appl_id
32312 ,p_amb_context_code => l_amb_context_code
32313 ,p_entity_code => l_entity_code
32314 ,p_event_class_code => l_event_class_code);
32315 --
32316 -- set accounting class
32317 --
32318 xla_ae_lines_pkg.SetAcctClass(
32319 p_accounting_class_code => 'INTERORG_FREIGHT_CHARGE'
32320 , p_ae_header_id => l_ae_header_id
32321 );
32322
32323 --
32324 -- set rounding class
32325 --
32326 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
32327 'INTERORG_FREIGHT_CHARGE';
32328
32329 --
32330 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
32331 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
32332 --
32333 -- bulk performance
32334 --
32335 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
32336
32337 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
32338 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
32339
32340 -- 4955764
32341 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
32342 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
32343
32344 -- 4458381 Public Sector Enh
32345
32346 --
32347 -- set accounting attributes for the line type
32348 --
32349 l_entered_amt_idx := 3;
32350 l_accted_amt_idx := 8;
32351 l_bflow_applied_to_amt_idx := NULL; -- 5132302
32352 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
32353 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
32354 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
32355 l_rec_acct_attrs.array_char_value(2) := p_source_12;
32356 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
32357 l_rec_acct_attrs.array_num_value(3) := p_source_18;
32358 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
32359 l_rec_acct_attrs.array_char_value(4) := p_source_15;
32360 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
32361 l_rec_acct_attrs.array_date_value(5) := p_source_19;
32362 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
32363 l_rec_acct_attrs.array_num_value(6) := p_source_20;
32364 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
32365 l_rec_acct_attrs.array_char_value(7) := p_source_21;
32366 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
32367 l_rec_acct_attrs.array_num_value(8) := p_source_22;
32368
32369 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
32370 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
32371
32372 ---------------------------------------------------------------------------------------------------------------
32373 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
32374 ---------------------------------------------------------------------------------------------------------------
32375 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
32376
32377 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
32378 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
32379
32380 IF xla_accounting_cache_pkg.GetValueChar
32381 (p_source_code => 'LEDGER_CATEGORY_CODE'
32382 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
32383 AND l_bflow_method_code = 'PRIOR_ENTRY'
32384 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
32385 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
32386 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
32387 )
32388 THEN
32389 xla_ae_lines_pkg.BflowUpgEntry
32390 (p_business_method_code => l_bflow_method_code
32391 ,p_business_class_code => l_bflow_class_code
32392 ,p_balance_type => l_balance_type_code);
32393 ELSE
32394 NULL;
32395 -- No business flow processing for business flow method of NONE.
32396 END IF;
32397
32398 --
32399 -- call analytical criteria
32400 --
32401
32402 --
32403 -- call description
32404 --
32405 -- No description or it is inherited.
32406 --
32407 -- call ADRs
32408 -- Bug 4922099
32409 --
32410 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
32411 (NVL(l_actual_upg_option, 'N') = 'O') OR
32412 (NVL(l_enc_upg_option, 'N') = 'O')
32413 )
32414 THEN
32415 NULL;
32416 --
32417 --
32418
32419 l_ccid := AcctDerRule_4(
32420 p_application_id => p_application_id
32421 , p_ae_header_id => l_ae_header_id
32422 , p_source_4 => p_source_4
32423 , x_transaction_coa_id => l_adr_transaction_coa_id
32424 , x_accounting_coa_id => l_adr_accounting_coa_id
32425 , x_value_type_code => l_adr_value_type_code
32426 , p_side => 'NA'
32427 );
32428
32429 xla_ae_lines_pkg.set_ccid(
32430 p_code_combination_id => l_ccid
32431 , p_value_type_code => l_adr_value_type_code
32432 , p_transaction_coa_id => l_adr_transaction_coa_id
32433 , p_accounting_coa_id => l_adr_accounting_coa_id
32434 , p_adr_code => 'CST_DEFAULT'
32435 , p_adr_type_code => 'S'
32436 , p_component_type => l_component_type
32437 , p_component_code => l_component_code
32438 , p_component_type_code => l_component_type_code
32439 , p_component_appl_id => l_component_appl_id
32440 , p_amb_context_code => l_amb_context_code
32441 , p_side => 'NA'
32442 );
32443
32444
32445 --
32446 --
32447 END IF;
32448 --
32449 -- Bug 4922099
32450 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
32451 (NVL(l_enc_upg_option, 'N') = 'O')
32452 ) AND
32453 (l_bflow_method_code = 'PRIOR_ENTRY')
32454 )
32455 THEN
32456 IF
32457 --
32458 1 = 2
32459 --
32460 THEN
32461 xla_accounting_err_pkg.build_message
32462 (p_appli_s_name => 'XLA'
32463 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
32464 ,p_token_1 => 'LINE_NUMBER'
32465 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
32466 ,p_token_2 => 'LINE_TYPE_NAME'
32467 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
32468 l_component_type
32469 ,l_component_code
32470 ,l_component_type_code
32471 ,l_component_appl_id
32472 ,l_amb_context_code
32473 ,l_entity_code
32474 ,l_event_class_code
32475 )
32476 ,p_token_3 => 'OWNER'
32477 ,p_value_3 => xla_lookups_pkg.get_meaning(
32478 p_lookup_type => 'XLA_OWNER_TYPE'
32479 ,p_lookup_code => l_component_type_code
32480 )
32481 ,p_token_4 => 'PRODUCT_NAME'
32482 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
32483 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
32484 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
32485 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
32486 ,p_ae_header_id => NULL
32487 );
32488
32489 IF (C_LEVEL_ERROR>= g_log_level) THEN
32490 trace
32491 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
32492 ,p_level => C_LEVEL_ERROR
32493 ,p_module => l_log_module);
32494 END IF;
32495 END IF;
32496 END IF;
32497 --
32498 --
32499 ------------------------------------------------------------------------------------------------
32500 -- 4219869 Business Flow
32501 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
32502 -- Prior Entry. Currently, the following code is always generated.
32503 ------------------------------------------------------------------------------------------------
32504 XLA_AE_LINES_PKG.ValidateCurrentLine;
32505
32506 ------------------------------------------------------------------------------------
32507 -- 4219869 Business Flow
32508 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
32509 ------------------------------------------------------------------------------------
32510 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
32511
32512 ----------------------------------------------------------------------------------
32513 -- 4219869 Business Flow
32514 -- Update journal entry status -- Need to generate this within IF <condition>
32515 ----------------------------------------------------------------------------------
32516 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
32517 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
32518 ,p_balance_type_code => l_balance_type_code
32519 );
32520
32521 -------------------------------------------------------------------------------------------
32522 -- 4262811 - Generate the Accrual Reversal lines
32523 -------------------------------------------------------------------------------------------
32524 BEGIN
32525 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
32526 (g_array_event(p_event_id).array_value_num('header_index'));
32527 IF l_acc_rev_flag IS NULL THEN
32528 l_acc_rev_flag := 'N';
32529 END IF;
32530 EXCEPTION
32531 WHEN OTHERS THEN
32532 l_acc_rev_flag := 'N';
32533 END;
32534 --
32535 IF (l_acc_rev_flag = 'Y') THEN
32536
32537 -- 4645092 ------------------------------------------------------------------------------
32538 -- To allow MPA report to determine if it should generate report process
32539 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
32540 ------------------------------------------------------------------------------------------
32541
32542 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
32543 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
32544 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
32545 -- call ADRs
32546 -- Bug 4922099
32547 --
32548 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
32549 (NVL(l_actual_upg_option, 'N') = 'O') OR
32550 (NVL(l_enc_upg_option, 'N') = 'O')
32551 )
32552 THEN
32553 NULL;
32554 --
32555 --
32556
32557 l_ccid := AcctDerRule_4(
32558 p_application_id => p_application_id
32559 , p_ae_header_id => l_ae_header_id
32560 , p_source_4 => p_source_4
32561 , x_transaction_coa_id => l_adr_transaction_coa_id
32562 , x_accounting_coa_id => l_adr_accounting_coa_id
32563 , x_value_type_code => l_adr_value_type_code
32564 , p_side => 'NA'
32565 );
32566
32567 xla_ae_lines_pkg.set_ccid(
32568 p_code_combination_id => l_ccid
32569 , p_value_type_code => l_adr_value_type_code
32570 , p_transaction_coa_id => l_adr_transaction_coa_id
32571 , p_accounting_coa_id => l_adr_accounting_coa_id
32572 , p_adr_code => 'CST_DEFAULT'
32573 , p_adr_type_code => 'S'
32574 , p_component_type => l_component_type
32575 , p_component_code => l_component_code
32576 , p_component_type_code => l_component_type_code
32577 , p_component_appl_id => l_component_appl_id
32578 , p_amb_context_code => l_amb_context_code
32579 , p_side => 'NA'
32580 );
32581
32582
32583 --
32584 --
32585 END IF;
32586
32587 --
32588 -- Update the line information that should be overwritten
32589 --
32590 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
32591 p_header_num => 1);
32592 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
32593
32594 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
32595
32596 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
32597 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
32598 END IF;
32599
32600 --
32601 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
32602 --
32603 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
32604 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
32605 ELSE
32606 ---------------------------------------------------------------------------------------------------
32607 -- 4262811a Switch Sign
32608 ---------------------------------------------------------------------------------------------------
32609 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
32610 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
32611 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
32612 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
32613 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
32614 -- 5132302
32615 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
32616 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
32617
32618 END IF;
32619
32620 -- 4955764
32621 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
32622 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
32623
32624
32625 XLA_AE_LINES_PKG.ValidateCurrentLine;
32626 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
32627
32628 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
32629 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
32630 ,p_balance_type_code => l_balance_type_code);
32631
32632 END IF;
32633
32634 -----------------------------------------------------------------------------------------
32635 -- 4262811 Multiperiod Accounting
32636 -----------------------------------------------------------------------------------------
32637 -- No MPA option is assigned.
32638
32639
32640 END IF;
32641 END IF;
32642 --
32643
32644 --
32645 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
32646 trace
32647 (p_msg => 'END of AcctLineType_61'
32648 ,p_level => C_LEVEL_PROCEDURE
32649 ,p_module => l_log_module);
32650 END IF;
32651 --
32652 EXCEPTION
32653 WHEN xla_exceptions_pkg.application_exception THEN
32654 RAISE;
32655 WHEN OTHERS THEN
32656 xla_exceptions_pkg.raise_message
32657 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_61');
32658 END AcctLineType_61;
32659 --
32660
32661 ---------------------------------------
32662 --
32663 -- PRIVATE FUNCTION
32664 -- AcctLineType_62
32665 --
32666 ---------------------------------------
32667 PROCEDURE AcctLineType_62 (
32668 p_application_id IN NUMBER
32669 ,p_event_id IN NUMBER
32670 ,p_calculate_acctd_flag IN VARCHAR2
32671 ,p_calculate_g_l_flag IN VARCHAR2
32672 ,p_actual_flag IN OUT VARCHAR2
32673 ,p_balance_type_code OUT VARCHAR2
32674 ,p_gain_or_loss_ref OUT VARCHAR2
32675
32676 --Cost Management Default Account
32677 , p_source_4 IN NUMBER
32678 --DISTRIBUTION_IDENTIFIER
32679 , p_source_11 IN NUMBER
32680 --Distribution Type
32681 , p_source_12 IN VARCHAR2
32682 , p_source_12_meaning IN VARCHAR2
32683 --Entered Currency Code
32684 , p_source_15 IN VARCHAR2
32685 --Entered Amount
32686 , p_source_18 IN NUMBER
32687 --Currency Conversion Date
32688 , p_source_19 IN DATE
32689 --Currency Conversion Rate
32690 , p_source_20 IN NUMBER
32691 --Currency Conversion Type
32692 , p_source_21 IN VARCHAR2
32693 --Accounted Amount
32694 , p_source_22 IN NUMBER
32695 --Accounting Line Type
32696 , p_source_24 IN NUMBER
32697 )
32698 IS
32699
32700 l_component_type VARCHAR2(80);
32701 l_component_code VARCHAR2(30);
32702 l_component_type_code VARCHAR2(1);
32703 l_component_appl_id INTEGER;
32704 l_amb_context_code VARCHAR2(30);
32705 l_entity_code VARCHAR2(30);
32706 l_event_class_code VARCHAR2(30);
32707 l_ae_header_id NUMBER;
32708 l_event_type_code VARCHAR2(30);
32709 l_line_definition_code VARCHAR2(30);
32710 l_line_definition_owner_code VARCHAR2(1);
32711 --
32712 -- adr variables
32713 l_segment VARCHAR2(30);
32714 l_ccid NUMBER;
32715 l_adr_transaction_coa_id NUMBER;
32716 l_adr_accounting_coa_id NUMBER;
32717 l_adr_flexfield_segment_code VARCHAR2(30);
32718 l_adr_flex_value_set_id NUMBER;
32719 l_adr_value_type_code VARCHAR2(30);
32720 l_adr_value_combination_id NUMBER;
32721 l_adr_value_segment_code VARCHAR2(30);
32722
32723 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
32724 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
32725 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
32726 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
32727
32728 -- 4262811 Variables ------------------------------------------------------------------------------------------
32729 l_entered_amt_idx NUMBER;
32730 l_accted_amt_idx NUMBER;
32731 l_acc_rev_flag VARCHAR2(1);
32732 l_accrual_line_num NUMBER;
32733 l_tmp_amt NUMBER;
32734 l_acc_rev_natural_side_code VARCHAR2(1);
32735
32736 l_num_entries NUMBER;
32737 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
32738 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
32739 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
32740 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
32741 l_recog_line_1 NUMBER;
32742 l_recog_line_2 NUMBER;
32743
32744 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
32745 l_bflow_applied_to_amt NUMBER; -- 5132302
32746 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
32747
32748 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
32749
32750 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
32751 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
32752
32753 ---------------------------------------------------------------------------------------------------------------
32754
32755
32756 --
32757 -- bulk performance
32758 --
32759 l_balance_type_code VARCHAR2(1);
32760 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
32761 l_log_module VARCHAR2(240);
32762
32763 --
32764 -- Upgrade strategy
32765 --
32766 l_actual_upg_option VARCHAR2(1);
32767 l_enc_upg_option VARCHAR2(1);
32768
32769 --
32770 BEGIN
32771 --
32772 IF g_log_enabled THEN
32773 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_62';
32774 END IF;
32775 --
32776 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
32777
32778 trace
32779 (p_msg => 'BEGIN of AcctLineType_62'
32780 ,p_level => C_LEVEL_PROCEDURE
32781 ,p_module => l_log_module);
32782
32783 END IF;
32784 --
32785 l_component_type := 'AMB_JLT';
32786 l_component_code := 'INTERORG_FREIGHT_CHARGE';
32787 l_component_type_code := 'S';
32788 l_component_appl_id := 707;
32789 l_amb_context_code := 'DEFAULT';
32790 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
32791 l_event_class_code := 'FOB_RCPT_SENDER_RCPT';
32792 l_event_type_code := 'FOB_RCPT_SENDER_RCPT_ALL';
32793 l_line_definition_owner_code := 'S';
32794 l_line_definition_code := 'FOB_RCPT_SENDER_RCPT';
32795 --
32796 l_balance_type_code := 'A';
32797 l_segment := NULL;
32798 l_ccid := NULL;
32799 l_adr_transaction_coa_id := NULL;
32800 l_adr_accounting_coa_id := NULL;
32801 l_adr_flexfield_segment_code := NULL;
32802 l_adr_flex_value_set_id := NULL;
32803 l_adr_value_type_code := NULL;
32804 l_adr_value_combination_id := NULL;
32805 l_adr_value_segment_code := NULL;
32806
32807 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
32808 l_bflow_class_code := ''; -- 4219869 Business Flow
32809 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
32810 l_budgetary_control_flag := 'N';
32811
32812 l_bflow_applied_to_amt_idx := NULL; -- 5132302
32813 l_bflow_applied_to_amt := NULL; -- 5132302
32814 l_entered_amt_idx := NULL; -- 4262811
32815 l_accted_amt_idx := NULL; -- 4262811
32816 l_acc_rev_flag := NULL; -- 4262811
32817 l_accrual_line_num := NULL; -- 4262811
32818 l_tmp_amt := NULL; -- 4262811
32819 --
32820
32821 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
32822 l_balance_type_code <> 'B' THEN
32823 IF NVL(p_source_24,9E125) = 12
32824 THEN
32825
32826 --
32827 XLA_AE_LINES_PKG.SetNewLine;
32828
32829 p_balance_type_code := l_balance_type_code;
32830 -- set the flag so later we will know whether the gain loss line needs to be created
32831
32832 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
32833 p_actual_flag :='A';
32834 END IF;
32835
32836 --
32837 -- bulk performance
32838 --
32839 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
32840 p_header_num => 0); -- 4262811
32841 --
32842 -- set accounting line options
32843 --
32844 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
32845 p_natural_side_code => 'D'
32846 , p_gain_or_loss_flag => 'N'
32847 , p_gl_transfer_mode_code => 'S'
32848 , p_acct_entry_type_code => 'A'
32849 , p_switch_side_flag => 'Y'
32850 , p_merge_duplicate_code => 'N'
32851 );
32852 --
32853 l_acc_rev_natural_side_code := 'C'; -- 4262811
32854 --
32855 --
32856 -- set accounting line type info
32857 --
32858 xla_ae_lines_pkg.SetAcctLineType
32859 (p_component_type => l_component_type
32860 ,p_event_type_code => l_event_type_code
32861 ,p_line_definition_owner_code => l_line_definition_owner_code
32862 ,p_line_definition_code => l_line_definition_code
32863 ,p_accounting_line_code => l_component_code
32864 ,p_accounting_line_type_code => l_component_type_code
32865 ,p_accounting_line_appl_id => l_component_appl_id
32866 ,p_amb_context_code => l_amb_context_code
32867 ,p_entity_code => l_entity_code
32868 ,p_event_class_code => l_event_class_code);
32869 --
32870 -- set accounting class
32871 --
32872 xla_ae_lines_pkg.SetAcctClass(
32873 p_accounting_class_code => 'INTERORG_FREIGHT_CHARGE'
32874 , p_ae_header_id => l_ae_header_id
32875 );
32876
32877 --
32878 -- set rounding class
32879 --
32880 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
32881 'INTERORG_FREIGHT_CHARGE';
32882
32883 --
32884 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
32885 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
32886 --
32887 -- bulk performance
32888 --
32889 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
32890
32891 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
32892 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
32893
32894 -- 4955764
32895 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
32896 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
32897
32898 -- 4458381 Public Sector Enh
32899
32900 --
32901 -- set accounting attributes for the line type
32902 --
32903 l_entered_amt_idx := 3;
32904 l_accted_amt_idx := 8;
32905 l_bflow_applied_to_amt_idx := NULL; -- 5132302
32906 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
32907 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
32908 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
32909 l_rec_acct_attrs.array_char_value(2) := p_source_12;
32910 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
32911 l_rec_acct_attrs.array_num_value(3) := p_source_18;
32912 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
32913 l_rec_acct_attrs.array_char_value(4) := p_source_15;
32914 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
32915 l_rec_acct_attrs.array_date_value(5) := p_source_19;
32916 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
32917 l_rec_acct_attrs.array_num_value(6) := p_source_20;
32918 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
32919 l_rec_acct_attrs.array_char_value(7) := p_source_21;
32920 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
32921 l_rec_acct_attrs.array_num_value(8) := p_source_22;
32922
32923 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
32924 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
32925
32926 ---------------------------------------------------------------------------------------------------------------
32927 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
32928 ---------------------------------------------------------------------------------------------------------------
32929 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
32930
32931 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
32932 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
32933
32934 IF xla_accounting_cache_pkg.GetValueChar
32935 (p_source_code => 'LEDGER_CATEGORY_CODE'
32936 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
32937 AND l_bflow_method_code = 'PRIOR_ENTRY'
32938 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
32939 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
32940 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
32941 )
32942 THEN
32943 xla_ae_lines_pkg.BflowUpgEntry
32944 (p_business_method_code => l_bflow_method_code
32945 ,p_business_class_code => l_bflow_class_code
32946 ,p_balance_type => l_balance_type_code);
32947 ELSE
32948 NULL;
32949 -- No business flow processing for business flow method of NONE.
32950 END IF;
32951
32952 --
32953 -- call analytical criteria
32954 --
32955
32956 --
32957 -- call description
32958 --
32959 -- No description or it is inherited.
32960 --
32961 -- call ADRs
32962 -- Bug 4922099
32963 --
32964 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
32965 (NVL(l_actual_upg_option, 'N') = 'O') OR
32966 (NVL(l_enc_upg_option, 'N') = 'O')
32967 )
32968 THEN
32969 NULL;
32970 --
32971 --
32972
32973 l_ccid := AcctDerRule_4(
32974 p_application_id => p_application_id
32975 , p_ae_header_id => l_ae_header_id
32976 , p_source_4 => p_source_4
32977 , x_transaction_coa_id => l_adr_transaction_coa_id
32978 , x_accounting_coa_id => l_adr_accounting_coa_id
32979 , x_value_type_code => l_adr_value_type_code
32980 , p_side => 'NA'
32981 );
32982
32983 xla_ae_lines_pkg.set_ccid(
32984 p_code_combination_id => l_ccid
32985 , p_value_type_code => l_adr_value_type_code
32986 , p_transaction_coa_id => l_adr_transaction_coa_id
32987 , p_accounting_coa_id => l_adr_accounting_coa_id
32988 , p_adr_code => 'CST_DEFAULT'
32989 , p_adr_type_code => 'S'
32990 , p_component_type => l_component_type
32991 , p_component_code => l_component_code
32992 , p_component_type_code => l_component_type_code
32993 , p_component_appl_id => l_component_appl_id
32994 , p_amb_context_code => l_amb_context_code
32995 , p_side => 'NA'
32996 );
32997
32998
32999 --
33000 --
33001 END IF;
33002 --
33003 -- Bug 4922099
33004 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
33005 (NVL(l_enc_upg_option, 'N') = 'O')
33006 ) AND
33007 (l_bflow_method_code = 'PRIOR_ENTRY')
33008 )
33009 THEN
33010 IF
33011 --
33012 1 = 2
33013 --
33014 THEN
33015 xla_accounting_err_pkg.build_message
33016 (p_appli_s_name => 'XLA'
33017 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
33018 ,p_token_1 => 'LINE_NUMBER'
33019 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
33020 ,p_token_2 => 'LINE_TYPE_NAME'
33021 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
33022 l_component_type
33023 ,l_component_code
33024 ,l_component_type_code
33025 ,l_component_appl_id
33026 ,l_amb_context_code
33027 ,l_entity_code
33028 ,l_event_class_code
33029 )
33030 ,p_token_3 => 'OWNER'
33031 ,p_value_3 => xla_lookups_pkg.get_meaning(
33032 p_lookup_type => 'XLA_OWNER_TYPE'
33033 ,p_lookup_code => l_component_type_code
33034 )
33035 ,p_token_4 => 'PRODUCT_NAME'
33036 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
33037 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
33038 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
33039 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
33040 ,p_ae_header_id => NULL
33041 );
33042
33043 IF (C_LEVEL_ERROR>= g_log_level) THEN
33044 trace
33045 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
33046 ,p_level => C_LEVEL_ERROR
33047 ,p_module => l_log_module);
33048 END IF;
33049 END IF;
33050 END IF;
33051 --
33052 --
33053 ------------------------------------------------------------------------------------------------
33054 -- 4219869 Business Flow
33055 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
33056 -- Prior Entry. Currently, the following code is always generated.
33057 ------------------------------------------------------------------------------------------------
33058 XLA_AE_LINES_PKG.ValidateCurrentLine;
33059
33060 ------------------------------------------------------------------------------------
33061 -- 4219869 Business Flow
33062 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
33063 ------------------------------------------------------------------------------------
33064 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
33065
33066 ----------------------------------------------------------------------------------
33067 -- 4219869 Business Flow
33068 -- Update journal entry status -- Need to generate this within IF <condition>
33069 ----------------------------------------------------------------------------------
33070 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
33071 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
33072 ,p_balance_type_code => l_balance_type_code
33073 );
33074
33075 -------------------------------------------------------------------------------------------
33076 -- 4262811 - Generate the Accrual Reversal lines
33077 -------------------------------------------------------------------------------------------
33078 BEGIN
33079 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
33080 (g_array_event(p_event_id).array_value_num('header_index'));
33081 IF l_acc_rev_flag IS NULL THEN
33082 l_acc_rev_flag := 'N';
33083 END IF;
33084 EXCEPTION
33085 WHEN OTHERS THEN
33086 l_acc_rev_flag := 'N';
33087 END;
33088 --
33089 IF (l_acc_rev_flag = 'Y') THEN
33090
33091 -- 4645092 ------------------------------------------------------------------------------
33092 -- To allow MPA report to determine if it should generate report process
33093 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
33094 ------------------------------------------------------------------------------------------
33095
33096 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
33097 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
33098 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
33099 -- call ADRs
33100 -- Bug 4922099
33101 --
33102 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
33103 (NVL(l_actual_upg_option, 'N') = 'O') OR
33104 (NVL(l_enc_upg_option, 'N') = 'O')
33105 )
33106 THEN
33107 NULL;
33108 --
33109 --
33110
33111 l_ccid := AcctDerRule_4(
33112 p_application_id => p_application_id
33113 , p_ae_header_id => l_ae_header_id
33114 , p_source_4 => p_source_4
33115 , x_transaction_coa_id => l_adr_transaction_coa_id
33116 , x_accounting_coa_id => l_adr_accounting_coa_id
33117 , x_value_type_code => l_adr_value_type_code
33118 , p_side => 'NA'
33119 );
33120
33121 xla_ae_lines_pkg.set_ccid(
33122 p_code_combination_id => l_ccid
33123 , p_value_type_code => l_adr_value_type_code
33124 , p_transaction_coa_id => l_adr_transaction_coa_id
33125 , p_accounting_coa_id => l_adr_accounting_coa_id
33126 , p_adr_code => 'CST_DEFAULT'
33127 , p_adr_type_code => 'S'
33128 , p_component_type => l_component_type
33129 , p_component_code => l_component_code
33130 , p_component_type_code => l_component_type_code
33131 , p_component_appl_id => l_component_appl_id
33132 , p_amb_context_code => l_amb_context_code
33133 , p_side => 'NA'
33134 );
33135
33136
33137 --
33138 --
33139 END IF;
33140
33141 --
33142 -- Update the line information that should be overwritten
33143 --
33144 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
33145 p_header_num => 1);
33146 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
33147
33148 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
33149
33150 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
33151 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
33152 END IF;
33153
33154 --
33155 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
33156 --
33157 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
33158 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
33159 ELSE
33160 ---------------------------------------------------------------------------------------------------
33161 -- 4262811a Switch Sign
33162 ---------------------------------------------------------------------------------------------------
33163 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
33164 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
33165 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
33166 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
33167 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
33168 -- 5132302
33169 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
33170 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
33171
33172 END IF;
33173
33174 -- 4955764
33175 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
33176 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
33177
33178
33179 XLA_AE_LINES_PKG.ValidateCurrentLine;
33180 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
33181
33182 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
33183 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
33184 ,p_balance_type_code => l_balance_type_code);
33185
33186 END IF;
33187
33188 -----------------------------------------------------------------------------------------
33189 -- 4262811 Multiperiod Accounting
33190 -----------------------------------------------------------------------------------------
33191 -- No MPA option is assigned.
33192
33193
33194 END IF;
33195 END IF;
33196 --
33197
33198 --
33199 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
33200 trace
33201 (p_msg => 'END of AcctLineType_62'
33202 ,p_level => C_LEVEL_PROCEDURE
33203 ,p_module => l_log_module);
33204 END IF;
33205 --
33206 EXCEPTION
33207 WHEN xla_exceptions_pkg.application_exception THEN
33208 RAISE;
33209 WHEN OTHERS THEN
33210 xla_exceptions_pkg.raise_message
33211 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_62');
33212 END AcctLineType_62;
33213 --
33214
33215 ---------------------------------------
33216 --
33217 -- PRIVATE FUNCTION
33218 -- AcctLineType_63
33219 --
33220 ---------------------------------------
33221 PROCEDURE AcctLineType_63 (
33222 p_application_id IN NUMBER
33223 ,p_event_id IN NUMBER
33224 ,p_calculate_acctd_flag IN VARCHAR2
33225 ,p_calculate_g_l_flag IN VARCHAR2
33226 ,p_actual_flag IN OUT VARCHAR2
33227 ,p_balance_type_code OUT VARCHAR2
33228 ,p_gain_or_loss_ref OUT VARCHAR2
33229
33230 --Cost Management Default Account
33231 , p_source_4 IN NUMBER
33232 --DISTRIBUTION_IDENTIFIER
33233 , p_source_11 IN NUMBER
33234 --Distribution Type
33235 , p_source_12 IN VARCHAR2
33236 , p_source_12_meaning IN VARCHAR2
33237 --Entered Currency Code
33238 , p_source_15 IN VARCHAR2
33239 --Entered Amount
33240 , p_source_18 IN NUMBER
33241 --Currency Conversion Date
33242 , p_source_19 IN DATE
33243 --Currency Conversion Rate
33244 , p_source_20 IN NUMBER
33245 --Currency Conversion Type
33246 , p_source_21 IN VARCHAR2
33247 --Accounted Amount
33248 , p_source_22 IN NUMBER
33249 --Accounting Line Type
33250 , p_source_24 IN NUMBER
33251 )
33252 IS
33253
33254 l_component_type VARCHAR2(80);
33255 l_component_code VARCHAR2(30);
33256 l_component_type_code VARCHAR2(1);
33257 l_component_appl_id INTEGER;
33258 l_amb_context_code VARCHAR2(30);
33259 l_entity_code VARCHAR2(30);
33260 l_event_class_code VARCHAR2(30);
33261 l_ae_header_id NUMBER;
33262 l_event_type_code VARCHAR2(30);
33263 l_line_definition_code VARCHAR2(30);
33264 l_line_definition_owner_code VARCHAR2(1);
33265 --
33266 -- adr variables
33267 l_segment VARCHAR2(30);
33268 l_ccid NUMBER;
33269 l_adr_transaction_coa_id NUMBER;
33270 l_adr_accounting_coa_id NUMBER;
33271 l_adr_flexfield_segment_code VARCHAR2(30);
33272 l_adr_flex_value_set_id NUMBER;
33273 l_adr_value_type_code VARCHAR2(30);
33274 l_adr_value_combination_id NUMBER;
33275 l_adr_value_segment_code VARCHAR2(30);
33276
33277 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
33278 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
33279 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
33280 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
33281
33282 -- 4262811 Variables ------------------------------------------------------------------------------------------
33283 l_entered_amt_idx NUMBER;
33284 l_accted_amt_idx NUMBER;
33285 l_acc_rev_flag VARCHAR2(1);
33286 l_accrual_line_num NUMBER;
33287 l_tmp_amt NUMBER;
33288 l_acc_rev_natural_side_code VARCHAR2(1);
33289
33290 l_num_entries NUMBER;
33291 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
33292 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
33293 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
33294 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
33295 l_recog_line_1 NUMBER;
33296 l_recog_line_2 NUMBER;
33297
33298 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
33299 l_bflow_applied_to_amt NUMBER; -- 5132302
33300 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
33301
33302 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
33303
33304 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
33305 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
33306
33307 ---------------------------------------------------------------------------------------------------------------
33308
33309
33310 --
33311 -- bulk performance
33312 --
33313 l_balance_type_code VARCHAR2(1);
33314 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
33315 l_log_module VARCHAR2(240);
33316
33317 --
33318 -- Upgrade strategy
33319 --
33320 l_actual_upg_option VARCHAR2(1);
33321 l_enc_upg_option VARCHAR2(1);
33322
33323 --
33324 BEGIN
33325 --
33326 IF g_log_enabled THEN
33327 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_63';
33328 END IF;
33329 --
33330 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
33331
33332 trace
33333 (p_msg => 'BEGIN of AcctLineType_63'
33334 ,p_level => C_LEVEL_PROCEDURE
33335 ,p_module => l_log_module);
33336
33337 END IF;
33338 --
33339 l_component_type := 'AMB_JLT';
33340 l_component_code := 'INTERORG_FREIGHT_CHARGE';
33341 l_component_type_code := 'S';
33342 l_component_appl_id := 707;
33343 l_amb_context_code := 'DEFAULT';
33344 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
33345 l_event_class_code := 'USER_DEFINE';
33346 l_event_type_code := 'UDIR_INTERORG_SHIP';
33347 l_line_definition_owner_code := 'S';
33348 l_line_definition_code := 'USER_DIR_INTERORG_SHIP';
33349 --
33350 l_balance_type_code := 'A';
33351 l_segment := NULL;
33352 l_ccid := NULL;
33353 l_adr_transaction_coa_id := NULL;
33354 l_adr_accounting_coa_id := NULL;
33355 l_adr_flexfield_segment_code := NULL;
33356 l_adr_flex_value_set_id := NULL;
33357 l_adr_value_type_code := NULL;
33358 l_adr_value_combination_id := NULL;
33359 l_adr_value_segment_code := NULL;
33360
33361 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
33362 l_bflow_class_code := ''; -- 4219869 Business Flow
33363 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
33364 l_budgetary_control_flag := 'N';
33365
33366 l_bflow_applied_to_amt_idx := NULL; -- 5132302
33367 l_bflow_applied_to_amt := NULL; -- 5132302
33368 l_entered_amt_idx := NULL; -- 4262811
33369 l_accted_amt_idx := NULL; -- 4262811
33370 l_acc_rev_flag := NULL; -- 4262811
33371 l_accrual_line_num := NULL; -- 4262811
33372 l_tmp_amt := NULL; -- 4262811
33373 --
33374
33375 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
33376 l_balance_type_code <> 'B' THEN
33377 IF NVL(p_source_24,9E125) = 12
33378 THEN
33379
33380 --
33381 XLA_AE_LINES_PKG.SetNewLine;
33382
33383 p_balance_type_code := l_balance_type_code;
33384 -- set the flag so later we will know whether the gain loss line needs to be created
33385
33386 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
33387 p_actual_flag :='A';
33388 END IF;
33389
33390 --
33391 -- bulk performance
33392 --
33393 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
33394 p_header_num => 0); -- 4262811
33395 --
33396 -- set accounting line options
33397 --
33398 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
33399 p_natural_side_code => 'D'
33400 , p_gain_or_loss_flag => 'N'
33401 , p_gl_transfer_mode_code => 'S'
33402 , p_acct_entry_type_code => 'A'
33403 , p_switch_side_flag => 'Y'
33404 , p_merge_duplicate_code => 'N'
33405 );
33406 --
33407 l_acc_rev_natural_side_code := 'C'; -- 4262811
33408 --
33409 --
33410 -- set accounting line type info
33411 --
33412 xla_ae_lines_pkg.SetAcctLineType
33413 (p_component_type => l_component_type
33414 ,p_event_type_code => l_event_type_code
33415 ,p_line_definition_owner_code => l_line_definition_owner_code
33416 ,p_line_definition_code => l_line_definition_code
33417 ,p_accounting_line_code => l_component_code
33418 ,p_accounting_line_type_code => l_component_type_code
33419 ,p_accounting_line_appl_id => l_component_appl_id
33420 ,p_amb_context_code => l_amb_context_code
33421 ,p_entity_code => l_entity_code
33422 ,p_event_class_code => l_event_class_code);
33423 --
33424 -- set accounting class
33425 --
33426 xla_ae_lines_pkg.SetAcctClass(
33427 p_accounting_class_code => 'INTERORG_FREIGHT_CHARGE'
33428 , p_ae_header_id => l_ae_header_id
33429 );
33430
33431 --
33432 -- set rounding class
33433 --
33434 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
33435 'INTERORG_FREIGHT_CHARGE';
33436
33437 --
33438 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
33439 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
33440 --
33441 -- bulk performance
33442 --
33443 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
33444
33445 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
33446 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
33447
33448 -- 4955764
33449 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
33450 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
33451
33452 -- 4458381 Public Sector Enh
33453
33454 --
33455 -- set accounting attributes for the line type
33456 --
33457 l_entered_amt_idx := 3;
33458 l_accted_amt_idx := 8;
33459 l_bflow_applied_to_amt_idx := NULL; -- 5132302
33460 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
33461 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
33462 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
33463 l_rec_acct_attrs.array_char_value(2) := p_source_12;
33464 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
33465 l_rec_acct_attrs.array_num_value(3) := p_source_18;
33466 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
33467 l_rec_acct_attrs.array_char_value(4) := p_source_15;
33468 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
33469 l_rec_acct_attrs.array_date_value(5) := p_source_19;
33470 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
33471 l_rec_acct_attrs.array_num_value(6) := p_source_20;
33472 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
33473 l_rec_acct_attrs.array_char_value(7) := p_source_21;
33474 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
33475 l_rec_acct_attrs.array_num_value(8) := p_source_22;
33476
33477 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
33478 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
33479
33480 ---------------------------------------------------------------------------------------------------------------
33481 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
33482 ---------------------------------------------------------------------------------------------------------------
33483 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
33484
33485 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
33486 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
33487
33488 IF xla_accounting_cache_pkg.GetValueChar
33489 (p_source_code => 'LEDGER_CATEGORY_CODE'
33490 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
33491 AND l_bflow_method_code = 'PRIOR_ENTRY'
33492 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
33493 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
33494 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
33495 )
33496 THEN
33497 xla_ae_lines_pkg.BflowUpgEntry
33498 (p_business_method_code => l_bflow_method_code
33499 ,p_business_class_code => l_bflow_class_code
33500 ,p_balance_type => l_balance_type_code);
33501 ELSE
33502 NULL;
33503 -- No business flow processing for business flow method of NONE.
33504 END IF;
33505
33506 --
33507 -- call analytical criteria
33508 --
33509
33510 --
33511 -- call description
33512 --
33513 -- No description or it is inherited.
33514 --
33515 -- call ADRs
33516 -- Bug 4922099
33517 --
33518 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
33519 (NVL(l_actual_upg_option, 'N') = 'O') OR
33520 (NVL(l_enc_upg_option, 'N') = 'O')
33521 )
33522 THEN
33523 NULL;
33524 --
33525 --
33526
33527 l_ccid := AcctDerRule_4(
33528 p_application_id => p_application_id
33529 , p_ae_header_id => l_ae_header_id
33530 , p_source_4 => p_source_4
33531 , x_transaction_coa_id => l_adr_transaction_coa_id
33532 , x_accounting_coa_id => l_adr_accounting_coa_id
33533 , x_value_type_code => l_adr_value_type_code
33534 , p_side => 'NA'
33535 );
33536
33537 xla_ae_lines_pkg.set_ccid(
33538 p_code_combination_id => l_ccid
33539 , p_value_type_code => l_adr_value_type_code
33540 , p_transaction_coa_id => l_adr_transaction_coa_id
33541 , p_accounting_coa_id => l_adr_accounting_coa_id
33542 , p_adr_code => 'CST_DEFAULT'
33543 , p_adr_type_code => 'S'
33544 , p_component_type => l_component_type
33545 , p_component_code => l_component_code
33546 , p_component_type_code => l_component_type_code
33547 , p_component_appl_id => l_component_appl_id
33548 , p_amb_context_code => l_amb_context_code
33549 , p_side => 'NA'
33550 );
33551
33552
33553 --
33554 --
33555 END IF;
33556 --
33557 -- Bug 4922099
33558 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
33559 (NVL(l_enc_upg_option, 'N') = 'O')
33560 ) AND
33561 (l_bflow_method_code = 'PRIOR_ENTRY')
33562 )
33563 THEN
33564 IF
33565 --
33566 1 = 2
33567 --
33568 THEN
33569 xla_accounting_err_pkg.build_message
33570 (p_appli_s_name => 'XLA'
33571 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
33572 ,p_token_1 => 'LINE_NUMBER'
33573 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
33574 ,p_token_2 => 'LINE_TYPE_NAME'
33575 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
33576 l_component_type
33577 ,l_component_code
33578 ,l_component_type_code
33579 ,l_component_appl_id
33580 ,l_amb_context_code
33581 ,l_entity_code
33582 ,l_event_class_code
33583 )
33584 ,p_token_3 => 'OWNER'
33585 ,p_value_3 => xla_lookups_pkg.get_meaning(
33586 p_lookup_type => 'XLA_OWNER_TYPE'
33587 ,p_lookup_code => l_component_type_code
33588 )
33589 ,p_token_4 => 'PRODUCT_NAME'
33590 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
33591 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
33592 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
33593 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
33594 ,p_ae_header_id => NULL
33595 );
33596
33597 IF (C_LEVEL_ERROR>= g_log_level) THEN
33598 trace
33599 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
33600 ,p_level => C_LEVEL_ERROR
33601 ,p_module => l_log_module);
33602 END IF;
33603 END IF;
33604 END IF;
33605 --
33606 --
33607 ------------------------------------------------------------------------------------------------
33608 -- 4219869 Business Flow
33609 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
33610 -- Prior Entry. Currently, the following code is always generated.
33611 ------------------------------------------------------------------------------------------------
33612 XLA_AE_LINES_PKG.ValidateCurrentLine;
33613
33614 ------------------------------------------------------------------------------------
33615 -- 4219869 Business Flow
33616 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
33617 ------------------------------------------------------------------------------------
33618 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
33619
33620 ----------------------------------------------------------------------------------
33621 -- 4219869 Business Flow
33622 -- Update journal entry status -- Need to generate this within IF <condition>
33623 ----------------------------------------------------------------------------------
33624 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
33625 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
33626 ,p_balance_type_code => l_balance_type_code
33627 );
33628
33629 -------------------------------------------------------------------------------------------
33630 -- 4262811 - Generate the Accrual Reversal lines
33631 -------------------------------------------------------------------------------------------
33632 BEGIN
33633 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
33634 (g_array_event(p_event_id).array_value_num('header_index'));
33635 IF l_acc_rev_flag IS NULL THEN
33636 l_acc_rev_flag := 'N';
33637 END IF;
33638 EXCEPTION
33639 WHEN OTHERS THEN
33640 l_acc_rev_flag := 'N';
33641 END;
33642 --
33643 IF (l_acc_rev_flag = 'Y') THEN
33644
33645 -- 4645092 ------------------------------------------------------------------------------
33646 -- To allow MPA report to determine if it should generate report process
33647 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
33648 ------------------------------------------------------------------------------------------
33649
33650 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
33651 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
33652 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
33653 -- call ADRs
33654 -- Bug 4922099
33655 --
33656 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
33657 (NVL(l_actual_upg_option, 'N') = 'O') OR
33658 (NVL(l_enc_upg_option, 'N') = 'O')
33659 )
33660 THEN
33661 NULL;
33662 --
33663 --
33664
33665 l_ccid := AcctDerRule_4(
33666 p_application_id => p_application_id
33667 , p_ae_header_id => l_ae_header_id
33668 , p_source_4 => p_source_4
33669 , x_transaction_coa_id => l_adr_transaction_coa_id
33670 , x_accounting_coa_id => l_adr_accounting_coa_id
33671 , x_value_type_code => l_adr_value_type_code
33672 , p_side => 'NA'
33673 );
33674
33675 xla_ae_lines_pkg.set_ccid(
33676 p_code_combination_id => l_ccid
33677 , p_value_type_code => l_adr_value_type_code
33678 , p_transaction_coa_id => l_adr_transaction_coa_id
33679 , p_accounting_coa_id => l_adr_accounting_coa_id
33680 , p_adr_code => 'CST_DEFAULT'
33681 , p_adr_type_code => 'S'
33682 , p_component_type => l_component_type
33683 , p_component_code => l_component_code
33684 , p_component_type_code => l_component_type_code
33685 , p_component_appl_id => l_component_appl_id
33686 , p_amb_context_code => l_amb_context_code
33687 , p_side => 'NA'
33688 );
33689
33690
33691 --
33692 --
33693 END IF;
33694
33695 --
33696 -- Update the line information that should be overwritten
33697 --
33698 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
33699 p_header_num => 1);
33700 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
33701
33702 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
33703
33704 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
33705 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
33706 END IF;
33707
33708 --
33709 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
33710 --
33711 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
33712 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
33713 ELSE
33714 ---------------------------------------------------------------------------------------------------
33715 -- 4262811a Switch Sign
33716 ---------------------------------------------------------------------------------------------------
33717 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
33718 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
33719 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
33720 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
33721 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
33722 -- 5132302
33723 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
33724 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
33725
33726 END IF;
33727
33728 -- 4955764
33729 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
33730 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
33731
33732
33733 XLA_AE_LINES_PKG.ValidateCurrentLine;
33734 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
33735
33736 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
33737 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
33738 ,p_balance_type_code => l_balance_type_code);
33739
33740 END IF;
33741
33742 -----------------------------------------------------------------------------------------
33743 -- 4262811 Multiperiod Accounting
33744 -----------------------------------------------------------------------------------------
33745 -- No MPA option is assigned.
33746
33747
33748 END IF;
33749 END IF;
33750 --
33751
33752 --
33753 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
33754 trace
33755 (p_msg => 'END of AcctLineType_63'
33756 ,p_level => C_LEVEL_PROCEDURE
33757 ,p_module => l_log_module);
33758 END IF;
33759 --
33760 EXCEPTION
33761 WHEN xla_exceptions_pkg.application_exception THEN
33762 RAISE;
33763 WHEN OTHERS THEN
33764 xla_exceptions_pkg.raise_message
33765 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_63');
33766 END AcctLineType_63;
33767 --
33768
33769 ---------------------------------------
33770 --
33771 -- PRIVATE FUNCTION
33772 -- AcctLineType_64
33773 --
33774 ---------------------------------------
33775 PROCEDURE AcctLineType_64 (
33776 p_application_id IN NUMBER
33777 ,p_event_id IN NUMBER
33778 ,p_calculate_acctd_flag IN VARCHAR2
33779 ,p_calculate_g_l_flag IN VARCHAR2
33780 ,p_actual_flag IN OUT VARCHAR2
33781 ,p_balance_type_code OUT VARCHAR2
33782 ,p_gain_or_loss_ref OUT VARCHAR2
33783
33784 --Cost Management Default Account
33785 , p_source_4 IN NUMBER
33786 --DISTRIBUTION_IDENTIFIER
33787 , p_source_11 IN NUMBER
33788 --Distribution Type
33789 , p_source_12 IN VARCHAR2
33790 , p_source_12_meaning IN VARCHAR2
33791 --Entered Currency Code
33792 , p_source_15 IN VARCHAR2
33793 --Entered Amount
33794 , p_source_18 IN NUMBER
33795 --Currency Conversion Date
33796 , p_source_19 IN DATE
33797 --Currency Conversion Rate
33798 , p_source_20 IN NUMBER
33799 --Currency Conversion Type
33800 , p_source_21 IN VARCHAR2
33801 --Accounted Amount
33802 , p_source_22 IN NUMBER
33803 --Accounting Line Type
33804 , p_source_24 IN NUMBER
33805 )
33806 IS
33807
33808 l_component_type VARCHAR2(80);
33809 l_component_code VARCHAR2(30);
33810 l_component_type_code VARCHAR2(1);
33811 l_component_appl_id INTEGER;
33812 l_amb_context_code VARCHAR2(30);
33813 l_entity_code VARCHAR2(30);
33814 l_event_class_code VARCHAR2(30);
33815 l_ae_header_id NUMBER;
33816 l_event_type_code VARCHAR2(30);
33817 l_line_definition_code VARCHAR2(30);
33818 l_line_definition_owner_code VARCHAR2(1);
33819 --
33820 -- adr variables
33821 l_segment VARCHAR2(30);
33822 l_ccid NUMBER;
33823 l_adr_transaction_coa_id NUMBER;
33824 l_adr_accounting_coa_id NUMBER;
33825 l_adr_flexfield_segment_code VARCHAR2(30);
33826 l_adr_flex_value_set_id NUMBER;
33827 l_adr_value_type_code VARCHAR2(30);
33828 l_adr_value_combination_id NUMBER;
33829 l_adr_value_segment_code VARCHAR2(30);
33830
33831 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
33832 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
33833 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
33834 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
33835
33836 -- 4262811 Variables ------------------------------------------------------------------------------------------
33837 l_entered_amt_idx NUMBER;
33838 l_accted_amt_idx NUMBER;
33839 l_acc_rev_flag VARCHAR2(1);
33840 l_accrual_line_num NUMBER;
33841 l_tmp_amt NUMBER;
33842 l_acc_rev_natural_side_code VARCHAR2(1);
33843
33844 l_num_entries NUMBER;
33845 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
33846 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
33847 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
33848 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
33849 l_recog_line_1 NUMBER;
33850 l_recog_line_2 NUMBER;
33851
33852 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
33853 l_bflow_applied_to_amt NUMBER; -- 5132302
33854 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
33855
33856 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
33857
33858 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
33859 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
33860
33861 ---------------------------------------------------------------------------------------------------------------
33862
33863
33864 --
33865 -- bulk performance
33866 --
33867 l_balance_type_code VARCHAR2(1);
33868 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
33869 l_log_module VARCHAR2(240);
33870
33871 --
33872 -- Upgrade strategy
33873 --
33874 l_actual_upg_option VARCHAR2(1);
33875 l_enc_upg_option VARCHAR2(1);
33876
33877 --
33878 BEGIN
33879 --
33880 IF g_log_enabled THEN
33881 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_64';
33882 END IF;
33883 --
33884 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
33885
33886 trace
33887 (p_msg => 'BEGIN of AcctLineType_64'
33888 ,p_level => C_LEVEL_PROCEDURE
33889 ,p_module => l_log_module);
33890
33891 END IF;
33892 --
33893 l_component_type := 'AMB_JLT';
33894 l_component_code := 'INTERORG_FREIGHT_CHARGE';
33895 l_component_type_code := 'S';
33896 l_component_appl_id := 707;
33897 l_amb_context_code := 'DEFAULT';
33898 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
33899 l_event_class_code := 'USER_DEFINE';
33900 l_event_type_code := 'UDIR_INTERORG_RCPT';
33901 l_line_definition_owner_code := 'S';
33902 l_line_definition_code := 'USER_DIR_INTERORG_RCPT';
33903 --
33904 l_balance_type_code := 'A';
33905 l_segment := NULL;
33906 l_ccid := NULL;
33907 l_adr_transaction_coa_id := NULL;
33908 l_adr_accounting_coa_id := NULL;
33909 l_adr_flexfield_segment_code := NULL;
33910 l_adr_flex_value_set_id := NULL;
33911 l_adr_value_type_code := NULL;
33912 l_adr_value_combination_id := NULL;
33913 l_adr_value_segment_code := NULL;
33914
33915 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
33916 l_bflow_class_code := ''; -- 4219869 Business Flow
33917 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
33918 l_budgetary_control_flag := 'N';
33919
33920 l_bflow_applied_to_amt_idx := NULL; -- 5132302
33921 l_bflow_applied_to_amt := NULL; -- 5132302
33922 l_entered_amt_idx := NULL; -- 4262811
33923 l_accted_amt_idx := NULL; -- 4262811
33924 l_acc_rev_flag := NULL; -- 4262811
33925 l_accrual_line_num := NULL; -- 4262811
33926 l_tmp_amt := NULL; -- 4262811
33927 --
33928
33929 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
33930 l_balance_type_code <> 'B' THEN
33931 IF NVL(p_source_24,9E125) = 12
33932 THEN
33933
33934 --
33935 XLA_AE_LINES_PKG.SetNewLine;
33936
33937 p_balance_type_code := l_balance_type_code;
33938 -- set the flag so later we will know whether the gain loss line needs to be created
33939
33940 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
33941 p_actual_flag :='A';
33942 END IF;
33943
33944 --
33945 -- bulk performance
33946 --
33947 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
33948 p_header_num => 0); -- 4262811
33949 --
33950 -- set accounting line options
33951 --
33952 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
33953 p_natural_side_code => 'D'
33954 , p_gain_or_loss_flag => 'N'
33955 , p_gl_transfer_mode_code => 'S'
33956 , p_acct_entry_type_code => 'A'
33957 , p_switch_side_flag => 'Y'
33958 , p_merge_duplicate_code => 'N'
33959 );
33960 --
33961 l_acc_rev_natural_side_code := 'C'; -- 4262811
33962 --
33963 --
33964 -- set accounting line type info
33965 --
33966 xla_ae_lines_pkg.SetAcctLineType
33967 (p_component_type => l_component_type
33968 ,p_event_type_code => l_event_type_code
33969 ,p_line_definition_owner_code => l_line_definition_owner_code
33970 ,p_line_definition_code => l_line_definition_code
33971 ,p_accounting_line_code => l_component_code
33972 ,p_accounting_line_type_code => l_component_type_code
33973 ,p_accounting_line_appl_id => l_component_appl_id
33974 ,p_amb_context_code => l_amb_context_code
33975 ,p_entity_code => l_entity_code
33976 ,p_event_class_code => l_event_class_code);
33977 --
33978 -- set accounting class
33979 --
33980 xla_ae_lines_pkg.SetAcctClass(
33981 p_accounting_class_code => 'INTERORG_FREIGHT_CHARGE'
33982 , p_ae_header_id => l_ae_header_id
33983 );
33984
33985 --
33986 -- set rounding class
33987 --
33988 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
33989 'INTERORG_FREIGHT_CHARGE';
33990
33991 --
33992 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
33993 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
33994 --
33995 -- bulk performance
33996 --
33997 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
33998
33999 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
34000 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
34001
34002 -- 4955764
34003 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
34004 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
34005
34006 -- 4458381 Public Sector Enh
34007
34008 --
34009 -- set accounting attributes for the line type
34010 --
34011 l_entered_amt_idx := 3;
34012 l_accted_amt_idx := 8;
34013 l_bflow_applied_to_amt_idx := NULL; -- 5132302
34014 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
34015 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
34016 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
34017 l_rec_acct_attrs.array_char_value(2) := p_source_12;
34018 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
34019 l_rec_acct_attrs.array_num_value(3) := p_source_18;
34020 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
34021 l_rec_acct_attrs.array_char_value(4) := p_source_15;
34022 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
34023 l_rec_acct_attrs.array_date_value(5) := p_source_19;
34024 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
34025 l_rec_acct_attrs.array_num_value(6) := p_source_20;
34026 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
34027 l_rec_acct_attrs.array_char_value(7) := p_source_21;
34028 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
34029 l_rec_acct_attrs.array_num_value(8) := p_source_22;
34030
34031 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
34032 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
34033
34034 ---------------------------------------------------------------------------------------------------------------
34035 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
34036 ---------------------------------------------------------------------------------------------------------------
34037 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
34038
34039 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
34040 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
34041
34042 IF xla_accounting_cache_pkg.GetValueChar
34043 (p_source_code => 'LEDGER_CATEGORY_CODE'
34044 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
34045 AND l_bflow_method_code = 'PRIOR_ENTRY'
34046 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
34047 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
34048 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
34049 )
34050 THEN
34051 xla_ae_lines_pkg.BflowUpgEntry
34052 (p_business_method_code => l_bflow_method_code
34053 ,p_business_class_code => l_bflow_class_code
34054 ,p_balance_type => l_balance_type_code);
34055 ELSE
34056 NULL;
34057 -- No business flow processing for business flow method of NONE.
34058 END IF;
34059
34060 --
34061 -- call analytical criteria
34062 --
34063
34064 --
34065 -- call description
34066 --
34067 -- No description or it is inherited.
34068 --
34069 -- call ADRs
34070 -- Bug 4922099
34071 --
34072 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
34073 (NVL(l_actual_upg_option, 'N') = 'O') OR
34074 (NVL(l_enc_upg_option, 'N') = 'O')
34075 )
34076 THEN
34077 NULL;
34078 --
34079 --
34080
34081 l_ccid := AcctDerRule_4(
34082 p_application_id => p_application_id
34083 , p_ae_header_id => l_ae_header_id
34084 , p_source_4 => p_source_4
34085 , x_transaction_coa_id => l_adr_transaction_coa_id
34086 , x_accounting_coa_id => l_adr_accounting_coa_id
34087 , x_value_type_code => l_adr_value_type_code
34088 , p_side => 'NA'
34089 );
34090
34091 xla_ae_lines_pkg.set_ccid(
34092 p_code_combination_id => l_ccid
34093 , p_value_type_code => l_adr_value_type_code
34094 , p_transaction_coa_id => l_adr_transaction_coa_id
34095 , p_accounting_coa_id => l_adr_accounting_coa_id
34096 , p_adr_code => 'CST_DEFAULT'
34097 , p_adr_type_code => 'S'
34098 , p_component_type => l_component_type
34099 , p_component_code => l_component_code
34100 , p_component_type_code => l_component_type_code
34101 , p_component_appl_id => l_component_appl_id
34102 , p_amb_context_code => l_amb_context_code
34103 , p_side => 'NA'
34104 );
34105
34106
34107 --
34108 --
34109 END IF;
34110 --
34111 -- Bug 4922099
34112 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
34113 (NVL(l_enc_upg_option, 'N') = 'O')
34114 ) AND
34115 (l_bflow_method_code = 'PRIOR_ENTRY')
34116 )
34117 THEN
34118 IF
34119 --
34120 1 = 2
34121 --
34122 THEN
34123 xla_accounting_err_pkg.build_message
34124 (p_appli_s_name => 'XLA'
34125 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
34126 ,p_token_1 => 'LINE_NUMBER'
34127 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
34128 ,p_token_2 => 'LINE_TYPE_NAME'
34129 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
34130 l_component_type
34131 ,l_component_code
34132 ,l_component_type_code
34133 ,l_component_appl_id
34134 ,l_amb_context_code
34135 ,l_entity_code
34136 ,l_event_class_code
34137 )
34138 ,p_token_3 => 'OWNER'
34139 ,p_value_3 => xla_lookups_pkg.get_meaning(
34140 p_lookup_type => 'XLA_OWNER_TYPE'
34141 ,p_lookup_code => l_component_type_code
34142 )
34143 ,p_token_4 => 'PRODUCT_NAME'
34144 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
34145 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
34146 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
34147 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
34148 ,p_ae_header_id => NULL
34149 );
34150
34151 IF (C_LEVEL_ERROR>= g_log_level) THEN
34152 trace
34153 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
34154 ,p_level => C_LEVEL_ERROR
34155 ,p_module => l_log_module);
34156 END IF;
34157 END IF;
34158 END IF;
34159 --
34160 --
34161 ------------------------------------------------------------------------------------------------
34162 -- 4219869 Business Flow
34163 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
34164 -- Prior Entry. Currently, the following code is always generated.
34165 ------------------------------------------------------------------------------------------------
34166 XLA_AE_LINES_PKG.ValidateCurrentLine;
34167
34168 ------------------------------------------------------------------------------------
34169 -- 4219869 Business Flow
34170 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
34171 ------------------------------------------------------------------------------------
34172 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
34173
34174 ----------------------------------------------------------------------------------
34175 -- 4219869 Business Flow
34176 -- Update journal entry status -- Need to generate this within IF <condition>
34177 ----------------------------------------------------------------------------------
34178 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
34179 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
34180 ,p_balance_type_code => l_balance_type_code
34181 );
34182
34183 -------------------------------------------------------------------------------------------
34184 -- 4262811 - Generate the Accrual Reversal lines
34185 -------------------------------------------------------------------------------------------
34186 BEGIN
34187 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
34188 (g_array_event(p_event_id).array_value_num('header_index'));
34189 IF l_acc_rev_flag IS NULL THEN
34190 l_acc_rev_flag := 'N';
34191 END IF;
34192 EXCEPTION
34193 WHEN OTHERS THEN
34194 l_acc_rev_flag := 'N';
34195 END;
34196 --
34197 IF (l_acc_rev_flag = 'Y') THEN
34198
34199 -- 4645092 ------------------------------------------------------------------------------
34200 -- To allow MPA report to determine if it should generate report process
34201 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
34202 ------------------------------------------------------------------------------------------
34203
34204 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
34205 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
34206 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
34207 -- call ADRs
34208 -- Bug 4922099
34209 --
34210 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
34211 (NVL(l_actual_upg_option, 'N') = 'O') OR
34212 (NVL(l_enc_upg_option, 'N') = 'O')
34213 )
34214 THEN
34215 NULL;
34216 --
34217 --
34218
34219 l_ccid := AcctDerRule_4(
34220 p_application_id => p_application_id
34221 , p_ae_header_id => l_ae_header_id
34222 , p_source_4 => p_source_4
34223 , x_transaction_coa_id => l_adr_transaction_coa_id
34224 , x_accounting_coa_id => l_adr_accounting_coa_id
34225 , x_value_type_code => l_adr_value_type_code
34226 , p_side => 'NA'
34227 );
34228
34229 xla_ae_lines_pkg.set_ccid(
34230 p_code_combination_id => l_ccid
34231 , p_value_type_code => l_adr_value_type_code
34232 , p_transaction_coa_id => l_adr_transaction_coa_id
34233 , p_accounting_coa_id => l_adr_accounting_coa_id
34234 , p_adr_code => 'CST_DEFAULT'
34235 , p_adr_type_code => 'S'
34236 , p_component_type => l_component_type
34237 , p_component_code => l_component_code
34238 , p_component_type_code => l_component_type_code
34239 , p_component_appl_id => l_component_appl_id
34240 , p_amb_context_code => l_amb_context_code
34241 , p_side => 'NA'
34242 );
34243
34244
34245 --
34246 --
34247 END IF;
34248
34249 --
34250 -- Update the line information that should be overwritten
34251 --
34252 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
34253 p_header_num => 1);
34254 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
34255
34256 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
34257
34258 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
34259 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
34260 END IF;
34261
34262 --
34263 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
34264 --
34265 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
34266 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
34267 ELSE
34268 ---------------------------------------------------------------------------------------------------
34269 -- 4262811a Switch Sign
34270 ---------------------------------------------------------------------------------------------------
34271 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
34272 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
34273 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
34274 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
34275 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
34276 -- 5132302
34277 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
34278 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
34279
34280 END IF;
34281
34282 -- 4955764
34283 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
34284 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
34285
34286
34287 XLA_AE_LINES_PKG.ValidateCurrentLine;
34288 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
34289
34290 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
34291 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
34292 ,p_balance_type_code => l_balance_type_code);
34293
34294 END IF;
34295
34296 -----------------------------------------------------------------------------------------
34297 -- 4262811 Multiperiod Accounting
34298 -----------------------------------------------------------------------------------------
34299 -- No MPA option is assigned.
34300
34301
34302 END IF;
34303 END IF;
34304 --
34305
34306 --
34307 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
34308 trace
34309 (p_msg => 'END of AcctLineType_64'
34310 ,p_level => C_LEVEL_PROCEDURE
34311 ,p_module => l_log_module);
34312 END IF;
34313 --
34314 EXCEPTION
34315 WHEN xla_exceptions_pkg.application_exception THEN
34316 RAISE;
34317 WHEN OTHERS THEN
34318 xla_exceptions_pkg.raise_message
34319 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_64');
34320 END AcctLineType_64;
34321 --
34322
34323 ---------------------------------------
34324 --
34325 -- PRIVATE FUNCTION
34326 -- AcctLineType_65
34327 --
34328 ---------------------------------------
34329 PROCEDURE AcctLineType_65 (
34330 p_application_id IN NUMBER
34331 ,p_event_id IN NUMBER
34332 ,p_calculate_acctd_flag IN VARCHAR2
34333 ,p_calculate_g_l_flag IN VARCHAR2
34334 ,p_actual_flag IN OUT VARCHAR2
34335 ,p_balance_type_code OUT VARCHAR2
34336 ,p_gain_or_loss_ref OUT VARCHAR2
34337
34338 --Cost Management Default Account
34339 , p_source_4 IN NUMBER
34340 --DISTRIBUTION_IDENTIFIER
34341 , p_source_11 IN NUMBER
34342 --Distribution Type
34343 , p_source_12 IN VARCHAR2
34344 , p_source_12_meaning IN VARCHAR2
34345 --Entered Currency Code
34346 , p_source_15 IN VARCHAR2
34347 --Entered Amount
34348 , p_source_18 IN NUMBER
34349 --Currency Conversion Date
34350 , p_source_19 IN DATE
34351 --Currency Conversion Rate
34352 , p_source_20 IN NUMBER
34353 --Currency Conversion Type
34354 , p_source_21 IN VARCHAR2
34355 --Accounted Amount
34356 , p_source_22 IN NUMBER
34357 --Accounting Line Type
34358 , p_source_24 IN NUMBER
34359 )
34360 IS
34361
34362 l_component_type VARCHAR2(80);
34363 l_component_code VARCHAR2(30);
34364 l_component_type_code VARCHAR2(1);
34365 l_component_appl_id INTEGER;
34366 l_amb_context_code VARCHAR2(30);
34367 l_entity_code VARCHAR2(30);
34368 l_event_class_code VARCHAR2(30);
34369 l_ae_header_id NUMBER;
34370 l_event_type_code VARCHAR2(30);
34371 l_line_definition_code VARCHAR2(30);
34372 l_line_definition_owner_code VARCHAR2(1);
34373 --
34374 -- adr variables
34375 l_segment VARCHAR2(30);
34376 l_ccid NUMBER;
34377 l_adr_transaction_coa_id NUMBER;
34378 l_adr_accounting_coa_id NUMBER;
34379 l_adr_flexfield_segment_code VARCHAR2(30);
34380 l_adr_flex_value_set_id NUMBER;
34381 l_adr_value_type_code VARCHAR2(30);
34382 l_adr_value_combination_id NUMBER;
34383 l_adr_value_segment_code VARCHAR2(30);
34384
34385 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
34386 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
34387 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
34388 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
34389
34390 -- 4262811 Variables ------------------------------------------------------------------------------------------
34391 l_entered_amt_idx NUMBER;
34392 l_accted_amt_idx NUMBER;
34393 l_acc_rev_flag VARCHAR2(1);
34394 l_accrual_line_num NUMBER;
34395 l_tmp_amt NUMBER;
34396 l_acc_rev_natural_side_code VARCHAR2(1);
34397
34398 l_num_entries NUMBER;
34399 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
34400 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
34401 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
34402 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
34403 l_recog_line_1 NUMBER;
34404 l_recog_line_2 NUMBER;
34405
34406 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
34407 l_bflow_applied_to_amt NUMBER; -- 5132302
34408 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
34409
34410 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
34411
34412 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
34413 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
34414
34415 ---------------------------------------------------------------------------------------------------------------
34416
34417
34418 --
34419 -- bulk performance
34420 --
34421 l_balance_type_code VARCHAR2(1);
34422 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
34423 l_log_module VARCHAR2(240);
34424
34425 --
34426 -- Upgrade strategy
34427 --
34428 l_actual_upg_option VARCHAR2(1);
34429 l_enc_upg_option VARCHAR2(1);
34430
34431 --
34432 BEGIN
34433 --
34434 IF g_log_enabled THEN
34435 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_65';
34436 END IF;
34437 --
34438 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
34439
34440 trace
34441 (p_msg => 'BEGIN of AcctLineType_65'
34442 ,p_level => C_LEVEL_PROCEDURE
34443 ,p_module => l_log_module);
34444
34445 END IF;
34446 --
34447 l_component_type := 'AMB_JLT';
34448 l_component_code := 'INTERORG_FREIGHT_CHARGE';
34449 l_component_type_code := 'S';
34450 l_component_appl_id := 707;
34451 l_amb_context_code := 'DEFAULT';
34452 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
34453 l_event_class_code := 'FOB_SHIP_RECIPIENT_SHIP';
34454 l_event_type_code := 'FOB_SHIP_RECIPIENT_SHIP_ALL';
34455 l_line_definition_owner_code := 'S';
34456 l_line_definition_code := 'FOB_SHIP_RECIPIENT_SHIP';
34457 --
34458 l_balance_type_code := 'A';
34459 l_segment := NULL;
34460 l_ccid := NULL;
34461 l_adr_transaction_coa_id := NULL;
34462 l_adr_accounting_coa_id := NULL;
34463 l_adr_flexfield_segment_code := NULL;
34464 l_adr_flex_value_set_id := NULL;
34465 l_adr_value_type_code := NULL;
34466 l_adr_value_combination_id := NULL;
34467 l_adr_value_segment_code := NULL;
34468
34469 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
34470 l_bflow_class_code := ''; -- 4219869 Business Flow
34471 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
34472 l_budgetary_control_flag := 'N';
34473
34474 l_bflow_applied_to_amt_idx := NULL; -- 5132302
34475 l_bflow_applied_to_amt := NULL; -- 5132302
34476 l_entered_amt_idx := NULL; -- 4262811
34477 l_accted_amt_idx := NULL; -- 4262811
34478 l_acc_rev_flag := NULL; -- 4262811
34479 l_accrual_line_num := NULL; -- 4262811
34480 l_tmp_amt := NULL; -- 4262811
34481 --
34482
34483 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
34484 l_balance_type_code <> 'B' THEN
34485 IF NVL(p_source_24,9E125) = 12
34486 THEN
34487
34488 --
34489 XLA_AE_LINES_PKG.SetNewLine;
34490
34491 p_balance_type_code := l_balance_type_code;
34492 -- set the flag so later we will know whether the gain loss line needs to be created
34493
34494 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
34495 p_actual_flag :='A';
34496 END IF;
34497
34498 --
34499 -- bulk performance
34500 --
34501 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
34502 p_header_num => 0); -- 4262811
34503 --
34504 -- set accounting line options
34505 --
34506 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
34507 p_natural_side_code => 'D'
34508 , p_gain_or_loss_flag => 'N'
34509 , p_gl_transfer_mode_code => 'S'
34510 , p_acct_entry_type_code => 'A'
34511 , p_switch_side_flag => 'Y'
34512 , p_merge_duplicate_code => 'N'
34513 );
34514 --
34515 l_acc_rev_natural_side_code := 'C'; -- 4262811
34516 --
34517 --
34518 -- set accounting line type info
34519 --
34520 xla_ae_lines_pkg.SetAcctLineType
34521 (p_component_type => l_component_type
34522 ,p_event_type_code => l_event_type_code
34523 ,p_line_definition_owner_code => l_line_definition_owner_code
34524 ,p_line_definition_code => l_line_definition_code
34525 ,p_accounting_line_code => l_component_code
34526 ,p_accounting_line_type_code => l_component_type_code
34527 ,p_accounting_line_appl_id => l_component_appl_id
34528 ,p_amb_context_code => l_amb_context_code
34529 ,p_entity_code => l_entity_code
34530 ,p_event_class_code => l_event_class_code);
34531 --
34532 -- set accounting class
34533 --
34534 xla_ae_lines_pkg.SetAcctClass(
34535 p_accounting_class_code => 'INTERORG_FREIGHT_CHARGE'
34536 , p_ae_header_id => l_ae_header_id
34537 );
34538
34539 --
34540 -- set rounding class
34541 --
34542 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
34543 'INTERORG_FREIGHT_CHARGE';
34544
34545 --
34546 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
34547 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
34548 --
34549 -- bulk performance
34550 --
34551 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
34552
34553 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
34554 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
34555
34556 -- 4955764
34557 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
34558 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
34559
34560 -- 4458381 Public Sector Enh
34561
34562 --
34563 -- set accounting attributes for the line type
34564 --
34565 l_entered_amt_idx := 3;
34566 l_accted_amt_idx := 8;
34567 l_bflow_applied_to_amt_idx := NULL; -- 5132302
34568 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
34569 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
34570 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
34571 l_rec_acct_attrs.array_char_value(2) := p_source_12;
34572 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
34573 l_rec_acct_attrs.array_num_value(3) := p_source_18;
34574 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
34575 l_rec_acct_attrs.array_char_value(4) := p_source_15;
34576 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
34577 l_rec_acct_attrs.array_date_value(5) := p_source_19;
34578 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
34579 l_rec_acct_attrs.array_num_value(6) := p_source_20;
34580 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
34581 l_rec_acct_attrs.array_char_value(7) := p_source_21;
34582 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
34583 l_rec_acct_attrs.array_num_value(8) := p_source_22;
34584
34585 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
34586 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
34587
34588 ---------------------------------------------------------------------------------------------------------------
34589 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
34590 ---------------------------------------------------------------------------------------------------------------
34591 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
34592
34593 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
34594 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
34595
34596 IF xla_accounting_cache_pkg.GetValueChar
34597 (p_source_code => 'LEDGER_CATEGORY_CODE'
34598 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
34599 AND l_bflow_method_code = 'PRIOR_ENTRY'
34600 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
34601 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
34602 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
34603 )
34604 THEN
34605 xla_ae_lines_pkg.BflowUpgEntry
34606 (p_business_method_code => l_bflow_method_code
34607 ,p_business_class_code => l_bflow_class_code
34608 ,p_balance_type => l_balance_type_code);
34609 ELSE
34610 NULL;
34611 -- No business flow processing for business flow method of NONE.
34612 END IF;
34613
34614 --
34615 -- call analytical criteria
34616 --
34617
34618 --
34619 -- call description
34620 --
34621 -- No description or it is inherited.
34622 --
34623 -- call ADRs
34624 -- Bug 4922099
34625 --
34626 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
34627 (NVL(l_actual_upg_option, 'N') = 'O') OR
34628 (NVL(l_enc_upg_option, 'N') = 'O')
34629 )
34630 THEN
34631 NULL;
34632 --
34633 --
34634
34635 l_ccid := AcctDerRule_4(
34636 p_application_id => p_application_id
34637 , p_ae_header_id => l_ae_header_id
34638 , p_source_4 => p_source_4
34639 , x_transaction_coa_id => l_adr_transaction_coa_id
34640 , x_accounting_coa_id => l_adr_accounting_coa_id
34641 , x_value_type_code => l_adr_value_type_code
34642 , p_side => 'NA'
34643 );
34644
34645 xla_ae_lines_pkg.set_ccid(
34646 p_code_combination_id => l_ccid
34647 , p_value_type_code => l_adr_value_type_code
34648 , p_transaction_coa_id => l_adr_transaction_coa_id
34649 , p_accounting_coa_id => l_adr_accounting_coa_id
34650 , p_adr_code => 'CST_DEFAULT'
34651 , p_adr_type_code => 'S'
34652 , p_component_type => l_component_type
34653 , p_component_code => l_component_code
34654 , p_component_type_code => l_component_type_code
34655 , p_component_appl_id => l_component_appl_id
34656 , p_amb_context_code => l_amb_context_code
34657 , p_side => 'NA'
34658 );
34659
34660
34661 --
34662 --
34663 END IF;
34664 --
34665 -- Bug 4922099
34666 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
34667 (NVL(l_enc_upg_option, 'N') = 'O')
34668 ) AND
34669 (l_bflow_method_code = 'PRIOR_ENTRY')
34670 )
34671 THEN
34672 IF
34673 --
34674 1 = 2
34675 --
34676 THEN
34677 xla_accounting_err_pkg.build_message
34678 (p_appli_s_name => 'XLA'
34679 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
34680 ,p_token_1 => 'LINE_NUMBER'
34681 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
34682 ,p_token_2 => 'LINE_TYPE_NAME'
34683 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
34684 l_component_type
34685 ,l_component_code
34686 ,l_component_type_code
34687 ,l_component_appl_id
34688 ,l_amb_context_code
34689 ,l_entity_code
34690 ,l_event_class_code
34691 )
34692 ,p_token_3 => 'OWNER'
34693 ,p_value_3 => xla_lookups_pkg.get_meaning(
34694 p_lookup_type => 'XLA_OWNER_TYPE'
34695 ,p_lookup_code => l_component_type_code
34696 )
34697 ,p_token_4 => 'PRODUCT_NAME'
34698 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
34699 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
34700 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
34701 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
34702 ,p_ae_header_id => NULL
34703 );
34704
34705 IF (C_LEVEL_ERROR>= g_log_level) THEN
34706 trace
34707 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
34708 ,p_level => C_LEVEL_ERROR
34709 ,p_module => l_log_module);
34710 END IF;
34711 END IF;
34712 END IF;
34713 --
34714 --
34715 ------------------------------------------------------------------------------------------------
34716 -- 4219869 Business Flow
34717 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
34718 -- Prior Entry. Currently, the following code is always generated.
34719 ------------------------------------------------------------------------------------------------
34720 XLA_AE_LINES_PKG.ValidateCurrentLine;
34721
34722 ------------------------------------------------------------------------------------
34723 -- 4219869 Business Flow
34724 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
34725 ------------------------------------------------------------------------------------
34726 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
34727
34728 ----------------------------------------------------------------------------------
34729 -- 4219869 Business Flow
34730 -- Update journal entry status -- Need to generate this within IF <condition>
34731 ----------------------------------------------------------------------------------
34732 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
34733 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
34734 ,p_balance_type_code => l_balance_type_code
34735 );
34736
34737 -------------------------------------------------------------------------------------------
34738 -- 4262811 - Generate the Accrual Reversal lines
34739 -------------------------------------------------------------------------------------------
34740 BEGIN
34741 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
34742 (g_array_event(p_event_id).array_value_num('header_index'));
34743 IF l_acc_rev_flag IS NULL THEN
34744 l_acc_rev_flag := 'N';
34745 END IF;
34746 EXCEPTION
34747 WHEN OTHERS THEN
34748 l_acc_rev_flag := 'N';
34749 END;
34750 --
34751 IF (l_acc_rev_flag = 'Y') THEN
34752
34753 -- 4645092 ------------------------------------------------------------------------------
34754 -- To allow MPA report to determine if it should generate report process
34755 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
34756 ------------------------------------------------------------------------------------------
34757
34758 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
34759 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
34760 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
34761 -- call ADRs
34762 -- Bug 4922099
34763 --
34764 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
34765 (NVL(l_actual_upg_option, 'N') = 'O') OR
34766 (NVL(l_enc_upg_option, 'N') = 'O')
34767 )
34768 THEN
34769 NULL;
34770 --
34771 --
34772
34773 l_ccid := AcctDerRule_4(
34774 p_application_id => p_application_id
34775 , p_ae_header_id => l_ae_header_id
34776 , p_source_4 => p_source_4
34777 , x_transaction_coa_id => l_adr_transaction_coa_id
34778 , x_accounting_coa_id => l_adr_accounting_coa_id
34779 , x_value_type_code => l_adr_value_type_code
34780 , p_side => 'NA'
34781 );
34782
34783 xla_ae_lines_pkg.set_ccid(
34784 p_code_combination_id => l_ccid
34785 , p_value_type_code => l_adr_value_type_code
34786 , p_transaction_coa_id => l_adr_transaction_coa_id
34787 , p_accounting_coa_id => l_adr_accounting_coa_id
34788 , p_adr_code => 'CST_DEFAULT'
34789 , p_adr_type_code => 'S'
34790 , p_component_type => l_component_type
34791 , p_component_code => l_component_code
34792 , p_component_type_code => l_component_type_code
34793 , p_component_appl_id => l_component_appl_id
34794 , p_amb_context_code => l_amb_context_code
34795 , p_side => 'NA'
34796 );
34797
34798
34799 --
34800 --
34801 END IF;
34802
34803 --
34804 -- Update the line information that should be overwritten
34805 --
34806 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
34807 p_header_num => 1);
34808 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
34809
34810 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
34811
34812 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
34813 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
34814 END IF;
34815
34816 --
34817 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
34818 --
34819 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
34820 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
34821 ELSE
34822 ---------------------------------------------------------------------------------------------------
34823 -- 4262811a Switch Sign
34824 ---------------------------------------------------------------------------------------------------
34825 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
34826 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
34827 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
34828 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
34829 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
34830 -- 5132302
34831 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
34832 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
34833
34834 END IF;
34835
34836 -- 4955764
34837 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
34838 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
34839
34840
34841 XLA_AE_LINES_PKG.ValidateCurrentLine;
34842 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
34843
34844 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
34845 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
34846 ,p_balance_type_code => l_balance_type_code);
34847
34848 END IF;
34849
34850 -----------------------------------------------------------------------------------------
34851 -- 4262811 Multiperiod Accounting
34852 -----------------------------------------------------------------------------------------
34853 -- No MPA option is assigned.
34854
34855
34856 END IF;
34857 END IF;
34858 --
34859
34860 --
34861 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
34862 trace
34863 (p_msg => 'END of AcctLineType_65'
34864 ,p_level => C_LEVEL_PROCEDURE
34865 ,p_module => l_log_module);
34866 END IF;
34867 --
34868 EXCEPTION
34869 WHEN xla_exceptions_pkg.application_exception THEN
34870 RAISE;
34871 WHEN OTHERS THEN
34872 xla_exceptions_pkg.raise_message
34873 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_65');
34874 END AcctLineType_65;
34875 --
34876
34877 ---------------------------------------
34878 --
34879 -- PRIVATE FUNCTION
34880 -- AcctLineType_66
34881 --
34882 ---------------------------------------
34883 PROCEDURE AcctLineType_66 (
34884 p_application_id IN NUMBER
34885 ,p_event_id IN NUMBER
34886 ,p_calculate_acctd_flag IN VARCHAR2
34887 ,p_calculate_g_l_flag IN VARCHAR2
34888 ,p_actual_flag IN OUT VARCHAR2
34889 ,p_balance_type_code OUT VARCHAR2
34890 ,p_gain_or_loss_ref OUT VARCHAR2
34891
34892 --Cost Management Default Account
34893 , p_source_4 IN NUMBER
34894 --DISTRIBUTION_IDENTIFIER
34895 , p_source_11 IN NUMBER
34896 --Distribution Type
34897 , p_source_12 IN VARCHAR2
34898 , p_source_12_meaning IN VARCHAR2
34899 --Entered Currency Code
34900 , p_source_15 IN VARCHAR2
34901 --Entered Amount
34902 , p_source_18 IN NUMBER
34903 --Currency Conversion Date
34904 , p_source_19 IN DATE
34905 --Currency Conversion Rate
34906 , p_source_20 IN NUMBER
34907 --Currency Conversion Type
34908 , p_source_21 IN VARCHAR2
34909 --Accounted Amount
34910 , p_source_22 IN NUMBER
34911 --Accounting Line Type
34912 , p_source_24 IN NUMBER
34913 )
34914 IS
34915
34916 l_component_type VARCHAR2(80);
34917 l_component_code VARCHAR2(30);
34918 l_component_type_code VARCHAR2(1);
34919 l_component_appl_id INTEGER;
34920 l_amb_context_code VARCHAR2(30);
34921 l_entity_code VARCHAR2(30);
34922 l_event_class_code VARCHAR2(30);
34923 l_ae_header_id NUMBER;
34924 l_event_type_code VARCHAR2(30);
34925 l_line_definition_code VARCHAR2(30);
34926 l_line_definition_owner_code VARCHAR2(1);
34927 --
34928 -- adr variables
34929 l_segment VARCHAR2(30);
34930 l_ccid NUMBER;
34931 l_adr_transaction_coa_id NUMBER;
34932 l_adr_accounting_coa_id NUMBER;
34933 l_adr_flexfield_segment_code VARCHAR2(30);
34934 l_adr_flex_value_set_id NUMBER;
34935 l_adr_value_type_code VARCHAR2(30);
34936 l_adr_value_combination_id NUMBER;
34937 l_adr_value_segment_code VARCHAR2(30);
34938
34939 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
34940 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
34941 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
34942 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
34943
34944 -- 4262811 Variables ------------------------------------------------------------------------------------------
34945 l_entered_amt_idx NUMBER;
34946 l_accted_amt_idx NUMBER;
34947 l_acc_rev_flag VARCHAR2(1);
34948 l_accrual_line_num NUMBER;
34949 l_tmp_amt NUMBER;
34950 l_acc_rev_natural_side_code VARCHAR2(1);
34951
34952 l_num_entries NUMBER;
34953 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
34954 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
34955 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
34956 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
34957 l_recog_line_1 NUMBER;
34958 l_recog_line_2 NUMBER;
34959
34960 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
34961 l_bflow_applied_to_amt NUMBER; -- 5132302
34962 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
34963
34964 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
34965
34966 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
34967 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
34968
34969 ---------------------------------------------------------------------------------------------------------------
34970
34971
34972 --
34973 -- bulk performance
34974 --
34975 l_balance_type_code VARCHAR2(1);
34976 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
34977 l_log_module VARCHAR2(240);
34978
34979 --
34980 -- Upgrade strategy
34981 --
34982 l_actual_upg_option VARCHAR2(1);
34983 l_enc_upg_option VARCHAR2(1);
34984
34985 --
34986 BEGIN
34987 --
34988 IF g_log_enabled THEN
34989 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_66';
34990 END IF;
34991 --
34992 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
34993
34994 trace
34995 (p_msg => 'BEGIN of AcctLineType_66'
34996 ,p_level => C_LEVEL_PROCEDURE
34997 ,p_module => l_log_module);
34998
34999 END IF;
35000 --
35001 l_component_type := 'AMB_JLT';
35002 l_component_code := 'INTERORG_FREIGHT_CHARGE';
35003 l_component_type_code := 'S';
35004 l_component_appl_id := 707;
35005 l_amb_context_code := 'DEFAULT';
35006 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
35007 l_event_class_code := 'USER_DEFINE';
35008 l_event_type_code := 'UFOB_SHIP_RECIPIENT_SHIP_TP';
35009 l_line_definition_owner_code := 'S';
35010 l_line_definition_code := 'USER_FOB_SHIP_RECP_SHIP_TP';
35011 --
35012 l_balance_type_code := 'A';
35013 l_segment := NULL;
35014 l_ccid := NULL;
35015 l_adr_transaction_coa_id := NULL;
35016 l_adr_accounting_coa_id := NULL;
35017 l_adr_flexfield_segment_code := NULL;
35018 l_adr_flex_value_set_id := NULL;
35019 l_adr_value_type_code := NULL;
35020 l_adr_value_combination_id := NULL;
35021 l_adr_value_segment_code := NULL;
35022
35023 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
35024 l_bflow_class_code := ''; -- 4219869 Business Flow
35025 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
35026 l_budgetary_control_flag := 'N';
35027
35028 l_bflow_applied_to_amt_idx := NULL; -- 5132302
35029 l_bflow_applied_to_amt := NULL; -- 5132302
35030 l_entered_amt_idx := NULL; -- 4262811
35031 l_accted_amt_idx := NULL; -- 4262811
35032 l_acc_rev_flag := NULL; -- 4262811
35033 l_accrual_line_num := NULL; -- 4262811
35034 l_tmp_amt := NULL; -- 4262811
35035 --
35036
35037 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
35038 l_balance_type_code <> 'B' THEN
35039 IF NVL(p_source_24,9E125) = 12
35040 THEN
35041
35042 --
35043 XLA_AE_LINES_PKG.SetNewLine;
35044
35045 p_balance_type_code := l_balance_type_code;
35046 -- set the flag so later we will know whether the gain loss line needs to be created
35047
35048 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
35049 p_actual_flag :='A';
35050 END IF;
35051
35052 --
35053 -- bulk performance
35054 --
35055 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
35056 p_header_num => 0); -- 4262811
35057 --
35058 -- set accounting line options
35059 --
35060 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
35061 p_natural_side_code => 'D'
35062 , p_gain_or_loss_flag => 'N'
35063 , p_gl_transfer_mode_code => 'S'
35064 , p_acct_entry_type_code => 'A'
35065 , p_switch_side_flag => 'Y'
35066 , p_merge_duplicate_code => 'N'
35067 );
35068 --
35069 l_acc_rev_natural_side_code := 'C'; -- 4262811
35070 --
35071 --
35072 -- set accounting line type info
35073 --
35074 xla_ae_lines_pkg.SetAcctLineType
35075 (p_component_type => l_component_type
35076 ,p_event_type_code => l_event_type_code
35077 ,p_line_definition_owner_code => l_line_definition_owner_code
35078 ,p_line_definition_code => l_line_definition_code
35079 ,p_accounting_line_code => l_component_code
35080 ,p_accounting_line_type_code => l_component_type_code
35081 ,p_accounting_line_appl_id => l_component_appl_id
35082 ,p_amb_context_code => l_amb_context_code
35083 ,p_entity_code => l_entity_code
35084 ,p_event_class_code => l_event_class_code);
35085 --
35086 -- set accounting class
35087 --
35088 xla_ae_lines_pkg.SetAcctClass(
35089 p_accounting_class_code => 'INTERORG_FREIGHT_CHARGE'
35090 , p_ae_header_id => l_ae_header_id
35091 );
35092
35093 --
35094 -- set rounding class
35095 --
35096 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
35097 'INTERORG_FREIGHT_CHARGE';
35098
35099 --
35100 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
35101 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
35102 --
35103 -- bulk performance
35104 --
35105 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
35106
35107 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
35108 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
35109
35110 -- 4955764
35111 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
35112 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
35113
35114 -- 4458381 Public Sector Enh
35115
35116 --
35117 -- set accounting attributes for the line type
35118 --
35119 l_entered_amt_idx := 3;
35120 l_accted_amt_idx := 8;
35121 l_bflow_applied_to_amt_idx := NULL; -- 5132302
35122 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
35123 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
35124 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
35125 l_rec_acct_attrs.array_char_value(2) := p_source_12;
35126 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
35127 l_rec_acct_attrs.array_num_value(3) := p_source_18;
35128 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
35129 l_rec_acct_attrs.array_char_value(4) := p_source_15;
35130 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
35131 l_rec_acct_attrs.array_date_value(5) := p_source_19;
35132 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
35133 l_rec_acct_attrs.array_num_value(6) := p_source_20;
35134 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
35135 l_rec_acct_attrs.array_char_value(7) := p_source_21;
35136 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
35137 l_rec_acct_attrs.array_num_value(8) := p_source_22;
35138
35139 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
35140 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
35141
35142 ---------------------------------------------------------------------------------------------------------------
35143 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
35144 ---------------------------------------------------------------------------------------------------------------
35145 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
35146
35147 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
35148 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
35149
35150 IF xla_accounting_cache_pkg.GetValueChar
35151 (p_source_code => 'LEDGER_CATEGORY_CODE'
35152 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
35153 AND l_bflow_method_code = 'PRIOR_ENTRY'
35154 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
35155 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
35156 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
35157 )
35158 THEN
35159 xla_ae_lines_pkg.BflowUpgEntry
35160 (p_business_method_code => l_bflow_method_code
35161 ,p_business_class_code => l_bflow_class_code
35162 ,p_balance_type => l_balance_type_code);
35163 ELSE
35164 NULL;
35165 -- No business flow processing for business flow method of NONE.
35166 END IF;
35167
35168 --
35169 -- call analytical criteria
35170 --
35171
35172 --
35173 -- call description
35174 --
35175 -- No description or it is inherited.
35176 --
35177 -- call ADRs
35178 -- Bug 4922099
35179 --
35180 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
35181 (NVL(l_actual_upg_option, 'N') = 'O') OR
35182 (NVL(l_enc_upg_option, 'N') = 'O')
35183 )
35184 THEN
35185 NULL;
35186 --
35187 --
35188
35189 l_ccid := AcctDerRule_4(
35190 p_application_id => p_application_id
35191 , p_ae_header_id => l_ae_header_id
35192 , p_source_4 => p_source_4
35193 , x_transaction_coa_id => l_adr_transaction_coa_id
35194 , x_accounting_coa_id => l_adr_accounting_coa_id
35195 , x_value_type_code => l_adr_value_type_code
35196 , p_side => 'NA'
35197 );
35198
35199 xla_ae_lines_pkg.set_ccid(
35200 p_code_combination_id => l_ccid
35201 , p_value_type_code => l_adr_value_type_code
35202 , p_transaction_coa_id => l_adr_transaction_coa_id
35203 , p_accounting_coa_id => l_adr_accounting_coa_id
35204 , p_adr_code => 'CST_DEFAULT'
35205 , p_adr_type_code => 'S'
35206 , p_component_type => l_component_type
35207 , p_component_code => l_component_code
35208 , p_component_type_code => l_component_type_code
35209 , p_component_appl_id => l_component_appl_id
35210 , p_amb_context_code => l_amb_context_code
35211 , p_side => 'NA'
35212 );
35213
35214
35215 --
35216 --
35217 END IF;
35218 --
35219 -- Bug 4922099
35220 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
35221 (NVL(l_enc_upg_option, 'N') = 'O')
35222 ) AND
35223 (l_bflow_method_code = 'PRIOR_ENTRY')
35224 )
35225 THEN
35226 IF
35227 --
35228 1 = 2
35229 --
35230 THEN
35231 xla_accounting_err_pkg.build_message
35232 (p_appli_s_name => 'XLA'
35233 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
35234 ,p_token_1 => 'LINE_NUMBER'
35235 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
35236 ,p_token_2 => 'LINE_TYPE_NAME'
35237 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
35238 l_component_type
35239 ,l_component_code
35240 ,l_component_type_code
35241 ,l_component_appl_id
35242 ,l_amb_context_code
35243 ,l_entity_code
35244 ,l_event_class_code
35245 )
35246 ,p_token_3 => 'OWNER'
35247 ,p_value_3 => xla_lookups_pkg.get_meaning(
35248 p_lookup_type => 'XLA_OWNER_TYPE'
35249 ,p_lookup_code => l_component_type_code
35250 )
35251 ,p_token_4 => 'PRODUCT_NAME'
35252 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
35253 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
35254 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
35255 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
35256 ,p_ae_header_id => NULL
35257 );
35258
35259 IF (C_LEVEL_ERROR>= g_log_level) THEN
35260 trace
35261 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
35262 ,p_level => C_LEVEL_ERROR
35263 ,p_module => l_log_module);
35264 END IF;
35265 END IF;
35266 END IF;
35267 --
35268 --
35269 ------------------------------------------------------------------------------------------------
35270 -- 4219869 Business Flow
35271 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
35272 -- Prior Entry. Currently, the following code is always generated.
35273 ------------------------------------------------------------------------------------------------
35274 XLA_AE_LINES_PKG.ValidateCurrentLine;
35275
35276 ------------------------------------------------------------------------------------
35277 -- 4219869 Business Flow
35278 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
35279 ------------------------------------------------------------------------------------
35280 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
35281
35282 ----------------------------------------------------------------------------------
35283 -- 4219869 Business Flow
35284 -- Update journal entry status -- Need to generate this within IF <condition>
35285 ----------------------------------------------------------------------------------
35286 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
35287 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
35288 ,p_balance_type_code => l_balance_type_code
35289 );
35290
35291 -------------------------------------------------------------------------------------------
35292 -- 4262811 - Generate the Accrual Reversal lines
35293 -------------------------------------------------------------------------------------------
35294 BEGIN
35295 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
35296 (g_array_event(p_event_id).array_value_num('header_index'));
35297 IF l_acc_rev_flag IS NULL THEN
35298 l_acc_rev_flag := 'N';
35299 END IF;
35300 EXCEPTION
35301 WHEN OTHERS THEN
35302 l_acc_rev_flag := 'N';
35303 END;
35304 --
35305 IF (l_acc_rev_flag = 'Y') THEN
35306
35307 -- 4645092 ------------------------------------------------------------------------------
35308 -- To allow MPA report to determine if it should generate report process
35309 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
35310 ------------------------------------------------------------------------------------------
35311
35312 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
35313 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
35314 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
35315 -- call ADRs
35316 -- Bug 4922099
35317 --
35318 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
35319 (NVL(l_actual_upg_option, 'N') = 'O') OR
35320 (NVL(l_enc_upg_option, 'N') = 'O')
35321 )
35322 THEN
35323 NULL;
35324 --
35325 --
35326
35327 l_ccid := AcctDerRule_4(
35328 p_application_id => p_application_id
35329 , p_ae_header_id => l_ae_header_id
35330 , p_source_4 => p_source_4
35331 , x_transaction_coa_id => l_adr_transaction_coa_id
35332 , x_accounting_coa_id => l_adr_accounting_coa_id
35333 , x_value_type_code => l_adr_value_type_code
35334 , p_side => 'NA'
35335 );
35336
35337 xla_ae_lines_pkg.set_ccid(
35338 p_code_combination_id => l_ccid
35339 , p_value_type_code => l_adr_value_type_code
35340 , p_transaction_coa_id => l_adr_transaction_coa_id
35341 , p_accounting_coa_id => l_adr_accounting_coa_id
35342 , p_adr_code => 'CST_DEFAULT'
35343 , p_adr_type_code => 'S'
35344 , p_component_type => l_component_type
35345 , p_component_code => l_component_code
35346 , p_component_type_code => l_component_type_code
35347 , p_component_appl_id => l_component_appl_id
35348 , p_amb_context_code => l_amb_context_code
35349 , p_side => 'NA'
35350 );
35351
35352
35353 --
35354 --
35355 END IF;
35356
35357 --
35358 -- Update the line information that should be overwritten
35359 --
35360 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
35361 p_header_num => 1);
35362 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
35363
35364 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
35365
35366 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
35367 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
35368 END IF;
35369
35370 --
35371 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
35372 --
35373 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
35374 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
35375 ELSE
35376 ---------------------------------------------------------------------------------------------------
35377 -- 4262811a Switch Sign
35378 ---------------------------------------------------------------------------------------------------
35379 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
35380 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
35381 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
35382 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
35383 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
35384 -- 5132302
35385 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
35386 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
35387
35388 END IF;
35389
35390 -- 4955764
35391 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
35392 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
35393
35394
35395 XLA_AE_LINES_PKG.ValidateCurrentLine;
35396 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
35397
35398 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
35399 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
35400 ,p_balance_type_code => l_balance_type_code);
35401
35402 END IF;
35403
35404 -----------------------------------------------------------------------------------------
35405 -- 4262811 Multiperiod Accounting
35406 -----------------------------------------------------------------------------------------
35407 -- No MPA option is assigned.
35408
35409
35410 END IF;
35411 END IF;
35412 --
35413
35414 --
35415 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
35416 trace
35417 (p_msg => 'END of AcctLineType_66'
35418 ,p_level => C_LEVEL_PROCEDURE
35419 ,p_module => l_log_module);
35420 END IF;
35421 --
35422 EXCEPTION
35423 WHEN xla_exceptions_pkg.application_exception THEN
35424 RAISE;
35425 WHEN OTHERS THEN
35426 xla_exceptions_pkg.raise_message
35427 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_66');
35428 END AcctLineType_66;
35429 --
35430
35431 ---------------------------------------
35432 --
35433 -- PRIVATE FUNCTION
35434 -- AcctLineType_67
35435 --
35436 ---------------------------------------
35437 PROCEDURE AcctLineType_67 (
35438 p_application_id IN NUMBER
35439 ,p_event_id IN NUMBER
35440 ,p_calculate_acctd_flag IN VARCHAR2
35441 ,p_calculate_g_l_flag IN VARCHAR2
35442 ,p_actual_flag IN OUT VARCHAR2
35443 ,p_balance_type_code OUT VARCHAR2
35444 ,p_gain_or_loss_ref OUT VARCHAR2
35445
35446 --Cost Management Default Account
35447 , p_source_4 IN NUMBER
35448 --DISTRIBUTION_IDENTIFIER
35449 , p_source_11 IN NUMBER
35450 --Distribution Type
35451 , p_source_12 IN VARCHAR2
35452 , p_source_12_meaning IN VARCHAR2
35453 --Entered Currency Code
35454 , p_source_15 IN VARCHAR2
35455 --Entered Amount
35456 , p_source_18 IN NUMBER
35457 --Currency Conversion Date
35458 , p_source_19 IN DATE
35459 --Currency Conversion Rate
35460 , p_source_20 IN NUMBER
35461 --Currency Conversion Type
35462 , p_source_21 IN VARCHAR2
35463 --Accounted Amount
35464 , p_source_22 IN NUMBER
35465 --Accounting Line Type
35466 , p_source_24 IN NUMBER
35467 )
35468 IS
35469
35470 l_component_type VARCHAR2(80);
35471 l_component_code VARCHAR2(30);
35472 l_component_type_code VARCHAR2(1);
35473 l_component_appl_id INTEGER;
35474 l_amb_context_code VARCHAR2(30);
35475 l_entity_code VARCHAR2(30);
35476 l_event_class_code VARCHAR2(30);
35477 l_ae_header_id NUMBER;
35478 l_event_type_code VARCHAR2(30);
35479 l_line_definition_code VARCHAR2(30);
35480 l_line_definition_owner_code VARCHAR2(1);
35481 --
35482 -- adr variables
35483 l_segment VARCHAR2(30);
35484 l_ccid NUMBER;
35485 l_adr_transaction_coa_id NUMBER;
35486 l_adr_accounting_coa_id NUMBER;
35487 l_adr_flexfield_segment_code VARCHAR2(30);
35488 l_adr_flex_value_set_id NUMBER;
35489 l_adr_value_type_code VARCHAR2(30);
35490 l_adr_value_combination_id NUMBER;
35491 l_adr_value_segment_code VARCHAR2(30);
35492
35493 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
35494 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
35495 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
35496 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
35497
35498 -- 4262811 Variables ------------------------------------------------------------------------------------------
35499 l_entered_amt_idx NUMBER;
35500 l_accted_amt_idx NUMBER;
35501 l_acc_rev_flag VARCHAR2(1);
35502 l_accrual_line_num NUMBER;
35503 l_tmp_amt NUMBER;
35504 l_acc_rev_natural_side_code VARCHAR2(1);
35505
35506 l_num_entries NUMBER;
35507 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
35508 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
35509 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
35510 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
35511 l_recog_line_1 NUMBER;
35512 l_recog_line_2 NUMBER;
35513
35514 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
35515 l_bflow_applied_to_amt NUMBER; -- 5132302
35516 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
35517
35518 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
35519
35520 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
35521 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
35522
35523 ---------------------------------------------------------------------------------------------------------------
35524
35525
35526 --
35527 -- bulk performance
35528 --
35529 l_balance_type_code VARCHAR2(1);
35530 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
35531 l_log_module VARCHAR2(240);
35532
35533 --
35534 -- Upgrade strategy
35535 --
35536 l_actual_upg_option VARCHAR2(1);
35537 l_enc_upg_option VARCHAR2(1);
35538
35539 --
35540 BEGIN
35541 --
35542 IF g_log_enabled THEN
35543 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_67';
35544 END IF;
35545 --
35546 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
35547
35548 trace
35549 (p_msg => 'BEGIN of AcctLineType_67'
35550 ,p_level => C_LEVEL_PROCEDURE
35551 ,p_module => l_log_module);
35552
35553 END IF;
35554 --
35555 l_component_type := 'AMB_JLT';
35556 l_component_code := 'INTERORG_FREIGHT_CHARGE';
35557 l_component_type_code := 'S';
35558 l_component_appl_id := 707;
35559 l_amb_context_code := 'DEFAULT';
35560 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
35561 l_event_class_code := 'USER_DEFINE';
35562 l_event_type_code := 'UDIR_INTERORG_SHIP_TP';
35563 l_line_definition_owner_code := 'S';
35564 l_line_definition_code := 'USER_DIR_INTERORG_SHIP_TP';
35565 --
35566 l_balance_type_code := 'A';
35567 l_segment := NULL;
35568 l_ccid := NULL;
35569 l_adr_transaction_coa_id := NULL;
35570 l_adr_accounting_coa_id := NULL;
35571 l_adr_flexfield_segment_code := NULL;
35572 l_adr_flex_value_set_id := NULL;
35573 l_adr_value_type_code := NULL;
35574 l_adr_value_combination_id := NULL;
35575 l_adr_value_segment_code := NULL;
35576
35577 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
35578 l_bflow_class_code := ''; -- 4219869 Business Flow
35579 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
35580 l_budgetary_control_flag := 'N';
35581
35582 l_bflow_applied_to_amt_idx := NULL; -- 5132302
35583 l_bflow_applied_to_amt := NULL; -- 5132302
35584 l_entered_amt_idx := NULL; -- 4262811
35585 l_accted_amt_idx := NULL; -- 4262811
35586 l_acc_rev_flag := NULL; -- 4262811
35587 l_accrual_line_num := NULL; -- 4262811
35588 l_tmp_amt := NULL; -- 4262811
35589 --
35590
35591 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
35592 l_balance_type_code <> 'B' THEN
35593 IF NVL(p_source_24,9E125) = 12
35594 THEN
35595
35596 --
35597 XLA_AE_LINES_PKG.SetNewLine;
35598
35599 p_balance_type_code := l_balance_type_code;
35600 -- set the flag so later we will know whether the gain loss line needs to be created
35601
35602 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
35603 p_actual_flag :='A';
35604 END IF;
35605
35606 --
35607 -- bulk performance
35608 --
35609 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
35610 p_header_num => 0); -- 4262811
35611 --
35612 -- set accounting line options
35613 --
35614 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
35615 p_natural_side_code => 'D'
35616 , p_gain_or_loss_flag => 'N'
35617 , p_gl_transfer_mode_code => 'S'
35618 , p_acct_entry_type_code => 'A'
35619 , p_switch_side_flag => 'Y'
35620 , p_merge_duplicate_code => 'N'
35621 );
35622 --
35623 l_acc_rev_natural_side_code := 'C'; -- 4262811
35624 --
35625 --
35626 -- set accounting line type info
35627 --
35628 xla_ae_lines_pkg.SetAcctLineType
35629 (p_component_type => l_component_type
35630 ,p_event_type_code => l_event_type_code
35631 ,p_line_definition_owner_code => l_line_definition_owner_code
35632 ,p_line_definition_code => l_line_definition_code
35633 ,p_accounting_line_code => l_component_code
35634 ,p_accounting_line_type_code => l_component_type_code
35635 ,p_accounting_line_appl_id => l_component_appl_id
35636 ,p_amb_context_code => l_amb_context_code
35637 ,p_entity_code => l_entity_code
35638 ,p_event_class_code => l_event_class_code);
35639 --
35640 -- set accounting class
35641 --
35642 xla_ae_lines_pkg.SetAcctClass(
35643 p_accounting_class_code => 'INTERORG_FREIGHT_CHARGE'
35644 , p_ae_header_id => l_ae_header_id
35645 );
35646
35647 --
35648 -- set rounding class
35649 --
35650 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
35651 'INTERORG_FREIGHT_CHARGE';
35652
35653 --
35654 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
35655 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
35656 --
35657 -- bulk performance
35658 --
35659 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
35660
35661 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
35662 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
35663
35664 -- 4955764
35665 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
35666 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
35667
35668 -- 4458381 Public Sector Enh
35669
35670 --
35671 -- set accounting attributes for the line type
35672 --
35673 l_entered_amt_idx := 3;
35674 l_accted_amt_idx := 8;
35675 l_bflow_applied_to_amt_idx := NULL; -- 5132302
35676 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
35677 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
35678 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
35679 l_rec_acct_attrs.array_char_value(2) := p_source_12;
35680 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
35681 l_rec_acct_attrs.array_num_value(3) := p_source_18;
35682 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
35683 l_rec_acct_attrs.array_char_value(4) := p_source_15;
35684 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
35685 l_rec_acct_attrs.array_date_value(5) := p_source_19;
35686 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
35687 l_rec_acct_attrs.array_num_value(6) := p_source_20;
35688 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
35689 l_rec_acct_attrs.array_char_value(7) := p_source_21;
35690 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
35691 l_rec_acct_attrs.array_num_value(8) := p_source_22;
35692
35693 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
35694 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
35695
35696 ---------------------------------------------------------------------------------------------------------------
35697 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
35698 ---------------------------------------------------------------------------------------------------------------
35699 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
35700
35701 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
35702 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
35703
35704 IF xla_accounting_cache_pkg.GetValueChar
35705 (p_source_code => 'LEDGER_CATEGORY_CODE'
35706 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
35707 AND l_bflow_method_code = 'PRIOR_ENTRY'
35708 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
35709 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
35710 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
35711 )
35712 THEN
35713 xla_ae_lines_pkg.BflowUpgEntry
35714 (p_business_method_code => l_bflow_method_code
35715 ,p_business_class_code => l_bflow_class_code
35716 ,p_balance_type => l_balance_type_code);
35717 ELSE
35718 NULL;
35719 -- No business flow processing for business flow method of NONE.
35720 END IF;
35721
35722 --
35723 -- call analytical criteria
35724 --
35725
35726 --
35727 -- call description
35728 --
35729 -- No description or it is inherited.
35730 --
35731 -- call ADRs
35732 -- Bug 4922099
35733 --
35734 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
35735 (NVL(l_actual_upg_option, 'N') = 'O') OR
35736 (NVL(l_enc_upg_option, 'N') = 'O')
35737 )
35738 THEN
35739 NULL;
35740 --
35741 --
35742
35743 l_ccid := AcctDerRule_4(
35744 p_application_id => p_application_id
35745 , p_ae_header_id => l_ae_header_id
35746 , p_source_4 => p_source_4
35747 , x_transaction_coa_id => l_adr_transaction_coa_id
35748 , x_accounting_coa_id => l_adr_accounting_coa_id
35749 , x_value_type_code => l_adr_value_type_code
35750 , p_side => 'NA'
35751 );
35752
35753 xla_ae_lines_pkg.set_ccid(
35754 p_code_combination_id => l_ccid
35755 , p_value_type_code => l_adr_value_type_code
35756 , p_transaction_coa_id => l_adr_transaction_coa_id
35757 , p_accounting_coa_id => l_adr_accounting_coa_id
35758 , p_adr_code => 'CST_DEFAULT'
35759 , p_adr_type_code => 'S'
35760 , p_component_type => l_component_type
35761 , p_component_code => l_component_code
35762 , p_component_type_code => l_component_type_code
35763 , p_component_appl_id => l_component_appl_id
35764 , p_amb_context_code => l_amb_context_code
35765 , p_side => 'NA'
35766 );
35767
35768
35769 --
35770 --
35771 END IF;
35772 --
35773 -- Bug 4922099
35774 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
35775 (NVL(l_enc_upg_option, 'N') = 'O')
35776 ) AND
35777 (l_bflow_method_code = 'PRIOR_ENTRY')
35778 )
35779 THEN
35780 IF
35781 --
35782 1 = 2
35783 --
35784 THEN
35785 xla_accounting_err_pkg.build_message
35786 (p_appli_s_name => 'XLA'
35787 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
35788 ,p_token_1 => 'LINE_NUMBER'
35789 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
35790 ,p_token_2 => 'LINE_TYPE_NAME'
35791 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
35792 l_component_type
35793 ,l_component_code
35794 ,l_component_type_code
35795 ,l_component_appl_id
35796 ,l_amb_context_code
35797 ,l_entity_code
35798 ,l_event_class_code
35799 )
35800 ,p_token_3 => 'OWNER'
35801 ,p_value_3 => xla_lookups_pkg.get_meaning(
35802 p_lookup_type => 'XLA_OWNER_TYPE'
35803 ,p_lookup_code => l_component_type_code
35804 )
35805 ,p_token_4 => 'PRODUCT_NAME'
35806 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
35807 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
35808 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
35809 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
35810 ,p_ae_header_id => NULL
35811 );
35812
35813 IF (C_LEVEL_ERROR>= g_log_level) THEN
35814 trace
35815 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
35816 ,p_level => C_LEVEL_ERROR
35817 ,p_module => l_log_module);
35818 END IF;
35819 END IF;
35820 END IF;
35821 --
35822 --
35823 ------------------------------------------------------------------------------------------------
35824 -- 4219869 Business Flow
35825 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
35826 -- Prior Entry. Currently, the following code is always generated.
35827 ------------------------------------------------------------------------------------------------
35828 XLA_AE_LINES_PKG.ValidateCurrentLine;
35829
35830 ------------------------------------------------------------------------------------
35831 -- 4219869 Business Flow
35832 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
35833 ------------------------------------------------------------------------------------
35834 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
35835
35836 ----------------------------------------------------------------------------------
35837 -- 4219869 Business Flow
35838 -- Update journal entry status -- Need to generate this within IF <condition>
35839 ----------------------------------------------------------------------------------
35840 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
35841 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
35842 ,p_balance_type_code => l_balance_type_code
35843 );
35844
35845 -------------------------------------------------------------------------------------------
35846 -- 4262811 - Generate the Accrual Reversal lines
35847 -------------------------------------------------------------------------------------------
35848 BEGIN
35849 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
35850 (g_array_event(p_event_id).array_value_num('header_index'));
35851 IF l_acc_rev_flag IS NULL THEN
35852 l_acc_rev_flag := 'N';
35853 END IF;
35854 EXCEPTION
35855 WHEN OTHERS THEN
35856 l_acc_rev_flag := 'N';
35857 END;
35858 --
35859 IF (l_acc_rev_flag = 'Y') THEN
35860
35861 -- 4645092 ------------------------------------------------------------------------------
35862 -- To allow MPA report to determine if it should generate report process
35863 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
35864 ------------------------------------------------------------------------------------------
35865
35866 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
35867 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
35868 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
35869 -- call ADRs
35870 -- Bug 4922099
35871 --
35872 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
35873 (NVL(l_actual_upg_option, 'N') = 'O') OR
35874 (NVL(l_enc_upg_option, 'N') = 'O')
35875 )
35876 THEN
35877 NULL;
35878 --
35879 --
35880
35881 l_ccid := AcctDerRule_4(
35882 p_application_id => p_application_id
35883 , p_ae_header_id => l_ae_header_id
35884 , p_source_4 => p_source_4
35885 , x_transaction_coa_id => l_adr_transaction_coa_id
35886 , x_accounting_coa_id => l_adr_accounting_coa_id
35887 , x_value_type_code => l_adr_value_type_code
35888 , p_side => 'NA'
35889 );
35890
35891 xla_ae_lines_pkg.set_ccid(
35892 p_code_combination_id => l_ccid
35893 , p_value_type_code => l_adr_value_type_code
35894 , p_transaction_coa_id => l_adr_transaction_coa_id
35895 , p_accounting_coa_id => l_adr_accounting_coa_id
35896 , p_adr_code => 'CST_DEFAULT'
35897 , p_adr_type_code => 'S'
35898 , p_component_type => l_component_type
35899 , p_component_code => l_component_code
35900 , p_component_type_code => l_component_type_code
35901 , p_component_appl_id => l_component_appl_id
35902 , p_amb_context_code => l_amb_context_code
35903 , p_side => 'NA'
35904 );
35905
35906
35907 --
35908 --
35909 END IF;
35910
35911 --
35912 -- Update the line information that should be overwritten
35913 --
35914 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
35915 p_header_num => 1);
35916 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
35917
35918 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
35919
35920 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
35921 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
35922 END IF;
35923
35924 --
35925 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
35926 --
35927 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
35928 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
35929 ELSE
35930 ---------------------------------------------------------------------------------------------------
35931 -- 4262811a Switch Sign
35932 ---------------------------------------------------------------------------------------------------
35933 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
35934 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
35935 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
35936 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
35937 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
35938 -- 5132302
35939 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
35940 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
35941
35942 END IF;
35943
35944 -- 4955764
35945 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
35946 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
35947
35948
35949 XLA_AE_LINES_PKG.ValidateCurrentLine;
35950 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
35951
35952 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
35953 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
35954 ,p_balance_type_code => l_balance_type_code);
35955
35956 END IF;
35957
35958 -----------------------------------------------------------------------------------------
35959 -- 4262811 Multiperiod Accounting
35960 -----------------------------------------------------------------------------------------
35961 -- No MPA option is assigned.
35962
35963
35964 END IF;
35965 END IF;
35966 --
35967
35968 --
35969 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
35970 trace
35971 (p_msg => 'END of AcctLineType_67'
35972 ,p_level => C_LEVEL_PROCEDURE
35973 ,p_module => l_log_module);
35974 END IF;
35975 --
35976 EXCEPTION
35977 WHEN xla_exceptions_pkg.application_exception THEN
35978 RAISE;
35979 WHEN OTHERS THEN
35980 xla_exceptions_pkg.raise_message
35981 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_67');
35982 END AcctLineType_67;
35983 --
35984
35985 ---------------------------------------
35986 --
35987 -- PRIVATE FUNCTION
35988 -- AcctLineType_68
35989 --
35990 ---------------------------------------
35991 PROCEDURE AcctLineType_68 (
35992 p_application_id IN NUMBER
35993 ,p_event_id IN NUMBER
35994 ,p_calculate_acctd_flag IN VARCHAR2
35995 ,p_calculate_g_l_flag IN VARCHAR2
35996 ,p_actual_flag IN OUT VARCHAR2
35997 ,p_balance_type_code OUT VARCHAR2
35998 ,p_gain_or_loss_ref OUT VARCHAR2
35999
36000 --Cost Management Default Account
36001 , p_source_4 IN NUMBER
36002 --DISTRIBUTION_IDENTIFIER
36003 , p_source_11 IN NUMBER
36004 --Distribution Type
36005 , p_source_12 IN VARCHAR2
36006 , p_source_12_meaning IN VARCHAR2
36007 --Entered Currency Code
36008 , p_source_15 IN VARCHAR2
36009 --Entered Amount
36010 , p_source_18 IN NUMBER
36011 --Currency Conversion Date
36012 , p_source_19 IN DATE
36013 --Currency Conversion Rate
36014 , p_source_20 IN NUMBER
36015 --Currency Conversion Type
36016 , p_source_21 IN VARCHAR2
36017 --Accounted Amount
36018 , p_source_22 IN NUMBER
36019 --Accounting Line Type
36020 , p_source_24 IN NUMBER
36021 )
36022 IS
36023
36024 l_component_type VARCHAR2(80);
36025 l_component_code VARCHAR2(30);
36026 l_component_type_code VARCHAR2(1);
36027 l_component_appl_id INTEGER;
36028 l_amb_context_code VARCHAR2(30);
36029 l_entity_code VARCHAR2(30);
36030 l_event_class_code VARCHAR2(30);
36031 l_ae_header_id NUMBER;
36032 l_event_type_code VARCHAR2(30);
36033 l_line_definition_code VARCHAR2(30);
36034 l_line_definition_owner_code VARCHAR2(1);
36035 --
36036 -- adr variables
36037 l_segment VARCHAR2(30);
36038 l_ccid NUMBER;
36039 l_adr_transaction_coa_id NUMBER;
36040 l_adr_accounting_coa_id NUMBER;
36041 l_adr_flexfield_segment_code VARCHAR2(30);
36042 l_adr_flex_value_set_id NUMBER;
36043 l_adr_value_type_code VARCHAR2(30);
36044 l_adr_value_combination_id NUMBER;
36045 l_adr_value_segment_code VARCHAR2(30);
36046
36047 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
36048 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
36049 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
36050 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
36051
36052 -- 4262811 Variables ------------------------------------------------------------------------------------------
36053 l_entered_amt_idx NUMBER;
36054 l_accted_amt_idx NUMBER;
36055 l_acc_rev_flag VARCHAR2(1);
36056 l_accrual_line_num NUMBER;
36057 l_tmp_amt NUMBER;
36058 l_acc_rev_natural_side_code VARCHAR2(1);
36059
36060 l_num_entries NUMBER;
36061 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
36062 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
36063 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
36064 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
36065 l_recog_line_1 NUMBER;
36066 l_recog_line_2 NUMBER;
36067
36068 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
36069 l_bflow_applied_to_amt NUMBER; -- 5132302
36070 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
36071
36072 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
36073
36074 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
36075 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
36076
36077 ---------------------------------------------------------------------------------------------------------------
36078
36079
36080 --
36081 -- bulk performance
36082 --
36083 l_balance_type_code VARCHAR2(1);
36084 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
36085 l_log_module VARCHAR2(240);
36086
36087 --
36088 -- Upgrade strategy
36089 --
36090 l_actual_upg_option VARCHAR2(1);
36091 l_enc_upg_option VARCHAR2(1);
36092
36093 --
36094 BEGIN
36095 --
36096 IF g_log_enabled THEN
36097 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_68';
36098 END IF;
36099 --
36100 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
36101
36102 trace
36103 (p_msg => 'BEGIN of AcctLineType_68'
36104 ,p_level => C_LEVEL_PROCEDURE
36105 ,p_module => l_log_module);
36106
36107 END IF;
36108 --
36109 l_component_type := 'AMB_JLT';
36110 l_component_code := 'INTERORG_FREIGHT_CHARGE';
36111 l_component_type_code := 'S';
36112 l_component_appl_id := 707;
36113 l_amb_context_code := 'DEFAULT';
36114 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
36115 l_event_class_code := 'USER_DEFINE';
36116 l_event_type_code := 'UDIR_INTERORG_RCPT_TP';
36117 l_line_definition_owner_code := 'S';
36118 l_line_definition_code := 'USER_DIR_INTERORG_RCPT_TP';
36119 --
36120 l_balance_type_code := 'A';
36121 l_segment := NULL;
36122 l_ccid := NULL;
36123 l_adr_transaction_coa_id := NULL;
36124 l_adr_accounting_coa_id := NULL;
36125 l_adr_flexfield_segment_code := NULL;
36126 l_adr_flex_value_set_id := NULL;
36127 l_adr_value_type_code := NULL;
36128 l_adr_value_combination_id := NULL;
36129 l_adr_value_segment_code := NULL;
36130
36131 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
36132 l_bflow_class_code := ''; -- 4219869 Business Flow
36133 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
36134 l_budgetary_control_flag := 'N';
36135
36136 l_bflow_applied_to_amt_idx := NULL; -- 5132302
36137 l_bflow_applied_to_amt := NULL; -- 5132302
36138 l_entered_amt_idx := NULL; -- 4262811
36139 l_accted_amt_idx := NULL; -- 4262811
36140 l_acc_rev_flag := NULL; -- 4262811
36141 l_accrual_line_num := NULL; -- 4262811
36142 l_tmp_amt := NULL; -- 4262811
36143 --
36144
36145 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
36146 l_balance_type_code <> 'B' THEN
36147 IF NVL(p_source_24,9E125) = 12
36148 THEN
36149
36150 --
36151 XLA_AE_LINES_PKG.SetNewLine;
36152
36153 p_balance_type_code := l_balance_type_code;
36154 -- set the flag so later we will know whether the gain loss line needs to be created
36155
36156 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
36157 p_actual_flag :='A';
36158 END IF;
36159
36160 --
36161 -- bulk performance
36162 --
36163 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
36164 p_header_num => 0); -- 4262811
36165 --
36166 -- set accounting line options
36167 --
36168 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
36169 p_natural_side_code => 'D'
36170 , p_gain_or_loss_flag => 'N'
36171 , p_gl_transfer_mode_code => 'S'
36172 , p_acct_entry_type_code => 'A'
36173 , p_switch_side_flag => 'Y'
36174 , p_merge_duplicate_code => 'N'
36175 );
36176 --
36177 l_acc_rev_natural_side_code := 'C'; -- 4262811
36178 --
36179 --
36180 -- set accounting line type info
36181 --
36182 xla_ae_lines_pkg.SetAcctLineType
36183 (p_component_type => l_component_type
36184 ,p_event_type_code => l_event_type_code
36185 ,p_line_definition_owner_code => l_line_definition_owner_code
36186 ,p_line_definition_code => l_line_definition_code
36187 ,p_accounting_line_code => l_component_code
36188 ,p_accounting_line_type_code => l_component_type_code
36189 ,p_accounting_line_appl_id => l_component_appl_id
36190 ,p_amb_context_code => l_amb_context_code
36191 ,p_entity_code => l_entity_code
36192 ,p_event_class_code => l_event_class_code);
36193 --
36194 -- set accounting class
36195 --
36196 xla_ae_lines_pkg.SetAcctClass(
36197 p_accounting_class_code => 'INTERORG_FREIGHT_CHARGE'
36198 , p_ae_header_id => l_ae_header_id
36199 );
36200
36201 --
36202 -- set rounding class
36203 --
36204 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
36205 'INTERORG_FREIGHT_CHARGE';
36206
36207 --
36208 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
36209 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
36210 --
36211 -- bulk performance
36212 --
36213 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
36214
36215 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
36216 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
36217
36218 -- 4955764
36219 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
36220 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
36221
36222 -- 4458381 Public Sector Enh
36223
36224 --
36225 -- set accounting attributes for the line type
36226 --
36227 l_entered_amt_idx := 3;
36228 l_accted_amt_idx := 8;
36229 l_bflow_applied_to_amt_idx := NULL; -- 5132302
36230 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
36231 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
36232 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
36233 l_rec_acct_attrs.array_char_value(2) := p_source_12;
36234 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
36235 l_rec_acct_attrs.array_num_value(3) := p_source_18;
36236 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
36237 l_rec_acct_attrs.array_char_value(4) := p_source_15;
36238 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
36239 l_rec_acct_attrs.array_date_value(5) := p_source_19;
36240 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
36241 l_rec_acct_attrs.array_num_value(6) := p_source_20;
36242 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
36243 l_rec_acct_attrs.array_char_value(7) := p_source_21;
36244 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
36245 l_rec_acct_attrs.array_num_value(8) := p_source_22;
36246
36247 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
36248 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
36249
36250 ---------------------------------------------------------------------------------------------------------------
36251 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
36252 ---------------------------------------------------------------------------------------------------------------
36253 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
36254
36255 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
36256 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
36257
36258 IF xla_accounting_cache_pkg.GetValueChar
36259 (p_source_code => 'LEDGER_CATEGORY_CODE'
36260 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
36261 AND l_bflow_method_code = 'PRIOR_ENTRY'
36262 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
36263 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
36264 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
36265 )
36266 THEN
36267 xla_ae_lines_pkg.BflowUpgEntry
36268 (p_business_method_code => l_bflow_method_code
36269 ,p_business_class_code => l_bflow_class_code
36270 ,p_balance_type => l_balance_type_code);
36271 ELSE
36272 NULL;
36273 -- No business flow processing for business flow method of NONE.
36274 END IF;
36275
36276 --
36277 -- call analytical criteria
36278 --
36279
36280 --
36281 -- call description
36282 --
36283 -- No description or it is inherited.
36284 --
36285 -- call ADRs
36286 -- Bug 4922099
36287 --
36288 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
36289 (NVL(l_actual_upg_option, 'N') = 'O') OR
36290 (NVL(l_enc_upg_option, 'N') = 'O')
36291 )
36292 THEN
36293 NULL;
36294 --
36295 --
36296
36297 l_ccid := AcctDerRule_4(
36298 p_application_id => p_application_id
36299 , p_ae_header_id => l_ae_header_id
36300 , p_source_4 => p_source_4
36301 , x_transaction_coa_id => l_adr_transaction_coa_id
36302 , x_accounting_coa_id => l_adr_accounting_coa_id
36303 , x_value_type_code => l_adr_value_type_code
36304 , p_side => 'NA'
36305 );
36306
36307 xla_ae_lines_pkg.set_ccid(
36308 p_code_combination_id => l_ccid
36309 , p_value_type_code => l_adr_value_type_code
36310 , p_transaction_coa_id => l_adr_transaction_coa_id
36311 , p_accounting_coa_id => l_adr_accounting_coa_id
36312 , p_adr_code => 'CST_DEFAULT'
36313 , p_adr_type_code => 'S'
36314 , p_component_type => l_component_type
36315 , p_component_code => l_component_code
36316 , p_component_type_code => l_component_type_code
36317 , p_component_appl_id => l_component_appl_id
36318 , p_amb_context_code => l_amb_context_code
36319 , p_side => 'NA'
36320 );
36321
36322
36323 --
36324 --
36325 END IF;
36326 --
36327 -- Bug 4922099
36328 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
36329 (NVL(l_enc_upg_option, 'N') = 'O')
36330 ) AND
36331 (l_bflow_method_code = 'PRIOR_ENTRY')
36332 )
36333 THEN
36334 IF
36335 --
36336 1 = 2
36337 --
36338 THEN
36339 xla_accounting_err_pkg.build_message
36340 (p_appli_s_name => 'XLA'
36341 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
36342 ,p_token_1 => 'LINE_NUMBER'
36343 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
36344 ,p_token_2 => 'LINE_TYPE_NAME'
36345 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
36346 l_component_type
36347 ,l_component_code
36348 ,l_component_type_code
36349 ,l_component_appl_id
36350 ,l_amb_context_code
36351 ,l_entity_code
36352 ,l_event_class_code
36353 )
36354 ,p_token_3 => 'OWNER'
36355 ,p_value_3 => xla_lookups_pkg.get_meaning(
36356 p_lookup_type => 'XLA_OWNER_TYPE'
36357 ,p_lookup_code => l_component_type_code
36358 )
36359 ,p_token_4 => 'PRODUCT_NAME'
36360 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
36361 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
36362 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
36363 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
36364 ,p_ae_header_id => NULL
36365 );
36366
36367 IF (C_LEVEL_ERROR>= g_log_level) THEN
36368 trace
36369 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
36370 ,p_level => C_LEVEL_ERROR
36371 ,p_module => l_log_module);
36372 END IF;
36373 END IF;
36374 END IF;
36375 --
36376 --
36377 ------------------------------------------------------------------------------------------------
36378 -- 4219869 Business Flow
36379 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
36380 -- Prior Entry. Currently, the following code is always generated.
36381 ------------------------------------------------------------------------------------------------
36382 XLA_AE_LINES_PKG.ValidateCurrentLine;
36383
36384 ------------------------------------------------------------------------------------
36385 -- 4219869 Business Flow
36386 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
36387 ------------------------------------------------------------------------------------
36388 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
36389
36390 ----------------------------------------------------------------------------------
36391 -- 4219869 Business Flow
36392 -- Update journal entry status -- Need to generate this within IF <condition>
36393 ----------------------------------------------------------------------------------
36394 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
36395 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
36396 ,p_balance_type_code => l_balance_type_code
36397 );
36398
36399 -------------------------------------------------------------------------------------------
36400 -- 4262811 - Generate the Accrual Reversal lines
36401 -------------------------------------------------------------------------------------------
36402 BEGIN
36403 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
36404 (g_array_event(p_event_id).array_value_num('header_index'));
36405 IF l_acc_rev_flag IS NULL THEN
36406 l_acc_rev_flag := 'N';
36407 END IF;
36408 EXCEPTION
36409 WHEN OTHERS THEN
36410 l_acc_rev_flag := 'N';
36411 END;
36412 --
36413 IF (l_acc_rev_flag = 'Y') THEN
36414
36415 -- 4645092 ------------------------------------------------------------------------------
36416 -- To allow MPA report to determine if it should generate report process
36417 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
36418 ------------------------------------------------------------------------------------------
36419
36420 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
36421 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
36422 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
36423 -- call ADRs
36424 -- Bug 4922099
36425 --
36426 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
36427 (NVL(l_actual_upg_option, 'N') = 'O') OR
36428 (NVL(l_enc_upg_option, 'N') = 'O')
36429 )
36430 THEN
36431 NULL;
36432 --
36433 --
36434
36435 l_ccid := AcctDerRule_4(
36436 p_application_id => p_application_id
36437 , p_ae_header_id => l_ae_header_id
36438 , p_source_4 => p_source_4
36439 , x_transaction_coa_id => l_adr_transaction_coa_id
36440 , x_accounting_coa_id => l_adr_accounting_coa_id
36441 , x_value_type_code => l_adr_value_type_code
36442 , p_side => 'NA'
36443 );
36444
36445 xla_ae_lines_pkg.set_ccid(
36446 p_code_combination_id => l_ccid
36447 , p_value_type_code => l_adr_value_type_code
36448 , p_transaction_coa_id => l_adr_transaction_coa_id
36449 , p_accounting_coa_id => l_adr_accounting_coa_id
36450 , p_adr_code => 'CST_DEFAULT'
36451 , p_adr_type_code => 'S'
36452 , p_component_type => l_component_type
36453 , p_component_code => l_component_code
36454 , p_component_type_code => l_component_type_code
36455 , p_component_appl_id => l_component_appl_id
36456 , p_amb_context_code => l_amb_context_code
36457 , p_side => 'NA'
36458 );
36459
36460
36461 --
36462 --
36463 END IF;
36464
36465 --
36466 -- Update the line information that should be overwritten
36467 --
36468 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
36469 p_header_num => 1);
36470 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
36471
36472 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
36473
36474 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
36475 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
36476 END IF;
36477
36478 --
36479 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
36480 --
36481 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
36482 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
36483 ELSE
36484 ---------------------------------------------------------------------------------------------------
36485 -- 4262811a Switch Sign
36486 ---------------------------------------------------------------------------------------------------
36487 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
36488 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
36489 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
36490 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
36491 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
36492 -- 5132302
36493 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
36494 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
36495
36496 END IF;
36497
36498 -- 4955764
36499 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
36500 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
36501
36502
36503 XLA_AE_LINES_PKG.ValidateCurrentLine;
36504 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
36505
36506 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
36507 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
36508 ,p_balance_type_code => l_balance_type_code);
36509
36510 END IF;
36511
36512 -----------------------------------------------------------------------------------------
36513 -- 4262811 Multiperiod Accounting
36514 -----------------------------------------------------------------------------------------
36515 -- No MPA option is assigned.
36516
36517
36518 END IF;
36519 END IF;
36520 --
36521
36522 --
36523 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
36524 trace
36525 (p_msg => 'END of AcctLineType_68'
36526 ,p_level => C_LEVEL_PROCEDURE
36527 ,p_module => l_log_module);
36528 END IF;
36529 --
36530 EXCEPTION
36531 WHEN xla_exceptions_pkg.application_exception THEN
36532 RAISE;
36533 WHEN OTHERS THEN
36534 xla_exceptions_pkg.raise_message
36535 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_68');
36536 END AcctLineType_68;
36537 --
36538
36539 ---------------------------------------
36540 --
36541 -- PRIVATE FUNCTION
36542 -- AcctLineType_69
36543 --
36544 ---------------------------------------
36545 PROCEDURE AcctLineType_69 (
36546 p_application_id IN NUMBER
36547 ,p_event_id IN NUMBER
36548 ,p_calculate_acctd_flag IN VARCHAR2
36549 ,p_calculate_g_l_flag IN VARCHAR2
36550 ,p_actual_flag IN OUT VARCHAR2
36551 ,p_balance_type_code OUT VARCHAR2
36552 ,p_gain_or_loss_ref OUT VARCHAR2
36553
36554 --Cost Management Default Account
36555 , p_source_4 IN NUMBER
36556 --Applied to Application ID
36557 , p_source_6 IN NUMBER
36558 --Applied to Distribution Link Type
36559 , p_source_7 IN VARCHAR2
36560 --Applied to Entity Code
36561 , p_source_8 IN VARCHAR2
36562 --DISTRIBUTION_IDENTIFIER
36563 , p_source_11 IN NUMBER
36564 --Distribution Type
36565 , p_source_12 IN VARCHAR2
36566 , p_source_12_meaning IN VARCHAR2
36567 --Encumbrance Reversal Amount Entered
36568 , p_source_14 IN NUMBER
36569 --Entered Currency Code
36570 , p_source_15 IN VARCHAR2
36571 --Transaction Encumbrance Reversal Amount
36572 , p_source_16 IN NUMBER
36573 --Entered Amount
36574 , p_source_18 IN NUMBER
36575 --Currency Conversion Date
36576 , p_source_19 IN DATE
36577 --Currency Conversion Rate
36578 , p_source_20 IN NUMBER
36579 --Currency Conversion Type
36580 , p_source_21 IN VARCHAR2
36581 --Accounted Amount
36582 , p_source_22 IN NUMBER
36583 --Accounting Line Type
36584 , p_source_24 IN NUMBER
36585 --Costing Encumbrance Upgrade Option
36586 , p_source_27 IN VARCHAR2
36587 --TXN_PO_DISTRIBUTION_ID
36588 , p_source_28 IN NUMBER
36589 --TXN_PO_HEADER_ID
36590 , p_source_29 IN NUMBER
36591 --Requisition Budget Account
36592 , p_source_30 IN NUMBER
36593 --Requisition Encumbrance Type Identifier
36594 , p_source_31 IN NUMBER
36595 )
36596 IS
36597
36598 l_component_type VARCHAR2(80);
36599 l_component_code VARCHAR2(30);
36600 l_component_type_code VARCHAR2(1);
36601 l_component_appl_id INTEGER;
36602 l_amb_context_code VARCHAR2(30);
36603 l_entity_code VARCHAR2(30);
36604 l_event_class_code VARCHAR2(30);
36605 l_ae_header_id NUMBER;
36606 l_event_type_code VARCHAR2(30);
36607 l_line_definition_code VARCHAR2(30);
36608 l_line_definition_owner_code VARCHAR2(1);
36609 --
36610 -- adr variables
36611 l_segment VARCHAR2(30);
36612 l_ccid NUMBER;
36613 l_adr_transaction_coa_id NUMBER;
36614 l_adr_accounting_coa_id NUMBER;
36615 l_adr_flexfield_segment_code VARCHAR2(30);
36616 l_adr_flex_value_set_id NUMBER;
36617 l_adr_value_type_code VARCHAR2(30);
36618 l_adr_value_combination_id NUMBER;
36619 l_adr_value_segment_code VARCHAR2(30);
36620
36621 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
36622 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
36623 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
36624 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
36625
36626 -- 4262811 Variables ------------------------------------------------------------------------------------------
36627 l_entered_amt_idx NUMBER;
36628 l_accted_amt_idx NUMBER;
36629 l_acc_rev_flag VARCHAR2(1);
36630 l_accrual_line_num NUMBER;
36631 l_tmp_amt NUMBER;
36632 l_acc_rev_natural_side_code VARCHAR2(1);
36633
36634 l_num_entries NUMBER;
36635 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
36636 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
36637 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
36638 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
36639 l_recog_line_1 NUMBER;
36640 l_recog_line_2 NUMBER;
36641
36642 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
36643 l_bflow_applied_to_amt NUMBER; -- 5132302
36644 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
36645
36646 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
36647
36648 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
36649 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
36650
36651 ---------------------------------------------------------------------------------------------------------------
36652
36653
36654 --
36655 -- bulk performance
36656 --
36657 l_balance_type_code VARCHAR2(1);
36658 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
36659 l_log_module VARCHAR2(240);
36660
36661 --
36662 -- Upgrade strategy
36663 --
36664 l_actual_upg_option VARCHAR2(1);
36665 l_enc_upg_option VARCHAR2(1);
36666
36667 --
36668 BEGIN
36669 --
36670 IF g_log_enabled THEN
36671 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_69';
36672 END IF;
36673 --
36674 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
36675
36676 trace
36677 (p_msg => 'BEGIN of AcctLineType_69'
36678 ,p_level => C_LEVEL_PROCEDURE
36679 ,p_module => l_log_module);
36680
36681 END IF;
36682 --
36683 l_component_type := 'AMB_JLT';
36684 l_component_code := 'INTERORG_FREIGHT_CHARGE';
36685 l_component_type_code := 'S';
36686 l_component_appl_id := 707;
36687 l_amb_context_code := 'DEFAULT';
36688 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
36689 l_event_class_code := 'DIR_INTERORG_RCPT';
36690 l_event_type_code := 'DIR_INTERORG_RCPT_ALL';
36691 l_line_definition_owner_code := 'S';
36692 l_line_definition_code := 'DIRECT_INTERORG_RCPT';
36693 --
36694 l_balance_type_code := 'A';
36695 l_segment := NULL;
36696 l_ccid := NULL;
36697 l_adr_transaction_coa_id := NULL;
36698 l_adr_accounting_coa_id := NULL;
36699 l_adr_flexfield_segment_code := NULL;
36700 l_adr_flex_value_set_id := NULL;
36701 l_adr_value_type_code := NULL;
36702 l_adr_value_combination_id := NULL;
36703 l_adr_value_segment_code := NULL;
36704
36705 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
36706 l_bflow_class_code := ''; -- 4219869 Business Flow
36707 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
36708 l_budgetary_control_flag := 'N';
36709
36710 l_bflow_applied_to_amt_idx := NULL; -- 5132302
36711 l_bflow_applied_to_amt := NULL; -- 5132302
36712 l_entered_amt_idx := NULL; -- 4262811
36713 l_accted_amt_idx := NULL; -- 4262811
36714 l_acc_rev_flag := NULL; -- 4262811
36715 l_accrual_line_num := NULL; -- 4262811
36716 l_tmp_amt := NULL; -- 4262811
36717 --
36718
36719 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
36720 l_balance_type_code <> 'B' THEN
36721 IF NVL(p_source_24,9E125) = 12
36722 THEN
36723
36724 --
36725 XLA_AE_LINES_PKG.SetNewLine;
36726
36727 p_balance_type_code := l_balance_type_code;
36728 -- set the flag so later we will know whether the gain loss line needs to be created
36729
36730 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
36731 p_actual_flag :='A';
36732 END IF;
36733
36734 --
36735 -- bulk performance
36736 --
36737 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
36738 p_header_num => 0); -- 4262811
36739 --
36740 -- set accounting line options
36741 --
36742 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
36743 p_natural_side_code => 'D'
36744 , p_gain_or_loss_flag => 'N'
36745 , p_gl_transfer_mode_code => 'S'
36746 , p_acct_entry_type_code => 'A'
36747 , p_switch_side_flag => 'Y'
36748 , p_merge_duplicate_code => 'N'
36749 );
36750 --
36751 l_acc_rev_natural_side_code := 'C'; -- 4262811
36752 --
36753 --
36754 -- set accounting line type info
36755 --
36756 xla_ae_lines_pkg.SetAcctLineType
36757 (p_component_type => l_component_type
36758 ,p_event_type_code => l_event_type_code
36759 ,p_line_definition_owner_code => l_line_definition_owner_code
36760 ,p_line_definition_code => l_line_definition_code
36761 ,p_accounting_line_code => l_component_code
36762 ,p_accounting_line_type_code => l_component_type_code
36763 ,p_accounting_line_appl_id => l_component_appl_id
36764 ,p_amb_context_code => l_amb_context_code
36765 ,p_entity_code => l_entity_code
36766 ,p_event_class_code => l_event_class_code);
36767 --
36768 -- set accounting class
36769 --
36770 xla_ae_lines_pkg.SetAcctClass(
36771 p_accounting_class_code => 'INTERORG_FREIGHT_CHARGE'
36772 , p_ae_header_id => l_ae_header_id
36773 );
36774
36775 --
36776 -- set rounding class
36777 --
36778 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
36779 'INTERORG_FREIGHT_CHARGE';
36780
36781 --
36782 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
36783 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
36784 --
36785 -- bulk performance
36786 --
36787 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
36788
36789 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
36790 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
36791
36792 -- 4955764
36793 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
36794 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
36795
36796 -- 4458381 Public Sector Enh
36797
36798 --
36799 -- set accounting attributes for the line type
36800 --
36801 l_entered_amt_idx := 17;
36802 l_accted_amt_idx := 22;
36803 l_bflow_applied_to_amt_idx := NULL; -- 5132302
36804 l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
36805 l_rec_acct_attrs.array_num_value(1) := p_source_6;
36806 l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
36807 l_rec_acct_attrs.array_char_value(2) := p_source_7;
36808 l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
36809 l_rec_acct_attrs.array_char_value(3) := p_source_8;
36810 l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
36811 l_rec_acct_attrs.array_num_value(4) := to_char(p_source_28);
36812 l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
36813 l_rec_acct_attrs.array_num_value(5) := to_char(p_source_29);
36814 l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
36815 l_rec_acct_attrs.array_num_value(6) := to_char(p_source_11);
36816 l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
36817 l_rec_acct_attrs.array_char_value(7) := p_source_12;
36818 l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
36819 l_rec_acct_attrs.array_num_value(8) := TO_NUMBER(p_source_30);
36820 l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
36821 l_rec_acct_attrs.array_num_value(9) := p_source_14;
36822 l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
36823 l_rec_acct_attrs.array_char_value(10) := p_source_15;
36824 l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
36825 l_rec_acct_attrs.array_num_value(11) := p_source_16;
36826 l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
36827 l_rec_acct_attrs.array_num_value(12) := TO_NUMBER(p_source_30);
36828 l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
36829 l_rec_acct_attrs.array_num_value(13) := p_source_14;
36830 l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
36831 l_rec_acct_attrs.array_char_value(14) := p_source_15;
36832 l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
36833 l_rec_acct_attrs.array_num_value(15) := p_source_16;
36834 l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
36835 l_rec_acct_attrs.array_char_value(16) := p_source_27;
36836 l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
36837 l_rec_acct_attrs.array_num_value(17) := p_source_18;
36838 l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
36839 l_rec_acct_attrs.array_char_value(18) := p_source_15;
36840 l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
36841 l_rec_acct_attrs.array_date_value(19) := p_source_19;
36842 l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
36843 l_rec_acct_attrs.array_num_value(20) := p_source_20;
36844 l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
36845 l_rec_acct_attrs.array_char_value(21) := p_source_21;
36846 l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
36847 l_rec_acct_attrs.array_num_value(22) := p_source_22;
36848 l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
36849 l_rec_acct_attrs.array_num_value(23) := p_source_31;
36850 l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
36851 l_rec_acct_attrs.array_num_value(24) := p_source_31;
36852
36853 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
36854 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
36855
36856 ---------------------------------------------------------------------------------------------------------------
36857 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
36858 ---------------------------------------------------------------------------------------------------------------
36859 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
36860
36861 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
36862 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
36863
36864 IF xla_accounting_cache_pkg.GetValueChar
36865 (p_source_code => 'LEDGER_CATEGORY_CODE'
36866 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
36867 AND l_bflow_method_code = 'PRIOR_ENTRY'
36868 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
36869 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
36870 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
36871 )
36872 THEN
36873 xla_ae_lines_pkg.BflowUpgEntry
36874 (p_business_method_code => l_bflow_method_code
36875 ,p_business_class_code => l_bflow_class_code
36876 ,p_balance_type => l_balance_type_code);
36877 ELSE
36878 NULL;
36879 -- No business flow processing for business flow method of NONE.
36880 END IF;
36881
36882 --
36883 -- call analytical criteria
36884 --
36885
36886 --
36887 -- call description
36888 --
36889 -- No description or it is inherited.
36890 --
36891 -- call ADRs
36892 -- Bug 4922099
36893 --
36894 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
36895 (NVL(l_actual_upg_option, 'N') = 'O') OR
36896 (NVL(l_enc_upg_option, 'N') = 'O')
36897 )
36898 THEN
36899 NULL;
36900 --
36901 --
36902
36903 l_ccid := AcctDerRule_4(
36904 p_application_id => p_application_id
36905 , p_ae_header_id => l_ae_header_id
36906 , p_source_4 => p_source_4
36907 , x_transaction_coa_id => l_adr_transaction_coa_id
36908 , x_accounting_coa_id => l_adr_accounting_coa_id
36909 , x_value_type_code => l_adr_value_type_code
36910 , p_side => 'NA'
36911 );
36912
36913 xla_ae_lines_pkg.set_ccid(
36914 p_code_combination_id => l_ccid
36915 , p_value_type_code => l_adr_value_type_code
36916 , p_transaction_coa_id => l_adr_transaction_coa_id
36917 , p_accounting_coa_id => l_adr_accounting_coa_id
36918 , p_adr_code => 'CST_DEFAULT'
36919 , p_adr_type_code => 'S'
36920 , p_component_type => l_component_type
36921 , p_component_code => l_component_code
36922 , p_component_type_code => l_component_type_code
36923 , p_component_appl_id => l_component_appl_id
36924 , p_amb_context_code => l_amb_context_code
36925 , p_side => 'NA'
36926 );
36927
36928
36929 --
36930 --
36931 END IF;
36932 --
36933 -- Bug 4922099
36934 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
36935 (NVL(l_enc_upg_option, 'N') = 'O')
36936 ) AND
36937 (l_bflow_method_code = 'PRIOR_ENTRY')
36938 )
36939 THEN
36940 IF
36941 --
36942 1 = 2
36943 --
36944 THEN
36945 xla_accounting_err_pkg.build_message
36946 (p_appli_s_name => 'XLA'
36947 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
36948 ,p_token_1 => 'LINE_NUMBER'
36949 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
36950 ,p_token_2 => 'LINE_TYPE_NAME'
36951 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
36952 l_component_type
36953 ,l_component_code
36954 ,l_component_type_code
36955 ,l_component_appl_id
36956 ,l_amb_context_code
36957 ,l_entity_code
36958 ,l_event_class_code
36959 )
36960 ,p_token_3 => 'OWNER'
36961 ,p_value_3 => xla_lookups_pkg.get_meaning(
36962 p_lookup_type => 'XLA_OWNER_TYPE'
36963 ,p_lookup_code => l_component_type_code
36964 )
36965 ,p_token_4 => 'PRODUCT_NAME'
36966 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
36967 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
36968 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
36969 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
36970 ,p_ae_header_id => NULL
36971 );
36972
36973 IF (C_LEVEL_ERROR>= g_log_level) THEN
36974 trace
36975 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
36976 ,p_level => C_LEVEL_ERROR
36977 ,p_module => l_log_module);
36978 END IF;
36979 END IF;
36980 END IF;
36981 --
36982 --
36983 ------------------------------------------------------------------------------------------------
36984 -- 4219869 Business Flow
36985 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
36986 -- Prior Entry. Currently, the following code is always generated.
36987 ------------------------------------------------------------------------------------------------
36988 XLA_AE_LINES_PKG.ValidateCurrentLine;
36989
36990 ------------------------------------------------------------------------------------
36991 -- 4219869 Business Flow
36992 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
36993 ------------------------------------------------------------------------------------
36994 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
36995
36996 ----------------------------------------------------------------------------------
36997 -- 4219869 Business Flow
36998 -- Update journal entry status -- Need to generate this within IF <condition>
36999 ----------------------------------------------------------------------------------
37000 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
37001 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
37002 ,p_balance_type_code => l_balance_type_code
37003 );
37004
37005 -------------------------------------------------------------------------------------------
37006 -- 4262811 - Generate the Accrual Reversal lines
37007 -------------------------------------------------------------------------------------------
37008 BEGIN
37009 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
37010 (g_array_event(p_event_id).array_value_num('header_index'));
37011 IF l_acc_rev_flag IS NULL THEN
37012 l_acc_rev_flag := 'N';
37013 END IF;
37014 EXCEPTION
37015 WHEN OTHERS THEN
37016 l_acc_rev_flag := 'N';
37017 END;
37018 --
37019 IF (l_acc_rev_flag = 'Y') THEN
37020
37021 -- 4645092 ------------------------------------------------------------------------------
37022 -- To allow MPA report to determine if it should generate report process
37023 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
37024 ------------------------------------------------------------------------------------------
37025
37026 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
37027 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
37028 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
37029 -- call ADRs
37030 -- Bug 4922099
37031 --
37032 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
37033 (NVL(l_actual_upg_option, 'N') = 'O') OR
37034 (NVL(l_enc_upg_option, 'N') = 'O')
37035 )
37036 THEN
37037 NULL;
37038 --
37039 --
37040
37041 l_ccid := AcctDerRule_4(
37042 p_application_id => p_application_id
37043 , p_ae_header_id => l_ae_header_id
37044 , p_source_4 => p_source_4
37045 , x_transaction_coa_id => l_adr_transaction_coa_id
37046 , x_accounting_coa_id => l_adr_accounting_coa_id
37047 , x_value_type_code => l_adr_value_type_code
37048 , p_side => 'NA'
37049 );
37050
37051 xla_ae_lines_pkg.set_ccid(
37052 p_code_combination_id => l_ccid
37053 , p_value_type_code => l_adr_value_type_code
37054 , p_transaction_coa_id => l_adr_transaction_coa_id
37055 , p_accounting_coa_id => l_adr_accounting_coa_id
37056 , p_adr_code => 'CST_DEFAULT'
37057 , p_adr_type_code => 'S'
37058 , p_component_type => l_component_type
37059 , p_component_code => l_component_code
37060 , p_component_type_code => l_component_type_code
37061 , p_component_appl_id => l_component_appl_id
37062 , p_amb_context_code => l_amb_context_code
37063 , p_side => 'NA'
37064 );
37065
37066
37067 --
37068 --
37069 END IF;
37070
37071 --
37072 -- Update the line information that should be overwritten
37073 --
37074 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
37075 p_header_num => 1);
37076 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
37077
37078 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
37079
37080 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
37081 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
37082 END IF;
37083
37084 --
37085 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
37086 --
37087 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
37088 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
37089 ELSE
37090 ---------------------------------------------------------------------------------------------------
37091 -- 4262811a Switch Sign
37092 ---------------------------------------------------------------------------------------------------
37093 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
37094 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
37095 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
37096 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
37097 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
37098 -- 5132302
37099 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
37100 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
37101
37102 END IF;
37103
37104 -- 4955764
37105 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
37106 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
37107
37108
37109 XLA_AE_LINES_PKG.ValidateCurrentLine;
37110 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
37111
37112 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
37113 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
37114 ,p_balance_type_code => l_balance_type_code);
37115
37116 END IF;
37117
37118 -----------------------------------------------------------------------------------------
37119 -- 4262811 Multiperiod Accounting
37120 -----------------------------------------------------------------------------------------
37121 -- No MPA option is assigned.
37122
37123
37124 END IF;
37125 END IF;
37126 --
37127
37128 --
37129 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
37130 trace
37131 (p_msg => 'END of AcctLineType_69'
37132 ,p_level => C_LEVEL_PROCEDURE
37133 ,p_module => l_log_module);
37134 END IF;
37135 --
37136 EXCEPTION
37137 WHEN xla_exceptions_pkg.application_exception THEN
37138 RAISE;
37139 WHEN OTHERS THEN
37140 xla_exceptions_pkg.raise_message
37141 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_69');
37142 END AcctLineType_69;
37143 --
37144
37145 ---------------------------------------
37146 --
37147 -- PRIVATE FUNCTION
37148 -- AcctLineType_70
37149 --
37150 ---------------------------------------
37151 PROCEDURE AcctLineType_70 (
37152 p_application_id IN NUMBER
37153 ,p_event_id IN NUMBER
37154 ,p_calculate_acctd_flag IN VARCHAR2
37155 ,p_calculate_g_l_flag IN VARCHAR2
37156 ,p_actual_flag IN OUT VARCHAR2
37157 ,p_balance_type_code OUT VARCHAR2
37158 ,p_gain_or_loss_ref OUT VARCHAR2
37159
37160 --Cost Management Default Account
37161 , p_source_4 IN NUMBER
37162 --DISTRIBUTION_IDENTIFIER
37163 , p_source_11 IN NUMBER
37164 --Distribution Type
37165 , p_source_12 IN VARCHAR2
37166 , p_source_12_meaning IN VARCHAR2
37167 --Entered Currency Code
37168 , p_source_15 IN VARCHAR2
37169 --Entered Amount
37170 , p_source_18 IN NUMBER
37171 --Currency Conversion Date
37172 , p_source_19 IN DATE
37173 --Currency Conversion Rate
37174 , p_source_20 IN NUMBER
37175 --Currency Conversion Type
37176 , p_source_21 IN VARCHAR2
37177 --Accounted Amount
37178 , p_source_22 IN NUMBER
37179 --Accounting Line Type
37180 , p_source_24 IN NUMBER
37181 )
37182 IS
37183
37184 l_component_type VARCHAR2(80);
37185 l_component_code VARCHAR2(30);
37186 l_component_type_code VARCHAR2(1);
37187 l_component_appl_id INTEGER;
37188 l_amb_context_code VARCHAR2(30);
37189 l_entity_code VARCHAR2(30);
37190 l_event_class_code VARCHAR2(30);
37191 l_ae_header_id NUMBER;
37192 l_event_type_code VARCHAR2(30);
37193 l_line_definition_code VARCHAR2(30);
37194 l_line_definition_owner_code VARCHAR2(1);
37195 --
37196 -- adr variables
37197 l_segment VARCHAR2(30);
37198 l_ccid NUMBER;
37199 l_adr_transaction_coa_id NUMBER;
37200 l_adr_accounting_coa_id NUMBER;
37201 l_adr_flexfield_segment_code VARCHAR2(30);
37202 l_adr_flex_value_set_id NUMBER;
37203 l_adr_value_type_code VARCHAR2(30);
37204 l_adr_value_combination_id NUMBER;
37205 l_adr_value_segment_code VARCHAR2(30);
37206
37207 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
37208 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
37209 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
37210 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
37211
37212 -- 4262811 Variables ------------------------------------------------------------------------------------------
37213 l_entered_amt_idx NUMBER;
37214 l_accted_amt_idx NUMBER;
37215 l_acc_rev_flag VARCHAR2(1);
37216 l_accrual_line_num NUMBER;
37217 l_tmp_amt NUMBER;
37218 l_acc_rev_natural_side_code VARCHAR2(1);
37219
37220 l_num_entries NUMBER;
37221 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
37222 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
37223 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
37224 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
37225 l_recog_line_1 NUMBER;
37226 l_recog_line_2 NUMBER;
37227
37228 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
37229 l_bflow_applied_to_amt NUMBER; -- 5132302
37230 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
37231
37232 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
37233
37234 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
37235 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
37236
37237 ---------------------------------------------------------------------------------------------------------------
37238
37239
37240 --
37241 -- bulk performance
37242 --
37243 l_balance_type_code VARCHAR2(1);
37244 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
37245 l_log_module VARCHAR2(240);
37246
37247 --
37248 -- Upgrade strategy
37249 --
37250 l_actual_upg_option VARCHAR2(1);
37251 l_enc_upg_option VARCHAR2(1);
37252
37253 --
37254 BEGIN
37255 --
37256 IF g_log_enabled THEN
37257 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_70';
37258 END IF;
37259 --
37260 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
37261
37262 trace
37263 (p_msg => 'BEGIN of AcctLineType_70'
37264 ,p_level => C_LEVEL_PROCEDURE
37265 ,p_module => l_log_module);
37266
37267 END IF;
37268 --
37269 l_component_type := 'AMB_JLT';
37270 l_component_code := 'INTERORG_PAYABLES';
37271 l_component_type_code := 'S';
37272 l_component_appl_id := 707;
37273 l_amb_context_code := 'DEFAULT';
37274 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
37275 l_event_class_code := 'USER_DEFINE';
37276 l_event_type_code := 'UDIR_INTERORG_RCPT_NO_TP';
37277 l_line_definition_owner_code := 'S';
37278 l_line_definition_code := 'USER_DIR_INTERORG_RCPT_NO_TP';
37279 --
37280 l_balance_type_code := 'A';
37281 l_segment := NULL;
37282 l_ccid := NULL;
37283 l_adr_transaction_coa_id := NULL;
37284 l_adr_accounting_coa_id := NULL;
37285 l_adr_flexfield_segment_code := NULL;
37286 l_adr_flex_value_set_id := NULL;
37287 l_adr_value_type_code := NULL;
37288 l_adr_value_combination_id := NULL;
37289 l_adr_value_segment_code := NULL;
37290
37291 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
37292 l_bflow_class_code := ''; -- 4219869 Business Flow
37293 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
37294 l_budgetary_control_flag := 'N';
37295
37296 l_bflow_applied_to_amt_idx := NULL; -- 5132302
37297 l_bflow_applied_to_amt := NULL; -- 5132302
37298 l_entered_amt_idx := NULL; -- 4262811
37299 l_accted_amt_idx := NULL; -- 4262811
37300 l_acc_rev_flag := NULL; -- 4262811
37301 l_accrual_line_num := NULL; -- 4262811
37302 l_tmp_amt := NULL; -- 4262811
37303 --
37304
37305 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
37306 l_balance_type_code <> 'B' THEN
37307 IF NVL(p_source_24,9E125) = 9
37308 THEN
37309
37310 --
37311 XLA_AE_LINES_PKG.SetNewLine;
37312
37313 p_balance_type_code := l_balance_type_code;
37314 -- set the flag so later we will know whether the gain loss line needs to be created
37315
37316 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
37317 p_actual_flag :='A';
37318 END IF;
37319
37320 --
37321 -- bulk performance
37322 --
37323 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
37324 p_header_num => 0); -- 4262811
37325 --
37326 -- set accounting line options
37327 --
37328 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
37329 p_natural_side_code => 'D'
37330 , p_gain_or_loss_flag => 'N'
37331 , p_gl_transfer_mode_code => 'S'
37332 , p_acct_entry_type_code => 'A'
37333 , p_switch_side_flag => 'Y'
37334 , p_merge_duplicate_code => 'N'
37335 );
37336 --
37337 l_acc_rev_natural_side_code := 'C'; -- 4262811
37338 --
37339 --
37340 -- set accounting line type info
37341 --
37342 xla_ae_lines_pkg.SetAcctLineType
37343 (p_component_type => l_component_type
37344 ,p_event_type_code => l_event_type_code
37345 ,p_line_definition_owner_code => l_line_definition_owner_code
37346 ,p_line_definition_code => l_line_definition_code
37347 ,p_accounting_line_code => l_component_code
37348 ,p_accounting_line_type_code => l_component_type_code
37349 ,p_accounting_line_appl_id => l_component_appl_id
37350 ,p_amb_context_code => l_amb_context_code
37351 ,p_entity_code => l_entity_code
37352 ,p_event_class_code => l_event_class_code);
37353 --
37354 -- set accounting class
37355 --
37356 xla_ae_lines_pkg.SetAcctClass(
37357 p_accounting_class_code => 'INTERORG_PAYABLES'
37358 , p_ae_header_id => l_ae_header_id
37359 );
37360
37361 --
37362 -- set rounding class
37363 --
37364 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
37365 'INTERORG_PAYABLES';
37366
37367 --
37368 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
37369 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
37370 --
37371 -- bulk performance
37372 --
37373 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
37374
37375 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
37376 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
37377
37378 -- 4955764
37379 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
37380 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
37381
37382 -- 4458381 Public Sector Enh
37383
37384 --
37385 -- set accounting attributes for the line type
37386 --
37387 l_entered_amt_idx := 3;
37388 l_accted_amt_idx := 8;
37389 l_bflow_applied_to_amt_idx := NULL; -- 5132302
37390 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
37391 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
37392 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
37393 l_rec_acct_attrs.array_char_value(2) := p_source_12;
37394 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
37395 l_rec_acct_attrs.array_num_value(3) := p_source_18;
37396 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
37397 l_rec_acct_attrs.array_char_value(4) := p_source_15;
37398 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
37399 l_rec_acct_attrs.array_date_value(5) := p_source_19;
37400 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
37401 l_rec_acct_attrs.array_num_value(6) := p_source_20;
37402 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
37403 l_rec_acct_attrs.array_char_value(7) := p_source_21;
37404 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
37405 l_rec_acct_attrs.array_num_value(8) := p_source_22;
37406
37407 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
37408 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
37409
37410 ---------------------------------------------------------------------------------------------------------------
37411 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
37412 ---------------------------------------------------------------------------------------------------------------
37413 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
37414
37415 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
37416 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
37417
37418 IF xla_accounting_cache_pkg.GetValueChar
37419 (p_source_code => 'LEDGER_CATEGORY_CODE'
37420 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
37421 AND l_bflow_method_code = 'PRIOR_ENTRY'
37422 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
37423 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
37424 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
37425 )
37426 THEN
37427 xla_ae_lines_pkg.BflowUpgEntry
37428 (p_business_method_code => l_bflow_method_code
37429 ,p_business_class_code => l_bflow_class_code
37430 ,p_balance_type => l_balance_type_code);
37431 ELSE
37432 NULL;
37433 -- No business flow processing for business flow method of NONE.
37434 END IF;
37435
37436 --
37437 -- call analytical criteria
37438 --
37439
37440 --
37441 -- call description
37442 --
37443 -- No description or it is inherited.
37444 --
37445 -- call ADRs
37446 -- Bug 4922099
37447 --
37448 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
37449 (NVL(l_actual_upg_option, 'N') = 'O') OR
37450 (NVL(l_enc_upg_option, 'N') = 'O')
37451 )
37452 THEN
37453 NULL;
37454 --
37455 --
37456
37457 l_ccid := AcctDerRule_4(
37458 p_application_id => p_application_id
37459 , p_ae_header_id => l_ae_header_id
37460 , p_source_4 => p_source_4
37461 , x_transaction_coa_id => l_adr_transaction_coa_id
37462 , x_accounting_coa_id => l_adr_accounting_coa_id
37463 , x_value_type_code => l_adr_value_type_code
37464 , p_side => 'NA'
37465 );
37466
37467 xla_ae_lines_pkg.set_ccid(
37468 p_code_combination_id => l_ccid
37469 , p_value_type_code => l_adr_value_type_code
37470 , p_transaction_coa_id => l_adr_transaction_coa_id
37471 , p_accounting_coa_id => l_adr_accounting_coa_id
37472 , p_adr_code => 'CST_DEFAULT'
37473 , p_adr_type_code => 'S'
37474 , p_component_type => l_component_type
37475 , p_component_code => l_component_code
37476 , p_component_type_code => l_component_type_code
37477 , p_component_appl_id => l_component_appl_id
37478 , p_amb_context_code => l_amb_context_code
37479 , p_side => 'NA'
37480 );
37481
37482
37483 --
37484 --
37485 END IF;
37486 --
37487 -- Bug 4922099
37488 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
37489 (NVL(l_enc_upg_option, 'N') = 'O')
37490 ) AND
37491 (l_bflow_method_code = 'PRIOR_ENTRY')
37492 )
37493 THEN
37494 IF
37495 --
37496 1 = 2
37497 --
37498 THEN
37499 xla_accounting_err_pkg.build_message
37500 (p_appli_s_name => 'XLA'
37501 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
37502 ,p_token_1 => 'LINE_NUMBER'
37503 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
37504 ,p_token_2 => 'LINE_TYPE_NAME'
37505 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
37506 l_component_type
37507 ,l_component_code
37508 ,l_component_type_code
37509 ,l_component_appl_id
37510 ,l_amb_context_code
37511 ,l_entity_code
37512 ,l_event_class_code
37513 )
37514 ,p_token_3 => 'OWNER'
37515 ,p_value_3 => xla_lookups_pkg.get_meaning(
37516 p_lookup_type => 'XLA_OWNER_TYPE'
37517 ,p_lookup_code => l_component_type_code
37518 )
37519 ,p_token_4 => 'PRODUCT_NAME'
37520 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
37521 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
37522 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
37523 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
37524 ,p_ae_header_id => NULL
37525 );
37526
37527 IF (C_LEVEL_ERROR>= g_log_level) THEN
37528 trace
37529 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
37530 ,p_level => C_LEVEL_ERROR
37531 ,p_module => l_log_module);
37532 END IF;
37533 END IF;
37534 END IF;
37535 --
37536 --
37537 ------------------------------------------------------------------------------------------------
37538 -- 4219869 Business Flow
37539 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
37540 -- Prior Entry. Currently, the following code is always generated.
37541 ------------------------------------------------------------------------------------------------
37542 XLA_AE_LINES_PKG.ValidateCurrentLine;
37543
37544 ------------------------------------------------------------------------------------
37545 -- 4219869 Business Flow
37546 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
37547 ------------------------------------------------------------------------------------
37548 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
37549
37550 ----------------------------------------------------------------------------------
37551 -- 4219869 Business Flow
37552 -- Update journal entry status -- Need to generate this within IF <condition>
37553 ----------------------------------------------------------------------------------
37554 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
37555 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
37556 ,p_balance_type_code => l_balance_type_code
37557 );
37558
37559 -------------------------------------------------------------------------------------------
37560 -- 4262811 - Generate the Accrual Reversal lines
37561 -------------------------------------------------------------------------------------------
37562 BEGIN
37563 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
37564 (g_array_event(p_event_id).array_value_num('header_index'));
37565 IF l_acc_rev_flag IS NULL THEN
37566 l_acc_rev_flag := 'N';
37567 END IF;
37568 EXCEPTION
37569 WHEN OTHERS THEN
37570 l_acc_rev_flag := 'N';
37571 END;
37572 --
37573 IF (l_acc_rev_flag = 'Y') THEN
37574
37575 -- 4645092 ------------------------------------------------------------------------------
37576 -- To allow MPA report to determine if it should generate report process
37577 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
37578 ------------------------------------------------------------------------------------------
37579
37580 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
37581 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
37582 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
37583 -- call ADRs
37584 -- Bug 4922099
37585 --
37586 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
37587 (NVL(l_actual_upg_option, 'N') = 'O') OR
37588 (NVL(l_enc_upg_option, 'N') = 'O')
37589 )
37590 THEN
37591 NULL;
37592 --
37593 --
37594
37595 l_ccid := AcctDerRule_4(
37596 p_application_id => p_application_id
37597 , p_ae_header_id => l_ae_header_id
37598 , p_source_4 => p_source_4
37599 , x_transaction_coa_id => l_adr_transaction_coa_id
37600 , x_accounting_coa_id => l_adr_accounting_coa_id
37601 , x_value_type_code => l_adr_value_type_code
37602 , p_side => 'NA'
37603 );
37604
37605 xla_ae_lines_pkg.set_ccid(
37606 p_code_combination_id => l_ccid
37607 , p_value_type_code => l_adr_value_type_code
37608 , p_transaction_coa_id => l_adr_transaction_coa_id
37609 , p_accounting_coa_id => l_adr_accounting_coa_id
37610 , p_adr_code => 'CST_DEFAULT'
37611 , p_adr_type_code => 'S'
37612 , p_component_type => l_component_type
37613 , p_component_code => l_component_code
37614 , p_component_type_code => l_component_type_code
37615 , p_component_appl_id => l_component_appl_id
37616 , p_amb_context_code => l_amb_context_code
37617 , p_side => 'NA'
37618 );
37619
37620
37621 --
37622 --
37623 END IF;
37624
37625 --
37626 -- Update the line information that should be overwritten
37627 --
37628 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
37629 p_header_num => 1);
37630 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
37631
37632 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
37633
37634 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
37635 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
37636 END IF;
37637
37638 --
37639 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
37640 --
37641 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
37642 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
37643 ELSE
37644 ---------------------------------------------------------------------------------------------------
37645 -- 4262811a Switch Sign
37646 ---------------------------------------------------------------------------------------------------
37647 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
37648 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
37649 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
37650 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
37651 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
37652 -- 5132302
37653 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
37654 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
37655
37656 END IF;
37657
37658 -- 4955764
37659 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
37660 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
37661
37662
37663 XLA_AE_LINES_PKG.ValidateCurrentLine;
37664 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
37665
37666 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
37667 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
37668 ,p_balance_type_code => l_balance_type_code);
37669
37670 END IF;
37671
37672 -----------------------------------------------------------------------------------------
37673 -- 4262811 Multiperiod Accounting
37674 -----------------------------------------------------------------------------------------
37675 -- No MPA option is assigned.
37676
37677
37678 END IF;
37679 END IF;
37680 --
37681
37682 --
37683 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
37684 trace
37685 (p_msg => 'END of AcctLineType_70'
37686 ,p_level => C_LEVEL_PROCEDURE
37687 ,p_module => l_log_module);
37688 END IF;
37689 --
37690 EXCEPTION
37691 WHEN xla_exceptions_pkg.application_exception THEN
37692 RAISE;
37693 WHEN OTHERS THEN
37694 xla_exceptions_pkg.raise_message
37695 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_70');
37696 END AcctLineType_70;
37697 --
37698
37699 ---------------------------------------
37700 --
37701 -- PRIVATE FUNCTION
37702 -- AcctLineType_71
37703 --
37704 ---------------------------------------
37705 PROCEDURE AcctLineType_71 (
37706 p_application_id IN NUMBER
37707 ,p_event_id IN NUMBER
37708 ,p_calculate_acctd_flag IN VARCHAR2
37709 ,p_calculate_g_l_flag IN VARCHAR2
37710 ,p_actual_flag IN OUT VARCHAR2
37711 ,p_balance_type_code OUT VARCHAR2
37712 ,p_gain_or_loss_ref OUT VARCHAR2
37713
37714 --Cost Management Default Account
37715 , p_source_4 IN NUMBER
37716 --DISTRIBUTION_IDENTIFIER
37717 , p_source_11 IN NUMBER
37718 --Distribution Type
37719 , p_source_12 IN VARCHAR2
37720 , p_source_12_meaning IN VARCHAR2
37721 --Entered Currency Code
37722 , p_source_15 IN VARCHAR2
37723 --Entered Amount
37724 , p_source_18 IN NUMBER
37725 --Currency Conversion Date
37726 , p_source_19 IN DATE
37727 --Currency Conversion Rate
37728 , p_source_20 IN NUMBER
37729 --Currency Conversion Type
37730 , p_source_21 IN VARCHAR2
37731 --Accounted Amount
37732 , p_source_22 IN NUMBER
37733 --Accounting Line Type
37734 , p_source_24 IN NUMBER
37735 )
37736 IS
37737
37738 l_component_type VARCHAR2(80);
37739 l_component_code VARCHAR2(30);
37740 l_component_type_code VARCHAR2(1);
37741 l_component_appl_id INTEGER;
37742 l_amb_context_code VARCHAR2(30);
37743 l_entity_code VARCHAR2(30);
37744 l_event_class_code VARCHAR2(30);
37745 l_ae_header_id NUMBER;
37746 l_event_type_code VARCHAR2(30);
37747 l_line_definition_code VARCHAR2(30);
37748 l_line_definition_owner_code VARCHAR2(1);
37749 --
37750 -- adr variables
37751 l_segment VARCHAR2(30);
37752 l_ccid NUMBER;
37753 l_adr_transaction_coa_id NUMBER;
37754 l_adr_accounting_coa_id NUMBER;
37755 l_adr_flexfield_segment_code VARCHAR2(30);
37756 l_adr_flex_value_set_id NUMBER;
37757 l_adr_value_type_code VARCHAR2(30);
37758 l_adr_value_combination_id NUMBER;
37759 l_adr_value_segment_code VARCHAR2(30);
37760
37761 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
37762 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
37763 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
37764 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
37765
37766 -- 4262811 Variables ------------------------------------------------------------------------------------------
37767 l_entered_amt_idx NUMBER;
37768 l_accted_amt_idx NUMBER;
37769 l_acc_rev_flag VARCHAR2(1);
37770 l_accrual_line_num NUMBER;
37771 l_tmp_amt NUMBER;
37772 l_acc_rev_natural_side_code VARCHAR2(1);
37773
37774 l_num_entries NUMBER;
37775 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
37776 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
37777 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
37778 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
37779 l_recog_line_1 NUMBER;
37780 l_recog_line_2 NUMBER;
37781
37782 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
37783 l_bflow_applied_to_amt NUMBER; -- 5132302
37784 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
37785
37786 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
37787
37788 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
37789 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
37790
37791 ---------------------------------------------------------------------------------------------------------------
37792
37793
37794 --
37795 -- bulk performance
37796 --
37797 l_balance_type_code VARCHAR2(1);
37798 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
37799 l_log_module VARCHAR2(240);
37800
37801 --
37802 -- Upgrade strategy
37803 --
37804 l_actual_upg_option VARCHAR2(1);
37805 l_enc_upg_option VARCHAR2(1);
37806
37807 --
37808 BEGIN
37809 --
37810 IF g_log_enabled THEN
37811 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_71';
37812 END IF;
37813 --
37814 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
37815
37816 trace
37817 (p_msg => 'BEGIN of AcctLineType_71'
37818 ,p_level => C_LEVEL_PROCEDURE
37819 ,p_module => l_log_module);
37820
37821 END IF;
37822 --
37823 l_component_type := 'AMB_JLT';
37824 l_component_code := 'INTERORG_PAYABLES';
37825 l_component_type_code := 'S';
37826 l_component_appl_id := 707;
37827 l_amb_context_code := 'DEFAULT';
37828 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
37829 l_event_class_code := 'USER_DEFINE';
37830 l_event_type_code := 'UDIR_INTERORG_SHIP_TP';
37831 l_line_definition_owner_code := 'S';
37832 l_line_definition_code := 'USER_DIR_INTERORG_SHIP_TP';
37833 --
37834 l_balance_type_code := 'A';
37835 l_segment := NULL;
37836 l_ccid := NULL;
37837 l_adr_transaction_coa_id := NULL;
37838 l_adr_accounting_coa_id := NULL;
37839 l_adr_flexfield_segment_code := NULL;
37840 l_adr_flex_value_set_id := NULL;
37841 l_adr_value_type_code := NULL;
37842 l_adr_value_combination_id := NULL;
37843 l_adr_value_segment_code := NULL;
37844
37845 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
37846 l_bflow_class_code := ''; -- 4219869 Business Flow
37847 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
37848 l_budgetary_control_flag := 'N';
37849
37850 l_bflow_applied_to_amt_idx := NULL; -- 5132302
37851 l_bflow_applied_to_amt := NULL; -- 5132302
37852 l_entered_amt_idx := NULL; -- 4262811
37853 l_accted_amt_idx := NULL; -- 4262811
37854 l_acc_rev_flag := NULL; -- 4262811
37855 l_accrual_line_num := NULL; -- 4262811
37856 l_tmp_amt := NULL; -- 4262811
37857 --
37858
37859 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
37860 l_balance_type_code <> 'B' THEN
37861 IF NVL(p_source_24,9E125) = 9
37862 THEN
37863
37864 --
37865 XLA_AE_LINES_PKG.SetNewLine;
37866
37867 p_balance_type_code := l_balance_type_code;
37868 -- set the flag so later we will know whether the gain loss line needs to be created
37869
37870 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
37871 p_actual_flag :='A';
37872 END IF;
37873
37874 --
37875 -- bulk performance
37876 --
37877 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
37878 p_header_num => 0); -- 4262811
37879 --
37880 -- set accounting line options
37881 --
37882 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
37883 p_natural_side_code => 'D'
37884 , p_gain_or_loss_flag => 'N'
37885 , p_gl_transfer_mode_code => 'S'
37886 , p_acct_entry_type_code => 'A'
37887 , p_switch_side_flag => 'Y'
37888 , p_merge_duplicate_code => 'N'
37889 );
37890 --
37891 l_acc_rev_natural_side_code := 'C'; -- 4262811
37892 --
37893 --
37894 -- set accounting line type info
37895 --
37896 xla_ae_lines_pkg.SetAcctLineType
37897 (p_component_type => l_component_type
37898 ,p_event_type_code => l_event_type_code
37899 ,p_line_definition_owner_code => l_line_definition_owner_code
37900 ,p_line_definition_code => l_line_definition_code
37901 ,p_accounting_line_code => l_component_code
37902 ,p_accounting_line_type_code => l_component_type_code
37903 ,p_accounting_line_appl_id => l_component_appl_id
37904 ,p_amb_context_code => l_amb_context_code
37905 ,p_entity_code => l_entity_code
37906 ,p_event_class_code => l_event_class_code);
37907 --
37908 -- set accounting class
37909 --
37910 xla_ae_lines_pkg.SetAcctClass(
37911 p_accounting_class_code => 'INTERORG_PAYABLES'
37912 , p_ae_header_id => l_ae_header_id
37913 );
37914
37915 --
37916 -- set rounding class
37917 --
37918 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
37919 'INTERORG_PAYABLES';
37920
37921 --
37922 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
37923 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
37924 --
37925 -- bulk performance
37926 --
37927 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
37928
37929 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
37930 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
37931
37932 -- 4955764
37933 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
37934 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
37935
37936 -- 4458381 Public Sector Enh
37937
37938 --
37939 -- set accounting attributes for the line type
37940 --
37941 l_entered_amt_idx := 3;
37942 l_accted_amt_idx := 8;
37943 l_bflow_applied_to_amt_idx := NULL; -- 5132302
37944 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
37945 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
37946 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
37947 l_rec_acct_attrs.array_char_value(2) := p_source_12;
37948 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
37949 l_rec_acct_attrs.array_num_value(3) := p_source_18;
37950 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
37951 l_rec_acct_attrs.array_char_value(4) := p_source_15;
37952 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
37953 l_rec_acct_attrs.array_date_value(5) := p_source_19;
37954 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
37955 l_rec_acct_attrs.array_num_value(6) := p_source_20;
37956 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
37957 l_rec_acct_attrs.array_char_value(7) := p_source_21;
37958 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
37959 l_rec_acct_attrs.array_num_value(8) := p_source_22;
37960
37961 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
37962 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
37963
37964 ---------------------------------------------------------------------------------------------------------------
37965 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
37966 ---------------------------------------------------------------------------------------------------------------
37967 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
37968
37969 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
37970 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
37971
37972 IF xla_accounting_cache_pkg.GetValueChar
37973 (p_source_code => 'LEDGER_CATEGORY_CODE'
37974 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
37975 AND l_bflow_method_code = 'PRIOR_ENTRY'
37976 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
37977 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
37978 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
37979 )
37980 THEN
37981 xla_ae_lines_pkg.BflowUpgEntry
37982 (p_business_method_code => l_bflow_method_code
37983 ,p_business_class_code => l_bflow_class_code
37984 ,p_balance_type => l_balance_type_code);
37985 ELSE
37986 NULL;
37987 -- No business flow processing for business flow method of NONE.
37988 END IF;
37989
37990 --
37991 -- call analytical criteria
37992 --
37993
37994 --
37995 -- call description
37996 --
37997 -- No description or it is inherited.
37998 --
37999 -- call ADRs
38000 -- Bug 4922099
38001 --
38002 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
38003 (NVL(l_actual_upg_option, 'N') = 'O') OR
38004 (NVL(l_enc_upg_option, 'N') = 'O')
38005 )
38006 THEN
38007 NULL;
38008 --
38009 --
38010
38011 l_ccid := AcctDerRule_4(
38012 p_application_id => p_application_id
38013 , p_ae_header_id => l_ae_header_id
38014 , p_source_4 => p_source_4
38015 , x_transaction_coa_id => l_adr_transaction_coa_id
38016 , x_accounting_coa_id => l_adr_accounting_coa_id
38017 , x_value_type_code => l_adr_value_type_code
38018 , p_side => 'NA'
38019 );
38020
38021 xla_ae_lines_pkg.set_ccid(
38022 p_code_combination_id => l_ccid
38023 , p_value_type_code => l_adr_value_type_code
38024 , p_transaction_coa_id => l_adr_transaction_coa_id
38025 , p_accounting_coa_id => l_adr_accounting_coa_id
38026 , p_adr_code => 'CST_DEFAULT'
38027 , p_adr_type_code => 'S'
38028 , p_component_type => l_component_type
38029 , p_component_code => l_component_code
38030 , p_component_type_code => l_component_type_code
38031 , p_component_appl_id => l_component_appl_id
38032 , p_amb_context_code => l_amb_context_code
38033 , p_side => 'NA'
38034 );
38035
38036
38037 --
38038 --
38039 END IF;
38040 --
38041 -- Bug 4922099
38042 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
38043 (NVL(l_enc_upg_option, 'N') = 'O')
38044 ) AND
38045 (l_bflow_method_code = 'PRIOR_ENTRY')
38046 )
38047 THEN
38048 IF
38049 --
38050 1 = 2
38051 --
38052 THEN
38053 xla_accounting_err_pkg.build_message
38054 (p_appli_s_name => 'XLA'
38055 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
38056 ,p_token_1 => 'LINE_NUMBER'
38057 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
38058 ,p_token_2 => 'LINE_TYPE_NAME'
38059 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
38060 l_component_type
38061 ,l_component_code
38062 ,l_component_type_code
38063 ,l_component_appl_id
38064 ,l_amb_context_code
38065 ,l_entity_code
38066 ,l_event_class_code
38067 )
38068 ,p_token_3 => 'OWNER'
38069 ,p_value_3 => xla_lookups_pkg.get_meaning(
38070 p_lookup_type => 'XLA_OWNER_TYPE'
38071 ,p_lookup_code => l_component_type_code
38072 )
38073 ,p_token_4 => 'PRODUCT_NAME'
38074 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
38075 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
38076 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
38077 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
38078 ,p_ae_header_id => NULL
38079 );
38080
38081 IF (C_LEVEL_ERROR>= g_log_level) THEN
38082 trace
38083 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
38084 ,p_level => C_LEVEL_ERROR
38085 ,p_module => l_log_module);
38086 END IF;
38087 END IF;
38088 END IF;
38089 --
38090 --
38091 ------------------------------------------------------------------------------------------------
38092 -- 4219869 Business Flow
38093 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
38094 -- Prior Entry. Currently, the following code is always generated.
38095 ------------------------------------------------------------------------------------------------
38096 XLA_AE_LINES_PKG.ValidateCurrentLine;
38097
38098 ------------------------------------------------------------------------------------
38099 -- 4219869 Business Flow
38100 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
38101 ------------------------------------------------------------------------------------
38102 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
38103
38104 ----------------------------------------------------------------------------------
38105 -- 4219869 Business Flow
38106 -- Update journal entry status -- Need to generate this within IF <condition>
38107 ----------------------------------------------------------------------------------
38108 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
38109 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
38110 ,p_balance_type_code => l_balance_type_code
38111 );
38112
38113 -------------------------------------------------------------------------------------------
38114 -- 4262811 - Generate the Accrual Reversal lines
38115 -------------------------------------------------------------------------------------------
38116 BEGIN
38117 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
38118 (g_array_event(p_event_id).array_value_num('header_index'));
38119 IF l_acc_rev_flag IS NULL THEN
38120 l_acc_rev_flag := 'N';
38121 END IF;
38122 EXCEPTION
38123 WHEN OTHERS THEN
38124 l_acc_rev_flag := 'N';
38125 END;
38126 --
38127 IF (l_acc_rev_flag = 'Y') THEN
38128
38129 -- 4645092 ------------------------------------------------------------------------------
38130 -- To allow MPA report to determine if it should generate report process
38131 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
38132 ------------------------------------------------------------------------------------------
38133
38134 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
38135 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
38136 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
38137 -- call ADRs
38138 -- Bug 4922099
38139 --
38140 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
38141 (NVL(l_actual_upg_option, 'N') = 'O') OR
38142 (NVL(l_enc_upg_option, 'N') = 'O')
38143 )
38144 THEN
38145 NULL;
38146 --
38147 --
38148
38149 l_ccid := AcctDerRule_4(
38150 p_application_id => p_application_id
38151 , p_ae_header_id => l_ae_header_id
38152 , p_source_4 => p_source_4
38153 , x_transaction_coa_id => l_adr_transaction_coa_id
38154 , x_accounting_coa_id => l_adr_accounting_coa_id
38155 , x_value_type_code => l_adr_value_type_code
38156 , p_side => 'NA'
38157 );
38158
38159 xla_ae_lines_pkg.set_ccid(
38160 p_code_combination_id => l_ccid
38161 , p_value_type_code => l_adr_value_type_code
38162 , p_transaction_coa_id => l_adr_transaction_coa_id
38163 , p_accounting_coa_id => l_adr_accounting_coa_id
38164 , p_adr_code => 'CST_DEFAULT'
38165 , p_adr_type_code => 'S'
38166 , p_component_type => l_component_type
38167 , p_component_code => l_component_code
38168 , p_component_type_code => l_component_type_code
38169 , p_component_appl_id => l_component_appl_id
38170 , p_amb_context_code => l_amb_context_code
38171 , p_side => 'NA'
38172 );
38173
38174
38175 --
38176 --
38177 END IF;
38178
38179 --
38180 -- Update the line information that should be overwritten
38181 --
38182 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
38183 p_header_num => 1);
38184 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
38185
38186 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
38187
38188 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
38189 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
38190 END IF;
38191
38192 --
38193 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
38194 --
38195 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
38196 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
38197 ELSE
38198 ---------------------------------------------------------------------------------------------------
38199 -- 4262811a Switch Sign
38200 ---------------------------------------------------------------------------------------------------
38201 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
38202 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
38203 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
38204 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
38205 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
38206 -- 5132302
38207 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
38208 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
38209
38210 END IF;
38211
38212 -- 4955764
38213 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
38214 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
38215
38216
38217 XLA_AE_LINES_PKG.ValidateCurrentLine;
38218 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
38219
38220 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
38221 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
38222 ,p_balance_type_code => l_balance_type_code);
38223
38224 END IF;
38225
38226 -----------------------------------------------------------------------------------------
38227 -- 4262811 Multiperiod Accounting
38228 -----------------------------------------------------------------------------------------
38229 -- No MPA option is assigned.
38230
38231
38232 END IF;
38233 END IF;
38234 --
38235
38236 --
38237 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
38238 trace
38239 (p_msg => 'END of AcctLineType_71'
38240 ,p_level => C_LEVEL_PROCEDURE
38241 ,p_module => l_log_module);
38242 END IF;
38243 --
38244 EXCEPTION
38245 WHEN xla_exceptions_pkg.application_exception THEN
38246 RAISE;
38247 WHEN OTHERS THEN
38248 xla_exceptions_pkg.raise_message
38249 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_71');
38250 END AcctLineType_71;
38251 --
38252
38253 ---------------------------------------
38254 --
38255 -- PRIVATE FUNCTION
38256 -- AcctLineType_72
38257 --
38258 ---------------------------------------
38259 PROCEDURE AcctLineType_72 (
38260 p_application_id IN NUMBER
38261 ,p_event_id IN NUMBER
38262 ,p_calculate_acctd_flag IN VARCHAR2
38263 ,p_calculate_g_l_flag IN VARCHAR2
38264 ,p_actual_flag IN OUT VARCHAR2
38265 ,p_balance_type_code OUT VARCHAR2
38266 ,p_gain_or_loss_ref OUT VARCHAR2
38267
38268 --Cost Management Default Account
38269 , p_source_4 IN NUMBER
38270 --Applied to Application ID
38271 , p_source_6 IN NUMBER
38272 --Applied to Distribution Link Type
38273 , p_source_7 IN VARCHAR2
38274 --Applied to Entity Code
38275 , p_source_8 IN VARCHAR2
38276 --DISTRIBUTION_IDENTIFIER
38277 , p_source_11 IN NUMBER
38278 --Distribution Type
38279 , p_source_12 IN VARCHAR2
38280 , p_source_12_meaning IN VARCHAR2
38281 --Encumbrance Reversal Amount Entered
38282 , p_source_14 IN NUMBER
38283 --Entered Currency Code
38284 , p_source_15 IN VARCHAR2
38285 --Transaction Encumbrance Reversal Amount
38286 , p_source_16 IN NUMBER
38287 --Entered Amount
38288 , p_source_18 IN NUMBER
38289 --Currency Conversion Date
38290 , p_source_19 IN DATE
38291 --Currency Conversion Rate
38292 , p_source_20 IN NUMBER
38293 --Currency Conversion Type
38294 , p_source_21 IN VARCHAR2
38295 --Accounted Amount
38296 , p_source_22 IN NUMBER
38297 --Accounting Line Type
38298 , p_source_24 IN NUMBER
38299 --Costing Encumbrance Upgrade Option
38300 , p_source_27 IN VARCHAR2
38301 --TXN_PO_DISTRIBUTION_ID
38302 , p_source_28 IN NUMBER
38303 --TXN_PO_HEADER_ID
38304 , p_source_29 IN NUMBER
38305 --Requisition Budget Account
38306 , p_source_30 IN NUMBER
38307 --Requisition Encumbrance Type Identifier
38308 , p_source_31 IN NUMBER
38309 )
38310 IS
38311
38312 l_component_type VARCHAR2(80);
38313 l_component_code VARCHAR2(30);
38314 l_component_type_code VARCHAR2(1);
38315 l_component_appl_id INTEGER;
38316 l_amb_context_code VARCHAR2(30);
38317 l_entity_code VARCHAR2(30);
38318 l_event_class_code VARCHAR2(30);
38319 l_ae_header_id NUMBER;
38320 l_event_type_code VARCHAR2(30);
38321 l_line_definition_code VARCHAR2(30);
38322 l_line_definition_owner_code VARCHAR2(1);
38323 --
38324 -- adr variables
38325 l_segment VARCHAR2(30);
38326 l_ccid NUMBER;
38327 l_adr_transaction_coa_id NUMBER;
38328 l_adr_accounting_coa_id NUMBER;
38329 l_adr_flexfield_segment_code VARCHAR2(30);
38330 l_adr_flex_value_set_id NUMBER;
38331 l_adr_value_type_code VARCHAR2(30);
38332 l_adr_value_combination_id NUMBER;
38333 l_adr_value_segment_code VARCHAR2(30);
38334
38335 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
38336 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
38337 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
38338 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
38339
38340 -- 4262811 Variables ------------------------------------------------------------------------------------------
38341 l_entered_amt_idx NUMBER;
38342 l_accted_amt_idx NUMBER;
38343 l_acc_rev_flag VARCHAR2(1);
38344 l_accrual_line_num NUMBER;
38345 l_tmp_amt NUMBER;
38346 l_acc_rev_natural_side_code VARCHAR2(1);
38347
38348 l_num_entries NUMBER;
38349 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
38350 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
38351 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
38352 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
38353 l_recog_line_1 NUMBER;
38354 l_recog_line_2 NUMBER;
38355
38356 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
38357 l_bflow_applied_to_amt NUMBER; -- 5132302
38358 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
38359
38360 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
38361
38362 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
38363 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
38364
38365 ---------------------------------------------------------------------------------------------------------------
38366
38367
38368 --
38369 -- bulk performance
38370 --
38371 l_balance_type_code VARCHAR2(1);
38372 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
38373 l_log_module VARCHAR2(240);
38374
38375 --
38376 -- Upgrade strategy
38377 --
38378 l_actual_upg_option VARCHAR2(1);
38379 l_enc_upg_option VARCHAR2(1);
38380
38381 --
38382 BEGIN
38383 --
38384 IF g_log_enabled THEN
38385 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_72';
38386 END IF;
38387 --
38388 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
38389
38390 trace
38391 (p_msg => 'BEGIN of AcctLineType_72'
38392 ,p_level => C_LEVEL_PROCEDURE
38393 ,p_module => l_log_module);
38394
38395 END IF;
38396 --
38397 l_component_type := 'AMB_JLT';
38398 l_component_code := 'INTERORG_PAYABLES';
38399 l_component_type_code := 'S';
38400 l_component_appl_id := 707;
38401 l_amb_context_code := 'DEFAULT';
38402 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
38403 l_event_class_code := 'FOB_RCPT_RECIPIENT_RCPT';
38404 l_event_type_code := 'FOB_RCPT_RECIPIENT_RCPT_ALL';
38405 l_line_definition_owner_code := 'S';
38406 l_line_definition_code := 'FOB_RCPT_RECIPIENT_RCPT';
38407 --
38408 l_balance_type_code := 'A';
38409 l_segment := NULL;
38410 l_ccid := NULL;
38411 l_adr_transaction_coa_id := NULL;
38412 l_adr_accounting_coa_id := NULL;
38413 l_adr_flexfield_segment_code := NULL;
38414 l_adr_flex_value_set_id := NULL;
38415 l_adr_value_type_code := NULL;
38416 l_adr_value_combination_id := NULL;
38417 l_adr_value_segment_code := NULL;
38418
38419 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
38420 l_bflow_class_code := ''; -- 4219869 Business Flow
38421 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
38422 l_budgetary_control_flag := 'N';
38423
38424 l_bflow_applied_to_amt_idx := NULL; -- 5132302
38425 l_bflow_applied_to_amt := NULL; -- 5132302
38426 l_entered_amt_idx := NULL; -- 4262811
38427 l_accted_amt_idx := NULL; -- 4262811
38428 l_acc_rev_flag := NULL; -- 4262811
38429 l_accrual_line_num := NULL; -- 4262811
38430 l_tmp_amt := NULL; -- 4262811
38431 --
38432
38433 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
38434 l_balance_type_code <> 'B' THEN
38435 IF NVL(p_source_24,9E125) = 9
38436 THEN
38437
38438 --
38439 XLA_AE_LINES_PKG.SetNewLine;
38440
38441 p_balance_type_code := l_balance_type_code;
38442 -- set the flag so later we will know whether the gain loss line needs to be created
38443
38444 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
38445 p_actual_flag :='A';
38446 END IF;
38447
38448 --
38449 -- bulk performance
38450 --
38451 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
38452 p_header_num => 0); -- 4262811
38453 --
38454 -- set accounting line options
38455 --
38456 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
38457 p_natural_side_code => 'D'
38458 , p_gain_or_loss_flag => 'N'
38459 , p_gl_transfer_mode_code => 'S'
38460 , p_acct_entry_type_code => 'A'
38461 , p_switch_side_flag => 'Y'
38462 , p_merge_duplicate_code => 'N'
38463 );
38464 --
38465 l_acc_rev_natural_side_code := 'C'; -- 4262811
38466 --
38467 --
38468 -- set accounting line type info
38469 --
38470 xla_ae_lines_pkg.SetAcctLineType
38471 (p_component_type => l_component_type
38472 ,p_event_type_code => l_event_type_code
38473 ,p_line_definition_owner_code => l_line_definition_owner_code
38474 ,p_line_definition_code => l_line_definition_code
38475 ,p_accounting_line_code => l_component_code
38476 ,p_accounting_line_type_code => l_component_type_code
38477 ,p_accounting_line_appl_id => l_component_appl_id
38478 ,p_amb_context_code => l_amb_context_code
38479 ,p_entity_code => l_entity_code
38480 ,p_event_class_code => l_event_class_code);
38481 --
38482 -- set accounting class
38483 --
38484 xla_ae_lines_pkg.SetAcctClass(
38485 p_accounting_class_code => 'INTERORG_PAYABLES'
38486 , p_ae_header_id => l_ae_header_id
38487 );
38488
38489 --
38490 -- set rounding class
38491 --
38492 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
38493 'INTERORG_PAYABLES';
38494
38495 --
38496 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
38497 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
38498 --
38499 -- bulk performance
38500 --
38501 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
38502
38503 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
38504 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
38505
38506 -- 4955764
38507 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
38508 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
38509
38510 -- 4458381 Public Sector Enh
38511
38512 --
38513 -- set accounting attributes for the line type
38514 --
38515 l_entered_amt_idx := 17;
38516 l_accted_amt_idx := 22;
38517 l_bflow_applied_to_amt_idx := NULL; -- 5132302
38518 l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
38519 l_rec_acct_attrs.array_num_value(1) := p_source_6;
38520 l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
38521 l_rec_acct_attrs.array_char_value(2) := p_source_7;
38522 l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
38523 l_rec_acct_attrs.array_char_value(3) := p_source_8;
38524 l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
38525 l_rec_acct_attrs.array_num_value(4) := to_char(p_source_28);
38526 l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
38527 l_rec_acct_attrs.array_num_value(5) := to_char(p_source_29);
38528 l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
38529 l_rec_acct_attrs.array_num_value(6) := to_char(p_source_11);
38530 l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
38531 l_rec_acct_attrs.array_char_value(7) := p_source_12;
38532 l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
38533 l_rec_acct_attrs.array_num_value(8) := TO_NUMBER(p_source_30);
38534 l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
38535 l_rec_acct_attrs.array_num_value(9) := p_source_14;
38536 l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
38537 l_rec_acct_attrs.array_char_value(10) := p_source_15;
38538 l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
38539 l_rec_acct_attrs.array_num_value(11) := p_source_16;
38540 l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
38541 l_rec_acct_attrs.array_num_value(12) := TO_NUMBER(p_source_30);
38542 l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
38543 l_rec_acct_attrs.array_num_value(13) := p_source_14;
38544 l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
38545 l_rec_acct_attrs.array_char_value(14) := p_source_15;
38546 l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
38547 l_rec_acct_attrs.array_num_value(15) := p_source_16;
38548 l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
38549 l_rec_acct_attrs.array_char_value(16) := p_source_27;
38550 l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
38551 l_rec_acct_attrs.array_num_value(17) := p_source_18;
38552 l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
38553 l_rec_acct_attrs.array_char_value(18) := p_source_15;
38554 l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
38555 l_rec_acct_attrs.array_date_value(19) := p_source_19;
38556 l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
38557 l_rec_acct_attrs.array_num_value(20) := p_source_20;
38558 l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
38559 l_rec_acct_attrs.array_char_value(21) := p_source_21;
38560 l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
38561 l_rec_acct_attrs.array_num_value(22) := p_source_22;
38562 l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
38563 l_rec_acct_attrs.array_num_value(23) := p_source_31;
38564 l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
38565 l_rec_acct_attrs.array_num_value(24) := p_source_31;
38566
38567 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
38568 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
38569
38570 ---------------------------------------------------------------------------------------------------------------
38571 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
38572 ---------------------------------------------------------------------------------------------------------------
38573 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
38574
38575 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
38576 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
38577
38578 IF xla_accounting_cache_pkg.GetValueChar
38579 (p_source_code => 'LEDGER_CATEGORY_CODE'
38580 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
38581 AND l_bflow_method_code = 'PRIOR_ENTRY'
38582 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
38583 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
38584 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
38585 )
38586 THEN
38587 xla_ae_lines_pkg.BflowUpgEntry
38588 (p_business_method_code => l_bflow_method_code
38589 ,p_business_class_code => l_bflow_class_code
38590 ,p_balance_type => l_balance_type_code);
38591 ELSE
38592 NULL;
38593 -- No business flow processing for business flow method of NONE.
38594 END IF;
38595
38596 --
38597 -- call analytical criteria
38598 --
38599
38600 --
38601 -- call description
38602 --
38603 -- No description or it is inherited.
38604 --
38605 -- call ADRs
38606 -- Bug 4922099
38607 --
38608 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
38609 (NVL(l_actual_upg_option, 'N') = 'O') OR
38610 (NVL(l_enc_upg_option, 'N') = 'O')
38611 )
38612 THEN
38613 NULL;
38614 --
38615 --
38616
38617 l_ccid := AcctDerRule_4(
38618 p_application_id => p_application_id
38619 , p_ae_header_id => l_ae_header_id
38620 , p_source_4 => p_source_4
38621 , x_transaction_coa_id => l_adr_transaction_coa_id
38622 , x_accounting_coa_id => l_adr_accounting_coa_id
38623 , x_value_type_code => l_adr_value_type_code
38624 , p_side => 'NA'
38625 );
38626
38627 xla_ae_lines_pkg.set_ccid(
38628 p_code_combination_id => l_ccid
38629 , p_value_type_code => l_adr_value_type_code
38630 , p_transaction_coa_id => l_adr_transaction_coa_id
38631 , p_accounting_coa_id => l_adr_accounting_coa_id
38632 , p_adr_code => 'CST_DEFAULT'
38633 , p_adr_type_code => 'S'
38634 , p_component_type => l_component_type
38635 , p_component_code => l_component_code
38636 , p_component_type_code => l_component_type_code
38637 , p_component_appl_id => l_component_appl_id
38638 , p_amb_context_code => l_amb_context_code
38639 , p_side => 'NA'
38640 );
38641
38642
38643 --
38644 --
38645 END IF;
38646 --
38647 -- Bug 4922099
38648 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
38649 (NVL(l_enc_upg_option, 'N') = 'O')
38650 ) AND
38651 (l_bflow_method_code = 'PRIOR_ENTRY')
38652 )
38653 THEN
38654 IF
38655 --
38656 1 = 2
38657 --
38658 THEN
38659 xla_accounting_err_pkg.build_message
38660 (p_appli_s_name => 'XLA'
38661 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
38662 ,p_token_1 => 'LINE_NUMBER'
38663 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
38664 ,p_token_2 => 'LINE_TYPE_NAME'
38665 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
38666 l_component_type
38667 ,l_component_code
38668 ,l_component_type_code
38669 ,l_component_appl_id
38670 ,l_amb_context_code
38671 ,l_entity_code
38672 ,l_event_class_code
38673 )
38674 ,p_token_3 => 'OWNER'
38675 ,p_value_3 => xla_lookups_pkg.get_meaning(
38676 p_lookup_type => 'XLA_OWNER_TYPE'
38677 ,p_lookup_code => l_component_type_code
38678 )
38679 ,p_token_4 => 'PRODUCT_NAME'
38680 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
38681 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
38682 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
38683 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
38684 ,p_ae_header_id => NULL
38685 );
38686
38687 IF (C_LEVEL_ERROR>= g_log_level) THEN
38688 trace
38689 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
38690 ,p_level => C_LEVEL_ERROR
38691 ,p_module => l_log_module);
38692 END IF;
38693 END IF;
38694 END IF;
38695 --
38696 --
38697 ------------------------------------------------------------------------------------------------
38698 -- 4219869 Business Flow
38699 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
38700 -- Prior Entry. Currently, the following code is always generated.
38701 ------------------------------------------------------------------------------------------------
38702 XLA_AE_LINES_PKG.ValidateCurrentLine;
38703
38704 ------------------------------------------------------------------------------------
38705 -- 4219869 Business Flow
38706 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
38707 ------------------------------------------------------------------------------------
38708 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
38709
38710 ----------------------------------------------------------------------------------
38711 -- 4219869 Business Flow
38712 -- Update journal entry status -- Need to generate this within IF <condition>
38713 ----------------------------------------------------------------------------------
38714 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
38715 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
38716 ,p_balance_type_code => l_balance_type_code
38717 );
38718
38719 -------------------------------------------------------------------------------------------
38720 -- 4262811 - Generate the Accrual Reversal lines
38721 -------------------------------------------------------------------------------------------
38722 BEGIN
38723 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
38724 (g_array_event(p_event_id).array_value_num('header_index'));
38725 IF l_acc_rev_flag IS NULL THEN
38726 l_acc_rev_flag := 'N';
38727 END IF;
38728 EXCEPTION
38729 WHEN OTHERS THEN
38730 l_acc_rev_flag := 'N';
38731 END;
38732 --
38733 IF (l_acc_rev_flag = 'Y') THEN
38734
38735 -- 4645092 ------------------------------------------------------------------------------
38736 -- To allow MPA report to determine if it should generate report process
38737 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
38738 ------------------------------------------------------------------------------------------
38739
38740 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
38741 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
38742 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
38743 -- call ADRs
38744 -- Bug 4922099
38745 --
38746 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
38747 (NVL(l_actual_upg_option, 'N') = 'O') OR
38748 (NVL(l_enc_upg_option, 'N') = 'O')
38749 )
38750 THEN
38751 NULL;
38752 --
38753 --
38754
38755 l_ccid := AcctDerRule_4(
38756 p_application_id => p_application_id
38757 , p_ae_header_id => l_ae_header_id
38758 , p_source_4 => p_source_4
38759 , x_transaction_coa_id => l_adr_transaction_coa_id
38760 , x_accounting_coa_id => l_adr_accounting_coa_id
38761 , x_value_type_code => l_adr_value_type_code
38762 , p_side => 'NA'
38763 );
38764
38765 xla_ae_lines_pkg.set_ccid(
38766 p_code_combination_id => l_ccid
38767 , p_value_type_code => l_adr_value_type_code
38768 , p_transaction_coa_id => l_adr_transaction_coa_id
38769 , p_accounting_coa_id => l_adr_accounting_coa_id
38770 , p_adr_code => 'CST_DEFAULT'
38771 , p_adr_type_code => 'S'
38772 , p_component_type => l_component_type
38773 , p_component_code => l_component_code
38774 , p_component_type_code => l_component_type_code
38775 , p_component_appl_id => l_component_appl_id
38776 , p_amb_context_code => l_amb_context_code
38777 , p_side => 'NA'
38778 );
38779
38780
38781 --
38782 --
38783 END IF;
38784
38785 --
38786 -- Update the line information that should be overwritten
38787 --
38788 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
38789 p_header_num => 1);
38790 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
38791
38792 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
38793
38794 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
38795 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
38796 END IF;
38797
38798 --
38799 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
38800 --
38801 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
38802 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
38803 ELSE
38804 ---------------------------------------------------------------------------------------------------
38805 -- 4262811a Switch Sign
38806 ---------------------------------------------------------------------------------------------------
38807 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
38808 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
38809 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
38810 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
38811 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
38812 -- 5132302
38813 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
38814 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
38815
38816 END IF;
38817
38818 -- 4955764
38819 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
38820 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
38821
38822
38823 XLA_AE_LINES_PKG.ValidateCurrentLine;
38824 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
38825
38826 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
38827 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
38828 ,p_balance_type_code => l_balance_type_code);
38829
38830 END IF;
38831
38832 -----------------------------------------------------------------------------------------
38833 -- 4262811 Multiperiod Accounting
38834 -----------------------------------------------------------------------------------------
38835 -- No MPA option is assigned.
38836
38837
38838 END IF;
38839 END IF;
38840 --
38841
38842 --
38843 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
38844 trace
38845 (p_msg => 'END of AcctLineType_72'
38846 ,p_level => C_LEVEL_PROCEDURE
38847 ,p_module => l_log_module);
38848 END IF;
38849 --
38850 EXCEPTION
38851 WHEN xla_exceptions_pkg.application_exception THEN
38852 RAISE;
38853 WHEN OTHERS THEN
38854 xla_exceptions_pkg.raise_message
38855 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_72');
38856 END AcctLineType_72;
38857 --
38858
38859 ---------------------------------------
38860 --
38861 -- PRIVATE FUNCTION
38862 -- AcctLineType_73
38863 --
38864 ---------------------------------------
38865 PROCEDURE AcctLineType_73 (
38866 p_application_id IN NUMBER
38867 ,p_event_id IN NUMBER
38868 ,p_calculate_acctd_flag IN VARCHAR2
38869 ,p_calculate_g_l_flag IN VARCHAR2
38870 ,p_actual_flag IN OUT VARCHAR2
38871 ,p_balance_type_code OUT VARCHAR2
38872 ,p_gain_or_loss_ref OUT VARCHAR2
38873
38874 --Cost Management Default Account
38875 , p_source_4 IN NUMBER
38876 --Applied to Application ID
38877 , p_source_6 IN NUMBER
38878 --Applied to Distribution Link Type
38879 , p_source_7 IN VARCHAR2
38880 --Applied to Entity Code
38881 , p_source_8 IN VARCHAR2
38882 --DISTRIBUTION_IDENTIFIER
38883 , p_source_11 IN NUMBER
38884 --Distribution Type
38885 , p_source_12 IN VARCHAR2
38886 , p_source_12_meaning IN VARCHAR2
38887 --Encumbrance Reversal Amount Entered
38888 , p_source_14 IN NUMBER
38889 --Entered Currency Code
38890 , p_source_15 IN VARCHAR2
38891 --Transaction Encumbrance Reversal Amount
38892 , p_source_16 IN NUMBER
38893 --Entered Amount
38894 , p_source_18 IN NUMBER
38895 --Currency Conversion Date
38896 , p_source_19 IN DATE
38897 --Currency Conversion Rate
38898 , p_source_20 IN NUMBER
38899 --Currency Conversion Type
38900 , p_source_21 IN VARCHAR2
38901 --Accounted Amount
38902 , p_source_22 IN NUMBER
38903 --Accounting Line Type
38904 , p_source_24 IN NUMBER
38905 --Costing Encumbrance Upgrade Option
38906 , p_source_27 IN VARCHAR2
38907 --TXN_PO_DISTRIBUTION_ID
38908 , p_source_28 IN NUMBER
38909 --TXN_PO_HEADER_ID
38910 , p_source_29 IN NUMBER
38911 --Requisition Budget Account
38912 , p_source_30 IN NUMBER
38913 --Requisition Encumbrance Type Identifier
38914 , p_source_31 IN NUMBER
38915 )
38916 IS
38917
38918 l_component_type VARCHAR2(80);
38919 l_component_code VARCHAR2(30);
38920 l_component_type_code VARCHAR2(1);
38921 l_component_appl_id INTEGER;
38922 l_amb_context_code VARCHAR2(30);
38923 l_entity_code VARCHAR2(30);
38924 l_event_class_code VARCHAR2(30);
38925 l_ae_header_id NUMBER;
38926 l_event_type_code VARCHAR2(30);
38927 l_line_definition_code VARCHAR2(30);
38928 l_line_definition_owner_code VARCHAR2(1);
38929 --
38930 -- adr variables
38931 l_segment VARCHAR2(30);
38932 l_ccid NUMBER;
38933 l_adr_transaction_coa_id NUMBER;
38934 l_adr_accounting_coa_id NUMBER;
38935 l_adr_flexfield_segment_code VARCHAR2(30);
38936 l_adr_flex_value_set_id NUMBER;
38937 l_adr_value_type_code VARCHAR2(30);
38938 l_adr_value_combination_id NUMBER;
38939 l_adr_value_segment_code VARCHAR2(30);
38940
38941 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
38942 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
38943 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
38944 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
38945
38946 -- 4262811 Variables ------------------------------------------------------------------------------------------
38947 l_entered_amt_idx NUMBER;
38948 l_accted_amt_idx NUMBER;
38949 l_acc_rev_flag VARCHAR2(1);
38950 l_accrual_line_num NUMBER;
38951 l_tmp_amt NUMBER;
38952 l_acc_rev_natural_side_code VARCHAR2(1);
38953
38954 l_num_entries NUMBER;
38955 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
38956 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
38957 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
38958 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
38959 l_recog_line_1 NUMBER;
38960 l_recog_line_2 NUMBER;
38961
38962 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
38963 l_bflow_applied_to_amt NUMBER; -- 5132302
38964 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
38965
38966 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
38967
38968 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
38969 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
38970
38971 ---------------------------------------------------------------------------------------------------------------
38972
38973
38974 --
38975 -- bulk performance
38976 --
38977 l_balance_type_code VARCHAR2(1);
38978 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
38979 l_log_module VARCHAR2(240);
38980
38981 --
38982 -- Upgrade strategy
38983 --
38984 l_actual_upg_option VARCHAR2(1);
38985 l_enc_upg_option VARCHAR2(1);
38986
38987 --
38988 BEGIN
38989 --
38990 IF g_log_enabled THEN
38991 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_73';
38992 END IF;
38993 --
38994 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
38995
38996 trace
38997 (p_msg => 'BEGIN of AcctLineType_73'
38998 ,p_level => C_LEVEL_PROCEDURE
38999 ,p_module => l_log_module);
39000
39001 END IF;
39002 --
39003 l_component_type := 'AMB_JLT';
39004 l_component_code := 'INTERORG_PAYABLES';
39005 l_component_type_code := 'S';
39006 l_component_appl_id := 707;
39007 l_amb_context_code := 'DEFAULT';
39008 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
39009 l_event_class_code := 'DIR_INTERORG_RCPT';
39010 l_event_type_code := 'DIR_INTERORG_RCPT_ALL';
39011 l_line_definition_owner_code := 'S';
39012 l_line_definition_code := 'DIRECT_INTERORG_RCPT';
39013 --
39014 l_balance_type_code := 'A';
39015 l_segment := NULL;
39016 l_ccid := NULL;
39017 l_adr_transaction_coa_id := NULL;
39018 l_adr_accounting_coa_id := NULL;
39019 l_adr_flexfield_segment_code := NULL;
39020 l_adr_flex_value_set_id := NULL;
39021 l_adr_value_type_code := NULL;
39022 l_adr_value_combination_id := NULL;
39023 l_adr_value_segment_code := NULL;
39024
39025 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
39026 l_bflow_class_code := ''; -- 4219869 Business Flow
39027 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
39028 l_budgetary_control_flag := 'N';
39029
39030 l_bflow_applied_to_amt_idx := NULL; -- 5132302
39031 l_bflow_applied_to_amt := NULL; -- 5132302
39032 l_entered_amt_idx := NULL; -- 4262811
39033 l_accted_amt_idx := NULL; -- 4262811
39034 l_acc_rev_flag := NULL; -- 4262811
39035 l_accrual_line_num := NULL; -- 4262811
39036 l_tmp_amt := NULL; -- 4262811
39037 --
39038
39039 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
39040 l_balance_type_code <> 'B' THEN
39041 IF NVL(p_source_24,9E125) = 9
39042 THEN
39043
39044 --
39045 XLA_AE_LINES_PKG.SetNewLine;
39046
39047 p_balance_type_code := l_balance_type_code;
39048 -- set the flag so later we will know whether the gain loss line needs to be created
39049
39050 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
39051 p_actual_flag :='A';
39052 END IF;
39053
39054 --
39055 -- bulk performance
39056 --
39057 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
39058 p_header_num => 0); -- 4262811
39059 --
39060 -- set accounting line options
39061 --
39062 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
39063 p_natural_side_code => 'D'
39064 , p_gain_or_loss_flag => 'N'
39065 , p_gl_transfer_mode_code => 'S'
39066 , p_acct_entry_type_code => 'A'
39067 , p_switch_side_flag => 'Y'
39068 , p_merge_duplicate_code => 'N'
39069 );
39070 --
39071 l_acc_rev_natural_side_code := 'C'; -- 4262811
39072 --
39073 --
39074 -- set accounting line type info
39075 --
39076 xla_ae_lines_pkg.SetAcctLineType
39077 (p_component_type => l_component_type
39078 ,p_event_type_code => l_event_type_code
39079 ,p_line_definition_owner_code => l_line_definition_owner_code
39080 ,p_line_definition_code => l_line_definition_code
39081 ,p_accounting_line_code => l_component_code
39082 ,p_accounting_line_type_code => l_component_type_code
39083 ,p_accounting_line_appl_id => l_component_appl_id
39084 ,p_amb_context_code => l_amb_context_code
39085 ,p_entity_code => l_entity_code
39086 ,p_event_class_code => l_event_class_code);
39087 --
39088 -- set accounting class
39089 --
39090 xla_ae_lines_pkg.SetAcctClass(
39091 p_accounting_class_code => 'INTERORG_PAYABLES'
39092 , p_ae_header_id => l_ae_header_id
39093 );
39094
39095 --
39096 -- set rounding class
39097 --
39098 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
39099 'INTERORG_PAYABLES';
39100
39101 --
39102 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
39103 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
39104 --
39105 -- bulk performance
39106 --
39107 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
39108
39109 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
39110 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
39111
39112 -- 4955764
39113 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
39114 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
39115
39116 -- 4458381 Public Sector Enh
39117
39118 --
39119 -- set accounting attributes for the line type
39120 --
39121 l_entered_amt_idx := 17;
39122 l_accted_amt_idx := 22;
39123 l_bflow_applied_to_amt_idx := NULL; -- 5132302
39124 l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
39125 l_rec_acct_attrs.array_num_value(1) := p_source_6;
39126 l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
39127 l_rec_acct_attrs.array_char_value(2) := p_source_7;
39128 l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
39129 l_rec_acct_attrs.array_char_value(3) := p_source_8;
39130 l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
39131 l_rec_acct_attrs.array_num_value(4) := to_char(p_source_28);
39132 l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
39133 l_rec_acct_attrs.array_num_value(5) := to_char(p_source_29);
39134 l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
39135 l_rec_acct_attrs.array_num_value(6) := to_char(p_source_11);
39136 l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
39137 l_rec_acct_attrs.array_char_value(7) := p_source_12;
39138 l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
39139 l_rec_acct_attrs.array_num_value(8) := TO_NUMBER(p_source_30);
39140 l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
39141 l_rec_acct_attrs.array_num_value(9) := p_source_14;
39142 l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
39143 l_rec_acct_attrs.array_char_value(10) := p_source_15;
39144 l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
39145 l_rec_acct_attrs.array_num_value(11) := p_source_16;
39146 l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
39147 l_rec_acct_attrs.array_num_value(12) := TO_NUMBER(p_source_30);
39148 l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
39149 l_rec_acct_attrs.array_num_value(13) := p_source_14;
39150 l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
39151 l_rec_acct_attrs.array_char_value(14) := p_source_15;
39152 l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
39153 l_rec_acct_attrs.array_num_value(15) := p_source_16;
39154 l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
39155 l_rec_acct_attrs.array_char_value(16) := p_source_27;
39156 l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
39157 l_rec_acct_attrs.array_num_value(17) := p_source_18;
39158 l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
39159 l_rec_acct_attrs.array_char_value(18) := p_source_15;
39160 l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
39161 l_rec_acct_attrs.array_date_value(19) := p_source_19;
39162 l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
39163 l_rec_acct_attrs.array_num_value(20) := p_source_20;
39164 l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
39165 l_rec_acct_attrs.array_char_value(21) := p_source_21;
39166 l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
39167 l_rec_acct_attrs.array_num_value(22) := p_source_22;
39168 l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
39169 l_rec_acct_attrs.array_num_value(23) := p_source_31;
39170 l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
39171 l_rec_acct_attrs.array_num_value(24) := p_source_31;
39172
39173 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
39174 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
39175
39176 ---------------------------------------------------------------------------------------------------------------
39177 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
39178 ---------------------------------------------------------------------------------------------------------------
39179 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
39180
39181 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
39182 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
39183
39184 IF xla_accounting_cache_pkg.GetValueChar
39185 (p_source_code => 'LEDGER_CATEGORY_CODE'
39186 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
39187 AND l_bflow_method_code = 'PRIOR_ENTRY'
39188 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
39189 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
39190 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
39191 )
39192 THEN
39193 xla_ae_lines_pkg.BflowUpgEntry
39194 (p_business_method_code => l_bflow_method_code
39195 ,p_business_class_code => l_bflow_class_code
39196 ,p_balance_type => l_balance_type_code);
39197 ELSE
39198 NULL;
39199 -- No business flow processing for business flow method of NONE.
39200 END IF;
39201
39202 --
39203 -- call analytical criteria
39204 --
39205
39206 --
39207 -- call description
39208 --
39209 -- No description or it is inherited.
39210 --
39211 -- call ADRs
39212 -- Bug 4922099
39213 --
39214 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
39215 (NVL(l_actual_upg_option, 'N') = 'O') OR
39216 (NVL(l_enc_upg_option, 'N') = 'O')
39217 )
39218 THEN
39219 NULL;
39220 --
39221 --
39222
39223 l_ccid := AcctDerRule_4(
39224 p_application_id => p_application_id
39225 , p_ae_header_id => l_ae_header_id
39226 , p_source_4 => p_source_4
39227 , x_transaction_coa_id => l_adr_transaction_coa_id
39228 , x_accounting_coa_id => l_adr_accounting_coa_id
39229 , x_value_type_code => l_adr_value_type_code
39230 , p_side => 'NA'
39231 );
39232
39233 xla_ae_lines_pkg.set_ccid(
39234 p_code_combination_id => l_ccid
39235 , p_value_type_code => l_adr_value_type_code
39236 , p_transaction_coa_id => l_adr_transaction_coa_id
39237 , p_accounting_coa_id => l_adr_accounting_coa_id
39238 , p_adr_code => 'CST_DEFAULT'
39239 , p_adr_type_code => 'S'
39240 , p_component_type => l_component_type
39241 , p_component_code => l_component_code
39242 , p_component_type_code => l_component_type_code
39243 , p_component_appl_id => l_component_appl_id
39244 , p_amb_context_code => l_amb_context_code
39245 , p_side => 'NA'
39246 );
39247
39248
39249 --
39250 --
39251 END IF;
39252 --
39253 -- Bug 4922099
39254 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
39255 (NVL(l_enc_upg_option, 'N') = 'O')
39256 ) AND
39257 (l_bflow_method_code = 'PRIOR_ENTRY')
39258 )
39259 THEN
39260 IF
39261 --
39262 1 = 2
39263 --
39264 THEN
39265 xla_accounting_err_pkg.build_message
39266 (p_appli_s_name => 'XLA'
39267 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
39268 ,p_token_1 => 'LINE_NUMBER'
39269 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
39270 ,p_token_2 => 'LINE_TYPE_NAME'
39271 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
39272 l_component_type
39273 ,l_component_code
39274 ,l_component_type_code
39275 ,l_component_appl_id
39276 ,l_amb_context_code
39277 ,l_entity_code
39278 ,l_event_class_code
39279 )
39280 ,p_token_3 => 'OWNER'
39281 ,p_value_3 => xla_lookups_pkg.get_meaning(
39282 p_lookup_type => 'XLA_OWNER_TYPE'
39283 ,p_lookup_code => l_component_type_code
39284 )
39285 ,p_token_4 => 'PRODUCT_NAME'
39286 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
39287 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
39288 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
39289 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
39290 ,p_ae_header_id => NULL
39291 );
39292
39293 IF (C_LEVEL_ERROR>= g_log_level) THEN
39294 trace
39295 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
39296 ,p_level => C_LEVEL_ERROR
39297 ,p_module => l_log_module);
39298 END IF;
39299 END IF;
39300 END IF;
39301 --
39302 --
39303 ------------------------------------------------------------------------------------------------
39304 -- 4219869 Business Flow
39305 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
39306 -- Prior Entry. Currently, the following code is always generated.
39307 ------------------------------------------------------------------------------------------------
39308 XLA_AE_LINES_PKG.ValidateCurrentLine;
39309
39310 ------------------------------------------------------------------------------------
39311 -- 4219869 Business Flow
39312 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
39313 ------------------------------------------------------------------------------------
39314 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
39315
39316 ----------------------------------------------------------------------------------
39317 -- 4219869 Business Flow
39318 -- Update journal entry status -- Need to generate this within IF <condition>
39319 ----------------------------------------------------------------------------------
39320 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
39321 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
39322 ,p_balance_type_code => l_balance_type_code
39323 );
39324
39325 -------------------------------------------------------------------------------------------
39326 -- 4262811 - Generate the Accrual Reversal lines
39327 -------------------------------------------------------------------------------------------
39328 BEGIN
39329 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
39330 (g_array_event(p_event_id).array_value_num('header_index'));
39331 IF l_acc_rev_flag IS NULL THEN
39332 l_acc_rev_flag := 'N';
39333 END IF;
39334 EXCEPTION
39335 WHEN OTHERS THEN
39336 l_acc_rev_flag := 'N';
39337 END;
39338 --
39339 IF (l_acc_rev_flag = 'Y') THEN
39340
39341 -- 4645092 ------------------------------------------------------------------------------
39342 -- To allow MPA report to determine if it should generate report process
39343 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
39344 ------------------------------------------------------------------------------------------
39345
39346 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
39347 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
39348 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
39349 -- call ADRs
39350 -- Bug 4922099
39351 --
39352 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
39353 (NVL(l_actual_upg_option, 'N') = 'O') OR
39354 (NVL(l_enc_upg_option, 'N') = 'O')
39355 )
39356 THEN
39357 NULL;
39358 --
39359 --
39360
39361 l_ccid := AcctDerRule_4(
39362 p_application_id => p_application_id
39363 , p_ae_header_id => l_ae_header_id
39364 , p_source_4 => p_source_4
39365 , x_transaction_coa_id => l_adr_transaction_coa_id
39366 , x_accounting_coa_id => l_adr_accounting_coa_id
39367 , x_value_type_code => l_adr_value_type_code
39368 , p_side => 'NA'
39369 );
39370
39371 xla_ae_lines_pkg.set_ccid(
39372 p_code_combination_id => l_ccid
39373 , p_value_type_code => l_adr_value_type_code
39374 , p_transaction_coa_id => l_adr_transaction_coa_id
39375 , p_accounting_coa_id => l_adr_accounting_coa_id
39376 , p_adr_code => 'CST_DEFAULT'
39377 , p_adr_type_code => 'S'
39378 , p_component_type => l_component_type
39379 , p_component_code => l_component_code
39380 , p_component_type_code => l_component_type_code
39381 , p_component_appl_id => l_component_appl_id
39382 , p_amb_context_code => l_amb_context_code
39383 , p_side => 'NA'
39384 );
39385
39386
39387 --
39388 --
39389 END IF;
39390
39391 --
39392 -- Update the line information that should be overwritten
39393 --
39394 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
39395 p_header_num => 1);
39396 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
39397
39398 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
39399
39400 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
39401 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
39402 END IF;
39403
39404 --
39405 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
39406 --
39407 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
39408 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
39409 ELSE
39410 ---------------------------------------------------------------------------------------------------
39411 -- 4262811a Switch Sign
39412 ---------------------------------------------------------------------------------------------------
39413 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
39414 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
39415 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
39416 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
39417 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
39418 -- 5132302
39419 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
39420 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
39421
39422 END IF;
39423
39424 -- 4955764
39425 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
39426 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
39427
39428
39429 XLA_AE_LINES_PKG.ValidateCurrentLine;
39430 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
39431
39432 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
39433 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
39434 ,p_balance_type_code => l_balance_type_code);
39435
39436 END IF;
39437
39438 -----------------------------------------------------------------------------------------
39439 -- 4262811 Multiperiod Accounting
39440 -----------------------------------------------------------------------------------------
39441 -- No MPA option is assigned.
39442
39443
39444 END IF;
39445 END IF;
39446 --
39447
39448 --
39449 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
39450 trace
39451 (p_msg => 'END of AcctLineType_73'
39452 ,p_level => C_LEVEL_PROCEDURE
39453 ,p_module => l_log_module);
39454 END IF;
39455 --
39456 EXCEPTION
39457 WHEN xla_exceptions_pkg.application_exception THEN
39458 RAISE;
39459 WHEN OTHERS THEN
39460 xla_exceptions_pkg.raise_message
39461 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_73');
39462 END AcctLineType_73;
39463 --
39464
39465 ---------------------------------------
39466 --
39467 -- PRIVATE FUNCTION
39468 -- AcctLineType_74
39469 --
39470 ---------------------------------------
39471 PROCEDURE AcctLineType_74 (
39472 p_application_id IN NUMBER
39473 ,p_event_id IN NUMBER
39474 ,p_calculate_acctd_flag IN VARCHAR2
39475 ,p_calculate_g_l_flag IN VARCHAR2
39476 ,p_actual_flag IN OUT VARCHAR2
39477 ,p_balance_type_code OUT VARCHAR2
39478 ,p_gain_or_loss_ref OUT VARCHAR2
39479
39480 --Cost Management Default Account
39481 , p_source_4 IN NUMBER
39482 --DISTRIBUTION_IDENTIFIER
39483 , p_source_11 IN NUMBER
39484 --Distribution Type
39485 , p_source_12 IN VARCHAR2
39486 , p_source_12_meaning IN VARCHAR2
39487 --Entered Currency Code
39488 , p_source_15 IN VARCHAR2
39489 --Entered Amount
39490 , p_source_18 IN NUMBER
39491 --Currency Conversion Date
39492 , p_source_19 IN DATE
39493 --Currency Conversion Rate
39494 , p_source_20 IN NUMBER
39495 --Currency Conversion Type
39496 , p_source_21 IN VARCHAR2
39497 --Accounted Amount
39498 , p_source_22 IN NUMBER
39499 --Accounting Line Type
39500 , p_source_24 IN NUMBER
39501 )
39502 IS
39503
39504 l_component_type VARCHAR2(80);
39505 l_component_code VARCHAR2(30);
39506 l_component_type_code VARCHAR2(1);
39507 l_component_appl_id INTEGER;
39508 l_amb_context_code VARCHAR2(30);
39509 l_entity_code VARCHAR2(30);
39510 l_event_class_code VARCHAR2(30);
39511 l_ae_header_id NUMBER;
39512 l_event_type_code VARCHAR2(30);
39513 l_line_definition_code VARCHAR2(30);
39514 l_line_definition_owner_code VARCHAR2(1);
39515 --
39516 -- adr variables
39517 l_segment VARCHAR2(30);
39518 l_ccid NUMBER;
39519 l_adr_transaction_coa_id NUMBER;
39520 l_adr_accounting_coa_id NUMBER;
39521 l_adr_flexfield_segment_code VARCHAR2(30);
39522 l_adr_flex_value_set_id NUMBER;
39523 l_adr_value_type_code VARCHAR2(30);
39524 l_adr_value_combination_id NUMBER;
39525 l_adr_value_segment_code VARCHAR2(30);
39526
39527 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
39528 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
39529 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
39530 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
39531
39532 -- 4262811 Variables ------------------------------------------------------------------------------------------
39533 l_entered_amt_idx NUMBER;
39534 l_accted_amt_idx NUMBER;
39535 l_acc_rev_flag VARCHAR2(1);
39536 l_accrual_line_num NUMBER;
39537 l_tmp_amt NUMBER;
39538 l_acc_rev_natural_side_code VARCHAR2(1);
39539
39540 l_num_entries NUMBER;
39541 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
39542 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
39543 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
39544 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
39545 l_recog_line_1 NUMBER;
39546 l_recog_line_2 NUMBER;
39547
39548 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
39549 l_bflow_applied_to_amt NUMBER; -- 5132302
39550 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
39551
39552 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
39553
39554 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
39555 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
39556
39557 ---------------------------------------------------------------------------------------------------------------
39558
39559
39560 --
39561 -- bulk performance
39562 --
39563 l_balance_type_code VARCHAR2(1);
39564 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
39565 l_log_module VARCHAR2(240);
39566
39567 --
39568 -- Upgrade strategy
39569 --
39570 l_actual_upg_option VARCHAR2(1);
39571 l_enc_upg_option VARCHAR2(1);
39572
39573 --
39574 BEGIN
39575 --
39576 IF g_log_enabled THEN
39577 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_74';
39578 END IF;
39579 --
39580 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
39581
39582 trace
39583 (p_msg => 'BEGIN of AcctLineType_74'
39584 ,p_level => C_LEVEL_PROCEDURE
39585 ,p_module => l_log_module);
39586
39587 END IF;
39588 --
39589 l_component_type := 'AMB_JLT';
39590 l_component_code := 'INTERORG_PAYABLES';
39591 l_component_type_code := 'S';
39592 l_component_appl_id := 707;
39593 l_amb_context_code := 'DEFAULT';
39594 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
39595 l_event_class_code := 'USER_DEFINE';
39596 l_event_type_code := 'UFOB_SHIP_RECIPIENT_SHIP_NO_TP';
39597 l_line_definition_owner_code := 'S';
39598 l_line_definition_code := 'USER_FOB_SHIP_RECP_SHIP_NO_TP';
39599 --
39600 l_balance_type_code := 'A';
39601 l_segment := NULL;
39602 l_ccid := NULL;
39603 l_adr_transaction_coa_id := NULL;
39604 l_adr_accounting_coa_id := NULL;
39605 l_adr_flexfield_segment_code := NULL;
39606 l_adr_flex_value_set_id := NULL;
39607 l_adr_value_type_code := NULL;
39608 l_adr_value_combination_id := NULL;
39609 l_adr_value_segment_code := NULL;
39610
39611 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
39612 l_bflow_class_code := ''; -- 4219869 Business Flow
39613 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
39614 l_budgetary_control_flag := 'N';
39615
39616 l_bflow_applied_to_amt_idx := NULL; -- 5132302
39617 l_bflow_applied_to_amt := NULL; -- 5132302
39618 l_entered_amt_idx := NULL; -- 4262811
39619 l_accted_amt_idx := NULL; -- 4262811
39620 l_acc_rev_flag := NULL; -- 4262811
39621 l_accrual_line_num := NULL; -- 4262811
39622 l_tmp_amt := NULL; -- 4262811
39623 --
39624
39625 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
39626 l_balance_type_code <> 'B' THEN
39627 IF NVL(p_source_24,9E125) = 9
39628 THEN
39629
39630 --
39631 XLA_AE_LINES_PKG.SetNewLine;
39632
39633 p_balance_type_code := l_balance_type_code;
39634 -- set the flag so later we will know whether the gain loss line needs to be created
39635
39636 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
39637 p_actual_flag :='A';
39638 END IF;
39639
39640 --
39641 -- bulk performance
39642 --
39643 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
39644 p_header_num => 0); -- 4262811
39645 --
39646 -- set accounting line options
39647 --
39648 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
39649 p_natural_side_code => 'D'
39650 , p_gain_or_loss_flag => 'N'
39651 , p_gl_transfer_mode_code => 'S'
39652 , p_acct_entry_type_code => 'A'
39653 , p_switch_side_flag => 'Y'
39654 , p_merge_duplicate_code => 'N'
39655 );
39656 --
39657 l_acc_rev_natural_side_code := 'C'; -- 4262811
39658 --
39659 --
39660 -- set accounting line type info
39661 --
39662 xla_ae_lines_pkg.SetAcctLineType
39663 (p_component_type => l_component_type
39664 ,p_event_type_code => l_event_type_code
39665 ,p_line_definition_owner_code => l_line_definition_owner_code
39666 ,p_line_definition_code => l_line_definition_code
39667 ,p_accounting_line_code => l_component_code
39668 ,p_accounting_line_type_code => l_component_type_code
39669 ,p_accounting_line_appl_id => l_component_appl_id
39670 ,p_amb_context_code => l_amb_context_code
39671 ,p_entity_code => l_entity_code
39672 ,p_event_class_code => l_event_class_code);
39673 --
39674 -- set accounting class
39675 --
39676 xla_ae_lines_pkg.SetAcctClass(
39677 p_accounting_class_code => 'INTERORG_PAYABLES'
39678 , p_ae_header_id => l_ae_header_id
39679 );
39680
39681 --
39682 -- set rounding class
39683 --
39684 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
39685 'INTERORG_PAYABLES';
39686
39687 --
39688 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
39689 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
39690 --
39691 -- bulk performance
39692 --
39693 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
39694
39695 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
39696 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
39697
39698 -- 4955764
39699 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
39700 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
39701
39702 -- 4458381 Public Sector Enh
39703
39704 --
39705 -- set accounting attributes for the line type
39706 --
39707 l_entered_amt_idx := 3;
39708 l_accted_amt_idx := 8;
39709 l_bflow_applied_to_amt_idx := NULL; -- 5132302
39710 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
39711 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
39712 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
39713 l_rec_acct_attrs.array_char_value(2) := p_source_12;
39714 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
39715 l_rec_acct_attrs.array_num_value(3) := p_source_18;
39716 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
39717 l_rec_acct_attrs.array_char_value(4) := p_source_15;
39718 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
39719 l_rec_acct_attrs.array_date_value(5) := p_source_19;
39720 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
39721 l_rec_acct_attrs.array_num_value(6) := p_source_20;
39722 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
39723 l_rec_acct_attrs.array_char_value(7) := p_source_21;
39724 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
39725 l_rec_acct_attrs.array_num_value(8) := p_source_22;
39726
39727 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
39728 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
39729
39730 ---------------------------------------------------------------------------------------------------------------
39731 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
39732 ---------------------------------------------------------------------------------------------------------------
39733 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
39734
39735 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
39736 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
39737
39738 IF xla_accounting_cache_pkg.GetValueChar
39739 (p_source_code => 'LEDGER_CATEGORY_CODE'
39740 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
39741 AND l_bflow_method_code = 'PRIOR_ENTRY'
39742 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
39743 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
39744 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
39745 )
39746 THEN
39747 xla_ae_lines_pkg.BflowUpgEntry
39748 (p_business_method_code => l_bflow_method_code
39749 ,p_business_class_code => l_bflow_class_code
39750 ,p_balance_type => l_balance_type_code);
39751 ELSE
39752 NULL;
39753 -- No business flow processing for business flow method of NONE.
39754 END IF;
39755
39756 --
39757 -- call analytical criteria
39758 --
39759
39760 --
39761 -- call description
39762 --
39763 -- No description or it is inherited.
39764 --
39765 -- call ADRs
39766 -- Bug 4922099
39767 --
39768 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
39769 (NVL(l_actual_upg_option, 'N') = 'O') OR
39770 (NVL(l_enc_upg_option, 'N') = 'O')
39771 )
39772 THEN
39773 NULL;
39774 --
39775 --
39776
39777 l_ccid := AcctDerRule_4(
39778 p_application_id => p_application_id
39779 , p_ae_header_id => l_ae_header_id
39780 , p_source_4 => p_source_4
39781 , x_transaction_coa_id => l_adr_transaction_coa_id
39782 , x_accounting_coa_id => l_adr_accounting_coa_id
39783 , x_value_type_code => l_adr_value_type_code
39784 , p_side => 'NA'
39785 );
39786
39787 xla_ae_lines_pkg.set_ccid(
39788 p_code_combination_id => l_ccid
39789 , p_value_type_code => l_adr_value_type_code
39790 , p_transaction_coa_id => l_adr_transaction_coa_id
39791 , p_accounting_coa_id => l_adr_accounting_coa_id
39792 , p_adr_code => 'CST_DEFAULT'
39793 , p_adr_type_code => 'S'
39794 , p_component_type => l_component_type
39795 , p_component_code => l_component_code
39796 , p_component_type_code => l_component_type_code
39797 , p_component_appl_id => l_component_appl_id
39798 , p_amb_context_code => l_amb_context_code
39799 , p_side => 'NA'
39800 );
39801
39802
39803 --
39804 --
39805 END IF;
39806 --
39807 -- Bug 4922099
39808 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
39809 (NVL(l_enc_upg_option, 'N') = 'O')
39810 ) AND
39811 (l_bflow_method_code = 'PRIOR_ENTRY')
39812 )
39813 THEN
39814 IF
39815 --
39816 1 = 2
39817 --
39818 THEN
39819 xla_accounting_err_pkg.build_message
39820 (p_appli_s_name => 'XLA'
39821 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
39822 ,p_token_1 => 'LINE_NUMBER'
39823 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
39824 ,p_token_2 => 'LINE_TYPE_NAME'
39825 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
39826 l_component_type
39827 ,l_component_code
39828 ,l_component_type_code
39829 ,l_component_appl_id
39830 ,l_amb_context_code
39831 ,l_entity_code
39832 ,l_event_class_code
39833 )
39834 ,p_token_3 => 'OWNER'
39835 ,p_value_3 => xla_lookups_pkg.get_meaning(
39836 p_lookup_type => 'XLA_OWNER_TYPE'
39837 ,p_lookup_code => l_component_type_code
39838 )
39839 ,p_token_4 => 'PRODUCT_NAME'
39840 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
39841 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
39842 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
39843 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
39844 ,p_ae_header_id => NULL
39845 );
39846
39847 IF (C_LEVEL_ERROR>= g_log_level) THEN
39848 trace
39849 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
39850 ,p_level => C_LEVEL_ERROR
39851 ,p_module => l_log_module);
39852 END IF;
39853 END IF;
39854 END IF;
39855 --
39856 --
39857 ------------------------------------------------------------------------------------------------
39858 -- 4219869 Business Flow
39859 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
39860 -- Prior Entry. Currently, the following code is always generated.
39861 ------------------------------------------------------------------------------------------------
39862 XLA_AE_LINES_PKG.ValidateCurrentLine;
39863
39864 ------------------------------------------------------------------------------------
39865 -- 4219869 Business Flow
39866 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
39867 ------------------------------------------------------------------------------------
39868 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
39869
39870 ----------------------------------------------------------------------------------
39871 -- 4219869 Business Flow
39872 -- Update journal entry status -- Need to generate this within IF <condition>
39873 ----------------------------------------------------------------------------------
39874 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
39875 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
39876 ,p_balance_type_code => l_balance_type_code
39877 );
39878
39879 -------------------------------------------------------------------------------------------
39880 -- 4262811 - Generate the Accrual Reversal lines
39881 -------------------------------------------------------------------------------------------
39882 BEGIN
39883 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
39884 (g_array_event(p_event_id).array_value_num('header_index'));
39885 IF l_acc_rev_flag IS NULL THEN
39886 l_acc_rev_flag := 'N';
39887 END IF;
39888 EXCEPTION
39889 WHEN OTHERS THEN
39890 l_acc_rev_flag := 'N';
39891 END;
39892 --
39893 IF (l_acc_rev_flag = 'Y') THEN
39894
39895 -- 4645092 ------------------------------------------------------------------------------
39896 -- To allow MPA report to determine if it should generate report process
39897 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
39898 ------------------------------------------------------------------------------------------
39899
39900 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
39901 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
39902 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
39903 -- call ADRs
39904 -- Bug 4922099
39905 --
39906 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
39907 (NVL(l_actual_upg_option, 'N') = 'O') OR
39908 (NVL(l_enc_upg_option, 'N') = 'O')
39909 )
39910 THEN
39911 NULL;
39912 --
39913 --
39914
39915 l_ccid := AcctDerRule_4(
39916 p_application_id => p_application_id
39917 , p_ae_header_id => l_ae_header_id
39918 , p_source_4 => p_source_4
39919 , x_transaction_coa_id => l_adr_transaction_coa_id
39920 , x_accounting_coa_id => l_adr_accounting_coa_id
39921 , x_value_type_code => l_adr_value_type_code
39922 , p_side => 'NA'
39923 );
39924
39925 xla_ae_lines_pkg.set_ccid(
39926 p_code_combination_id => l_ccid
39927 , p_value_type_code => l_adr_value_type_code
39928 , p_transaction_coa_id => l_adr_transaction_coa_id
39929 , p_accounting_coa_id => l_adr_accounting_coa_id
39930 , p_adr_code => 'CST_DEFAULT'
39931 , p_adr_type_code => 'S'
39932 , p_component_type => l_component_type
39933 , p_component_code => l_component_code
39934 , p_component_type_code => l_component_type_code
39935 , p_component_appl_id => l_component_appl_id
39936 , p_amb_context_code => l_amb_context_code
39937 , p_side => 'NA'
39938 );
39939
39940
39941 --
39942 --
39943 END IF;
39944
39945 --
39946 -- Update the line information that should be overwritten
39947 --
39948 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
39949 p_header_num => 1);
39950 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
39951
39952 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
39953
39954 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
39955 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
39956 END IF;
39957
39958 --
39959 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
39960 --
39961 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
39962 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
39963 ELSE
39964 ---------------------------------------------------------------------------------------------------
39965 -- 4262811a Switch Sign
39966 ---------------------------------------------------------------------------------------------------
39967 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
39968 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
39969 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
39970 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
39971 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
39972 -- 5132302
39973 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
39974 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
39975
39976 END IF;
39977
39978 -- 4955764
39979 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
39980 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
39981
39982
39983 XLA_AE_LINES_PKG.ValidateCurrentLine;
39984 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
39985
39986 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
39987 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
39988 ,p_balance_type_code => l_balance_type_code);
39989
39990 END IF;
39991
39992 -----------------------------------------------------------------------------------------
39993 -- 4262811 Multiperiod Accounting
39994 -----------------------------------------------------------------------------------------
39995 -- No MPA option is assigned.
39996
39997
39998 END IF;
39999 END IF;
40000 --
40001
40002 --
40003 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
40004 trace
40005 (p_msg => 'END of AcctLineType_74'
40006 ,p_level => C_LEVEL_PROCEDURE
40007 ,p_module => l_log_module);
40008 END IF;
40009 --
40010 EXCEPTION
40011 WHEN xla_exceptions_pkg.application_exception THEN
40012 RAISE;
40013 WHEN OTHERS THEN
40014 xla_exceptions_pkg.raise_message
40015 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_74');
40016 END AcctLineType_74;
40017 --
40018
40019 ---------------------------------------
40020 --
40021 -- PRIVATE FUNCTION
40022 -- AcctLineType_75
40023 --
40024 ---------------------------------------
40025 PROCEDURE AcctLineType_75 (
40026 p_application_id IN NUMBER
40027 ,p_event_id IN NUMBER
40028 ,p_calculate_acctd_flag IN VARCHAR2
40029 ,p_calculate_g_l_flag IN VARCHAR2
40030 ,p_actual_flag IN OUT VARCHAR2
40031 ,p_balance_type_code OUT VARCHAR2
40032 ,p_gain_or_loss_ref OUT VARCHAR2
40033
40034 --Cost Management Default Account
40035 , p_source_4 IN NUMBER
40036 --DISTRIBUTION_IDENTIFIER
40037 , p_source_11 IN NUMBER
40038 --Distribution Type
40039 , p_source_12 IN VARCHAR2
40040 , p_source_12_meaning IN VARCHAR2
40041 --Entered Currency Code
40042 , p_source_15 IN VARCHAR2
40043 --Entered Amount
40044 , p_source_18 IN NUMBER
40045 --Currency Conversion Date
40046 , p_source_19 IN DATE
40047 --Currency Conversion Rate
40048 , p_source_20 IN NUMBER
40049 --Currency Conversion Type
40050 , p_source_21 IN VARCHAR2
40051 --Accounted Amount
40052 , p_source_22 IN NUMBER
40053 --Accounting Line Type
40054 , p_source_24 IN NUMBER
40055 )
40056 IS
40057
40058 l_component_type VARCHAR2(80);
40059 l_component_code VARCHAR2(30);
40060 l_component_type_code VARCHAR2(1);
40061 l_component_appl_id INTEGER;
40062 l_amb_context_code VARCHAR2(30);
40063 l_entity_code VARCHAR2(30);
40064 l_event_class_code VARCHAR2(30);
40065 l_ae_header_id NUMBER;
40066 l_event_type_code VARCHAR2(30);
40067 l_line_definition_code VARCHAR2(30);
40068 l_line_definition_owner_code VARCHAR2(1);
40069 --
40070 -- adr variables
40071 l_segment VARCHAR2(30);
40072 l_ccid NUMBER;
40073 l_adr_transaction_coa_id NUMBER;
40074 l_adr_accounting_coa_id NUMBER;
40075 l_adr_flexfield_segment_code VARCHAR2(30);
40076 l_adr_flex_value_set_id NUMBER;
40077 l_adr_value_type_code VARCHAR2(30);
40078 l_adr_value_combination_id NUMBER;
40079 l_adr_value_segment_code VARCHAR2(30);
40080
40081 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
40082 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
40083 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
40084 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
40085
40086 -- 4262811 Variables ------------------------------------------------------------------------------------------
40087 l_entered_amt_idx NUMBER;
40088 l_accted_amt_idx NUMBER;
40089 l_acc_rev_flag VARCHAR2(1);
40090 l_accrual_line_num NUMBER;
40091 l_tmp_amt NUMBER;
40092 l_acc_rev_natural_side_code VARCHAR2(1);
40093
40094 l_num_entries NUMBER;
40095 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
40096 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
40097 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
40098 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
40099 l_recog_line_1 NUMBER;
40100 l_recog_line_2 NUMBER;
40101
40102 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
40103 l_bflow_applied_to_amt NUMBER; -- 5132302
40104 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
40105
40106 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
40107
40108 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
40109 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
40110
40111 ---------------------------------------------------------------------------------------------------------------
40112
40113
40114 --
40115 -- bulk performance
40116 --
40117 l_balance_type_code VARCHAR2(1);
40118 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
40119 l_log_module VARCHAR2(240);
40120
40121 --
40122 -- Upgrade strategy
40123 --
40124 l_actual_upg_option VARCHAR2(1);
40125 l_enc_upg_option VARCHAR2(1);
40126
40127 --
40128 BEGIN
40129 --
40130 IF g_log_enabled THEN
40131 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_75';
40132 END IF;
40133 --
40134 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
40135
40136 trace
40137 (p_msg => 'BEGIN of AcctLineType_75'
40138 ,p_level => C_LEVEL_PROCEDURE
40139 ,p_module => l_log_module);
40140
40141 END IF;
40142 --
40143 l_component_type := 'AMB_JLT';
40144 l_component_code := 'INTERORG_PAYABLES';
40145 l_component_type_code := 'S';
40146 l_component_appl_id := 707;
40147 l_amb_context_code := 'DEFAULT';
40148 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
40149 l_event_class_code := 'USER_DEFINE';
40150 l_event_type_code := 'UFOB_SHIP_RECIPIENT_SHIP_TP';
40151 l_line_definition_owner_code := 'S';
40152 l_line_definition_code := 'USER_FOB_SHIP_RECP_SHIP_TP';
40153 --
40154 l_balance_type_code := 'A';
40155 l_segment := NULL;
40156 l_ccid := NULL;
40157 l_adr_transaction_coa_id := NULL;
40158 l_adr_accounting_coa_id := NULL;
40159 l_adr_flexfield_segment_code := NULL;
40160 l_adr_flex_value_set_id := NULL;
40161 l_adr_value_type_code := NULL;
40162 l_adr_value_combination_id := NULL;
40163 l_adr_value_segment_code := NULL;
40164
40165 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
40166 l_bflow_class_code := ''; -- 4219869 Business Flow
40167 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
40168 l_budgetary_control_flag := 'N';
40169
40170 l_bflow_applied_to_amt_idx := NULL; -- 5132302
40171 l_bflow_applied_to_amt := NULL; -- 5132302
40172 l_entered_amt_idx := NULL; -- 4262811
40173 l_accted_amt_idx := NULL; -- 4262811
40174 l_acc_rev_flag := NULL; -- 4262811
40175 l_accrual_line_num := NULL; -- 4262811
40176 l_tmp_amt := NULL; -- 4262811
40177 --
40178
40179 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
40180 l_balance_type_code <> 'B' THEN
40181 IF NVL(p_source_24,9E125) = 9
40182 THEN
40183
40184 --
40185 XLA_AE_LINES_PKG.SetNewLine;
40186
40187 p_balance_type_code := l_balance_type_code;
40188 -- set the flag so later we will know whether the gain loss line needs to be created
40189
40190 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
40191 p_actual_flag :='A';
40192 END IF;
40193
40194 --
40195 -- bulk performance
40196 --
40197 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
40198 p_header_num => 0); -- 4262811
40199 --
40200 -- set accounting line options
40201 --
40202 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
40203 p_natural_side_code => 'D'
40204 , p_gain_or_loss_flag => 'N'
40205 , p_gl_transfer_mode_code => 'S'
40206 , p_acct_entry_type_code => 'A'
40207 , p_switch_side_flag => 'Y'
40208 , p_merge_duplicate_code => 'N'
40209 );
40210 --
40211 l_acc_rev_natural_side_code := 'C'; -- 4262811
40212 --
40213 --
40214 -- set accounting line type info
40215 --
40216 xla_ae_lines_pkg.SetAcctLineType
40217 (p_component_type => l_component_type
40218 ,p_event_type_code => l_event_type_code
40219 ,p_line_definition_owner_code => l_line_definition_owner_code
40220 ,p_line_definition_code => l_line_definition_code
40221 ,p_accounting_line_code => l_component_code
40222 ,p_accounting_line_type_code => l_component_type_code
40223 ,p_accounting_line_appl_id => l_component_appl_id
40224 ,p_amb_context_code => l_amb_context_code
40225 ,p_entity_code => l_entity_code
40226 ,p_event_class_code => l_event_class_code);
40227 --
40228 -- set accounting class
40229 --
40230 xla_ae_lines_pkg.SetAcctClass(
40231 p_accounting_class_code => 'INTERORG_PAYABLES'
40232 , p_ae_header_id => l_ae_header_id
40233 );
40234
40235 --
40236 -- set rounding class
40237 --
40238 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
40239 'INTERORG_PAYABLES';
40240
40241 --
40242 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
40243 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
40244 --
40245 -- bulk performance
40246 --
40247 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
40248
40249 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
40250 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
40251
40252 -- 4955764
40253 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
40254 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
40255
40256 -- 4458381 Public Sector Enh
40257
40258 --
40259 -- set accounting attributes for the line type
40260 --
40261 l_entered_amt_idx := 3;
40262 l_accted_amt_idx := 8;
40263 l_bflow_applied_to_amt_idx := NULL; -- 5132302
40264 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
40265 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
40266 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
40267 l_rec_acct_attrs.array_char_value(2) := p_source_12;
40268 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
40269 l_rec_acct_attrs.array_num_value(3) := p_source_18;
40270 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
40271 l_rec_acct_attrs.array_char_value(4) := p_source_15;
40272 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
40273 l_rec_acct_attrs.array_date_value(5) := p_source_19;
40274 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
40275 l_rec_acct_attrs.array_num_value(6) := p_source_20;
40276 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
40277 l_rec_acct_attrs.array_char_value(7) := p_source_21;
40278 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
40279 l_rec_acct_attrs.array_num_value(8) := p_source_22;
40280
40281 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
40282 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
40283
40284 ---------------------------------------------------------------------------------------------------------------
40285 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
40286 ---------------------------------------------------------------------------------------------------------------
40287 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
40288
40289 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
40290 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
40291
40292 IF xla_accounting_cache_pkg.GetValueChar
40293 (p_source_code => 'LEDGER_CATEGORY_CODE'
40294 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
40295 AND l_bflow_method_code = 'PRIOR_ENTRY'
40296 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
40297 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
40298 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
40299 )
40300 THEN
40301 xla_ae_lines_pkg.BflowUpgEntry
40302 (p_business_method_code => l_bflow_method_code
40303 ,p_business_class_code => l_bflow_class_code
40304 ,p_balance_type => l_balance_type_code);
40305 ELSE
40306 NULL;
40307 -- No business flow processing for business flow method of NONE.
40308 END IF;
40309
40310 --
40311 -- call analytical criteria
40312 --
40313
40314 --
40315 -- call description
40316 --
40317 -- No description or it is inherited.
40318 --
40319 -- call ADRs
40320 -- Bug 4922099
40321 --
40322 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
40323 (NVL(l_actual_upg_option, 'N') = 'O') OR
40324 (NVL(l_enc_upg_option, 'N') = 'O')
40325 )
40326 THEN
40327 NULL;
40328 --
40329 --
40330
40331 l_ccid := AcctDerRule_4(
40332 p_application_id => p_application_id
40333 , p_ae_header_id => l_ae_header_id
40334 , p_source_4 => p_source_4
40335 , x_transaction_coa_id => l_adr_transaction_coa_id
40336 , x_accounting_coa_id => l_adr_accounting_coa_id
40337 , x_value_type_code => l_adr_value_type_code
40338 , p_side => 'NA'
40339 );
40340
40341 xla_ae_lines_pkg.set_ccid(
40342 p_code_combination_id => l_ccid
40343 , p_value_type_code => l_adr_value_type_code
40344 , p_transaction_coa_id => l_adr_transaction_coa_id
40345 , p_accounting_coa_id => l_adr_accounting_coa_id
40346 , p_adr_code => 'CST_DEFAULT'
40347 , p_adr_type_code => 'S'
40348 , p_component_type => l_component_type
40349 , p_component_code => l_component_code
40350 , p_component_type_code => l_component_type_code
40351 , p_component_appl_id => l_component_appl_id
40352 , p_amb_context_code => l_amb_context_code
40353 , p_side => 'NA'
40354 );
40355
40356
40357 --
40358 --
40359 END IF;
40360 --
40361 -- Bug 4922099
40362 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
40363 (NVL(l_enc_upg_option, 'N') = 'O')
40364 ) AND
40365 (l_bflow_method_code = 'PRIOR_ENTRY')
40366 )
40367 THEN
40368 IF
40369 --
40370 1 = 2
40371 --
40372 THEN
40373 xla_accounting_err_pkg.build_message
40374 (p_appli_s_name => 'XLA'
40375 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
40376 ,p_token_1 => 'LINE_NUMBER'
40377 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
40378 ,p_token_2 => 'LINE_TYPE_NAME'
40379 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
40380 l_component_type
40381 ,l_component_code
40382 ,l_component_type_code
40383 ,l_component_appl_id
40384 ,l_amb_context_code
40385 ,l_entity_code
40386 ,l_event_class_code
40387 )
40388 ,p_token_3 => 'OWNER'
40389 ,p_value_3 => xla_lookups_pkg.get_meaning(
40390 p_lookup_type => 'XLA_OWNER_TYPE'
40391 ,p_lookup_code => l_component_type_code
40392 )
40393 ,p_token_4 => 'PRODUCT_NAME'
40394 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
40395 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
40396 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
40397 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
40398 ,p_ae_header_id => NULL
40399 );
40400
40401 IF (C_LEVEL_ERROR>= g_log_level) THEN
40402 trace
40403 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
40404 ,p_level => C_LEVEL_ERROR
40405 ,p_module => l_log_module);
40406 END IF;
40407 END IF;
40408 END IF;
40409 --
40410 --
40411 ------------------------------------------------------------------------------------------------
40412 -- 4219869 Business Flow
40413 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
40414 -- Prior Entry. Currently, the following code is always generated.
40415 ------------------------------------------------------------------------------------------------
40416 XLA_AE_LINES_PKG.ValidateCurrentLine;
40417
40418 ------------------------------------------------------------------------------------
40419 -- 4219869 Business Flow
40420 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
40421 ------------------------------------------------------------------------------------
40422 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
40423
40424 ----------------------------------------------------------------------------------
40425 -- 4219869 Business Flow
40426 -- Update journal entry status -- Need to generate this within IF <condition>
40427 ----------------------------------------------------------------------------------
40428 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
40429 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
40430 ,p_balance_type_code => l_balance_type_code
40431 );
40432
40433 -------------------------------------------------------------------------------------------
40434 -- 4262811 - Generate the Accrual Reversal lines
40435 -------------------------------------------------------------------------------------------
40436 BEGIN
40437 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
40438 (g_array_event(p_event_id).array_value_num('header_index'));
40439 IF l_acc_rev_flag IS NULL THEN
40440 l_acc_rev_flag := 'N';
40441 END IF;
40442 EXCEPTION
40443 WHEN OTHERS THEN
40444 l_acc_rev_flag := 'N';
40445 END;
40446 --
40447 IF (l_acc_rev_flag = 'Y') THEN
40448
40449 -- 4645092 ------------------------------------------------------------------------------
40450 -- To allow MPA report to determine if it should generate report process
40451 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
40452 ------------------------------------------------------------------------------------------
40453
40454 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
40455 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
40456 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
40457 -- call ADRs
40458 -- Bug 4922099
40459 --
40460 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
40461 (NVL(l_actual_upg_option, 'N') = 'O') OR
40462 (NVL(l_enc_upg_option, 'N') = 'O')
40463 )
40464 THEN
40465 NULL;
40466 --
40467 --
40468
40469 l_ccid := AcctDerRule_4(
40470 p_application_id => p_application_id
40471 , p_ae_header_id => l_ae_header_id
40472 , p_source_4 => p_source_4
40473 , x_transaction_coa_id => l_adr_transaction_coa_id
40474 , x_accounting_coa_id => l_adr_accounting_coa_id
40475 , x_value_type_code => l_adr_value_type_code
40476 , p_side => 'NA'
40477 );
40478
40479 xla_ae_lines_pkg.set_ccid(
40480 p_code_combination_id => l_ccid
40481 , p_value_type_code => l_adr_value_type_code
40482 , p_transaction_coa_id => l_adr_transaction_coa_id
40483 , p_accounting_coa_id => l_adr_accounting_coa_id
40484 , p_adr_code => 'CST_DEFAULT'
40485 , p_adr_type_code => 'S'
40486 , p_component_type => l_component_type
40487 , p_component_code => l_component_code
40488 , p_component_type_code => l_component_type_code
40489 , p_component_appl_id => l_component_appl_id
40490 , p_amb_context_code => l_amb_context_code
40491 , p_side => 'NA'
40492 );
40493
40494
40495 --
40496 --
40497 END IF;
40498
40499 --
40500 -- Update the line information that should be overwritten
40501 --
40502 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
40503 p_header_num => 1);
40504 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
40505
40506 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
40507
40508 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
40509 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
40510 END IF;
40511
40512 --
40513 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
40514 --
40515 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
40516 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
40517 ELSE
40518 ---------------------------------------------------------------------------------------------------
40519 -- 4262811a Switch Sign
40520 ---------------------------------------------------------------------------------------------------
40521 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
40522 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
40523 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
40524 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
40525 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
40526 -- 5132302
40527 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
40528 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
40529
40530 END IF;
40531
40532 -- 4955764
40533 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
40534 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
40535
40536
40537 XLA_AE_LINES_PKG.ValidateCurrentLine;
40538 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
40539
40540 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
40541 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
40542 ,p_balance_type_code => l_balance_type_code);
40543
40544 END IF;
40545
40546 -----------------------------------------------------------------------------------------
40547 -- 4262811 Multiperiod Accounting
40548 -----------------------------------------------------------------------------------------
40549 -- No MPA option is assigned.
40550
40551
40552 END IF;
40553 END IF;
40554 --
40555
40556 --
40557 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
40558 trace
40559 (p_msg => 'END of AcctLineType_75'
40560 ,p_level => C_LEVEL_PROCEDURE
40561 ,p_module => l_log_module);
40562 END IF;
40563 --
40564 EXCEPTION
40565 WHEN xla_exceptions_pkg.application_exception THEN
40566 RAISE;
40567 WHEN OTHERS THEN
40568 xla_exceptions_pkg.raise_message
40569 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_75');
40570 END AcctLineType_75;
40571 --
40572
40573 ---------------------------------------
40574 --
40575 -- PRIVATE FUNCTION
40576 -- AcctLineType_76
40577 --
40578 ---------------------------------------
40579 PROCEDURE AcctLineType_76 (
40580 p_application_id IN NUMBER
40581 ,p_event_id IN NUMBER
40582 ,p_calculate_acctd_flag IN VARCHAR2
40583 ,p_calculate_g_l_flag IN VARCHAR2
40584 ,p_actual_flag IN OUT VARCHAR2
40585 ,p_balance_type_code OUT VARCHAR2
40586 ,p_gain_or_loss_ref OUT VARCHAR2
40587
40588 --Cost Management Default Account
40589 , p_source_4 IN NUMBER
40590 --DISTRIBUTION_IDENTIFIER
40591 , p_source_11 IN NUMBER
40592 --Distribution Type
40593 , p_source_12 IN VARCHAR2
40594 , p_source_12_meaning IN VARCHAR2
40595 --Entered Currency Code
40596 , p_source_15 IN VARCHAR2
40597 --Entered Amount
40598 , p_source_18 IN NUMBER
40599 --Currency Conversion Date
40600 , p_source_19 IN DATE
40601 --Currency Conversion Rate
40602 , p_source_20 IN NUMBER
40603 --Currency Conversion Type
40604 , p_source_21 IN VARCHAR2
40605 --Accounted Amount
40606 , p_source_22 IN NUMBER
40607 --Accounting Line Type
40608 , p_source_24 IN NUMBER
40609 )
40610 IS
40611
40612 l_component_type VARCHAR2(80);
40613 l_component_code VARCHAR2(30);
40614 l_component_type_code VARCHAR2(1);
40615 l_component_appl_id INTEGER;
40616 l_amb_context_code VARCHAR2(30);
40617 l_entity_code VARCHAR2(30);
40618 l_event_class_code VARCHAR2(30);
40619 l_ae_header_id NUMBER;
40620 l_event_type_code VARCHAR2(30);
40621 l_line_definition_code VARCHAR2(30);
40622 l_line_definition_owner_code VARCHAR2(1);
40623 --
40624 -- adr variables
40625 l_segment VARCHAR2(30);
40626 l_ccid NUMBER;
40627 l_adr_transaction_coa_id NUMBER;
40628 l_adr_accounting_coa_id NUMBER;
40629 l_adr_flexfield_segment_code VARCHAR2(30);
40630 l_adr_flex_value_set_id NUMBER;
40631 l_adr_value_type_code VARCHAR2(30);
40632 l_adr_value_combination_id NUMBER;
40633 l_adr_value_segment_code VARCHAR2(30);
40634
40635 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
40636 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
40637 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
40638 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
40639
40640 -- 4262811 Variables ------------------------------------------------------------------------------------------
40641 l_entered_amt_idx NUMBER;
40642 l_accted_amt_idx NUMBER;
40643 l_acc_rev_flag VARCHAR2(1);
40644 l_accrual_line_num NUMBER;
40645 l_tmp_amt NUMBER;
40646 l_acc_rev_natural_side_code VARCHAR2(1);
40647
40648 l_num_entries NUMBER;
40649 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
40650 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
40651 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
40652 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
40653 l_recog_line_1 NUMBER;
40654 l_recog_line_2 NUMBER;
40655
40656 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
40657 l_bflow_applied_to_amt NUMBER; -- 5132302
40658 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
40659
40660 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
40661
40662 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
40663 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
40664
40665 ---------------------------------------------------------------------------------------------------------------
40666
40667
40668 --
40669 -- bulk performance
40670 --
40671 l_balance_type_code VARCHAR2(1);
40672 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
40673 l_log_module VARCHAR2(240);
40674
40675 --
40676 -- Upgrade strategy
40677 --
40678 l_actual_upg_option VARCHAR2(1);
40679 l_enc_upg_option VARCHAR2(1);
40680
40681 --
40682 BEGIN
40683 --
40684 IF g_log_enabled THEN
40685 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_76';
40686 END IF;
40687 --
40688 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
40689
40690 trace
40691 (p_msg => 'BEGIN of AcctLineType_76'
40692 ,p_level => C_LEVEL_PROCEDURE
40693 ,p_module => l_log_module);
40694
40695 END IF;
40696 --
40697 l_component_type := 'AMB_JLT';
40698 l_component_code := 'INTERORG_PAYABLES';
40699 l_component_type_code := 'S';
40700 l_component_appl_id := 707;
40701 l_amb_context_code := 'DEFAULT';
40702 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
40703 l_event_class_code := 'INT_ORDER_TO_EXP';
40704 l_event_type_code := 'INT_ORDER_TO_EXP_ALL';
40705 l_line_definition_owner_code := 'S';
40706 l_line_definition_code := 'INT_ORDER_TO_EXP';
40707 --
40708 l_balance_type_code := 'A';
40709 l_segment := NULL;
40710 l_ccid := NULL;
40711 l_adr_transaction_coa_id := NULL;
40712 l_adr_accounting_coa_id := NULL;
40713 l_adr_flexfield_segment_code := NULL;
40714 l_adr_flex_value_set_id := NULL;
40715 l_adr_value_type_code := NULL;
40716 l_adr_value_combination_id := NULL;
40717 l_adr_value_segment_code := NULL;
40718
40719 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
40720 l_bflow_class_code := ''; -- 4219869 Business Flow
40721 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
40722 l_budgetary_control_flag := 'N';
40723
40724 l_bflow_applied_to_amt_idx := NULL; -- 5132302
40725 l_bflow_applied_to_amt := NULL; -- 5132302
40726 l_entered_amt_idx := NULL; -- 4262811
40727 l_accted_amt_idx := NULL; -- 4262811
40728 l_acc_rev_flag := NULL; -- 4262811
40729 l_accrual_line_num := NULL; -- 4262811
40730 l_tmp_amt := NULL; -- 4262811
40731 --
40732
40733 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
40734 l_balance_type_code <> 'B' THEN
40735 IF NVL(p_source_24,9E125) = 9
40736 THEN
40737
40738 --
40739 XLA_AE_LINES_PKG.SetNewLine;
40740
40741 p_balance_type_code := l_balance_type_code;
40742 -- set the flag so later we will know whether the gain loss line needs to be created
40743
40744 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
40745 p_actual_flag :='A';
40746 END IF;
40747
40748 --
40749 -- bulk performance
40750 --
40751 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
40752 p_header_num => 0); -- 4262811
40753 --
40754 -- set accounting line options
40755 --
40756 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
40757 p_natural_side_code => 'D'
40758 , p_gain_or_loss_flag => 'N'
40759 , p_gl_transfer_mode_code => 'S'
40760 , p_acct_entry_type_code => 'A'
40761 , p_switch_side_flag => 'Y'
40762 , p_merge_duplicate_code => 'N'
40763 );
40764 --
40765 l_acc_rev_natural_side_code := 'C'; -- 4262811
40766 --
40767 --
40768 -- set accounting line type info
40769 --
40770 xla_ae_lines_pkg.SetAcctLineType
40771 (p_component_type => l_component_type
40772 ,p_event_type_code => l_event_type_code
40773 ,p_line_definition_owner_code => l_line_definition_owner_code
40774 ,p_line_definition_code => l_line_definition_code
40775 ,p_accounting_line_code => l_component_code
40776 ,p_accounting_line_type_code => l_component_type_code
40777 ,p_accounting_line_appl_id => l_component_appl_id
40778 ,p_amb_context_code => l_amb_context_code
40779 ,p_entity_code => l_entity_code
40780 ,p_event_class_code => l_event_class_code);
40781 --
40782 -- set accounting class
40783 --
40784 xla_ae_lines_pkg.SetAcctClass(
40785 p_accounting_class_code => 'INTERORG_PAYABLES'
40786 , p_ae_header_id => l_ae_header_id
40787 );
40788
40789 --
40790 -- set rounding class
40791 --
40792 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
40793 'INTERORG_PAYABLES';
40794
40795 --
40796 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
40797 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
40798 --
40799 -- bulk performance
40800 --
40801 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
40802
40803 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
40804 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
40805
40806 -- 4955764
40807 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
40808 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
40809
40810 -- 4458381 Public Sector Enh
40811
40812 --
40813 -- set accounting attributes for the line type
40814 --
40815 l_entered_amt_idx := 3;
40816 l_accted_amt_idx := 8;
40817 l_bflow_applied_to_amt_idx := NULL; -- 5132302
40818 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
40819 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
40820 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
40821 l_rec_acct_attrs.array_char_value(2) := p_source_12;
40822 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
40823 l_rec_acct_attrs.array_num_value(3) := p_source_18;
40824 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
40825 l_rec_acct_attrs.array_char_value(4) := p_source_15;
40826 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
40827 l_rec_acct_attrs.array_date_value(5) := p_source_19;
40828 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
40829 l_rec_acct_attrs.array_num_value(6) := p_source_20;
40830 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
40831 l_rec_acct_attrs.array_char_value(7) := p_source_21;
40832 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
40833 l_rec_acct_attrs.array_num_value(8) := p_source_22;
40834
40835 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
40836 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
40837
40838 ---------------------------------------------------------------------------------------------------------------
40839 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
40840 ---------------------------------------------------------------------------------------------------------------
40841 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
40842
40843 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
40844 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
40845
40846 IF xla_accounting_cache_pkg.GetValueChar
40847 (p_source_code => 'LEDGER_CATEGORY_CODE'
40848 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
40849 AND l_bflow_method_code = 'PRIOR_ENTRY'
40850 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
40851 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
40852 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
40853 )
40854 THEN
40855 xla_ae_lines_pkg.BflowUpgEntry
40856 (p_business_method_code => l_bflow_method_code
40857 ,p_business_class_code => l_bflow_class_code
40858 ,p_balance_type => l_balance_type_code);
40859 ELSE
40860 NULL;
40861 -- No business flow processing for business flow method of NONE.
40862 END IF;
40863
40864 --
40865 -- call analytical criteria
40866 --
40867
40868 --
40869 -- call description
40870 --
40871 -- No description or it is inherited.
40872 --
40873 -- call ADRs
40874 -- Bug 4922099
40875 --
40876 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
40877 (NVL(l_actual_upg_option, 'N') = 'O') OR
40878 (NVL(l_enc_upg_option, 'N') = 'O')
40879 )
40880 THEN
40881 NULL;
40882 --
40883 --
40884
40885 l_ccid := AcctDerRule_4(
40886 p_application_id => p_application_id
40887 , p_ae_header_id => l_ae_header_id
40888 , p_source_4 => p_source_4
40889 , x_transaction_coa_id => l_adr_transaction_coa_id
40890 , x_accounting_coa_id => l_adr_accounting_coa_id
40891 , x_value_type_code => l_adr_value_type_code
40892 , p_side => 'NA'
40893 );
40894
40895 xla_ae_lines_pkg.set_ccid(
40896 p_code_combination_id => l_ccid
40897 , p_value_type_code => l_adr_value_type_code
40898 , p_transaction_coa_id => l_adr_transaction_coa_id
40899 , p_accounting_coa_id => l_adr_accounting_coa_id
40900 , p_adr_code => 'CST_DEFAULT'
40901 , p_adr_type_code => 'S'
40902 , p_component_type => l_component_type
40903 , p_component_code => l_component_code
40904 , p_component_type_code => l_component_type_code
40905 , p_component_appl_id => l_component_appl_id
40906 , p_amb_context_code => l_amb_context_code
40907 , p_side => 'NA'
40908 );
40909
40910
40911 --
40912 --
40913 END IF;
40914 --
40915 -- Bug 4922099
40916 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
40917 (NVL(l_enc_upg_option, 'N') = 'O')
40918 ) AND
40919 (l_bflow_method_code = 'PRIOR_ENTRY')
40920 )
40921 THEN
40922 IF
40923 --
40924 1 = 2
40925 --
40926 THEN
40927 xla_accounting_err_pkg.build_message
40928 (p_appli_s_name => 'XLA'
40929 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
40930 ,p_token_1 => 'LINE_NUMBER'
40931 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
40932 ,p_token_2 => 'LINE_TYPE_NAME'
40933 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
40934 l_component_type
40935 ,l_component_code
40936 ,l_component_type_code
40937 ,l_component_appl_id
40938 ,l_amb_context_code
40939 ,l_entity_code
40940 ,l_event_class_code
40941 )
40942 ,p_token_3 => 'OWNER'
40943 ,p_value_3 => xla_lookups_pkg.get_meaning(
40944 p_lookup_type => 'XLA_OWNER_TYPE'
40945 ,p_lookup_code => l_component_type_code
40946 )
40947 ,p_token_4 => 'PRODUCT_NAME'
40948 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
40949 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
40950 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
40951 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
40952 ,p_ae_header_id => NULL
40953 );
40954
40955 IF (C_LEVEL_ERROR>= g_log_level) THEN
40956 trace
40957 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
40958 ,p_level => C_LEVEL_ERROR
40959 ,p_module => l_log_module);
40960 END IF;
40961 END IF;
40962 END IF;
40963 --
40964 --
40965 ------------------------------------------------------------------------------------------------
40966 -- 4219869 Business Flow
40967 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
40968 -- Prior Entry. Currently, the following code is always generated.
40969 ------------------------------------------------------------------------------------------------
40970 XLA_AE_LINES_PKG.ValidateCurrentLine;
40971
40972 ------------------------------------------------------------------------------------
40973 -- 4219869 Business Flow
40974 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
40975 ------------------------------------------------------------------------------------
40976 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
40977
40978 ----------------------------------------------------------------------------------
40979 -- 4219869 Business Flow
40980 -- Update journal entry status -- Need to generate this within IF <condition>
40981 ----------------------------------------------------------------------------------
40982 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
40983 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
40984 ,p_balance_type_code => l_balance_type_code
40985 );
40986
40987 -------------------------------------------------------------------------------------------
40988 -- 4262811 - Generate the Accrual Reversal lines
40989 -------------------------------------------------------------------------------------------
40990 BEGIN
40991 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
40992 (g_array_event(p_event_id).array_value_num('header_index'));
40993 IF l_acc_rev_flag IS NULL THEN
40994 l_acc_rev_flag := 'N';
40995 END IF;
40996 EXCEPTION
40997 WHEN OTHERS THEN
40998 l_acc_rev_flag := 'N';
40999 END;
41000 --
41001 IF (l_acc_rev_flag = 'Y') THEN
41002
41003 -- 4645092 ------------------------------------------------------------------------------
41004 -- To allow MPA report to determine if it should generate report process
41005 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
41006 ------------------------------------------------------------------------------------------
41007
41008 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
41009 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
41010 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
41011 -- call ADRs
41012 -- Bug 4922099
41013 --
41014 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
41015 (NVL(l_actual_upg_option, 'N') = 'O') OR
41016 (NVL(l_enc_upg_option, 'N') = 'O')
41017 )
41018 THEN
41019 NULL;
41020 --
41021 --
41022
41023 l_ccid := AcctDerRule_4(
41024 p_application_id => p_application_id
41025 , p_ae_header_id => l_ae_header_id
41026 , p_source_4 => p_source_4
41027 , x_transaction_coa_id => l_adr_transaction_coa_id
41028 , x_accounting_coa_id => l_adr_accounting_coa_id
41029 , x_value_type_code => l_adr_value_type_code
41030 , p_side => 'NA'
41031 );
41032
41033 xla_ae_lines_pkg.set_ccid(
41034 p_code_combination_id => l_ccid
41035 , p_value_type_code => l_adr_value_type_code
41036 , p_transaction_coa_id => l_adr_transaction_coa_id
41037 , p_accounting_coa_id => l_adr_accounting_coa_id
41038 , p_adr_code => 'CST_DEFAULT'
41039 , p_adr_type_code => 'S'
41040 , p_component_type => l_component_type
41041 , p_component_code => l_component_code
41042 , p_component_type_code => l_component_type_code
41043 , p_component_appl_id => l_component_appl_id
41044 , p_amb_context_code => l_amb_context_code
41045 , p_side => 'NA'
41046 );
41047
41048
41049 --
41050 --
41051 END IF;
41052
41053 --
41054 -- Update the line information that should be overwritten
41055 --
41056 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
41057 p_header_num => 1);
41058 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
41059
41060 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
41061
41062 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
41063 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
41064 END IF;
41065
41066 --
41067 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
41068 --
41069 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
41070 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
41071 ELSE
41072 ---------------------------------------------------------------------------------------------------
41073 -- 4262811a Switch Sign
41074 ---------------------------------------------------------------------------------------------------
41075 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
41076 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
41077 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
41078 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
41079 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
41080 -- 5132302
41081 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
41082 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
41083
41084 END IF;
41085
41086 -- 4955764
41087 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
41088 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
41089
41090
41091 XLA_AE_LINES_PKG.ValidateCurrentLine;
41092 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
41093
41094 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
41095 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
41096 ,p_balance_type_code => l_balance_type_code);
41097
41098 END IF;
41099
41100 -----------------------------------------------------------------------------------------
41101 -- 4262811 Multiperiod Accounting
41102 -----------------------------------------------------------------------------------------
41103 -- No MPA option is assigned.
41104
41105
41106 END IF;
41107 END IF;
41108 --
41109
41110 --
41111 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
41112 trace
41113 (p_msg => 'END of AcctLineType_76'
41114 ,p_level => C_LEVEL_PROCEDURE
41115 ,p_module => l_log_module);
41116 END IF;
41117 --
41118 EXCEPTION
41119 WHEN xla_exceptions_pkg.application_exception THEN
41120 RAISE;
41121 WHEN OTHERS THEN
41122 xla_exceptions_pkg.raise_message
41123 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_76');
41124 END AcctLineType_76;
41125 --
41126
41127 ---------------------------------------
41128 --
41129 -- PRIVATE FUNCTION
41130 -- AcctLineType_77
41131 --
41132 ---------------------------------------
41133 PROCEDURE AcctLineType_77 (
41134 p_application_id IN NUMBER
41135 ,p_event_id IN NUMBER
41136 ,p_calculate_acctd_flag IN VARCHAR2
41137 ,p_calculate_g_l_flag IN VARCHAR2
41138 ,p_actual_flag IN OUT VARCHAR2
41139 ,p_balance_type_code OUT VARCHAR2
41140 ,p_gain_or_loss_ref OUT VARCHAR2
41141
41142 --Cost Management Default Account
41143 , p_source_4 IN NUMBER
41144 --DISTRIBUTION_IDENTIFIER
41145 , p_source_11 IN NUMBER
41146 --Distribution Type
41147 , p_source_12 IN VARCHAR2
41148 , p_source_12_meaning IN VARCHAR2
41149 --Entered Currency Code
41150 , p_source_15 IN VARCHAR2
41151 --Entered Amount
41152 , p_source_18 IN NUMBER
41153 --Currency Conversion Date
41154 , p_source_19 IN DATE
41155 --Currency Conversion Rate
41156 , p_source_20 IN NUMBER
41157 --Currency Conversion Type
41158 , p_source_21 IN VARCHAR2
41159 --Accounted Amount
41160 , p_source_22 IN NUMBER
41161 --Accounting Line Type
41162 , p_source_24 IN NUMBER
41163 )
41164 IS
41165
41166 l_component_type VARCHAR2(80);
41167 l_component_code VARCHAR2(30);
41168 l_component_type_code VARCHAR2(1);
41169 l_component_appl_id INTEGER;
41170 l_amb_context_code VARCHAR2(30);
41171 l_entity_code VARCHAR2(30);
41172 l_event_class_code VARCHAR2(30);
41173 l_ae_header_id NUMBER;
41174 l_event_type_code VARCHAR2(30);
41175 l_line_definition_code VARCHAR2(30);
41176 l_line_definition_owner_code VARCHAR2(1);
41177 --
41178 -- adr variables
41179 l_segment VARCHAR2(30);
41180 l_ccid NUMBER;
41181 l_adr_transaction_coa_id NUMBER;
41182 l_adr_accounting_coa_id NUMBER;
41183 l_adr_flexfield_segment_code VARCHAR2(30);
41184 l_adr_flex_value_set_id NUMBER;
41185 l_adr_value_type_code VARCHAR2(30);
41186 l_adr_value_combination_id NUMBER;
41187 l_adr_value_segment_code VARCHAR2(30);
41188
41189 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
41190 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
41191 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
41192 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
41193
41194 -- 4262811 Variables ------------------------------------------------------------------------------------------
41195 l_entered_amt_idx NUMBER;
41196 l_accted_amt_idx NUMBER;
41197 l_acc_rev_flag VARCHAR2(1);
41198 l_accrual_line_num NUMBER;
41199 l_tmp_amt NUMBER;
41200 l_acc_rev_natural_side_code VARCHAR2(1);
41201
41202 l_num_entries NUMBER;
41203 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
41204 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
41205 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
41206 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
41207 l_recog_line_1 NUMBER;
41208 l_recog_line_2 NUMBER;
41209
41210 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
41211 l_bflow_applied_to_amt NUMBER; -- 5132302
41212 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
41213
41214 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
41215
41216 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
41217 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
41218
41219 ---------------------------------------------------------------------------------------------------------------
41220
41221
41222 --
41223 -- bulk performance
41224 --
41225 l_balance_type_code VARCHAR2(1);
41226 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
41227 l_log_module VARCHAR2(240);
41228
41229 --
41230 -- Upgrade strategy
41231 --
41232 l_actual_upg_option VARCHAR2(1);
41233 l_enc_upg_option VARCHAR2(1);
41234
41235 --
41236 BEGIN
41237 --
41238 IF g_log_enabled THEN
41239 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_77';
41240 END IF;
41241 --
41242 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
41243
41244 trace
41245 (p_msg => 'BEGIN of AcctLineType_77'
41246 ,p_level => C_LEVEL_PROCEDURE
41247 ,p_module => l_log_module);
41248
41249 END IF;
41250 --
41251 l_component_type := 'AMB_JLT';
41252 l_component_code := 'INTERORG_PAYABLES';
41253 l_component_type_code := 'S';
41254 l_component_appl_id := 707;
41255 l_amb_context_code := 'DEFAULT';
41256 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
41257 l_event_class_code := 'USER_DEFINE';
41258 l_event_type_code := 'UDIR_INTERORG_RCPT_TP';
41259 l_line_definition_owner_code := 'S';
41260 l_line_definition_code := 'USER_DIR_INTERORG_RCPT_TP';
41261 --
41262 l_balance_type_code := 'A';
41263 l_segment := NULL;
41264 l_ccid := NULL;
41265 l_adr_transaction_coa_id := NULL;
41266 l_adr_accounting_coa_id := NULL;
41267 l_adr_flexfield_segment_code := NULL;
41268 l_adr_flex_value_set_id := NULL;
41269 l_adr_value_type_code := NULL;
41270 l_adr_value_combination_id := NULL;
41271 l_adr_value_segment_code := NULL;
41272
41273 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
41274 l_bflow_class_code := ''; -- 4219869 Business Flow
41275 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
41276 l_budgetary_control_flag := 'N';
41277
41278 l_bflow_applied_to_amt_idx := NULL; -- 5132302
41279 l_bflow_applied_to_amt := NULL; -- 5132302
41280 l_entered_amt_idx := NULL; -- 4262811
41281 l_accted_amt_idx := NULL; -- 4262811
41282 l_acc_rev_flag := NULL; -- 4262811
41283 l_accrual_line_num := NULL; -- 4262811
41284 l_tmp_amt := NULL; -- 4262811
41285 --
41286
41287 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
41288 l_balance_type_code <> 'B' THEN
41289 IF NVL(p_source_24,9E125) = 9
41290 THEN
41291
41292 --
41293 XLA_AE_LINES_PKG.SetNewLine;
41294
41295 p_balance_type_code := l_balance_type_code;
41296 -- set the flag so later we will know whether the gain loss line needs to be created
41297
41298 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
41299 p_actual_flag :='A';
41300 END IF;
41301
41302 --
41303 -- bulk performance
41304 --
41305 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
41306 p_header_num => 0); -- 4262811
41307 --
41308 -- set accounting line options
41309 --
41310 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
41311 p_natural_side_code => 'D'
41312 , p_gain_or_loss_flag => 'N'
41313 , p_gl_transfer_mode_code => 'S'
41314 , p_acct_entry_type_code => 'A'
41315 , p_switch_side_flag => 'Y'
41316 , p_merge_duplicate_code => 'N'
41317 );
41318 --
41319 l_acc_rev_natural_side_code := 'C'; -- 4262811
41320 --
41321 --
41322 -- set accounting line type info
41323 --
41324 xla_ae_lines_pkg.SetAcctLineType
41325 (p_component_type => l_component_type
41326 ,p_event_type_code => l_event_type_code
41327 ,p_line_definition_owner_code => l_line_definition_owner_code
41328 ,p_line_definition_code => l_line_definition_code
41329 ,p_accounting_line_code => l_component_code
41330 ,p_accounting_line_type_code => l_component_type_code
41331 ,p_accounting_line_appl_id => l_component_appl_id
41332 ,p_amb_context_code => l_amb_context_code
41333 ,p_entity_code => l_entity_code
41334 ,p_event_class_code => l_event_class_code);
41335 --
41336 -- set accounting class
41337 --
41338 xla_ae_lines_pkg.SetAcctClass(
41339 p_accounting_class_code => 'INTERORG_PAYABLES'
41340 , p_ae_header_id => l_ae_header_id
41341 );
41342
41343 --
41344 -- set rounding class
41345 --
41346 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
41347 'INTERORG_PAYABLES';
41348
41349 --
41350 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
41351 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
41352 --
41353 -- bulk performance
41354 --
41355 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
41356
41357 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
41358 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
41359
41360 -- 4955764
41361 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
41362 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
41363
41364 -- 4458381 Public Sector Enh
41365
41366 --
41367 -- set accounting attributes for the line type
41368 --
41369 l_entered_amt_idx := 3;
41370 l_accted_amt_idx := 8;
41371 l_bflow_applied_to_amt_idx := NULL; -- 5132302
41372 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
41373 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
41374 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
41375 l_rec_acct_attrs.array_char_value(2) := p_source_12;
41376 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
41377 l_rec_acct_attrs.array_num_value(3) := p_source_18;
41378 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
41379 l_rec_acct_attrs.array_char_value(4) := p_source_15;
41380 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
41381 l_rec_acct_attrs.array_date_value(5) := p_source_19;
41382 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
41383 l_rec_acct_attrs.array_num_value(6) := p_source_20;
41384 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
41385 l_rec_acct_attrs.array_char_value(7) := p_source_21;
41386 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
41387 l_rec_acct_attrs.array_num_value(8) := p_source_22;
41388
41389 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
41390 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
41391
41392 ---------------------------------------------------------------------------------------------------------------
41393 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
41394 ---------------------------------------------------------------------------------------------------------------
41395 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
41396
41397 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
41398 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
41399
41400 IF xla_accounting_cache_pkg.GetValueChar
41401 (p_source_code => 'LEDGER_CATEGORY_CODE'
41402 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
41403 AND l_bflow_method_code = 'PRIOR_ENTRY'
41404 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
41405 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
41406 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
41407 )
41408 THEN
41409 xla_ae_lines_pkg.BflowUpgEntry
41410 (p_business_method_code => l_bflow_method_code
41411 ,p_business_class_code => l_bflow_class_code
41412 ,p_balance_type => l_balance_type_code);
41413 ELSE
41414 NULL;
41415 -- No business flow processing for business flow method of NONE.
41416 END IF;
41417
41418 --
41419 -- call analytical criteria
41420 --
41421
41422 --
41423 -- call description
41424 --
41425 -- No description or it is inherited.
41426 --
41427 -- call ADRs
41428 -- Bug 4922099
41429 --
41430 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
41431 (NVL(l_actual_upg_option, 'N') = 'O') OR
41432 (NVL(l_enc_upg_option, 'N') = 'O')
41433 )
41434 THEN
41435 NULL;
41436 --
41437 --
41438
41439 l_ccid := AcctDerRule_4(
41440 p_application_id => p_application_id
41441 , p_ae_header_id => l_ae_header_id
41442 , p_source_4 => p_source_4
41443 , x_transaction_coa_id => l_adr_transaction_coa_id
41444 , x_accounting_coa_id => l_adr_accounting_coa_id
41445 , x_value_type_code => l_adr_value_type_code
41446 , p_side => 'NA'
41447 );
41448
41449 xla_ae_lines_pkg.set_ccid(
41450 p_code_combination_id => l_ccid
41451 , p_value_type_code => l_adr_value_type_code
41452 , p_transaction_coa_id => l_adr_transaction_coa_id
41453 , p_accounting_coa_id => l_adr_accounting_coa_id
41454 , p_adr_code => 'CST_DEFAULT'
41455 , p_adr_type_code => 'S'
41456 , p_component_type => l_component_type
41457 , p_component_code => l_component_code
41458 , p_component_type_code => l_component_type_code
41459 , p_component_appl_id => l_component_appl_id
41460 , p_amb_context_code => l_amb_context_code
41461 , p_side => 'NA'
41462 );
41463
41464
41465 --
41466 --
41467 END IF;
41468 --
41469 -- Bug 4922099
41470 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
41471 (NVL(l_enc_upg_option, 'N') = 'O')
41472 ) AND
41473 (l_bflow_method_code = 'PRIOR_ENTRY')
41474 )
41475 THEN
41476 IF
41477 --
41478 1 = 2
41479 --
41480 THEN
41481 xla_accounting_err_pkg.build_message
41482 (p_appli_s_name => 'XLA'
41483 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
41484 ,p_token_1 => 'LINE_NUMBER'
41485 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
41486 ,p_token_2 => 'LINE_TYPE_NAME'
41487 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
41488 l_component_type
41489 ,l_component_code
41490 ,l_component_type_code
41491 ,l_component_appl_id
41492 ,l_amb_context_code
41493 ,l_entity_code
41494 ,l_event_class_code
41495 )
41496 ,p_token_3 => 'OWNER'
41497 ,p_value_3 => xla_lookups_pkg.get_meaning(
41498 p_lookup_type => 'XLA_OWNER_TYPE'
41499 ,p_lookup_code => l_component_type_code
41500 )
41501 ,p_token_4 => 'PRODUCT_NAME'
41502 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
41503 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
41504 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
41505 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
41506 ,p_ae_header_id => NULL
41507 );
41508
41509 IF (C_LEVEL_ERROR>= g_log_level) THEN
41510 trace
41511 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
41512 ,p_level => C_LEVEL_ERROR
41513 ,p_module => l_log_module);
41514 END IF;
41515 END IF;
41516 END IF;
41517 --
41518 --
41519 ------------------------------------------------------------------------------------------------
41520 -- 4219869 Business Flow
41521 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
41522 -- Prior Entry. Currently, the following code is always generated.
41523 ------------------------------------------------------------------------------------------------
41524 XLA_AE_LINES_PKG.ValidateCurrentLine;
41525
41526 ------------------------------------------------------------------------------------
41527 -- 4219869 Business Flow
41528 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
41529 ------------------------------------------------------------------------------------
41530 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
41531
41532 ----------------------------------------------------------------------------------
41533 -- 4219869 Business Flow
41534 -- Update journal entry status -- Need to generate this within IF <condition>
41535 ----------------------------------------------------------------------------------
41536 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
41537 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
41538 ,p_balance_type_code => l_balance_type_code
41539 );
41540
41541 -------------------------------------------------------------------------------------------
41542 -- 4262811 - Generate the Accrual Reversal lines
41543 -------------------------------------------------------------------------------------------
41544 BEGIN
41545 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
41546 (g_array_event(p_event_id).array_value_num('header_index'));
41547 IF l_acc_rev_flag IS NULL THEN
41548 l_acc_rev_flag := 'N';
41549 END IF;
41550 EXCEPTION
41551 WHEN OTHERS THEN
41552 l_acc_rev_flag := 'N';
41553 END;
41554 --
41555 IF (l_acc_rev_flag = 'Y') THEN
41556
41557 -- 4645092 ------------------------------------------------------------------------------
41558 -- To allow MPA report to determine if it should generate report process
41559 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
41560 ------------------------------------------------------------------------------------------
41561
41562 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
41563 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
41564 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
41565 -- call ADRs
41566 -- Bug 4922099
41567 --
41568 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
41569 (NVL(l_actual_upg_option, 'N') = 'O') OR
41570 (NVL(l_enc_upg_option, 'N') = 'O')
41571 )
41572 THEN
41573 NULL;
41574 --
41575 --
41576
41577 l_ccid := AcctDerRule_4(
41578 p_application_id => p_application_id
41579 , p_ae_header_id => l_ae_header_id
41580 , p_source_4 => p_source_4
41581 , x_transaction_coa_id => l_adr_transaction_coa_id
41582 , x_accounting_coa_id => l_adr_accounting_coa_id
41583 , x_value_type_code => l_adr_value_type_code
41584 , p_side => 'NA'
41585 );
41586
41587 xla_ae_lines_pkg.set_ccid(
41588 p_code_combination_id => l_ccid
41589 , p_value_type_code => l_adr_value_type_code
41590 , p_transaction_coa_id => l_adr_transaction_coa_id
41591 , p_accounting_coa_id => l_adr_accounting_coa_id
41592 , p_adr_code => 'CST_DEFAULT'
41593 , p_adr_type_code => 'S'
41594 , p_component_type => l_component_type
41595 , p_component_code => l_component_code
41596 , p_component_type_code => l_component_type_code
41597 , p_component_appl_id => l_component_appl_id
41598 , p_amb_context_code => l_amb_context_code
41599 , p_side => 'NA'
41600 );
41601
41602
41603 --
41604 --
41605 END IF;
41606
41607 --
41608 -- Update the line information that should be overwritten
41609 --
41610 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
41611 p_header_num => 1);
41612 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
41613
41614 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
41615
41616 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
41617 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
41618 END IF;
41619
41620 --
41621 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
41622 --
41623 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
41624 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
41625 ELSE
41626 ---------------------------------------------------------------------------------------------------
41627 -- 4262811a Switch Sign
41628 ---------------------------------------------------------------------------------------------------
41629 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
41630 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
41631 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
41632 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
41633 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
41634 -- 5132302
41635 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
41636 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
41637
41638 END IF;
41639
41640 -- 4955764
41641 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
41642 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
41643
41644
41645 XLA_AE_LINES_PKG.ValidateCurrentLine;
41646 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
41647
41648 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
41649 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
41650 ,p_balance_type_code => l_balance_type_code);
41651
41652 END IF;
41653
41654 -----------------------------------------------------------------------------------------
41655 -- 4262811 Multiperiod Accounting
41656 -----------------------------------------------------------------------------------------
41657 -- No MPA option is assigned.
41658
41659
41660 END IF;
41661 END IF;
41662 --
41663
41664 --
41665 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
41666 trace
41667 (p_msg => 'END of AcctLineType_77'
41668 ,p_level => C_LEVEL_PROCEDURE
41669 ,p_module => l_log_module);
41670 END IF;
41671 --
41672 EXCEPTION
41673 WHEN xla_exceptions_pkg.application_exception THEN
41674 RAISE;
41675 WHEN OTHERS THEN
41676 xla_exceptions_pkg.raise_message
41677 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_77');
41678 END AcctLineType_77;
41679 --
41680
41681 ---------------------------------------
41682 --
41683 -- PRIVATE FUNCTION
41684 -- AcctLineType_78
41685 --
41686 ---------------------------------------
41687 PROCEDURE AcctLineType_78 (
41688 p_application_id IN NUMBER
41689 ,p_event_id IN NUMBER
41690 ,p_calculate_acctd_flag IN VARCHAR2
41691 ,p_calculate_g_l_flag IN VARCHAR2
41692 ,p_actual_flag IN OUT VARCHAR2
41693 ,p_balance_type_code OUT VARCHAR2
41694 ,p_gain_or_loss_ref OUT VARCHAR2
41695
41696 --Cost Management Default Account
41697 , p_source_4 IN NUMBER
41698 --DISTRIBUTION_IDENTIFIER
41699 , p_source_11 IN NUMBER
41700 --Distribution Type
41701 , p_source_12 IN VARCHAR2
41702 , p_source_12_meaning IN VARCHAR2
41703 --Entered Currency Code
41704 , p_source_15 IN VARCHAR2
41705 --Entered Amount
41706 , p_source_18 IN NUMBER
41707 --Currency Conversion Date
41708 , p_source_19 IN DATE
41709 --Currency Conversion Rate
41710 , p_source_20 IN NUMBER
41711 --Currency Conversion Type
41712 , p_source_21 IN VARCHAR2
41713 --Accounted Amount
41714 , p_source_22 IN NUMBER
41715 --Accounting Line Type
41716 , p_source_24 IN NUMBER
41717 )
41718 IS
41719
41720 l_component_type VARCHAR2(80);
41721 l_component_code VARCHAR2(30);
41722 l_component_type_code VARCHAR2(1);
41723 l_component_appl_id INTEGER;
41724 l_amb_context_code VARCHAR2(30);
41725 l_entity_code VARCHAR2(30);
41726 l_event_class_code VARCHAR2(30);
41727 l_ae_header_id NUMBER;
41728 l_event_type_code VARCHAR2(30);
41729 l_line_definition_code VARCHAR2(30);
41730 l_line_definition_owner_code VARCHAR2(1);
41731 --
41732 -- adr variables
41733 l_segment VARCHAR2(30);
41734 l_ccid NUMBER;
41735 l_adr_transaction_coa_id NUMBER;
41736 l_adr_accounting_coa_id NUMBER;
41737 l_adr_flexfield_segment_code VARCHAR2(30);
41738 l_adr_flex_value_set_id NUMBER;
41739 l_adr_value_type_code VARCHAR2(30);
41740 l_adr_value_combination_id NUMBER;
41741 l_adr_value_segment_code VARCHAR2(30);
41742
41743 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
41744 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
41745 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
41746 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
41747
41748 -- 4262811 Variables ------------------------------------------------------------------------------------------
41749 l_entered_amt_idx NUMBER;
41750 l_accted_amt_idx NUMBER;
41751 l_acc_rev_flag VARCHAR2(1);
41752 l_accrual_line_num NUMBER;
41753 l_tmp_amt NUMBER;
41754 l_acc_rev_natural_side_code VARCHAR2(1);
41755
41756 l_num_entries NUMBER;
41757 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
41758 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
41759 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
41760 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
41761 l_recog_line_1 NUMBER;
41762 l_recog_line_2 NUMBER;
41763
41764 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
41765 l_bflow_applied_to_amt NUMBER; -- 5132302
41766 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
41767
41768 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
41769
41770 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
41771 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
41772
41773 ---------------------------------------------------------------------------------------------------------------
41774
41775
41776 --
41777 -- bulk performance
41778 --
41779 l_balance_type_code VARCHAR2(1);
41780 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
41781 l_log_module VARCHAR2(240);
41782
41783 --
41784 -- Upgrade strategy
41785 --
41786 l_actual_upg_option VARCHAR2(1);
41787 l_enc_upg_option VARCHAR2(1);
41788
41789 --
41790 BEGIN
41791 --
41792 IF g_log_enabled THEN
41793 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_78';
41794 END IF;
41795 --
41796 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
41797
41798 trace
41799 (p_msg => 'BEGIN of AcctLineType_78'
41800 ,p_level => C_LEVEL_PROCEDURE
41801 ,p_module => l_log_module);
41802
41803 END IF;
41804 --
41805 l_component_type := 'AMB_JLT';
41806 l_component_code := 'INTERORG_PAYABLES';
41807 l_component_type_code := 'S';
41808 l_component_appl_id := 707;
41809 l_amb_context_code := 'DEFAULT';
41810 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
41811 l_event_class_code := 'DIR_INTERORG_SHIP';
41812 l_event_type_code := 'DIR_INTERORG_SHIP_ALL';
41813 l_line_definition_owner_code := 'S';
41814 l_line_definition_code := 'DIRECT_INTERORG_SHIP';
41815 --
41816 l_balance_type_code := 'A';
41817 l_segment := NULL;
41818 l_ccid := NULL;
41819 l_adr_transaction_coa_id := NULL;
41820 l_adr_accounting_coa_id := NULL;
41821 l_adr_flexfield_segment_code := NULL;
41822 l_adr_flex_value_set_id := NULL;
41823 l_adr_value_type_code := NULL;
41824 l_adr_value_combination_id := NULL;
41825 l_adr_value_segment_code := NULL;
41826
41827 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
41828 l_bflow_class_code := ''; -- 4219869 Business Flow
41829 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
41830 l_budgetary_control_flag := 'N';
41831
41832 l_bflow_applied_to_amt_idx := NULL; -- 5132302
41833 l_bflow_applied_to_amt := NULL; -- 5132302
41834 l_entered_amt_idx := NULL; -- 4262811
41835 l_accted_amt_idx := NULL; -- 4262811
41836 l_acc_rev_flag := NULL; -- 4262811
41837 l_accrual_line_num := NULL; -- 4262811
41838 l_tmp_amt := NULL; -- 4262811
41839 --
41840
41841 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
41842 l_balance_type_code <> 'B' THEN
41843 IF NVL(p_source_24,9E125) = 9
41844 THEN
41845
41846 --
41847 XLA_AE_LINES_PKG.SetNewLine;
41848
41849 p_balance_type_code := l_balance_type_code;
41850 -- set the flag so later we will know whether the gain loss line needs to be created
41851
41852 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
41853 p_actual_flag :='A';
41854 END IF;
41855
41856 --
41857 -- bulk performance
41858 --
41859 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
41860 p_header_num => 0); -- 4262811
41861 --
41862 -- set accounting line options
41863 --
41864 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
41865 p_natural_side_code => 'D'
41866 , p_gain_or_loss_flag => 'N'
41867 , p_gl_transfer_mode_code => 'S'
41868 , p_acct_entry_type_code => 'A'
41869 , p_switch_side_flag => 'Y'
41870 , p_merge_duplicate_code => 'N'
41871 );
41872 --
41873 l_acc_rev_natural_side_code := 'C'; -- 4262811
41874 --
41875 --
41876 -- set accounting line type info
41877 --
41878 xla_ae_lines_pkg.SetAcctLineType
41879 (p_component_type => l_component_type
41880 ,p_event_type_code => l_event_type_code
41881 ,p_line_definition_owner_code => l_line_definition_owner_code
41882 ,p_line_definition_code => l_line_definition_code
41883 ,p_accounting_line_code => l_component_code
41884 ,p_accounting_line_type_code => l_component_type_code
41885 ,p_accounting_line_appl_id => l_component_appl_id
41886 ,p_amb_context_code => l_amb_context_code
41887 ,p_entity_code => l_entity_code
41888 ,p_event_class_code => l_event_class_code);
41889 --
41890 -- set accounting class
41891 --
41892 xla_ae_lines_pkg.SetAcctClass(
41893 p_accounting_class_code => 'INTERORG_PAYABLES'
41894 , p_ae_header_id => l_ae_header_id
41895 );
41896
41897 --
41898 -- set rounding class
41899 --
41900 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
41901 'INTERORG_PAYABLES';
41902
41903 --
41904 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
41905 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
41906 --
41907 -- bulk performance
41908 --
41909 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
41910
41911 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
41912 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
41913
41914 -- 4955764
41915 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
41916 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
41917
41918 -- 4458381 Public Sector Enh
41919
41920 --
41921 -- set accounting attributes for the line type
41922 --
41923 l_entered_amt_idx := 3;
41924 l_accted_amt_idx := 8;
41925 l_bflow_applied_to_amt_idx := NULL; -- 5132302
41926 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
41927 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
41928 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
41929 l_rec_acct_attrs.array_char_value(2) := p_source_12;
41930 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
41931 l_rec_acct_attrs.array_num_value(3) := p_source_18;
41932 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
41933 l_rec_acct_attrs.array_char_value(4) := p_source_15;
41934 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
41935 l_rec_acct_attrs.array_date_value(5) := p_source_19;
41936 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
41937 l_rec_acct_attrs.array_num_value(6) := p_source_20;
41938 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
41939 l_rec_acct_attrs.array_char_value(7) := p_source_21;
41940 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
41941 l_rec_acct_attrs.array_num_value(8) := p_source_22;
41942
41943 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
41944 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
41945
41946 ---------------------------------------------------------------------------------------------------------------
41947 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
41948 ---------------------------------------------------------------------------------------------------------------
41949 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
41950
41951 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
41952 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
41953
41954 IF xla_accounting_cache_pkg.GetValueChar
41955 (p_source_code => 'LEDGER_CATEGORY_CODE'
41956 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
41957 AND l_bflow_method_code = 'PRIOR_ENTRY'
41958 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
41959 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
41960 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
41961 )
41962 THEN
41963 xla_ae_lines_pkg.BflowUpgEntry
41964 (p_business_method_code => l_bflow_method_code
41965 ,p_business_class_code => l_bflow_class_code
41966 ,p_balance_type => l_balance_type_code);
41967 ELSE
41968 NULL;
41969 -- No business flow processing for business flow method of NONE.
41970 END IF;
41971
41972 --
41973 -- call analytical criteria
41974 --
41975
41976 --
41977 -- call description
41978 --
41979 -- No description or it is inherited.
41980 --
41981 -- call ADRs
41982 -- Bug 4922099
41983 --
41984 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
41985 (NVL(l_actual_upg_option, 'N') = 'O') OR
41986 (NVL(l_enc_upg_option, 'N') = 'O')
41987 )
41988 THEN
41989 NULL;
41990 --
41991 --
41992
41993 l_ccid := AcctDerRule_4(
41994 p_application_id => p_application_id
41995 , p_ae_header_id => l_ae_header_id
41996 , p_source_4 => p_source_4
41997 , x_transaction_coa_id => l_adr_transaction_coa_id
41998 , x_accounting_coa_id => l_adr_accounting_coa_id
41999 , x_value_type_code => l_adr_value_type_code
42000 , p_side => 'NA'
42001 );
42002
42003 xla_ae_lines_pkg.set_ccid(
42004 p_code_combination_id => l_ccid
42005 , p_value_type_code => l_adr_value_type_code
42006 , p_transaction_coa_id => l_adr_transaction_coa_id
42007 , p_accounting_coa_id => l_adr_accounting_coa_id
42008 , p_adr_code => 'CST_DEFAULT'
42009 , p_adr_type_code => 'S'
42010 , p_component_type => l_component_type
42011 , p_component_code => l_component_code
42012 , p_component_type_code => l_component_type_code
42013 , p_component_appl_id => l_component_appl_id
42014 , p_amb_context_code => l_amb_context_code
42015 , p_side => 'NA'
42016 );
42017
42018
42019 --
42020 --
42021 END IF;
42022 --
42023 -- Bug 4922099
42024 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
42025 (NVL(l_enc_upg_option, 'N') = 'O')
42026 ) AND
42027 (l_bflow_method_code = 'PRIOR_ENTRY')
42028 )
42029 THEN
42030 IF
42031 --
42032 1 = 2
42033 --
42034 THEN
42035 xla_accounting_err_pkg.build_message
42036 (p_appli_s_name => 'XLA'
42037 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
42038 ,p_token_1 => 'LINE_NUMBER'
42039 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
42040 ,p_token_2 => 'LINE_TYPE_NAME'
42041 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
42042 l_component_type
42043 ,l_component_code
42044 ,l_component_type_code
42045 ,l_component_appl_id
42046 ,l_amb_context_code
42047 ,l_entity_code
42048 ,l_event_class_code
42049 )
42050 ,p_token_3 => 'OWNER'
42051 ,p_value_3 => xla_lookups_pkg.get_meaning(
42052 p_lookup_type => 'XLA_OWNER_TYPE'
42053 ,p_lookup_code => l_component_type_code
42054 )
42055 ,p_token_4 => 'PRODUCT_NAME'
42056 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
42057 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
42058 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
42059 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
42060 ,p_ae_header_id => NULL
42061 );
42062
42063 IF (C_LEVEL_ERROR>= g_log_level) THEN
42064 trace
42065 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
42066 ,p_level => C_LEVEL_ERROR
42067 ,p_module => l_log_module);
42068 END IF;
42069 END IF;
42070 END IF;
42071 --
42072 --
42073 ------------------------------------------------------------------------------------------------
42074 -- 4219869 Business Flow
42075 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
42076 -- Prior Entry. Currently, the following code is always generated.
42077 ------------------------------------------------------------------------------------------------
42078 XLA_AE_LINES_PKG.ValidateCurrentLine;
42079
42080 ------------------------------------------------------------------------------------
42081 -- 4219869 Business Flow
42082 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
42083 ------------------------------------------------------------------------------------
42084 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
42085
42086 ----------------------------------------------------------------------------------
42087 -- 4219869 Business Flow
42088 -- Update journal entry status -- Need to generate this within IF <condition>
42089 ----------------------------------------------------------------------------------
42090 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
42091 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
42092 ,p_balance_type_code => l_balance_type_code
42093 );
42094
42095 -------------------------------------------------------------------------------------------
42096 -- 4262811 - Generate the Accrual Reversal lines
42097 -------------------------------------------------------------------------------------------
42098 BEGIN
42099 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
42100 (g_array_event(p_event_id).array_value_num('header_index'));
42101 IF l_acc_rev_flag IS NULL THEN
42102 l_acc_rev_flag := 'N';
42103 END IF;
42104 EXCEPTION
42105 WHEN OTHERS THEN
42106 l_acc_rev_flag := 'N';
42107 END;
42108 --
42109 IF (l_acc_rev_flag = 'Y') THEN
42110
42111 -- 4645092 ------------------------------------------------------------------------------
42112 -- To allow MPA report to determine if it should generate report process
42113 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
42114 ------------------------------------------------------------------------------------------
42115
42116 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
42117 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
42118 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
42119 -- call ADRs
42120 -- Bug 4922099
42121 --
42122 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
42123 (NVL(l_actual_upg_option, 'N') = 'O') OR
42124 (NVL(l_enc_upg_option, 'N') = 'O')
42125 )
42126 THEN
42127 NULL;
42128 --
42129 --
42130
42131 l_ccid := AcctDerRule_4(
42132 p_application_id => p_application_id
42133 , p_ae_header_id => l_ae_header_id
42134 , p_source_4 => p_source_4
42135 , x_transaction_coa_id => l_adr_transaction_coa_id
42136 , x_accounting_coa_id => l_adr_accounting_coa_id
42137 , x_value_type_code => l_adr_value_type_code
42138 , p_side => 'NA'
42139 );
42140
42141 xla_ae_lines_pkg.set_ccid(
42142 p_code_combination_id => l_ccid
42143 , p_value_type_code => l_adr_value_type_code
42144 , p_transaction_coa_id => l_adr_transaction_coa_id
42145 , p_accounting_coa_id => l_adr_accounting_coa_id
42146 , p_adr_code => 'CST_DEFAULT'
42147 , p_adr_type_code => 'S'
42148 , p_component_type => l_component_type
42149 , p_component_code => l_component_code
42150 , p_component_type_code => l_component_type_code
42151 , p_component_appl_id => l_component_appl_id
42152 , p_amb_context_code => l_amb_context_code
42153 , p_side => 'NA'
42154 );
42155
42156
42157 --
42158 --
42159 END IF;
42160
42161 --
42162 -- Update the line information that should be overwritten
42163 --
42164 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
42165 p_header_num => 1);
42166 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
42167
42168 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
42169
42170 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
42171 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
42172 END IF;
42173
42174 --
42175 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
42176 --
42177 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
42178 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
42179 ELSE
42180 ---------------------------------------------------------------------------------------------------
42181 -- 4262811a Switch Sign
42182 ---------------------------------------------------------------------------------------------------
42183 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
42184 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
42185 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
42186 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
42187 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
42188 -- 5132302
42189 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
42190 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
42191
42192 END IF;
42193
42194 -- 4955764
42195 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
42196 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
42197
42198
42199 XLA_AE_LINES_PKG.ValidateCurrentLine;
42200 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
42201
42202 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
42203 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
42204 ,p_balance_type_code => l_balance_type_code);
42205
42206 END IF;
42207
42208 -----------------------------------------------------------------------------------------
42209 -- 4262811 Multiperiod Accounting
42210 -----------------------------------------------------------------------------------------
42211 -- No MPA option is assigned.
42212
42213
42214 END IF;
42215 END IF;
42216 --
42217
42218 --
42219 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
42220 trace
42221 (p_msg => 'END of AcctLineType_78'
42222 ,p_level => C_LEVEL_PROCEDURE
42223 ,p_module => l_log_module);
42224 END IF;
42225 --
42226 EXCEPTION
42227 WHEN xla_exceptions_pkg.application_exception THEN
42228 RAISE;
42229 WHEN OTHERS THEN
42230 xla_exceptions_pkg.raise_message
42231 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_78');
42232 END AcctLineType_78;
42233 --
42234
42235 ---------------------------------------
42236 --
42237 -- PRIVATE FUNCTION
42238 -- AcctLineType_79
42239 --
42240 ---------------------------------------
42241 PROCEDURE AcctLineType_79 (
42242 p_application_id IN NUMBER
42243 ,p_event_id IN NUMBER
42244 ,p_calculate_acctd_flag IN VARCHAR2
42245 ,p_calculate_g_l_flag IN VARCHAR2
42246 ,p_actual_flag IN OUT VARCHAR2
42247 ,p_balance_type_code OUT VARCHAR2
42248 ,p_gain_or_loss_ref OUT VARCHAR2
42249
42250 --Cost Management Default Account
42251 , p_source_4 IN NUMBER
42252 --DISTRIBUTION_IDENTIFIER
42253 , p_source_11 IN NUMBER
42254 --Distribution Type
42255 , p_source_12 IN VARCHAR2
42256 , p_source_12_meaning IN VARCHAR2
42257 --Entered Currency Code
42258 , p_source_15 IN VARCHAR2
42259 --Entered Amount
42260 , p_source_18 IN NUMBER
42261 --Currency Conversion Date
42262 , p_source_19 IN DATE
42263 --Currency Conversion Rate
42264 , p_source_20 IN NUMBER
42265 --Currency Conversion Type
42266 , p_source_21 IN VARCHAR2
42267 --Accounted Amount
42268 , p_source_22 IN NUMBER
42269 --Accounting Line Type
42270 , p_source_24 IN NUMBER
42271 )
42272 IS
42273
42274 l_component_type VARCHAR2(80);
42275 l_component_code VARCHAR2(30);
42276 l_component_type_code VARCHAR2(1);
42277 l_component_appl_id INTEGER;
42278 l_amb_context_code VARCHAR2(30);
42279 l_entity_code VARCHAR2(30);
42280 l_event_class_code VARCHAR2(30);
42281 l_ae_header_id NUMBER;
42282 l_event_type_code VARCHAR2(30);
42283 l_line_definition_code VARCHAR2(30);
42284 l_line_definition_owner_code VARCHAR2(1);
42285 --
42286 -- adr variables
42287 l_segment VARCHAR2(30);
42288 l_ccid NUMBER;
42289 l_adr_transaction_coa_id NUMBER;
42290 l_adr_accounting_coa_id NUMBER;
42291 l_adr_flexfield_segment_code VARCHAR2(30);
42292 l_adr_flex_value_set_id NUMBER;
42293 l_adr_value_type_code VARCHAR2(30);
42294 l_adr_value_combination_id NUMBER;
42295 l_adr_value_segment_code VARCHAR2(30);
42296
42297 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
42298 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
42299 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
42300 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
42301
42302 -- 4262811 Variables ------------------------------------------------------------------------------------------
42303 l_entered_amt_idx NUMBER;
42304 l_accted_amt_idx NUMBER;
42305 l_acc_rev_flag VARCHAR2(1);
42306 l_accrual_line_num NUMBER;
42307 l_tmp_amt NUMBER;
42308 l_acc_rev_natural_side_code VARCHAR2(1);
42309
42310 l_num_entries NUMBER;
42311 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
42312 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
42313 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
42314 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
42315 l_recog_line_1 NUMBER;
42316 l_recog_line_2 NUMBER;
42317
42318 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
42319 l_bflow_applied_to_amt NUMBER; -- 5132302
42320 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
42321
42322 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
42323
42324 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
42325 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
42326
42327 ---------------------------------------------------------------------------------------------------------------
42328
42329
42330 --
42331 -- bulk performance
42332 --
42333 l_balance_type_code VARCHAR2(1);
42334 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
42335 l_log_module VARCHAR2(240);
42336
42337 --
42338 -- Upgrade strategy
42339 --
42340 l_actual_upg_option VARCHAR2(1);
42341 l_enc_upg_option VARCHAR2(1);
42342
42343 --
42344 BEGIN
42345 --
42346 IF g_log_enabled THEN
42347 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_79';
42348 END IF;
42349 --
42350 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
42351
42352 trace
42353 (p_msg => 'BEGIN of AcctLineType_79'
42354 ,p_level => C_LEVEL_PROCEDURE
42355 ,p_module => l_log_module);
42356
42357 END IF;
42358 --
42359 l_component_type := 'AMB_JLT';
42360 l_component_code := 'INTERORG_PAYABLES';
42361 l_component_type_code := 'S';
42362 l_component_appl_id := 707;
42363 l_amb_context_code := 'DEFAULT';
42364 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
42365 l_event_class_code := 'USER_DEFINE';
42366 l_event_type_code := 'UDIR_INTERORG_SHIP';
42367 l_line_definition_owner_code := 'S';
42368 l_line_definition_code := 'USER_DIR_INTERORG_SHIP';
42369 --
42370 l_balance_type_code := 'A';
42371 l_segment := NULL;
42372 l_ccid := NULL;
42373 l_adr_transaction_coa_id := NULL;
42374 l_adr_accounting_coa_id := NULL;
42375 l_adr_flexfield_segment_code := NULL;
42376 l_adr_flex_value_set_id := NULL;
42377 l_adr_value_type_code := NULL;
42378 l_adr_value_combination_id := NULL;
42379 l_adr_value_segment_code := NULL;
42380
42381 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
42382 l_bflow_class_code := ''; -- 4219869 Business Flow
42383 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
42384 l_budgetary_control_flag := 'N';
42385
42386 l_bflow_applied_to_amt_idx := NULL; -- 5132302
42387 l_bflow_applied_to_amt := NULL; -- 5132302
42388 l_entered_amt_idx := NULL; -- 4262811
42389 l_accted_amt_idx := NULL; -- 4262811
42390 l_acc_rev_flag := NULL; -- 4262811
42391 l_accrual_line_num := NULL; -- 4262811
42392 l_tmp_amt := NULL; -- 4262811
42393 --
42394
42395 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
42396 l_balance_type_code <> 'B' THEN
42397 IF NVL(p_source_24,9E125) = 9
42398 THEN
42399
42400 --
42401 XLA_AE_LINES_PKG.SetNewLine;
42402
42403 p_balance_type_code := l_balance_type_code;
42404 -- set the flag so later we will know whether the gain loss line needs to be created
42405
42406 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
42407 p_actual_flag :='A';
42408 END IF;
42409
42410 --
42411 -- bulk performance
42412 --
42413 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
42414 p_header_num => 0); -- 4262811
42415 --
42416 -- set accounting line options
42417 --
42418 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
42419 p_natural_side_code => 'D'
42420 , p_gain_or_loss_flag => 'N'
42421 , p_gl_transfer_mode_code => 'S'
42422 , p_acct_entry_type_code => 'A'
42423 , p_switch_side_flag => 'Y'
42424 , p_merge_duplicate_code => 'N'
42425 );
42426 --
42427 l_acc_rev_natural_side_code := 'C'; -- 4262811
42428 --
42429 --
42430 -- set accounting line type info
42431 --
42432 xla_ae_lines_pkg.SetAcctLineType
42433 (p_component_type => l_component_type
42434 ,p_event_type_code => l_event_type_code
42435 ,p_line_definition_owner_code => l_line_definition_owner_code
42436 ,p_line_definition_code => l_line_definition_code
42437 ,p_accounting_line_code => l_component_code
42438 ,p_accounting_line_type_code => l_component_type_code
42439 ,p_accounting_line_appl_id => l_component_appl_id
42440 ,p_amb_context_code => l_amb_context_code
42441 ,p_entity_code => l_entity_code
42442 ,p_event_class_code => l_event_class_code);
42443 --
42444 -- set accounting class
42445 --
42446 xla_ae_lines_pkg.SetAcctClass(
42447 p_accounting_class_code => 'INTERORG_PAYABLES'
42448 , p_ae_header_id => l_ae_header_id
42449 );
42450
42451 --
42452 -- set rounding class
42453 --
42454 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
42455 'INTERORG_PAYABLES';
42456
42457 --
42458 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
42459 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
42460 --
42461 -- bulk performance
42462 --
42463 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
42464
42465 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
42466 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
42467
42468 -- 4955764
42469 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
42470 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
42471
42472 -- 4458381 Public Sector Enh
42473
42474 --
42475 -- set accounting attributes for the line type
42476 --
42477 l_entered_amt_idx := 3;
42478 l_accted_amt_idx := 8;
42479 l_bflow_applied_to_amt_idx := NULL; -- 5132302
42480 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
42481 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
42482 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
42483 l_rec_acct_attrs.array_char_value(2) := p_source_12;
42484 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
42485 l_rec_acct_attrs.array_num_value(3) := p_source_18;
42486 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
42487 l_rec_acct_attrs.array_char_value(4) := p_source_15;
42488 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
42489 l_rec_acct_attrs.array_date_value(5) := p_source_19;
42490 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
42491 l_rec_acct_attrs.array_num_value(6) := p_source_20;
42492 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
42493 l_rec_acct_attrs.array_char_value(7) := p_source_21;
42494 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
42495 l_rec_acct_attrs.array_num_value(8) := p_source_22;
42496
42497 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
42498 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
42499
42500 ---------------------------------------------------------------------------------------------------------------
42501 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
42502 ---------------------------------------------------------------------------------------------------------------
42503 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
42504
42505 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
42506 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
42507
42508 IF xla_accounting_cache_pkg.GetValueChar
42509 (p_source_code => 'LEDGER_CATEGORY_CODE'
42510 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
42511 AND l_bflow_method_code = 'PRIOR_ENTRY'
42512 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
42513 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
42514 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
42515 )
42516 THEN
42517 xla_ae_lines_pkg.BflowUpgEntry
42518 (p_business_method_code => l_bflow_method_code
42519 ,p_business_class_code => l_bflow_class_code
42520 ,p_balance_type => l_balance_type_code);
42521 ELSE
42522 NULL;
42523 -- No business flow processing for business flow method of NONE.
42524 END IF;
42525
42526 --
42527 -- call analytical criteria
42528 --
42529
42530 --
42531 -- call description
42532 --
42533 -- No description or it is inherited.
42534 --
42535 -- call ADRs
42536 -- Bug 4922099
42537 --
42538 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
42539 (NVL(l_actual_upg_option, 'N') = 'O') OR
42540 (NVL(l_enc_upg_option, 'N') = 'O')
42541 )
42542 THEN
42543 NULL;
42544 --
42545 --
42546
42547 l_ccid := AcctDerRule_4(
42548 p_application_id => p_application_id
42549 , p_ae_header_id => l_ae_header_id
42550 , p_source_4 => p_source_4
42551 , x_transaction_coa_id => l_adr_transaction_coa_id
42552 , x_accounting_coa_id => l_adr_accounting_coa_id
42553 , x_value_type_code => l_adr_value_type_code
42554 , p_side => 'NA'
42555 );
42556
42557 xla_ae_lines_pkg.set_ccid(
42558 p_code_combination_id => l_ccid
42559 , p_value_type_code => l_adr_value_type_code
42560 , p_transaction_coa_id => l_adr_transaction_coa_id
42561 , p_accounting_coa_id => l_adr_accounting_coa_id
42562 , p_adr_code => 'CST_DEFAULT'
42563 , p_adr_type_code => 'S'
42564 , p_component_type => l_component_type
42565 , p_component_code => l_component_code
42566 , p_component_type_code => l_component_type_code
42567 , p_component_appl_id => l_component_appl_id
42568 , p_amb_context_code => l_amb_context_code
42569 , p_side => 'NA'
42570 );
42571
42572
42573 --
42574 --
42575 END IF;
42576 --
42577 -- Bug 4922099
42578 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
42579 (NVL(l_enc_upg_option, 'N') = 'O')
42580 ) AND
42581 (l_bflow_method_code = 'PRIOR_ENTRY')
42582 )
42583 THEN
42584 IF
42585 --
42586 1 = 2
42587 --
42588 THEN
42589 xla_accounting_err_pkg.build_message
42590 (p_appli_s_name => 'XLA'
42591 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
42592 ,p_token_1 => 'LINE_NUMBER'
42593 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
42594 ,p_token_2 => 'LINE_TYPE_NAME'
42595 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
42596 l_component_type
42597 ,l_component_code
42598 ,l_component_type_code
42599 ,l_component_appl_id
42600 ,l_amb_context_code
42601 ,l_entity_code
42602 ,l_event_class_code
42603 )
42604 ,p_token_3 => 'OWNER'
42605 ,p_value_3 => xla_lookups_pkg.get_meaning(
42606 p_lookup_type => 'XLA_OWNER_TYPE'
42607 ,p_lookup_code => l_component_type_code
42608 )
42609 ,p_token_4 => 'PRODUCT_NAME'
42610 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
42611 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
42612 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
42613 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
42614 ,p_ae_header_id => NULL
42615 );
42616
42617 IF (C_LEVEL_ERROR>= g_log_level) THEN
42618 trace
42619 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
42620 ,p_level => C_LEVEL_ERROR
42621 ,p_module => l_log_module);
42622 END IF;
42623 END IF;
42624 END IF;
42625 --
42626 --
42627 ------------------------------------------------------------------------------------------------
42628 -- 4219869 Business Flow
42629 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
42630 -- Prior Entry. Currently, the following code is always generated.
42631 ------------------------------------------------------------------------------------------------
42632 XLA_AE_LINES_PKG.ValidateCurrentLine;
42633
42634 ------------------------------------------------------------------------------------
42635 -- 4219869 Business Flow
42636 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
42637 ------------------------------------------------------------------------------------
42638 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
42639
42640 ----------------------------------------------------------------------------------
42641 -- 4219869 Business Flow
42642 -- Update journal entry status -- Need to generate this within IF <condition>
42643 ----------------------------------------------------------------------------------
42644 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
42645 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
42646 ,p_balance_type_code => l_balance_type_code
42647 );
42648
42649 -------------------------------------------------------------------------------------------
42650 -- 4262811 - Generate the Accrual Reversal lines
42651 -------------------------------------------------------------------------------------------
42652 BEGIN
42653 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
42654 (g_array_event(p_event_id).array_value_num('header_index'));
42655 IF l_acc_rev_flag IS NULL THEN
42656 l_acc_rev_flag := 'N';
42657 END IF;
42658 EXCEPTION
42659 WHEN OTHERS THEN
42660 l_acc_rev_flag := 'N';
42661 END;
42662 --
42663 IF (l_acc_rev_flag = 'Y') THEN
42664
42665 -- 4645092 ------------------------------------------------------------------------------
42666 -- To allow MPA report to determine if it should generate report process
42667 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
42668 ------------------------------------------------------------------------------------------
42669
42670 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
42671 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
42672 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
42673 -- call ADRs
42674 -- Bug 4922099
42675 --
42676 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
42677 (NVL(l_actual_upg_option, 'N') = 'O') OR
42678 (NVL(l_enc_upg_option, 'N') = 'O')
42679 )
42680 THEN
42681 NULL;
42682 --
42683 --
42684
42685 l_ccid := AcctDerRule_4(
42686 p_application_id => p_application_id
42687 , p_ae_header_id => l_ae_header_id
42688 , p_source_4 => p_source_4
42689 , x_transaction_coa_id => l_adr_transaction_coa_id
42690 , x_accounting_coa_id => l_adr_accounting_coa_id
42691 , x_value_type_code => l_adr_value_type_code
42692 , p_side => 'NA'
42693 );
42694
42695 xla_ae_lines_pkg.set_ccid(
42696 p_code_combination_id => l_ccid
42697 , p_value_type_code => l_adr_value_type_code
42698 , p_transaction_coa_id => l_adr_transaction_coa_id
42699 , p_accounting_coa_id => l_adr_accounting_coa_id
42700 , p_adr_code => 'CST_DEFAULT'
42701 , p_adr_type_code => 'S'
42702 , p_component_type => l_component_type
42703 , p_component_code => l_component_code
42704 , p_component_type_code => l_component_type_code
42705 , p_component_appl_id => l_component_appl_id
42706 , p_amb_context_code => l_amb_context_code
42707 , p_side => 'NA'
42708 );
42709
42710
42711 --
42712 --
42713 END IF;
42714
42715 --
42716 -- Update the line information that should be overwritten
42717 --
42718 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
42719 p_header_num => 1);
42720 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
42721
42722 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
42723
42724 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
42725 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
42726 END IF;
42727
42728 --
42729 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
42730 --
42731 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
42732 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
42733 ELSE
42734 ---------------------------------------------------------------------------------------------------
42735 -- 4262811a Switch Sign
42736 ---------------------------------------------------------------------------------------------------
42737 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
42738 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
42739 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
42740 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
42741 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
42742 -- 5132302
42743 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
42744 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
42745
42746 END IF;
42747
42748 -- 4955764
42749 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
42750 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
42751
42752
42753 XLA_AE_LINES_PKG.ValidateCurrentLine;
42754 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
42755
42756 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
42757 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
42758 ,p_balance_type_code => l_balance_type_code);
42759
42760 END IF;
42761
42762 -----------------------------------------------------------------------------------------
42763 -- 4262811 Multiperiod Accounting
42764 -----------------------------------------------------------------------------------------
42765 -- No MPA option is assigned.
42766
42767
42768 END IF;
42769 END IF;
42770 --
42771
42772 --
42773 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
42774 trace
42775 (p_msg => 'END of AcctLineType_79'
42776 ,p_level => C_LEVEL_PROCEDURE
42777 ,p_module => l_log_module);
42778 END IF;
42779 --
42780 EXCEPTION
42781 WHEN xla_exceptions_pkg.application_exception THEN
42782 RAISE;
42783 WHEN OTHERS THEN
42784 xla_exceptions_pkg.raise_message
42785 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_79');
42786 END AcctLineType_79;
42787 --
42788
42789 ---------------------------------------
42790 --
42791 -- PRIVATE FUNCTION
42792 -- AcctLineType_80
42793 --
42794 ---------------------------------------
42795 PROCEDURE AcctLineType_80 (
42796 p_application_id IN NUMBER
42797 ,p_event_id IN NUMBER
42798 ,p_calculate_acctd_flag IN VARCHAR2
42799 ,p_calculate_g_l_flag IN VARCHAR2
42800 ,p_actual_flag IN OUT VARCHAR2
42801 ,p_balance_type_code OUT VARCHAR2
42802 ,p_gain_or_loss_ref OUT VARCHAR2
42803
42804 --Cost Management Default Account
42805 , p_source_4 IN NUMBER
42806 --DISTRIBUTION_IDENTIFIER
42807 , p_source_11 IN NUMBER
42808 --Distribution Type
42809 , p_source_12 IN VARCHAR2
42810 , p_source_12_meaning IN VARCHAR2
42811 --Entered Currency Code
42812 , p_source_15 IN VARCHAR2
42813 --Entered Amount
42814 , p_source_18 IN NUMBER
42815 --Currency Conversion Date
42816 , p_source_19 IN DATE
42817 --Currency Conversion Rate
42818 , p_source_20 IN NUMBER
42819 --Currency Conversion Type
42820 , p_source_21 IN VARCHAR2
42821 --Accounted Amount
42822 , p_source_22 IN NUMBER
42823 --Accounting Line Type
42824 , p_source_24 IN NUMBER
42825 )
42826 IS
42827
42828 l_component_type VARCHAR2(80);
42829 l_component_code VARCHAR2(30);
42830 l_component_type_code VARCHAR2(1);
42831 l_component_appl_id INTEGER;
42832 l_amb_context_code VARCHAR2(30);
42833 l_entity_code VARCHAR2(30);
42834 l_event_class_code VARCHAR2(30);
42835 l_ae_header_id NUMBER;
42836 l_event_type_code VARCHAR2(30);
42837 l_line_definition_code VARCHAR2(30);
42838 l_line_definition_owner_code VARCHAR2(1);
42839 --
42840 -- adr variables
42841 l_segment VARCHAR2(30);
42842 l_ccid NUMBER;
42843 l_adr_transaction_coa_id NUMBER;
42844 l_adr_accounting_coa_id NUMBER;
42845 l_adr_flexfield_segment_code VARCHAR2(30);
42846 l_adr_flex_value_set_id NUMBER;
42847 l_adr_value_type_code VARCHAR2(30);
42848 l_adr_value_combination_id NUMBER;
42849 l_adr_value_segment_code VARCHAR2(30);
42850
42851 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
42852 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
42853 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
42854 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
42855
42856 -- 4262811 Variables ------------------------------------------------------------------------------------------
42857 l_entered_amt_idx NUMBER;
42858 l_accted_amt_idx NUMBER;
42859 l_acc_rev_flag VARCHAR2(1);
42860 l_accrual_line_num NUMBER;
42861 l_tmp_amt NUMBER;
42862 l_acc_rev_natural_side_code VARCHAR2(1);
42863
42864 l_num_entries NUMBER;
42865 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
42866 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
42867 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
42868 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
42869 l_recog_line_1 NUMBER;
42870 l_recog_line_2 NUMBER;
42871
42872 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
42873 l_bflow_applied_to_amt NUMBER; -- 5132302
42874 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
42875
42876 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
42877
42878 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
42879 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
42880
42881 ---------------------------------------------------------------------------------------------------------------
42882
42883
42884 --
42885 -- bulk performance
42886 --
42887 l_balance_type_code VARCHAR2(1);
42888 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
42889 l_log_module VARCHAR2(240);
42890
42891 --
42892 -- Upgrade strategy
42893 --
42894 l_actual_upg_option VARCHAR2(1);
42895 l_enc_upg_option VARCHAR2(1);
42896
42897 --
42898 BEGIN
42899 --
42900 IF g_log_enabled THEN
42901 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_80';
42902 END IF;
42903 --
42904 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
42905
42906 trace
42907 (p_msg => 'BEGIN of AcctLineType_80'
42908 ,p_level => C_LEVEL_PROCEDURE
42909 ,p_module => l_log_module);
42910
42911 END IF;
42912 --
42913 l_component_type := 'AMB_JLT';
42914 l_component_code := 'INTERORG_PAYABLES';
42915 l_component_type_code := 'S';
42916 l_component_appl_id := 707;
42917 l_amb_context_code := 'DEFAULT';
42918 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
42919 l_event_class_code := 'USER_DEFINE';
42920 l_event_type_code := 'UDIR_INTERORG_SHIP_NO_TP';
42921 l_line_definition_owner_code := 'S';
42922 l_line_definition_code := 'USER_DIR_INTERORG_SHIP_NO_TP';
42923 --
42924 l_balance_type_code := 'A';
42925 l_segment := NULL;
42926 l_ccid := NULL;
42927 l_adr_transaction_coa_id := NULL;
42928 l_adr_accounting_coa_id := NULL;
42929 l_adr_flexfield_segment_code := NULL;
42930 l_adr_flex_value_set_id := NULL;
42931 l_adr_value_type_code := NULL;
42932 l_adr_value_combination_id := NULL;
42933 l_adr_value_segment_code := NULL;
42934
42935 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
42936 l_bflow_class_code := ''; -- 4219869 Business Flow
42937 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
42938 l_budgetary_control_flag := 'N';
42939
42940 l_bflow_applied_to_amt_idx := NULL; -- 5132302
42941 l_bflow_applied_to_amt := NULL; -- 5132302
42942 l_entered_amt_idx := NULL; -- 4262811
42943 l_accted_amt_idx := NULL; -- 4262811
42944 l_acc_rev_flag := NULL; -- 4262811
42945 l_accrual_line_num := NULL; -- 4262811
42946 l_tmp_amt := NULL; -- 4262811
42947 --
42948
42949 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
42950 l_balance_type_code <> 'B' THEN
42951 IF NVL(p_source_24,9E125) = 9
42952 THEN
42953
42954 --
42955 XLA_AE_LINES_PKG.SetNewLine;
42956
42957 p_balance_type_code := l_balance_type_code;
42958 -- set the flag so later we will know whether the gain loss line needs to be created
42959
42960 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
42961 p_actual_flag :='A';
42962 END IF;
42963
42964 --
42965 -- bulk performance
42966 --
42967 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
42968 p_header_num => 0); -- 4262811
42969 --
42970 -- set accounting line options
42971 --
42972 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
42973 p_natural_side_code => 'D'
42974 , p_gain_or_loss_flag => 'N'
42975 , p_gl_transfer_mode_code => 'S'
42976 , p_acct_entry_type_code => 'A'
42977 , p_switch_side_flag => 'Y'
42978 , p_merge_duplicate_code => 'N'
42979 );
42980 --
42981 l_acc_rev_natural_side_code := 'C'; -- 4262811
42982 --
42983 --
42984 -- set accounting line type info
42985 --
42986 xla_ae_lines_pkg.SetAcctLineType
42987 (p_component_type => l_component_type
42988 ,p_event_type_code => l_event_type_code
42989 ,p_line_definition_owner_code => l_line_definition_owner_code
42990 ,p_line_definition_code => l_line_definition_code
42991 ,p_accounting_line_code => l_component_code
42992 ,p_accounting_line_type_code => l_component_type_code
42993 ,p_accounting_line_appl_id => l_component_appl_id
42994 ,p_amb_context_code => l_amb_context_code
42995 ,p_entity_code => l_entity_code
42996 ,p_event_class_code => l_event_class_code);
42997 --
42998 -- set accounting class
42999 --
43000 xla_ae_lines_pkg.SetAcctClass(
43001 p_accounting_class_code => 'INTERORG_PAYABLES'
43002 , p_ae_header_id => l_ae_header_id
43003 );
43004
43005 --
43006 -- set rounding class
43007 --
43008 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
43009 'INTERORG_PAYABLES';
43010
43011 --
43012 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
43013 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
43014 --
43015 -- bulk performance
43016 --
43017 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
43018
43019 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
43020 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
43021
43022 -- 4955764
43023 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
43024 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
43025
43026 -- 4458381 Public Sector Enh
43027
43028 --
43029 -- set accounting attributes for the line type
43030 --
43031 l_entered_amt_idx := 3;
43032 l_accted_amt_idx := 8;
43033 l_bflow_applied_to_amt_idx := NULL; -- 5132302
43034 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
43035 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
43036 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
43037 l_rec_acct_attrs.array_char_value(2) := p_source_12;
43038 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
43039 l_rec_acct_attrs.array_num_value(3) := p_source_18;
43040 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
43041 l_rec_acct_attrs.array_char_value(4) := p_source_15;
43042 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
43043 l_rec_acct_attrs.array_date_value(5) := p_source_19;
43044 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
43045 l_rec_acct_attrs.array_num_value(6) := p_source_20;
43046 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
43047 l_rec_acct_attrs.array_char_value(7) := p_source_21;
43048 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
43049 l_rec_acct_attrs.array_num_value(8) := p_source_22;
43050
43051 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
43052 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
43053
43054 ---------------------------------------------------------------------------------------------------------------
43055 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
43056 ---------------------------------------------------------------------------------------------------------------
43057 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
43058
43059 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
43060 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
43061
43062 IF xla_accounting_cache_pkg.GetValueChar
43063 (p_source_code => 'LEDGER_CATEGORY_CODE'
43064 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
43065 AND l_bflow_method_code = 'PRIOR_ENTRY'
43066 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
43067 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
43068 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
43069 )
43070 THEN
43071 xla_ae_lines_pkg.BflowUpgEntry
43072 (p_business_method_code => l_bflow_method_code
43073 ,p_business_class_code => l_bflow_class_code
43074 ,p_balance_type => l_balance_type_code);
43075 ELSE
43076 NULL;
43077 -- No business flow processing for business flow method of NONE.
43078 END IF;
43079
43080 --
43081 -- call analytical criteria
43082 --
43083
43084 --
43085 -- call description
43086 --
43087 -- No description or it is inherited.
43088 --
43089 -- call ADRs
43090 -- Bug 4922099
43091 --
43092 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
43093 (NVL(l_actual_upg_option, 'N') = 'O') OR
43094 (NVL(l_enc_upg_option, 'N') = 'O')
43095 )
43096 THEN
43097 NULL;
43098 --
43099 --
43100
43101 l_ccid := AcctDerRule_4(
43102 p_application_id => p_application_id
43103 , p_ae_header_id => l_ae_header_id
43104 , p_source_4 => p_source_4
43105 , x_transaction_coa_id => l_adr_transaction_coa_id
43106 , x_accounting_coa_id => l_adr_accounting_coa_id
43107 , x_value_type_code => l_adr_value_type_code
43108 , p_side => 'NA'
43109 );
43110
43111 xla_ae_lines_pkg.set_ccid(
43112 p_code_combination_id => l_ccid
43113 , p_value_type_code => l_adr_value_type_code
43114 , p_transaction_coa_id => l_adr_transaction_coa_id
43115 , p_accounting_coa_id => l_adr_accounting_coa_id
43116 , p_adr_code => 'CST_DEFAULT'
43117 , p_adr_type_code => 'S'
43118 , p_component_type => l_component_type
43119 , p_component_code => l_component_code
43120 , p_component_type_code => l_component_type_code
43121 , p_component_appl_id => l_component_appl_id
43122 , p_amb_context_code => l_amb_context_code
43123 , p_side => 'NA'
43124 );
43125
43126
43127 --
43128 --
43129 END IF;
43130 --
43131 -- Bug 4922099
43132 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
43133 (NVL(l_enc_upg_option, 'N') = 'O')
43134 ) AND
43135 (l_bflow_method_code = 'PRIOR_ENTRY')
43136 )
43137 THEN
43138 IF
43139 --
43140 1 = 2
43141 --
43142 THEN
43143 xla_accounting_err_pkg.build_message
43144 (p_appli_s_name => 'XLA'
43145 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
43146 ,p_token_1 => 'LINE_NUMBER'
43147 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
43148 ,p_token_2 => 'LINE_TYPE_NAME'
43149 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
43150 l_component_type
43151 ,l_component_code
43152 ,l_component_type_code
43153 ,l_component_appl_id
43154 ,l_amb_context_code
43155 ,l_entity_code
43156 ,l_event_class_code
43157 )
43158 ,p_token_3 => 'OWNER'
43159 ,p_value_3 => xla_lookups_pkg.get_meaning(
43160 p_lookup_type => 'XLA_OWNER_TYPE'
43161 ,p_lookup_code => l_component_type_code
43162 )
43163 ,p_token_4 => 'PRODUCT_NAME'
43164 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
43165 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
43166 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
43167 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
43168 ,p_ae_header_id => NULL
43169 );
43170
43171 IF (C_LEVEL_ERROR>= g_log_level) THEN
43172 trace
43173 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
43174 ,p_level => C_LEVEL_ERROR
43175 ,p_module => l_log_module);
43176 END IF;
43177 END IF;
43178 END IF;
43179 --
43180 --
43181 ------------------------------------------------------------------------------------------------
43182 -- 4219869 Business Flow
43183 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
43184 -- Prior Entry. Currently, the following code is always generated.
43185 ------------------------------------------------------------------------------------------------
43186 XLA_AE_LINES_PKG.ValidateCurrentLine;
43187
43188 ------------------------------------------------------------------------------------
43189 -- 4219869 Business Flow
43190 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
43191 ------------------------------------------------------------------------------------
43192 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
43193
43194 ----------------------------------------------------------------------------------
43195 -- 4219869 Business Flow
43196 -- Update journal entry status -- Need to generate this within IF <condition>
43197 ----------------------------------------------------------------------------------
43198 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
43199 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
43200 ,p_balance_type_code => l_balance_type_code
43201 );
43202
43203 -------------------------------------------------------------------------------------------
43204 -- 4262811 - Generate the Accrual Reversal lines
43205 -------------------------------------------------------------------------------------------
43206 BEGIN
43207 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
43208 (g_array_event(p_event_id).array_value_num('header_index'));
43209 IF l_acc_rev_flag IS NULL THEN
43210 l_acc_rev_flag := 'N';
43211 END IF;
43212 EXCEPTION
43213 WHEN OTHERS THEN
43214 l_acc_rev_flag := 'N';
43215 END;
43216 --
43217 IF (l_acc_rev_flag = 'Y') THEN
43218
43219 -- 4645092 ------------------------------------------------------------------------------
43220 -- To allow MPA report to determine if it should generate report process
43221 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
43222 ------------------------------------------------------------------------------------------
43223
43224 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
43225 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
43226 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
43227 -- call ADRs
43228 -- Bug 4922099
43229 --
43230 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
43231 (NVL(l_actual_upg_option, 'N') = 'O') OR
43232 (NVL(l_enc_upg_option, 'N') = 'O')
43233 )
43234 THEN
43235 NULL;
43236 --
43237 --
43238
43239 l_ccid := AcctDerRule_4(
43240 p_application_id => p_application_id
43241 , p_ae_header_id => l_ae_header_id
43242 , p_source_4 => p_source_4
43243 , x_transaction_coa_id => l_adr_transaction_coa_id
43244 , x_accounting_coa_id => l_adr_accounting_coa_id
43245 , x_value_type_code => l_adr_value_type_code
43246 , p_side => 'NA'
43247 );
43248
43249 xla_ae_lines_pkg.set_ccid(
43250 p_code_combination_id => l_ccid
43251 , p_value_type_code => l_adr_value_type_code
43252 , p_transaction_coa_id => l_adr_transaction_coa_id
43253 , p_accounting_coa_id => l_adr_accounting_coa_id
43254 , p_adr_code => 'CST_DEFAULT'
43255 , p_adr_type_code => 'S'
43256 , p_component_type => l_component_type
43257 , p_component_code => l_component_code
43258 , p_component_type_code => l_component_type_code
43259 , p_component_appl_id => l_component_appl_id
43260 , p_amb_context_code => l_amb_context_code
43261 , p_side => 'NA'
43262 );
43263
43264
43265 --
43266 --
43267 END IF;
43268
43269 --
43270 -- Update the line information that should be overwritten
43271 --
43272 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
43273 p_header_num => 1);
43274 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
43275
43276 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
43277
43278 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
43279 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
43280 END IF;
43281
43282 --
43283 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
43284 --
43285 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
43286 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
43287 ELSE
43288 ---------------------------------------------------------------------------------------------------
43289 -- 4262811a Switch Sign
43290 ---------------------------------------------------------------------------------------------------
43291 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
43292 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
43293 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
43294 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
43295 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
43296 -- 5132302
43297 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
43298 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
43299
43300 END IF;
43301
43302 -- 4955764
43303 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
43304 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
43305
43306
43307 XLA_AE_LINES_PKG.ValidateCurrentLine;
43308 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
43309
43310 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
43311 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
43312 ,p_balance_type_code => l_balance_type_code);
43313
43314 END IF;
43315
43316 -----------------------------------------------------------------------------------------
43317 -- 4262811 Multiperiod Accounting
43318 -----------------------------------------------------------------------------------------
43319 -- No MPA option is assigned.
43320
43321
43322 END IF;
43323 END IF;
43324 --
43325
43326 --
43327 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
43328 trace
43329 (p_msg => 'END of AcctLineType_80'
43330 ,p_level => C_LEVEL_PROCEDURE
43331 ,p_module => l_log_module);
43332 END IF;
43333 --
43334 EXCEPTION
43335 WHEN xla_exceptions_pkg.application_exception THEN
43336 RAISE;
43337 WHEN OTHERS THEN
43338 xla_exceptions_pkg.raise_message
43339 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_80');
43340 END AcctLineType_80;
43341 --
43342
43343 ---------------------------------------
43344 --
43345 -- PRIVATE FUNCTION
43346 -- AcctLineType_81
43347 --
43348 ---------------------------------------
43349 PROCEDURE AcctLineType_81 (
43350 p_application_id IN NUMBER
43351 ,p_event_id IN NUMBER
43352 ,p_calculate_acctd_flag IN VARCHAR2
43353 ,p_calculate_g_l_flag IN VARCHAR2
43354 ,p_actual_flag IN OUT VARCHAR2
43355 ,p_balance_type_code OUT VARCHAR2
43356 ,p_gain_or_loss_ref OUT VARCHAR2
43357
43358 --Cost Management Default Account
43359 , p_source_4 IN NUMBER
43360 --DISTRIBUTION_IDENTIFIER
43361 , p_source_11 IN NUMBER
43362 --Distribution Type
43363 , p_source_12 IN VARCHAR2
43364 , p_source_12_meaning IN VARCHAR2
43365 --Entered Currency Code
43366 , p_source_15 IN VARCHAR2
43367 --Entered Amount
43368 , p_source_18 IN NUMBER
43369 --Currency Conversion Date
43370 , p_source_19 IN DATE
43371 --Currency Conversion Rate
43372 , p_source_20 IN NUMBER
43373 --Currency Conversion Type
43374 , p_source_21 IN VARCHAR2
43375 --Accounted Amount
43376 , p_source_22 IN NUMBER
43377 --Accounting Line Type
43378 , p_source_24 IN NUMBER
43379 )
43380 IS
43381
43382 l_component_type VARCHAR2(80);
43383 l_component_code VARCHAR2(30);
43384 l_component_type_code VARCHAR2(1);
43385 l_component_appl_id INTEGER;
43386 l_amb_context_code VARCHAR2(30);
43387 l_entity_code VARCHAR2(30);
43388 l_event_class_code VARCHAR2(30);
43389 l_ae_header_id NUMBER;
43390 l_event_type_code VARCHAR2(30);
43391 l_line_definition_code VARCHAR2(30);
43392 l_line_definition_owner_code VARCHAR2(1);
43393 --
43394 -- adr variables
43395 l_segment VARCHAR2(30);
43396 l_ccid NUMBER;
43397 l_adr_transaction_coa_id NUMBER;
43398 l_adr_accounting_coa_id NUMBER;
43399 l_adr_flexfield_segment_code VARCHAR2(30);
43400 l_adr_flex_value_set_id NUMBER;
43401 l_adr_value_type_code VARCHAR2(30);
43402 l_adr_value_combination_id NUMBER;
43403 l_adr_value_segment_code VARCHAR2(30);
43404
43405 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
43406 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
43407 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
43408 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
43409
43410 -- 4262811 Variables ------------------------------------------------------------------------------------------
43411 l_entered_amt_idx NUMBER;
43412 l_accted_amt_idx NUMBER;
43413 l_acc_rev_flag VARCHAR2(1);
43414 l_accrual_line_num NUMBER;
43415 l_tmp_amt NUMBER;
43416 l_acc_rev_natural_side_code VARCHAR2(1);
43417
43418 l_num_entries NUMBER;
43419 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
43420 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
43421 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
43422 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
43423 l_recog_line_1 NUMBER;
43424 l_recog_line_2 NUMBER;
43425
43426 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
43427 l_bflow_applied_to_amt NUMBER; -- 5132302
43428 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
43429
43430 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
43431
43432 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
43433 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
43434
43435 ---------------------------------------------------------------------------------------------------------------
43436
43437
43438 --
43439 -- bulk performance
43440 --
43441 l_balance_type_code VARCHAR2(1);
43442 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
43443 l_log_module VARCHAR2(240);
43444
43445 --
43446 -- Upgrade strategy
43447 --
43448 l_actual_upg_option VARCHAR2(1);
43449 l_enc_upg_option VARCHAR2(1);
43450
43451 --
43452 BEGIN
43453 --
43454 IF g_log_enabled THEN
43455 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_81';
43456 END IF;
43457 --
43458 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
43459
43460 trace
43461 (p_msg => 'BEGIN of AcctLineType_81'
43462 ,p_level => C_LEVEL_PROCEDURE
43463 ,p_module => l_log_module);
43464
43465 END IF;
43466 --
43467 l_component_type := 'AMB_JLT';
43468 l_component_code := 'INTERORG_PAYABLES';
43469 l_component_type_code := 'S';
43470 l_component_appl_id := 707;
43471 l_amb_context_code := 'DEFAULT';
43472 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
43473 l_event_class_code := 'FOB_SHIP_RECIPIENT_SHIP';
43474 l_event_type_code := 'FOB_SHIP_RECIPIENT_SHIP_ALL';
43475 l_line_definition_owner_code := 'S';
43476 l_line_definition_code := 'FOB_SHIP_RECIPIENT_SHIP';
43477 --
43478 l_balance_type_code := 'A';
43479 l_segment := NULL;
43480 l_ccid := NULL;
43481 l_adr_transaction_coa_id := NULL;
43482 l_adr_accounting_coa_id := NULL;
43483 l_adr_flexfield_segment_code := NULL;
43484 l_adr_flex_value_set_id := NULL;
43485 l_adr_value_type_code := NULL;
43486 l_adr_value_combination_id := NULL;
43487 l_adr_value_segment_code := NULL;
43488
43489 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
43490 l_bflow_class_code := ''; -- 4219869 Business Flow
43491 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
43492 l_budgetary_control_flag := 'N';
43493
43494 l_bflow_applied_to_amt_idx := NULL; -- 5132302
43495 l_bflow_applied_to_amt := NULL; -- 5132302
43496 l_entered_amt_idx := NULL; -- 4262811
43497 l_accted_amt_idx := NULL; -- 4262811
43498 l_acc_rev_flag := NULL; -- 4262811
43499 l_accrual_line_num := NULL; -- 4262811
43500 l_tmp_amt := NULL; -- 4262811
43501 --
43502
43503 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
43504 l_balance_type_code <> 'B' THEN
43505 IF NVL(p_source_24,9E125) = 9
43506 THEN
43507
43508 --
43509 XLA_AE_LINES_PKG.SetNewLine;
43510
43511 p_balance_type_code := l_balance_type_code;
43512 -- set the flag so later we will know whether the gain loss line needs to be created
43513
43514 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
43515 p_actual_flag :='A';
43516 END IF;
43517
43518 --
43519 -- bulk performance
43520 --
43521 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
43522 p_header_num => 0); -- 4262811
43523 --
43524 -- set accounting line options
43525 --
43526 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
43527 p_natural_side_code => 'D'
43528 , p_gain_or_loss_flag => 'N'
43529 , p_gl_transfer_mode_code => 'S'
43530 , p_acct_entry_type_code => 'A'
43531 , p_switch_side_flag => 'Y'
43532 , p_merge_duplicate_code => 'N'
43533 );
43534 --
43535 l_acc_rev_natural_side_code := 'C'; -- 4262811
43536 --
43537 --
43538 -- set accounting line type info
43539 --
43540 xla_ae_lines_pkg.SetAcctLineType
43541 (p_component_type => l_component_type
43542 ,p_event_type_code => l_event_type_code
43543 ,p_line_definition_owner_code => l_line_definition_owner_code
43544 ,p_line_definition_code => l_line_definition_code
43545 ,p_accounting_line_code => l_component_code
43546 ,p_accounting_line_type_code => l_component_type_code
43547 ,p_accounting_line_appl_id => l_component_appl_id
43548 ,p_amb_context_code => l_amb_context_code
43549 ,p_entity_code => l_entity_code
43550 ,p_event_class_code => l_event_class_code);
43551 --
43552 -- set accounting class
43553 --
43554 xla_ae_lines_pkg.SetAcctClass(
43555 p_accounting_class_code => 'INTERORG_PAYABLES'
43556 , p_ae_header_id => l_ae_header_id
43557 );
43558
43559 --
43560 -- set rounding class
43561 --
43562 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
43563 'INTERORG_PAYABLES';
43564
43565 --
43566 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
43567 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
43568 --
43569 -- bulk performance
43570 --
43571 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
43572
43573 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
43574 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
43575
43576 -- 4955764
43577 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
43578 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
43579
43580 -- 4458381 Public Sector Enh
43581
43582 --
43583 -- set accounting attributes for the line type
43584 --
43585 l_entered_amt_idx := 3;
43586 l_accted_amt_idx := 8;
43587 l_bflow_applied_to_amt_idx := NULL; -- 5132302
43588 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
43589 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
43590 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
43591 l_rec_acct_attrs.array_char_value(2) := p_source_12;
43592 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
43593 l_rec_acct_attrs.array_num_value(3) := p_source_18;
43594 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
43595 l_rec_acct_attrs.array_char_value(4) := p_source_15;
43596 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
43597 l_rec_acct_attrs.array_date_value(5) := p_source_19;
43598 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
43599 l_rec_acct_attrs.array_num_value(6) := p_source_20;
43600 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
43601 l_rec_acct_attrs.array_char_value(7) := p_source_21;
43602 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
43603 l_rec_acct_attrs.array_num_value(8) := p_source_22;
43604
43605 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
43606 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
43607
43608 ---------------------------------------------------------------------------------------------------------------
43609 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
43610 ---------------------------------------------------------------------------------------------------------------
43611 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
43612
43613 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
43614 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
43615
43616 IF xla_accounting_cache_pkg.GetValueChar
43617 (p_source_code => 'LEDGER_CATEGORY_CODE'
43618 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
43619 AND l_bflow_method_code = 'PRIOR_ENTRY'
43620 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
43621 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
43622 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
43623 )
43624 THEN
43625 xla_ae_lines_pkg.BflowUpgEntry
43626 (p_business_method_code => l_bflow_method_code
43627 ,p_business_class_code => l_bflow_class_code
43628 ,p_balance_type => l_balance_type_code);
43629 ELSE
43630 NULL;
43631 -- No business flow processing for business flow method of NONE.
43632 END IF;
43633
43634 --
43635 -- call analytical criteria
43636 --
43637
43638 --
43639 -- call description
43640 --
43641 -- No description or it is inherited.
43642 --
43643 -- call ADRs
43644 -- Bug 4922099
43645 --
43646 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
43647 (NVL(l_actual_upg_option, 'N') = 'O') OR
43648 (NVL(l_enc_upg_option, 'N') = 'O')
43649 )
43650 THEN
43651 NULL;
43652 --
43653 --
43654
43655 l_ccid := AcctDerRule_4(
43656 p_application_id => p_application_id
43657 , p_ae_header_id => l_ae_header_id
43658 , p_source_4 => p_source_4
43659 , x_transaction_coa_id => l_adr_transaction_coa_id
43660 , x_accounting_coa_id => l_adr_accounting_coa_id
43661 , x_value_type_code => l_adr_value_type_code
43662 , p_side => 'NA'
43663 );
43664
43665 xla_ae_lines_pkg.set_ccid(
43666 p_code_combination_id => l_ccid
43667 , p_value_type_code => l_adr_value_type_code
43668 , p_transaction_coa_id => l_adr_transaction_coa_id
43669 , p_accounting_coa_id => l_adr_accounting_coa_id
43670 , p_adr_code => 'CST_DEFAULT'
43671 , p_adr_type_code => 'S'
43672 , p_component_type => l_component_type
43673 , p_component_code => l_component_code
43674 , p_component_type_code => l_component_type_code
43675 , p_component_appl_id => l_component_appl_id
43676 , p_amb_context_code => l_amb_context_code
43677 , p_side => 'NA'
43678 );
43679
43680
43681 --
43682 --
43683 END IF;
43684 --
43685 -- Bug 4922099
43686 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
43687 (NVL(l_enc_upg_option, 'N') = 'O')
43688 ) AND
43689 (l_bflow_method_code = 'PRIOR_ENTRY')
43690 )
43691 THEN
43692 IF
43693 --
43694 1 = 2
43695 --
43696 THEN
43697 xla_accounting_err_pkg.build_message
43698 (p_appli_s_name => 'XLA'
43699 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
43700 ,p_token_1 => 'LINE_NUMBER'
43701 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
43702 ,p_token_2 => 'LINE_TYPE_NAME'
43703 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
43704 l_component_type
43705 ,l_component_code
43706 ,l_component_type_code
43707 ,l_component_appl_id
43708 ,l_amb_context_code
43709 ,l_entity_code
43710 ,l_event_class_code
43711 )
43712 ,p_token_3 => 'OWNER'
43713 ,p_value_3 => xla_lookups_pkg.get_meaning(
43714 p_lookup_type => 'XLA_OWNER_TYPE'
43715 ,p_lookup_code => l_component_type_code
43716 )
43717 ,p_token_4 => 'PRODUCT_NAME'
43718 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
43719 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
43720 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
43721 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
43722 ,p_ae_header_id => NULL
43723 );
43724
43725 IF (C_LEVEL_ERROR>= g_log_level) THEN
43726 trace
43727 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
43728 ,p_level => C_LEVEL_ERROR
43729 ,p_module => l_log_module);
43730 END IF;
43731 END IF;
43732 END IF;
43733 --
43734 --
43735 ------------------------------------------------------------------------------------------------
43736 -- 4219869 Business Flow
43737 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
43738 -- Prior Entry. Currently, the following code is always generated.
43739 ------------------------------------------------------------------------------------------------
43740 XLA_AE_LINES_PKG.ValidateCurrentLine;
43741
43742 ------------------------------------------------------------------------------------
43743 -- 4219869 Business Flow
43744 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
43745 ------------------------------------------------------------------------------------
43746 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
43747
43748 ----------------------------------------------------------------------------------
43749 -- 4219869 Business Flow
43750 -- Update journal entry status -- Need to generate this within IF <condition>
43751 ----------------------------------------------------------------------------------
43752 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
43753 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
43754 ,p_balance_type_code => l_balance_type_code
43755 );
43756
43757 -------------------------------------------------------------------------------------------
43758 -- 4262811 - Generate the Accrual Reversal lines
43759 -------------------------------------------------------------------------------------------
43760 BEGIN
43761 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
43762 (g_array_event(p_event_id).array_value_num('header_index'));
43763 IF l_acc_rev_flag IS NULL THEN
43764 l_acc_rev_flag := 'N';
43765 END IF;
43766 EXCEPTION
43767 WHEN OTHERS THEN
43768 l_acc_rev_flag := 'N';
43769 END;
43770 --
43771 IF (l_acc_rev_flag = 'Y') THEN
43772
43773 -- 4645092 ------------------------------------------------------------------------------
43774 -- To allow MPA report to determine if it should generate report process
43775 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
43776 ------------------------------------------------------------------------------------------
43777
43778 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
43779 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
43780 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
43781 -- call ADRs
43782 -- Bug 4922099
43783 --
43784 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
43785 (NVL(l_actual_upg_option, 'N') = 'O') OR
43786 (NVL(l_enc_upg_option, 'N') = 'O')
43787 )
43788 THEN
43789 NULL;
43790 --
43791 --
43792
43793 l_ccid := AcctDerRule_4(
43794 p_application_id => p_application_id
43795 , p_ae_header_id => l_ae_header_id
43796 , p_source_4 => p_source_4
43797 , x_transaction_coa_id => l_adr_transaction_coa_id
43798 , x_accounting_coa_id => l_adr_accounting_coa_id
43799 , x_value_type_code => l_adr_value_type_code
43800 , p_side => 'NA'
43801 );
43802
43803 xla_ae_lines_pkg.set_ccid(
43804 p_code_combination_id => l_ccid
43805 , p_value_type_code => l_adr_value_type_code
43806 , p_transaction_coa_id => l_adr_transaction_coa_id
43807 , p_accounting_coa_id => l_adr_accounting_coa_id
43808 , p_adr_code => 'CST_DEFAULT'
43809 , p_adr_type_code => 'S'
43810 , p_component_type => l_component_type
43811 , p_component_code => l_component_code
43812 , p_component_type_code => l_component_type_code
43813 , p_component_appl_id => l_component_appl_id
43814 , p_amb_context_code => l_amb_context_code
43815 , p_side => 'NA'
43816 );
43817
43818
43819 --
43820 --
43821 END IF;
43822
43823 --
43824 -- Update the line information that should be overwritten
43825 --
43826 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
43827 p_header_num => 1);
43828 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
43829
43830 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
43831
43832 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
43833 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
43834 END IF;
43835
43836 --
43837 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
43838 --
43839 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
43840 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
43841 ELSE
43842 ---------------------------------------------------------------------------------------------------
43843 -- 4262811a Switch Sign
43844 ---------------------------------------------------------------------------------------------------
43845 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
43846 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
43847 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
43848 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
43849 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
43850 -- 5132302
43851 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
43852 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
43853
43854 END IF;
43855
43856 -- 4955764
43857 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
43858 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
43859
43860
43861 XLA_AE_LINES_PKG.ValidateCurrentLine;
43862 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
43863
43864 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
43865 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
43866 ,p_balance_type_code => l_balance_type_code);
43867
43868 END IF;
43869
43870 -----------------------------------------------------------------------------------------
43871 -- 4262811 Multiperiod Accounting
43872 -----------------------------------------------------------------------------------------
43873 -- No MPA option is assigned.
43874
43875
43876 END IF;
43877 END IF;
43878 --
43879
43880 --
43881 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
43882 trace
43883 (p_msg => 'END of AcctLineType_81'
43884 ,p_level => C_LEVEL_PROCEDURE
43885 ,p_module => l_log_module);
43886 END IF;
43887 --
43888 EXCEPTION
43889 WHEN xla_exceptions_pkg.application_exception THEN
43890 RAISE;
43891 WHEN OTHERS THEN
43892 xla_exceptions_pkg.raise_message
43893 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_81');
43894 END AcctLineType_81;
43895 --
43896
43897 ---------------------------------------
43898 --
43899 -- PRIVATE FUNCTION
43900 -- AcctLineType_82
43901 --
43902 ---------------------------------------
43903 PROCEDURE AcctLineType_82 (
43904 p_application_id IN NUMBER
43905 ,p_event_id IN NUMBER
43906 ,p_calculate_acctd_flag IN VARCHAR2
43907 ,p_calculate_g_l_flag IN VARCHAR2
43908 ,p_actual_flag IN OUT VARCHAR2
43909 ,p_balance_type_code OUT VARCHAR2
43910 ,p_gain_or_loss_ref OUT VARCHAR2
43911
43912 --Cost Management Default Account
43913 , p_source_4 IN NUMBER
43914 --DISTRIBUTION_IDENTIFIER
43915 , p_source_11 IN NUMBER
43916 --Distribution Type
43917 , p_source_12 IN VARCHAR2
43918 , p_source_12_meaning IN VARCHAR2
43919 --Entered Currency Code
43920 , p_source_15 IN VARCHAR2
43921 --Entered Amount
43922 , p_source_18 IN NUMBER
43923 --Currency Conversion Date
43924 , p_source_19 IN DATE
43925 --Currency Conversion Rate
43926 , p_source_20 IN NUMBER
43927 --Currency Conversion Type
43928 , p_source_21 IN VARCHAR2
43929 --Accounted Amount
43930 , p_source_22 IN NUMBER
43931 --Accounting Line Type
43932 , p_source_24 IN NUMBER
43933 )
43934 IS
43935
43936 l_component_type VARCHAR2(80);
43937 l_component_code VARCHAR2(30);
43938 l_component_type_code VARCHAR2(1);
43939 l_component_appl_id INTEGER;
43940 l_amb_context_code VARCHAR2(30);
43941 l_entity_code VARCHAR2(30);
43942 l_event_class_code VARCHAR2(30);
43943 l_ae_header_id NUMBER;
43944 l_event_type_code VARCHAR2(30);
43945 l_line_definition_code VARCHAR2(30);
43946 l_line_definition_owner_code VARCHAR2(1);
43947 --
43948 -- adr variables
43949 l_segment VARCHAR2(30);
43950 l_ccid NUMBER;
43951 l_adr_transaction_coa_id NUMBER;
43952 l_adr_accounting_coa_id NUMBER;
43953 l_adr_flexfield_segment_code VARCHAR2(30);
43954 l_adr_flex_value_set_id NUMBER;
43955 l_adr_value_type_code VARCHAR2(30);
43956 l_adr_value_combination_id NUMBER;
43957 l_adr_value_segment_code VARCHAR2(30);
43958
43959 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
43960 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
43961 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
43962 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
43963
43964 -- 4262811 Variables ------------------------------------------------------------------------------------------
43965 l_entered_amt_idx NUMBER;
43966 l_accted_amt_idx NUMBER;
43967 l_acc_rev_flag VARCHAR2(1);
43968 l_accrual_line_num NUMBER;
43969 l_tmp_amt NUMBER;
43970 l_acc_rev_natural_side_code VARCHAR2(1);
43971
43972 l_num_entries NUMBER;
43973 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
43974 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
43975 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
43976 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
43977 l_recog_line_1 NUMBER;
43978 l_recog_line_2 NUMBER;
43979
43980 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
43981 l_bflow_applied_to_amt NUMBER; -- 5132302
43982 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
43983
43984 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
43985
43986 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
43987 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
43988
43989 ---------------------------------------------------------------------------------------------------------------
43990
43991
43992 --
43993 -- bulk performance
43994 --
43995 l_balance_type_code VARCHAR2(1);
43996 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
43997 l_log_module VARCHAR2(240);
43998
43999 --
44000 -- Upgrade strategy
44001 --
44002 l_actual_upg_option VARCHAR2(1);
44003 l_enc_upg_option VARCHAR2(1);
44004
44005 --
44006 BEGIN
44007 --
44008 IF g_log_enabled THEN
44009 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_82';
44010 END IF;
44011 --
44012 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
44013
44014 trace
44015 (p_msg => 'BEGIN of AcctLineType_82'
44016 ,p_level => C_LEVEL_PROCEDURE
44017 ,p_module => l_log_module);
44018
44019 END IF;
44020 --
44021 l_component_type := 'AMB_JLT';
44022 l_component_code := 'INTERORG_PAYABLES';
44023 l_component_type_code := 'S';
44024 l_component_appl_id := 707;
44025 l_amb_context_code := 'DEFAULT';
44026 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
44027 l_event_class_code := 'USER_DEFINE';
44028 l_event_type_code := 'UDIR_INTERORG_RCPT';
44029 l_line_definition_owner_code := 'S';
44030 l_line_definition_code := 'USER_DIR_INTERORG_RCPT';
44031 --
44032 l_balance_type_code := 'A';
44033 l_segment := NULL;
44034 l_ccid := NULL;
44035 l_adr_transaction_coa_id := NULL;
44036 l_adr_accounting_coa_id := NULL;
44037 l_adr_flexfield_segment_code := NULL;
44038 l_adr_flex_value_set_id := NULL;
44039 l_adr_value_type_code := NULL;
44040 l_adr_value_combination_id := NULL;
44041 l_adr_value_segment_code := NULL;
44042
44043 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
44044 l_bflow_class_code := ''; -- 4219869 Business Flow
44045 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
44046 l_budgetary_control_flag := 'N';
44047
44048 l_bflow_applied_to_amt_idx := NULL; -- 5132302
44049 l_bflow_applied_to_amt := NULL; -- 5132302
44050 l_entered_amt_idx := NULL; -- 4262811
44051 l_accted_amt_idx := NULL; -- 4262811
44052 l_acc_rev_flag := NULL; -- 4262811
44053 l_accrual_line_num := NULL; -- 4262811
44054 l_tmp_amt := NULL; -- 4262811
44055 --
44056
44057 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
44058 l_balance_type_code <> 'B' THEN
44059 IF NVL(p_source_24,9E125) = 9
44060 THEN
44061
44062 --
44063 XLA_AE_LINES_PKG.SetNewLine;
44064
44065 p_balance_type_code := l_balance_type_code;
44066 -- set the flag so later we will know whether the gain loss line needs to be created
44067
44068 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
44069 p_actual_flag :='A';
44070 END IF;
44071
44072 --
44073 -- bulk performance
44074 --
44075 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
44076 p_header_num => 0); -- 4262811
44077 --
44078 -- set accounting line options
44079 --
44080 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
44081 p_natural_side_code => 'D'
44082 , p_gain_or_loss_flag => 'N'
44083 , p_gl_transfer_mode_code => 'S'
44084 , p_acct_entry_type_code => 'A'
44085 , p_switch_side_flag => 'Y'
44086 , p_merge_duplicate_code => 'N'
44087 );
44088 --
44089 l_acc_rev_natural_side_code := 'C'; -- 4262811
44090 --
44091 --
44092 -- set accounting line type info
44093 --
44094 xla_ae_lines_pkg.SetAcctLineType
44095 (p_component_type => l_component_type
44096 ,p_event_type_code => l_event_type_code
44097 ,p_line_definition_owner_code => l_line_definition_owner_code
44098 ,p_line_definition_code => l_line_definition_code
44099 ,p_accounting_line_code => l_component_code
44100 ,p_accounting_line_type_code => l_component_type_code
44101 ,p_accounting_line_appl_id => l_component_appl_id
44102 ,p_amb_context_code => l_amb_context_code
44103 ,p_entity_code => l_entity_code
44104 ,p_event_class_code => l_event_class_code);
44105 --
44106 -- set accounting class
44107 --
44108 xla_ae_lines_pkg.SetAcctClass(
44109 p_accounting_class_code => 'INTERORG_PAYABLES'
44110 , p_ae_header_id => l_ae_header_id
44111 );
44112
44113 --
44114 -- set rounding class
44115 --
44116 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
44117 'INTERORG_PAYABLES';
44118
44119 --
44120 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
44121 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
44122 --
44123 -- bulk performance
44124 --
44125 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
44126
44127 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
44128 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
44129
44130 -- 4955764
44131 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
44132 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
44133
44134 -- 4458381 Public Sector Enh
44135
44136 --
44137 -- set accounting attributes for the line type
44138 --
44139 l_entered_amt_idx := 3;
44140 l_accted_amt_idx := 8;
44141 l_bflow_applied_to_amt_idx := NULL; -- 5132302
44142 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
44143 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
44144 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
44145 l_rec_acct_attrs.array_char_value(2) := p_source_12;
44146 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
44147 l_rec_acct_attrs.array_num_value(3) := p_source_18;
44148 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
44149 l_rec_acct_attrs.array_char_value(4) := p_source_15;
44150 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
44151 l_rec_acct_attrs.array_date_value(5) := p_source_19;
44152 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
44153 l_rec_acct_attrs.array_num_value(6) := p_source_20;
44154 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
44155 l_rec_acct_attrs.array_char_value(7) := p_source_21;
44156 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
44157 l_rec_acct_attrs.array_num_value(8) := p_source_22;
44158
44159 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
44160 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
44161
44162 ---------------------------------------------------------------------------------------------------------------
44163 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
44164 ---------------------------------------------------------------------------------------------------------------
44165 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
44166
44167 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
44168 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
44169
44170 IF xla_accounting_cache_pkg.GetValueChar
44171 (p_source_code => 'LEDGER_CATEGORY_CODE'
44172 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
44173 AND l_bflow_method_code = 'PRIOR_ENTRY'
44174 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
44175 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
44176 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
44177 )
44178 THEN
44179 xla_ae_lines_pkg.BflowUpgEntry
44180 (p_business_method_code => l_bflow_method_code
44181 ,p_business_class_code => l_bflow_class_code
44182 ,p_balance_type => l_balance_type_code);
44183 ELSE
44184 NULL;
44185 -- No business flow processing for business flow method of NONE.
44186 END IF;
44187
44188 --
44189 -- call analytical criteria
44190 --
44191
44192 --
44193 -- call description
44194 --
44195 -- No description or it is inherited.
44196 --
44197 -- call ADRs
44198 -- Bug 4922099
44199 --
44200 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
44201 (NVL(l_actual_upg_option, 'N') = 'O') OR
44202 (NVL(l_enc_upg_option, 'N') = 'O')
44203 )
44204 THEN
44205 NULL;
44206 --
44207 --
44208
44209 l_ccid := AcctDerRule_4(
44210 p_application_id => p_application_id
44211 , p_ae_header_id => l_ae_header_id
44212 , p_source_4 => p_source_4
44213 , x_transaction_coa_id => l_adr_transaction_coa_id
44214 , x_accounting_coa_id => l_adr_accounting_coa_id
44215 , x_value_type_code => l_adr_value_type_code
44216 , p_side => 'NA'
44217 );
44218
44219 xla_ae_lines_pkg.set_ccid(
44220 p_code_combination_id => l_ccid
44221 , p_value_type_code => l_adr_value_type_code
44222 , p_transaction_coa_id => l_adr_transaction_coa_id
44223 , p_accounting_coa_id => l_adr_accounting_coa_id
44224 , p_adr_code => 'CST_DEFAULT'
44225 , p_adr_type_code => 'S'
44226 , p_component_type => l_component_type
44227 , p_component_code => l_component_code
44228 , p_component_type_code => l_component_type_code
44229 , p_component_appl_id => l_component_appl_id
44230 , p_amb_context_code => l_amb_context_code
44231 , p_side => 'NA'
44232 );
44233
44234
44235 --
44236 --
44237 END IF;
44238 --
44239 -- Bug 4922099
44240 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
44241 (NVL(l_enc_upg_option, 'N') = 'O')
44242 ) AND
44243 (l_bflow_method_code = 'PRIOR_ENTRY')
44244 )
44245 THEN
44246 IF
44247 --
44248 1 = 2
44249 --
44250 THEN
44251 xla_accounting_err_pkg.build_message
44252 (p_appli_s_name => 'XLA'
44253 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
44254 ,p_token_1 => 'LINE_NUMBER'
44255 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
44256 ,p_token_2 => 'LINE_TYPE_NAME'
44257 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
44258 l_component_type
44259 ,l_component_code
44260 ,l_component_type_code
44261 ,l_component_appl_id
44262 ,l_amb_context_code
44263 ,l_entity_code
44264 ,l_event_class_code
44265 )
44266 ,p_token_3 => 'OWNER'
44267 ,p_value_3 => xla_lookups_pkg.get_meaning(
44268 p_lookup_type => 'XLA_OWNER_TYPE'
44269 ,p_lookup_code => l_component_type_code
44270 )
44271 ,p_token_4 => 'PRODUCT_NAME'
44272 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
44273 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
44274 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
44275 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
44276 ,p_ae_header_id => NULL
44277 );
44278
44279 IF (C_LEVEL_ERROR>= g_log_level) THEN
44280 trace
44281 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
44282 ,p_level => C_LEVEL_ERROR
44283 ,p_module => l_log_module);
44284 END IF;
44285 END IF;
44286 END IF;
44287 --
44288 --
44289 ------------------------------------------------------------------------------------------------
44290 -- 4219869 Business Flow
44291 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
44292 -- Prior Entry. Currently, the following code is always generated.
44293 ------------------------------------------------------------------------------------------------
44294 XLA_AE_LINES_PKG.ValidateCurrentLine;
44295
44296 ------------------------------------------------------------------------------------
44297 -- 4219869 Business Flow
44298 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
44299 ------------------------------------------------------------------------------------
44300 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
44301
44302 ----------------------------------------------------------------------------------
44303 -- 4219869 Business Flow
44304 -- Update journal entry status -- Need to generate this within IF <condition>
44305 ----------------------------------------------------------------------------------
44306 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
44307 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
44308 ,p_balance_type_code => l_balance_type_code
44309 );
44310
44311 -------------------------------------------------------------------------------------------
44312 -- 4262811 - Generate the Accrual Reversal lines
44313 -------------------------------------------------------------------------------------------
44314 BEGIN
44315 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
44316 (g_array_event(p_event_id).array_value_num('header_index'));
44317 IF l_acc_rev_flag IS NULL THEN
44318 l_acc_rev_flag := 'N';
44319 END IF;
44320 EXCEPTION
44321 WHEN OTHERS THEN
44322 l_acc_rev_flag := 'N';
44323 END;
44324 --
44325 IF (l_acc_rev_flag = 'Y') THEN
44326
44327 -- 4645092 ------------------------------------------------------------------------------
44328 -- To allow MPA report to determine if it should generate report process
44329 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
44330 ------------------------------------------------------------------------------------------
44331
44332 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
44333 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
44334 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
44335 -- call ADRs
44336 -- Bug 4922099
44337 --
44338 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
44339 (NVL(l_actual_upg_option, 'N') = 'O') OR
44340 (NVL(l_enc_upg_option, 'N') = 'O')
44341 )
44342 THEN
44343 NULL;
44344 --
44345 --
44346
44347 l_ccid := AcctDerRule_4(
44348 p_application_id => p_application_id
44349 , p_ae_header_id => l_ae_header_id
44350 , p_source_4 => p_source_4
44351 , x_transaction_coa_id => l_adr_transaction_coa_id
44352 , x_accounting_coa_id => l_adr_accounting_coa_id
44353 , x_value_type_code => l_adr_value_type_code
44354 , p_side => 'NA'
44355 );
44356
44357 xla_ae_lines_pkg.set_ccid(
44358 p_code_combination_id => l_ccid
44359 , p_value_type_code => l_adr_value_type_code
44360 , p_transaction_coa_id => l_adr_transaction_coa_id
44361 , p_accounting_coa_id => l_adr_accounting_coa_id
44362 , p_adr_code => 'CST_DEFAULT'
44363 , p_adr_type_code => 'S'
44364 , p_component_type => l_component_type
44365 , p_component_code => l_component_code
44366 , p_component_type_code => l_component_type_code
44367 , p_component_appl_id => l_component_appl_id
44368 , p_amb_context_code => l_amb_context_code
44369 , p_side => 'NA'
44370 );
44371
44372
44373 --
44374 --
44375 END IF;
44376
44377 --
44378 -- Update the line information that should be overwritten
44379 --
44380 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
44381 p_header_num => 1);
44382 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
44383
44384 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
44385
44386 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
44387 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
44388 END IF;
44389
44390 --
44391 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
44392 --
44393 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
44394 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
44395 ELSE
44396 ---------------------------------------------------------------------------------------------------
44397 -- 4262811a Switch Sign
44398 ---------------------------------------------------------------------------------------------------
44399 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
44400 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
44401 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
44402 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
44403 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
44404 -- 5132302
44405 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
44406 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
44407
44408 END IF;
44409
44410 -- 4955764
44411 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
44412 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
44413
44414
44415 XLA_AE_LINES_PKG.ValidateCurrentLine;
44416 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
44417
44418 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
44419 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
44420 ,p_balance_type_code => l_balance_type_code);
44421
44422 END IF;
44423
44424 -----------------------------------------------------------------------------------------
44425 -- 4262811 Multiperiod Accounting
44426 -----------------------------------------------------------------------------------------
44427 -- No MPA option is assigned.
44428
44429
44430 END IF;
44431 END IF;
44432 --
44433
44434 --
44435 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
44436 trace
44437 (p_msg => 'END of AcctLineType_82'
44438 ,p_level => C_LEVEL_PROCEDURE
44439 ,p_module => l_log_module);
44440 END IF;
44441 --
44442 EXCEPTION
44443 WHEN xla_exceptions_pkg.application_exception THEN
44444 RAISE;
44445 WHEN OTHERS THEN
44446 xla_exceptions_pkg.raise_message
44447 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_82');
44448 END AcctLineType_82;
44449 --
44450
44451 ---------------------------------------
44452 --
44453 -- PRIVATE FUNCTION
44454 -- AcctLineType_83
44455 --
44456 ---------------------------------------
44457 PROCEDURE AcctLineType_83 (
44458 p_application_id IN NUMBER
44459 ,p_event_id IN NUMBER
44460 ,p_calculate_acctd_flag IN VARCHAR2
44461 ,p_calculate_g_l_flag IN VARCHAR2
44462 ,p_actual_flag IN OUT VARCHAR2
44463 ,p_balance_type_code OUT VARCHAR2
44464 ,p_gain_or_loss_ref OUT VARCHAR2
44465
44466 --Cost Management Default Account
44467 , p_source_4 IN NUMBER
44468 --DISTRIBUTION_IDENTIFIER
44469 , p_source_11 IN NUMBER
44470 --Distribution Type
44471 , p_source_12 IN VARCHAR2
44472 , p_source_12_meaning IN VARCHAR2
44473 --Entered Currency Code
44474 , p_source_15 IN VARCHAR2
44475 --Entered Amount
44476 , p_source_18 IN NUMBER
44477 --Currency Conversion Date
44478 , p_source_19 IN DATE
44479 --Currency Conversion Rate
44480 , p_source_20 IN NUMBER
44481 --Currency Conversion Type
44482 , p_source_21 IN VARCHAR2
44483 --Accounted Amount
44484 , p_source_22 IN NUMBER
44485 --Accounting Line Type
44486 , p_source_24 IN NUMBER
44487 )
44488 IS
44489
44490 l_component_type VARCHAR2(80);
44491 l_component_code VARCHAR2(30);
44492 l_component_type_code VARCHAR2(1);
44493 l_component_appl_id INTEGER;
44494 l_amb_context_code VARCHAR2(30);
44495 l_entity_code VARCHAR2(30);
44496 l_event_class_code VARCHAR2(30);
44497 l_ae_header_id NUMBER;
44498 l_event_type_code VARCHAR2(30);
44499 l_line_definition_code VARCHAR2(30);
44500 l_line_definition_owner_code VARCHAR2(1);
44501 --
44502 -- adr variables
44503 l_segment VARCHAR2(30);
44504 l_ccid NUMBER;
44505 l_adr_transaction_coa_id NUMBER;
44506 l_adr_accounting_coa_id NUMBER;
44507 l_adr_flexfield_segment_code VARCHAR2(30);
44508 l_adr_flex_value_set_id NUMBER;
44509 l_adr_value_type_code VARCHAR2(30);
44510 l_adr_value_combination_id NUMBER;
44511 l_adr_value_segment_code VARCHAR2(30);
44512
44513 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
44514 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
44515 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
44516 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
44517
44518 -- 4262811 Variables ------------------------------------------------------------------------------------------
44519 l_entered_amt_idx NUMBER;
44520 l_accted_amt_idx NUMBER;
44521 l_acc_rev_flag VARCHAR2(1);
44522 l_accrual_line_num NUMBER;
44523 l_tmp_amt NUMBER;
44524 l_acc_rev_natural_side_code VARCHAR2(1);
44525
44526 l_num_entries NUMBER;
44527 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
44528 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
44529 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
44530 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
44531 l_recog_line_1 NUMBER;
44532 l_recog_line_2 NUMBER;
44533
44534 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
44535 l_bflow_applied_to_amt NUMBER; -- 5132302
44536 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
44537
44538 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
44539
44540 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
44541 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
44542
44543 ---------------------------------------------------------------------------------------------------------------
44544
44545
44546 --
44547 -- bulk performance
44548 --
44549 l_balance_type_code VARCHAR2(1);
44550 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
44551 l_log_module VARCHAR2(240);
44552
44553 --
44554 -- Upgrade strategy
44555 --
44556 l_actual_upg_option VARCHAR2(1);
44557 l_enc_upg_option VARCHAR2(1);
44558
44559 --
44560 BEGIN
44561 --
44562 IF g_log_enabled THEN
44563 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_83';
44564 END IF;
44565 --
44566 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
44567
44568 trace
44569 (p_msg => 'BEGIN of AcctLineType_83'
44570 ,p_level => C_LEVEL_PROCEDURE
44571 ,p_module => l_log_module);
44572
44573 END IF;
44574 --
44575 l_component_type := 'AMB_JLT';
44576 l_component_code := 'INTERORG_PROFIT_OPM';
44577 l_component_type_code := 'S';
44578 l_component_appl_id := 707;
44579 l_amb_context_code := 'DEFAULT';
44580 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
44581 l_event_class_code := 'USER_DEFINE';
44582 l_event_type_code := 'UDIR_INTERORG_SHIP_TP';
44583 l_line_definition_owner_code := 'S';
44584 l_line_definition_code := 'USER_DIR_INTERORG_SHIP_TP';
44585 --
44586 l_balance_type_code := 'A';
44587 l_segment := NULL;
44588 l_ccid := NULL;
44589 l_adr_transaction_coa_id := NULL;
44590 l_adr_accounting_coa_id := NULL;
44591 l_adr_flexfield_segment_code := NULL;
44592 l_adr_flex_value_set_id := NULL;
44593 l_adr_value_type_code := NULL;
44594 l_adr_value_combination_id := NULL;
44595 l_adr_value_segment_code := NULL;
44596
44597 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
44598 l_bflow_class_code := ''; -- 4219869 Business Flow
44599 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
44600 l_budgetary_control_flag := 'N';
44601
44602 l_bflow_applied_to_amt_idx := NULL; -- 5132302
44603 l_bflow_applied_to_amt := NULL; -- 5132302
44604 l_entered_amt_idx := NULL; -- 4262811
44605 l_accted_amt_idx := NULL; -- 4262811
44606 l_acc_rev_flag := NULL; -- 4262811
44607 l_accrual_line_num := NULL; -- 4262811
44608 l_tmp_amt := NULL; -- 4262811
44609 --
44610
44611 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
44612 l_balance_type_code <> 'B' THEN
44613 IF NVL(p_source_24,9E125) = 34
44614 THEN
44615
44616 --
44617 XLA_AE_LINES_PKG.SetNewLine;
44618
44619 p_balance_type_code := l_balance_type_code;
44620 -- set the flag so later we will know whether the gain loss line needs to be created
44621
44622 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
44623 p_actual_flag :='A';
44624 END IF;
44625
44626 --
44627 -- bulk performance
44628 --
44629 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
44630 p_header_num => 0); -- 4262811
44631 --
44632 -- set accounting line options
44633 --
44634 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
44635 p_natural_side_code => 'D'
44636 , p_gain_or_loss_flag => 'N'
44637 , p_gl_transfer_mode_code => 'S'
44638 , p_acct_entry_type_code => 'A'
44639 , p_switch_side_flag => 'Y'
44640 , p_merge_duplicate_code => 'N'
44641 );
44642 --
44643 l_acc_rev_natural_side_code := 'C'; -- 4262811
44644 --
44645 --
44646 -- set accounting line type info
44647 --
44648 xla_ae_lines_pkg.SetAcctLineType
44649 (p_component_type => l_component_type
44650 ,p_event_type_code => l_event_type_code
44651 ,p_line_definition_owner_code => l_line_definition_owner_code
44652 ,p_line_definition_code => l_line_definition_code
44653 ,p_accounting_line_code => l_component_code
44654 ,p_accounting_line_type_code => l_component_type_code
44655 ,p_accounting_line_appl_id => l_component_appl_id
44656 ,p_amb_context_code => l_amb_context_code
44657 ,p_entity_code => l_entity_code
44658 ,p_event_class_code => l_event_class_code);
44659 --
44660 -- set accounting class
44661 --
44662 xla_ae_lines_pkg.SetAcctClass(
44663 p_accounting_class_code => 'INTERORG_PROFIT'
44664 , p_ae_header_id => l_ae_header_id
44665 );
44666
44667 --
44668 -- set rounding class
44669 --
44670 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
44671 'INTERORG_PROFIT';
44672
44673 --
44674 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
44675 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
44676 --
44677 -- bulk performance
44678 --
44679 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
44680
44681 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
44682 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
44683
44684 -- 4955764
44685 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
44686 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
44687
44688 -- 4458381 Public Sector Enh
44689
44690 --
44691 -- set accounting attributes for the line type
44692 --
44693 l_entered_amt_idx := 3;
44694 l_accted_amt_idx := 8;
44695 l_bflow_applied_to_amt_idx := NULL; -- 5132302
44696 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
44697 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
44698 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
44699 l_rec_acct_attrs.array_char_value(2) := p_source_12;
44700 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
44701 l_rec_acct_attrs.array_num_value(3) := p_source_18;
44702 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
44703 l_rec_acct_attrs.array_char_value(4) := p_source_15;
44704 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
44705 l_rec_acct_attrs.array_date_value(5) := p_source_19;
44706 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
44707 l_rec_acct_attrs.array_num_value(6) := p_source_20;
44708 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
44709 l_rec_acct_attrs.array_char_value(7) := p_source_21;
44710 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
44711 l_rec_acct_attrs.array_num_value(8) := p_source_22;
44712
44713 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
44714 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
44715
44716 ---------------------------------------------------------------------------------------------------------------
44717 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
44718 ---------------------------------------------------------------------------------------------------------------
44719 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
44720
44721 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
44722 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
44723
44724 IF xla_accounting_cache_pkg.GetValueChar
44725 (p_source_code => 'LEDGER_CATEGORY_CODE'
44726 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
44727 AND l_bflow_method_code = 'PRIOR_ENTRY'
44728 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
44729 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
44730 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
44731 )
44732 THEN
44733 xla_ae_lines_pkg.BflowUpgEntry
44734 (p_business_method_code => l_bflow_method_code
44735 ,p_business_class_code => l_bflow_class_code
44736 ,p_balance_type => l_balance_type_code);
44737 ELSE
44738 NULL;
44739 -- No business flow processing for business flow method of NONE.
44740 END IF;
44741
44742 --
44743 -- call analytical criteria
44744 --
44745
44746 --
44747 -- call description
44748 --
44749 -- No description or it is inherited.
44750 --
44751 -- call ADRs
44752 -- Bug 4922099
44753 --
44754 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
44755 (NVL(l_actual_upg_option, 'N') = 'O') OR
44756 (NVL(l_enc_upg_option, 'N') = 'O')
44757 )
44758 THEN
44759 NULL;
44760 --
44761 --
44762
44763 l_ccid := AcctDerRule_4(
44764 p_application_id => p_application_id
44765 , p_ae_header_id => l_ae_header_id
44766 , p_source_4 => p_source_4
44767 , x_transaction_coa_id => l_adr_transaction_coa_id
44768 , x_accounting_coa_id => l_adr_accounting_coa_id
44769 , x_value_type_code => l_adr_value_type_code
44770 , p_side => 'NA'
44771 );
44772
44773 xla_ae_lines_pkg.set_ccid(
44774 p_code_combination_id => l_ccid
44775 , p_value_type_code => l_adr_value_type_code
44776 , p_transaction_coa_id => l_adr_transaction_coa_id
44777 , p_accounting_coa_id => l_adr_accounting_coa_id
44778 , p_adr_code => 'CST_DEFAULT'
44779 , p_adr_type_code => 'S'
44780 , p_component_type => l_component_type
44781 , p_component_code => l_component_code
44782 , p_component_type_code => l_component_type_code
44783 , p_component_appl_id => l_component_appl_id
44784 , p_amb_context_code => l_amb_context_code
44785 , p_side => 'NA'
44786 );
44787
44788
44789 --
44790 --
44791 END IF;
44792 --
44793 -- Bug 4922099
44794 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
44795 (NVL(l_enc_upg_option, 'N') = 'O')
44796 ) AND
44797 (l_bflow_method_code = 'PRIOR_ENTRY')
44798 )
44799 THEN
44800 IF
44801 --
44802 1 = 2
44803 --
44804 THEN
44805 xla_accounting_err_pkg.build_message
44806 (p_appli_s_name => 'XLA'
44807 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
44808 ,p_token_1 => 'LINE_NUMBER'
44809 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
44810 ,p_token_2 => 'LINE_TYPE_NAME'
44811 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
44812 l_component_type
44813 ,l_component_code
44814 ,l_component_type_code
44815 ,l_component_appl_id
44816 ,l_amb_context_code
44817 ,l_entity_code
44818 ,l_event_class_code
44819 )
44820 ,p_token_3 => 'OWNER'
44821 ,p_value_3 => xla_lookups_pkg.get_meaning(
44822 p_lookup_type => 'XLA_OWNER_TYPE'
44823 ,p_lookup_code => l_component_type_code
44824 )
44825 ,p_token_4 => 'PRODUCT_NAME'
44826 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
44827 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
44828 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
44829 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
44830 ,p_ae_header_id => NULL
44831 );
44832
44833 IF (C_LEVEL_ERROR>= g_log_level) THEN
44834 trace
44835 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
44836 ,p_level => C_LEVEL_ERROR
44837 ,p_module => l_log_module);
44838 END IF;
44839 END IF;
44840 END IF;
44841 --
44842 --
44843 ------------------------------------------------------------------------------------------------
44844 -- 4219869 Business Flow
44845 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
44846 -- Prior Entry. Currently, the following code is always generated.
44847 ------------------------------------------------------------------------------------------------
44848 XLA_AE_LINES_PKG.ValidateCurrentLine;
44849
44850 ------------------------------------------------------------------------------------
44851 -- 4219869 Business Flow
44852 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
44853 ------------------------------------------------------------------------------------
44854 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
44855
44856 ----------------------------------------------------------------------------------
44857 -- 4219869 Business Flow
44858 -- Update journal entry status -- Need to generate this within IF <condition>
44859 ----------------------------------------------------------------------------------
44860 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
44861 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
44862 ,p_balance_type_code => l_balance_type_code
44863 );
44864
44865 -------------------------------------------------------------------------------------------
44866 -- 4262811 - Generate the Accrual Reversal lines
44867 -------------------------------------------------------------------------------------------
44868 BEGIN
44869 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
44870 (g_array_event(p_event_id).array_value_num('header_index'));
44871 IF l_acc_rev_flag IS NULL THEN
44872 l_acc_rev_flag := 'N';
44873 END IF;
44874 EXCEPTION
44875 WHEN OTHERS THEN
44876 l_acc_rev_flag := 'N';
44877 END;
44878 --
44879 IF (l_acc_rev_flag = 'Y') THEN
44880
44881 -- 4645092 ------------------------------------------------------------------------------
44882 -- To allow MPA report to determine if it should generate report process
44883 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
44884 ------------------------------------------------------------------------------------------
44885
44886 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
44887 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
44888 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
44889 -- call ADRs
44890 -- Bug 4922099
44891 --
44892 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
44893 (NVL(l_actual_upg_option, 'N') = 'O') OR
44894 (NVL(l_enc_upg_option, 'N') = 'O')
44895 )
44896 THEN
44897 NULL;
44898 --
44899 --
44900
44901 l_ccid := AcctDerRule_4(
44902 p_application_id => p_application_id
44903 , p_ae_header_id => l_ae_header_id
44904 , p_source_4 => p_source_4
44905 , x_transaction_coa_id => l_adr_transaction_coa_id
44906 , x_accounting_coa_id => l_adr_accounting_coa_id
44907 , x_value_type_code => l_adr_value_type_code
44908 , p_side => 'NA'
44909 );
44910
44911 xla_ae_lines_pkg.set_ccid(
44912 p_code_combination_id => l_ccid
44913 , p_value_type_code => l_adr_value_type_code
44914 , p_transaction_coa_id => l_adr_transaction_coa_id
44915 , p_accounting_coa_id => l_adr_accounting_coa_id
44916 , p_adr_code => 'CST_DEFAULT'
44917 , p_adr_type_code => 'S'
44918 , p_component_type => l_component_type
44919 , p_component_code => l_component_code
44920 , p_component_type_code => l_component_type_code
44921 , p_component_appl_id => l_component_appl_id
44922 , p_amb_context_code => l_amb_context_code
44923 , p_side => 'NA'
44924 );
44925
44926
44927 --
44928 --
44929 END IF;
44930
44931 --
44932 -- Update the line information that should be overwritten
44933 --
44934 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
44935 p_header_num => 1);
44936 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
44937
44938 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
44939
44940 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
44941 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
44942 END IF;
44943
44944 --
44945 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
44946 --
44947 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
44948 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
44949 ELSE
44950 ---------------------------------------------------------------------------------------------------
44951 -- 4262811a Switch Sign
44952 ---------------------------------------------------------------------------------------------------
44953 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
44954 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
44955 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
44956 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
44957 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
44958 -- 5132302
44959 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
44960 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
44961
44962 END IF;
44963
44964 -- 4955764
44965 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
44966 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
44967
44968
44969 XLA_AE_LINES_PKG.ValidateCurrentLine;
44970 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
44971
44972 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
44973 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
44974 ,p_balance_type_code => l_balance_type_code);
44975
44976 END IF;
44977
44978 -----------------------------------------------------------------------------------------
44979 -- 4262811 Multiperiod Accounting
44980 -----------------------------------------------------------------------------------------
44981 -- No MPA option is assigned.
44982
44983
44984 END IF;
44985 END IF;
44986 --
44987
44988 --
44989 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
44990 trace
44991 (p_msg => 'END of AcctLineType_83'
44992 ,p_level => C_LEVEL_PROCEDURE
44993 ,p_module => l_log_module);
44994 END IF;
44995 --
44996 EXCEPTION
44997 WHEN xla_exceptions_pkg.application_exception THEN
44998 RAISE;
44999 WHEN OTHERS THEN
45000 xla_exceptions_pkg.raise_message
45001 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_83');
45002 END AcctLineType_83;
45003 --
45004
45005 ---------------------------------------
45006 --
45007 -- PRIVATE FUNCTION
45008 -- AcctLineType_84
45009 --
45010 ---------------------------------------
45011 PROCEDURE AcctLineType_84 (
45012 p_application_id IN NUMBER
45013 ,p_event_id IN NUMBER
45014 ,p_calculate_acctd_flag IN VARCHAR2
45015 ,p_calculate_g_l_flag IN VARCHAR2
45016 ,p_actual_flag IN OUT VARCHAR2
45017 ,p_balance_type_code OUT VARCHAR2
45018 ,p_gain_or_loss_ref OUT VARCHAR2
45019
45020 --Cost Management Default Account
45021 , p_source_4 IN NUMBER
45022 --DISTRIBUTION_IDENTIFIER
45023 , p_source_11 IN NUMBER
45024 --Distribution Type
45025 , p_source_12 IN VARCHAR2
45026 , p_source_12_meaning IN VARCHAR2
45027 --Entered Currency Code
45028 , p_source_15 IN VARCHAR2
45029 --Entered Amount
45030 , p_source_18 IN NUMBER
45031 --Currency Conversion Date
45032 , p_source_19 IN DATE
45033 --Currency Conversion Rate
45034 , p_source_20 IN NUMBER
45035 --Currency Conversion Type
45036 , p_source_21 IN VARCHAR2
45037 --Accounted Amount
45038 , p_source_22 IN NUMBER
45039 --Accounting Line Type
45040 , p_source_24 IN NUMBER
45041 )
45042 IS
45043
45044 l_component_type VARCHAR2(80);
45045 l_component_code VARCHAR2(30);
45046 l_component_type_code VARCHAR2(1);
45047 l_component_appl_id INTEGER;
45048 l_amb_context_code VARCHAR2(30);
45049 l_entity_code VARCHAR2(30);
45050 l_event_class_code VARCHAR2(30);
45051 l_ae_header_id NUMBER;
45052 l_event_type_code VARCHAR2(30);
45053 l_line_definition_code VARCHAR2(30);
45054 l_line_definition_owner_code VARCHAR2(1);
45055 --
45056 -- adr variables
45057 l_segment VARCHAR2(30);
45058 l_ccid NUMBER;
45059 l_adr_transaction_coa_id NUMBER;
45060 l_adr_accounting_coa_id NUMBER;
45061 l_adr_flexfield_segment_code VARCHAR2(30);
45062 l_adr_flex_value_set_id NUMBER;
45063 l_adr_value_type_code VARCHAR2(30);
45064 l_adr_value_combination_id NUMBER;
45065 l_adr_value_segment_code VARCHAR2(30);
45066
45067 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
45068 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
45069 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
45070 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
45071
45072 -- 4262811 Variables ------------------------------------------------------------------------------------------
45073 l_entered_amt_idx NUMBER;
45074 l_accted_amt_idx NUMBER;
45075 l_acc_rev_flag VARCHAR2(1);
45076 l_accrual_line_num NUMBER;
45077 l_tmp_amt NUMBER;
45078 l_acc_rev_natural_side_code VARCHAR2(1);
45079
45080 l_num_entries NUMBER;
45081 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
45082 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
45083 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
45084 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
45085 l_recog_line_1 NUMBER;
45086 l_recog_line_2 NUMBER;
45087
45088 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
45089 l_bflow_applied_to_amt NUMBER; -- 5132302
45090 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
45091
45092 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
45093
45094 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
45095 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
45096
45097 ---------------------------------------------------------------------------------------------------------------
45098
45099
45100 --
45101 -- bulk performance
45102 --
45103 l_balance_type_code VARCHAR2(1);
45104 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
45105 l_log_module VARCHAR2(240);
45106
45107 --
45108 -- Upgrade strategy
45109 --
45110 l_actual_upg_option VARCHAR2(1);
45111 l_enc_upg_option VARCHAR2(1);
45112
45113 --
45114 BEGIN
45115 --
45116 IF g_log_enabled THEN
45117 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_84';
45118 END IF;
45119 --
45120 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
45121
45122 trace
45123 (p_msg => 'BEGIN of AcctLineType_84'
45124 ,p_level => C_LEVEL_PROCEDURE
45125 ,p_module => l_log_module);
45126
45127 END IF;
45128 --
45129 l_component_type := 'AMB_JLT';
45130 l_component_code := 'INTERORG_PROFIT_OPM';
45131 l_component_type_code := 'S';
45132 l_component_appl_id := 707;
45133 l_amb_context_code := 'DEFAULT';
45134 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
45135 l_event_class_code := 'DIR_INTERORG_SHIP';
45136 l_event_type_code := 'DIR_INTERORG_SHIP_ALL';
45137 l_line_definition_owner_code := 'S';
45138 l_line_definition_code := 'DIRECT_INTERORG_SHIP';
45139 --
45140 l_balance_type_code := 'A';
45141 l_segment := NULL;
45142 l_ccid := NULL;
45143 l_adr_transaction_coa_id := NULL;
45144 l_adr_accounting_coa_id := NULL;
45145 l_adr_flexfield_segment_code := NULL;
45146 l_adr_flex_value_set_id := NULL;
45147 l_adr_value_type_code := NULL;
45148 l_adr_value_combination_id := NULL;
45149 l_adr_value_segment_code := NULL;
45150
45151 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
45152 l_bflow_class_code := ''; -- 4219869 Business Flow
45153 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
45154 l_budgetary_control_flag := 'N';
45155
45156 l_bflow_applied_to_amt_idx := NULL; -- 5132302
45157 l_bflow_applied_to_amt := NULL; -- 5132302
45158 l_entered_amt_idx := NULL; -- 4262811
45159 l_accted_amt_idx := NULL; -- 4262811
45160 l_acc_rev_flag := NULL; -- 4262811
45161 l_accrual_line_num := NULL; -- 4262811
45162 l_tmp_amt := NULL; -- 4262811
45163 --
45164
45165 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
45166 l_balance_type_code <> 'B' THEN
45167 IF NVL(p_source_24,9E125) = 34
45168 THEN
45169
45170 --
45171 XLA_AE_LINES_PKG.SetNewLine;
45172
45173 p_balance_type_code := l_balance_type_code;
45174 -- set the flag so later we will know whether the gain loss line needs to be created
45175
45176 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
45177 p_actual_flag :='A';
45178 END IF;
45179
45180 --
45181 -- bulk performance
45182 --
45183 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
45184 p_header_num => 0); -- 4262811
45185 --
45186 -- set accounting line options
45187 --
45188 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
45189 p_natural_side_code => 'D'
45190 , p_gain_or_loss_flag => 'N'
45191 , p_gl_transfer_mode_code => 'S'
45192 , p_acct_entry_type_code => 'A'
45193 , p_switch_side_flag => 'Y'
45194 , p_merge_duplicate_code => 'N'
45195 );
45196 --
45197 l_acc_rev_natural_side_code := 'C'; -- 4262811
45198 --
45199 --
45200 -- set accounting line type info
45201 --
45202 xla_ae_lines_pkg.SetAcctLineType
45203 (p_component_type => l_component_type
45204 ,p_event_type_code => l_event_type_code
45205 ,p_line_definition_owner_code => l_line_definition_owner_code
45206 ,p_line_definition_code => l_line_definition_code
45207 ,p_accounting_line_code => l_component_code
45208 ,p_accounting_line_type_code => l_component_type_code
45209 ,p_accounting_line_appl_id => l_component_appl_id
45210 ,p_amb_context_code => l_amb_context_code
45211 ,p_entity_code => l_entity_code
45212 ,p_event_class_code => l_event_class_code);
45213 --
45214 -- set accounting class
45215 --
45216 xla_ae_lines_pkg.SetAcctClass(
45217 p_accounting_class_code => 'INTERORG_PROFIT'
45218 , p_ae_header_id => l_ae_header_id
45219 );
45220
45221 --
45222 -- set rounding class
45223 --
45224 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
45225 'INTERORG_PROFIT';
45226
45227 --
45228 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
45229 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
45230 --
45231 -- bulk performance
45232 --
45233 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
45234
45235 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
45236 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
45237
45238 -- 4955764
45239 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
45240 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
45241
45242 -- 4458381 Public Sector Enh
45243
45244 --
45245 -- set accounting attributes for the line type
45246 --
45247 l_entered_amt_idx := 3;
45248 l_accted_amt_idx := 8;
45249 l_bflow_applied_to_amt_idx := NULL; -- 5132302
45250 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
45251 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
45252 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
45253 l_rec_acct_attrs.array_char_value(2) := p_source_12;
45254 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
45255 l_rec_acct_attrs.array_num_value(3) := p_source_18;
45256 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
45257 l_rec_acct_attrs.array_char_value(4) := p_source_15;
45258 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
45259 l_rec_acct_attrs.array_date_value(5) := p_source_19;
45260 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
45261 l_rec_acct_attrs.array_num_value(6) := p_source_20;
45262 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
45263 l_rec_acct_attrs.array_char_value(7) := p_source_21;
45264 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
45265 l_rec_acct_attrs.array_num_value(8) := p_source_22;
45266
45267 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
45268 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
45269
45270 ---------------------------------------------------------------------------------------------------------------
45271 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
45272 ---------------------------------------------------------------------------------------------------------------
45273 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
45274
45275 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
45276 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
45277
45278 IF xla_accounting_cache_pkg.GetValueChar
45279 (p_source_code => 'LEDGER_CATEGORY_CODE'
45280 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
45281 AND l_bflow_method_code = 'PRIOR_ENTRY'
45282 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
45283 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
45284 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
45285 )
45286 THEN
45287 xla_ae_lines_pkg.BflowUpgEntry
45288 (p_business_method_code => l_bflow_method_code
45289 ,p_business_class_code => l_bflow_class_code
45290 ,p_balance_type => l_balance_type_code);
45291 ELSE
45292 NULL;
45293 -- No business flow processing for business flow method of NONE.
45294 END IF;
45295
45296 --
45297 -- call analytical criteria
45298 --
45299
45300 --
45301 -- call description
45302 --
45303 -- No description or it is inherited.
45304 --
45305 -- call ADRs
45306 -- Bug 4922099
45307 --
45308 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
45309 (NVL(l_actual_upg_option, 'N') = 'O') OR
45310 (NVL(l_enc_upg_option, 'N') = 'O')
45311 )
45312 THEN
45313 NULL;
45314 --
45315 --
45316
45317 l_ccid := AcctDerRule_4(
45318 p_application_id => p_application_id
45319 , p_ae_header_id => l_ae_header_id
45320 , p_source_4 => p_source_4
45321 , x_transaction_coa_id => l_adr_transaction_coa_id
45322 , x_accounting_coa_id => l_adr_accounting_coa_id
45323 , x_value_type_code => l_adr_value_type_code
45324 , p_side => 'NA'
45325 );
45326
45327 xla_ae_lines_pkg.set_ccid(
45328 p_code_combination_id => l_ccid
45329 , p_value_type_code => l_adr_value_type_code
45330 , p_transaction_coa_id => l_adr_transaction_coa_id
45331 , p_accounting_coa_id => l_adr_accounting_coa_id
45332 , p_adr_code => 'CST_DEFAULT'
45333 , p_adr_type_code => 'S'
45334 , p_component_type => l_component_type
45335 , p_component_code => l_component_code
45336 , p_component_type_code => l_component_type_code
45337 , p_component_appl_id => l_component_appl_id
45338 , p_amb_context_code => l_amb_context_code
45339 , p_side => 'NA'
45340 );
45341
45342
45343 --
45344 --
45345 END IF;
45346 --
45347 -- Bug 4922099
45348 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
45349 (NVL(l_enc_upg_option, 'N') = 'O')
45350 ) AND
45351 (l_bflow_method_code = 'PRIOR_ENTRY')
45352 )
45353 THEN
45354 IF
45355 --
45356 1 = 2
45357 --
45358 THEN
45359 xla_accounting_err_pkg.build_message
45360 (p_appli_s_name => 'XLA'
45361 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
45362 ,p_token_1 => 'LINE_NUMBER'
45363 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
45364 ,p_token_2 => 'LINE_TYPE_NAME'
45365 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
45366 l_component_type
45367 ,l_component_code
45368 ,l_component_type_code
45369 ,l_component_appl_id
45370 ,l_amb_context_code
45371 ,l_entity_code
45372 ,l_event_class_code
45373 )
45374 ,p_token_3 => 'OWNER'
45375 ,p_value_3 => xla_lookups_pkg.get_meaning(
45376 p_lookup_type => 'XLA_OWNER_TYPE'
45377 ,p_lookup_code => l_component_type_code
45378 )
45379 ,p_token_4 => 'PRODUCT_NAME'
45380 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
45381 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
45382 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
45383 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
45384 ,p_ae_header_id => NULL
45385 );
45386
45387 IF (C_LEVEL_ERROR>= g_log_level) THEN
45388 trace
45389 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
45390 ,p_level => C_LEVEL_ERROR
45391 ,p_module => l_log_module);
45392 END IF;
45393 END IF;
45394 END IF;
45395 --
45396 --
45397 ------------------------------------------------------------------------------------------------
45398 -- 4219869 Business Flow
45399 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
45400 -- Prior Entry. Currently, the following code is always generated.
45401 ------------------------------------------------------------------------------------------------
45402 XLA_AE_LINES_PKG.ValidateCurrentLine;
45403
45404 ------------------------------------------------------------------------------------
45405 -- 4219869 Business Flow
45406 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
45407 ------------------------------------------------------------------------------------
45408 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
45409
45410 ----------------------------------------------------------------------------------
45411 -- 4219869 Business Flow
45412 -- Update journal entry status -- Need to generate this within IF <condition>
45413 ----------------------------------------------------------------------------------
45414 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
45415 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
45416 ,p_balance_type_code => l_balance_type_code
45417 );
45418
45419 -------------------------------------------------------------------------------------------
45420 -- 4262811 - Generate the Accrual Reversal lines
45421 -------------------------------------------------------------------------------------------
45422 BEGIN
45423 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
45424 (g_array_event(p_event_id).array_value_num('header_index'));
45425 IF l_acc_rev_flag IS NULL THEN
45426 l_acc_rev_flag := 'N';
45427 END IF;
45428 EXCEPTION
45429 WHEN OTHERS THEN
45430 l_acc_rev_flag := 'N';
45431 END;
45432 --
45433 IF (l_acc_rev_flag = 'Y') THEN
45434
45435 -- 4645092 ------------------------------------------------------------------------------
45436 -- To allow MPA report to determine if it should generate report process
45437 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
45438 ------------------------------------------------------------------------------------------
45439
45440 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
45441 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
45442 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
45443 -- call ADRs
45444 -- Bug 4922099
45445 --
45446 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
45447 (NVL(l_actual_upg_option, 'N') = 'O') OR
45448 (NVL(l_enc_upg_option, 'N') = 'O')
45449 )
45450 THEN
45451 NULL;
45452 --
45453 --
45454
45455 l_ccid := AcctDerRule_4(
45456 p_application_id => p_application_id
45457 , p_ae_header_id => l_ae_header_id
45458 , p_source_4 => p_source_4
45459 , x_transaction_coa_id => l_adr_transaction_coa_id
45460 , x_accounting_coa_id => l_adr_accounting_coa_id
45461 , x_value_type_code => l_adr_value_type_code
45462 , p_side => 'NA'
45463 );
45464
45465 xla_ae_lines_pkg.set_ccid(
45466 p_code_combination_id => l_ccid
45467 , p_value_type_code => l_adr_value_type_code
45468 , p_transaction_coa_id => l_adr_transaction_coa_id
45469 , p_accounting_coa_id => l_adr_accounting_coa_id
45470 , p_adr_code => 'CST_DEFAULT'
45471 , p_adr_type_code => 'S'
45472 , p_component_type => l_component_type
45473 , p_component_code => l_component_code
45474 , p_component_type_code => l_component_type_code
45475 , p_component_appl_id => l_component_appl_id
45476 , p_amb_context_code => l_amb_context_code
45477 , p_side => 'NA'
45478 );
45479
45480
45481 --
45482 --
45483 END IF;
45484
45485 --
45486 -- Update the line information that should be overwritten
45487 --
45488 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
45489 p_header_num => 1);
45490 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
45491
45492 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
45493
45494 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
45495 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
45496 END IF;
45497
45498 --
45499 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
45500 --
45501 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
45502 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
45503 ELSE
45504 ---------------------------------------------------------------------------------------------------
45505 -- 4262811a Switch Sign
45506 ---------------------------------------------------------------------------------------------------
45507 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
45508 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
45509 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
45510 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
45511 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
45512 -- 5132302
45513 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
45514 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
45515
45516 END IF;
45517
45518 -- 4955764
45519 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
45520 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
45521
45522
45523 XLA_AE_LINES_PKG.ValidateCurrentLine;
45524 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
45525
45526 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
45527 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
45528 ,p_balance_type_code => l_balance_type_code);
45529
45530 END IF;
45531
45532 -----------------------------------------------------------------------------------------
45533 -- 4262811 Multiperiod Accounting
45534 -----------------------------------------------------------------------------------------
45535 -- No MPA option is assigned.
45536
45537
45538 END IF;
45539 END IF;
45540 --
45541
45542 --
45543 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
45544 trace
45545 (p_msg => 'END of AcctLineType_84'
45546 ,p_level => C_LEVEL_PROCEDURE
45547 ,p_module => l_log_module);
45548 END IF;
45549 --
45550 EXCEPTION
45551 WHEN xla_exceptions_pkg.application_exception THEN
45552 RAISE;
45553 WHEN OTHERS THEN
45554 xla_exceptions_pkg.raise_message
45555 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_84');
45556 END AcctLineType_84;
45557 --
45558
45559 ---------------------------------------
45560 --
45561 -- PRIVATE FUNCTION
45562 -- AcctLineType_85
45563 --
45564 ---------------------------------------
45565 PROCEDURE AcctLineType_85 (
45566 p_application_id IN NUMBER
45567 ,p_event_id IN NUMBER
45568 ,p_calculate_acctd_flag IN VARCHAR2
45569 ,p_calculate_g_l_flag IN VARCHAR2
45570 ,p_actual_flag IN OUT VARCHAR2
45571 ,p_balance_type_code OUT VARCHAR2
45572 ,p_gain_or_loss_ref OUT VARCHAR2
45573
45574 --Cost Management Default Account
45575 , p_source_4 IN NUMBER
45576 --DISTRIBUTION_IDENTIFIER
45577 , p_source_11 IN NUMBER
45578 --Distribution Type
45579 , p_source_12 IN VARCHAR2
45580 , p_source_12_meaning IN VARCHAR2
45581 --Entered Currency Code
45582 , p_source_15 IN VARCHAR2
45583 --Entered Amount
45584 , p_source_18 IN NUMBER
45585 --Currency Conversion Date
45586 , p_source_19 IN DATE
45587 --Currency Conversion Rate
45588 , p_source_20 IN NUMBER
45589 --Currency Conversion Type
45590 , p_source_21 IN VARCHAR2
45591 --Accounted Amount
45592 , p_source_22 IN NUMBER
45593 --Accounting Line Type
45594 , p_source_24 IN NUMBER
45595 )
45596 IS
45597
45598 l_component_type VARCHAR2(80);
45599 l_component_code VARCHAR2(30);
45600 l_component_type_code VARCHAR2(1);
45601 l_component_appl_id INTEGER;
45602 l_amb_context_code VARCHAR2(30);
45603 l_entity_code VARCHAR2(30);
45604 l_event_class_code VARCHAR2(30);
45605 l_ae_header_id NUMBER;
45606 l_event_type_code VARCHAR2(30);
45607 l_line_definition_code VARCHAR2(30);
45608 l_line_definition_owner_code VARCHAR2(1);
45609 --
45610 -- adr variables
45611 l_segment VARCHAR2(30);
45612 l_ccid NUMBER;
45613 l_adr_transaction_coa_id NUMBER;
45614 l_adr_accounting_coa_id NUMBER;
45615 l_adr_flexfield_segment_code VARCHAR2(30);
45616 l_adr_flex_value_set_id NUMBER;
45617 l_adr_value_type_code VARCHAR2(30);
45618 l_adr_value_combination_id NUMBER;
45619 l_adr_value_segment_code VARCHAR2(30);
45620
45621 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
45622 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
45623 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
45624 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
45625
45626 -- 4262811 Variables ------------------------------------------------------------------------------------------
45627 l_entered_amt_idx NUMBER;
45628 l_accted_amt_idx NUMBER;
45629 l_acc_rev_flag VARCHAR2(1);
45630 l_accrual_line_num NUMBER;
45631 l_tmp_amt NUMBER;
45632 l_acc_rev_natural_side_code VARCHAR2(1);
45633
45634 l_num_entries NUMBER;
45635 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
45636 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
45637 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
45638 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
45639 l_recog_line_1 NUMBER;
45640 l_recog_line_2 NUMBER;
45641
45642 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
45643 l_bflow_applied_to_amt NUMBER; -- 5132302
45644 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
45645
45646 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
45647
45648 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
45649 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
45650
45651 ---------------------------------------------------------------------------------------------------------------
45652
45653
45654 --
45655 -- bulk performance
45656 --
45657 l_balance_type_code VARCHAR2(1);
45658 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
45659 l_log_module VARCHAR2(240);
45660
45661 --
45662 -- Upgrade strategy
45663 --
45664 l_actual_upg_option VARCHAR2(1);
45665 l_enc_upg_option VARCHAR2(1);
45666
45667 --
45668 BEGIN
45669 --
45670 IF g_log_enabled THEN
45671 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_85';
45672 END IF;
45673 --
45674 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
45675
45676 trace
45677 (p_msg => 'BEGIN of AcctLineType_85'
45678 ,p_level => C_LEVEL_PROCEDURE
45679 ,p_module => l_log_module);
45680
45681 END IF;
45682 --
45683 l_component_type := 'AMB_JLT';
45684 l_component_code := 'INTERORG_PROFIT_OPM';
45685 l_component_type_code := 'S';
45686 l_component_appl_id := 707;
45687 l_amb_context_code := 'DEFAULT';
45688 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
45689 l_event_class_code := 'FOB_SHIP_SENDER_SHIP';
45690 l_event_type_code := 'FOB_SHIP_SENDER_SHIP_ALL';
45691 l_line_definition_owner_code := 'S';
45692 l_line_definition_code := 'FOB_SHIP_SENDER_SHIP';
45693 --
45694 l_balance_type_code := 'A';
45695 l_segment := NULL;
45696 l_ccid := NULL;
45697 l_adr_transaction_coa_id := NULL;
45698 l_adr_accounting_coa_id := NULL;
45699 l_adr_flexfield_segment_code := NULL;
45700 l_adr_flex_value_set_id := NULL;
45701 l_adr_value_type_code := NULL;
45702 l_adr_value_combination_id := NULL;
45703 l_adr_value_segment_code := NULL;
45704
45705 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
45706 l_bflow_class_code := ''; -- 4219869 Business Flow
45707 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
45708 l_budgetary_control_flag := 'N';
45709
45710 l_bflow_applied_to_amt_idx := NULL; -- 5132302
45711 l_bflow_applied_to_amt := NULL; -- 5132302
45712 l_entered_amt_idx := NULL; -- 4262811
45713 l_accted_amt_idx := NULL; -- 4262811
45714 l_acc_rev_flag := NULL; -- 4262811
45715 l_accrual_line_num := NULL; -- 4262811
45716 l_tmp_amt := NULL; -- 4262811
45717 --
45718
45719 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
45720 l_balance_type_code <> 'B' THEN
45721 IF NVL(p_source_24,9E125) = 34
45722 THEN
45723
45724 --
45725 XLA_AE_LINES_PKG.SetNewLine;
45726
45727 p_balance_type_code := l_balance_type_code;
45728 -- set the flag so later we will know whether the gain loss line needs to be created
45729
45730 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
45731 p_actual_flag :='A';
45732 END IF;
45733
45734 --
45735 -- bulk performance
45736 --
45737 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
45738 p_header_num => 0); -- 4262811
45739 --
45740 -- set accounting line options
45741 --
45742 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
45743 p_natural_side_code => 'D'
45744 , p_gain_or_loss_flag => 'N'
45745 , p_gl_transfer_mode_code => 'S'
45746 , p_acct_entry_type_code => 'A'
45747 , p_switch_side_flag => 'Y'
45748 , p_merge_duplicate_code => 'N'
45749 );
45750 --
45751 l_acc_rev_natural_side_code := 'C'; -- 4262811
45752 --
45753 --
45754 -- set accounting line type info
45755 --
45756 xla_ae_lines_pkg.SetAcctLineType
45757 (p_component_type => l_component_type
45758 ,p_event_type_code => l_event_type_code
45759 ,p_line_definition_owner_code => l_line_definition_owner_code
45760 ,p_line_definition_code => l_line_definition_code
45761 ,p_accounting_line_code => l_component_code
45762 ,p_accounting_line_type_code => l_component_type_code
45763 ,p_accounting_line_appl_id => l_component_appl_id
45764 ,p_amb_context_code => l_amb_context_code
45765 ,p_entity_code => l_entity_code
45766 ,p_event_class_code => l_event_class_code);
45767 --
45768 -- set accounting class
45769 --
45770 xla_ae_lines_pkg.SetAcctClass(
45771 p_accounting_class_code => 'INTERORG_PROFIT'
45772 , p_ae_header_id => l_ae_header_id
45773 );
45774
45775 --
45776 -- set rounding class
45777 --
45778 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
45779 'INTERORG_PROFIT';
45780
45781 --
45782 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
45783 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
45784 --
45785 -- bulk performance
45786 --
45787 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
45788
45789 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
45790 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
45791
45792 -- 4955764
45793 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
45794 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
45795
45796 -- 4458381 Public Sector Enh
45797
45798 --
45799 -- set accounting attributes for the line type
45800 --
45801 l_entered_amt_idx := 3;
45802 l_accted_amt_idx := 8;
45803 l_bflow_applied_to_amt_idx := NULL; -- 5132302
45804 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
45805 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
45806 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
45807 l_rec_acct_attrs.array_char_value(2) := p_source_12;
45808 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
45809 l_rec_acct_attrs.array_num_value(3) := p_source_18;
45810 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
45811 l_rec_acct_attrs.array_char_value(4) := p_source_15;
45812 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
45813 l_rec_acct_attrs.array_date_value(5) := p_source_19;
45814 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
45815 l_rec_acct_attrs.array_num_value(6) := p_source_20;
45816 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
45817 l_rec_acct_attrs.array_char_value(7) := p_source_21;
45818 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
45819 l_rec_acct_attrs.array_num_value(8) := p_source_22;
45820
45821 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
45822 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
45823
45824 ---------------------------------------------------------------------------------------------------------------
45825 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
45826 ---------------------------------------------------------------------------------------------------------------
45827 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
45828
45829 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
45830 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
45831
45832 IF xla_accounting_cache_pkg.GetValueChar
45833 (p_source_code => 'LEDGER_CATEGORY_CODE'
45834 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
45835 AND l_bflow_method_code = 'PRIOR_ENTRY'
45836 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
45837 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
45838 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
45839 )
45840 THEN
45841 xla_ae_lines_pkg.BflowUpgEntry
45842 (p_business_method_code => l_bflow_method_code
45843 ,p_business_class_code => l_bflow_class_code
45844 ,p_balance_type => l_balance_type_code);
45845 ELSE
45846 NULL;
45847 -- No business flow processing for business flow method of NONE.
45848 END IF;
45849
45850 --
45851 -- call analytical criteria
45852 --
45853
45854 --
45855 -- call description
45856 --
45857 -- No description or it is inherited.
45858 --
45859 -- call ADRs
45860 -- Bug 4922099
45861 --
45862 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
45863 (NVL(l_actual_upg_option, 'N') = 'O') OR
45864 (NVL(l_enc_upg_option, 'N') = 'O')
45865 )
45866 THEN
45867 NULL;
45868 --
45869 --
45870
45871 l_ccid := AcctDerRule_4(
45872 p_application_id => p_application_id
45873 , p_ae_header_id => l_ae_header_id
45874 , p_source_4 => p_source_4
45875 , x_transaction_coa_id => l_adr_transaction_coa_id
45876 , x_accounting_coa_id => l_adr_accounting_coa_id
45877 , x_value_type_code => l_adr_value_type_code
45878 , p_side => 'NA'
45879 );
45880
45881 xla_ae_lines_pkg.set_ccid(
45882 p_code_combination_id => l_ccid
45883 , p_value_type_code => l_adr_value_type_code
45884 , p_transaction_coa_id => l_adr_transaction_coa_id
45885 , p_accounting_coa_id => l_adr_accounting_coa_id
45886 , p_adr_code => 'CST_DEFAULT'
45887 , p_adr_type_code => 'S'
45888 , p_component_type => l_component_type
45889 , p_component_code => l_component_code
45890 , p_component_type_code => l_component_type_code
45891 , p_component_appl_id => l_component_appl_id
45892 , p_amb_context_code => l_amb_context_code
45893 , p_side => 'NA'
45894 );
45895
45896
45897 --
45898 --
45899 END IF;
45900 --
45901 -- Bug 4922099
45902 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
45903 (NVL(l_enc_upg_option, 'N') = 'O')
45904 ) AND
45905 (l_bflow_method_code = 'PRIOR_ENTRY')
45906 )
45907 THEN
45908 IF
45909 --
45910 1 = 2
45911 --
45912 THEN
45913 xla_accounting_err_pkg.build_message
45914 (p_appli_s_name => 'XLA'
45915 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
45916 ,p_token_1 => 'LINE_NUMBER'
45917 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
45918 ,p_token_2 => 'LINE_TYPE_NAME'
45919 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
45920 l_component_type
45921 ,l_component_code
45922 ,l_component_type_code
45923 ,l_component_appl_id
45924 ,l_amb_context_code
45925 ,l_entity_code
45926 ,l_event_class_code
45927 )
45928 ,p_token_3 => 'OWNER'
45929 ,p_value_3 => xla_lookups_pkg.get_meaning(
45930 p_lookup_type => 'XLA_OWNER_TYPE'
45931 ,p_lookup_code => l_component_type_code
45932 )
45933 ,p_token_4 => 'PRODUCT_NAME'
45934 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
45935 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
45936 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
45937 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
45938 ,p_ae_header_id => NULL
45939 );
45940
45941 IF (C_LEVEL_ERROR>= g_log_level) THEN
45942 trace
45943 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
45944 ,p_level => C_LEVEL_ERROR
45945 ,p_module => l_log_module);
45946 END IF;
45947 END IF;
45948 END IF;
45949 --
45950 --
45951 ------------------------------------------------------------------------------------------------
45952 -- 4219869 Business Flow
45953 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
45954 -- Prior Entry. Currently, the following code is always generated.
45955 ------------------------------------------------------------------------------------------------
45956 XLA_AE_LINES_PKG.ValidateCurrentLine;
45957
45958 ------------------------------------------------------------------------------------
45959 -- 4219869 Business Flow
45960 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
45961 ------------------------------------------------------------------------------------
45962 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
45963
45964 ----------------------------------------------------------------------------------
45965 -- 4219869 Business Flow
45966 -- Update journal entry status -- Need to generate this within IF <condition>
45967 ----------------------------------------------------------------------------------
45968 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
45969 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
45970 ,p_balance_type_code => l_balance_type_code
45971 );
45972
45973 -------------------------------------------------------------------------------------------
45974 -- 4262811 - Generate the Accrual Reversal lines
45975 -------------------------------------------------------------------------------------------
45976 BEGIN
45977 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
45978 (g_array_event(p_event_id).array_value_num('header_index'));
45979 IF l_acc_rev_flag IS NULL THEN
45980 l_acc_rev_flag := 'N';
45981 END IF;
45982 EXCEPTION
45983 WHEN OTHERS THEN
45984 l_acc_rev_flag := 'N';
45985 END;
45986 --
45987 IF (l_acc_rev_flag = 'Y') THEN
45988
45989 -- 4645092 ------------------------------------------------------------------------------
45990 -- To allow MPA report to determine if it should generate report process
45991 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
45992 ------------------------------------------------------------------------------------------
45993
45994 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
45995 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
45996 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
45997 -- call ADRs
45998 -- Bug 4922099
45999 --
46000 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
46001 (NVL(l_actual_upg_option, 'N') = 'O') OR
46002 (NVL(l_enc_upg_option, 'N') = 'O')
46003 )
46004 THEN
46005 NULL;
46006 --
46007 --
46008
46009 l_ccid := AcctDerRule_4(
46010 p_application_id => p_application_id
46011 , p_ae_header_id => l_ae_header_id
46012 , p_source_4 => p_source_4
46013 , x_transaction_coa_id => l_adr_transaction_coa_id
46014 , x_accounting_coa_id => l_adr_accounting_coa_id
46015 , x_value_type_code => l_adr_value_type_code
46016 , p_side => 'NA'
46017 );
46018
46019 xla_ae_lines_pkg.set_ccid(
46020 p_code_combination_id => l_ccid
46021 , p_value_type_code => l_adr_value_type_code
46022 , p_transaction_coa_id => l_adr_transaction_coa_id
46023 , p_accounting_coa_id => l_adr_accounting_coa_id
46024 , p_adr_code => 'CST_DEFAULT'
46025 , p_adr_type_code => 'S'
46026 , p_component_type => l_component_type
46027 , p_component_code => l_component_code
46028 , p_component_type_code => l_component_type_code
46029 , p_component_appl_id => l_component_appl_id
46030 , p_amb_context_code => l_amb_context_code
46031 , p_side => 'NA'
46032 );
46033
46034
46035 --
46036 --
46037 END IF;
46038
46039 --
46040 -- Update the line information that should be overwritten
46041 --
46042 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
46043 p_header_num => 1);
46044 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
46045
46046 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
46047
46048 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
46049 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
46050 END IF;
46051
46052 --
46053 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
46054 --
46055 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
46056 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
46057 ELSE
46058 ---------------------------------------------------------------------------------------------------
46059 -- 4262811a Switch Sign
46060 ---------------------------------------------------------------------------------------------------
46061 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
46062 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
46063 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
46064 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
46065 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
46066 -- 5132302
46067 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
46068 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
46069
46070 END IF;
46071
46072 -- 4955764
46073 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
46074 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
46075
46076
46077 XLA_AE_LINES_PKG.ValidateCurrentLine;
46078 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
46079
46080 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
46081 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
46082 ,p_balance_type_code => l_balance_type_code);
46083
46084 END IF;
46085
46086 -----------------------------------------------------------------------------------------
46087 -- 4262811 Multiperiod Accounting
46088 -----------------------------------------------------------------------------------------
46089 -- No MPA option is assigned.
46090
46091
46092 END IF;
46093 END IF;
46094 --
46095
46096 --
46097 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
46098 trace
46099 (p_msg => 'END of AcctLineType_85'
46100 ,p_level => C_LEVEL_PROCEDURE
46101 ,p_module => l_log_module);
46102 END IF;
46103 --
46104 EXCEPTION
46105 WHEN xla_exceptions_pkg.application_exception THEN
46106 RAISE;
46107 WHEN OTHERS THEN
46108 xla_exceptions_pkg.raise_message
46109 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_85');
46110 END AcctLineType_85;
46111 --
46112
46113 ---------------------------------------
46114 --
46115 -- PRIVATE FUNCTION
46116 -- AcctLineType_86
46117 --
46118 ---------------------------------------
46119 PROCEDURE AcctLineType_86 (
46120 p_application_id IN NUMBER
46121 ,p_event_id IN NUMBER
46122 ,p_calculate_acctd_flag IN VARCHAR2
46123 ,p_calculate_g_l_flag IN VARCHAR2
46124 ,p_actual_flag IN OUT VARCHAR2
46125 ,p_balance_type_code OUT VARCHAR2
46126 ,p_gain_or_loss_ref OUT VARCHAR2
46127
46128 --Cost Management Default Account
46129 , p_source_4 IN NUMBER
46130 --DISTRIBUTION_IDENTIFIER
46131 , p_source_11 IN NUMBER
46132 --Distribution Type
46133 , p_source_12 IN VARCHAR2
46134 , p_source_12_meaning IN VARCHAR2
46135 --Entered Currency Code
46136 , p_source_15 IN VARCHAR2
46137 --Entered Amount
46138 , p_source_18 IN NUMBER
46139 --Currency Conversion Date
46140 , p_source_19 IN DATE
46141 --Currency Conversion Rate
46142 , p_source_20 IN NUMBER
46143 --Currency Conversion Type
46144 , p_source_21 IN VARCHAR2
46145 --Accounted Amount
46146 , p_source_22 IN NUMBER
46147 --Accounting Line Type
46148 , p_source_24 IN NUMBER
46149 )
46150 IS
46151
46152 l_component_type VARCHAR2(80);
46153 l_component_code VARCHAR2(30);
46154 l_component_type_code VARCHAR2(1);
46155 l_component_appl_id INTEGER;
46156 l_amb_context_code VARCHAR2(30);
46157 l_entity_code VARCHAR2(30);
46158 l_event_class_code VARCHAR2(30);
46159 l_ae_header_id NUMBER;
46160 l_event_type_code VARCHAR2(30);
46161 l_line_definition_code VARCHAR2(30);
46162 l_line_definition_owner_code VARCHAR2(1);
46163 --
46164 -- adr variables
46165 l_segment VARCHAR2(30);
46166 l_ccid NUMBER;
46167 l_adr_transaction_coa_id NUMBER;
46168 l_adr_accounting_coa_id NUMBER;
46169 l_adr_flexfield_segment_code VARCHAR2(30);
46170 l_adr_flex_value_set_id NUMBER;
46171 l_adr_value_type_code VARCHAR2(30);
46172 l_adr_value_combination_id NUMBER;
46173 l_adr_value_segment_code VARCHAR2(30);
46174
46175 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
46176 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
46177 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
46178 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
46179
46180 -- 4262811 Variables ------------------------------------------------------------------------------------------
46181 l_entered_amt_idx NUMBER;
46182 l_accted_amt_idx NUMBER;
46183 l_acc_rev_flag VARCHAR2(1);
46184 l_accrual_line_num NUMBER;
46185 l_tmp_amt NUMBER;
46186 l_acc_rev_natural_side_code VARCHAR2(1);
46187
46188 l_num_entries NUMBER;
46189 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
46190 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
46191 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
46192 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
46193 l_recog_line_1 NUMBER;
46194 l_recog_line_2 NUMBER;
46195
46196 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
46197 l_bflow_applied_to_amt NUMBER; -- 5132302
46198 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
46199
46200 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
46201
46202 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
46203 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
46204
46205 ---------------------------------------------------------------------------------------------------------------
46206
46207
46208 --
46209 -- bulk performance
46210 --
46211 l_balance_type_code VARCHAR2(1);
46212 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
46213 l_log_module VARCHAR2(240);
46214
46215 --
46216 -- Upgrade strategy
46217 --
46218 l_actual_upg_option VARCHAR2(1);
46219 l_enc_upg_option VARCHAR2(1);
46220
46221 --
46222 BEGIN
46223 --
46224 IF g_log_enabled THEN
46225 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_86';
46226 END IF;
46227 --
46228 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
46229
46230 trace
46231 (p_msg => 'BEGIN of AcctLineType_86'
46232 ,p_level => C_LEVEL_PROCEDURE
46233 ,p_module => l_log_module);
46234
46235 END IF;
46236 --
46237 l_component_type := 'AMB_JLT';
46238 l_component_code := 'INTERORG_PROFIT_OPM';
46239 l_component_type_code := 'S';
46240 l_component_appl_id := 707;
46241 l_amb_context_code := 'DEFAULT';
46242 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
46243 l_event_class_code := 'INT_ORDER_TO_EXP';
46244 l_event_type_code := 'INT_ORDER_TO_EXP_ALL';
46245 l_line_definition_owner_code := 'S';
46246 l_line_definition_code := 'INT_ORDER_TO_EXP';
46247 --
46248 l_balance_type_code := 'A';
46249 l_segment := NULL;
46250 l_ccid := NULL;
46251 l_adr_transaction_coa_id := NULL;
46252 l_adr_accounting_coa_id := NULL;
46253 l_adr_flexfield_segment_code := NULL;
46254 l_adr_flex_value_set_id := NULL;
46255 l_adr_value_type_code := NULL;
46256 l_adr_value_combination_id := NULL;
46257 l_adr_value_segment_code := NULL;
46258
46259 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
46260 l_bflow_class_code := ''; -- 4219869 Business Flow
46261 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
46262 l_budgetary_control_flag := 'N';
46263
46264 l_bflow_applied_to_amt_idx := NULL; -- 5132302
46265 l_bflow_applied_to_amt := NULL; -- 5132302
46266 l_entered_amt_idx := NULL; -- 4262811
46267 l_accted_amt_idx := NULL; -- 4262811
46268 l_acc_rev_flag := NULL; -- 4262811
46269 l_accrual_line_num := NULL; -- 4262811
46270 l_tmp_amt := NULL; -- 4262811
46271 --
46272
46273 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
46274 l_balance_type_code <> 'B' THEN
46275 IF NVL(p_source_24,9E125) = 34
46276 THEN
46277
46278 --
46279 XLA_AE_LINES_PKG.SetNewLine;
46280
46281 p_balance_type_code := l_balance_type_code;
46282 -- set the flag so later we will know whether the gain loss line needs to be created
46283
46284 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
46285 p_actual_flag :='A';
46286 END IF;
46287
46288 --
46289 -- bulk performance
46290 --
46291 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
46292 p_header_num => 0); -- 4262811
46293 --
46294 -- set accounting line options
46295 --
46296 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
46297 p_natural_side_code => 'D'
46298 , p_gain_or_loss_flag => 'N'
46299 , p_gl_transfer_mode_code => 'S'
46300 , p_acct_entry_type_code => 'A'
46301 , p_switch_side_flag => 'Y'
46302 , p_merge_duplicate_code => 'N'
46303 );
46304 --
46305 l_acc_rev_natural_side_code := 'C'; -- 4262811
46306 --
46307 --
46308 -- set accounting line type info
46309 --
46310 xla_ae_lines_pkg.SetAcctLineType
46311 (p_component_type => l_component_type
46312 ,p_event_type_code => l_event_type_code
46313 ,p_line_definition_owner_code => l_line_definition_owner_code
46314 ,p_line_definition_code => l_line_definition_code
46315 ,p_accounting_line_code => l_component_code
46316 ,p_accounting_line_type_code => l_component_type_code
46317 ,p_accounting_line_appl_id => l_component_appl_id
46318 ,p_amb_context_code => l_amb_context_code
46319 ,p_entity_code => l_entity_code
46320 ,p_event_class_code => l_event_class_code);
46321 --
46322 -- set accounting class
46323 --
46324 xla_ae_lines_pkg.SetAcctClass(
46325 p_accounting_class_code => 'INTERORG_PROFIT'
46326 , p_ae_header_id => l_ae_header_id
46327 );
46328
46329 --
46330 -- set rounding class
46331 --
46332 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
46333 'INTERORG_PROFIT';
46334
46335 --
46336 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
46337 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
46338 --
46339 -- bulk performance
46340 --
46341 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
46342
46343 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
46344 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
46345
46346 -- 4955764
46347 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
46348 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
46349
46350 -- 4458381 Public Sector Enh
46351
46352 --
46353 -- set accounting attributes for the line type
46354 --
46355 l_entered_amt_idx := 3;
46356 l_accted_amt_idx := 8;
46357 l_bflow_applied_to_amt_idx := NULL; -- 5132302
46358 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
46359 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
46360 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
46361 l_rec_acct_attrs.array_char_value(2) := p_source_12;
46362 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
46363 l_rec_acct_attrs.array_num_value(3) := p_source_18;
46364 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
46365 l_rec_acct_attrs.array_char_value(4) := p_source_15;
46366 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
46367 l_rec_acct_attrs.array_date_value(5) := p_source_19;
46368 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
46369 l_rec_acct_attrs.array_num_value(6) := p_source_20;
46370 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
46371 l_rec_acct_attrs.array_char_value(7) := p_source_21;
46372 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
46373 l_rec_acct_attrs.array_num_value(8) := p_source_22;
46374
46375 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
46376 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
46377
46378 ---------------------------------------------------------------------------------------------------------------
46379 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
46380 ---------------------------------------------------------------------------------------------------------------
46381 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
46382
46383 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
46384 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
46385
46386 IF xla_accounting_cache_pkg.GetValueChar
46387 (p_source_code => 'LEDGER_CATEGORY_CODE'
46388 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
46389 AND l_bflow_method_code = 'PRIOR_ENTRY'
46390 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
46391 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
46392 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
46393 )
46394 THEN
46395 xla_ae_lines_pkg.BflowUpgEntry
46396 (p_business_method_code => l_bflow_method_code
46397 ,p_business_class_code => l_bflow_class_code
46398 ,p_balance_type => l_balance_type_code);
46399 ELSE
46400 NULL;
46401 -- No business flow processing for business flow method of NONE.
46402 END IF;
46403
46404 --
46405 -- call analytical criteria
46406 --
46407
46408 --
46409 -- call description
46410 --
46411 -- No description or it is inherited.
46412 --
46413 -- call ADRs
46414 -- Bug 4922099
46415 --
46416 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
46417 (NVL(l_actual_upg_option, 'N') = 'O') OR
46418 (NVL(l_enc_upg_option, 'N') = 'O')
46419 )
46420 THEN
46421 NULL;
46422 --
46423 --
46424
46425 l_ccid := AcctDerRule_4(
46426 p_application_id => p_application_id
46427 , p_ae_header_id => l_ae_header_id
46428 , p_source_4 => p_source_4
46429 , x_transaction_coa_id => l_adr_transaction_coa_id
46430 , x_accounting_coa_id => l_adr_accounting_coa_id
46431 , x_value_type_code => l_adr_value_type_code
46432 , p_side => 'NA'
46433 );
46434
46435 xla_ae_lines_pkg.set_ccid(
46436 p_code_combination_id => l_ccid
46437 , p_value_type_code => l_adr_value_type_code
46438 , p_transaction_coa_id => l_adr_transaction_coa_id
46439 , p_accounting_coa_id => l_adr_accounting_coa_id
46440 , p_adr_code => 'CST_DEFAULT'
46441 , p_adr_type_code => 'S'
46442 , p_component_type => l_component_type
46443 , p_component_code => l_component_code
46444 , p_component_type_code => l_component_type_code
46445 , p_component_appl_id => l_component_appl_id
46446 , p_amb_context_code => l_amb_context_code
46447 , p_side => 'NA'
46448 );
46449
46450
46451 --
46452 --
46453 END IF;
46454 --
46455 -- Bug 4922099
46456 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
46457 (NVL(l_enc_upg_option, 'N') = 'O')
46458 ) AND
46459 (l_bflow_method_code = 'PRIOR_ENTRY')
46460 )
46461 THEN
46462 IF
46463 --
46464 1 = 2
46465 --
46466 THEN
46467 xla_accounting_err_pkg.build_message
46468 (p_appli_s_name => 'XLA'
46469 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
46470 ,p_token_1 => 'LINE_NUMBER'
46471 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
46472 ,p_token_2 => 'LINE_TYPE_NAME'
46473 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
46474 l_component_type
46475 ,l_component_code
46476 ,l_component_type_code
46477 ,l_component_appl_id
46478 ,l_amb_context_code
46479 ,l_entity_code
46480 ,l_event_class_code
46481 )
46482 ,p_token_3 => 'OWNER'
46483 ,p_value_3 => xla_lookups_pkg.get_meaning(
46484 p_lookup_type => 'XLA_OWNER_TYPE'
46485 ,p_lookup_code => l_component_type_code
46486 )
46487 ,p_token_4 => 'PRODUCT_NAME'
46488 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
46489 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
46490 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
46491 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
46492 ,p_ae_header_id => NULL
46493 );
46494
46495 IF (C_LEVEL_ERROR>= g_log_level) THEN
46496 trace
46497 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
46498 ,p_level => C_LEVEL_ERROR
46499 ,p_module => l_log_module);
46500 END IF;
46501 END IF;
46502 END IF;
46503 --
46504 --
46505 ------------------------------------------------------------------------------------------------
46506 -- 4219869 Business Flow
46507 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
46508 -- Prior Entry. Currently, the following code is always generated.
46509 ------------------------------------------------------------------------------------------------
46510 XLA_AE_LINES_PKG.ValidateCurrentLine;
46511
46512 ------------------------------------------------------------------------------------
46513 -- 4219869 Business Flow
46514 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
46515 ------------------------------------------------------------------------------------
46516 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
46517
46518 ----------------------------------------------------------------------------------
46519 -- 4219869 Business Flow
46520 -- Update journal entry status -- Need to generate this within IF <condition>
46521 ----------------------------------------------------------------------------------
46522 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
46523 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
46524 ,p_balance_type_code => l_balance_type_code
46525 );
46526
46527 -------------------------------------------------------------------------------------------
46528 -- 4262811 - Generate the Accrual Reversal lines
46529 -------------------------------------------------------------------------------------------
46530 BEGIN
46531 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
46532 (g_array_event(p_event_id).array_value_num('header_index'));
46533 IF l_acc_rev_flag IS NULL THEN
46534 l_acc_rev_flag := 'N';
46535 END IF;
46536 EXCEPTION
46537 WHEN OTHERS THEN
46538 l_acc_rev_flag := 'N';
46539 END;
46540 --
46541 IF (l_acc_rev_flag = 'Y') THEN
46542
46543 -- 4645092 ------------------------------------------------------------------------------
46544 -- To allow MPA report to determine if it should generate report process
46545 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
46546 ------------------------------------------------------------------------------------------
46547
46548 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
46549 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
46550 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
46551 -- call ADRs
46552 -- Bug 4922099
46553 --
46554 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
46555 (NVL(l_actual_upg_option, 'N') = 'O') OR
46556 (NVL(l_enc_upg_option, 'N') = 'O')
46557 )
46558 THEN
46559 NULL;
46560 --
46561 --
46562
46563 l_ccid := AcctDerRule_4(
46564 p_application_id => p_application_id
46565 , p_ae_header_id => l_ae_header_id
46566 , p_source_4 => p_source_4
46567 , x_transaction_coa_id => l_adr_transaction_coa_id
46568 , x_accounting_coa_id => l_adr_accounting_coa_id
46569 , x_value_type_code => l_adr_value_type_code
46570 , p_side => 'NA'
46571 );
46572
46573 xla_ae_lines_pkg.set_ccid(
46574 p_code_combination_id => l_ccid
46575 , p_value_type_code => l_adr_value_type_code
46576 , p_transaction_coa_id => l_adr_transaction_coa_id
46577 , p_accounting_coa_id => l_adr_accounting_coa_id
46578 , p_adr_code => 'CST_DEFAULT'
46579 , p_adr_type_code => 'S'
46580 , p_component_type => l_component_type
46581 , p_component_code => l_component_code
46582 , p_component_type_code => l_component_type_code
46583 , p_component_appl_id => l_component_appl_id
46584 , p_amb_context_code => l_amb_context_code
46585 , p_side => 'NA'
46586 );
46587
46588
46589 --
46590 --
46591 END IF;
46592
46593 --
46594 -- Update the line information that should be overwritten
46595 --
46596 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
46597 p_header_num => 1);
46598 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
46599
46600 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
46601
46602 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
46603 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
46604 END IF;
46605
46606 --
46607 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
46608 --
46609 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
46610 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
46611 ELSE
46612 ---------------------------------------------------------------------------------------------------
46613 -- 4262811a Switch Sign
46614 ---------------------------------------------------------------------------------------------------
46615 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
46616 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
46617 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
46618 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
46619 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
46620 -- 5132302
46621 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
46622 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
46623
46624 END IF;
46625
46626 -- 4955764
46627 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
46628 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
46629
46630
46631 XLA_AE_LINES_PKG.ValidateCurrentLine;
46632 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
46633
46634 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
46635 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
46636 ,p_balance_type_code => l_balance_type_code);
46637
46638 END IF;
46639
46640 -----------------------------------------------------------------------------------------
46641 -- 4262811 Multiperiod Accounting
46642 -----------------------------------------------------------------------------------------
46643 -- No MPA option is assigned.
46644
46645
46646 END IF;
46647 END IF;
46648 --
46649
46650 --
46651 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
46652 trace
46653 (p_msg => 'END of AcctLineType_86'
46654 ,p_level => C_LEVEL_PROCEDURE
46655 ,p_module => l_log_module);
46656 END IF;
46657 --
46658 EXCEPTION
46659 WHEN xla_exceptions_pkg.application_exception THEN
46660 RAISE;
46661 WHEN OTHERS THEN
46662 xla_exceptions_pkg.raise_message
46663 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_86');
46664 END AcctLineType_86;
46665 --
46666
46667 ---------------------------------------
46668 --
46669 -- PRIVATE FUNCTION
46670 -- AcctLineType_87
46671 --
46672 ---------------------------------------
46673 PROCEDURE AcctLineType_87 (
46674 p_application_id IN NUMBER
46675 ,p_event_id IN NUMBER
46676 ,p_calculate_acctd_flag IN VARCHAR2
46677 ,p_calculate_g_l_flag IN VARCHAR2
46678 ,p_actual_flag IN OUT VARCHAR2
46679 ,p_balance_type_code OUT VARCHAR2
46680 ,p_gain_or_loss_ref OUT VARCHAR2
46681
46682 --Cost Management Default Account
46683 , p_source_4 IN NUMBER
46684 --DISTRIBUTION_IDENTIFIER
46685 , p_source_11 IN NUMBER
46686 --Distribution Type
46687 , p_source_12 IN VARCHAR2
46688 , p_source_12_meaning IN VARCHAR2
46689 --Entered Currency Code
46690 , p_source_15 IN VARCHAR2
46691 --Entered Amount
46692 , p_source_18 IN NUMBER
46693 --Currency Conversion Date
46694 , p_source_19 IN DATE
46695 --Currency Conversion Rate
46696 , p_source_20 IN NUMBER
46697 --Currency Conversion Type
46698 , p_source_21 IN VARCHAR2
46699 --Accounted Amount
46700 , p_source_22 IN NUMBER
46701 --Accounting Line Type
46702 , p_source_24 IN NUMBER
46703 )
46704 IS
46705
46706 l_component_type VARCHAR2(80);
46707 l_component_code VARCHAR2(30);
46708 l_component_type_code VARCHAR2(1);
46709 l_component_appl_id INTEGER;
46710 l_amb_context_code VARCHAR2(30);
46711 l_entity_code VARCHAR2(30);
46712 l_event_class_code VARCHAR2(30);
46713 l_ae_header_id NUMBER;
46714 l_event_type_code VARCHAR2(30);
46715 l_line_definition_code VARCHAR2(30);
46716 l_line_definition_owner_code VARCHAR2(1);
46717 --
46718 -- adr variables
46719 l_segment VARCHAR2(30);
46720 l_ccid NUMBER;
46721 l_adr_transaction_coa_id NUMBER;
46722 l_adr_accounting_coa_id NUMBER;
46723 l_adr_flexfield_segment_code VARCHAR2(30);
46724 l_adr_flex_value_set_id NUMBER;
46725 l_adr_value_type_code VARCHAR2(30);
46726 l_adr_value_combination_id NUMBER;
46727 l_adr_value_segment_code VARCHAR2(30);
46728
46729 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
46730 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
46731 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
46732 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
46733
46734 -- 4262811 Variables ------------------------------------------------------------------------------------------
46735 l_entered_amt_idx NUMBER;
46736 l_accted_amt_idx NUMBER;
46737 l_acc_rev_flag VARCHAR2(1);
46738 l_accrual_line_num NUMBER;
46739 l_tmp_amt NUMBER;
46740 l_acc_rev_natural_side_code VARCHAR2(1);
46741
46742 l_num_entries NUMBER;
46743 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
46744 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
46745 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
46746 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
46747 l_recog_line_1 NUMBER;
46748 l_recog_line_2 NUMBER;
46749
46750 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
46751 l_bflow_applied_to_amt NUMBER; -- 5132302
46752 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
46753
46754 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
46755
46756 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
46757 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
46758
46759 ---------------------------------------------------------------------------------------------------------------
46760
46761
46762 --
46763 -- bulk performance
46764 --
46765 l_balance_type_code VARCHAR2(1);
46766 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
46767 l_log_module VARCHAR2(240);
46768
46769 --
46770 -- Upgrade strategy
46771 --
46772 l_actual_upg_option VARCHAR2(1);
46773 l_enc_upg_option VARCHAR2(1);
46774
46775 --
46776 BEGIN
46777 --
46778 IF g_log_enabled THEN
46779 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_87';
46780 END IF;
46781 --
46782 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
46783
46784 trace
46785 (p_msg => 'BEGIN of AcctLineType_87'
46786 ,p_level => C_LEVEL_PROCEDURE
46787 ,p_module => l_log_module);
46788
46789 END IF;
46790 --
46791 l_component_type := 'AMB_JLT';
46792 l_component_code := 'INTERORG_PROFIT_OPM';
46793 l_component_type_code := 'S';
46794 l_component_appl_id := 707;
46795 l_amb_context_code := 'DEFAULT';
46796 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
46797 l_event_class_code := 'USER_DEFINE';
46798 l_event_type_code := 'UDIR_INTERORG_SHIP';
46799 l_line_definition_owner_code := 'S';
46800 l_line_definition_code := 'USER_DIR_INTERORG_SHIP';
46801 --
46802 l_balance_type_code := 'A';
46803 l_segment := NULL;
46804 l_ccid := NULL;
46805 l_adr_transaction_coa_id := NULL;
46806 l_adr_accounting_coa_id := NULL;
46807 l_adr_flexfield_segment_code := NULL;
46808 l_adr_flex_value_set_id := NULL;
46809 l_adr_value_type_code := NULL;
46810 l_adr_value_combination_id := NULL;
46811 l_adr_value_segment_code := NULL;
46812
46813 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
46814 l_bflow_class_code := ''; -- 4219869 Business Flow
46815 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
46816 l_budgetary_control_flag := 'N';
46817
46818 l_bflow_applied_to_amt_idx := NULL; -- 5132302
46819 l_bflow_applied_to_amt := NULL; -- 5132302
46820 l_entered_amt_idx := NULL; -- 4262811
46821 l_accted_amt_idx := NULL; -- 4262811
46822 l_acc_rev_flag := NULL; -- 4262811
46823 l_accrual_line_num := NULL; -- 4262811
46824 l_tmp_amt := NULL; -- 4262811
46825 --
46826
46827 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
46828 l_balance_type_code <> 'B' THEN
46829 IF NVL(p_source_24,9E125) = 34
46830 THEN
46831
46832 --
46833 XLA_AE_LINES_PKG.SetNewLine;
46834
46835 p_balance_type_code := l_balance_type_code;
46836 -- set the flag so later we will know whether the gain loss line needs to be created
46837
46838 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
46839 p_actual_flag :='A';
46840 END IF;
46841
46842 --
46843 -- bulk performance
46844 --
46845 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
46846 p_header_num => 0); -- 4262811
46847 --
46848 -- set accounting line options
46849 --
46850 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
46851 p_natural_side_code => 'D'
46852 , p_gain_or_loss_flag => 'N'
46853 , p_gl_transfer_mode_code => 'S'
46854 , p_acct_entry_type_code => 'A'
46855 , p_switch_side_flag => 'Y'
46856 , p_merge_duplicate_code => 'N'
46857 );
46858 --
46859 l_acc_rev_natural_side_code := 'C'; -- 4262811
46860 --
46861 --
46862 -- set accounting line type info
46863 --
46864 xla_ae_lines_pkg.SetAcctLineType
46865 (p_component_type => l_component_type
46866 ,p_event_type_code => l_event_type_code
46867 ,p_line_definition_owner_code => l_line_definition_owner_code
46868 ,p_line_definition_code => l_line_definition_code
46869 ,p_accounting_line_code => l_component_code
46870 ,p_accounting_line_type_code => l_component_type_code
46871 ,p_accounting_line_appl_id => l_component_appl_id
46872 ,p_amb_context_code => l_amb_context_code
46873 ,p_entity_code => l_entity_code
46874 ,p_event_class_code => l_event_class_code);
46875 --
46876 -- set accounting class
46877 --
46878 xla_ae_lines_pkg.SetAcctClass(
46879 p_accounting_class_code => 'INTERORG_PROFIT'
46880 , p_ae_header_id => l_ae_header_id
46881 );
46882
46883 --
46884 -- set rounding class
46885 --
46886 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
46887 'INTERORG_PROFIT';
46888
46889 --
46890 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
46891 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
46892 --
46893 -- bulk performance
46894 --
46895 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
46896
46897 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
46898 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
46899
46900 -- 4955764
46901 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
46902 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
46903
46904 -- 4458381 Public Sector Enh
46905
46906 --
46907 -- set accounting attributes for the line type
46908 --
46909 l_entered_amt_idx := 3;
46910 l_accted_amt_idx := 8;
46911 l_bflow_applied_to_amt_idx := NULL; -- 5132302
46912 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
46913 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
46914 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
46915 l_rec_acct_attrs.array_char_value(2) := p_source_12;
46916 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
46917 l_rec_acct_attrs.array_num_value(3) := p_source_18;
46918 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
46919 l_rec_acct_attrs.array_char_value(4) := p_source_15;
46920 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
46921 l_rec_acct_attrs.array_date_value(5) := p_source_19;
46922 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
46923 l_rec_acct_attrs.array_num_value(6) := p_source_20;
46924 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
46925 l_rec_acct_attrs.array_char_value(7) := p_source_21;
46926 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
46927 l_rec_acct_attrs.array_num_value(8) := p_source_22;
46928
46929 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
46930 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
46931
46932 ---------------------------------------------------------------------------------------------------------------
46933 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
46934 ---------------------------------------------------------------------------------------------------------------
46935 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
46936
46937 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
46938 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
46939
46940 IF xla_accounting_cache_pkg.GetValueChar
46941 (p_source_code => 'LEDGER_CATEGORY_CODE'
46942 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
46943 AND l_bflow_method_code = 'PRIOR_ENTRY'
46944 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
46945 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
46946 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
46947 )
46948 THEN
46949 xla_ae_lines_pkg.BflowUpgEntry
46950 (p_business_method_code => l_bflow_method_code
46951 ,p_business_class_code => l_bflow_class_code
46952 ,p_balance_type => l_balance_type_code);
46953 ELSE
46954 NULL;
46955 -- No business flow processing for business flow method of NONE.
46956 END IF;
46957
46958 --
46959 -- call analytical criteria
46960 --
46961
46962 --
46963 -- call description
46964 --
46965 -- No description or it is inherited.
46966 --
46967 -- call ADRs
46968 -- Bug 4922099
46969 --
46970 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
46971 (NVL(l_actual_upg_option, 'N') = 'O') OR
46972 (NVL(l_enc_upg_option, 'N') = 'O')
46973 )
46974 THEN
46975 NULL;
46976 --
46977 --
46978
46979 l_ccid := AcctDerRule_4(
46980 p_application_id => p_application_id
46981 , p_ae_header_id => l_ae_header_id
46982 , p_source_4 => p_source_4
46983 , x_transaction_coa_id => l_adr_transaction_coa_id
46984 , x_accounting_coa_id => l_adr_accounting_coa_id
46985 , x_value_type_code => l_adr_value_type_code
46986 , p_side => 'NA'
46987 );
46988
46989 xla_ae_lines_pkg.set_ccid(
46990 p_code_combination_id => l_ccid
46991 , p_value_type_code => l_adr_value_type_code
46992 , p_transaction_coa_id => l_adr_transaction_coa_id
46993 , p_accounting_coa_id => l_adr_accounting_coa_id
46994 , p_adr_code => 'CST_DEFAULT'
46995 , p_adr_type_code => 'S'
46996 , p_component_type => l_component_type
46997 , p_component_code => l_component_code
46998 , p_component_type_code => l_component_type_code
46999 , p_component_appl_id => l_component_appl_id
47000 , p_amb_context_code => l_amb_context_code
47001 , p_side => 'NA'
47002 );
47003
47004
47005 --
47006 --
47007 END IF;
47008 --
47009 -- Bug 4922099
47010 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
47011 (NVL(l_enc_upg_option, 'N') = 'O')
47012 ) AND
47013 (l_bflow_method_code = 'PRIOR_ENTRY')
47014 )
47015 THEN
47016 IF
47017 --
47018 1 = 2
47019 --
47020 THEN
47021 xla_accounting_err_pkg.build_message
47022 (p_appli_s_name => 'XLA'
47023 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
47024 ,p_token_1 => 'LINE_NUMBER'
47025 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
47026 ,p_token_2 => 'LINE_TYPE_NAME'
47027 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
47028 l_component_type
47029 ,l_component_code
47030 ,l_component_type_code
47031 ,l_component_appl_id
47032 ,l_amb_context_code
47033 ,l_entity_code
47034 ,l_event_class_code
47035 )
47036 ,p_token_3 => 'OWNER'
47037 ,p_value_3 => xla_lookups_pkg.get_meaning(
47038 p_lookup_type => 'XLA_OWNER_TYPE'
47039 ,p_lookup_code => l_component_type_code
47040 )
47041 ,p_token_4 => 'PRODUCT_NAME'
47042 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
47043 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
47044 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
47045 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
47046 ,p_ae_header_id => NULL
47047 );
47048
47049 IF (C_LEVEL_ERROR>= g_log_level) THEN
47050 trace
47051 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
47052 ,p_level => C_LEVEL_ERROR
47053 ,p_module => l_log_module);
47054 END IF;
47055 END IF;
47056 END IF;
47057 --
47058 --
47059 ------------------------------------------------------------------------------------------------
47060 -- 4219869 Business Flow
47061 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
47062 -- Prior Entry. Currently, the following code is always generated.
47063 ------------------------------------------------------------------------------------------------
47064 XLA_AE_LINES_PKG.ValidateCurrentLine;
47065
47066 ------------------------------------------------------------------------------------
47067 -- 4219869 Business Flow
47068 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
47069 ------------------------------------------------------------------------------------
47070 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
47071
47072 ----------------------------------------------------------------------------------
47073 -- 4219869 Business Flow
47074 -- Update journal entry status -- Need to generate this within IF <condition>
47075 ----------------------------------------------------------------------------------
47076 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
47077 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
47078 ,p_balance_type_code => l_balance_type_code
47079 );
47080
47081 -------------------------------------------------------------------------------------------
47082 -- 4262811 - Generate the Accrual Reversal lines
47083 -------------------------------------------------------------------------------------------
47084 BEGIN
47085 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
47086 (g_array_event(p_event_id).array_value_num('header_index'));
47087 IF l_acc_rev_flag IS NULL THEN
47088 l_acc_rev_flag := 'N';
47089 END IF;
47090 EXCEPTION
47091 WHEN OTHERS THEN
47092 l_acc_rev_flag := 'N';
47093 END;
47094 --
47095 IF (l_acc_rev_flag = 'Y') THEN
47096
47097 -- 4645092 ------------------------------------------------------------------------------
47098 -- To allow MPA report to determine if it should generate report process
47099 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
47100 ------------------------------------------------------------------------------------------
47101
47102 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
47103 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
47104 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
47105 -- call ADRs
47106 -- Bug 4922099
47107 --
47108 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
47109 (NVL(l_actual_upg_option, 'N') = 'O') OR
47110 (NVL(l_enc_upg_option, 'N') = 'O')
47111 )
47112 THEN
47113 NULL;
47114 --
47115 --
47116
47117 l_ccid := AcctDerRule_4(
47118 p_application_id => p_application_id
47119 , p_ae_header_id => l_ae_header_id
47120 , p_source_4 => p_source_4
47121 , x_transaction_coa_id => l_adr_transaction_coa_id
47122 , x_accounting_coa_id => l_adr_accounting_coa_id
47123 , x_value_type_code => l_adr_value_type_code
47124 , p_side => 'NA'
47125 );
47126
47127 xla_ae_lines_pkg.set_ccid(
47128 p_code_combination_id => l_ccid
47129 , p_value_type_code => l_adr_value_type_code
47130 , p_transaction_coa_id => l_adr_transaction_coa_id
47131 , p_accounting_coa_id => l_adr_accounting_coa_id
47132 , p_adr_code => 'CST_DEFAULT'
47133 , p_adr_type_code => 'S'
47134 , p_component_type => l_component_type
47135 , p_component_code => l_component_code
47136 , p_component_type_code => l_component_type_code
47137 , p_component_appl_id => l_component_appl_id
47138 , p_amb_context_code => l_amb_context_code
47139 , p_side => 'NA'
47140 );
47141
47142
47143 --
47144 --
47145 END IF;
47146
47147 --
47148 -- Update the line information that should be overwritten
47149 --
47150 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
47151 p_header_num => 1);
47152 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
47153
47154 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
47155
47156 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
47157 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
47158 END IF;
47159
47160 --
47161 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
47162 --
47163 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
47164 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
47165 ELSE
47166 ---------------------------------------------------------------------------------------------------
47167 -- 4262811a Switch Sign
47168 ---------------------------------------------------------------------------------------------------
47169 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
47170 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
47171 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
47172 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
47173 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
47174 -- 5132302
47175 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
47176 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
47177
47178 END IF;
47179
47180 -- 4955764
47181 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
47182 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
47183
47184
47185 XLA_AE_LINES_PKG.ValidateCurrentLine;
47186 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
47187
47188 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
47189 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
47190 ,p_balance_type_code => l_balance_type_code);
47191
47192 END IF;
47193
47194 -----------------------------------------------------------------------------------------
47195 -- 4262811 Multiperiod Accounting
47196 -----------------------------------------------------------------------------------------
47197 -- No MPA option is assigned.
47198
47199
47200 END IF;
47201 END IF;
47202 --
47203
47204 --
47205 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
47206 trace
47207 (p_msg => 'END of AcctLineType_87'
47208 ,p_level => C_LEVEL_PROCEDURE
47209 ,p_module => l_log_module);
47210 END IF;
47211 --
47212 EXCEPTION
47213 WHEN xla_exceptions_pkg.application_exception THEN
47214 RAISE;
47215 WHEN OTHERS THEN
47216 xla_exceptions_pkg.raise_message
47217 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_87');
47218 END AcctLineType_87;
47219 --
47220
47221 ---------------------------------------
47222 --
47223 -- PRIVATE FUNCTION
47224 -- AcctLineType_88
47225 --
47226 ---------------------------------------
47227 PROCEDURE AcctLineType_88 (
47228 p_application_id IN NUMBER
47229 ,p_event_id IN NUMBER
47230 ,p_calculate_acctd_flag IN VARCHAR2
47231 ,p_calculate_g_l_flag IN VARCHAR2
47232 ,p_actual_flag IN OUT VARCHAR2
47233 ,p_balance_type_code OUT VARCHAR2
47234 ,p_gain_or_loss_ref OUT VARCHAR2
47235
47236 --Cost Management Default Account
47237 , p_source_4 IN NUMBER
47238 --DISTRIBUTION_IDENTIFIER
47239 , p_source_11 IN NUMBER
47240 --Distribution Type
47241 , p_source_12 IN VARCHAR2
47242 , p_source_12_meaning IN VARCHAR2
47243 --Entered Currency Code
47244 , p_source_15 IN VARCHAR2
47245 --Entered Amount
47246 , p_source_18 IN NUMBER
47247 --Currency Conversion Date
47248 , p_source_19 IN DATE
47249 --Currency Conversion Rate
47250 , p_source_20 IN NUMBER
47251 --Currency Conversion Type
47252 , p_source_21 IN VARCHAR2
47253 --Accounted Amount
47254 , p_source_22 IN NUMBER
47255 --Accounting Line Type
47256 , p_source_24 IN NUMBER
47257 )
47258 IS
47259
47260 l_component_type VARCHAR2(80);
47261 l_component_code VARCHAR2(30);
47262 l_component_type_code VARCHAR2(1);
47263 l_component_appl_id INTEGER;
47264 l_amb_context_code VARCHAR2(30);
47265 l_entity_code VARCHAR2(30);
47266 l_event_class_code VARCHAR2(30);
47267 l_ae_header_id NUMBER;
47268 l_event_type_code VARCHAR2(30);
47269 l_line_definition_code VARCHAR2(30);
47270 l_line_definition_owner_code VARCHAR2(1);
47271 --
47272 -- adr variables
47273 l_segment VARCHAR2(30);
47274 l_ccid NUMBER;
47275 l_adr_transaction_coa_id NUMBER;
47276 l_adr_accounting_coa_id NUMBER;
47277 l_adr_flexfield_segment_code VARCHAR2(30);
47278 l_adr_flex_value_set_id NUMBER;
47279 l_adr_value_type_code VARCHAR2(30);
47280 l_adr_value_combination_id NUMBER;
47281 l_adr_value_segment_code VARCHAR2(30);
47282
47283 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
47284 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
47285 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
47286 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
47287
47288 -- 4262811 Variables ------------------------------------------------------------------------------------------
47289 l_entered_amt_idx NUMBER;
47290 l_accted_amt_idx NUMBER;
47291 l_acc_rev_flag VARCHAR2(1);
47292 l_accrual_line_num NUMBER;
47293 l_tmp_amt NUMBER;
47294 l_acc_rev_natural_side_code VARCHAR2(1);
47295
47296 l_num_entries NUMBER;
47297 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
47298 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
47299 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
47300 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
47301 l_recog_line_1 NUMBER;
47302 l_recog_line_2 NUMBER;
47303
47304 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
47305 l_bflow_applied_to_amt NUMBER; -- 5132302
47306 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
47307
47308 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
47309
47310 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
47311 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
47312
47313 ---------------------------------------------------------------------------------------------------------------
47314
47315
47316 --
47317 -- bulk performance
47318 --
47319 l_balance_type_code VARCHAR2(1);
47320 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
47321 l_log_module VARCHAR2(240);
47322
47323 --
47324 -- Upgrade strategy
47325 --
47326 l_actual_upg_option VARCHAR2(1);
47327 l_enc_upg_option VARCHAR2(1);
47328
47329 --
47330 BEGIN
47331 --
47332 IF g_log_enabled THEN
47333 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_88';
47334 END IF;
47335 --
47336 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
47337
47338 trace
47339 (p_msg => 'BEGIN of AcctLineType_88'
47340 ,p_level => C_LEVEL_PROCEDURE
47341 ,p_module => l_log_module);
47342
47343 END IF;
47344 --
47345 l_component_type := 'AMB_JLT';
47346 l_component_code := 'INTERORG_PROFIT_OPM';
47347 l_component_type_code := 'S';
47348 l_component_appl_id := 707;
47349 l_amb_context_code := 'DEFAULT';
47350 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
47351 l_event_class_code := 'FOB_RCPT_SENDER_RCPT';
47352 l_event_type_code := 'FOB_RCPT_SENDER_RCPT_ALL';
47353 l_line_definition_owner_code := 'S';
47354 l_line_definition_code := 'FOB_RCPT_SENDER_RCPT';
47355 --
47356 l_balance_type_code := 'A';
47357 l_segment := NULL;
47358 l_ccid := NULL;
47359 l_adr_transaction_coa_id := NULL;
47360 l_adr_accounting_coa_id := NULL;
47361 l_adr_flexfield_segment_code := NULL;
47362 l_adr_flex_value_set_id := NULL;
47363 l_adr_value_type_code := NULL;
47364 l_adr_value_combination_id := NULL;
47365 l_adr_value_segment_code := NULL;
47366
47367 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
47368 l_bflow_class_code := ''; -- 4219869 Business Flow
47369 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
47370 l_budgetary_control_flag := 'N';
47371
47372 l_bflow_applied_to_amt_idx := NULL; -- 5132302
47373 l_bflow_applied_to_amt := NULL; -- 5132302
47374 l_entered_amt_idx := NULL; -- 4262811
47375 l_accted_amt_idx := NULL; -- 4262811
47376 l_acc_rev_flag := NULL; -- 4262811
47377 l_accrual_line_num := NULL; -- 4262811
47378 l_tmp_amt := NULL; -- 4262811
47379 --
47380
47381 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
47382 l_balance_type_code <> 'B' THEN
47383 IF NVL(p_source_24,9E125) = 34
47384 THEN
47385
47386 --
47387 XLA_AE_LINES_PKG.SetNewLine;
47388
47389 p_balance_type_code := l_balance_type_code;
47390 -- set the flag so later we will know whether the gain loss line needs to be created
47391
47392 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
47393 p_actual_flag :='A';
47394 END IF;
47395
47396 --
47397 -- bulk performance
47398 --
47399 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
47400 p_header_num => 0); -- 4262811
47401 --
47402 -- set accounting line options
47403 --
47404 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
47405 p_natural_side_code => 'D'
47406 , p_gain_or_loss_flag => 'N'
47407 , p_gl_transfer_mode_code => 'S'
47408 , p_acct_entry_type_code => 'A'
47409 , p_switch_side_flag => 'Y'
47410 , p_merge_duplicate_code => 'N'
47411 );
47412 --
47413 l_acc_rev_natural_side_code := 'C'; -- 4262811
47414 --
47415 --
47416 -- set accounting line type info
47417 --
47418 xla_ae_lines_pkg.SetAcctLineType
47419 (p_component_type => l_component_type
47420 ,p_event_type_code => l_event_type_code
47421 ,p_line_definition_owner_code => l_line_definition_owner_code
47422 ,p_line_definition_code => l_line_definition_code
47423 ,p_accounting_line_code => l_component_code
47424 ,p_accounting_line_type_code => l_component_type_code
47425 ,p_accounting_line_appl_id => l_component_appl_id
47426 ,p_amb_context_code => l_amb_context_code
47427 ,p_entity_code => l_entity_code
47428 ,p_event_class_code => l_event_class_code);
47429 --
47430 -- set accounting class
47431 --
47432 xla_ae_lines_pkg.SetAcctClass(
47433 p_accounting_class_code => 'INTERORG_PROFIT'
47434 , p_ae_header_id => l_ae_header_id
47435 );
47436
47437 --
47438 -- set rounding class
47439 --
47440 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
47441 'INTERORG_PROFIT';
47442
47443 --
47444 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
47445 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
47446 --
47447 -- bulk performance
47448 --
47449 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
47450
47451 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
47452 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
47453
47454 -- 4955764
47455 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
47456 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
47457
47458 -- 4458381 Public Sector Enh
47459
47460 --
47461 -- set accounting attributes for the line type
47462 --
47463 l_entered_amt_idx := 3;
47464 l_accted_amt_idx := 8;
47465 l_bflow_applied_to_amt_idx := NULL; -- 5132302
47466 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
47467 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
47468 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
47469 l_rec_acct_attrs.array_char_value(2) := p_source_12;
47470 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
47471 l_rec_acct_attrs.array_num_value(3) := p_source_18;
47472 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
47473 l_rec_acct_attrs.array_char_value(4) := p_source_15;
47474 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
47475 l_rec_acct_attrs.array_date_value(5) := p_source_19;
47476 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
47477 l_rec_acct_attrs.array_num_value(6) := p_source_20;
47478 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
47479 l_rec_acct_attrs.array_char_value(7) := p_source_21;
47480 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
47481 l_rec_acct_attrs.array_num_value(8) := p_source_22;
47482
47483 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
47484 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
47485
47486 ---------------------------------------------------------------------------------------------------------------
47487 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
47488 ---------------------------------------------------------------------------------------------------------------
47489 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
47490
47491 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
47492 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
47493
47494 IF xla_accounting_cache_pkg.GetValueChar
47495 (p_source_code => 'LEDGER_CATEGORY_CODE'
47496 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
47497 AND l_bflow_method_code = 'PRIOR_ENTRY'
47498 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
47499 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
47500 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
47501 )
47502 THEN
47503 xla_ae_lines_pkg.BflowUpgEntry
47504 (p_business_method_code => l_bflow_method_code
47505 ,p_business_class_code => l_bflow_class_code
47506 ,p_balance_type => l_balance_type_code);
47507 ELSE
47508 NULL;
47509 -- No business flow processing for business flow method of NONE.
47510 END IF;
47511
47512 --
47513 -- call analytical criteria
47514 --
47515
47516 --
47517 -- call description
47518 --
47519 -- No description or it is inherited.
47520 --
47521 -- call ADRs
47522 -- Bug 4922099
47523 --
47524 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
47525 (NVL(l_actual_upg_option, 'N') = 'O') OR
47526 (NVL(l_enc_upg_option, 'N') = 'O')
47527 )
47528 THEN
47529 NULL;
47530 --
47531 --
47532
47533 l_ccid := AcctDerRule_4(
47534 p_application_id => p_application_id
47535 , p_ae_header_id => l_ae_header_id
47536 , p_source_4 => p_source_4
47537 , x_transaction_coa_id => l_adr_transaction_coa_id
47538 , x_accounting_coa_id => l_adr_accounting_coa_id
47539 , x_value_type_code => l_adr_value_type_code
47540 , p_side => 'NA'
47541 );
47542
47543 xla_ae_lines_pkg.set_ccid(
47544 p_code_combination_id => l_ccid
47545 , p_value_type_code => l_adr_value_type_code
47546 , p_transaction_coa_id => l_adr_transaction_coa_id
47547 , p_accounting_coa_id => l_adr_accounting_coa_id
47548 , p_adr_code => 'CST_DEFAULT'
47549 , p_adr_type_code => 'S'
47550 , p_component_type => l_component_type
47551 , p_component_code => l_component_code
47552 , p_component_type_code => l_component_type_code
47553 , p_component_appl_id => l_component_appl_id
47554 , p_amb_context_code => l_amb_context_code
47555 , p_side => 'NA'
47556 );
47557
47558
47559 --
47560 --
47561 END IF;
47562 --
47563 -- Bug 4922099
47564 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
47565 (NVL(l_enc_upg_option, 'N') = 'O')
47566 ) AND
47567 (l_bflow_method_code = 'PRIOR_ENTRY')
47568 )
47569 THEN
47570 IF
47571 --
47572 1 = 2
47573 --
47574 THEN
47575 xla_accounting_err_pkg.build_message
47576 (p_appli_s_name => 'XLA'
47577 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
47578 ,p_token_1 => 'LINE_NUMBER'
47579 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
47580 ,p_token_2 => 'LINE_TYPE_NAME'
47581 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
47582 l_component_type
47583 ,l_component_code
47584 ,l_component_type_code
47585 ,l_component_appl_id
47586 ,l_amb_context_code
47587 ,l_entity_code
47588 ,l_event_class_code
47589 )
47590 ,p_token_3 => 'OWNER'
47591 ,p_value_3 => xla_lookups_pkg.get_meaning(
47592 p_lookup_type => 'XLA_OWNER_TYPE'
47593 ,p_lookup_code => l_component_type_code
47594 )
47595 ,p_token_4 => 'PRODUCT_NAME'
47596 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
47597 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
47598 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
47599 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
47600 ,p_ae_header_id => NULL
47601 );
47602
47603 IF (C_LEVEL_ERROR>= g_log_level) THEN
47604 trace
47605 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
47606 ,p_level => C_LEVEL_ERROR
47607 ,p_module => l_log_module);
47608 END IF;
47609 END IF;
47610 END IF;
47611 --
47612 --
47613 ------------------------------------------------------------------------------------------------
47614 -- 4219869 Business Flow
47615 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
47616 -- Prior Entry. Currently, the following code is always generated.
47617 ------------------------------------------------------------------------------------------------
47618 XLA_AE_LINES_PKG.ValidateCurrentLine;
47619
47620 ------------------------------------------------------------------------------------
47621 -- 4219869 Business Flow
47622 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
47623 ------------------------------------------------------------------------------------
47624 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
47625
47626 ----------------------------------------------------------------------------------
47627 -- 4219869 Business Flow
47628 -- Update journal entry status -- Need to generate this within IF <condition>
47629 ----------------------------------------------------------------------------------
47630 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
47631 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
47632 ,p_balance_type_code => l_balance_type_code
47633 );
47634
47635 -------------------------------------------------------------------------------------------
47636 -- 4262811 - Generate the Accrual Reversal lines
47637 -------------------------------------------------------------------------------------------
47638 BEGIN
47639 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
47640 (g_array_event(p_event_id).array_value_num('header_index'));
47641 IF l_acc_rev_flag IS NULL THEN
47642 l_acc_rev_flag := 'N';
47643 END IF;
47644 EXCEPTION
47645 WHEN OTHERS THEN
47646 l_acc_rev_flag := 'N';
47647 END;
47648 --
47649 IF (l_acc_rev_flag = 'Y') THEN
47650
47651 -- 4645092 ------------------------------------------------------------------------------
47652 -- To allow MPA report to determine if it should generate report process
47653 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
47654 ------------------------------------------------------------------------------------------
47655
47656 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
47657 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
47658 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
47659 -- call ADRs
47660 -- Bug 4922099
47661 --
47662 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
47663 (NVL(l_actual_upg_option, 'N') = 'O') OR
47664 (NVL(l_enc_upg_option, 'N') = 'O')
47665 )
47666 THEN
47667 NULL;
47668 --
47669 --
47670
47671 l_ccid := AcctDerRule_4(
47672 p_application_id => p_application_id
47673 , p_ae_header_id => l_ae_header_id
47674 , p_source_4 => p_source_4
47675 , x_transaction_coa_id => l_adr_transaction_coa_id
47676 , x_accounting_coa_id => l_adr_accounting_coa_id
47677 , x_value_type_code => l_adr_value_type_code
47678 , p_side => 'NA'
47679 );
47680
47681 xla_ae_lines_pkg.set_ccid(
47682 p_code_combination_id => l_ccid
47683 , p_value_type_code => l_adr_value_type_code
47684 , p_transaction_coa_id => l_adr_transaction_coa_id
47685 , p_accounting_coa_id => l_adr_accounting_coa_id
47686 , p_adr_code => 'CST_DEFAULT'
47687 , p_adr_type_code => 'S'
47688 , p_component_type => l_component_type
47689 , p_component_code => l_component_code
47690 , p_component_type_code => l_component_type_code
47691 , p_component_appl_id => l_component_appl_id
47692 , p_amb_context_code => l_amb_context_code
47693 , p_side => 'NA'
47694 );
47695
47696
47697 --
47698 --
47699 END IF;
47700
47701 --
47702 -- Update the line information that should be overwritten
47703 --
47704 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
47705 p_header_num => 1);
47706 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
47707
47708 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
47709
47710 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
47711 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
47712 END IF;
47713
47714 --
47715 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
47716 --
47717 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
47718 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
47719 ELSE
47720 ---------------------------------------------------------------------------------------------------
47721 -- 4262811a Switch Sign
47722 ---------------------------------------------------------------------------------------------------
47723 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
47724 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
47725 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
47726 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
47727 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
47728 -- 5132302
47729 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
47730 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
47731
47732 END IF;
47733
47734 -- 4955764
47735 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
47736 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
47737
47738
47739 XLA_AE_LINES_PKG.ValidateCurrentLine;
47740 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
47741
47742 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
47743 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
47744 ,p_balance_type_code => l_balance_type_code);
47745
47746 END IF;
47747
47748 -----------------------------------------------------------------------------------------
47749 -- 4262811 Multiperiod Accounting
47750 -----------------------------------------------------------------------------------------
47751 -- No MPA option is assigned.
47752
47753
47754 END IF;
47755 END IF;
47756 --
47757
47758 --
47759 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
47760 trace
47761 (p_msg => 'END of AcctLineType_88'
47762 ,p_level => C_LEVEL_PROCEDURE
47763 ,p_module => l_log_module);
47764 END IF;
47765 --
47766 EXCEPTION
47767 WHEN xla_exceptions_pkg.application_exception THEN
47768 RAISE;
47769 WHEN OTHERS THEN
47770 xla_exceptions_pkg.raise_message
47771 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_88');
47772 END AcctLineType_88;
47773 --
47774
47775 ---------------------------------------
47776 --
47777 -- PRIVATE FUNCTION
47778 -- AcctLineType_89
47779 --
47780 ---------------------------------------
47781 PROCEDURE AcctLineType_89 (
47782 p_application_id IN NUMBER
47783 ,p_event_id IN NUMBER
47784 ,p_calculate_acctd_flag IN VARCHAR2
47785 ,p_calculate_g_l_flag IN VARCHAR2
47786 ,p_actual_flag IN OUT VARCHAR2
47787 ,p_balance_type_code OUT VARCHAR2
47788 ,p_gain_or_loss_ref OUT VARCHAR2
47789
47790 --Cost Management Default Account
47791 , p_source_4 IN NUMBER
47792 --DISTRIBUTION_IDENTIFIER
47793 , p_source_11 IN NUMBER
47794 --Distribution Type
47795 , p_source_12 IN VARCHAR2
47796 , p_source_12_meaning IN VARCHAR2
47797 --Entered Currency Code
47798 , p_source_15 IN VARCHAR2
47799 --Entered Amount
47800 , p_source_18 IN NUMBER
47801 --Currency Conversion Date
47802 , p_source_19 IN DATE
47803 --Currency Conversion Rate
47804 , p_source_20 IN NUMBER
47805 --Currency Conversion Type
47806 , p_source_21 IN VARCHAR2
47807 --Accounted Amount
47808 , p_source_22 IN NUMBER
47809 --Accounting Line Type
47810 , p_source_24 IN NUMBER
47811 )
47812 IS
47813
47814 l_component_type VARCHAR2(80);
47815 l_component_code VARCHAR2(30);
47816 l_component_type_code VARCHAR2(1);
47817 l_component_appl_id INTEGER;
47818 l_amb_context_code VARCHAR2(30);
47819 l_entity_code VARCHAR2(30);
47820 l_event_class_code VARCHAR2(30);
47821 l_ae_header_id NUMBER;
47822 l_event_type_code VARCHAR2(30);
47823 l_line_definition_code VARCHAR2(30);
47824 l_line_definition_owner_code VARCHAR2(1);
47825 --
47826 -- adr variables
47827 l_segment VARCHAR2(30);
47828 l_ccid NUMBER;
47829 l_adr_transaction_coa_id NUMBER;
47830 l_adr_accounting_coa_id NUMBER;
47831 l_adr_flexfield_segment_code VARCHAR2(30);
47832 l_adr_flex_value_set_id NUMBER;
47833 l_adr_value_type_code VARCHAR2(30);
47834 l_adr_value_combination_id NUMBER;
47835 l_adr_value_segment_code VARCHAR2(30);
47836
47837 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
47838 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
47839 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
47840 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
47841
47842 -- 4262811 Variables ------------------------------------------------------------------------------------------
47843 l_entered_amt_idx NUMBER;
47844 l_accted_amt_idx NUMBER;
47845 l_acc_rev_flag VARCHAR2(1);
47846 l_accrual_line_num NUMBER;
47847 l_tmp_amt NUMBER;
47848 l_acc_rev_natural_side_code VARCHAR2(1);
47849
47850 l_num_entries NUMBER;
47851 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
47852 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
47853 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
47854 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
47855 l_recog_line_1 NUMBER;
47856 l_recog_line_2 NUMBER;
47857
47858 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
47859 l_bflow_applied_to_amt NUMBER; -- 5132302
47860 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
47861
47862 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
47863
47864 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
47865 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
47866
47867 ---------------------------------------------------------------------------------------------------------------
47868
47869
47870 --
47871 -- bulk performance
47872 --
47873 l_balance_type_code VARCHAR2(1);
47874 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
47875 l_log_module VARCHAR2(240);
47876
47877 --
47878 -- Upgrade strategy
47879 --
47880 l_actual_upg_option VARCHAR2(1);
47881 l_enc_upg_option VARCHAR2(1);
47882
47883 --
47884 BEGIN
47885 --
47886 IF g_log_enabled THEN
47887 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_89';
47888 END IF;
47889 --
47890 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
47891
47892 trace
47893 (p_msg => 'BEGIN of AcctLineType_89'
47894 ,p_level => C_LEVEL_PROCEDURE
47895 ,p_module => l_log_module);
47896
47897 END IF;
47898 --
47899 l_component_type := 'AMB_JLT';
47900 l_component_code := 'INTERORG_PROFIT_OPM';
47901 l_component_type_code := 'S';
47902 l_component_appl_id := 707;
47903 l_amb_context_code := 'DEFAULT';
47904 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
47905 l_event_class_code := 'USER_DEFINE';
47906 l_event_type_code := 'UFOB_SHIP_SENDER_SHIP_TP';
47907 l_line_definition_owner_code := 'S';
47908 l_line_definition_code := 'USER_FOB_SHIP_SENDER_SHIP_TP';
47909 --
47910 l_balance_type_code := 'A';
47911 l_segment := NULL;
47912 l_ccid := NULL;
47913 l_adr_transaction_coa_id := NULL;
47914 l_adr_accounting_coa_id := NULL;
47915 l_adr_flexfield_segment_code := NULL;
47916 l_adr_flex_value_set_id := NULL;
47917 l_adr_value_type_code := NULL;
47918 l_adr_value_combination_id := NULL;
47919 l_adr_value_segment_code := NULL;
47920
47921 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
47922 l_bflow_class_code := ''; -- 4219869 Business Flow
47923 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
47924 l_budgetary_control_flag := 'N';
47925
47926 l_bflow_applied_to_amt_idx := NULL; -- 5132302
47927 l_bflow_applied_to_amt := NULL; -- 5132302
47928 l_entered_amt_idx := NULL; -- 4262811
47929 l_accted_amt_idx := NULL; -- 4262811
47930 l_acc_rev_flag := NULL; -- 4262811
47931 l_accrual_line_num := NULL; -- 4262811
47932 l_tmp_amt := NULL; -- 4262811
47933 --
47934
47935 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
47936 l_balance_type_code <> 'B' THEN
47937 IF NVL(p_source_24,9E125) = 34
47938 THEN
47939
47940 --
47941 XLA_AE_LINES_PKG.SetNewLine;
47942
47943 p_balance_type_code := l_balance_type_code;
47944 -- set the flag so later we will know whether the gain loss line needs to be created
47945
47946 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
47947 p_actual_flag :='A';
47948 END IF;
47949
47950 --
47951 -- bulk performance
47952 --
47953 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
47954 p_header_num => 0); -- 4262811
47955 --
47956 -- set accounting line options
47957 --
47958 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
47959 p_natural_side_code => 'D'
47960 , p_gain_or_loss_flag => 'N'
47961 , p_gl_transfer_mode_code => 'S'
47962 , p_acct_entry_type_code => 'A'
47963 , p_switch_side_flag => 'Y'
47964 , p_merge_duplicate_code => 'N'
47965 );
47966 --
47967 l_acc_rev_natural_side_code := 'C'; -- 4262811
47968 --
47969 --
47970 -- set accounting line type info
47971 --
47972 xla_ae_lines_pkg.SetAcctLineType
47973 (p_component_type => l_component_type
47974 ,p_event_type_code => l_event_type_code
47975 ,p_line_definition_owner_code => l_line_definition_owner_code
47976 ,p_line_definition_code => l_line_definition_code
47977 ,p_accounting_line_code => l_component_code
47978 ,p_accounting_line_type_code => l_component_type_code
47979 ,p_accounting_line_appl_id => l_component_appl_id
47980 ,p_amb_context_code => l_amb_context_code
47981 ,p_entity_code => l_entity_code
47982 ,p_event_class_code => l_event_class_code);
47983 --
47984 -- set accounting class
47985 --
47986 xla_ae_lines_pkg.SetAcctClass(
47987 p_accounting_class_code => 'INTERORG_PROFIT'
47988 , p_ae_header_id => l_ae_header_id
47989 );
47990
47991 --
47992 -- set rounding class
47993 --
47994 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
47995 'INTERORG_PROFIT';
47996
47997 --
47998 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
47999 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
48000 --
48001 -- bulk performance
48002 --
48003 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
48004
48005 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
48006 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
48007
48008 -- 4955764
48009 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
48010 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
48011
48012 -- 4458381 Public Sector Enh
48013
48014 --
48015 -- set accounting attributes for the line type
48016 --
48017 l_entered_amt_idx := 3;
48018 l_accted_amt_idx := 8;
48019 l_bflow_applied_to_amt_idx := NULL; -- 5132302
48020 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
48021 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
48022 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
48023 l_rec_acct_attrs.array_char_value(2) := p_source_12;
48024 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
48025 l_rec_acct_attrs.array_num_value(3) := p_source_18;
48026 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
48027 l_rec_acct_attrs.array_char_value(4) := p_source_15;
48028 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
48029 l_rec_acct_attrs.array_date_value(5) := p_source_19;
48030 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
48031 l_rec_acct_attrs.array_num_value(6) := p_source_20;
48032 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
48033 l_rec_acct_attrs.array_char_value(7) := p_source_21;
48034 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
48035 l_rec_acct_attrs.array_num_value(8) := p_source_22;
48036
48037 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
48038 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
48039
48040 ---------------------------------------------------------------------------------------------------------------
48041 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
48042 ---------------------------------------------------------------------------------------------------------------
48043 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
48044
48045 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
48046 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
48047
48048 IF xla_accounting_cache_pkg.GetValueChar
48049 (p_source_code => 'LEDGER_CATEGORY_CODE'
48050 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
48051 AND l_bflow_method_code = 'PRIOR_ENTRY'
48052 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
48053 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
48054 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
48055 )
48056 THEN
48057 xla_ae_lines_pkg.BflowUpgEntry
48058 (p_business_method_code => l_bflow_method_code
48059 ,p_business_class_code => l_bflow_class_code
48060 ,p_balance_type => l_balance_type_code);
48061 ELSE
48062 NULL;
48063 -- No business flow processing for business flow method of NONE.
48064 END IF;
48065
48066 --
48067 -- call analytical criteria
48068 --
48069
48070 --
48071 -- call description
48072 --
48073 -- No description or it is inherited.
48074 --
48075 -- call ADRs
48076 -- Bug 4922099
48077 --
48078 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
48079 (NVL(l_actual_upg_option, 'N') = 'O') OR
48080 (NVL(l_enc_upg_option, 'N') = 'O')
48081 )
48082 THEN
48083 NULL;
48084 --
48085 --
48086
48087 l_ccid := AcctDerRule_4(
48088 p_application_id => p_application_id
48089 , p_ae_header_id => l_ae_header_id
48090 , p_source_4 => p_source_4
48091 , x_transaction_coa_id => l_adr_transaction_coa_id
48092 , x_accounting_coa_id => l_adr_accounting_coa_id
48093 , x_value_type_code => l_adr_value_type_code
48094 , p_side => 'NA'
48095 );
48096
48097 xla_ae_lines_pkg.set_ccid(
48098 p_code_combination_id => l_ccid
48099 , p_value_type_code => l_adr_value_type_code
48100 , p_transaction_coa_id => l_adr_transaction_coa_id
48101 , p_accounting_coa_id => l_adr_accounting_coa_id
48102 , p_adr_code => 'CST_DEFAULT'
48103 , p_adr_type_code => 'S'
48104 , p_component_type => l_component_type
48105 , p_component_code => l_component_code
48106 , p_component_type_code => l_component_type_code
48107 , p_component_appl_id => l_component_appl_id
48108 , p_amb_context_code => l_amb_context_code
48109 , p_side => 'NA'
48110 );
48111
48112
48113 --
48114 --
48115 END IF;
48116 --
48117 -- Bug 4922099
48118 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
48119 (NVL(l_enc_upg_option, 'N') = 'O')
48120 ) AND
48121 (l_bflow_method_code = 'PRIOR_ENTRY')
48122 )
48123 THEN
48124 IF
48125 --
48126 1 = 2
48127 --
48128 THEN
48129 xla_accounting_err_pkg.build_message
48130 (p_appli_s_name => 'XLA'
48131 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
48132 ,p_token_1 => 'LINE_NUMBER'
48133 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
48134 ,p_token_2 => 'LINE_TYPE_NAME'
48135 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
48136 l_component_type
48137 ,l_component_code
48138 ,l_component_type_code
48139 ,l_component_appl_id
48140 ,l_amb_context_code
48141 ,l_entity_code
48142 ,l_event_class_code
48143 )
48144 ,p_token_3 => 'OWNER'
48145 ,p_value_3 => xla_lookups_pkg.get_meaning(
48146 p_lookup_type => 'XLA_OWNER_TYPE'
48147 ,p_lookup_code => l_component_type_code
48148 )
48149 ,p_token_4 => 'PRODUCT_NAME'
48150 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
48151 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
48152 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
48153 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
48154 ,p_ae_header_id => NULL
48155 );
48156
48157 IF (C_LEVEL_ERROR>= g_log_level) THEN
48158 trace
48159 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
48160 ,p_level => C_LEVEL_ERROR
48161 ,p_module => l_log_module);
48162 END IF;
48163 END IF;
48164 END IF;
48165 --
48166 --
48167 ------------------------------------------------------------------------------------------------
48168 -- 4219869 Business Flow
48169 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
48170 -- Prior Entry. Currently, the following code is always generated.
48171 ------------------------------------------------------------------------------------------------
48172 XLA_AE_LINES_PKG.ValidateCurrentLine;
48173
48174 ------------------------------------------------------------------------------------
48175 -- 4219869 Business Flow
48176 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
48177 ------------------------------------------------------------------------------------
48178 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
48179
48180 ----------------------------------------------------------------------------------
48181 -- 4219869 Business Flow
48182 -- Update journal entry status -- Need to generate this within IF <condition>
48183 ----------------------------------------------------------------------------------
48184 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
48185 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
48186 ,p_balance_type_code => l_balance_type_code
48187 );
48188
48189 -------------------------------------------------------------------------------------------
48190 -- 4262811 - Generate the Accrual Reversal lines
48191 -------------------------------------------------------------------------------------------
48192 BEGIN
48193 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
48194 (g_array_event(p_event_id).array_value_num('header_index'));
48195 IF l_acc_rev_flag IS NULL THEN
48196 l_acc_rev_flag := 'N';
48197 END IF;
48198 EXCEPTION
48199 WHEN OTHERS THEN
48200 l_acc_rev_flag := 'N';
48201 END;
48202 --
48203 IF (l_acc_rev_flag = 'Y') THEN
48204
48205 -- 4645092 ------------------------------------------------------------------------------
48206 -- To allow MPA report to determine if it should generate report process
48207 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
48208 ------------------------------------------------------------------------------------------
48209
48210 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
48211 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
48212 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
48213 -- call ADRs
48214 -- Bug 4922099
48215 --
48216 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
48217 (NVL(l_actual_upg_option, 'N') = 'O') OR
48218 (NVL(l_enc_upg_option, 'N') = 'O')
48219 )
48220 THEN
48221 NULL;
48222 --
48223 --
48224
48225 l_ccid := AcctDerRule_4(
48226 p_application_id => p_application_id
48227 , p_ae_header_id => l_ae_header_id
48228 , p_source_4 => p_source_4
48229 , x_transaction_coa_id => l_adr_transaction_coa_id
48230 , x_accounting_coa_id => l_adr_accounting_coa_id
48231 , x_value_type_code => l_adr_value_type_code
48232 , p_side => 'NA'
48233 );
48234
48235 xla_ae_lines_pkg.set_ccid(
48236 p_code_combination_id => l_ccid
48237 , p_value_type_code => l_adr_value_type_code
48238 , p_transaction_coa_id => l_adr_transaction_coa_id
48239 , p_accounting_coa_id => l_adr_accounting_coa_id
48240 , p_adr_code => 'CST_DEFAULT'
48241 , p_adr_type_code => 'S'
48242 , p_component_type => l_component_type
48243 , p_component_code => l_component_code
48244 , p_component_type_code => l_component_type_code
48245 , p_component_appl_id => l_component_appl_id
48246 , p_amb_context_code => l_amb_context_code
48247 , p_side => 'NA'
48248 );
48249
48250
48251 --
48252 --
48253 END IF;
48254
48255 --
48256 -- Update the line information that should be overwritten
48257 --
48258 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
48259 p_header_num => 1);
48260 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
48261
48262 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
48263
48264 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
48265 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
48266 END IF;
48267
48268 --
48269 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
48270 --
48271 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
48272 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
48273 ELSE
48274 ---------------------------------------------------------------------------------------------------
48275 -- 4262811a Switch Sign
48276 ---------------------------------------------------------------------------------------------------
48277 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
48278 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
48279 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
48280 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
48281 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
48282 -- 5132302
48283 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
48284 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
48285
48286 END IF;
48287
48288 -- 4955764
48289 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
48290 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
48291
48292
48293 XLA_AE_LINES_PKG.ValidateCurrentLine;
48294 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
48295
48296 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
48297 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
48298 ,p_balance_type_code => l_balance_type_code);
48299
48300 END IF;
48301
48302 -----------------------------------------------------------------------------------------
48303 -- 4262811 Multiperiod Accounting
48304 -----------------------------------------------------------------------------------------
48305 -- No MPA option is assigned.
48306
48307
48308 END IF;
48309 END IF;
48310 --
48311
48312 --
48313 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
48314 trace
48315 (p_msg => 'END of AcctLineType_89'
48316 ,p_level => C_LEVEL_PROCEDURE
48317 ,p_module => l_log_module);
48318 END IF;
48319 --
48320 EXCEPTION
48321 WHEN xla_exceptions_pkg.application_exception THEN
48322 RAISE;
48323 WHEN OTHERS THEN
48324 xla_exceptions_pkg.raise_message
48325 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_89');
48326 END AcctLineType_89;
48327 --
48328
48329 ---------------------------------------
48330 --
48331 -- PRIVATE FUNCTION
48332 -- AcctLineType_90
48333 --
48334 ---------------------------------------
48335 PROCEDURE AcctLineType_90 (
48336 p_application_id IN NUMBER
48337 ,p_event_id IN NUMBER
48338 ,p_calculate_acctd_flag IN VARCHAR2
48339 ,p_calculate_g_l_flag IN VARCHAR2
48340 ,p_actual_flag IN OUT VARCHAR2
48341 ,p_balance_type_code OUT VARCHAR2
48342 ,p_gain_or_loss_ref OUT VARCHAR2
48343
48344 --Cost Management Default Account
48345 , p_source_4 IN NUMBER
48346 --DISTRIBUTION_IDENTIFIER
48347 , p_source_11 IN NUMBER
48348 --Distribution Type
48349 , p_source_12 IN VARCHAR2
48350 , p_source_12_meaning IN VARCHAR2
48351 --Entered Currency Code
48352 , p_source_15 IN VARCHAR2
48353 --Entered Amount
48354 , p_source_18 IN NUMBER
48355 --Currency Conversion Date
48356 , p_source_19 IN DATE
48357 --Currency Conversion Rate
48358 , p_source_20 IN NUMBER
48359 --Currency Conversion Type
48360 , p_source_21 IN VARCHAR2
48361 --Accounted Amount
48362 , p_source_22 IN NUMBER
48363 --Accounting Line Type
48364 , p_source_24 IN NUMBER
48365 )
48366 IS
48367
48368 l_component_type VARCHAR2(80);
48369 l_component_code VARCHAR2(30);
48370 l_component_type_code VARCHAR2(1);
48371 l_component_appl_id INTEGER;
48372 l_amb_context_code VARCHAR2(30);
48373 l_entity_code VARCHAR2(30);
48374 l_event_class_code VARCHAR2(30);
48375 l_ae_header_id NUMBER;
48376 l_event_type_code VARCHAR2(30);
48377 l_line_definition_code VARCHAR2(30);
48378 l_line_definition_owner_code VARCHAR2(1);
48379 --
48380 -- adr variables
48381 l_segment VARCHAR2(30);
48382 l_ccid NUMBER;
48383 l_adr_transaction_coa_id NUMBER;
48384 l_adr_accounting_coa_id NUMBER;
48385 l_adr_flexfield_segment_code VARCHAR2(30);
48386 l_adr_flex_value_set_id NUMBER;
48387 l_adr_value_type_code VARCHAR2(30);
48388 l_adr_value_combination_id NUMBER;
48389 l_adr_value_segment_code VARCHAR2(30);
48390
48391 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
48392 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
48393 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
48394 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
48395
48396 -- 4262811 Variables ------------------------------------------------------------------------------------------
48397 l_entered_amt_idx NUMBER;
48398 l_accted_amt_idx NUMBER;
48399 l_acc_rev_flag VARCHAR2(1);
48400 l_accrual_line_num NUMBER;
48401 l_tmp_amt NUMBER;
48402 l_acc_rev_natural_side_code VARCHAR2(1);
48403
48404 l_num_entries NUMBER;
48405 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
48406 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
48407 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
48408 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
48409 l_recog_line_1 NUMBER;
48410 l_recog_line_2 NUMBER;
48411
48412 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
48413 l_bflow_applied_to_amt NUMBER; -- 5132302
48414 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
48415
48416 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
48417
48418 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
48419 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
48420
48421 ---------------------------------------------------------------------------------------------------------------
48422
48423
48424 --
48425 -- bulk performance
48426 --
48427 l_balance_type_code VARCHAR2(1);
48428 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
48429 l_log_module VARCHAR2(240);
48430
48431 --
48432 -- Upgrade strategy
48433 --
48434 l_actual_upg_option VARCHAR2(1);
48435 l_enc_upg_option VARCHAR2(1);
48436
48437 --
48438 BEGIN
48439 --
48440 IF g_log_enabled THEN
48441 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_90';
48442 END IF;
48443 --
48444 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
48445
48446 trace
48447 (p_msg => 'BEGIN of AcctLineType_90'
48448 ,p_level => C_LEVEL_PROCEDURE
48449 ,p_module => l_log_module);
48450
48451 END IF;
48452 --
48453 l_component_type := 'AMB_JLT';
48454 l_component_code := 'INTERORG_PROFIT_OPM';
48455 l_component_type_code := 'S';
48456 l_component_appl_id := 707;
48457 l_amb_context_code := 'DEFAULT';
48458 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
48459 l_event_class_code := 'USER_DEFINE';
48460 l_event_type_code := 'UFOB_SHIP_SENDER_SHIP_NO_TP';
48461 l_line_definition_owner_code := 'S';
48462 l_line_definition_code := 'USER_FOB_SHIP_SENDER_SHIP_NOTP';
48463 --
48464 l_balance_type_code := 'A';
48465 l_segment := NULL;
48466 l_ccid := NULL;
48467 l_adr_transaction_coa_id := NULL;
48468 l_adr_accounting_coa_id := NULL;
48469 l_adr_flexfield_segment_code := NULL;
48470 l_adr_flex_value_set_id := NULL;
48471 l_adr_value_type_code := NULL;
48472 l_adr_value_combination_id := NULL;
48473 l_adr_value_segment_code := NULL;
48474
48475 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
48476 l_bflow_class_code := ''; -- 4219869 Business Flow
48477 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
48478 l_budgetary_control_flag := 'N';
48479
48480 l_bflow_applied_to_amt_idx := NULL; -- 5132302
48481 l_bflow_applied_to_amt := NULL; -- 5132302
48482 l_entered_amt_idx := NULL; -- 4262811
48483 l_accted_amt_idx := NULL; -- 4262811
48484 l_acc_rev_flag := NULL; -- 4262811
48485 l_accrual_line_num := NULL; -- 4262811
48486 l_tmp_amt := NULL; -- 4262811
48487 --
48488
48489 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
48490 l_balance_type_code <> 'B' THEN
48491 IF NVL(p_source_24,9E125) = 34
48492 THEN
48493
48494 --
48495 XLA_AE_LINES_PKG.SetNewLine;
48496
48497 p_balance_type_code := l_balance_type_code;
48498 -- set the flag so later we will know whether the gain loss line needs to be created
48499
48500 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
48501 p_actual_flag :='A';
48502 END IF;
48503
48504 --
48505 -- bulk performance
48506 --
48507 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
48508 p_header_num => 0); -- 4262811
48509 --
48510 -- set accounting line options
48511 --
48512 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
48513 p_natural_side_code => 'D'
48514 , p_gain_or_loss_flag => 'N'
48515 , p_gl_transfer_mode_code => 'S'
48516 , p_acct_entry_type_code => 'A'
48517 , p_switch_side_flag => 'Y'
48518 , p_merge_duplicate_code => 'N'
48519 );
48520 --
48521 l_acc_rev_natural_side_code := 'C'; -- 4262811
48522 --
48523 --
48524 -- set accounting line type info
48525 --
48526 xla_ae_lines_pkg.SetAcctLineType
48527 (p_component_type => l_component_type
48528 ,p_event_type_code => l_event_type_code
48529 ,p_line_definition_owner_code => l_line_definition_owner_code
48530 ,p_line_definition_code => l_line_definition_code
48531 ,p_accounting_line_code => l_component_code
48532 ,p_accounting_line_type_code => l_component_type_code
48533 ,p_accounting_line_appl_id => l_component_appl_id
48534 ,p_amb_context_code => l_amb_context_code
48535 ,p_entity_code => l_entity_code
48536 ,p_event_class_code => l_event_class_code);
48537 --
48538 -- set accounting class
48539 --
48540 xla_ae_lines_pkg.SetAcctClass(
48541 p_accounting_class_code => 'INTERORG_PROFIT'
48542 , p_ae_header_id => l_ae_header_id
48543 );
48544
48545 --
48546 -- set rounding class
48547 --
48548 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
48549 'INTERORG_PROFIT';
48550
48551 --
48552 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
48553 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
48554 --
48555 -- bulk performance
48556 --
48557 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
48558
48559 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
48560 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
48561
48562 -- 4955764
48563 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
48564 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
48565
48566 -- 4458381 Public Sector Enh
48567
48568 --
48569 -- set accounting attributes for the line type
48570 --
48571 l_entered_amt_idx := 3;
48572 l_accted_amt_idx := 8;
48573 l_bflow_applied_to_amt_idx := NULL; -- 5132302
48574 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
48575 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
48576 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
48577 l_rec_acct_attrs.array_char_value(2) := p_source_12;
48578 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
48579 l_rec_acct_attrs.array_num_value(3) := p_source_18;
48580 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
48581 l_rec_acct_attrs.array_char_value(4) := p_source_15;
48582 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
48583 l_rec_acct_attrs.array_date_value(5) := p_source_19;
48584 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
48585 l_rec_acct_attrs.array_num_value(6) := p_source_20;
48586 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
48587 l_rec_acct_attrs.array_char_value(7) := p_source_21;
48588 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
48589 l_rec_acct_attrs.array_num_value(8) := p_source_22;
48590
48591 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
48592 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
48593
48594 ---------------------------------------------------------------------------------------------------------------
48595 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
48596 ---------------------------------------------------------------------------------------------------------------
48597 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
48598
48599 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
48600 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
48601
48602 IF xla_accounting_cache_pkg.GetValueChar
48603 (p_source_code => 'LEDGER_CATEGORY_CODE'
48604 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
48605 AND l_bflow_method_code = 'PRIOR_ENTRY'
48606 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
48607 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
48608 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
48609 )
48610 THEN
48611 xla_ae_lines_pkg.BflowUpgEntry
48612 (p_business_method_code => l_bflow_method_code
48613 ,p_business_class_code => l_bflow_class_code
48614 ,p_balance_type => l_balance_type_code);
48615 ELSE
48616 NULL;
48617 -- No business flow processing for business flow method of NONE.
48618 END IF;
48619
48620 --
48621 -- call analytical criteria
48622 --
48623
48624 --
48625 -- call description
48626 --
48627 -- No description or it is inherited.
48628 --
48629 -- call ADRs
48630 -- Bug 4922099
48631 --
48632 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
48633 (NVL(l_actual_upg_option, 'N') = 'O') OR
48634 (NVL(l_enc_upg_option, 'N') = 'O')
48635 )
48636 THEN
48637 NULL;
48638 --
48639 --
48640
48641 l_ccid := AcctDerRule_4(
48642 p_application_id => p_application_id
48643 , p_ae_header_id => l_ae_header_id
48644 , p_source_4 => p_source_4
48645 , x_transaction_coa_id => l_adr_transaction_coa_id
48646 , x_accounting_coa_id => l_adr_accounting_coa_id
48647 , x_value_type_code => l_adr_value_type_code
48648 , p_side => 'NA'
48649 );
48650
48651 xla_ae_lines_pkg.set_ccid(
48652 p_code_combination_id => l_ccid
48653 , p_value_type_code => l_adr_value_type_code
48654 , p_transaction_coa_id => l_adr_transaction_coa_id
48655 , p_accounting_coa_id => l_adr_accounting_coa_id
48656 , p_adr_code => 'CST_DEFAULT'
48657 , p_adr_type_code => 'S'
48658 , p_component_type => l_component_type
48659 , p_component_code => l_component_code
48660 , p_component_type_code => l_component_type_code
48661 , p_component_appl_id => l_component_appl_id
48662 , p_amb_context_code => l_amb_context_code
48663 , p_side => 'NA'
48664 );
48665
48666
48667 --
48668 --
48669 END IF;
48670 --
48671 -- Bug 4922099
48672 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
48673 (NVL(l_enc_upg_option, 'N') = 'O')
48674 ) AND
48675 (l_bflow_method_code = 'PRIOR_ENTRY')
48676 )
48677 THEN
48678 IF
48679 --
48680 1 = 2
48681 --
48682 THEN
48683 xla_accounting_err_pkg.build_message
48684 (p_appli_s_name => 'XLA'
48685 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
48686 ,p_token_1 => 'LINE_NUMBER'
48687 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
48688 ,p_token_2 => 'LINE_TYPE_NAME'
48689 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
48690 l_component_type
48691 ,l_component_code
48692 ,l_component_type_code
48693 ,l_component_appl_id
48694 ,l_amb_context_code
48695 ,l_entity_code
48696 ,l_event_class_code
48697 )
48698 ,p_token_3 => 'OWNER'
48699 ,p_value_3 => xla_lookups_pkg.get_meaning(
48700 p_lookup_type => 'XLA_OWNER_TYPE'
48701 ,p_lookup_code => l_component_type_code
48702 )
48703 ,p_token_4 => 'PRODUCT_NAME'
48704 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
48705 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
48706 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
48707 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
48708 ,p_ae_header_id => NULL
48709 );
48710
48711 IF (C_LEVEL_ERROR>= g_log_level) THEN
48712 trace
48713 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
48714 ,p_level => C_LEVEL_ERROR
48715 ,p_module => l_log_module);
48716 END IF;
48717 END IF;
48718 END IF;
48719 --
48720 --
48721 ------------------------------------------------------------------------------------------------
48722 -- 4219869 Business Flow
48723 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
48724 -- Prior Entry. Currently, the following code is always generated.
48725 ------------------------------------------------------------------------------------------------
48726 XLA_AE_LINES_PKG.ValidateCurrentLine;
48727
48728 ------------------------------------------------------------------------------------
48729 -- 4219869 Business Flow
48730 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
48731 ------------------------------------------------------------------------------------
48732 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
48733
48734 ----------------------------------------------------------------------------------
48735 -- 4219869 Business Flow
48736 -- Update journal entry status -- Need to generate this within IF <condition>
48737 ----------------------------------------------------------------------------------
48738 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
48739 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
48740 ,p_balance_type_code => l_balance_type_code
48741 );
48742
48743 -------------------------------------------------------------------------------------------
48744 -- 4262811 - Generate the Accrual Reversal lines
48745 -------------------------------------------------------------------------------------------
48746 BEGIN
48747 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
48748 (g_array_event(p_event_id).array_value_num('header_index'));
48749 IF l_acc_rev_flag IS NULL THEN
48750 l_acc_rev_flag := 'N';
48751 END IF;
48752 EXCEPTION
48753 WHEN OTHERS THEN
48754 l_acc_rev_flag := 'N';
48755 END;
48756 --
48757 IF (l_acc_rev_flag = 'Y') THEN
48758
48759 -- 4645092 ------------------------------------------------------------------------------
48760 -- To allow MPA report to determine if it should generate report process
48761 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
48762 ------------------------------------------------------------------------------------------
48763
48764 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
48765 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
48766 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
48767 -- call ADRs
48768 -- Bug 4922099
48769 --
48770 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
48771 (NVL(l_actual_upg_option, 'N') = 'O') OR
48772 (NVL(l_enc_upg_option, 'N') = 'O')
48773 )
48774 THEN
48775 NULL;
48776 --
48777 --
48778
48779 l_ccid := AcctDerRule_4(
48780 p_application_id => p_application_id
48781 , p_ae_header_id => l_ae_header_id
48782 , p_source_4 => p_source_4
48783 , x_transaction_coa_id => l_adr_transaction_coa_id
48784 , x_accounting_coa_id => l_adr_accounting_coa_id
48785 , x_value_type_code => l_adr_value_type_code
48786 , p_side => 'NA'
48787 );
48788
48789 xla_ae_lines_pkg.set_ccid(
48790 p_code_combination_id => l_ccid
48791 , p_value_type_code => l_adr_value_type_code
48792 , p_transaction_coa_id => l_adr_transaction_coa_id
48793 , p_accounting_coa_id => l_adr_accounting_coa_id
48794 , p_adr_code => 'CST_DEFAULT'
48795 , p_adr_type_code => 'S'
48796 , p_component_type => l_component_type
48797 , p_component_code => l_component_code
48798 , p_component_type_code => l_component_type_code
48799 , p_component_appl_id => l_component_appl_id
48800 , p_amb_context_code => l_amb_context_code
48801 , p_side => 'NA'
48802 );
48803
48804
48805 --
48806 --
48807 END IF;
48808
48809 --
48810 -- Update the line information that should be overwritten
48811 --
48812 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
48813 p_header_num => 1);
48814 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
48815
48816 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
48817
48818 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
48819 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
48820 END IF;
48821
48822 --
48823 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
48824 --
48825 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
48826 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
48827 ELSE
48828 ---------------------------------------------------------------------------------------------------
48829 -- 4262811a Switch Sign
48830 ---------------------------------------------------------------------------------------------------
48831 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
48832 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
48833 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
48834 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
48835 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
48836 -- 5132302
48837 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
48838 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
48839
48840 END IF;
48841
48842 -- 4955764
48843 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
48844 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
48845
48846
48847 XLA_AE_LINES_PKG.ValidateCurrentLine;
48848 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
48849
48850 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
48851 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
48852 ,p_balance_type_code => l_balance_type_code);
48853
48854 END IF;
48855
48856 -----------------------------------------------------------------------------------------
48857 -- 4262811 Multiperiod Accounting
48858 -----------------------------------------------------------------------------------------
48859 -- No MPA option is assigned.
48860
48861
48862 END IF;
48863 END IF;
48864 --
48865
48866 --
48867 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
48868 trace
48869 (p_msg => 'END of AcctLineType_90'
48870 ,p_level => C_LEVEL_PROCEDURE
48871 ,p_module => l_log_module);
48872 END IF;
48873 --
48874 EXCEPTION
48875 WHEN xla_exceptions_pkg.application_exception THEN
48876 RAISE;
48877 WHEN OTHERS THEN
48878 xla_exceptions_pkg.raise_message
48879 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_90');
48880 END AcctLineType_90;
48881 --
48882
48883 ---------------------------------------
48884 --
48885 -- PRIVATE FUNCTION
48886 -- AcctLineType_91
48887 --
48888 ---------------------------------------
48889 PROCEDURE AcctLineType_91 (
48890 p_application_id IN NUMBER
48891 ,p_event_id IN NUMBER
48892 ,p_calculate_acctd_flag IN VARCHAR2
48893 ,p_calculate_g_l_flag IN VARCHAR2
48894 ,p_actual_flag IN OUT VARCHAR2
48895 ,p_balance_type_code OUT VARCHAR2
48896 ,p_gain_or_loss_ref OUT VARCHAR2
48897
48898 --Cost Management Default Account
48899 , p_source_4 IN NUMBER
48900 --DISTRIBUTION_IDENTIFIER
48901 , p_source_11 IN NUMBER
48902 --Distribution Type
48903 , p_source_12 IN VARCHAR2
48904 , p_source_12_meaning IN VARCHAR2
48905 --Entered Currency Code
48906 , p_source_15 IN VARCHAR2
48907 --Entered Amount
48908 , p_source_18 IN NUMBER
48909 --Currency Conversion Date
48910 , p_source_19 IN DATE
48911 --Currency Conversion Rate
48912 , p_source_20 IN NUMBER
48913 --Currency Conversion Type
48914 , p_source_21 IN VARCHAR2
48915 --Accounted Amount
48916 , p_source_22 IN NUMBER
48917 --Accounting Line Type
48918 , p_source_24 IN NUMBER
48919 )
48920 IS
48921
48922 l_component_type VARCHAR2(80);
48923 l_component_code VARCHAR2(30);
48924 l_component_type_code VARCHAR2(1);
48925 l_component_appl_id INTEGER;
48926 l_amb_context_code VARCHAR2(30);
48927 l_entity_code VARCHAR2(30);
48928 l_event_class_code VARCHAR2(30);
48929 l_ae_header_id NUMBER;
48930 l_event_type_code VARCHAR2(30);
48931 l_line_definition_code VARCHAR2(30);
48932 l_line_definition_owner_code VARCHAR2(1);
48933 --
48934 -- adr variables
48935 l_segment VARCHAR2(30);
48936 l_ccid NUMBER;
48937 l_adr_transaction_coa_id NUMBER;
48938 l_adr_accounting_coa_id NUMBER;
48939 l_adr_flexfield_segment_code VARCHAR2(30);
48940 l_adr_flex_value_set_id NUMBER;
48941 l_adr_value_type_code VARCHAR2(30);
48942 l_adr_value_combination_id NUMBER;
48943 l_adr_value_segment_code VARCHAR2(30);
48944
48945 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
48946 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
48947 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
48948 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
48949
48950 -- 4262811 Variables ------------------------------------------------------------------------------------------
48951 l_entered_amt_idx NUMBER;
48952 l_accted_amt_idx NUMBER;
48953 l_acc_rev_flag VARCHAR2(1);
48954 l_accrual_line_num NUMBER;
48955 l_tmp_amt NUMBER;
48956 l_acc_rev_natural_side_code VARCHAR2(1);
48957
48958 l_num_entries NUMBER;
48959 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
48960 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
48961 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
48962 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
48963 l_recog_line_1 NUMBER;
48964 l_recog_line_2 NUMBER;
48965
48966 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
48967 l_bflow_applied_to_amt NUMBER; -- 5132302
48968 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
48969
48970 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
48971
48972 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
48973 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
48974
48975 ---------------------------------------------------------------------------------------------------------------
48976
48977
48978 --
48979 -- bulk performance
48980 --
48981 l_balance_type_code VARCHAR2(1);
48982 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
48983 l_log_module VARCHAR2(240);
48984
48985 --
48986 -- Upgrade strategy
48987 --
48988 l_actual_upg_option VARCHAR2(1);
48989 l_enc_upg_option VARCHAR2(1);
48990
48991 --
48992 BEGIN
48993 --
48994 IF g_log_enabled THEN
48995 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_91';
48996 END IF;
48997 --
48998 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
48999
49000 trace
49001 (p_msg => 'BEGIN of AcctLineType_91'
49002 ,p_level => C_LEVEL_PROCEDURE
49003 ,p_module => l_log_module);
49004
49005 END IF;
49006 --
49007 l_component_type := 'AMB_JLT';
49008 l_component_code := 'INTERORG_PROFIT_OPM';
49009 l_component_type_code := 'S';
49010 l_component_appl_id := 707;
49011 l_amb_context_code := 'DEFAULT';
49012 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
49013 l_event_class_code := 'USER_DEFINE';
49014 l_event_type_code := 'UDIR_INTERORG_SHIP_NO_TP';
49015 l_line_definition_owner_code := 'S';
49016 l_line_definition_code := 'USER_DIR_INTERORG_SHIP_NO_TP';
49017 --
49018 l_balance_type_code := 'A';
49019 l_segment := NULL;
49020 l_ccid := NULL;
49021 l_adr_transaction_coa_id := NULL;
49022 l_adr_accounting_coa_id := NULL;
49023 l_adr_flexfield_segment_code := NULL;
49024 l_adr_flex_value_set_id := NULL;
49025 l_adr_value_type_code := NULL;
49026 l_adr_value_combination_id := NULL;
49027 l_adr_value_segment_code := NULL;
49028
49029 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
49030 l_bflow_class_code := ''; -- 4219869 Business Flow
49031 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
49032 l_budgetary_control_flag := 'N';
49033
49034 l_bflow_applied_to_amt_idx := NULL; -- 5132302
49035 l_bflow_applied_to_amt := NULL; -- 5132302
49036 l_entered_amt_idx := NULL; -- 4262811
49037 l_accted_amt_idx := NULL; -- 4262811
49038 l_acc_rev_flag := NULL; -- 4262811
49039 l_accrual_line_num := NULL; -- 4262811
49040 l_tmp_amt := NULL; -- 4262811
49041 --
49042
49043 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
49044 l_balance_type_code <> 'B' THEN
49045 IF NVL(p_source_24,9E125) = 34
49046 THEN
49047
49048 --
49049 XLA_AE_LINES_PKG.SetNewLine;
49050
49051 p_balance_type_code := l_balance_type_code;
49052 -- set the flag so later we will know whether the gain loss line needs to be created
49053
49054 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
49055 p_actual_flag :='A';
49056 END IF;
49057
49058 --
49059 -- bulk performance
49060 --
49061 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
49062 p_header_num => 0); -- 4262811
49063 --
49064 -- set accounting line options
49065 --
49066 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
49067 p_natural_side_code => 'D'
49068 , p_gain_or_loss_flag => 'N'
49069 , p_gl_transfer_mode_code => 'S'
49070 , p_acct_entry_type_code => 'A'
49071 , p_switch_side_flag => 'Y'
49072 , p_merge_duplicate_code => 'N'
49073 );
49074 --
49075 l_acc_rev_natural_side_code := 'C'; -- 4262811
49076 --
49077 --
49078 -- set accounting line type info
49079 --
49080 xla_ae_lines_pkg.SetAcctLineType
49081 (p_component_type => l_component_type
49082 ,p_event_type_code => l_event_type_code
49083 ,p_line_definition_owner_code => l_line_definition_owner_code
49084 ,p_line_definition_code => l_line_definition_code
49085 ,p_accounting_line_code => l_component_code
49086 ,p_accounting_line_type_code => l_component_type_code
49087 ,p_accounting_line_appl_id => l_component_appl_id
49088 ,p_amb_context_code => l_amb_context_code
49089 ,p_entity_code => l_entity_code
49090 ,p_event_class_code => l_event_class_code);
49091 --
49092 -- set accounting class
49093 --
49094 xla_ae_lines_pkg.SetAcctClass(
49095 p_accounting_class_code => 'INTERORG_PROFIT'
49096 , p_ae_header_id => l_ae_header_id
49097 );
49098
49099 --
49100 -- set rounding class
49101 --
49102 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
49103 'INTERORG_PROFIT';
49104
49105 --
49106 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
49107 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
49108 --
49109 -- bulk performance
49110 --
49111 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
49112
49113 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
49114 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
49115
49116 -- 4955764
49117 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
49118 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
49119
49120 -- 4458381 Public Sector Enh
49121
49122 --
49123 -- set accounting attributes for the line type
49124 --
49125 l_entered_amt_idx := 3;
49126 l_accted_amt_idx := 8;
49127 l_bflow_applied_to_amt_idx := NULL; -- 5132302
49128 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
49129 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
49130 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
49131 l_rec_acct_attrs.array_char_value(2) := p_source_12;
49132 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
49133 l_rec_acct_attrs.array_num_value(3) := p_source_18;
49134 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
49135 l_rec_acct_attrs.array_char_value(4) := p_source_15;
49136 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
49137 l_rec_acct_attrs.array_date_value(5) := p_source_19;
49138 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
49139 l_rec_acct_attrs.array_num_value(6) := p_source_20;
49140 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
49141 l_rec_acct_attrs.array_char_value(7) := p_source_21;
49142 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
49143 l_rec_acct_attrs.array_num_value(8) := p_source_22;
49144
49145 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
49146 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
49147
49148 ---------------------------------------------------------------------------------------------------------------
49149 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
49150 ---------------------------------------------------------------------------------------------------------------
49151 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
49152
49153 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
49154 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
49155
49156 IF xla_accounting_cache_pkg.GetValueChar
49157 (p_source_code => 'LEDGER_CATEGORY_CODE'
49158 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
49159 AND l_bflow_method_code = 'PRIOR_ENTRY'
49160 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
49161 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
49162 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
49163 )
49164 THEN
49165 xla_ae_lines_pkg.BflowUpgEntry
49166 (p_business_method_code => l_bflow_method_code
49167 ,p_business_class_code => l_bflow_class_code
49168 ,p_balance_type => l_balance_type_code);
49169 ELSE
49170 NULL;
49171 -- No business flow processing for business flow method of NONE.
49172 END IF;
49173
49174 --
49175 -- call analytical criteria
49176 --
49177
49178 --
49179 -- call description
49180 --
49181 -- No description or it is inherited.
49182 --
49183 -- call ADRs
49184 -- Bug 4922099
49185 --
49186 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
49187 (NVL(l_actual_upg_option, 'N') = 'O') OR
49188 (NVL(l_enc_upg_option, 'N') = 'O')
49189 )
49190 THEN
49191 NULL;
49192 --
49193 --
49194
49195 l_ccid := AcctDerRule_4(
49196 p_application_id => p_application_id
49197 , p_ae_header_id => l_ae_header_id
49198 , p_source_4 => p_source_4
49199 , x_transaction_coa_id => l_adr_transaction_coa_id
49200 , x_accounting_coa_id => l_adr_accounting_coa_id
49201 , x_value_type_code => l_adr_value_type_code
49202 , p_side => 'NA'
49203 );
49204
49205 xla_ae_lines_pkg.set_ccid(
49206 p_code_combination_id => l_ccid
49207 , p_value_type_code => l_adr_value_type_code
49208 , p_transaction_coa_id => l_adr_transaction_coa_id
49209 , p_accounting_coa_id => l_adr_accounting_coa_id
49210 , p_adr_code => 'CST_DEFAULT'
49211 , p_adr_type_code => 'S'
49212 , p_component_type => l_component_type
49213 , p_component_code => l_component_code
49214 , p_component_type_code => l_component_type_code
49215 , p_component_appl_id => l_component_appl_id
49216 , p_amb_context_code => l_amb_context_code
49217 , p_side => 'NA'
49218 );
49219
49220
49221 --
49222 --
49223 END IF;
49224 --
49225 -- Bug 4922099
49226 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
49227 (NVL(l_enc_upg_option, 'N') = 'O')
49228 ) AND
49229 (l_bflow_method_code = 'PRIOR_ENTRY')
49230 )
49231 THEN
49232 IF
49233 --
49234 1 = 2
49235 --
49236 THEN
49237 xla_accounting_err_pkg.build_message
49238 (p_appli_s_name => 'XLA'
49239 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
49240 ,p_token_1 => 'LINE_NUMBER'
49241 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
49242 ,p_token_2 => 'LINE_TYPE_NAME'
49243 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
49244 l_component_type
49245 ,l_component_code
49246 ,l_component_type_code
49247 ,l_component_appl_id
49248 ,l_amb_context_code
49249 ,l_entity_code
49250 ,l_event_class_code
49251 )
49252 ,p_token_3 => 'OWNER'
49253 ,p_value_3 => xla_lookups_pkg.get_meaning(
49254 p_lookup_type => 'XLA_OWNER_TYPE'
49255 ,p_lookup_code => l_component_type_code
49256 )
49257 ,p_token_4 => 'PRODUCT_NAME'
49258 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
49259 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
49260 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
49261 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
49262 ,p_ae_header_id => NULL
49263 );
49264
49265 IF (C_LEVEL_ERROR>= g_log_level) THEN
49266 trace
49267 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
49268 ,p_level => C_LEVEL_ERROR
49269 ,p_module => l_log_module);
49270 END IF;
49271 END IF;
49272 END IF;
49273 --
49274 --
49275 ------------------------------------------------------------------------------------------------
49276 -- 4219869 Business Flow
49277 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
49278 -- Prior Entry. Currently, the following code is always generated.
49279 ------------------------------------------------------------------------------------------------
49280 XLA_AE_LINES_PKG.ValidateCurrentLine;
49281
49282 ------------------------------------------------------------------------------------
49283 -- 4219869 Business Flow
49284 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
49285 ------------------------------------------------------------------------------------
49286 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
49287
49288 ----------------------------------------------------------------------------------
49289 -- 4219869 Business Flow
49290 -- Update journal entry status -- Need to generate this within IF <condition>
49291 ----------------------------------------------------------------------------------
49292 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
49293 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
49294 ,p_balance_type_code => l_balance_type_code
49295 );
49296
49297 -------------------------------------------------------------------------------------------
49298 -- 4262811 - Generate the Accrual Reversal lines
49299 -------------------------------------------------------------------------------------------
49300 BEGIN
49301 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
49302 (g_array_event(p_event_id).array_value_num('header_index'));
49303 IF l_acc_rev_flag IS NULL THEN
49304 l_acc_rev_flag := 'N';
49305 END IF;
49306 EXCEPTION
49307 WHEN OTHERS THEN
49308 l_acc_rev_flag := 'N';
49309 END;
49310 --
49311 IF (l_acc_rev_flag = 'Y') THEN
49312
49313 -- 4645092 ------------------------------------------------------------------------------
49314 -- To allow MPA report to determine if it should generate report process
49315 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
49316 ------------------------------------------------------------------------------------------
49317
49318 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
49319 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
49320 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
49321 -- call ADRs
49322 -- Bug 4922099
49323 --
49324 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
49325 (NVL(l_actual_upg_option, 'N') = 'O') OR
49326 (NVL(l_enc_upg_option, 'N') = 'O')
49327 )
49328 THEN
49329 NULL;
49330 --
49331 --
49332
49333 l_ccid := AcctDerRule_4(
49334 p_application_id => p_application_id
49335 , p_ae_header_id => l_ae_header_id
49336 , p_source_4 => p_source_4
49337 , x_transaction_coa_id => l_adr_transaction_coa_id
49338 , x_accounting_coa_id => l_adr_accounting_coa_id
49339 , x_value_type_code => l_adr_value_type_code
49340 , p_side => 'NA'
49341 );
49342
49343 xla_ae_lines_pkg.set_ccid(
49344 p_code_combination_id => l_ccid
49345 , p_value_type_code => l_adr_value_type_code
49346 , p_transaction_coa_id => l_adr_transaction_coa_id
49347 , p_accounting_coa_id => l_adr_accounting_coa_id
49348 , p_adr_code => 'CST_DEFAULT'
49349 , p_adr_type_code => 'S'
49350 , p_component_type => l_component_type
49351 , p_component_code => l_component_code
49352 , p_component_type_code => l_component_type_code
49353 , p_component_appl_id => l_component_appl_id
49354 , p_amb_context_code => l_amb_context_code
49355 , p_side => 'NA'
49356 );
49357
49358
49359 --
49360 --
49361 END IF;
49362
49363 --
49364 -- Update the line information that should be overwritten
49365 --
49366 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
49367 p_header_num => 1);
49368 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
49369
49370 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
49371
49372 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
49373 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
49374 END IF;
49375
49376 --
49377 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
49378 --
49379 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
49380 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
49381 ELSE
49382 ---------------------------------------------------------------------------------------------------
49383 -- 4262811a Switch Sign
49384 ---------------------------------------------------------------------------------------------------
49385 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
49386 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
49387 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
49388 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
49389 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
49390 -- 5132302
49391 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
49392 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
49393
49394 END IF;
49395
49396 -- 4955764
49397 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
49398 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
49399
49400
49401 XLA_AE_LINES_PKG.ValidateCurrentLine;
49402 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
49403
49404 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
49405 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
49406 ,p_balance_type_code => l_balance_type_code);
49407
49408 END IF;
49409
49410 -----------------------------------------------------------------------------------------
49411 -- 4262811 Multiperiod Accounting
49412 -----------------------------------------------------------------------------------------
49413 -- No MPA option is assigned.
49414
49415
49416 END IF;
49417 END IF;
49418 --
49419
49420 --
49421 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
49422 trace
49423 (p_msg => 'END of AcctLineType_91'
49424 ,p_level => C_LEVEL_PROCEDURE
49425 ,p_module => l_log_module);
49426 END IF;
49427 --
49428 EXCEPTION
49429 WHEN xla_exceptions_pkg.application_exception THEN
49430 RAISE;
49431 WHEN OTHERS THEN
49432 xla_exceptions_pkg.raise_message
49433 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_91');
49434 END AcctLineType_91;
49435 --
49436
49437 ---------------------------------------
49438 --
49439 -- PRIVATE FUNCTION
49440 -- AcctLineType_92
49441 --
49442 ---------------------------------------
49443 PROCEDURE AcctLineType_92 (
49444 p_application_id IN NUMBER
49445 ,p_event_id IN NUMBER
49446 ,p_calculate_acctd_flag IN VARCHAR2
49447 ,p_calculate_g_l_flag IN VARCHAR2
49448 ,p_actual_flag IN OUT VARCHAR2
49449 ,p_balance_type_code OUT VARCHAR2
49450 ,p_gain_or_loss_ref OUT VARCHAR2
49451
49452 --Cost Management Default Account
49453 , p_source_4 IN NUMBER
49454 --DISTRIBUTION_IDENTIFIER
49455 , p_source_11 IN NUMBER
49456 --Distribution Type
49457 , p_source_12 IN VARCHAR2
49458 , p_source_12_meaning IN VARCHAR2
49459 --Entered Currency Code
49460 , p_source_15 IN VARCHAR2
49461 --Entered Amount
49462 , p_source_18 IN NUMBER
49463 --Currency Conversion Date
49464 , p_source_19 IN DATE
49465 --Currency Conversion Rate
49466 , p_source_20 IN NUMBER
49467 --Currency Conversion Type
49468 , p_source_21 IN VARCHAR2
49469 --Accounted Amount
49470 , p_source_22 IN NUMBER
49471 --Accounting Line Type
49472 , p_source_24 IN NUMBER
49473 )
49474 IS
49475
49476 l_component_type VARCHAR2(80);
49477 l_component_code VARCHAR2(30);
49478 l_component_type_code VARCHAR2(1);
49479 l_component_appl_id INTEGER;
49480 l_amb_context_code VARCHAR2(30);
49481 l_entity_code VARCHAR2(30);
49482 l_event_class_code VARCHAR2(30);
49483 l_ae_header_id NUMBER;
49484 l_event_type_code VARCHAR2(30);
49485 l_line_definition_code VARCHAR2(30);
49486 l_line_definition_owner_code VARCHAR2(1);
49487 --
49488 -- adr variables
49489 l_segment VARCHAR2(30);
49490 l_ccid NUMBER;
49491 l_adr_transaction_coa_id NUMBER;
49492 l_adr_accounting_coa_id NUMBER;
49493 l_adr_flexfield_segment_code VARCHAR2(30);
49494 l_adr_flex_value_set_id NUMBER;
49495 l_adr_value_type_code VARCHAR2(30);
49496 l_adr_value_combination_id NUMBER;
49497 l_adr_value_segment_code VARCHAR2(30);
49498
49499 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
49500 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
49501 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
49502 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
49503
49504 -- 4262811 Variables ------------------------------------------------------------------------------------------
49505 l_entered_amt_idx NUMBER;
49506 l_accted_amt_idx NUMBER;
49507 l_acc_rev_flag VARCHAR2(1);
49508 l_accrual_line_num NUMBER;
49509 l_tmp_amt NUMBER;
49510 l_acc_rev_natural_side_code VARCHAR2(1);
49511
49512 l_num_entries NUMBER;
49513 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
49514 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
49515 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
49516 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
49517 l_recog_line_1 NUMBER;
49518 l_recog_line_2 NUMBER;
49519
49520 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
49521 l_bflow_applied_to_amt NUMBER; -- 5132302
49522 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
49523
49524 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
49525
49526 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
49527 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
49528
49529 ---------------------------------------------------------------------------------------------------------------
49530
49531
49532 --
49533 -- bulk performance
49534 --
49535 l_balance_type_code VARCHAR2(1);
49536 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
49537 l_log_module VARCHAR2(240);
49538
49539 --
49540 -- Upgrade strategy
49541 --
49542 l_actual_upg_option VARCHAR2(1);
49543 l_enc_upg_option VARCHAR2(1);
49544
49545 --
49546 BEGIN
49547 --
49548 IF g_log_enabled THEN
49549 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_92';
49550 END IF;
49551 --
49552 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
49553
49554 trace
49555 (p_msg => 'BEGIN of AcctLineType_92'
49556 ,p_level => C_LEVEL_PROCEDURE
49557 ,p_module => l_log_module);
49558
49559 END IF;
49560 --
49561 l_component_type := 'AMB_JLT';
49562 l_component_code := 'INTERORG_RECEIVABLES';
49563 l_component_type_code := 'S';
49564 l_component_appl_id := 707;
49565 l_amb_context_code := 'DEFAULT';
49566 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
49567 l_event_class_code := 'USER_DEFINE';
49568 l_event_type_code := 'UDIR_INTERORG_RCPT_NO_TP';
49569 l_line_definition_owner_code := 'S';
49570 l_line_definition_code := 'USER_DIR_INTERORG_RCPT_NO_TP';
49571 --
49572 l_balance_type_code := 'A';
49573 l_segment := NULL;
49574 l_ccid := NULL;
49575 l_adr_transaction_coa_id := NULL;
49576 l_adr_accounting_coa_id := NULL;
49577 l_adr_flexfield_segment_code := NULL;
49578 l_adr_flex_value_set_id := NULL;
49579 l_adr_value_type_code := NULL;
49580 l_adr_value_combination_id := NULL;
49581 l_adr_value_segment_code := NULL;
49582
49583 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
49584 l_bflow_class_code := ''; -- 4219869 Business Flow
49585 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
49586 l_budgetary_control_flag := 'N';
49587
49588 l_bflow_applied_to_amt_idx := NULL; -- 5132302
49589 l_bflow_applied_to_amt := NULL; -- 5132302
49590 l_entered_amt_idx := NULL; -- 4262811
49591 l_accted_amt_idx := NULL; -- 4262811
49592 l_acc_rev_flag := NULL; -- 4262811
49593 l_accrual_line_num := NULL; -- 4262811
49594 l_tmp_amt := NULL; -- 4262811
49595 --
49596
49597 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
49598 l_balance_type_code <> 'B' THEN
49599 IF NVL(p_source_24,9E125) = 10
49600 THEN
49601
49602 --
49603 XLA_AE_LINES_PKG.SetNewLine;
49604
49605 p_balance_type_code := l_balance_type_code;
49606 -- set the flag so later we will know whether the gain loss line needs to be created
49607
49608 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
49609 p_actual_flag :='A';
49610 END IF;
49611
49612 --
49613 -- bulk performance
49614 --
49615 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
49616 p_header_num => 0); -- 4262811
49617 --
49618 -- set accounting line options
49619 --
49620 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
49621 p_natural_side_code => 'D'
49622 , p_gain_or_loss_flag => 'N'
49623 , p_gl_transfer_mode_code => 'S'
49624 , p_acct_entry_type_code => 'A'
49625 , p_switch_side_flag => 'Y'
49626 , p_merge_duplicate_code => 'N'
49627 );
49628 --
49629 l_acc_rev_natural_side_code := 'C'; -- 4262811
49630 --
49631 --
49632 -- set accounting line type info
49633 --
49634 xla_ae_lines_pkg.SetAcctLineType
49635 (p_component_type => l_component_type
49636 ,p_event_type_code => l_event_type_code
49637 ,p_line_definition_owner_code => l_line_definition_owner_code
49638 ,p_line_definition_code => l_line_definition_code
49639 ,p_accounting_line_code => l_component_code
49640 ,p_accounting_line_type_code => l_component_type_code
49641 ,p_accounting_line_appl_id => l_component_appl_id
49642 ,p_amb_context_code => l_amb_context_code
49643 ,p_entity_code => l_entity_code
49644 ,p_event_class_code => l_event_class_code);
49645 --
49646 -- set accounting class
49647 --
49648 xla_ae_lines_pkg.SetAcctClass(
49649 p_accounting_class_code => 'INTERORG_RECEIVABLES'
49650 , p_ae_header_id => l_ae_header_id
49651 );
49652
49653 --
49654 -- set rounding class
49655 --
49656 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
49657 'INTERORG_RECEIVABLES';
49658
49659 --
49660 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
49661 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
49662 --
49663 -- bulk performance
49664 --
49665 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
49666
49667 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
49668 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
49669
49670 -- 4955764
49671 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
49672 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
49673
49674 -- 4458381 Public Sector Enh
49675
49676 --
49677 -- set accounting attributes for the line type
49678 --
49679 l_entered_amt_idx := 3;
49680 l_accted_amt_idx := 8;
49681 l_bflow_applied_to_amt_idx := NULL; -- 5132302
49682 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
49683 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
49684 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
49685 l_rec_acct_attrs.array_char_value(2) := p_source_12;
49686 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
49687 l_rec_acct_attrs.array_num_value(3) := p_source_18;
49688 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
49689 l_rec_acct_attrs.array_char_value(4) := p_source_15;
49690 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
49691 l_rec_acct_attrs.array_date_value(5) := p_source_19;
49692 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
49693 l_rec_acct_attrs.array_num_value(6) := p_source_20;
49694 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
49695 l_rec_acct_attrs.array_char_value(7) := p_source_21;
49696 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
49697 l_rec_acct_attrs.array_num_value(8) := p_source_22;
49698
49699 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
49700 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
49701
49702 ---------------------------------------------------------------------------------------------------------------
49703 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
49704 ---------------------------------------------------------------------------------------------------------------
49705 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
49706
49707 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
49708 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
49709
49710 IF xla_accounting_cache_pkg.GetValueChar
49711 (p_source_code => 'LEDGER_CATEGORY_CODE'
49712 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
49713 AND l_bflow_method_code = 'PRIOR_ENTRY'
49714 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
49715 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
49716 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
49717 )
49718 THEN
49719 xla_ae_lines_pkg.BflowUpgEntry
49720 (p_business_method_code => l_bflow_method_code
49721 ,p_business_class_code => l_bflow_class_code
49722 ,p_balance_type => l_balance_type_code);
49723 ELSE
49724 NULL;
49725 -- No business flow processing for business flow method of NONE.
49726 END IF;
49727
49728 --
49729 -- call analytical criteria
49730 --
49731
49732 --
49733 -- call description
49734 --
49735 -- No description or it is inherited.
49736 --
49737 -- call ADRs
49738 -- Bug 4922099
49739 --
49740 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
49741 (NVL(l_actual_upg_option, 'N') = 'O') OR
49742 (NVL(l_enc_upg_option, 'N') = 'O')
49743 )
49744 THEN
49745 NULL;
49746 --
49747 --
49748
49749 l_ccid := AcctDerRule_4(
49750 p_application_id => p_application_id
49751 , p_ae_header_id => l_ae_header_id
49752 , p_source_4 => p_source_4
49753 , x_transaction_coa_id => l_adr_transaction_coa_id
49754 , x_accounting_coa_id => l_adr_accounting_coa_id
49755 , x_value_type_code => l_adr_value_type_code
49756 , p_side => 'NA'
49757 );
49758
49759 xla_ae_lines_pkg.set_ccid(
49760 p_code_combination_id => l_ccid
49761 , p_value_type_code => l_adr_value_type_code
49762 , p_transaction_coa_id => l_adr_transaction_coa_id
49763 , p_accounting_coa_id => l_adr_accounting_coa_id
49764 , p_adr_code => 'CST_DEFAULT'
49765 , p_adr_type_code => 'S'
49766 , p_component_type => l_component_type
49767 , p_component_code => l_component_code
49768 , p_component_type_code => l_component_type_code
49769 , p_component_appl_id => l_component_appl_id
49770 , p_amb_context_code => l_amb_context_code
49771 , p_side => 'NA'
49772 );
49773
49774
49775 --
49776 --
49777 END IF;
49778 --
49779 -- Bug 4922099
49780 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
49781 (NVL(l_enc_upg_option, 'N') = 'O')
49782 ) AND
49783 (l_bflow_method_code = 'PRIOR_ENTRY')
49784 )
49785 THEN
49786 IF
49787 --
49788 1 = 2
49789 --
49790 THEN
49791 xla_accounting_err_pkg.build_message
49792 (p_appli_s_name => 'XLA'
49793 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
49794 ,p_token_1 => 'LINE_NUMBER'
49795 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
49796 ,p_token_2 => 'LINE_TYPE_NAME'
49797 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
49798 l_component_type
49799 ,l_component_code
49800 ,l_component_type_code
49801 ,l_component_appl_id
49802 ,l_amb_context_code
49803 ,l_entity_code
49804 ,l_event_class_code
49805 )
49806 ,p_token_3 => 'OWNER'
49807 ,p_value_3 => xla_lookups_pkg.get_meaning(
49808 p_lookup_type => 'XLA_OWNER_TYPE'
49809 ,p_lookup_code => l_component_type_code
49810 )
49811 ,p_token_4 => 'PRODUCT_NAME'
49812 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
49813 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
49814 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
49815 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
49816 ,p_ae_header_id => NULL
49817 );
49818
49819 IF (C_LEVEL_ERROR>= g_log_level) THEN
49820 trace
49821 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
49822 ,p_level => C_LEVEL_ERROR
49823 ,p_module => l_log_module);
49824 END IF;
49825 END IF;
49826 END IF;
49827 --
49828 --
49829 ------------------------------------------------------------------------------------------------
49830 -- 4219869 Business Flow
49831 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
49832 -- Prior Entry. Currently, the following code is always generated.
49833 ------------------------------------------------------------------------------------------------
49834 XLA_AE_LINES_PKG.ValidateCurrentLine;
49835
49836 ------------------------------------------------------------------------------------
49837 -- 4219869 Business Flow
49838 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
49839 ------------------------------------------------------------------------------------
49840 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
49841
49842 ----------------------------------------------------------------------------------
49843 -- 4219869 Business Flow
49844 -- Update journal entry status -- Need to generate this within IF <condition>
49845 ----------------------------------------------------------------------------------
49846 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
49847 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
49848 ,p_balance_type_code => l_balance_type_code
49849 );
49850
49851 -------------------------------------------------------------------------------------------
49852 -- 4262811 - Generate the Accrual Reversal lines
49853 -------------------------------------------------------------------------------------------
49854 BEGIN
49855 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
49856 (g_array_event(p_event_id).array_value_num('header_index'));
49857 IF l_acc_rev_flag IS NULL THEN
49858 l_acc_rev_flag := 'N';
49859 END IF;
49860 EXCEPTION
49861 WHEN OTHERS THEN
49862 l_acc_rev_flag := 'N';
49863 END;
49864 --
49865 IF (l_acc_rev_flag = 'Y') THEN
49866
49867 -- 4645092 ------------------------------------------------------------------------------
49868 -- To allow MPA report to determine if it should generate report process
49869 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
49870 ------------------------------------------------------------------------------------------
49871
49872 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
49873 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
49874 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
49875 -- call ADRs
49876 -- Bug 4922099
49877 --
49878 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
49879 (NVL(l_actual_upg_option, 'N') = 'O') OR
49880 (NVL(l_enc_upg_option, 'N') = 'O')
49881 )
49882 THEN
49883 NULL;
49884 --
49885 --
49886
49887 l_ccid := AcctDerRule_4(
49888 p_application_id => p_application_id
49889 , p_ae_header_id => l_ae_header_id
49890 , p_source_4 => p_source_4
49891 , x_transaction_coa_id => l_adr_transaction_coa_id
49892 , x_accounting_coa_id => l_adr_accounting_coa_id
49893 , x_value_type_code => l_adr_value_type_code
49894 , p_side => 'NA'
49895 );
49896
49897 xla_ae_lines_pkg.set_ccid(
49898 p_code_combination_id => l_ccid
49899 , p_value_type_code => l_adr_value_type_code
49900 , p_transaction_coa_id => l_adr_transaction_coa_id
49901 , p_accounting_coa_id => l_adr_accounting_coa_id
49902 , p_adr_code => 'CST_DEFAULT'
49903 , p_adr_type_code => 'S'
49904 , p_component_type => l_component_type
49905 , p_component_code => l_component_code
49906 , p_component_type_code => l_component_type_code
49907 , p_component_appl_id => l_component_appl_id
49908 , p_amb_context_code => l_amb_context_code
49909 , p_side => 'NA'
49910 );
49911
49912
49913 --
49914 --
49915 END IF;
49916
49917 --
49918 -- Update the line information that should be overwritten
49919 --
49920 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
49921 p_header_num => 1);
49922 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
49923
49924 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
49925
49926 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
49927 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
49928 END IF;
49929
49930 --
49931 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
49932 --
49933 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
49934 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
49935 ELSE
49936 ---------------------------------------------------------------------------------------------------
49937 -- 4262811a Switch Sign
49938 ---------------------------------------------------------------------------------------------------
49939 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
49940 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
49941 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
49942 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
49943 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
49944 -- 5132302
49945 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
49946 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
49947
49948 END IF;
49949
49950 -- 4955764
49951 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
49952 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
49953
49954
49955 XLA_AE_LINES_PKG.ValidateCurrentLine;
49956 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
49957
49958 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
49959 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
49960 ,p_balance_type_code => l_balance_type_code);
49961
49962 END IF;
49963
49964 -----------------------------------------------------------------------------------------
49965 -- 4262811 Multiperiod Accounting
49966 -----------------------------------------------------------------------------------------
49967 -- No MPA option is assigned.
49968
49969
49970 END IF;
49971 END IF;
49972 --
49973
49974 --
49975 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
49976 trace
49977 (p_msg => 'END of AcctLineType_92'
49978 ,p_level => C_LEVEL_PROCEDURE
49979 ,p_module => l_log_module);
49980 END IF;
49981 --
49982 EXCEPTION
49983 WHEN xla_exceptions_pkg.application_exception THEN
49984 RAISE;
49985 WHEN OTHERS THEN
49986 xla_exceptions_pkg.raise_message
49987 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_92');
49988 END AcctLineType_92;
49989 --
49990
49991 ---------------------------------------
49992 --
49993 -- PRIVATE FUNCTION
49994 -- AcctLineType_93
49995 --
49996 ---------------------------------------
49997 PROCEDURE AcctLineType_93 (
49998 p_application_id IN NUMBER
49999 ,p_event_id IN NUMBER
50000 ,p_calculate_acctd_flag IN VARCHAR2
50001 ,p_calculate_g_l_flag IN VARCHAR2
50002 ,p_actual_flag IN OUT VARCHAR2
50003 ,p_balance_type_code OUT VARCHAR2
50004 ,p_gain_or_loss_ref OUT VARCHAR2
50005
50006 --Cost Management Default Account
50007 , p_source_4 IN NUMBER
50008 --DISTRIBUTION_IDENTIFIER
50009 , p_source_11 IN NUMBER
50010 --Distribution Type
50011 , p_source_12 IN VARCHAR2
50012 , p_source_12_meaning IN VARCHAR2
50013 --Entered Currency Code
50014 , p_source_15 IN VARCHAR2
50015 --Entered Amount
50016 , p_source_18 IN NUMBER
50017 --Currency Conversion Date
50018 , p_source_19 IN DATE
50019 --Currency Conversion Rate
50020 , p_source_20 IN NUMBER
50021 --Currency Conversion Type
50022 , p_source_21 IN VARCHAR2
50023 --Accounted Amount
50024 , p_source_22 IN NUMBER
50025 --Accounting Line Type
50026 , p_source_24 IN NUMBER
50027 )
50028 IS
50029
50030 l_component_type VARCHAR2(80);
50031 l_component_code VARCHAR2(30);
50032 l_component_type_code VARCHAR2(1);
50033 l_component_appl_id INTEGER;
50034 l_amb_context_code VARCHAR2(30);
50035 l_entity_code VARCHAR2(30);
50036 l_event_class_code VARCHAR2(30);
50037 l_ae_header_id NUMBER;
50038 l_event_type_code VARCHAR2(30);
50039 l_line_definition_code VARCHAR2(30);
50040 l_line_definition_owner_code VARCHAR2(1);
50041 --
50042 -- adr variables
50043 l_segment VARCHAR2(30);
50044 l_ccid NUMBER;
50045 l_adr_transaction_coa_id NUMBER;
50046 l_adr_accounting_coa_id NUMBER;
50047 l_adr_flexfield_segment_code VARCHAR2(30);
50048 l_adr_flex_value_set_id NUMBER;
50049 l_adr_value_type_code VARCHAR2(30);
50050 l_adr_value_combination_id NUMBER;
50051 l_adr_value_segment_code VARCHAR2(30);
50052
50053 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
50054 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
50055 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
50056 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
50057
50058 -- 4262811 Variables ------------------------------------------------------------------------------------------
50059 l_entered_amt_idx NUMBER;
50060 l_accted_amt_idx NUMBER;
50061 l_acc_rev_flag VARCHAR2(1);
50062 l_accrual_line_num NUMBER;
50063 l_tmp_amt NUMBER;
50064 l_acc_rev_natural_side_code VARCHAR2(1);
50065
50066 l_num_entries NUMBER;
50067 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
50068 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
50069 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
50070 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
50071 l_recog_line_1 NUMBER;
50072 l_recog_line_2 NUMBER;
50073
50074 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
50075 l_bflow_applied_to_amt NUMBER; -- 5132302
50076 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
50077
50078 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
50079
50080 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
50081 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
50082
50083 ---------------------------------------------------------------------------------------------------------------
50084
50085
50086 --
50087 -- bulk performance
50088 --
50089 l_balance_type_code VARCHAR2(1);
50090 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
50091 l_log_module VARCHAR2(240);
50092
50093 --
50094 -- Upgrade strategy
50095 --
50096 l_actual_upg_option VARCHAR2(1);
50097 l_enc_upg_option VARCHAR2(1);
50098
50099 --
50100 BEGIN
50101 --
50102 IF g_log_enabled THEN
50103 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_93';
50104 END IF;
50105 --
50106 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
50107
50108 trace
50109 (p_msg => 'BEGIN of AcctLineType_93'
50110 ,p_level => C_LEVEL_PROCEDURE
50111 ,p_module => l_log_module);
50112
50113 END IF;
50114 --
50115 l_component_type := 'AMB_JLT';
50116 l_component_code := 'INTERORG_RECEIVABLES';
50117 l_component_type_code := 'S';
50118 l_component_appl_id := 707;
50119 l_amb_context_code := 'DEFAULT';
50120 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
50121 l_event_class_code := 'DIR_INTERORG_SHIP';
50122 l_event_type_code := 'DIR_INTERORG_SHIP_ALL';
50123 l_line_definition_owner_code := 'S';
50124 l_line_definition_code := 'DIRECT_INTERORG_SHIP';
50125 --
50126 l_balance_type_code := 'A';
50127 l_segment := NULL;
50128 l_ccid := NULL;
50129 l_adr_transaction_coa_id := NULL;
50130 l_adr_accounting_coa_id := NULL;
50131 l_adr_flexfield_segment_code := NULL;
50132 l_adr_flex_value_set_id := NULL;
50133 l_adr_value_type_code := NULL;
50134 l_adr_value_combination_id := NULL;
50135 l_adr_value_segment_code := NULL;
50136
50137 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
50138 l_bflow_class_code := ''; -- 4219869 Business Flow
50139 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
50140 l_budgetary_control_flag := 'N';
50141
50142 l_bflow_applied_to_amt_idx := NULL; -- 5132302
50143 l_bflow_applied_to_amt := NULL; -- 5132302
50144 l_entered_amt_idx := NULL; -- 4262811
50145 l_accted_amt_idx := NULL; -- 4262811
50146 l_acc_rev_flag := NULL; -- 4262811
50147 l_accrual_line_num := NULL; -- 4262811
50148 l_tmp_amt := NULL; -- 4262811
50149 --
50150
50151 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
50152 l_balance_type_code <> 'B' THEN
50153 IF NVL(p_source_24,9E125) = 10
50154 THEN
50155
50156 --
50157 XLA_AE_LINES_PKG.SetNewLine;
50158
50159 p_balance_type_code := l_balance_type_code;
50160 -- set the flag so later we will know whether the gain loss line needs to be created
50161
50162 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
50163 p_actual_flag :='A';
50164 END IF;
50165
50166 --
50167 -- bulk performance
50168 --
50169 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
50170 p_header_num => 0); -- 4262811
50171 --
50172 -- set accounting line options
50173 --
50174 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
50175 p_natural_side_code => 'D'
50176 , p_gain_or_loss_flag => 'N'
50177 , p_gl_transfer_mode_code => 'S'
50178 , p_acct_entry_type_code => 'A'
50179 , p_switch_side_flag => 'Y'
50180 , p_merge_duplicate_code => 'N'
50181 );
50182 --
50183 l_acc_rev_natural_side_code := 'C'; -- 4262811
50184 --
50185 --
50186 -- set accounting line type info
50187 --
50188 xla_ae_lines_pkg.SetAcctLineType
50189 (p_component_type => l_component_type
50190 ,p_event_type_code => l_event_type_code
50191 ,p_line_definition_owner_code => l_line_definition_owner_code
50192 ,p_line_definition_code => l_line_definition_code
50193 ,p_accounting_line_code => l_component_code
50194 ,p_accounting_line_type_code => l_component_type_code
50195 ,p_accounting_line_appl_id => l_component_appl_id
50196 ,p_amb_context_code => l_amb_context_code
50197 ,p_entity_code => l_entity_code
50198 ,p_event_class_code => l_event_class_code);
50199 --
50200 -- set accounting class
50201 --
50202 xla_ae_lines_pkg.SetAcctClass(
50203 p_accounting_class_code => 'INTERORG_RECEIVABLES'
50204 , p_ae_header_id => l_ae_header_id
50205 );
50206
50207 --
50208 -- set rounding class
50209 --
50210 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
50211 'INTERORG_RECEIVABLES';
50212
50213 --
50214 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
50215 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
50216 --
50217 -- bulk performance
50218 --
50219 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
50220
50221 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
50222 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
50223
50224 -- 4955764
50225 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
50226 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
50227
50228 -- 4458381 Public Sector Enh
50229
50230 --
50231 -- set accounting attributes for the line type
50232 --
50233 l_entered_amt_idx := 3;
50234 l_accted_amt_idx := 8;
50235 l_bflow_applied_to_amt_idx := NULL; -- 5132302
50236 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
50237 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
50238 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
50239 l_rec_acct_attrs.array_char_value(2) := p_source_12;
50240 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
50241 l_rec_acct_attrs.array_num_value(3) := p_source_18;
50242 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
50243 l_rec_acct_attrs.array_char_value(4) := p_source_15;
50244 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
50245 l_rec_acct_attrs.array_date_value(5) := p_source_19;
50246 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
50247 l_rec_acct_attrs.array_num_value(6) := p_source_20;
50248 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
50249 l_rec_acct_attrs.array_char_value(7) := p_source_21;
50250 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
50251 l_rec_acct_attrs.array_num_value(8) := p_source_22;
50252
50253 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
50254 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
50255
50256 ---------------------------------------------------------------------------------------------------------------
50257 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
50258 ---------------------------------------------------------------------------------------------------------------
50259 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
50260
50261 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
50262 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
50263
50264 IF xla_accounting_cache_pkg.GetValueChar
50265 (p_source_code => 'LEDGER_CATEGORY_CODE'
50266 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
50267 AND l_bflow_method_code = 'PRIOR_ENTRY'
50268 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
50269 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
50270 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
50271 )
50272 THEN
50273 xla_ae_lines_pkg.BflowUpgEntry
50274 (p_business_method_code => l_bflow_method_code
50275 ,p_business_class_code => l_bflow_class_code
50276 ,p_balance_type => l_balance_type_code);
50277 ELSE
50278 NULL;
50279 -- No business flow processing for business flow method of NONE.
50280 END IF;
50281
50282 --
50283 -- call analytical criteria
50284 --
50285
50286 --
50287 -- call description
50288 --
50289 -- No description or it is inherited.
50290 --
50291 -- call ADRs
50292 -- Bug 4922099
50293 --
50294 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
50295 (NVL(l_actual_upg_option, 'N') = 'O') OR
50296 (NVL(l_enc_upg_option, 'N') = 'O')
50297 )
50298 THEN
50299 NULL;
50300 --
50301 --
50302
50303 l_ccid := AcctDerRule_4(
50304 p_application_id => p_application_id
50305 , p_ae_header_id => l_ae_header_id
50306 , p_source_4 => p_source_4
50307 , x_transaction_coa_id => l_adr_transaction_coa_id
50308 , x_accounting_coa_id => l_adr_accounting_coa_id
50309 , x_value_type_code => l_adr_value_type_code
50310 , p_side => 'NA'
50311 );
50312
50313 xla_ae_lines_pkg.set_ccid(
50314 p_code_combination_id => l_ccid
50315 , p_value_type_code => l_adr_value_type_code
50316 , p_transaction_coa_id => l_adr_transaction_coa_id
50317 , p_accounting_coa_id => l_adr_accounting_coa_id
50318 , p_adr_code => 'CST_DEFAULT'
50319 , p_adr_type_code => 'S'
50320 , p_component_type => l_component_type
50321 , p_component_code => l_component_code
50322 , p_component_type_code => l_component_type_code
50323 , p_component_appl_id => l_component_appl_id
50324 , p_amb_context_code => l_amb_context_code
50325 , p_side => 'NA'
50326 );
50327
50328
50329 --
50330 --
50331 END IF;
50332 --
50333 -- Bug 4922099
50334 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
50335 (NVL(l_enc_upg_option, 'N') = 'O')
50336 ) AND
50337 (l_bflow_method_code = 'PRIOR_ENTRY')
50338 )
50339 THEN
50340 IF
50341 --
50342 1 = 2
50343 --
50344 THEN
50345 xla_accounting_err_pkg.build_message
50346 (p_appli_s_name => 'XLA'
50347 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
50348 ,p_token_1 => 'LINE_NUMBER'
50349 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
50350 ,p_token_2 => 'LINE_TYPE_NAME'
50351 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
50352 l_component_type
50353 ,l_component_code
50354 ,l_component_type_code
50355 ,l_component_appl_id
50356 ,l_amb_context_code
50357 ,l_entity_code
50358 ,l_event_class_code
50359 )
50360 ,p_token_3 => 'OWNER'
50361 ,p_value_3 => xla_lookups_pkg.get_meaning(
50362 p_lookup_type => 'XLA_OWNER_TYPE'
50363 ,p_lookup_code => l_component_type_code
50364 )
50365 ,p_token_4 => 'PRODUCT_NAME'
50366 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
50367 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
50368 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
50369 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
50370 ,p_ae_header_id => NULL
50371 );
50372
50373 IF (C_LEVEL_ERROR>= g_log_level) THEN
50374 trace
50375 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
50376 ,p_level => C_LEVEL_ERROR
50377 ,p_module => l_log_module);
50378 END IF;
50379 END IF;
50380 END IF;
50381 --
50382 --
50383 ------------------------------------------------------------------------------------------------
50384 -- 4219869 Business Flow
50385 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
50386 -- Prior Entry. Currently, the following code is always generated.
50387 ------------------------------------------------------------------------------------------------
50388 XLA_AE_LINES_PKG.ValidateCurrentLine;
50389
50390 ------------------------------------------------------------------------------------
50391 -- 4219869 Business Flow
50392 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
50393 ------------------------------------------------------------------------------------
50394 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
50395
50396 ----------------------------------------------------------------------------------
50397 -- 4219869 Business Flow
50398 -- Update journal entry status -- Need to generate this within IF <condition>
50399 ----------------------------------------------------------------------------------
50400 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
50401 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
50402 ,p_balance_type_code => l_balance_type_code
50403 );
50404
50405 -------------------------------------------------------------------------------------------
50406 -- 4262811 - Generate the Accrual Reversal lines
50407 -------------------------------------------------------------------------------------------
50408 BEGIN
50409 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
50410 (g_array_event(p_event_id).array_value_num('header_index'));
50411 IF l_acc_rev_flag IS NULL THEN
50412 l_acc_rev_flag := 'N';
50413 END IF;
50414 EXCEPTION
50415 WHEN OTHERS THEN
50416 l_acc_rev_flag := 'N';
50417 END;
50418 --
50419 IF (l_acc_rev_flag = 'Y') THEN
50420
50421 -- 4645092 ------------------------------------------------------------------------------
50422 -- To allow MPA report to determine if it should generate report process
50423 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
50424 ------------------------------------------------------------------------------------------
50425
50426 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
50427 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
50428 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
50429 -- call ADRs
50430 -- Bug 4922099
50431 --
50432 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
50433 (NVL(l_actual_upg_option, 'N') = 'O') OR
50434 (NVL(l_enc_upg_option, 'N') = 'O')
50435 )
50436 THEN
50437 NULL;
50438 --
50439 --
50440
50441 l_ccid := AcctDerRule_4(
50442 p_application_id => p_application_id
50443 , p_ae_header_id => l_ae_header_id
50444 , p_source_4 => p_source_4
50445 , x_transaction_coa_id => l_adr_transaction_coa_id
50446 , x_accounting_coa_id => l_adr_accounting_coa_id
50447 , x_value_type_code => l_adr_value_type_code
50448 , p_side => 'NA'
50449 );
50450
50451 xla_ae_lines_pkg.set_ccid(
50452 p_code_combination_id => l_ccid
50453 , p_value_type_code => l_adr_value_type_code
50454 , p_transaction_coa_id => l_adr_transaction_coa_id
50455 , p_accounting_coa_id => l_adr_accounting_coa_id
50456 , p_adr_code => 'CST_DEFAULT'
50457 , p_adr_type_code => 'S'
50458 , p_component_type => l_component_type
50459 , p_component_code => l_component_code
50460 , p_component_type_code => l_component_type_code
50461 , p_component_appl_id => l_component_appl_id
50462 , p_amb_context_code => l_amb_context_code
50463 , p_side => 'NA'
50464 );
50465
50466
50467 --
50468 --
50469 END IF;
50470
50471 --
50472 -- Update the line information that should be overwritten
50473 --
50474 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
50475 p_header_num => 1);
50476 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
50477
50478 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
50479
50480 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
50481 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
50482 END IF;
50483
50484 --
50485 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
50486 --
50487 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
50488 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
50489 ELSE
50490 ---------------------------------------------------------------------------------------------------
50491 -- 4262811a Switch Sign
50492 ---------------------------------------------------------------------------------------------------
50493 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
50494 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
50495 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
50496 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
50497 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
50498 -- 5132302
50499 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
50500 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
50501
50502 END IF;
50503
50504 -- 4955764
50505 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
50506 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
50507
50508
50509 XLA_AE_LINES_PKG.ValidateCurrentLine;
50510 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
50511
50512 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
50513 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
50514 ,p_balance_type_code => l_balance_type_code);
50515
50516 END IF;
50517
50518 -----------------------------------------------------------------------------------------
50519 -- 4262811 Multiperiod Accounting
50520 -----------------------------------------------------------------------------------------
50521 -- No MPA option is assigned.
50522
50523
50524 END IF;
50525 END IF;
50526 --
50527
50528 --
50529 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
50530 trace
50531 (p_msg => 'END of AcctLineType_93'
50532 ,p_level => C_LEVEL_PROCEDURE
50533 ,p_module => l_log_module);
50534 END IF;
50535 --
50536 EXCEPTION
50537 WHEN xla_exceptions_pkg.application_exception THEN
50538 RAISE;
50539 WHEN OTHERS THEN
50540 xla_exceptions_pkg.raise_message
50541 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_93');
50542 END AcctLineType_93;
50543 --
50544
50545 ---------------------------------------
50546 --
50547 -- PRIVATE FUNCTION
50548 -- AcctLineType_94
50549 --
50550 ---------------------------------------
50551 PROCEDURE AcctLineType_94 (
50552 p_application_id IN NUMBER
50553 ,p_event_id IN NUMBER
50554 ,p_calculate_acctd_flag IN VARCHAR2
50555 ,p_calculate_g_l_flag IN VARCHAR2
50556 ,p_actual_flag IN OUT VARCHAR2
50557 ,p_balance_type_code OUT VARCHAR2
50558 ,p_gain_or_loss_ref OUT VARCHAR2
50559
50560 --Cost Management Default Account
50561 , p_source_4 IN NUMBER
50562 --DISTRIBUTION_IDENTIFIER
50563 , p_source_11 IN NUMBER
50564 --Distribution Type
50565 , p_source_12 IN VARCHAR2
50566 , p_source_12_meaning IN VARCHAR2
50567 --Entered Currency Code
50568 , p_source_15 IN VARCHAR2
50569 --Entered Amount
50570 , p_source_18 IN NUMBER
50571 --Currency Conversion Date
50572 , p_source_19 IN DATE
50573 --Currency Conversion Rate
50574 , p_source_20 IN NUMBER
50575 --Currency Conversion Type
50576 , p_source_21 IN VARCHAR2
50577 --Accounted Amount
50578 , p_source_22 IN NUMBER
50579 --Accounting Line Type
50580 , p_source_24 IN NUMBER
50581 )
50582 IS
50583
50584 l_component_type VARCHAR2(80);
50585 l_component_code VARCHAR2(30);
50586 l_component_type_code VARCHAR2(1);
50587 l_component_appl_id INTEGER;
50588 l_amb_context_code VARCHAR2(30);
50589 l_entity_code VARCHAR2(30);
50590 l_event_class_code VARCHAR2(30);
50591 l_ae_header_id NUMBER;
50592 l_event_type_code VARCHAR2(30);
50593 l_line_definition_code VARCHAR2(30);
50594 l_line_definition_owner_code VARCHAR2(1);
50595 --
50596 -- adr variables
50597 l_segment VARCHAR2(30);
50598 l_ccid NUMBER;
50599 l_adr_transaction_coa_id NUMBER;
50600 l_adr_accounting_coa_id NUMBER;
50601 l_adr_flexfield_segment_code VARCHAR2(30);
50602 l_adr_flex_value_set_id NUMBER;
50603 l_adr_value_type_code VARCHAR2(30);
50604 l_adr_value_combination_id NUMBER;
50605 l_adr_value_segment_code VARCHAR2(30);
50606
50607 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
50608 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
50609 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
50610 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
50611
50612 -- 4262811 Variables ------------------------------------------------------------------------------------------
50613 l_entered_amt_idx NUMBER;
50614 l_accted_amt_idx NUMBER;
50615 l_acc_rev_flag VARCHAR2(1);
50616 l_accrual_line_num NUMBER;
50617 l_tmp_amt NUMBER;
50618 l_acc_rev_natural_side_code VARCHAR2(1);
50619
50620 l_num_entries NUMBER;
50621 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
50622 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
50623 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
50624 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
50625 l_recog_line_1 NUMBER;
50626 l_recog_line_2 NUMBER;
50627
50628 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
50629 l_bflow_applied_to_amt NUMBER; -- 5132302
50630 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
50631
50632 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
50633
50634 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
50635 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
50636
50637 ---------------------------------------------------------------------------------------------------------------
50638
50639
50640 --
50641 -- bulk performance
50642 --
50643 l_balance_type_code VARCHAR2(1);
50644 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
50645 l_log_module VARCHAR2(240);
50646
50647 --
50648 -- Upgrade strategy
50649 --
50650 l_actual_upg_option VARCHAR2(1);
50651 l_enc_upg_option VARCHAR2(1);
50652
50653 --
50654 BEGIN
50655 --
50656 IF g_log_enabled THEN
50657 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_94';
50658 END IF;
50659 --
50660 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
50661
50662 trace
50663 (p_msg => 'BEGIN of AcctLineType_94'
50664 ,p_level => C_LEVEL_PROCEDURE
50665 ,p_module => l_log_module);
50666
50667 END IF;
50668 --
50669 l_component_type := 'AMB_JLT';
50670 l_component_code := 'INTERORG_RECEIVABLES';
50671 l_component_type_code := 'S';
50672 l_component_appl_id := 707;
50673 l_amb_context_code := 'DEFAULT';
50674 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
50675 l_event_class_code := 'USER_DEFINE';
50676 l_event_type_code := 'UDIR_INTERORG_SHIP';
50677 l_line_definition_owner_code := 'S';
50678 l_line_definition_code := 'USER_DIR_INTERORG_SHIP';
50679 --
50680 l_balance_type_code := 'A';
50681 l_segment := NULL;
50682 l_ccid := NULL;
50683 l_adr_transaction_coa_id := NULL;
50684 l_adr_accounting_coa_id := NULL;
50685 l_adr_flexfield_segment_code := NULL;
50686 l_adr_flex_value_set_id := NULL;
50687 l_adr_value_type_code := NULL;
50688 l_adr_value_combination_id := NULL;
50689 l_adr_value_segment_code := NULL;
50690
50691 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
50692 l_bflow_class_code := ''; -- 4219869 Business Flow
50693 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
50694 l_budgetary_control_flag := 'N';
50695
50696 l_bflow_applied_to_amt_idx := NULL; -- 5132302
50697 l_bflow_applied_to_amt := NULL; -- 5132302
50698 l_entered_amt_idx := NULL; -- 4262811
50699 l_accted_amt_idx := NULL; -- 4262811
50700 l_acc_rev_flag := NULL; -- 4262811
50701 l_accrual_line_num := NULL; -- 4262811
50702 l_tmp_amt := NULL; -- 4262811
50703 --
50704
50705 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
50706 l_balance_type_code <> 'B' THEN
50707 IF NVL(p_source_24,9E125) = 10
50708 THEN
50709
50710 --
50711 XLA_AE_LINES_PKG.SetNewLine;
50712
50713 p_balance_type_code := l_balance_type_code;
50714 -- set the flag so later we will know whether the gain loss line needs to be created
50715
50716 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
50717 p_actual_flag :='A';
50718 END IF;
50719
50720 --
50721 -- bulk performance
50722 --
50723 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
50724 p_header_num => 0); -- 4262811
50725 --
50726 -- set accounting line options
50727 --
50728 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
50729 p_natural_side_code => 'D'
50730 , p_gain_or_loss_flag => 'N'
50731 , p_gl_transfer_mode_code => 'S'
50732 , p_acct_entry_type_code => 'A'
50733 , p_switch_side_flag => 'Y'
50734 , p_merge_duplicate_code => 'N'
50735 );
50736 --
50737 l_acc_rev_natural_side_code := 'C'; -- 4262811
50738 --
50739 --
50740 -- set accounting line type info
50741 --
50742 xla_ae_lines_pkg.SetAcctLineType
50743 (p_component_type => l_component_type
50744 ,p_event_type_code => l_event_type_code
50745 ,p_line_definition_owner_code => l_line_definition_owner_code
50746 ,p_line_definition_code => l_line_definition_code
50747 ,p_accounting_line_code => l_component_code
50748 ,p_accounting_line_type_code => l_component_type_code
50749 ,p_accounting_line_appl_id => l_component_appl_id
50750 ,p_amb_context_code => l_amb_context_code
50751 ,p_entity_code => l_entity_code
50752 ,p_event_class_code => l_event_class_code);
50753 --
50754 -- set accounting class
50755 --
50756 xla_ae_lines_pkg.SetAcctClass(
50757 p_accounting_class_code => 'INTERORG_RECEIVABLES'
50758 , p_ae_header_id => l_ae_header_id
50759 );
50760
50761 --
50762 -- set rounding class
50763 --
50764 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
50765 'INTERORG_RECEIVABLES';
50766
50767 --
50768 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
50769 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
50770 --
50771 -- bulk performance
50772 --
50773 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
50774
50775 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
50776 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
50777
50778 -- 4955764
50779 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
50780 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
50781
50782 -- 4458381 Public Sector Enh
50783
50784 --
50785 -- set accounting attributes for the line type
50786 --
50787 l_entered_amt_idx := 3;
50788 l_accted_amt_idx := 8;
50789 l_bflow_applied_to_amt_idx := NULL; -- 5132302
50790 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
50791 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
50792 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
50793 l_rec_acct_attrs.array_char_value(2) := p_source_12;
50794 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
50795 l_rec_acct_attrs.array_num_value(3) := p_source_18;
50796 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
50797 l_rec_acct_attrs.array_char_value(4) := p_source_15;
50798 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
50799 l_rec_acct_attrs.array_date_value(5) := p_source_19;
50800 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
50801 l_rec_acct_attrs.array_num_value(6) := p_source_20;
50802 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
50803 l_rec_acct_attrs.array_char_value(7) := p_source_21;
50804 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
50805 l_rec_acct_attrs.array_num_value(8) := p_source_22;
50806
50807 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
50808 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
50809
50810 ---------------------------------------------------------------------------------------------------------------
50811 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
50812 ---------------------------------------------------------------------------------------------------------------
50813 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
50814
50815 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
50816 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
50817
50818 IF xla_accounting_cache_pkg.GetValueChar
50819 (p_source_code => 'LEDGER_CATEGORY_CODE'
50820 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
50821 AND l_bflow_method_code = 'PRIOR_ENTRY'
50822 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
50823 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
50824 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
50825 )
50826 THEN
50827 xla_ae_lines_pkg.BflowUpgEntry
50828 (p_business_method_code => l_bflow_method_code
50829 ,p_business_class_code => l_bflow_class_code
50830 ,p_balance_type => l_balance_type_code);
50831 ELSE
50832 NULL;
50833 -- No business flow processing for business flow method of NONE.
50834 END IF;
50835
50836 --
50837 -- call analytical criteria
50838 --
50839
50840 --
50841 -- call description
50842 --
50843 -- No description or it is inherited.
50844 --
50845 -- call ADRs
50846 -- Bug 4922099
50847 --
50848 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
50849 (NVL(l_actual_upg_option, 'N') = 'O') OR
50850 (NVL(l_enc_upg_option, 'N') = 'O')
50851 )
50852 THEN
50853 NULL;
50854 --
50855 --
50856
50857 l_ccid := AcctDerRule_4(
50858 p_application_id => p_application_id
50859 , p_ae_header_id => l_ae_header_id
50860 , p_source_4 => p_source_4
50861 , x_transaction_coa_id => l_adr_transaction_coa_id
50862 , x_accounting_coa_id => l_adr_accounting_coa_id
50863 , x_value_type_code => l_adr_value_type_code
50864 , p_side => 'NA'
50865 );
50866
50867 xla_ae_lines_pkg.set_ccid(
50868 p_code_combination_id => l_ccid
50869 , p_value_type_code => l_adr_value_type_code
50870 , p_transaction_coa_id => l_adr_transaction_coa_id
50871 , p_accounting_coa_id => l_adr_accounting_coa_id
50872 , p_adr_code => 'CST_DEFAULT'
50873 , p_adr_type_code => 'S'
50874 , p_component_type => l_component_type
50875 , p_component_code => l_component_code
50876 , p_component_type_code => l_component_type_code
50877 , p_component_appl_id => l_component_appl_id
50878 , p_amb_context_code => l_amb_context_code
50879 , p_side => 'NA'
50880 );
50881
50882
50883 --
50884 --
50885 END IF;
50886 --
50887 -- Bug 4922099
50888 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
50889 (NVL(l_enc_upg_option, 'N') = 'O')
50890 ) AND
50891 (l_bflow_method_code = 'PRIOR_ENTRY')
50892 )
50893 THEN
50894 IF
50895 --
50896 1 = 2
50897 --
50898 THEN
50899 xla_accounting_err_pkg.build_message
50900 (p_appli_s_name => 'XLA'
50901 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
50902 ,p_token_1 => 'LINE_NUMBER'
50903 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
50904 ,p_token_2 => 'LINE_TYPE_NAME'
50905 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
50906 l_component_type
50907 ,l_component_code
50908 ,l_component_type_code
50909 ,l_component_appl_id
50910 ,l_amb_context_code
50911 ,l_entity_code
50912 ,l_event_class_code
50913 )
50914 ,p_token_3 => 'OWNER'
50915 ,p_value_3 => xla_lookups_pkg.get_meaning(
50916 p_lookup_type => 'XLA_OWNER_TYPE'
50917 ,p_lookup_code => l_component_type_code
50918 )
50919 ,p_token_4 => 'PRODUCT_NAME'
50920 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
50921 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
50922 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
50923 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
50924 ,p_ae_header_id => NULL
50925 );
50926
50927 IF (C_LEVEL_ERROR>= g_log_level) THEN
50928 trace
50929 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
50930 ,p_level => C_LEVEL_ERROR
50931 ,p_module => l_log_module);
50932 END IF;
50933 END IF;
50934 END IF;
50935 --
50936 --
50937 ------------------------------------------------------------------------------------------------
50938 -- 4219869 Business Flow
50939 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
50940 -- Prior Entry. Currently, the following code is always generated.
50941 ------------------------------------------------------------------------------------------------
50942 XLA_AE_LINES_PKG.ValidateCurrentLine;
50943
50944 ------------------------------------------------------------------------------------
50945 -- 4219869 Business Flow
50946 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
50947 ------------------------------------------------------------------------------------
50948 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
50949
50950 ----------------------------------------------------------------------------------
50951 -- 4219869 Business Flow
50952 -- Update journal entry status -- Need to generate this within IF <condition>
50953 ----------------------------------------------------------------------------------
50954 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
50955 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
50956 ,p_balance_type_code => l_balance_type_code
50957 );
50958
50959 -------------------------------------------------------------------------------------------
50960 -- 4262811 - Generate the Accrual Reversal lines
50961 -------------------------------------------------------------------------------------------
50962 BEGIN
50963 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
50964 (g_array_event(p_event_id).array_value_num('header_index'));
50965 IF l_acc_rev_flag IS NULL THEN
50966 l_acc_rev_flag := 'N';
50967 END IF;
50968 EXCEPTION
50969 WHEN OTHERS THEN
50970 l_acc_rev_flag := 'N';
50971 END;
50972 --
50973 IF (l_acc_rev_flag = 'Y') THEN
50974
50975 -- 4645092 ------------------------------------------------------------------------------
50976 -- To allow MPA report to determine if it should generate report process
50977 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
50978 ------------------------------------------------------------------------------------------
50979
50980 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
50981 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
50982 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
50983 -- call ADRs
50984 -- Bug 4922099
50985 --
50986 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
50987 (NVL(l_actual_upg_option, 'N') = 'O') OR
50988 (NVL(l_enc_upg_option, 'N') = 'O')
50989 )
50990 THEN
50991 NULL;
50992 --
50993 --
50994
50995 l_ccid := AcctDerRule_4(
50996 p_application_id => p_application_id
50997 , p_ae_header_id => l_ae_header_id
50998 , p_source_4 => p_source_4
50999 , x_transaction_coa_id => l_adr_transaction_coa_id
51000 , x_accounting_coa_id => l_adr_accounting_coa_id
51001 , x_value_type_code => l_adr_value_type_code
51002 , p_side => 'NA'
51003 );
51004
51005 xla_ae_lines_pkg.set_ccid(
51006 p_code_combination_id => l_ccid
51007 , p_value_type_code => l_adr_value_type_code
51008 , p_transaction_coa_id => l_adr_transaction_coa_id
51009 , p_accounting_coa_id => l_adr_accounting_coa_id
51010 , p_adr_code => 'CST_DEFAULT'
51011 , p_adr_type_code => 'S'
51012 , p_component_type => l_component_type
51013 , p_component_code => l_component_code
51014 , p_component_type_code => l_component_type_code
51015 , p_component_appl_id => l_component_appl_id
51016 , p_amb_context_code => l_amb_context_code
51017 , p_side => 'NA'
51018 );
51019
51020
51021 --
51022 --
51023 END IF;
51024
51025 --
51026 -- Update the line information that should be overwritten
51027 --
51028 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
51029 p_header_num => 1);
51030 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
51031
51032 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
51033
51034 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
51035 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
51036 END IF;
51037
51038 --
51039 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
51040 --
51041 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
51042 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
51043 ELSE
51044 ---------------------------------------------------------------------------------------------------
51045 -- 4262811a Switch Sign
51046 ---------------------------------------------------------------------------------------------------
51047 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
51048 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
51049 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
51050 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
51051 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
51052 -- 5132302
51053 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
51054 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
51055
51056 END IF;
51057
51058 -- 4955764
51059 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
51060 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
51061
51062
51063 XLA_AE_LINES_PKG.ValidateCurrentLine;
51064 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
51065
51066 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
51067 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
51068 ,p_balance_type_code => l_balance_type_code);
51069
51070 END IF;
51071
51072 -----------------------------------------------------------------------------------------
51073 -- 4262811 Multiperiod Accounting
51074 -----------------------------------------------------------------------------------------
51075 -- No MPA option is assigned.
51076
51077
51078 END IF;
51079 END IF;
51080 --
51081
51082 --
51083 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
51084 trace
51085 (p_msg => 'END of AcctLineType_94'
51086 ,p_level => C_LEVEL_PROCEDURE
51087 ,p_module => l_log_module);
51088 END IF;
51089 --
51090 EXCEPTION
51091 WHEN xla_exceptions_pkg.application_exception THEN
51092 RAISE;
51093 WHEN OTHERS THEN
51094 xla_exceptions_pkg.raise_message
51095 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_94');
51096 END AcctLineType_94;
51097 --
51098
51099 ---------------------------------------
51100 --
51101 -- PRIVATE FUNCTION
51102 -- AcctLineType_95
51103 --
51104 ---------------------------------------
51105 PROCEDURE AcctLineType_95 (
51106 p_application_id IN NUMBER
51107 ,p_event_id IN NUMBER
51108 ,p_calculate_acctd_flag IN VARCHAR2
51109 ,p_calculate_g_l_flag IN VARCHAR2
51110 ,p_actual_flag IN OUT VARCHAR2
51111 ,p_balance_type_code OUT VARCHAR2
51112 ,p_gain_or_loss_ref OUT VARCHAR2
51113
51114 --Cost Management Default Account
51115 , p_source_4 IN NUMBER
51116 --DISTRIBUTION_IDENTIFIER
51117 , p_source_11 IN NUMBER
51118 --Distribution Type
51119 , p_source_12 IN VARCHAR2
51120 , p_source_12_meaning IN VARCHAR2
51121 --Entered Currency Code
51122 , p_source_15 IN VARCHAR2
51123 --Entered Amount
51124 , p_source_18 IN NUMBER
51125 --Currency Conversion Date
51126 , p_source_19 IN DATE
51127 --Currency Conversion Rate
51128 , p_source_20 IN NUMBER
51129 --Currency Conversion Type
51130 , p_source_21 IN VARCHAR2
51131 --Accounted Amount
51132 , p_source_22 IN NUMBER
51133 --Accounting Line Type
51134 , p_source_24 IN NUMBER
51135 )
51136 IS
51137
51138 l_component_type VARCHAR2(80);
51139 l_component_code VARCHAR2(30);
51140 l_component_type_code VARCHAR2(1);
51141 l_component_appl_id INTEGER;
51142 l_amb_context_code VARCHAR2(30);
51143 l_entity_code VARCHAR2(30);
51144 l_event_class_code VARCHAR2(30);
51145 l_ae_header_id NUMBER;
51146 l_event_type_code VARCHAR2(30);
51147 l_line_definition_code VARCHAR2(30);
51148 l_line_definition_owner_code VARCHAR2(1);
51149 --
51150 -- adr variables
51151 l_segment VARCHAR2(30);
51152 l_ccid NUMBER;
51153 l_adr_transaction_coa_id NUMBER;
51154 l_adr_accounting_coa_id NUMBER;
51155 l_adr_flexfield_segment_code VARCHAR2(30);
51156 l_adr_flex_value_set_id NUMBER;
51157 l_adr_value_type_code VARCHAR2(30);
51158 l_adr_value_combination_id NUMBER;
51159 l_adr_value_segment_code VARCHAR2(30);
51160
51161 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
51162 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
51163 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
51164 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
51165
51166 -- 4262811 Variables ------------------------------------------------------------------------------------------
51167 l_entered_amt_idx NUMBER;
51168 l_accted_amt_idx NUMBER;
51169 l_acc_rev_flag VARCHAR2(1);
51170 l_accrual_line_num NUMBER;
51171 l_tmp_amt NUMBER;
51172 l_acc_rev_natural_side_code VARCHAR2(1);
51173
51174 l_num_entries NUMBER;
51175 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
51176 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
51177 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
51178 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
51179 l_recog_line_1 NUMBER;
51180 l_recog_line_2 NUMBER;
51181
51182 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
51183 l_bflow_applied_to_amt NUMBER; -- 5132302
51184 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
51185
51186 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
51187
51188 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
51189 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
51190
51191 ---------------------------------------------------------------------------------------------------------------
51192
51193
51194 --
51195 -- bulk performance
51196 --
51197 l_balance_type_code VARCHAR2(1);
51198 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
51199 l_log_module VARCHAR2(240);
51200
51201 --
51202 -- Upgrade strategy
51203 --
51204 l_actual_upg_option VARCHAR2(1);
51205 l_enc_upg_option VARCHAR2(1);
51206
51207 --
51208 BEGIN
51209 --
51210 IF g_log_enabled THEN
51211 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_95';
51212 END IF;
51213 --
51214 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
51215
51216 trace
51217 (p_msg => 'BEGIN of AcctLineType_95'
51218 ,p_level => C_LEVEL_PROCEDURE
51219 ,p_module => l_log_module);
51220
51221 END IF;
51222 --
51223 l_component_type := 'AMB_JLT';
51224 l_component_code := 'INTERORG_RECEIVABLES';
51225 l_component_type_code := 'S';
51226 l_component_appl_id := 707;
51227 l_amb_context_code := 'DEFAULT';
51228 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
51229 l_event_class_code := 'USER_DEFINE';
51230 l_event_type_code := 'UDIR_INTERORG_SHIP_TP';
51231 l_line_definition_owner_code := 'S';
51232 l_line_definition_code := 'USER_DIR_INTERORG_SHIP_TP';
51233 --
51234 l_balance_type_code := 'A';
51235 l_segment := NULL;
51236 l_ccid := NULL;
51237 l_adr_transaction_coa_id := NULL;
51238 l_adr_accounting_coa_id := NULL;
51239 l_adr_flexfield_segment_code := NULL;
51240 l_adr_flex_value_set_id := NULL;
51241 l_adr_value_type_code := NULL;
51242 l_adr_value_combination_id := NULL;
51243 l_adr_value_segment_code := NULL;
51244
51245 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
51246 l_bflow_class_code := ''; -- 4219869 Business Flow
51247 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
51248 l_budgetary_control_flag := 'N';
51249
51250 l_bflow_applied_to_amt_idx := NULL; -- 5132302
51251 l_bflow_applied_to_amt := NULL; -- 5132302
51252 l_entered_amt_idx := NULL; -- 4262811
51253 l_accted_amt_idx := NULL; -- 4262811
51254 l_acc_rev_flag := NULL; -- 4262811
51255 l_accrual_line_num := NULL; -- 4262811
51256 l_tmp_amt := NULL; -- 4262811
51257 --
51258
51259 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
51260 l_balance_type_code <> 'B' THEN
51261 IF NVL(p_source_24,9E125) = 10
51262 THEN
51263
51264 --
51265 XLA_AE_LINES_PKG.SetNewLine;
51266
51267 p_balance_type_code := l_balance_type_code;
51268 -- set the flag so later we will know whether the gain loss line needs to be created
51269
51270 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
51271 p_actual_flag :='A';
51272 END IF;
51273
51274 --
51275 -- bulk performance
51276 --
51277 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
51278 p_header_num => 0); -- 4262811
51279 --
51280 -- set accounting line options
51281 --
51282 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
51283 p_natural_side_code => 'D'
51284 , p_gain_or_loss_flag => 'N'
51285 , p_gl_transfer_mode_code => 'S'
51286 , p_acct_entry_type_code => 'A'
51287 , p_switch_side_flag => 'Y'
51288 , p_merge_duplicate_code => 'N'
51289 );
51290 --
51291 l_acc_rev_natural_side_code := 'C'; -- 4262811
51292 --
51293 --
51294 -- set accounting line type info
51295 --
51296 xla_ae_lines_pkg.SetAcctLineType
51297 (p_component_type => l_component_type
51298 ,p_event_type_code => l_event_type_code
51299 ,p_line_definition_owner_code => l_line_definition_owner_code
51300 ,p_line_definition_code => l_line_definition_code
51301 ,p_accounting_line_code => l_component_code
51302 ,p_accounting_line_type_code => l_component_type_code
51303 ,p_accounting_line_appl_id => l_component_appl_id
51304 ,p_amb_context_code => l_amb_context_code
51305 ,p_entity_code => l_entity_code
51306 ,p_event_class_code => l_event_class_code);
51307 --
51308 -- set accounting class
51309 --
51310 xla_ae_lines_pkg.SetAcctClass(
51311 p_accounting_class_code => 'INTERORG_RECEIVABLES'
51312 , p_ae_header_id => l_ae_header_id
51313 );
51314
51315 --
51316 -- set rounding class
51317 --
51318 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
51319 'INTERORG_RECEIVABLES';
51320
51321 --
51322 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
51323 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
51324 --
51325 -- bulk performance
51326 --
51327 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
51328
51329 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
51330 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
51331
51332 -- 4955764
51333 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
51334 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
51335
51336 -- 4458381 Public Sector Enh
51337
51338 --
51339 -- set accounting attributes for the line type
51340 --
51341 l_entered_amt_idx := 3;
51342 l_accted_amt_idx := 8;
51343 l_bflow_applied_to_amt_idx := NULL; -- 5132302
51344 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
51345 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
51346 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
51347 l_rec_acct_attrs.array_char_value(2) := p_source_12;
51348 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
51349 l_rec_acct_attrs.array_num_value(3) := p_source_18;
51350 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
51351 l_rec_acct_attrs.array_char_value(4) := p_source_15;
51352 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
51353 l_rec_acct_attrs.array_date_value(5) := p_source_19;
51354 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
51355 l_rec_acct_attrs.array_num_value(6) := p_source_20;
51356 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
51357 l_rec_acct_attrs.array_char_value(7) := p_source_21;
51358 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
51359 l_rec_acct_attrs.array_num_value(8) := p_source_22;
51360
51361 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
51362 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
51363
51364 ---------------------------------------------------------------------------------------------------------------
51365 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
51366 ---------------------------------------------------------------------------------------------------------------
51367 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
51368
51369 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
51370 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
51371
51372 IF xla_accounting_cache_pkg.GetValueChar
51373 (p_source_code => 'LEDGER_CATEGORY_CODE'
51374 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
51375 AND l_bflow_method_code = 'PRIOR_ENTRY'
51376 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
51377 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
51378 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
51379 )
51380 THEN
51381 xla_ae_lines_pkg.BflowUpgEntry
51382 (p_business_method_code => l_bflow_method_code
51383 ,p_business_class_code => l_bflow_class_code
51384 ,p_balance_type => l_balance_type_code);
51385 ELSE
51386 NULL;
51387 -- No business flow processing for business flow method of NONE.
51388 END IF;
51389
51390 --
51391 -- call analytical criteria
51392 --
51393
51394 --
51395 -- call description
51396 --
51397 -- No description or it is inherited.
51398 --
51399 -- call ADRs
51400 -- Bug 4922099
51401 --
51402 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
51403 (NVL(l_actual_upg_option, 'N') = 'O') OR
51404 (NVL(l_enc_upg_option, 'N') = 'O')
51405 )
51406 THEN
51407 NULL;
51408 --
51409 --
51410
51411 l_ccid := AcctDerRule_4(
51412 p_application_id => p_application_id
51413 , p_ae_header_id => l_ae_header_id
51414 , p_source_4 => p_source_4
51415 , x_transaction_coa_id => l_adr_transaction_coa_id
51416 , x_accounting_coa_id => l_adr_accounting_coa_id
51417 , x_value_type_code => l_adr_value_type_code
51418 , p_side => 'NA'
51419 );
51420
51421 xla_ae_lines_pkg.set_ccid(
51422 p_code_combination_id => l_ccid
51423 , p_value_type_code => l_adr_value_type_code
51424 , p_transaction_coa_id => l_adr_transaction_coa_id
51425 , p_accounting_coa_id => l_adr_accounting_coa_id
51426 , p_adr_code => 'CST_DEFAULT'
51427 , p_adr_type_code => 'S'
51428 , p_component_type => l_component_type
51429 , p_component_code => l_component_code
51430 , p_component_type_code => l_component_type_code
51431 , p_component_appl_id => l_component_appl_id
51432 , p_amb_context_code => l_amb_context_code
51433 , p_side => 'NA'
51434 );
51435
51436
51437 --
51438 --
51439 END IF;
51440 --
51441 -- Bug 4922099
51442 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
51443 (NVL(l_enc_upg_option, 'N') = 'O')
51444 ) AND
51445 (l_bflow_method_code = 'PRIOR_ENTRY')
51446 )
51447 THEN
51448 IF
51449 --
51450 1 = 2
51451 --
51452 THEN
51453 xla_accounting_err_pkg.build_message
51454 (p_appli_s_name => 'XLA'
51455 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
51456 ,p_token_1 => 'LINE_NUMBER'
51457 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
51458 ,p_token_2 => 'LINE_TYPE_NAME'
51459 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
51460 l_component_type
51461 ,l_component_code
51462 ,l_component_type_code
51463 ,l_component_appl_id
51464 ,l_amb_context_code
51465 ,l_entity_code
51466 ,l_event_class_code
51467 )
51468 ,p_token_3 => 'OWNER'
51469 ,p_value_3 => xla_lookups_pkg.get_meaning(
51470 p_lookup_type => 'XLA_OWNER_TYPE'
51471 ,p_lookup_code => l_component_type_code
51472 )
51473 ,p_token_4 => 'PRODUCT_NAME'
51474 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
51475 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
51476 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
51477 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
51478 ,p_ae_header_id => NULL
51479 );
51480
51481 IF (C_LEVEL_ERROR>= g_log_level) THEN
51482 trace
51483 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
51484 ,p_level => C_LEVEL_ERROR
51485 ,p_module => l_log_module);
51486 END IF;
51487 END IF;
51488 END IF;
51489 --
51490 --
51491 ------------------------------------------------------------------------------------------------
51492 -- 4219869 Business Flow
51493 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
51494 -- Prior Entry. Currently, the following code is always generated.
51495 ------------------------------------------------------------------------------------------------
51496 XLA_AE_LINES_PKG.ValidateCurrentLine;
51497
51498 ------------------------------------------------------------------------------------
51499 -- 4219869 Business Flow
51500 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
51501 ------------------------------------------------------------------------------------
51502 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
51503
51504 ----------------------------------------------------------------------------------
51505 -- 4219869 Business Flow
51506 -- Update journal entry status -- Need to generate this within IF <condition>
51507 ----------------------------------------------------------------------------------
51508 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
51509 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
51510 ,p_balance_type_code => l_balance_type_code
51511 );
51512
51513 -------------------------------------------------------------------------------------------
51514 -- 4262811 - Generate the Accrual Reversal lines
51515 -------------------------------------------------------------------------------------------
51516 BEGIN
51517 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
51518 (g_array_event(p_event_id).array_value_num('header_index'));
51519 IF l_acc_rev_flag IS NULL THEN
51520 l_acc_rev_flag := 'N';
51521 END IF;
51522 EXCEPTION
51523 WHEN OTHERS THEN
51524 l_acc_rev_flag := 'N';
51525 END;
51526 --
51527 IF (l_acc_rev_flag = 'Y') THEN
51528
51529 -- 4645092 ------------------------------------------------------------------------------
51530 -- To allow MPA report to determine if it should generate report process
51531 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
51532 ------------------------------------------------------------------------------------------
51533
51534 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
51535 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
51536 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
51537 -- call ADRs
51538 -- Bug 4922099
51539 --
51540 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
51541 (NVL(l_actual_upg_option, 'N') = 'O') OR
51542 (NVL(l_enc_upg_option, 'N') = 'O')
51543 )
51544 THEN
51545 NULL;
51546 --
51547 --
51548
51549 l_ccid := AcctDerRule_4(
51550 p_application_id => p_application_id
51551 , p_ae_header_id => l_ae_header_id
51552 , p_source_4 => p_source_4
51553 , x_transaction_coa_id => l_adr_transaction_coa_id
51554 , x_accounting_coa_id => l_adr_accounting_coa_id
51555 , x_value_type_code => l_adr_value_type_code
51556 , p_side => 'NA'
51557 );
51558
51559 xla_ae_lines_pkg.set_ccid(
51560 p_code_combination_id => l_ccid
51561 , p_value_type_code => l_adr_value_type_code
51562 , p_transaction_coa_id => l_adr_transaction_coa_id
51563 , p_accounting_coa_id => l_adr_accounting_coa_id
51564 , p_adr_code => 'CST_DEFAULT'
51565 , p_adr_type_code => 'S'
51566 , p_component_type => l_component_type
51567 , p_component_code => l_component_code
51568 , p_component_type_code => l_component_type_code
51569 , p_component_appl_id => l_component_appl_id
51570 , p_amb_context_code => l_amb_context_code
51571 , p_side => 'NA'
51572 );
51573
51574
51575 --
51576 --
51577 END IF;
51578
51579 --
51580 -- Update the line information that should be overwritten
51581 --
51582 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
51583 p_header_num => 1);
51584 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
51585
51586 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
51587
51588 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
51589 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
51590 END IF;
51591
51592 --
51593 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
51594 --
51595 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
51596 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
51597 ELSE
51598 ---------------------------------------------------------------------------------------------------
51599 -- 4262811a Switch Sign
51600 ---------------------------------------------------------------------------------------------------
51601 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
51602 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
51603 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
51604 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
51605 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
51606 -- 5132302
51607 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
51608 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
51609
51610 END IF;
51611
51612 -- 4955764
51613 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
51614 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
51615
51616
51617 XLA_AE_LINES_PKG.ValidateCurrentLine;
51618 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
51619
51620 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
51621 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
51622 ,p_balance_type_code => l_balance_type_code);
51623
51624 END IF;
51625
51626 -----------------------------------------------------------------------------------------
51627 -- 4262811 Multiperiod Accounting
51628 -----------------------------------------------------------------------------------------
51629 -- No MPA option is assigned.
51630
51631
51632 END IF;
51633 END IF;
51634 --
51635
51636 --
51637 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
51638 trace
51639 (p_msg => 'END of AcctLineType_95'
51640 ,p_level => C_LEVEL_PROCEDURE
51641 ,p_module => l_log_module);
51642 END IF;
51643 --
51644 EXCEPTION
51645 WHEN xla_exceptions_pkg.application_exception THEN
51646 RAISE;
51647 WHEN OTHERS THEN
51648 xla_exceptions_pkg.raise_message
51649 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_95');
51650 END AcctLineType_95;
51651 --
51652
51653 ---------------------------------------
51654 --
51655 -- PRIVATE FUNCTION
51656 -- AcctLineType_96
51657 --
51658 ---------------------------------------
51659 PROCEDURE AcctLineType_96 (
51660 p_application_id IN NUMBER
51661 ,p_event_id IN NUMBER
51662 ,p_calculate_acctd_flag IN VARCHAR2
51663 ,p_calculate_g_l_flag IN VARCHAR2
51664 ,p_actual_flag IN OUT VARCHAR2
51665 ,p_balance_type_code OUT VARCHAR2
51666 ,p_gain_or_loss_ref OUT VARCHAR2
51667
51668 --Cost Management Default Account
51669 , p_source_4 IN NUMBER
51670 --DISTRIBUTION_IDENTIFIER
51671 , p_source_11 IN NUMBER
51672 --Distribution Type
51673 , p_source_12 IN VARCHAR2
51674 , p_source_12_meaning IN VARCHAR2
51675 --Entered Currency Code
51676 , p_source_15 IN VARCHAR2
51677 --Entered Amount
51678 , p_source_18 IN NUMBER
51679 --Currency Conversion Date
51680 , p_source_19 IN DATE
51681 --Currency Conversion Rate
51682 , p_source_20 IN NUMBER
51683 --Currency Conversion Type
51684 , p_source_21 IN VARCHAR2
51685 --Accounted Amount
51686 , p_source_22 IN NUMBER
51687 --Accounting Line Type
51688 , p_source_24 IN NUMBER
51689 )
51690 IS
51691
51692 l_component_type VARCHAR2(80);
51693 l_component_code VARCHAR2(30);
51694 l_component_type_code VARCHAR2(1);
51695 l_component_appl_id INTEGER;
51696 l_amb_context_code VARCHAR2(30);
51697 l_entity_code VARCHAR2(30);
51698 l_event_class_code VARCHAR2(30);
51699 l_ae_header_id NUMBER;
51700 l_event_type_code VARCHAR2(30);
51701 l_line_definition_code VARCHAR2(30);
51702 l_line_definition_owner_code VARCHAR2(1);
51703 --
51704 -- adr variables
51705 l_segment VARCHAR2(30);
51706 l_ccid NUMBER;
51707 l_adr_transaction_coa_id NUMBER;
51708 l_adr_accounting_coa_id NUMBER;
51709 l_adr_flexfield_segment_code VARCHAR2(30);
51710 l_adr_flex_value_set_id NUMBER;
51711 l_adr_value_type_code VARCHAR2(30);
51712 l_adr_value_combination_id NUMBER;
51713 l_adr_value_segment_code VARCHAR2(30);
51714
51715 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
51716 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
51717 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
51718 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
51719
51720 -- 4262811 Variables ------------------------------------------------------------------------------------------
51721 l_entered_amt_idx NUMBER;
51722 l_accted_amt_idx NUMBER;
51723 l_acc_rev_flag VARCHAR2(1);
51724 l_accrual_line_num NUMBER;
51725 l_tmp_amt NUMBER;
51726 l_acc_rev_natural_side_code VARCHAR2(1);
51727
51728 l_num_entries NUMBER;
51729 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
51730 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
51731 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
51732 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
51733 l_recog_line_1 NUMBER;
51734 l_recog_line_2 NUMBER;
51735
51736 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
51737 l_bflow_applied_to_amt NUMBER; -- 5132302
51738 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
51739
51740 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
51741
51742 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
51743 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
51744
51745 ---------------------------------------------------------------------------------------------------------------
51746
51747
51748 --
51749 -- bulk performance
51750 --
51751 l_balance_type_code VARCHAR2(1);
51752 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
51753 l_log_module VARCHAR2(240);
51754
51755 --
51756 -- Upgrade strategy
51757 --
51758 l_actual_upg_option VARCHAR2(1);
51759 l_enc_upg_option VARCHAR2(1);
51760
51761 --
51762 BEGIN
51763 --
51764 IF g_log_enabled THEN
51765 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_96';
51766 END IF;
51767 --
51768 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
51769
51770 trace
51771 (p_msg => 'BEGIN of AcctLineType_96'
51772 ,p_level => C_LEVEL_PROCEDURE
51773 ,p_module => l_log_module);
51774
51775 END IF;
51776 --
51777 l_component_type := 'AMB_JLT';
51778 l_component_code := 'INTERORG_RECEIVABLES';
51779 l_component_type_code := 'S';
51780 l_component_appl_id := 707;
51781 l_amb_context_code := 'DEFAULT';
51782 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
51783 l_event_class_code := 'FOB_RCPT_SENDER_RCPT';
51784 l_event_type_code := 'FOB_RCPT_SENDER_RCPT_ALL';
51785 l_line_definition_owner_code := 'S';
51786 l_line_definition_code := 'FOB_RCPT_SENDER_RCPT';
51787 --
51788 l_balance_type_code := 'A';
51789 l_segment := NULL;
51790 l_ccid := NULL;
51791 l_adr_transaction_coa_id := NULL;
51792 l_adr_accounting_coa_id := NULL;
51793 l_adr_flexfield_segment_code := NULL;
51794 l_adr_flex_value_set_id := NULL;
51795 l_adr_value_type_code := NULL;
51796 l_adr_value_combination_id := NULL;
51797 l_adr_value_segment_code := NULL;
51798
51799 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
51800 l_bflow_class_code := ''; -- 4219869 Business Flow
51801 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
51802 l_budgetary_control_flag := 'N';
51803
51804 l_bflow_applied_to_amt_idx := NULL; -- 5132302
51805 l_bflow_applied_to_amt := NULL; -- 5132302
51806 l_entered_amt_idx := NULL; -- 4262811
51807 l_accted_amt_idx := NULL; -- 4262811
51808 l_acc_rev_flag := NULL; -- 4262811
51809 l_accrual_line_num := NULL; -- 4262811
51810 l_tmp_amt := NULL; -- 4262811
51811 --
51812
51813 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
51814 l_balance_type_code <> 'B' THEN
51815 IF NVL(p_source_24,9E125) = 10
51816 THEN
51817
51818 --
51819 XLA_AE_LINES_PKG.SetNewLine;
51820
51821 p_balance_type_code := l_balance_type_code;
51822 -- set the flag so later we will know whether the gain loss line needs to be created
51823
51824 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
51825 p_actual_flag :='A';
51826 END IF;
51827
51828 --
51829 -- bulk performance
51830 --
51831 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
51832 p_header_num => 0); -- 4262811
51833 --
51834 -- set accounting line options
51835 --
51836 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
51837 p_natural_side_code => 'D'
51838 , p_gain_or_loss_flag => 'N'
51839 , p_gl_transfer_mode_code => 'S'
51840 , p_acct_entry_type_code => 'A'
51841 , p_switch_side_flag => 'Y'
51842 , p_merge_duplicate_code => 'N'
51843 );
51844 --
51845 l_acc_rev_natural_side_code := 'C'; -- 4262811
51846 --
51847 --
51848 -- set accounting line type info
51849 --
51850 xla_ae_lines_pkg.SetAcctLineType
51851 (p_component_type => l_component_type
51852 ,p_event_type_code => l_event_type_code
51853 ,p_line_definition_owner_code => l_line_definition_owner_code
51854 ,p_line_definition_code => l_line_definition_code
51855 ,p_accounting_line_code => l_component_code
51856 ,p_accounting_line_type_code => l_component_type_code
51857 ,p_accounting_line_appl_id => l_component_appl_id
51858 ,p_amb_context_code => l_amb_context_code
51859 ,p_entity_code => l_entity_code
51860 ,p_event_class_code => l_event_class_code);
51861 --
51862 -- set accounting class
51863 --
51864 xla_ae_lines_pkg.SetAcctClass(
51865 p_accounting_class_code => 'INTERORG_RECEIVABLES'
51866 , p_ae_header_id => l_ae_header_id
51867 );
51868
51869 --
51870 -- set rounding class
51871 --
51872 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
51873 'INTERORG_RECEIVABLES';
51874
51875 --
51876 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
51877 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
51878 --
51879 -- bulk performance
51880 --
51881 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
51882
51883 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
51884 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
51885
51886 -- 4955764
51887 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
51888 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
51889
51890 -- 4458381 Public Sector Enh
51891
51892 --
51893 -- set accounting attributes for the line type
51894 --
51895 l_entered_amt_idx := 3;
51896 l_accted_amt_idx := 8;
51897 l_bflow_applied_to_amt_idx := NULL; -- 5132302
51898 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
51899 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
51900 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
51901 l_rec_acct_attrs.array_char_value(2) := p_source_12;
51902 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
51903 l_rec_acct_attrs.array_num_value(3) := p_source_18;
51904 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
51905 l_rec_acct_attrs.array_char_value(4) := p_source_15;
51906 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
51907 l_rec_acct_attrs.array_date_value(5) := p_source_19;
51908 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
51909 l_rec_acct_attrs.array_num_value(6) := p_source_20;
51910 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
51911 l_rec_acct_attrs.array_char_value(7) := p_source_21;
51912 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
51913 l_rec_acct_attrs.array_num_value(8) := p_source_22;
51914
51915 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
51916 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
51917
51918 ---------------------------------------------------------------------------------------------------------------
51919 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
51920 ---------------------------------------------------------------------------------------------------------------
51921 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
51922
51923 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
51924 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
51925
51926 IF xla_accounting_cache_pkg.GetValueChar
51927 (p_source_code => 'LEDGER_CATEGORY_CODE'
51928 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
51929 AND l_bflow_method_code = 'PRIOR_ENTRY'
51930 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
51931 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
51932 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
51933 )
51934 THEN
51935 xla_ae_lines_pkg.BflowUpgEntry
51936 (p_business_method_code => l_bflow_method_code
51937 ,p_business_class_code => l_bflow_class_code
51938 ,p_balance_type => l_balance_type_code);
51939 ELSE
51940 NULL;
51941 -- No business flow processing for business flow method of NONE.
51942 END IF;
51943
51944 --
51945 -- call analytical criteria
51946 --
51947
51948 --
51949 -- call description
51950 --
51951 -- No description or it is inherited.
51952 --
51953 -- call ADRs
51954 -- Bug 4922099
51955 --
51956 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
51957 (NVL(l_actual_upg_option, 'N') = 'O') OR
51958 (NVL(l_enc_upg_option, 'N') = 'O')
51959 )
51960 THEN
51961 NULL;
51962 --
51963 --
51964
51965 l_ccid := AcctDerRule_4(
51966 p_application_id => p_application_id
51967 , p_ae_header_id => l_ae_header_id
51968 , p_source_4 => p_source_4
51969 , x_transaction_coa_id => l_adr_transaction_coa_id
51970 , x_accounting_coa_id => l_adr_accounting_coa_id
51971 , x_value_type_code => l_adr_value_type_code
51972 , p_side => 'NA'
51973 );
51974
51975 xla_ae_lines_pkg.set_ccid(
51976 p_code_combination_id => l_ccid
51977 , p_value_type_code => l_adr_value_type_code
51978 , p_transaction_coa_id => l_adr_transaction_coa_id
51979 , p_accounting_coa_id => l_adr_accounting_coa_id
51980 , p_adr_code => 'CST_DEFAULT'
51981 , p_adr_type_code => 'S'
51982 , p_component_type => l_component_type
51983 , p_component_code => l_component_code
51984 , p_component_type_code => l_component_type_code
51985 , p_component_appl_id => l_component_appl_id
51986 , p_amb_context_code => l_amb_context_code
51987 , p_side => 'NA'
51988 );
51989
51990
51991 --
51992 --
51993 END IF;
51994 --
51995 -- Bug 4922099
51996 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
51997 (NVL(l_enc_upg_option, 'N') = 'O')
51998 ) AND
51999 (l_bflow_method_code = 'PRIOR_ENTRY')
52000 )
52001 THEN
52002 IF
52003 --
52004 1 = 2
52005 --
52006 THEN
52007 xla_accounting_err_pkg.build_message
52008 (p_appli_s_name => 'XLA'
52009 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
52010 ,p_token_1 => 'LINE_NUMBER'
52011 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
52012 ,p_token_2 => 'LINE_TYPE_NAME'
52013 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
52014 l_component_type
52015 ,l_component_code
52016 ,l_component_type_code
52017 ,l_component_appl_id
52018 ,l_amb_context_code
52019 ,l_entity_code
52020 ,l_event_class_code
52021 )
52022 ,p_token_3 => 'OWNER'
52023 ,p_value_3 => xla_lookups_pkg.get_meaning(
52024 p_lookup_type => 'XLA_OWNER_TYPE'
52025 ,p_lookup_code => l_component_type_code
52026 )
52027 ,p_token_4 => 'PRODUCT_NAME'
52028 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
52029 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
52030 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
52031 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
52032 ,p_ae_header_id => NULL
52033 );
52034
52035 IF (C_LEVEL_ERROR>= g_log_level) THEN
52036 trace
52037 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
52038 ,p_level => C_LEVEL_ERROR
52039 ,p_module => l_log_module);
52040 END IF;
52041 END IF;
52042 END IF;
52043 --
52044 --
52045 ------------------------------------------------------------------------------------------------
52046 -- 4219869 Business Flow
52047 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
52048 -- Prior Entry. Currently, the following code is always generated.
52049 ------------------------------------------------------------------------------------------------
52050 XLA_AE_LINES_PKG.ValidateCurrentLine;
52051
52052 ------------------------------------------------------------------------------------
52053 -- 4219869 Business Flow
52054 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
52055 ------------------------------------------------------------------------------------
52056 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
52057
52058 ----------------------------------------------------------------------------------
52059 -- 4219869 Business Flow
52060 -- Update journal entry status -- Need to generate this within IF <condition>
52061 ----------------------------------------------------------------------------------
52062 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
52063 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
52064 ,p_balance_type_code => l_balance_type_code
52065 );
52066
52067 -------------------------------------------------------------------------------------------
52068 -- 4262811 - Generate the Accrual Reversal lines
52069 -------------------------------------------------------------------------------------------
52070 BEGIN
52071 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
52072 (g_array_event(p_event_id).array_value_num('header_index'));
52073 IF l_acc_rev_flag IS NULL THEN
52074 l_acc_rev_flag := 'N';
52075 END IF;
52076 EXCEPTION
52077 WHEN OTHERS THEN
52078 l_acc_rev_flag := 'N';
52079 END;
52080 --
52081 IF (l_acc_rev_flag = 'Y') THEN
52082
52083 -- 4645092 ------------------------------------------------------------------------------
52084 -- To allow MPA report to determine if it should generate report process
52085 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
52086 ------------------------------------------------------------------------------------------
52087
52088 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
52089 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
52090 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
52091 -- call ADRs
52092 -- Bug 4922099
52093 --
52094 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
52095 (NVL(l_actual_upg_option, 'N') = 'O') OR
52096 (NVL(l_enc_upg_option, 'N') = 'O')
52097 )
52098 THEN
52099 NULL;
52100 --
52101 --
52102
52103 l_ccid := AcctDerRule_4(
52104 p_application_id => p_application_id
52105 , p_ae_header_id => l_ae_header_id
52106 , p_source_4 => p_source_4
52107 , x_transaction_coa_id => l_adr_transaction_coa_id
52108 , x_accounting_coa_id => l_adr_accounting_coa_id
52109 , x_value_type_code => l_adr_value_type_code
52110 , p_side => 'NA'
52111 );
52112
52113 xla_ae_lines_pkg.set_ccid(
52114 p_code_combination_id => l_ccid
52115 , p_value_type_code => l_adr_value_type_code
52116 , p_transaction_coa_id => l_adr_transaction_coa_id
52117 , p_accounting_coa_id => l_adr_accounting_coa_id
52118 , p_adr_code => 'CST_DEFAULT'
52119 , p_adr_type_code => 'S'
52120 , p_component_type => l_component_type
52121 , p_component_code => l_component_code
52122 , p_component_type_code => l_component_type_code
52123 , p_component_appl_id => l_component_appl_id
52124 , p_amb_context_code => l_amb_context_code
52125 , p_side => 'NA'
52126 );
52127
52128
52129 --
52130 --
52131 END IF;
52132
52133 --
52134 -- Update the line information that should be overwritten
52135 --
52136 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
52137 p_header_num => 1);
52138 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
52139
52140 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
52141
52142 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
52143 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
52144 END IF;
52145
52146 --
52147 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
52148 --
52149 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
52150 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
52151 ELSE
52152 ---------------------------------------------------------------------------------------------------
52153 -- 4262811a Switch Sign
52154 ---------------------------------------------------------------------------------------------------
52155 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
52156 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
52157 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
52158 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
52159 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
52160 -- 5132302
52161 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
52162 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
52163
52164 END IF;
52165
52166 -- 4955764
52167 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
52168 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
52169
52170
52171 XLA_AE_LINES_PKG.ValidateCurrentLine;
52172 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
52173
52174 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
52175 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
52176 ,p_balance_type_code => l_balance_type_code);
52177
52178 END IF;
52179
52180 -----------------------------------------------------------------------------------------
52181 -- 4262811 Multiperiod Accounting
52182 -----------------------------------------------------------------------------------------
52183 -- No MPA option is assigned.
52184
52185
52186 END IF;
52187 END IF;
52188 --
52189
52190 --
52191 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
52192 trace
52193 (p_msg => 'END of AcctLineType_96'
52194 ,p_level => C_LEVEL_PROCEDURE
52195 ,p_module => l_log_module);
52196 END IF;
52197 --
52198 EXCEPTION
52199 WHEN xla_exceptions_pkg.application_exception THEN
52200 RAISE;
52201 WHEN OTHERS THEN
52202 xla_exceptions_pkg.raise_message
52203 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_96');
52204 END AcctLineType_96;
52205 --
52206
52207 ---------------------------------------
52208 --
52209 -- PRIVATE FUNCTION
52210 -- AcctLineType_97
52211 --
52212 ---------------------------------------
52213 PROCEDURE AcctLineType_97 (
52214 p_application_id IN NUMBER
52215 ,p_event_id IN NUMBER
52216 ,p_calculate_acctd_flag IN VARCHAR2
52217 ,p_calculate_g_l_flag IN VARCHAR2
52218 ,p_actual_flag IN OUT VARCHAR2
52219 ,p_balance_type_code OUT VARCHAR2
52220 ,p_gain_or_loss_ref OUT VARCHAR2
52221
52222 --Cost Management Default Account
52223 , p_source_4 IN NUMBER
52224 --DISTRIBUTION_IDENTIFIER
52225 , p_source_11 IN NUMBER
52226 --Distribution Type
52227 , p_source_12 IN VARCHAR2
52228 , p_source_12_meaning IN VARCHAR2
52229 --Entered Currency Code
52230 , p_source_15 IN VARCHAR2
52231 --Entered Amount
52232 , p_source_18 IN NUMBER
52233 --Currency Conversion Date
52234 , p_source_19 IN DATE
52235 --Currency Conversion Rate
52236 , p_source_20 IN NUMBER
52237 --Currency Conversion Type
52238 , p_source_21 IN VARCHAR2
52239 --Accounted Amount
52240 , p_source_22 IN NUMBER
52241 --Accounting Line Type
52242 , p_source_24 IN NUMBER
52243 )
52244 IS
52245
52246 l_component_type VARCHAR2(80);
52247 l_component_code VARCHAR2(30);
52248 l_component_type_code VARCHAR2(1);
52249 l_component_appl_id INTEGER;
52250 l_amb_context_code VARCHAR2(30);
52251 l_entity_code VARCHAR2(30);
52252 l_event_class_code VARCHAR2(30);
52253 l_ae_header_id NUMBER;
52254 l_event_type_code VARCHAR2(30);
52255 l_line_definition_code VARCHAR2(30);
52256 l_line_definition_owner_code VARCHAR2(1);
52257 --
52258 -- adr variables
52259 l_segment VARCHAR2(30);
52260 l_ccid NUMBER;
52261 l_adr_transaction_coa_id NUMBER;
52262 l_adr_accounting_coa_id NUMBER;
52263 l_adr_flexfield_segment_code VARCHAR2(30);
52264 l_adr_flex_value_set_id NUMBER;
52265 l_adr_value_type_code VARCHAR2(30);
52266 l_adr_value_combination_id NUMBER;
52267 l_adr_value_segment_code VARCHAR2(30);
52268
52269 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
52270 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
52271 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
52272 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
52273
52274 -- 4262811 Variables ------------------------------------------------------------------------------------------
52275 l_entered_amt_idx NUMBER;
52276 l_accted_amt_idx NUMBER;
52277 l_acc_rev_flag VARCHAR2(1);
52278 l_accrual_line_num NUMBER;
52279 l_tmp_amt NUMBER;
52280 l_acc_rev_natural_side_code VARCHAR2(1);
52281
52282 l_num_entries NUMBER;
52283 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
52284 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
52285 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
52286 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
52287 l_recog_line_1 NUMBER;
52288 l_recog_line_2 NUMBER;
52289
52290 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
52291 l_bflow_applied_to_amt NUMBER; -- 5132302
52292 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
52293
52294 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
52295
52296 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
52297 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
52298
52299 ---------------------------------------------------------------------------------------------------------------
52300
52301
52302 --
52303 -- bulk performance
52304 --
52305 l_balance_type_code VARCHAR2(1);
52306 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
52307 l_log_module VARCHAR2(240);
52308
52309 --
52310 -- Upgrade strategy
52311 --
52312 l_actual_upg_option VARCHAR2(1);
52313 l_enc_upg_option VARCHAR2(1);
52314
52315 --
52316 BEGIN
52317 --
52318 IF g_log_enabled THEN
52319 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_97';
52320 END IF;
52321 --
52322 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
52323
52324 trace
52325 (p_msg => 'BEGIN of AcctLineType_97'
52326 ,p_level => C_LEVEL_PROCEDURE
52327 ,p_module => l_log_module);
52328
52329 END IF;
52330 --
52331 l_component_type := 'AMB_JLT';
52332 l_component_code := 'INTERORG_RECEIVABLES';
52333 l_component_type_code := 'S';
52334 l_component_appl_id := 707;
52335 l_amb_context_code := 'DEFAULT';
52336 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
52337 l_event_class_code := 'FOB_SHIP_SENDER_SHIP';
52338 l_event_type_code := 'FOB_SHIP_SENDER_SHIP_ALL';
52339 l_line_definition_owner_code := 'S';
52340 l_line_definition_code := 'FOB_SHIP_SENDER_SHIP';
52341 --
52342 l_balance_type_code := 'A';
52343 l_segment := NULL;
52344 l_ccid := NULL;
52345 l_adr_transaction_coa_id := NULL;
52346 l_adr_accounting_coa_id := NULL;
52347 l_adr_flexfield_segment_code := NULL;
52348 l_adr_flex_value_set_id := NULL;
52349 l_adr_value_type_code := NULL;
52350 l_adr_value_combination_id := NULL;
52351 l_adr_value_segment_code := NULL;
52352
52353 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
52354 l_bflow_class_code := ''; -- 4219869 Business Flow
52355 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
52356 l_budgetary_control_flag := 'N';
52357
52358 l_bflow_applied_to_amt_idx := NULL; -- 5132302
52359 l_bflow_applied_to_amt := NULL; -- 5132302
52360 l_entered_amt_idx := NULL; -- 4262811
52361 l_accted_amt_idx := NULL; -- 4262811
52362 l_acc_rev_flag := NULL; -- 4262811
52363 l_accrual_line_num := NULL; -- 4262811
52364 l_tmp_amt := NULL; -- 4262811
52365 --
52366
52367 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
52368 l_balance_type_code <> 'B' THEN
52369 IF NVL(p_source_24,9E125) = 10
52370 THEN
52371
52372 --
52373 XLA_AE_LINES_PKG.SetNewLine;
52374
52375 p_balance_type_code := l_balance_type_code;
52376 -- set the flag so later we will know whether the gain loss line needs to be created
52377
52378 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
52379 p_actual_flag :='A';
52380 END IF;
52381
52382 --
52383 -- bulk performance
52384 --
52385 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
52386 p_header_num => 0); -- 4262811
52387 --
52388 -- set accounting line options
52389 --
52390 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
52391 p_natural_side_code => 'D'
52392 , p_gain_or_loss_flag => 'N'
52393 , p_gl_transfer_mode_code => 'S'
52394 , p_acct_entry_type_code => 'A'
52395 , p_switch_side_flag => 'Y'
52396 , p_merge_duplicate_code => 'N'
52397 );
52398 --
52399 l_acc_rev_natural_side_code := 'C'; -- 4262811
52400 --
52401 --
52402 -- set accounting line type info
52403 --
52404 xla_ae_lines_pkg.SetAcctLineType
52405 (p_component_type => l_component_type
52406 ,p_event_type_code => l_event_type_code
52407 ,p_line_definition_owner_code => l_line_definition_owner_code
52408 ,p_line_definition_code => l_line_definition_code
52409 ,p_accounting_line_code => l_component_code
52410 ,p_accounting_line_type_code => l_component_type_code
52411 ,p_accounting_line_appl_id => l_component_appl_id
52412 ,p_amb_context_code => l_amb_context_code
52413 ,p_entity_code => l_entity_code
52414 ,p_event_class_code => l_event_class_code);
52415 --
52416 -- set accounting class
52417 --
52418 xla_ae_lines_pkg.SetAcctClass(
52419 p_accounting_class_code => 'INTERORG_RECEIVABLES'
52420 , p_ae_header_id => l_ae_header_id
52421 );
52422
52423 --
52424 -- set rounding class
52425 --
52426 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
52427 'INTERORG_RECEIVABLES';
52428
52429 --
52430 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
52431 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
52432 --
52433 -- bulk performance
52434 --
52435 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
52436
52437 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
52438 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
52439
52440 -- 4955764
52441 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
52442 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
52443
52444 -- 4458381 Public Sector Enh
52445
52446 --
52447 -- set accounting attributes for the line type
52448 --
52449 l_entered_amt_idx := 3;
52450 l_accted_amt_idx := 8;
52451 l_bflow_applied_to_amt_idx := NULL; -- 5132302
52452 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
52453 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
52454 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
52455 l_rec_acct_attrs.array_char_value(2) := p_source_12;
52456 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
52457 l_rec_acct_attrs.array_num_value(3) := p_source_18;
52458 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
52459 l_rec_acct_attrs.array_char_value(4) := p_source_15;
52460 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
52461 l_rec_acct_attrs.array_date_value(5) := p_source_19;
52462 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
52463 l_rec_acct_attrs.array_num_value(6) := p_source_20;
52464 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
52465 l_rec_acct_attrs.array_char_value(7) := p_source_21;
52466 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
52467 l_rec_acct_attrs.array_num_value(8) := p_source_22;
52468
52469 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
52470 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
52471
52472 ---------------------------------------------------------------------------------------------------------------
52473 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
52474 ---------------------------------------------------------------------------------------------------------------
52475 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
52476
52477 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
52478 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
52479
52480 IF xla_accounting_cache_pkg.GetValueChar
52481 (p_source_code => 'LEDGER_CATEGORY_CODE'
52482 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
52483 AND l_bflow_method_code = 'PRIOR_ENTRY'
52484 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
52485 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
52486 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
52487 )
52488 THEN
52489 xla_ae_lines_pkg.BflowUpgEntry
52490 (p_business_method_code => l_bflow_method_code
52491 ,p_business_class_code => l_bflow_class_code
52492 ,p_balance_type => l_balance_type_code);
52493 ELSE
52494 NULL;
52495 -- No business flow processing for business flow method of NONE.
52496 END IF;
52497
52498 --
52499 -- call analytical criteria
52500 --
52501
52502 --
52503 -- call description
52504 --
52505 -- No description or it is inherited.
52506 --
52507 -- call ADRs
52508 -- Bug 4922099
52509 --
52510 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
52511 (NVL(l_actual_upg_option, 'N') = 'O') OR
52512 (NVL(l_enc_upg_option, 'N') = 'O')
52513 )
52514 THEN
52515 NULL;
52516 --
52517 --
52518
52519 l_ccid := AcctDerRule_4(
52520 p_application_id => p_application_id
52521 , p_ae_header_id => l_ae_header_id
52522 , p_source_4 => p_source_4
52523 , x_transaction_coa_id => l_adr_transaction_coa_id
52524 , x_accounting_coa_id => l_adr_accounting_coa_id
52525 , x_value_type_code => l_adr_value_type_code
52526 , p_side => 'NA'
52527 );
52528
52529 xla_ae_lines_pkg.set_ccid(
52530 p_code_combination_id => l_ccid
52531 , p_value_type_code => l_adr_value_type_code
52532 , p_transaction_coa_id => l_adr_transaction_coa_id
52533 , p_accounting_coa_id => l_adr_accounting_coa_id
52534 , p_adr_code => 'CST_DEFAULT'
52535 , p_adr_type_code => 'S'
52536 , p_component_type => l_component_type
52537 , p_component_code => l_component_code
52538 , p_component_type_code => l_component_type_code
52539 , p_component_appl_id => l_component_appl_id
52540 , p_amb_context_code => l_amb_context_code
52541 , p_side => 'NA'
52542 );
52543
52544
52545 --
52546 --
52547 END IF;
52548 --
52549 -- Bug 4922099
52550 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
52551 (NVL(l_enc_upg_option, 'N') = 'O')
52552 ) AND
52553 (l_bflow_method_code = 'PRIOR_ENTRY')
52554 )
52555 THEN
52556 IF
52557 --
52558 1 = 2
52559 --
52560 THEN
52561 xla_accounting_err_pkg.build_message
52562 (p_appli_s_name => 'XLA'
52563 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
52564 ,p_token_1 => 'LINE_NUMBER'
52565 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
52566 ,p_token_2 => 'LINE_TYPE_NAME'
52567 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
52568 l_component_type
52569 ,l_component_code
52570 ,l_component_type_code
52571 ,l_component_appl_id
52572 ,l_amb_context_code
52573 ,l_entity_code
52574 ,l_event_class_code
52575 )
52576 ,p_token_3 => 'OWNER'
52577 ,p_value_3 => xla_lookups_pkg.get_meaning(
52578 p_lookup_type => 'XLA_OWNER_TYPE'
52579 ,p_lookup_code => l_component_type_code
52580 )
52581 ,p_token_4 => 'PRODUCT_NAME'
52582 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
52583 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
52584 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
52585 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
52586 ,p_ae_header_id => NULL
52587 );
52588
52589 IF (C_LEVEL_ERROR>= g_log_level) THEN
52590 trace
52591 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
52592 ,p_level => C_LEVEL_ERROR
52593 ,p_module => l_log_module);
52594 END IF;
52595 END IF;
52596 END IF;
52597 --
52598 --
52599 ------------------------------------------------------------------------------------------------
52600 -- 4219869 Business Flow
52601 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
52602 -- Prior Entry. Currently, the following code is always generated.
52603 ------------------------------------------------------------------------------------------------
52604 XLA_AE_LINES_PKG.ValidateCurrentLine;
52605
52606 ------------------------------------------------------------------------------------
52607 -- 4219869 Business Flow
52608 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
52609 ------------------------------------------------------------------------------------
52610 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
52611
52612 ----------------------------------------------------------------------------------
52613 -- 4219869 Business Flow
52614 -- Update journal entry status -- Need to generate this within IF <condition>
52615 ----------------------------------------------------------------------------------
52616 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
52617 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
52618 ,p_balance_type_code => l_balance_type_code
52619 );
52620
52621 -------------------------------------------------------------------------------------------
52622 -- 4262811 - Generate the Accrual Reversal lines
52623 -------------------------------------------------------------------------------------------
52624 BEGIN
52625 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
52626 (g_array_event(p_event_id).array_value_num('header_index'));
52627 IF l_acc_rev_flag IS NULL THEN
52628 l_acc_rev_flag := 'N';
52629 END IF;
52630 EXCEPTION
52631 WHEN OTHERS THEN
52632 l_acc_rev_flag := 'N';
52633 END;
52634 --
52635 IF (l_acc_rev_flag = 'Y') THEN
52636
52637 -- 4645092 ------------------------------------------------------------------------------
52638 -- To allow MPA report to determine if it should generate report process
52639 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
52640 ------------------------------------------------------------------------------------------
52641
52642 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
52643 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
52644 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
52645 -- call ADRs
52646 -- Bug 4922099
52647 --
52648 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
52649 (NVL(l_actual_upg_option, 'N') = 'O') OR
52650 (NVL(l_enc_upg_option, 'N') = 'O')
52651 )
52652 THEN
52653 NULL;
52654 --
52655 --
52656
52657 l_ccid := AcctDerRule_4(
52658 p_application_id => p_application_id
52659 , p_ae_header_id => l_ae_header_id
52660 , p_source_4 => p_source_4
52661 , x_transaction_coa_id => l_adr_transaction_coa_id
52662 , x_accounting_coa_id => l_adr_accounting_coa_id
52663 , x_value_type_code => l_adr_value_type_code
52664 , p_side => 'NA'
52665 );
52666
52667 xla_ae_lines_pkg.set_ccid(
52668 p_code_combination_id => l_ccid
52669 , p_value_type_code => l_adr_value_type_code
52670 , p_transaction_coa_id => l_adr_transaction_coa_id
52671 , p_accounting_coa_id => l_adr_accounting_coa_id
52672 , p_adr_code => 'CST_DEFAULT'
52673 , p_adr_type_code => 'S'
52674 , p_component_type => l_component_type
52675 , p_component_code => l_component_code
52676 , p_component_type_code => l_component_type_code
52677 , p_component_appl_id => l_component_appl_id
52678 , p_amb_context_code => l_amb_context_code
52679 , p_side => 'NA'
52680 );
52681
52682
52683 --
52684 --
52685 END IF;
52686
52687 --
52688 -- Update the line information that should be overwritten
52689 --
52690 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
52691 p_header_num => 1);
52692 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
52693
52694 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
52695
52696 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
52697 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
52698 END IF;
52699
52700 --
52701 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
52702 --
52703 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
52704 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
52705 ELSE
52706 ---------------------------------------------------------------------------------------------------
52707 -- 4262811a Switch Sign
52708 ---------------------------------------------------------------------------------------------------
52709 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
52710 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
52711 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
52712 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
52713 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
52714 -- 5132302
52715 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
52716 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
52717
52718 END IF;
52719
52720 -- 4955764
52721 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
52722 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
52723
52724
52725 XLA_AE_LINES_PKG.ValidateCurrentLine;
52726 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
52727
52728 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
52729 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
52730 ,p_balance_type_code => l_balance_type_code);
52731
52732 END IF;
52733
52734 -----------------------------------------------------------------------------------------
52735 -- 4262811 Multiperiod Accounting
52736 -----------------------------------------------------------------------------------------
52737 -- No MPA option is assigned.
52738
52739
52740 END IF;
52741 END IF;
52742 --
52743
52744 --
52745 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
52746 trace
52747 (p_msg => 'END of AcctLineType_97'
52748 ,p_level => C_LEVEL_PROCEDURE
52749 ,p_module => l_log_module);
52750 END IF;
52751 --
52752 EXCEPTION
52753 WHEN xla_exceptions_pkg.application_exception THEN
52754 RAISE;
52755 WHEN OTHERS THEN
52756 xla_exceptions_pkg.raise_message
52757 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_97');
52758 END AcctLineType_97;
52759 --
52760
52761 ---------------------------------------
52762 --
52763 -- PRIVATE FUNCTION
52764 -- AcctLineType_98
52765 --
52766 ---------------------------------------
52767 PROCEDURE AcctLineType_98 (
52768 p_application_id IN NUMBER
52769 ,p_event_id IN NUMBER
52770 ,p_calculate_acctd_flag IN VARCHAR2
52771 ,p_calculate_g_l_flag IN VARCHAR2
52772 ,p_actual_flag IN OUT VARCHAR2
52773 ,p_balance_type_code OUT VARCHAR2
52774 ,p_gain_or_loss_ref OUT VARCHAR2
52775
52776 --Cost Management Default Account
52777 , p_source_4 IN NUMBER
52778 --DISTRIBUTION_IDENTIFIER
52779 , p_source_11 IN NUMBER
52780 --Distribution Type
52781 , p_source_12 IN VARCHAR2
52782 , p_source_12_meaning IN VARCHAR2
52783 --Entered Currency Code
52784 , p_source_15 IN VARCHAR2
52785 --Entered Amount
52786 , p_source_18 IN NUMBER
52787 --Currency Conversion Date
52788 , p_source_19 IN DATE
52789 --Currency Conversion Rate
52790 , p_source_20 IN NUMBER
52791 --Currency Conversion Type
52792 , p_source_21 IN VARCHAR2
52793 --Accounted Amount
52794 , p_source_22 IN NUMBER
52795 --Accounting Line Type
52796 , p_source_24 IN NUMBER
52797 )
52798 IS
52799
52800 l_component_type VARCHAR2(80);
52801 l_component_code VARCHAR2(30);
52802 l_component_type_code VARCHAR2(1);
52803 l_component_appl_id INTEGER;
52804 l_amb_context_code VARCHAR2(30);
52805 l_entity_code VARCHAR2(30);
52806 l_event_class_code VARCHAR2(30);
52807 l_ae_header_id NUMBER;
52808 l_event_type_code VARCHAR2(30);
52809 l_line_definition_code VARCHAR2(30);
52810 l_line_definition_owner_code VARCHAR2(1);
52811 --
52812 -- adr variables
52813 l_segment VARCHAR2(30);
52814 l_ccid NUMBER;
52815 l_adr_transaction_coa_id NUMBER;
52816 l_adr_accounting_coa_id NUMBER;
52817 l_adr_flexfield_segment_code VARCHAR2(30);
52818 l_adr_flex_value_set_id NUMBER;
52819 l_adr_value_type_code VARCHAR2(30);
52820 l_adr_value_combination_id NUMBER;
52821 l_adr_value_segment_code VARCHAR2(30);
52822
52823 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
52824 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
52825 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
52826 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
52827
52828 -- 4262811 Variables ------------------------------------------------------------------------------------------
52829 l_entered_amt_idx NUMBER;
52830 l_accted_amt_idx NUMBER;
52831 l_acc_rev_flag VARCHAR2(1);
52832 l_accrual_line_num NUMBER;
52833 l_tmp_amt NUMBER;
52834 l_acc_rev_natural_side_code VARCHAR2(1);
52835
52836 l_num_entries NUMBER;
52837 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
52838 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
52839 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
52840 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
52841 l_recog_line_1 NUMBER;
52842 l_recog_line_2 NUMBER;
52843
52844 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
52845 l_bflow_applied_to_amt NUMBER; -- 5132302
52846 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
52847
52848 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
52849
52850 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
52851 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
52852
52853 ---------------------------------------------------------------------------------------------------------------
52854
52855
52856 --
52857 -- bulk performance
52858 --
52859 l_balance_type_code VARCHAR2(1);
52860 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
52861 l_log_module VARCHAR2(240);
52862
52863 --
52864 -- Upgrade strategy
52865 --
52866 l_actual_upg_option VARCHAR2(1);
52867 l_enc_upg_option VARCHAR2(1);
52868
52869 --
52870 BEGIN
52871 --
52872 IF g_log_enabled THEN
52873 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_98';
52874 END IF;
52875 --
52876 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
52877
52878 trace
52879 (p_msg => 'BEGIN of AcctLineType_98'
52880 ,p_level => C_LEVEL_PROCEDURE
52881 ,p_module => l_log_module);
52882
52883 END IF;
52884 --
52885 l_component_type := 'AMB_JLT';
52886 l_component_code := 'INTERORG_RECEIVABLES';
52887 l_component_type_code := 'S';
52888 l_component_appl_id := 707;
52889 l_amb_context_code := 'DEFAULT';
52890 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
52891 l_event_class_code := 'USER_DEFINE';
52892 l_event_type_code := 'UDIR_INTERORG_SHIP_NO_TP';
52893 l_line_definition_owner_code := 'S';
52894 l_line_definition_code := 'USER_DIR_INTERORG_SHIP_NO_TP';
52895 --
52896 l_balance_type_code := 'A';
52897 l_segment := NULL;
52898 l_ccid := NULL;
52899 l_adr_transaction_coa_id := NULL;
52900 l_adr_accounting_coa_id := NULL;
52901 l_adr_flexfield_segment_code := NULL;
52902 l_adr_flex_value_set_id := NULL;
52903 l_adr_value_type_code := NULL;
52904 l_adr_value_combination_id := NULL;
52905 l_adr_value_segment_code := NULL;
52906
52907 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
52908 l_bflow_class_code := ''; -- 4219869 Business Flow
52909 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
52910 l_budgetary_control_flag := 'N';
52911
52912 l_bflow_applied_to_amt_idx := NULL; -- 5132302
52913 l_bflow_applied_to_amt := NULL; -- 5132302
52914 l_entered_amt_idx := NULL; -- 4262811
52915 l_accted_amt_idx := NULL; -- 4262811
52916 l_acc_rev_flag := NULL; -- 4262811
52917 l_accrual_line_num := NULL; -- 4262811
52918 l_tmp_amt := NULL; -- 4262811
52919 --
52920
52921 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
52922 l_balance_type_code <> 'B' THEN
52923 IF NVL(p_source_24,9E125) = 10
52924 THEN
52925
52926 --
52927 XLA_AE_LINES_PKG.SetNewLine;
52928
52929 p_balance_type_code := l_balance_type_code;
52930 -- set the flag so later we will know whether the gain loss line needs to be created
52931
52932 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
52933 p_actual_flag :='A';
52934 END IF;
52935
52936 --
52937 -- bulk performance
52938 --
52939 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
52940 p_header_num => 0); -- 4262811
52941 --
52942 -- set accounting line options
52943 --
52944 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
52945 p_natural_side_code => 'D'
52946 , p_gain_or_loss_flag => 'N'
52947 , p_gl_transfer_mode_code => 'S'
52948 , p_acct_entry_type_code => 'A'
52949 , p_switch_side_flag => 'Y'
52950 , p_merge_duplicate_code => 'N'
52951 );
52952 --
52953 l_acc_rev_natural_side_code := 'C'; -- 4262811
52954 --
52955 --
52956 -- set accounting line type info
52957 --
52958 xla_ae_lines_pkg.SetAcctLineType
52959 (p_component_type => l_component_type
52960 ,p_event_type_code => l_event_type_code
52961 ,p_line_definition_owner_code => l_line_definition_owner_code
52962 ,p_line_definition_code => l_line_definition_code
52963 ,p_accounting_line_code => l_component_code
52964 ,p_accounting_line_type_code => l_component_type_code
52965 ,p_accounting_line_appl_id => l_component_appl_id
52966 ,p_amb_context_code => l_amb_context_code
52967 ,p_entity_code => l_entity_code
52968 ,p_event_class_code => l_event_class_code);
52969 --
52970 -- set accounting class
52971 --
52972 xla_ae_lines_pkg.SetAcctClass(
52973 p_accounting_class_code => 'INTERORG_RECEIVABLES'
52974 , p_ae_header_id => l_ae_header_id
52975 );
52976
52977 --
52978 -- set rounding class
52979 --
52980 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
52981 'INTERORG_RECEIVABLES';
52982
52983 --
52984 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
52985 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
52986 --
52987 -- bulk performance
52988 --
52989 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
52990
52991 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
52992 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
52993
52994 -- 4955764
52995 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
52996 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
52997
52998 -- 4458381 Public Sector Enh
52999
53000 --
53001 -- set accounting attributes for the line type
53002 --
53003 l_entered_amt_idx := 3;
53004 l_accted_amt_idx := 8;
53005 l_bflow_applied_to_amt_idx := NULL; -- 5132302
53006 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
53007 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
53008 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
53009 l_rec_acct_attrs.array_char_value(2) := p_source_12;
53010 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
53011 l_rec_acct_attrs.array_num_value(3) := p_source_18;
53012 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
53013 l_rec_acct_attrs.array_char_value(4) := p_source_15;
53014 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
53015 l_rec_acct_attrs.array_date_value(5) := p_source_19;
53016 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
53017 l_rec_acct_attrs.array_num_value(6) := p_source_20;
53018 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
53019 l_rec_acct_attrs.array_char_value(7) := p_source_21;
53020 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
53021 l_rec_acct_attrs.array_num_value(8) := p_source_22;
53022
53023 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
53024 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
53025
53026 ---------------------------------------------------------------------------------------------------------------
53027 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
53028 ---------------------------------------------------------------------------------------------------------------
53029 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
53030
53031 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
53032 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
53033
53034 IF xla_accounting_cache_pkg.GetValueChar
53035 (p_source_code => 'LEDGER_CATEGORY_CODE'
53036 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
53037 AND l_bflow_method_code = 'PRIOR_ENTRY'
53038 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
53039 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
53040 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
53041 )
53042 THEN
53043 xla_ae_lines_pkg.BflowUpgEntry
53044 (p_business_method_code => l_bflow_method_code
53045 ,p_business_class_code => l_bflow_class_code
53046 ,p_balance_type => l_balance_type_code);
53047 ELSE
53048 NULL;
53049 -- No business flow processing for business flow method of NONE.
53050 END IF;
53051
53052 --
53053 -- call analytical criteria
53054 --
53055
53056 --
53057 -- call description
53058 --
53059 -- No description or it is inherited.
53060 --
53061 -- call ADRs
53062 -- Bug 4922099
53063 --
53064 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
53065 (NVL(l_actual_upg_option, 'N') = 'O') OR
53066 (NVL(l_enc_upg_option, 'N') = 'O')
53067 )
53068 THEN
53069 NULL;
53070 --
53071 --
53072
53073 l_ccid := AcctDerRule_4(
53074 p_application_id => p_application_id
53075 , p_ae_header_id => l_ae_header_id
53076 , p_source_4 => p_source_4
53077 , x_transaction_coa_id => l_adr_transaction_coa_id
53078 , x_accounting_coa_id => l_adr_accounting_coa_id
53079 , x_value_type_code => l_adr_value_type_code
53080 , p_side => 'NA'
53081 );
53082
53083 xla_ae_lines_pkg.set_ccid(
53084 p_code_combination_id => l_ccid
53085 , p_value_type_code => l_adr_value_type_code
53086 , p_transaction_coa_id => l_adr_transaction_coa_id
53087 , p_accounting_coa_id => l_adr_accounting_coa_id
53088 , p_adr_code => 'CST_DEFAULT'
53089 , p_adr_type_code => 'S'
53090 , p_component_type => l_component_type
53091 , p_component_code => l_component_code
53092 , p_component_type_code => l_component_type_code
53093 , p_component_appl_id => l_component_appl_id
53094 , p_amb_context_code => l_amb_context_code
53095 , p_side => 'NA'
53096 );
53097
53098
53099 --
53100 --
53101 END IF;
53102 --
53103 -- Bug 4922099
53104 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
53105 (NVL(l_enc_upg_option, 'N') = 'O')
53106 ) AND
53107 (l_bflow_method_code = 'PRIOR_ENTRY')
53108 )
53109 THEN
53110 IF
53111 --
53112 1 = 2
53113 --
53114 THEN
53115 xla_accounting_err_pkg.build_message
53116 (p_appli_s_name => 'XLA'
53117 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
53118 ,p_token_1 => 'LINE_NUMBER'
53119 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
53120 ,p_token_2 => 'LINE_TYPE_NAME'
53121 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
53122 l_component_type
53123 ,l_component_code
53124 ,l_component_type_code
53125 ,l_component_appl_id
53126 ,l_amb_context_code
53127 ,l_entity_code
53128 ,l_event_class_code
53129 )
53130 ,p_token_3 => 'OWNER'
53131 ,p_value_3 => xla_lookups_pkg.get_meaning(
53132 p_lookup_type => 'XLA_OWNER_TYPE'
53133 ,p_lookup_code => l_component_type_code
53134 )
53135 ,p_token_4 => 'PRODUCT_NAME'
53136 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
53137 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
53138 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
53139 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
53140 ,p_ae_header_id => NULL
53141 );
53142
53143 IF (C_LEVEL_ERROR>= g_log_level) THEN
53144 trace
53145 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
53146 ,p_level => C_LEVEL_ERROR
53147 ,p_module => l_log_module);
53148 END IF;
53149 END IF;
53150 END IF;
53151 --
53152 --
53153 ------------------------------------------------------------------------------------------------
53154 -- 4219869 Business Flow
53155 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
53156 -- Prior Entry. Currently, the following code is always generated.
53157 ------------------------------------------------------------------------------------------------
53158 XLA_AE_LINES_PKG.ValidateCurrentLine;
53159
53160 ------------------------------------------------------------------------------------
53161 -- 4219869 Business Flow
53162 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
53163 ------------------------------------------------------------------------------------
53164 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
53165
53166 ----------------------------------------------------------------------------------
53167 -- 4219869 Business Flow
53168 -- Update journal entry status -- Need to generate this within IF <condition>
53169 ----------------------------------------------------------------------------------
53170 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
53171 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
53172 ,p_balance_type_code => l_balance_type_code
53173 );
53174
53175 -------------------------------------------------------------------------------------------
53176 -- 4262811 - Generate the Accrual Reversal lines
53177 -------------------------------------------------------------------------------------------
53178 BEGIN
53179 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
53180 (g_array_event(p_event_id).array_value_num('header_index'));
53181 IF l_acc_rev_flag IS NULL THEN
53182 l_acc_rev_flag := 'N';
53183 END IF;
53184 EXCEPTION
53185 WHEN OTHERS THEN
53186 l_acc_rev_flag := 'N';
53187 END;
53188 --
53189 IF (l_acc_rev_flag = 'Y') THEN
53190
53191 -- 4645092 ------------------------------------------------------------------------------
53192 -- To allow MPA report to determine if it should generate report process
53193 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
53194 ------------------------------------------------------------------------------------------
53195
53196 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
53197 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
53198 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
53199 -- call ADRs
53200 -- Bug 4922099
53201 --
53202 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
53203 (NVL(l_actual_upg_option, 'N') = 'O') OR
53204 (NVL(l_enc_upg_option, 'N') = 'O')
53205 )
53206 THEN
53207 NULL;
53208 --
53209 --
53210
53211 l_ccid := AcctDerRule_4(
53212 p_application_id => p_application_id
53213 , p_ae_header_id => l_ae_header_id
53214 , p_source_4 => p_source_4
53215 , x_transaction_coa_id => l_adr_transaction_coa_id
53216 , x_accounting_coa_id => l_adr_accounting_coa_id
53217 , x_value_type_code => l_adr_value_type_code
53218 , p_side => 'NA'
53219 );
53220
53221 xla_ae_lines_pkg.set_ccid(
53222 p_code_combination_id => l_ccid
53223 , p_value_type_code => l_adr_value_type_code
53224 , p_transaction_coa_id => l_adr_transaction_coa_id
53225 , p_accounting_coa_id => l_adr_accounting_coa_id
53226 , p_adr_code => 'CST_DEFAULT'
53227 , p_adr_type_code => 'S'
53228 , p_component_type => l_component_type
53229 , p_component_code => l_component_code
53230 , p_component_type_code => l_component_type_code
53231 , p_component_appl_id => l_component_appl_id
53232 , p_amb_context_code => l_amb_context_code
53233 , p_side => 'NA'
53234 );
53235
53236
53237 --
53238 --
53239 END IF;
53240
53241 --
53242 -- Update the line information that should be overwritten
53243 --
53244 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
53245 p_header_num => 1);
53246 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
53247
53248 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
53249
53250 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
53251 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
53252 END IF;
53253
53254 --
53255 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
53256 --
53257 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
53258 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
53259 ELSE
53260 ---------------------------------------------------------------------------------------------------
53261 -- 4262811a Switch Sign
53262 ---------------------------------------------------------------------------------------------------
53263 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
53264 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
53265 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
53266 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
53267 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
53268 -- 5132302
53269 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
53270 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
53271
53272 END IF;
53273
53274 -- 4955764
53275 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
53276 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
53277
53278
53279 XLA_AE_LINES_PKG.ValidateCurrentLine;
53280 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
53281
53282 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
53283 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
53284 ,p_balance_type_code => l_balance_type_code);
53285
53286 END IF;
53287
53288 -----------------------------------------------------------------------------------------
53289 -- 4262811 Multiperiod Accounting
53290 -----------------------------------------------------------------------------------------
53291 -- No MPA option is assigned.
53292
53293
53294 END IF;
53295 END IF;
53296 --
53297
53298 --
53299 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
53300 trace
53301 (p_msg => 'END of AcctLineType_98'
53302 ,p_level => C_LEVEL_PROCEDURE
53303 ,p_module => l_log_module);
53304 END IF;
53305 --
53306 EXCEPTION
53307 WHEN xla_exceptions_pkg.application_exception THEN
53308 RAISE;
53309 WHEN OTHERS THEN
53310 xla_exceptions_pkg.raise_message
53311 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_98');
53312 END AcctLineType_98;
53313 --
53314
53315 ---------------------------------------
53316 --
53317 -- PRIVATE FUNCTION
53318 -- AcctLineType_99
53319 --
53320 ---------------------------------------
53321 PROCEDURE AcctLineType_99 (
53322 p_application_id IN NUMBER
53323 ,p_event_id IN NUMBER
53324 ,p_calculate_acctd_flag IN VARCHAR2
53325 ,p_calculate_g_l_flag IN VARCHAR2
53326 ,p_actual_flag IN OUT VARCHAR2
53327 ,p_balance_type_code OUT VARCHAR2
53328 ,p_gain_or_loss_ref OUT VARCHAR2
53329
53330 --Cost Management Default Account
53331 , p_source_4 IN NUMBER
53332 --DISTRIBUTION_IDENTIFIER
53333 , p_source_11 IN NUMBER
53334 --Distribution Type
53335 , p_source_12 IN VARCHAR2
53336 , p_source_12_meaning IN VARCHAR2
53337 --Entered Currency Code
53338 , p_source_15 IN VARCHAR2
53339 --Entered Amount
53340 , p_source_18 IN NUMBER
53341 --Currency Conversion Date
53342 , p_source_19 IN DATE
53343 --Currency Conversion Rate
53344 , p_source_20 IN NUMBER
53345 --Currency Conversion Type
53346 , p_source_21 IN VARCHAR2
53347 --Accounted Amount
53348 , p_source_22 IN NUMBER
53349 --Accounting Line Type
53350 , p_source_24 IN NUMBER
53351 )
53352 IS
53353
53354 l_component_type VARCHAR2(80);
53355 l_component_code VARCHAR2(30);
53356 l_component_type_code VARCHAR2(1);
53357 l_component_appl_id INTEGER;
53358 l_amb_context_code VARCHAR2(30);
53359 l_entity_code VARCHAR2(30);
53360 l_event_class_code VARCHAR2(30);
53361 l_ae_header_id NUMBER;
53362 l_event_type_code VARCHAR2(30);
53363 l_line_definition_code VARCHAR2(30);
53364 l_line_definition_owner_code VARCHAR2(1);
53365 --
53366 -- adr variables
53367 l_segment VARCHAR2(30);
53368 l_ccid NUMBER;
53369 l_adr_transaction_coa_id NUMBER;
53370 l_adr_accounting_coa_id NUMBER;
53371 l_adr_flexfield_segment_code VARCHAR2(30);
53372 l_adr_flex_value_set_id NUMBER;
53373 l_adr_value_type_code VARCHAR2(30);
53374 l_adr_value_combination_id NUMBER;
53375 l_adr_value_segment_code VARCHAR2(30);
53376
53377 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
53378 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
53379 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
53380 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
53381
53382 -- 4262811 Variables ------------------------------------------------------------------------------------------
53383 l_entered_amt_idx NUMBER;
53384 l_accted_amt_idx NUMBER;
53385 l_acc_rev_flag VARCHAR2(1);
53386 l_accrual_line_num NUMBER;
53387 l_tmp_amt NUMBER;
53388 l_acc_rev_natural_side_code VARCHAR2(1);
53389
53390 l_num_entries NUMBER;
53391 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
53392 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
53393 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
53394 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
53395 l_recog_line_1 NUMBER;
53396 l_recog_line_2 NUMBER;
53397
53398 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
53399 l_bflow_applied_to_amt NUMBER; -- 5132302
53400 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
53401
53402 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
53403
53404 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
53405 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
53406
53407 ---------------------------------------------------------------------------------------------------------------
53408
53409
53410 --
53411 -- bulk performance
53412 --
53413 l_balance_type_code VARCHAR2(1);
53414 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
53415 l_log_module VARCHAR2(240);
53416
53417 --
53418 -- Upgrade strategy
53419 --
53420 l_actual_upg_option VARCHAR2(1);
53421 l_enc_upg_option VARCHAR2(1);
53422
53423 --
53424 BEGIN
53425 --
53426 IF g_log_enabled THEN
53427 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_99';
53428 END IF;
53429 --
53430 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
53431
53432 trace
53433 (p_msg => 'BEGIN of AcctLineType_99'
53434 ,p_level => C_LEVEL_PROCEDURE
53435 ,p_module => l_log_module);
53436
53437 END IF;
53438 --
53439 l_component_type := 'AMB_JLT';
53440 l_component_code := 'INTERORG_RECEIVABLES';
53441 l_component_type_code := 'S';
53442 l_component_appl_id := 707;
53443 l_amb_context_code := 'DEFAULT';
53444 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
53445 l_event_class_code := 'USER_DEFINE';
53446 l_event_type_code := 'UFOB_SHIP_SENDER_SHIP_NO_TP';
53447 l_line_definition_owner_code := 'S';
53448 l_line_definition_code := 'USER_FOB_SHIP_SENDER_SHIP_NOTP';
53449 --
53450 l_balance_type_code := 'A';
53451 l_segment := NULL;
53452 l_ccid := NULL;
53453 l_adr_transaction_coa_id := NULL;
53454 l_adr_accounting_coa_id := NULL;
53455 l_adr_flexfield_segment_code := NULL;
53456 l_adr_flex_value_set_id := NULL;
53457 l_adr_value_type_code := NULL;
53458 l_adr_value_combination_id := NULL;
53459 l_adr_value_segment_code := NULL;
53460
53461 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
53462 l_bflow_class_code := ''; -- 4219869 Business Flow
53463 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
53464 l_budgetary_control_flag := 'N';
53465
53466 l_bflow_applied_to_amt_idx := NULL; -- 5132302
53467 l_bflow_applied_to_amt := NULL; -- 5132302
53468 l_entered_amt_idx := NULL; -- 4262811
53469 l_accted_amt_idx := NULL; -- 4262811
53470 l_acc_rev_flag := NULL; -- 4262811
53471 l_accrual_line_num := NULL; -- 4262811
53472 l_tmp_amt := NULL; -- 4262811
53473 --
53474
53475 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
53476 l_balance_type_code <> 'B' THEN
53477 IF NVL(p_source_24,9E125) = 10
53478 THEN
53479
53480 --
53481 XLA_AE_LINES_PKG.SetNewLine;
53482
53483 p_balance_type_code := l_balance_type_code;
53484 -- set the flag so later we will know whether the gain loss line needs to be created
53485
53486 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
53487 p_actual_flag :='A';
53488 END IF;
53489
53490 --
53491 -- bulk performance
53492 --
53493 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
53494 p_header_num => 0); -- 4262811
53495 --
53496 -- set accounting line options
53497 --
53498 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
53499 p_natural_side_code => 'D'
53500 , p_gain_or_loss_flag => 'N'
53501 , p_gl_transfer_mode_code => 'S'
53502 , p_acct_entry_type_code => 'A'
53503 , p_switch_side_flag => 'Y'
53504 , p_merge_duplicate_code => 'N'
53505 );
53506 --
53507 l_acc_rev_natural_side_code := 'C'; -- 4262811
53508 --
53509 --
53510 -- set accounting line type info
53511 --
53512 xla_ae_lines_pkg.SetAcctLineType
53513 (p_component_type => l_component_type
53514 ,p_event_type_code => l_event_type_code
53515 ,p_line_definition_owner_code => l_line_definition_owner_code
53516 ,p_line_definition_code => l_line_definition_code
53517 ,p_accounting_line_code => l_component_code
53518 ,p_accounting_line_type_code => l_component_type_code
53519 ,p_accounting_line_appl_id => l_component_appl_id
53520 ,p_amb_context_code => l_amb_context_code
53521 ,p_entity_code => l_entity_code
53522 ,p_event_class_code => l_event_class_code);
53523 --
53524 -- set accounting class
53525 --
53526 xla_ae_lines_pkg.SetAcctClass(
53527 p_accounting_class_code => 'INTERORG_RECEIVABLES'
53528 , p_ae_header_id => l_ae_header_id
53529 );
53530
53531 --
53532 -- set rounding class
53533 --
53534 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
53535 'INTERORG_RECEIVABLES';
53536
53537 --
53538 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
53539 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
53540 --
53541 -- bulk performance
53542 --
53543 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
53544
53545 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
53546 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
53547
53548 -- 4955764
53549 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
53550 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
53551
53552 -- 4458381 Public Sector Enh
53553
53554 --
53555 -- set accounting attributes for the line type
53556 --
53557 l_entered_amt_idx := 3;
53558 l_accted_amt_idx := 8;
53559 l_bflow_applied_to_amt_idx := NULL; -- 5132302
53560 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
53561 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
53562 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
53563 l_rec_acct_attrs.array_char_value(2) := p_source_12;
53564 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
53565 l_rec_acct_attrs.array_num_value(3) := p_source_18;
53566 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
53567 l_rec_acct_attrs.array_char_value(4) := p_source_15;
53568 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
53569 l_rec_acct_attrs.array_date_value(5) := p_source_19;
53570 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
53571 l_rec_acct_attrs.array_num_value(6) := p_source_20;
53572 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
53573 l_rec_acct_attrs.array_char_value(7) := p_source_21;
53574 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
53575 l_rec_acct_attrs.array_num_value(8) := p_source_22;
53576
53577 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
53578 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
53579
53580 ---------------------------------------------------------------------------------------------------------------
53581 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
53582 ---------------------------------------------------------------------------------------------------------------
53583 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
53584
53585 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
53586 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
53587
53588 IF xla_accounting_cache_pkg.GetValueChar
53589 (p_source_code => 'LEDGER_CATEGORY_CODE'
53590 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
53591 AND l_bflow_method_code = 'PRIOR_ENTRY'
53592 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
53593 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
53594 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
53595 )
53596 THEN
53597 xla_ae_lines_pkg.BflowUpgEntry
53598 (p_business_method_code => l_bflow_method_code
53599 ,p_business_class_code => l_bflow_class_code
53600 ,p_balance_type => l_balance_type_code);
53601 ELSE
53602 NULL;
53603 -- No business flow processing for business flow method of NONE.
53604 END IF;
53605
53606 --
53607 -- call analytical criteria
53608 --
53609
53610 --
53611 -- call description
53612 --
53613 -- No description or it is inherited.
53614 --
53615 -- call ADRs
53616 -- Bug 4922099
53617 --
53618 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
53619 (NVL(l_actual_upg_option, 'N') = 'O') OR
53620 (NVL(l_enc_upg_option, 'N') = 'O')
53621 )
53622 THEN
53623 NULL;
53624 --
53625 --
53626
53627 l_ccid := AcctDerRule_4(
53628 p_application_id => p_application_id
53629 , p_ae_header_id => l_ae_header_id
53630 , p_source_4 => p_source_4
53631 , x_transaction_coa_id => l_adr_transaction_coa_id
53632 , x_accounting_coa_id => l_adr_accounting_coa_id
53633 , x_value_type_code => l_adr_value_type_code
53634 , p_side => 'NA'
53635 );
53636
53637 xla_ae_lines_pkg.set_ccid(
53638 p_code_combination_id => l_ccid
53639 , p_value_type_code => l_adr_value_type_code
53640 , p_transaction_coa_id => l_adr_transaction_coa_id
53641 , p_accounting_coa_id => l_adr_accounting_coa_id
53642 , p_adr_code => 'CST_DEFAULT'
53643 , p_adr_type_code => 'S'
53644 , p_component_type => l_component_type
53645 , p_component_code => l_component_code
53646 , p_component_type_code => l_component_type_code
53647 , p_component_appl_id => l_component_appl_id
53648 , p_amb_context_code => l_amb_context_code
53649 , p_side => 'NA'
53650 );
53651
53652
53653 --
53654 --
53655 END IF;
53656 --
53657 -- Bug 4922099
53658 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
53659 (NVL(l_enc_upg_option, 'N') = 'O')
53660 ) AND
53661 (l_bflow_method_code = 'PRIOR_ENTRY')
53662 )
53663 THEN
53664 IF
53665 --
53666 1 = 2
53667 --
53668 THEN
53669 xla_accounting_err_pkg.build_message
53670 (p_appli_s_name => 'XLA'
53671 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
53672 ,p_token_1 => 'LINE_NUMBER'
53673 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
53674 ,p_token_2 => 'LINE_TYPE_NAME'
53675 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
53676 l_component_type
53677 ,l_component_code
53678 ,l_component_type_code
53679 ,l_component_appl_id
53680 ,l_amb_context_code
53681 ,l_entity_code
53682 ,l_event_class_code
53683 )
53684 ,p_token_3 => 'OWNER'
53685 ,p_value_3 => xla_lookups_pkg.get_meaning(
53686 p_lookup_type => 'XLA_OWNER_TYPE'
53687 ,p_lookup_code => l_component_type_code
53688 )
53689 ,p_token_4 => 'PRODUCT_NAME'
53690 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
53691 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
53692 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
53693 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
53694 ,p_ae_header_id => NULL
53695 );
53696
53697 IF (C_LEVEL_ERROR>= g_log_level) THEN
53698 trace
53699 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
53700 ,p_level => C_LEVEL_ERROR
53701 ,p_module => l_log_module);
53702 END IF;
53703 END IF;
53704 END IF;
53705 --
53706 --
53707 ------------------------------------------------------------------------------------------------
53708 -- 4219869 Business Flow
53709 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
53710 -- Prior Entry. Currently, the following code is always generated.
53711 ------------------------------------------------------------------------------------------------
53712 XLA_AE_LINES_PKG.ValidateCurrentLine;
53713
53714 ------------------------------------------------------------------------------------
53715 -- 4219869 Business Flow
53716 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
53717 ------------------------------------------------------------------------------------
53718 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
53719
53720 ----------------------------------------------------------------------------------
53721 -- 4219869 Business Flow
53722 -- Update journal entry status -- Need to generate this within IF <condition>
53723 ----------------------------------------------------------------------------------
53724 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
53725 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
53726 ,p_balance_type_code => l_balance_type_code
53727 );
53728
53729 -------------------------------------------------------------------------------------------
53730 -- 4262811 - Generate the Accrual Reversal lines
53731 -------------------------------------------------------------------------------------------
53732 BEGIN
53733 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
53734 (g_array_event(p_event_id).array_value_num('header_index'));
53735 IF l_acc_rev_flag IS NULL THEN
53736 l_acc_rev_flag := 'N';
53737 END IF;
53738 EXCEPTION
53739 WHEN OTHERS THEN
53740 l_acc_rev_flag := 'N';
53741 END;
53742 --
53743 IF (l_acc_rev_flag = 'Y') THEN
53744
53745 -- 4645092 ------------------------------------------------------------------------------
53746 -- To allow MPA report to determine if it should generate report process
53747 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
53748 ------------------------------------------------------------------------------------------
53749
53750 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
53751 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
53752 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
53753 -- call ADRs
53754 -- Bug 4922099
53755 --
53756 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
53757 (NVL(l_actual_upg_option, 'N') = 'O') OR
53758 (NVL(l_enc_upg_option, 'N') = 'O')
53759 )
53760 THEN
53761 NULL;
53762 --
53763 --
53764
53765 l_ccid := AcctDerRule_4(
53766 p_application_id => p_application_id
53767 , p_ae_header_id => l_ae_header_id
53768 , p_source_4 => p_source_4
53769 , x_transaction_coa_id => l_adr_transaction_coa_id
53770 , x_accounting_coa_id => l_adr_accounting_coa_id
53771 , x_value_type_code => l_adr_value_type_code
53772 , p_side => 'NA'
53773 );
53774
53775 xla_ae_lines_pkg.set_ccid(
53776 p_code_combination_id => l_ccid
53777 , p_value_type_code => l_adr_value_type_code
53778 , p_transaction_coa_id => l_adr_transaction_coa_id
53779 , p_accounting_coa_id => l_adr_accounting_coa_id
53780 , p_adr_code => 'CST_DEFAULT'
53781 , p_adr_type_code => 'S'
53782 , p_component_type => l_component_type
53783 , p_component_code => l_component_code
53784 , p_component_type_code => l_component_type_code
53785 , p_component_appl_id => l_component_appl_id
53786 , p_amb_context_code => l_amb_context_code
53787 , p_side => 'NA'
53788 );
53789
53790
53791 --
53792 --
53793 END IF;
53794
53795 --
53796 -- Update the line information that should be overwritten
53797 --
53798 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
53799 p_header_num => 1);
53800 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
53801
53802 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
53803
53804 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
53805 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
53806 END IF;
53807
53808 --
53809 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
53810 --
53811 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
53812 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
53813 ELSE
53814 ---------------------------------------------------------------------------------------------------
53815 -- 4262811a Switch Sign
53816 ---------------------------------------------------------------------------------------------------
53817 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
53818 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
53819 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
53820 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
53821 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
53822 -- 5132302
53823 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
53824 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
53825
53826 END IF;
53827
53828 -- 4955764
53829 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
53830 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
53831
53832
53833 XLA_AE_LINES_PKG.ValidateCurrentLine;
53834 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
53835
53836 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
53837 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
53838 ,p_balance_type_code => l_balance_type_code);
53839
53840 END IF;
53841
53842 -----------------------------------------------------------------------------------------
53843 -- 4262811 Multiperiod Accounting
53844 -----------------------------------------------------------------------------------------
53845 -- No MPA option is assigned.
53846
53847
53848 END IF;
53849 END IF;
53850 --
53851
53852 --
53853 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
53854 trace
53855 (p_msg => 'END of AcctLineType_99'
53856 ,p_level => C_LEVEL_PROCEDURE
53857 ,p_module => l_log_module);
53858 END IF;
53859 --
53860 EXCEPTION
53861 WHEN xla_exceptions_pkg.application_exception THEN
53862 RAISE;
53863 WHEN OTHERS THEN
53864 xla_exceptions_pkg.raise_message
53865 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_99');
53866 END AcctLineType_99;
53867 --
53868
53869 ---------------------------------------
53870 --
53871 -- PRIVATE FUNCTION
53872 -- AcctLineType_100
53873 --
53874 ---------------------------------------
53875 PROCEDURE AcctLineType_100 (
53876 p_application_id IN NUMBER
53877 ,p_event_id IN NUMBER
53878 ,p_calculate_acctd_flag IN VARCHAR2
53879 ,p_calculate_g_l_flag IN VARCHAR2
53880 ,p_actual_flag IN OUT VARCHAR2
53881 ,p_balance_type_code OUT VARCHAR2
53882 ,p_gain_or_loss_ref OUT VARCHAR2
53883
53884 --Cost Management Default Account
53885 , p_source_4 IN NUMBER
53886 --Applied to Application ID
53887 , p_source_6 IN NUMBER
53888 --Applied to Distribution Link Type
53889 , p_source_7 IN VARCHAR2
53890 --Applied to Entity Code
53891 , p_source_8 IN VARCHAR2
53892 --DISTRIBUTION_IDENTIFIER
53893 , p_source_11 IN NUMBER
53894 --Distribution Type
53895 , p_source_12 IN VARCHAR2
53896 , p_source_12_meaning IN VARCHAR2
53897 --Encumbrance Reversal Amount Entered
53898 , p_source_14 IN NUMBER
53899 --Entered Currency Code
53900 , p_source_15 IN VARCHAR2
53901 --Transaction Encumbrance Reversal Amount
53902 , p_source_16 IN NUMBER
53903 --Entered Amount
53904 , p_source_18 IN NUMBER
53905 --Currency Conversion Date
53906 , p_source_19 IN DATE
53907 --Currency Conversion Rate
53908 , p_source_20 IN NUMBER
53909 --Currency Conversion Type
53910 , p_source_21 IN VARCHAR2
53911 --Accounted Amount
53912 , p_source_22 IN NUMBER
53913 --Accounting Line Type
53914 , p_source_24 IN NUMBER
53915 --Costing Encumbrance Upgrade Option
53916 , p_source_27 IN VARCHAR2
53917 --TXN_PO_DISTRIBUTION_ID
53918 , p_source_28 IN NUMBER
53919 --TXN_PO_HEADER_ID
53920 , p_source_29 IN NUMBER
53921 --Requisition Budget Account
53922 , p_source_30 IN NUMBER
53923 --Requisition Encumbrance Type Identifier
53924 , p_source_31 IN NUMBER
53925 )
53926 IS
53927
53928 l_component_type VARCHAR2(80);
53929 l_component_code VARCHAR2(30);
53930 l_component_type_code VARCHAR2(1);
53931 l_component_appl_id INTEGER;
53932 l_amb_context_code VARCHAR2(30);
53933 l_entity_code VARCHAR2(30);
53934 l_event_class_code VARCHAR2(30);
53935 l_ae_header_id NUMBER;
53936 l_event_type_code VARCHAR2(30);
53937 l_line_definition_code VARCHAR2(30);
53938 l_line_definition_owner_code VARCHAR2(1);
53939 --
53940 -- adr variables
53941 l_segment VARCHAR2(30);
53942 l_ccid NUMBER;
53943 l_adr_transaction_coa_id NUMBER;
53944 l_adr_accounting_coa_id NUMBER;
53945 l_adr_flexfield_segment_code VARCHAR2(30);
53946 l_adr_flex_value_set_id NUMBER;
53947 l_adr_value_type_code VARCHAR2(30);
53948 l_adr_value_combination_id NUMBER;
53949 l_adr_value_segment_code VARCHAR2(30);
53950
53951 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
53952 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
53953 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
53954 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
53955
53956 -- 4262811 Variables ------------------------------------------------------------------------------------------
53957 l_entered_amt_idx NUMBER;
53958 l_accted_amt_idx NUMBER;
53959 l_acc_rev_flag VARCHAR2(1);
53960 l_accrual_line_num NUMBER;
53961 l_tmp_amt NUMBER;
53962 l_acc_rev_natural_side_code VARCHAR2(1);
53963
53964 l_num_entries NUMBER;
53965 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
53966 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
53967 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
53968 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
53969 l_recog_line_1 NUMBER;
53970 l_recog_line_2 NUMBER;
53971
53972 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
53973 l_bflow_applied_to_amt NUMBER; -- 5132302
53974 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
53975
53976 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
53977
53978 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
53979 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
53980
53981 ---------------------------------------------------------------------------------------------------------------
53982
53983
53984 --
53985 -- bulk performance
53986 --
53987 l_balance_type_code VARCHAR2(1);
53988 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
53989 l_log_module VARCHAR2(240);
53990
53991 --
53992 -- Upgrade strategy
53993 --
53994 l_actual_upg_option VARCHAR2(1);
53995 l_enc_upg_option VARCHAR2(1);
53996
53997 --
53998 BEGIN
53999 --
54000 IF g_log_enabled THEN
54001 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_100';
54002 END IF;
54003 --
54004 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
54005
54006 trace
54007 (p_msg => 'BEGIN of AcctLineType_100'
54008 ,p_level => C_LEVEL_PROCEDURE
54009 ,p_module => l_log_module);
54010
54011 END IF;
54012 --
54013 l_component_type := 'AMB_JLT';
54014 l_component_code := 'INTERORG_RECEIVABLES';
54015 l_component_type_code := 'S';
54016 l_component_appl_id := 707;
54017 l_amb_context_code := 'DEFAULT';
54018 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
54019 l_event_class_code := 'DIR_INTERORG_RCPT';
54020 l_event_type_code := 'DIR_INTERORG_RCPT_ALL';
54021 l_line_definition_owner_code := 'S';
54022 l_line_definition_code := 'DIRECT_INTERORG_RCPT';
54023 --
54024 l_balance_type_code := 'A';
54025 l_segment := NULL;
54026 l_ccid := NULL;
54027 l_adr_transaction_coa_id := NULL;
54028 l_adr_accounting_coa_id := NULL;
54029 l_adr_flexfield_segment_code := NULL;
54030 l_adr_flex_value_set_id := NULL;
54031 l_adr_value_type_code := NULL;
54032 l_adr_value_combination_id := NULL;
54033 l_adr_value_segment_code := NULL;
54034
54035 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
54036 l_bflow_class_code := ''; -- 4219869 Business Flow
54037 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
54038 l_budgetary_control_flag := 'N';
54039
54040 l_bflow_applied_to_amt_idx := NULL; -- 5132302
54041 l_bflow_applied_to_amt := NULL; -- 5132302
54042 l_entered_amt_idx := NULL; -- 4262811
54043 l_accted_amt_idx := NULL; -- 4262811
54044 l_acc_rev_flag := NULL; -- 4262811
54045 l_accrual_line_num := NULL; -- 4262811
54046 l_tmp_amt := NULL; -- 4262811
54047 --
54048
54049 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
54050 l_balance_type_code <> 'B' THEN
54051 IF NVL(p_source_24,9E125) = 10
54052 THEN
54053
54054 --
54055 XLA_AE_LINES_PKG.SetNewLine;
54056
54057 p_balance_type_code := l_balance_type_code;
54058 -- set the flag so later we will know whether the gain loss line needs to be created
54059
54060 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
54061 p_actual_flag :='A';
54062 END IF;
54063
54064 --
54065 -- bulk performance
54066 --
54067 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
54068 p_header_num => 0); -- 4262811
54069 --
54070 -- set accounting line options
54071 --
54072 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
54073 p_natural_side_code => 'D'
54074 , p_gain_or_loss_flag => 'N'
54075 , p_gl_transfer_mode_code => 'S'
54076 , p_acct_entry_type_code => 'A'
54077 , p_switch_side_flag => 'Y'
54078 , p_merge_duplicate_code => 'N'
54079 );
54080 --
54081 l_acc_rev_natural_side_code := 'C'; -- 4262811
54082 --
54083 --
54084 -- set accounting line type info
54085 --
54086 xla_ae_lines_pkg.SetAcctLineType
54087 (p_component_type => l_component_type
54088 ,p_event_type_code => l_event_type_code
54089 ,p_line_definition_owner_code => l_line_definition_owner_code
54090 ,p_line_definition_code => l_line_definition_code
54091 ,p_accounting_line_code => l_component_code
54092 ,p_accounting_line_type_code => l_component_type_code
54093 ,p_accounting_line_appl_id => l_component_appl_id
54094 ,p_amb_context_code => l_amb_context_code
54095 ,p_entity_code => l_entity_code
54096 ,p_event_class_code => l_event_class_code);
54097 --
54098 -- set accounting class
54099 --
54100 xla_ae_lines_pkg.SetAcctClass(
54101 p_accounting_class_code => 'INTERORG_RECEIVABLES'
54102 , p_ae_header_id => l_ae_header_id
54103 );
54104
54105 --
54106 -- set rounding class
54107 --
54108 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
54109 'INTERORG_RECEIVABLES';
54110
54111 --
54112 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
54113 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
54114 --
54115 -- bulk performance
54116 --
54117 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
54118
54119 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
54120 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
54121
54122 -- 4955764
54123 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
54124 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
54125
54126 -- 4458381 Public Sector Enh
54127
54128 --
54129 -- set accounting attributes for the line type
54130 --
54131 l_entered_amt_idx := 17;
54132 l_accted_amt_idx := 22;
54133 l_bflow_applied_to_amt_idx := NULL; -- 5132302
54134 l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
54135 l_rec_acct_attrs.array_num_value(1) := p_source_6;
54136 l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
54137 l_rec_acct_attrs.array_char_value(2) := p_source_7;
54138 l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
54139 l_rec_acct_attrs.array_char_value(3) := p_source_8;
54140 l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
54141 l_rec_acct_attrs.array_num_value(4) := to_char(p_source_28);
54142 l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
54143 l_rec_acct_attrs.array_num_value(5) := to_char(p_source_29);
54144 l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
54145 l_rec_acct_attrs.array_num_value(6) := to_char(p_source_11);
54146 l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
54147 l_rec_acct_attrs.array_char_value(7) := p_source_12;
54148 l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
54149 l_rec_acct_attrs.array_num_value(8) := TO_NUMBER(p_source_30);
54150 l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
54151 l_rec_acct_attrs.array_num_value(9) := p_source_14;
54152 l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
54153 l_rec_acct_attrs.array_char_value(10) := p_source_15;
54154 l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
54155 l_rec_acct_attrs.array_num_value(11) := p_source_16;
54156 l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
54157 l_rec_acct_attrs.array_num_value(12) := TO_NUMBER(p_source_30);
54158 l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
54159 l_rec_acct_attrs.array_num_value(13) := p_source_14;
54160 l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
54161 l_rec_acct_attrs.array_char_value(14) := p_source_15;
54162 l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
54163 l_rec_acct_attrs.array_num_value(15) := p_source_16;
54164 l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
54165 l_rec_acct_attrs.array_char_value(16) := p_source_27;
54166 l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
54167 l_rec_acct_attrs.array_num_value(17) := p_source_18;
54168 l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
54169 l_rec_acct_attrs.array_char_value(18) := p_source_15;
54170 l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
54171 l_rec_acct_attrs.array_date_value(19) := p_source_19;
54172 l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
54173 l_rec_acct_attrs.array_num_value(20) := p_source_20;
54174 l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
54175 l_rec_acct_attrs.array_char_value(21) := p_source_21;
54176 l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
54177 l_rec_acct_attrs.array_num_value(22) := p_source_22;
54178 l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
54179 l_rec_acct_attrs.array_num_value(23) := p_source_31;
54180 l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
54181 l_rec_acct_attrs.array_num_value(24) := p_source_31;
54182
54183 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
54184 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
54185
54186 ---------------------------------------------------------------------------------------------------------------
54187 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
54188 ---------------------------------------------------------------------------------------------------------------
54189 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
54190
54191 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
54192 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
54193
54194 IF xla_accounting_cache_pkg.GetValueChar
54195 (p_source_code => 'LEDGER_CATEGORY_CODE'
54196 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
54197 AND l_bflow_method_code = 'PRIOR_ENTRY'
54198 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
54199 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
54200 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
54201 )
54202 THEN
54203 xla_ae_lines_pkg.BflowUpgEntry
54204 (p_business_method_code => l_bflow_method_code
54205 ,p_business_class_code => l_bflow_class_code
54206 ,p_balance_type => l_balance_type_code);
54207 ELSE
54208 NULL;
54209 -- No business flow processing for business flow method of NONE.
54210 END IF;
54211
54212 --
54213 -- call analytical criteria
54214 --
54215
54216 --
54217 -- call description
54218 --
54219 -- No description or it is inherited.
54220 --
54221 -- call ADRs
54222 -- Bug 4922099
54223 --
54224 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
54225 (NVL(l_actual_upg_option, 'N') = 'O') OR
54226 (NVL(l_enc_upg_option, 'N') = 'O')
54227 )
54228 THEN
54229 NULL;
54230 --
54231 --
54232
54233 l_ccid := AcctDerRule_4(
54234 p_application_id => p_application_id
54235 , p_ae_header_id => l_ae_header_id
54236 , p_source_4 => p_source_4
54237 , x_transaction_coa_id => l_adr_transaction_coa_id
54238 , x_accounting_coa_id => l_adr_accounting_coa_id
54239 , x_value_type_code => l_adr_value_type_code
54240 , p_side => 'NA'
54241 );
54242
54243 xla_ae_lines_pkg.set_ccid(
54244 p_code_combination_id => l_ccid
54245 , p_value_type_code => l_adr_value_type_code
54246 , p_transaction_coa_id => l_adr_transaction_coa_id
54247 , p_accounting_coa_id => l_adr_accounting_coa_id
54248 , p_adr_code => 'CST_DEFAULT'
54249 , p_adr_type_code => 'S'
54250 , p_component_type => l_component_type
54251 , p_component_code => l_component_code
54252 , p_component_type_code => l_component_type_code
54253 , p_component_appl_id => l_component_appl_id
54254 , p_amb_context_code => l_amb_context_code
54255 , p_side => 'NA'
54256 );
54257
54258
54259 --
54260 --
54261 END IF;
54262 --
54263 -- Bug 4922099
54264 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
54265 (NVL(l_enc_upg_option, 'N') = 'O')
54266 ) AND
54267 (l_bflow_method_code = 'PRIOR_ENTRY')
54268 )
54269 THEN
54270 IF
54271 --
54272 1 = 2
54273 --
54274 THEN
54275 xla_accounting_err_pkg.build_message
54276 (p_appli_s_name => 'XLA'
54277 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
54278 ,p_token_1 => 'LINE_NUMBER'
54279 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
54280 ,p_token_2 => 'LINE_TYPE_NAME'
54281 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
54282 l_component_type
54283 ,l_component_code
54284 ,l_component_type_code
54285 ,l_component_appl_id
54286 ,l_amb_context_code
54287 ,l_entity_code
54288 ,l_event_class_code
54289 )
54290 ,p_token_3 => 'OWNER'
54291 ,p_value_3 => xla_lookups_pkg.get_meaning(
54292 p_lookup_type => 'XLA_OWNER_TYPE'
54293 ,p_lookup_code => l_component_type_code
54294 )
54295 ,p_token_4 => 'PRODUCT_NAME'
54296 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
54297 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
54298 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
54299 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
54300 ,p_ae_header_id => NULL
54301 );
54302
54303 IF (C_LEVEL_ERROR>= g_log_level) THEN
54304 trace
54305 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
54306 ,p_level => C_LEVEL_ERROR
54307 ,p_module => l_log_module);
54308 END IF;
54309 END IF;
54310 END IF;
54311 --
54312 --
54313 ------------------------------------------------------------------------------------------------
54314 -- 4219869 Business Flow
54315 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
54316 -- Prior Entry. Currently, the following code is always generated.
54317 ------------------------------------------------------------------------------------------------
54318 XLA_AE_LINES_PKG.ValidateCurrentLine;
54319
54320 ------------------------------------------------------------------------------------
54321 -- 4219869 Business Flow
54322 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
54323 ------------------------------------------------------------------------------------
54324 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
54325
54326 ----------------------------------------------------------------------------------
54327 -- 4219869 Business Flow
54328 -- Update journal entry status -- Need to generate this within IF <condition>
54329 ----------------------------------------------------------------------------------
54330 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
54331 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
54332 ,p_balance_type_code => l_balance_type_code
54333 );
54334
54335 -------------------------------------------------------------------------------------------
54336 -- 4262811 - Generate the Accrual Reversal lines
54337 -------------------------------------------------------------------------------------------
54338 BEGIN
54339 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
54340 (g_array_event(p_event_id).array_value_num('header_index'));
54341 IF l_acc_rev_flag IS NULL THEN
54342 l_acc_rev_flag := 'N';
54343 END IF;
54344 EXCEPTION
54345 WHEN OTHERS THEN
54346 l_acc_rev_flag := 'N';
54347 END;
54348 --
54349 IF (l_acc_rev_flag = 'Y') THEN
54350
54351 -- 4645092 ------------------------------------------------------------------------------
54352 -- To allow MPA report to determine if it should generate report process
54353 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
54354 ------------------------------------------------------------------------------------------
54355
54356 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
54357 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
54358 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
54359 -- call ADRs
54360 -- Bug 4922099
54361 --
54362 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
54363 (NVL(l_actual_upg_option, 'N') = 'O') OR
54364 (NVL(l_enc_upg_option, 'N') = 'O')
54365 )
54366 THEN
54367 NULL;
54368 --
54369 --
54370
54371 l_ccid := AcctDerRule_4(
54372 p_application_id => p_application_id
54373 , p_ae_header_id => l_ae_header_id
54374 , p_source_4 => p_source_4
54375 , x_transaction_coa_id => l_adr_transaction_coa_id
54376 , x_accounting_coa_id => l_adr_accounting_coa_id
54377 , x_value_type_code => l_adr_value_type_code
54378 , p_side => 'NA'
54379 );
54380
54381 xla_ae_lines_pkg.set_ccid(
54382 p_code_combination_id => l_ccid
54383 , p_value_type_code => l_adr_value_type_code
54384 , p_transaction_coa_id => l_adr_transaction_coa_id
54385 , p_accounting_coa_id => l_adr_accounting_coa_id
54386 , p_adr_code => 'CST_DEFAULT'
54387 , p_adr_type_code => 'S'
54388 , p_component_type => l_component_type
54389 , p_component_code => l_component_code
54390 , p_component_type_code => l_component_type_code
54391 , p_component_appl_id => l_component_appl_id
54392 , p_amb_context_code => l_amb_context_code
54393 , p_side => 'NA'
54394 );
54395
54396
54397 --
54398 --
54399 END IF;
54400
54401 --
54402 -- Update the line information that should be overwritten
54403 --
54404 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
54405 p_header_num => 1);
54406 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
54407
54408 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
54409
54410 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
54411 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
54412 END IF;
54413
54414 --
54415 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
54416 --
54417 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
54418 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
54419 ELSE
54420 ---------------------------------------------------------------------------------------------------
54421 -- 4262811a Switch Sign
54422 ---------------------------------------------------------------------------------------------------
54423 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
54424 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
54425 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
54426 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
54427 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
54428 -- 5132302
54429 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
54430 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
54431
54432 END IF;
54433
54434 -- 4955764
54435 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
54436 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
54437
54438
54439 XLA_AE_LINES_PKG.ValidateCurrentLine;
54440 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
54441
54442 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
54443 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
54444 ,p_balance_type_code => l_balance_type_code);
54445
54446 END IF;
54447
54448 -----------------------------------------------------------------------------------------
54449 -- 4262811 Multiperiod Accounting
54450 -----------------------------------------------------------------------------------------
54451 -- No MPA option is assigned.
54452
54453
54454 END IF;
54455 END IF;
54456 --
54457
54458 --
54459 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
54460 trace
54461 (p_msg => 'END of AcctLineType_100'
54462 ,p_level => C_LEVEL_PROCEDURE
54463 ,p_module => l_log_module);
54464 END IF;
54465 --
54466 EXCEPTION
54467 WHEN xla_exceptions_pkg.application_exception THEN
54468 RAISE;
54469 WHEN OTHERS THEN
54470 xla_exceptions_pkg.raise_message
54471 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_100');
54472 END AcctLineType_100;
54473 --
54474
54475 ---------------------------------------
54476 --
54477 -- PRIVATE FUNCTION
54478 -- AcctLineType_101
54479 --
54480 ---------------------------------------
54481 PROCEDURE AcctLineType_101 (
54482 p_application_id IN NUMBER
54483 ,p_event_id IN NUMBER
54484 ,p_calculate_acctd_flag IN VARCHAR2
54485 ,p_calculate_g_l_flag IN VARCHAR2
54486 ,p_actual_flag IN OUT VARCHAR2
54487 ,p_balance_type_code OUT VARCHAR2
54488 ,p_gain_or_loss_ref OUT VARCHAR2
54489
54490 --Cost Management Default Account
54491 , p_source_4 IN NUMBER
54492 --DISTRIBUTION_IDENTIFIER
54493 , p_source_11 IN NUMBER
54494 --Distribution Type
54495 , p_source_12 IN VARCHAR2
54496 , p_source_12_meaning IN VARCHAR2
54497 --Entered Currency Code
54498 , p_source_15 IN VARCHAR2
54499 --Entered Amount
54500 , p_source_18 IN NUMBER
54501 --Currency Conversion Date
54502 , p_source_19 IN DATE
54503 --Currency Conversion Rate
54504 , p_source_20 IN NUMBER
54505 --Currency Conversion Type
54506 , p_source_21 IN VARCHAR2
54507 --Accounted Amount
54508 , p_source_22 IN NUMBER
54509 --Accounting Line Type
54510 , p_source_24 IN NUMBER
54511 )
54512 IS
54513
54514 l_component_type VARCHAR2(80);
54515 l_component_code VARCHAR2(30);
54516 l_component_type_code VARCHAR2(1);
54517 l_component_appl_id INTEGER;
54518 l_amb_context_code VARCHAR2(30);
54519 l_entity_code VARCHAR2(30);
54520 l_event_class_code VARCHAR2(30);
54521 l_ae_header_id NUMBER;
54522 l_event_type_code VARCHAR2(30);
54523 l_line_definition_code VARCHAR2(30);
54524 l_line_definition_owner_code VARCHAR2(1);
54525 --
54526 -- adr variables
54527 l_segment VARCHAR2(30);
54528 l_ccid NUMBER;
54529 l_adr_transaction_coa_id NUMBER;
54530 l_adr_accounting_coa_id NUMBER;
54531 l_adr_flexfield_segment_code VARCHAR2(30);
54532 l_adr_flex_value_set_id NUMBER;
54533 l_adr_value_type_code VARCHAR2(30);
54534 l_adr_value_combination_id NUMBER;
54535 l_adr_value_segment_code VARCHAR2(30);
54536
54537 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
54538 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
54539 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
54540 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
54541
54542 -- 4262811 Variables ------------------------------------------------------------------------------------------
54543 l_entered_amt_idx NUMBER;
54544 l_accted_amt_idx NUMBER;
54545 l_acc_rev_flag VARCHAR2(1);
54546 l_accrual_line_num NUMBER;
54547 l_tmp_amt NUMBER;
54548 l_acc_rev_natural_side_code VARCHAR2(1);
54549
54550 l_num_entries NUMBER;
54551 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
54552 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
54553 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
54554 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
54555 l_recog_line_1 NUMBER;
54556 l_recog_line_2 NUMBER;
54557
54558 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
54559 l_bflow_applied_to_amt NUMBER; -- 5132302
54560 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
54561
54562 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
54563
54564 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
54565 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
54566
54567 ---------------------------------------------------------------------------------------------------------------
54568
54569
54570 --
54571 -- bulk performance
54572 --
54573 l_balance_type_code VARCHAR2(1);
54574 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
54575 l_log_module VARCHAR2(240);
54576
54577 --
54578 -- Upgrade strategy
54579 --
54580 l_actual_upg_option VARCHAR2(1);
54581 l_enc_upg_option VARCHAR2(1);
54582
54583 --
54584 BEGIN
54585 --
54586 IF g_log_enabled THEN
54587 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_101';
54588 END IF;
54589 --
54590 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
54591
54592 trace
54593 (p_msg => 'BEGIN of AcctLineType_101'
54594 ,p_level => C_LEVEL_PROCEDURE
54595 ,p_module => l_log_module);
54596
54597 END IF;
54598 --
54599 l_component_type := 'AMB_JLT';
54600 l_component_code := 'INTERORG_RECEIVABLES';
54601 l_component_type_code := 'S';
54602 l_component_appl_id := 707;
54603 l_amb_context_code := 'DEFAULT';
54604 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
54605 l_event_class_code := 'USER_DEFINE';
54606 l_event_type_code := 'UFOB_SHIP_SENDER_SHIP_TP';
54607 l_line_definition_owner_code := 'S';
54608 l_line_definition_code := 'USER_FOB_SHIP_SENDER_SHIP_TP';
54609 --
54610 l_balance_type_code := 'A';
54611 l_segment := NULL;
54612 l_ccid := NULL;
54613 l_adr_transaction_coa_id := NULL;
54614 l_adr_accounting_coa_id := NULL;
54615 l_adr_flexfield_segment_code := NULL;
54616 l_adr_flex_value_set_id := NULL;
54617 l_adr_value_type_code := NULL;
54618 l_adr_value_combination_id := NULL;
54619 l_adr_value_segment_code := NULL;
54620
54621 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
54622 l_bflow_class_code := ''; -- 4219869 Business Flow
54623 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
54624 l_budgetary_control_flag := 'N';
54625
54626 l_bflow_applied_to_amt_idx := NULL; -- 5132302
54627 l_bflow_applied_to_amt := NULL; -- 5132302
54628 l_entered_amt_idx := NULL; -- 4262811
54629 l_accted_amt_idx := NULL; -- 4262811
54630 l_acc_rev_flag := NULL; -- 4262811
54631 l_accrual_line_num := NULL; -- 4262811
54632 l_tmp_amt := NULL; -- 4262811
54633 --
54634
54635 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
54636 l_balance_type_code <> 'B' THEN
54637 IF NVL(p_source_24,9E125) = 10
54638 THEN
54639
54640 --
54641 XLA_AE_LINES_PKG.SetNewLine;
54642
54643 p_balance_type_code := l_balance_type_code;
54644 -- set the flag so later we will know whether the gain loss line needs to be created
54645
54646 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
54647 p_actual_flag :='A';
54648 END IF;
54649
54650 --
54651 -- bulk performance
54652 --
54653 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
54654 p_header_num => 0); -- 4262811
54655 --
54656 -- set accounting line options
54657 --
54658 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
54659 p_natural_side_code => 'D'
54660 , p_gain_or_loss_flag => 'N'
54661 , p_gl_transfer_mode_code => 'S'
54662 , p_acct_entry_type_code => 'A'
54663 , p_switch_side_flag => 'Y'
54664 , p_merge_duplicate_code => 'N'
54665 );
54666 --
54667 l_acc_rev_natural_side_code := 'C'; -- 4262811
54668 --
54669 --
54670 -- set accounting line type info
54671 --
54672 xla_ae_lines_pkg.SetAcctLineType
54673 (p_component_type => l_component_type
54674 ,p_event_type_code => l_event_type_code
54675 ,p_line_definition_owner_code => l_line_definition_owner_code
54676 ,p_line_definition_code => l_line_definition_code
54677 ,p_accounting_line_code => l_component_code
54678 ,p_accounting_line_type_code => l_component_type_code
54679 ,p_accounting_line_appl_id => l_component_appl_id
54680 ,p_amb_context_code => l_amb_context_code
54681 ,p_entity_code => l_entity_code
54682 ,p_event_class_code => l_event_class_code);
54683 --
54684 -- set accounting class
54685 --
54686 xla_ae_lines_pkg.SetAcctClass(
54687 p_accounting_class_code => 'INTERORG_RECEIVABLES'
54688 , p_ae_header_id => l_ae_header_id
54689 );
54690
54691 --
54692 -- set rounding class
54693 --
54694 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
54695 'INTERORG_RECEIVABLES';
54696
54697 --
54698 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
54699 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
54700 --
54701 -- bulk performance
54702 --
54703 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
54704
54705 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
54706 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
54707
54708 -- 4955764
54709 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
54710 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
54711
54712 -- 4458381 Public Sector Enh
54713
54714 --
54715 -- set accounting attributes for the line type
54716 --
54717 l_entered_amt_idx := 3;
54718 l_accted_amt_idx := 8;
54719 l_bflow_applied_to_amt_idx := NULL; -- 5132302
54720 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
54721 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
54722 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
54723 l_rec_acct_attrs.array_char_value(2) := p_source_12;
54724 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
54725 l_rec_acct_attrs.array_num_value(3) := p_source_18;
54726 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
54727 l_rec_acct_attrs.array_char_value(4) := p_source_15;
54728 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
54729 l_rec_acct_attrs.array_date_value(5) := p_source_19;
54730 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
54731 l_rec_acct_attrs.array_num_value(6) := p_source_20;
54732 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
54733 l_rec_acct_attrs.array_char_value(7) := p_source_21;
54734 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
54735 l_rec_acct_attrs.array_num_value(8) := p_source_22;
54736
54737 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
54738 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
54739
54740 ---------------------------------------------------------------------------------------------------------------
54741 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
54742 ---------------------------------------------------------------------------------------------------------------
54743 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
54744
54745 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
54746 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
54747
54748 IF xla_accounting_cache_pkg.GetValueChar
54749 (p_source_code => 'LEDGER_CATEGORY_CODE'
54750 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
54751 AND l_bflow_method_code = 'PRIOR_ENTRY'
54752 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
54753 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
54754 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
54755 )
54756 THEN
54757 xla_ae_lines_pkg.BflowUpgEntry
54758 (p_business_method_code => l_bflow_method_code
54759 ,p_business_class_code => l_bflow_class_code
54760 ,p_balance_type => l_balance_type_code);
54761 ELSE
54762 NULL;
54763 -- No business flow processing for business flow method of NONE.
54764 END IF;
54765
54766 --
54767 -- call analytical criteria
54768 --
54769
54770 --
54771 -- call description
54772 --
54773 -- No description or it is inherited.
54774 --
54775 -- call ADRs
54776 -- Bug 4922099
54777 --
54778 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
54779 (NVL(l_actual_upg_option, 'N') = 'O') OR
54780 (NVL(l_enc_upg_option, 'N') = 'O')
54781 )
54782 THEN
54783 NULL;
54784 --
54785 --
54786
54787 l_ccid := AcctDerRule_4(
54788 p_application_id => p_application_id
54789 , p_ae_header_id => l_ae_header_id
54790 , p_source_4 => p_source_4
54791 , x_transaction_coa_id => l_adr_transaction_coa_id
54792 , x_accounting_coa_id => l_adr_accounting_coa_id
54793 , x_value_type_code => l_adr_value_type_code
54794 , p_side => 'NA'
54795 );
54796
54797 xla_ae_lines_pkg.set_ccid(
54798 p_code_combination_id => l_ccid
54799 , p_value_type_code => l_adr_value_type_code
54800 , p_transaction_coa_id => l_adr_transaction_coa_id
54801 , p_accounting_coa_id => l_adr_accounting_coa_id
54802 , p_adr_code => 'CST_DEFAULT'
54803 , p_adr_type_code => 'S'
54804 , p_component_type => l_component_type
54805 , p_component_code => l_component_code
54806 , p_component_type_code => l_component_type_code
54807 , p_component_appl_id => l_component_appl_id
54808 , p_amb_context_code => l_amb_context_code
54809 , p_side => 'NA'
54810 );
54811
54812
54813 --
54814 --
54815 END IF;
54816 --
54817 -- Bug 4922099
54818 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
54819 (NVL(l_enc_upg_option, 'N') = 'O')
54820 ) AND
54821 (l_bflow_method_code = 'PRIOR_ENTRY')
54822 )
54823 THEN
54824 IF
54825 --
54826 1 = 2
54827 --
54828 THEN
54829 xla_accounting_err_pkg.build_message
54830 (p_appli_s_name => 'XLA'
54831 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
54832 ,p_token_1 => 'LINE_NUMBER'
54833 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
54834 ,p_token_2 => 'LINE_TYPE_NAME'
54835 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
54836 l_component_type
54837 ,l_component_code
54838 ,l_component_type_code
54839 ,l_component_appl_id
54840 ,l_amb_context_code
54841 ,l_entity_code
54842 ,l_event_class_code
54843 )
54844 ,p_token_3 => 'OWNER'
54845 ,p_value_3 => xla_lookups_pkg.get_meaning(
54846 p_lookup_type => 'XLA_OWNER_TYPE'
54847 ,p_lookup_code => l_component_type_code
54848 )
54849 ,p_token_4 => 'PRODUCT_NAME'
54850 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
54851 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
54852 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
54853 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
54854 ,p_ae_header_id => NULL
54855 );
54856
54857 IF (C_LEVEL_ERROR>= g_log_level) THEN
54858 trace
54859 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
54860 ,p_level => C_LEVEL_ERROR
54861 ,p_module => l_log_module);
54862 END IF;
54863 END IF;
54864 END IF;
54865 --
54866 --
54867 ------------------------------------------------------------------------------------------------
54868 -- 4219869 Business Flow
54869 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
54870 -- Prior Entry. Currently, the following code is always generated.
54871 ------------------------------------------------------------------------------------------------
54872 XLA_AE_LINES_PKG.ValidateCurrentLine;
54873
54874 ------------------------------------------------------------------------------------
54875 -- 4219869 Business Flow
54876 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
54877 ------------------------------------------------------------------------------------
54878 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
54879
54880 ----------------------------------------------------------------------------------
54881 -- 4219869 Business Flow
54882 -- Update journal entry status -- Need to generate this within IF <condition>
54883 ----------------------------------------------------------------------------------
54884 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
54885 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
54886 ,p_balance_type_code => l_balance_type_code
54887 );
54888
54889 -------------------------------------------------------------------------------------------
54890 -- 4262811 - Generate the Accrual Reversal lines
54891 -------------------------------------------------------------------------------------------
54892 BEGIN
54893 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
54894 (g_array_event(p_event_id).array_value_num('header_index'));
54895 IF l_acc_rev_flag IS NULL THEN
54896 l_acc_rev_flag := 'N';
54897 END IF;
54898 EXCEPTION
54899 WHEN OTHERS THEN
54900 l_acc_rev_flag := 'N';
54901 END;
54902 --
54903 IF (l_acc_rev_flag = 'Y') THEN
54904
54905 -- 4645092 ------------------------------------------------------------------------------
54906 -- To allow MPA report to determine if it should generate report process
54907 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
54908 ------------------------------------------------------------------------------------------
54909
54910 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
54911 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
54912 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
54913 -- call ADRs
54914 -- Bug 4922099
54915 --
54916 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
54917 (NVL(l_actual_upg_option, 'N') = 'O') OR
54918 (NVL(l_enc_upg_option, 'N') = 'O')
54919 )
54920 THEN
54921 NULL;
54922 --
54923 --
54924
54925 l_ccid := AcctDerRule_4(
54926 p_application_id => p_application_id
54927 , p_ae_header_id => l_ae_header_id
54928 , p_source_4 => p_source_4
54929 , x_transaction_coa_id => l_adr_transaction_coa_id
54930 , x_accounting_coa_id => l_adr_accounting_coa_id
54931 , x_value_type_code => l_adr_value_type_code
54932 , p_side => 'NA'
54933 );
54934
54935 xla_ae_lines_pkg.set_ccid(
54936 p_code_combination_id => l_ccid
54937 , p_value_type_code => l_adr_value_type_code
54938 , p_transaction_coa_id => l_adr_transaction_coa_id
54939 , p_accounting_coa_id => l_adr_accounting_coa_id
54940 , p_adr_code => 'CST_DEFAULT'
54941 , p_adr_type_code => 'S'
54942 , p_component_type => l_component_type
54943 , p_component_code => l_component_code
54944 , p_component_type_code => l_component_type_code
54945 , p_component_appl_id => l_component_appl_id
54946 , p_amb_context_code => l_amb_context_code
54947 , p_side => 'NA'
54948 );
54949
54950
54951 --
54952 --
54953 END IF;
54954
54955 --
54956 -- Update the line information that should be overwritten
54957 --
54958 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
54959 p_header_num => 1);
54960 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
54961
54962 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
54963
54964 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
54965 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
54966 END IF;
54967
54968 --
54969 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
54970 --
54971 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
54972 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
54973 ELSE
54974 ---------------------------------------------------------------------------------------------------
54975 -- 4262811a Switch Sign
54976 ---------------------------------------------------------------------------------------------------
54977 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
54978 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
54979 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
54980 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
54981 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
54982 -- 5132302
54983 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
54984 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
54985
54986 END IF;
54987
54988 -- 4955764
54989 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
54990 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
54991
54992
54993 XLA_AE_LINES_PKG.ValidateCurrentLine;
54994 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
54995
54996 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
54997 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
54998 ,p_balance_type_code => l_balance_type_code);
54999
55000 END IF;
55001
55002 -----------------------------------------------------------------------------------------
55003 -- 4262811 Multiperiod Accounting
55004 -----------------------------------------------------------------------------------------
55005 -- No MPA option is assigned.
55006
55007
55008 END IF;
55009 END IF;
55010 --
55011
55012 --
55013 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
55014 trace
55015 (p_msg => 'END of AcctLineType_101'
55016 ,p_level => C_LEVEL_PROCEDURE
55017 ,p_module => l_log_module);
55018 END IF;
55019 --
55020 EXCEPTION
55021 WHEN xla_exceptions_pkg.application_exception THEN
55022 RAISE;
55023 WHEN OTHERS THEN
55024 xla_exceptions_pkg.raise_message
55025 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_101');
55026 END AcctLineType_101;
55027 --
55028
55029 ---------------------------------------
55030 --
55031 -- PRIVATE FUNCTION
55032 -- AcctLineType_102
55033 --
55034 ---------------------------------------
55035 PROCEDURE AcctLineType_102 (
55036 p_application_id IN NUMBER
55037 ,p_event_id IN NUMBER
55038 ,p_calculate_acctd_flag IN VARCHAR2
55039 ,p_calculate_g_l_flag IN VARCHAR2
55040 ,p_actual_flag IN OUT VARCHAR2
55041 ,p_balance_type_code OUT VARCHAR2
55042 ,p_gain_or_loss_ref OUT VARCHAR2
55043
55044 --Cost Management Default Account
55045 , p_source_4 IN NUMBER
55046 --DISTRIBUTION_IDENTIFIER
55047 , p_source_11 IN NUMBER
55048 --Distribution Type
55049 , p_source_12 IN VARCHAR2
55050 , p_source_12_meaning IN VARCHAR2
55051 --Entered Currency Code
55052 , p_source_15 IN VARCHAR2
55053 --Entered Amount
55054 , p_source_18 IN NUMBER
55055 --Currency Conversion Date
55056 , p_source_19 IN DATE
55057 --Currency Conversion Rate
55058 , p_source_20 IN NUMBER
55059 --Currency Conversion Type
55060 , p_source_21 IN VARCHAR2
55061 --Accounted Amount
55062 , p_source_22 IN NUMBER
55063 --Accounting Line Type
55064 , p_source_24 IN NUMBER
55065 )
55066 IS
55067
55068 l_component_type VARCHAR2(80);
55069 l_component_code VARCHAR2(30);
55070 l_component_type_code VARCHAR2(1);
55071 l_component_appl_id INTEGER;
55072 l_amb_context_code VARCHAR2(30);
55073 l_entity_code VARCHAR2(30);
55074 l_event_class_code VARCHAR2(30);
55075 l_ae_header_id NUMBER;
55076 l_event_type_code VARCHAR2(30);
55077 l_line_definition_code VARCHAR2(30);
55078 l_line_definition_owner_code VARCHAR2(1);
55079 --
55080 -- adr variables
55081 l_segment VARCHAR2(30);
55082 l_ccid NUMBER;
55083 l_adr_transaction_coa_id NUMBER;
55084 l_adr_accounting_coa_id NUMBER;
55085 l_adr_flexfield_segment_code VARCHAR2(30);
55086 l_adr_flex_value_set_id NUMBER;
55087 l_adr_value_type_code VARCHAR2(30);
55088 l_adr_value_combination_id NUMBER;
55089 l_adr_value_segment_code VARCHAR2(30);
55090
55091 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
55092 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
55093 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
55094 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
55095
55096 -- 4262811 Variables ------------------------------------------------------------------------------------------
55097 l_entered_amt_idx NUMBER;
55098 l_accted_amt_idx NUMBER;
55099 l_acc_rev_flag VARCHAR2(1);
55100 l_accrual_line_num NUMBER;
55101 l_tmp_amt NUMBER;
55102 l_acc_rev_natural_side_code VARCHAR2(1);
55103
55104 l_num_entries NUMBER;
55105 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
55106 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
55107 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
55108 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
55109 l_recog_line_1 NUMBER;
55110 l_recog_line_2 NUMBER;
55111
55112 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
55113 l_bflow_applied_to_amt NUMBER; -- 5132302
55114 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
55115
55116 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
55117
55118 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
55119 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
55120
55121 ---------------------------------------------------------------------------------------------------------------
55122
55123
55124 --
55125 -- bulk performance
55126 --
55127 l_balance_type_code VARCHAR2(1);
55128 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
55129 l_log_module VARCHAR2(240);
55130
55131 --
55132 -- Upgrade strategy
55133 --
55134 l_actual_upg_option VARCHAR2(1);
55135 l_enc_upg_option VARCHAR2(1);
55136
55137 --
55138 BEGIN
55139 --
55140 IF g_log_enabled THEN
55141 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_102';
55142 END IF;
55143 --
55144 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
55145
55146 trace
55147 (p_msg => 'BEGIN of AcctLineType_102'
55148 ,p_level => C_LEVEL_PROCEDURE
55149 ,p_module => l_log_module);
55150
55151 END IF;
55152 --
55153 l_component_type := 'AMB_JLT';
55154 l_component_code := 'INTERORG_RECEIVABLES';
55155 l_component_type_code := 'S';
55156 l_component_appl_id := 707;
55157 l_amb_context_code := 'DEFAULT';
55158 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
55159 l_event_class_code := 'INT_ORDER_TO_EXP';
55160 l_event_type_code := 'INT_ORDER_TO_EXP_ALL';
55161 l_line_definition_owner_code := 'S';
55162 l_line_definition_code := 'INT_ORDER_TO_EXP';
55163 --
55164 l_balance_type_code := 'A';
55165 l_segment := NULL;
55166 l_ccid := NULL;
55167 l_adr_transaction_coa_id := NULL;
55168 l_adr_accounting_coa_id := NULL;
55169 l_adr_flexfield_segment_code := NULL;
55170 l_adr_flex_value_set_id := NULL;
55171 l_adr_value_type_code := NULL;
55172 l_adr_value_combination_id := NULL;
55173 l_adr_value_segment_code := NULL;
55174
55175 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
55176 l_bflow_class_code := ''; -- 4219869 Business Flow
55177 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
55178 l_budgetary_control_flag := 'N';
55179
55180 l_bflow_applied_to_amt_idx := NULL; -- 5132302
55181 l_bflow_applied_to_amt := NULL; -- 5132302
55182 l_entered_amt_idx := NULL; -- 4262811
55183 l_accted_amt_idx := NULL; -- 4262811
55184 l_acc_rev_flag := NULL; -- 4262811
55185 l_accrual_line_num := NULL; -- 4262811
55186 l_tmp_amt := NULL; -- 4262811
55187 --
55188
55189 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
55190 l_balance_type_code <> 'B' THEN
55191 IF NVL(p_source_24,9E125) = 10
55192 THEN
55193
55194 --
55195 XLA_AE_LINES_PKG.SetNewLine;
55196
55197 p_balance_type_code := l_balance_type_code;
55198 -- set the flag so later we will know whether the gain loss line needs to be created
55199
55200 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
55201 p_actual_flag :='A';
55202 END IF;
55203
55204 --
55205 -- bulk performance
55206 --
55207 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
55208 p_header_num => 0); -- 4262811
55209 --
55210 -- set accounting line options
55211 --
55212 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
55213 p_natural_side_code => 'D'
55214 , p_gain_or_loss_flag => 'N'
55215 , p_gl_transfer_mode_code => 'S'
55216 , p_acct_entry_type_code => 'A'
55217 , p_switch_side_flag => 'Y'
55218 , p_merge_duplicate_code => 'N'
55219 );
55220 --
55221 l_acc_rev_natural_side_code := 'C'; -- 4262811
55222 --
55223 --
55224 -- set accounting line type info
55225 --
55226 xla_ae_lines_pkg.SetAcctLineType
55227 (p_component_type => l_component_type
55228 ,p_event_type_code => l_event_type_code
55229 ,p_line_definition_owner_code => l_line_definition_owner_code
55230 ,p_line_definition_code => l_line_definition_code
55231 ,p_accounting_line_code => l_component_code
55232 ,p_accounting_line_type_code => l_component_type_code
55233 ,p_accounting_line_appl_id => l_component_appl_id
55234 ,p_amb_context_code => l_amb_context_code
55235 ,p_entity_code => l_entity_code
55236 ,p_event_class_code => l_event_class_code);
55237 --
55238 -- set accounting class
55239 --
55240 xla_ae_lines_pkg.SetAcctClass(
55241 p_accounting_class_code => 'INTERORG_RECEIVABLES'
55242 , p_ae_header_id => l_ae_header_id
55243 );
55244
55245 --
55246 -- set rounding class
55247 --
55248 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
55249 'INTERORG_RECEIVABLES';
55250
55251 --
55252 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
55253 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
55254 --
55255 -- bulk performance
55256 --
55257 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
55258
55259 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
55260 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
55261
55262 -- 4955764
55263 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
55264 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
55265
55266 -- 4458381 Public Sector Enh
55267
55268 --
55269 -- set accounting attributes for the line type
55270 --
55271 l_entered_amt_idx := 3;
55272 l_accted_amt_idx := 8;
55273 l_bflow_applied_to_amt_idx := NULL; -- 5132302
55274 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
55275 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
55276 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
55277 l_rec_acct_attrs.array_char_value(2) := p_source_12;
55278 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
55279 l_rec_acct_attrs.array_num_value(3) := p_source_18;
55280 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
55281 l_rec_acct_attrs.array_char_value(4) := p_source_15;
55282 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
55283 l_rec_acct_attrs.array_date_value(5) := p_source_19;
55284 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
55285 l_rec_acct_attrs.array_num_value(6) := p_source_20;
55286 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
55287 l_rec_acct_attrs.array_char_value(7) := p_source_21;
55288 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
55289 l_rec_acct_attrs.array_num_value(8) := p_source_22;
55290
55291 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
55292 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
55293
55294 ---------------------------------------------------------------------------------------------------------------
55295 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
55296 ---------------------------------------------------------------------------------------------------------------
55297 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
55298
55299 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
55300 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
55301
55302 IF xla_accounting_cache_pkg.GetValueChar
55303 (p_source_code => 'LEDGER_CATEGORY_CODE'
55304 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
55305 AND l_bflow_method_code = 'PRIOR_ENTRY'
55306 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
55307 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
55308 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
55309 )
55310 THEN
55311 xla_ae_lines_pkg.BflowUpgEntry
55312 (p_business_method_code => l_bflow_method_code
55313 ,p_business_class_code => l_bflow_class_code
55314 ,p_balance_type => l_balance_type_code);
55315 ELSE
55316 NULL;
55317 -- No business flow processing for business flow method of NONE.
55318 END IF;
55319
55320 --
55321 -- call analytical criteria
55322 --
55323
55324 --
55325 -- call description
55326 --
55327 -- No description or it is inherited.
55328 --
55329 -- call ADRs
55330 -- Bug 4922099
55331 --
55332 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
55333 (NVL(l_actual_upg_option, 'N') = 'O') OR
55334 (NVL(l_enc_upg_option, 'N') = 'O')
55335 )
55336 THEN
55337 NULL;
55338 --
55339 --
55340
55341 l_ccid := AcctDerRule_4(
55342 p_application_id => p_application_id
55343 , p_ae_header_id => l_ae_header_id
55344 , p_source_4 => p_source_4
55345 , x_transaction_coa_id => l_adr_transaction_coa_id
55346 , x_accounting_coa_id => l_adr_accounting_coa_id
55347 , x_value_type_code => l_adr_value_type_code
55348 , p_side => 'NA'
55349 );
55350
55351 xla_ae_lines_pkg.set_ccid(
55352 p_code_combination_id => l_ccid
55353 , p_value_type_code => l_adr_value_type_code
55354 , p_transaction_coa_id => l_adr_transaction_coa_id
55355 , p_accounting_coa_id => l_adr_accounting_coa_id
55356 , p_adr_code => 'CST_DEFAULT'
55357 , p_adr_type_code => 'S'
55358 , p_component_type => l_component_type
55359 , p_component_code => l_component_code
55360 , p_component_type_code => l_component_type_code
55361 , p_component_appl_id => l_component_appl_id
55362 , p_amb_context_code => l_amb_context_code
55363 , p_side => 'NA'
55364 );
55365
55366
55367 --
55368 --
55369 END IF;
55370 --
55371 -- Bug 4922099
55372 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
55373 (NVL(l_enc_upg_option, 'N') = 'O')
55374 ) AND
55375 (l_bflow_method_code = 'PRIOR_ENTRY')
55376 )
55377 THEN
55378 IF
55379 --
55380 1 = 2
55381 --
55382 THEN
55383 xla_accounting_err_pkg.build_message
55384 (p_appli_s_name => 'XLA'
55385 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
55386 ,p_token_1 => 'LINE_NUMBER'
55387 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
55388 ,p_token_2 => 'LINE_TYPE_NAME'
55389 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
55390 l_component_type
55391 ,l_component_code
55392 ,l_component_type_code
55393 ,l_component_appl_id
55394 ,l_amb_context_code
55395 ,l_entity_code
55396 ,l_event_class_code
55397 )
55398 ,p_token_3 => 'OWNER'
55399 ,p_value_3 => xla_lookups_pkg.get_meaning(
55400 p_lookup_type => 'XLA_OWNER_TYPE'
55401 ,p_lookup_code => l_component_type_code
55402 )
55403 ,p_token_4 => 'PRODUCT_NAME'
55404 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
55405 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
55406 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
55407 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
55408 ,p_ae_header_id => NULL
55409 );
55410
55411 IF (C_LEVEL_ERROR>= g_log_level) THEN
55412 trace
55413 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
55414 ,p_level => C_LEVEL_ERROR
55415 ,p_module => l_log_module);
55416 END IF;
55417 END IF;
55418 END IF;
55419 --
55420 --
55421 ------------------------------------------------------------------------------------------------
55422 -- 4219869 Business Flow
55423 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
55424 -- Prior Entry. Currently, the following code is always generated.
55425 ------------------------------------------------------------------------------------------------
55426 XLA_AE_LINES_PKG.ValidateCurrentLine;
55427
55428 ------------------------------------------------------------------------------------
55429 -- 4219869 Business Flow
55430 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
55431 ------------------------------------------------------------------------------------
55432 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
55433
55434 ----------------------------------------------------------------------------------
55435 -- 4219869 Business Flow
55436 -- Update journal entry status -- Need to generate this within IF <condition>
55437 ----------------------------------------------------------------------------------
55438 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
55439 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
55440 ,p_balance_type_code => l_balance_type_code
55441 );
55442
55443 -------------------------------------------------------------------------------------------
55444 -- 4262811 - Generate the Accrual Reversal lines
55445 -------------------------------------------------------------------------------------------
55446 BEGIN
55447 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
55448 (g_array_event(p_event_id).array_value_num('header_index'));
55449 IF l_acc_rev_flag IS NULL THEN
55450 l_acc_rev_flag := 'N';
55451 END IF;
55452 EXCEPTION
55453 WHEN OTHERS THEN
55454 l_acc_rev_flag := 'N';
55455 END;
55456 --
55457 IF (l_acc_rev_flag = 'Y') THEN
55458
55459 -- 4645092 ------------------------------------------------------------------------------
55460 -- To allow MPA report to determine if it should generate report process
55461 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
55462 ------------------------------------------------------------------------------------------
55463
55464 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
55465 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
55466 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
55467 -- call ADRs
55468 -- Bug 4922099
55469 --
55470 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
55471 (NVL(l_actual_upg_option, 'N') = 'O') OR
55472 (NVL(l_enc_upg_option, 'N') = 'O')
55473 )
55474 THEN
55475 NULL;
55476 --
55477 --
55478
55479 l_ccid := AcctDerRule_4(
55480 p_application_id => p_application_id
55481 , p_ae_header_id => l_ae_header_id
55482 , p_source_4 => p_source_4
55483 , x_transaction_coa_id => l_adr_transaction_coa_id
55484 , x_accounting_coa_id => l_adr_accounting_coa_id
55485 , x_value_type_code => l_adr_value_type_code
55486 , p_side => 'NA'
55487 );
55488
55489 xla_ae_lines_pkg.set_ccid(
55490 p_code_combination_id => l_ccid
55491 , p_value_type_code => l_adr_value_type_code
55492 , p_transaction_coa_id => l_adr_transaction_coa_id
55493 , p_accounting_coa_id => l_adr_accounting_coa_id
55494 , p_adr_code => 'CST_DEFAULT'
55495 , p_adr_type_code => 'S'
55496 , p_component_type => l_component_type
55497 , p_component_code => l_component_code
55498 , p_component_type_code => l_component_type_code
55499 , p_component_appl_id => l_component_appl_id
55500 , p_amb_context_code => l_amb_context_code
55501 , p_side => 'NA'
55502 );
55503
55504
55505 --
55506 --
55507 END IF;
55508
55509 --
55510 -- Update the line information that should be overwritten
55511 --
55512 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
55513 p_header_num => 1);
55514 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
55515
55516 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
55517
55518 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
55519 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
55520 END IF;
55521
55522 --
55523 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
55524 --
55525 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
55526 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
55527 ELSE
55528 ---------------------------------------------------------------------------------------------------
55529 -- 4262811a Switch Sign
55530 ---------------------------------------------------------------------------------------------------
55531 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
55532 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
55533 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
55534 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
55535 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
55536 -- 5132302
55537 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
55538 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
55539
55540 END IF;
55541
55542 -- 4955764
55543 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
55544 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
55545
55546
55547 XLA_AE_LINES_PKG.ValidateCurrentLine;
55548 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
55549
55550 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
55551 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
55552 ,p_balance_type_code => l_balance_type_code);
55553
55554 END IF;
55555
55556 -----------------------------------------------------------------------------------------
55557 -- 4262811 Multiperiod Accounting
55558 -----------------------------------------------------------------------------------------
55559 -- No MPA option is assigned.
55560
55561
55562 END IF;
55563 END IF;
55564 --
55565
55566 --
55567 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
55568 trace
55569 (p_msg => 'END of AcctLineType_102'
55570 ,p_level => C_LEVEL_PROCEDURE
55571 ,p_module => l_log_module);
55572 END IF;
55573 --
55574 EXCEPTION
55575 WHEN xla_exceptions_pkg.application_exception THEN
55576 RAISE;
55577 WHEN OTHERS THEN
55578 xla_exceptions_pkg.raise_message
55579 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_102');
55580 END AcctLineType_102;
55581 --
55582
55583 ---------------------------------------
55584 --
55585 -- PRIVATE FUNCTION
55586 -- AcctLineType_103
55587 --
55588 ---------------------------------------
55589 PROCEDURE AcctLineType_103 (
55590 p_application_id IN NUMBER
55591 ,p_event_id IN NUMBER
55592 ,p_calculate_acctd_flag IN VARCHAR2
55593 ,p_calculate_g_l_flag IN VARCHAR2
55594 ,p_actual_flag IN OUT VARCHAR2
55595 ,p_balance_type_code OUT VARCHAR2
55596 ,p_gain_or_loss_ref OUT VARCHAR2
55597
55598 --Cost Management Default Account
55599 , p_source_4 IN NUMBER
55600 --DISTRIBUTION_IDENTIFIER
55601 , p_source_11 IN NUMBER
55602 --Distribution Type
55603 , p_source_12 IN VARCHAR2
55604 , p_source_12_meaning IN VARCHAR2
55605 --Entered Currency Code
55606 , p_source_15 IN VARCHAR2
55607 --Entered Amount
55608 , p_source_18 IN NUMBER
55609 --Currency Conversion Date
55610 , p_source_19 IN DATE
55611 --Currency Conversion Rate
55612 , p_source_20 IN NUMBER
55613 --Currency Conversion Type
55614 , p_source_21 IN VARCHAR2
55615 --Accounted Amount
55616 , p_source_22 IN NUMBER
55617 --Accounting Line Type
55618 , p_source_24 IN NUMBER
55619 )
55620 IS
55621
55622 l_component_type VARCHAR2(80);
55623 l_component_code VARCHAR2(30);
55624 l_component_type_code VARCHAR2(1);
55625 l_component_appl_id INTEGER;
55626 l_amb_context_code VARCHAR2(30);
55627 l_entity_code VARCHAR2(30);
55628 l_event_class_code VARCHAR2(30);
55629 l_ae_header_id NUMBER;
55630 l_event_type_code VARCHAR2(30);
55631 l_line_definition_code VARCHAR2(30);
55632 l_line_definition_owner_code VARCHAR2(1);
55633 --
55634 -- adr variables
55635 l_segment VARCHAR2(30);
55636 l_ccid NUMBER;
55637 l_adr_transaction_coa_id NUMBER;
55638 l_adr_accounting_coa_id NUMBER;
55639 l_adr_flexfield_segment_code VARCHAR2(30);
55640 l_adr_flex_value_set_id NUMBER;
55641 l_adr_value_type_code VARCHAR2(30);
55642 l_adr_value_combination_id NUMBER;
55643 l_adr_value_segment_code VARCHAR2(30);
55644
55645 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
55646 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
55647 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
55648 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
55649
55650 -- 4262811 Variables ------------------------------------------------------------------------------------------
55651 l_entered_amt_idx NUMBER;
55652 l_accted_amt_idx NUMBER;
55653 l_acc_rev_flag VARCHAR2(1);
55654 l_accrual_line_num NUMBER;
55655 l_tmp_amt NUMBER;
55656 l_acc_rev_natural_side_code VARCHAR2(1);
55657
55658 l_num_entries NUMBER;
55659 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
55660 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
55661 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
55662 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
55663 l_recog_line_1 NUMBER;
55664 l_recog_line_2 NUMBER;
55665
55666 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
55667 l_bflow_applied_to_amt NUMBER; -- 5132302
55668 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
55669
55670 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
55671
55672 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
55673 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
55674
55675 ---------------------------------------------------------------------------------------------------------------
55676
55677
55678 --
55679 -- bulk performance
55680 --
55681 l_balance_type_code VARCHAR2(1);
55682 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
55683 l_log_module VARCHAR2(240);
55684
55685 --
55686 -- Upgrade strategy
55687 --
55688 l_actual_upg_option VARCHAR2(1);
55689 l_enc_upg_option VARCHAR2(1);
55690
55691 --
55692 BEGIN
55693 --
55694 IF g_log_enabled THEN
55695 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_103';
55696 END IF;
55697 --
55698 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
55699
55700 trace
55701 (p_msg => 'BEGIN of AcctLineType_103'
55702 ,p_level => C_LEVEL_PROCEDURE
55703 ,p_module => l_log_module);
55704
55705 END IF;
55706 --
55707 l_component_type := 'AMB_JLT';
55708 l_component_code := 'INTERORG_RECEIVABLES';
55709 l_component_type_code := 'S';
55710 l_component_appl_id := 707;
55711 l_amb_context_code := 'DEFAULT';
55712 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
55713 l_event_class_code := 'USER_DEFINE';
55714 l_event_type_code := 'UDIR_INTERORG_RCPT';
55715 l_line_definition_owner_code := 'S';
55716 l_line_definition_code := 'USER_DIR_INTERORG_RCPT';
55717 --
55718 l_balance_type_code := 'A';
55719 l_segment := NULL;
55720 l_ccid := NULL;
55721 l_adr_transaction_coa_id := NULL;
55722 l_adr_accounting_coa_id := NULL;
55723 l_adr_flexfield_segment_code := NULL;
55724 l_adr_flex_value_set_id := NULL;
55725 l_adr_value_type_code := NULL;
55726 l_adr_value_combination_id := NULL;
55727 l_adr_value_segment_code := NULL;
55728
55729 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
55730 l_bflow_class_code := ''; -- 4219869 Business Flow
55731 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
55732 l_budgetary_control_flag := 'N';
55733
55734 l_bflow_applied_to_amt_idx := NULL; -- 5132302
55735 l_bflow_applied_to_amt := NULL; -- 5132302
55736 l_entered_amt_idx := NULL; -- 4262811
55737 l_accted_amt_idx := NULL; -- 4262811
55738 l_acc_rev_flag := NULL; -- 4262811
55739 l_accrual_line_num := NULL; -- 4262811
55740 l_tmp_amt := NULL; -- 4262811
55741 --
55742
55743 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
55744 l_balance_type_code <> 'B' THEN
55745 IF NVL(p_source_24,9E125) = 10
55746 THEN
55747
55748 --
55749 XLA_AE_LINES_PKG.SetNewLine;
55750
55751 p_balance_type_code := l_balance_type_code;
55752 -- set the flag so later we will know whether the gain loss line needs to be created
55753
55754 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
55755 p_actual_flag :='A';
55756 END IF;
55757
55758 --
55759 -- bulk performance
55760 --
55761 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
55762 p_header_num => 0); -- 4262811
55763 --
55764 -- set accounting line options
55765 --
55766 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
55767 p_natural_side_code => 'D'
55768 , p_gain_or_loss_flag => 'N'
55769 , p_gl_transfer_mode_code => 'S'
55770 , p_acct_entry_type_code => 'A'
55771 , p_switch_side_flag => 'Y'
55772 , p_merge_duplicate_code => 'N'
55773 );
55774 --
55775 l_acc_rev_natural_side_code := 'C'; -- 4262811
55776 --
55777 --
55778 -- set accounting line type info
55779 --
55780 xla_ae_lines_pkg.SetAcctLineType
55781 (p_component_type => l_component_type
55782 ,p_event_type_code => l_event_type_code
55783 ,p_line_definition_owner_code => l_line_definition_owner_code
55784 ,p_line_definition_code => l_line_definition_code
55785 ,p_accounting_line_code => l_component_code
55786 ,p_accounting_line_type_code => l_component_type_code
55787 ,p_accounting_line_appl_id => l_component_appl_id
55788 ,p_amb_context_code => l_amb_context_code
55789 ,p_entity_code => l_entity_code
55790 ,p_event_class_code => l_event_class_code);
55791 --
55792 -- set accounting class
55793 --
55794 xla_ae_lines_pkg.SetAcctClass(
55795 p_accounting_class_code => 'INTERORG_RECEIVABLES'
55796 , p_ae_header_id => l_ae_header_id
55797 );
55798
55799 --
55800 -- set rounding class
55801 --
55802 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
55803 'INTERORG_RECEIVABLES';
55804
55805 --
55806 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
55807 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
55808 --
55809 -- bulk performance
55810 --
55811 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
55812
55813 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
55814 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
55815
55816 -- 4955764
55817 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
55818 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
55819
55820 -- 4458381 Public Sector Enh
55821
55822 --
55823 -- set accounting attributes for the line type
55824 --
55825 l_entered_amt_idx := 3;
55826 l_accted_amt_idx := 8;
55827 l_bflow_applied_to_amt_idx := NULL; -- 5132302
55828 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
55829 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
55830 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
55831 l_rec_acct_attrs.array_char_value(2) := p_source_12;
55832 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
55833 l_rec_acct_attrs.array_num_value(3) := p_source_18;
55834 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
55835 l_rec_acct_attrs.array_char_value(4) := p_source_15;
55836 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
55837 l_rec_acct_attrs.array_date_value(5) := p_source_19;
55838 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
55839 l_rec_acct_attrs.array_num_value(6) := p_source_20;
55840 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
55841 l_rec_acct_attrs.array_char_value(7) := p_source_21;
55842 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
55843 l_rec_acct_attrs.array_num_value(8) := p_source_22;
55844
55845 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
55846 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
55847
55848 ---------------------------------------------------------------------------------------------------------------
55849 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
55850 ---------------------------------------------------------------------------------------------------------------
55851 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
55852
55853 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
55854 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
55855
55856 IF xla_accounting_cache_pkg.GetValueChar
55857 (p_source_code => 'LEDGER_CATEGORY_CODE'
55858 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
55859 AND l_bflow_method_code = 'PRIOR_ENTRY'
55860 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
55861 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
55862 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
55863 )
55864 THEN
55865 xla_ae_lines_pkg.BflowUpgEntry
55866 (p_business_method_code => l_bflow_method_code
55867 ,p_business_class_code => l_bflow_class_code
55868 ,p_balance_type => l_balance_type_code);
55869 ELSE
55870 NULL;
55871 -- No business flow processing for business flow method of NONE.
55872 END IF;
55873
55874 --
55875 -- call analytical criteria
55876 --
55877
55878 --
55879 -- call description
55880 --
55881 -- No description or it is inherited.
55882 --
55883 -- call ADRs
55884 -- Bug 4922099
55885 --
55886 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
55887 (NVL(l_actual_upg_option, 'N') = 'O') OR
55888 (NVL(l_enc_upg_option, 'N') = 'O')
55889 )
55890 THEN
55891 NULL;
55892 --
55893 --
55894
55895 l_ccid := AcctDerRule_4(
55896 p_application_id => p_application_id
55897 , p_ae_header_id => l_ae_header_id
55898 , p_source_4 => p_source_4
55899 , x_transaction_coa_id => l_adr_transaction_coa_id
55900 , x_accounting_coa_id => l_adr_accounting_coa_id
55901 , x_value_type_code => l_adr_value_type_code
55902 , p_side => 'NA'
55903 );
55904
55905 xla_ae_lines_pkg.set_ccid(
55906 p_code_combination_id => l_ccid
55907 , p_value_type_code => l_adr_value_type_code
55908 , p_transaction_coa_id => l_adr_transaction_coa_id
55909 , p_accounting_coa_id => l_adr_accounting_coa_id
55910 , p_adr_code => 'CST_DEFAULT'
55911 , p_adr_type_code => 'S'
55912 , p_component_type => l_component_type
55913 , p_component_code => l_component_code
55914 , p_component_type_code => l_component_type_code
55915 , p_component_appl_id => l_component_appl_id
55916 , p_amb_context_code => l_amb_context_code
55917 , p_side => 'NA'
55918 );
55919
55920
55921 --
55922 --
55923 END IF;
55924 --
55925 -- Bug 4922099
55926 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
55927 (NVL(l_enc_upg_option, 'N') = 'O')
55928 ) AND
55929 (l_bflow_method_code = 'PRIOR_ENTRY')
55930 )
55931 THEN
55932 IF
55933 --
55934 1 = 2
55935 --
55936 THEN
55937 xla_accounting_err_pkg.build_message
55938 (p_appli_s_name => 'XLA'
55939 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
55940 ,p_token_1 => 'LINE_NUMBER'
55941 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
55942 ,p_token_2 => 'LINE_TYPE_NAME'
55943 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
55944 l_component_type
55945 ,l_component_code
55946 ,l_component_type_code
55947 ,l_component_appl_id
55948 ,l_amb_context_code
55949 ,l_entity_code
55950 ,l_event_class_code
55951 )
55952 ,p_token_3 => 'OWNER'
55953 ,p_value_3 => xla_lookups_pkg.get_meaning(
55954 p_lookup_type => 'XLA_OWNER_TYPE'
55955 ,p_lookup_code => l_component_type_code
55956 )
55957 ,p_token_4 => 'PRODUCT_NAME'
55958 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
55959 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
55960 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
55961 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
55962 ,p_ae_header_id => NULL
55963 );
55964
55965 IF (C_LEVEL_ERROR>= g_log_level) THEN
55966 trace
55967 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
55968 ,p_level => C_LEVEL_ERROR
55969 ,p_module => l_log_module);
55970 END IF;
55971 END IF;
55972 END IF;
55973 --
55974 --
55975 ------------------------------------------------------------------------------------------------
55976 -- 4219869 Business Flow
55977 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
55978 -- Prior Entry. Currently, the following code is always generated.
55979 ------------------------------------------------------------------------------------------------
55980 XLA_AE_LINES_PKG.ValidateCurrentLine;
55981
55982 ------------------------------------------------------------------------------------
55983 -- 4219869 Business Flow
55984 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
55985 ------------------------------------------------------------------------------------
55986 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
55987
55988 ----------------------------------------------------------------------------------
55989 -- 4219869 Business Flow
55990 -- Update journal entry status -- Need to generate this within IF <condition>
55991 ----------------------------------------------------------------------------------
55992 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
55993 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
55994 ,p_balance_type_code => l_balance_type_code
55995 );
55996
55997 -------------------------------------------------------------------------------------------
55998 -- 4262811 - Generate the Accrual Reversal lines
55999 -------------------------------------------------------------------------------------------
56000 BEGIN
56001 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
56002 (g_array_event(p_event_id).array_value_num('header_index'));
56003 IF l_acc_rev_flag IS NULL THEN
56004 l_acc_rev_flag := 'N';
56005 END IF;
56006 EXCEPTION
56007 WHEN OTHERS THEN
56008 l_acc_rev_flag := 'N';
56009 END;
56010 --
56011 IF (l_acc_rev_flag = 'Y') THEN
56012
56013 -- 4645092 ------------------------------------------------------------------------------
56014 -- To allow MPA report to determine if it should generate report process
56015 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
56016 ------------------------------------------------------------------------------------------
56017
56018 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
56019 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
56020 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
56021 -- call ADRs
56022 -- Bug 4922099
56023 --
56024 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
56025 (NVL(l_actual_upg_option, 'N') = 'O') OR
56026 (NVL(l_enc_upg_option, 'N') = 'O')
56027 )
56028 THEN
56029 NULL;
56030 --
56031 --
56032
56033 l_ccid := AcctDerRule_4(
56034 p_application_id => p_application_id
56035 , p_ae_header_id => l_ae_header_id
56036 , p_source_4 => p_source_4
56037 , x_transaction_coa_id => l_adr_transaction_coa_id
56038 , x_accounting_coa_id => l_adr_accounting_coa_id
56039 , x_value_type_code => l_adr_value_type_code
56040 , p_side => 'NA'
56041 );
56042
56043 xla_ae_lines_pkg.set_ccid(
56044 p_code_combination_id => l_ccid
56045 , p_value_type_code => l_adr_value_type_code
56046 , p_transaction_coa_id => l_adr_transaction_coa_id
56047 , p_accounting_coa_id => l_adr_accounting_coa_id
56048 , p_adr_code => 'CST_DEFAULT'
56049 , p_adr_type_code => 'S'
56050 , p_component_type => l_component_type
56051 , p_component_code => l_component_code
56052 , p_component_type_code => l_component_type_code
56053 , p_component_appl_id => l_component_appl_id
56054 , p_amb_context_code => l_amb_context_code
56055 , p_side => 'NA'
56056 );
56057
56058
56059 --
56060 --
56061 END IF;
56062
56063 --
56064 -- Update the line information that should be overwritten
56065 --
56066 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
56067 p_header_num => 1);
56068 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
56069
56070 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
56071
56072 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
56073 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
56074 END IF;
56075
56076 --
56077 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
56078 --
56079 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
56080 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
56081 ELSE
56082 ---------------------------------------------------------------------------------------------------
56083 -- 4262811a Switch Sign
56084 ---------------------------------------------------------------------------------------------------
56085 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
56086 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
56087 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
56088 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
56089 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
56090 -- 5132302
56091 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
56092 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
56093
56094 END IF;
56095
56096 -- 4955764
56097 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
56098 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
56099
56100
56101 XLA_AE_LINES_PKG.ValidateCurrentLine;
56102 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
56103
56104 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
56105 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
56106 ,p_balance_type_code => l_balance_type_code);
56107
56108 END IF;
56109
56110 -----------------------------------------------------------------------------------------
56111 -- 4262811 Multiperiod Accounting
56112 -----------------------------------------------------------------------------------------
56113 -- No MPA option is assigned.
56114
56115
56116 END IF;
56117 END IF;
56118 --
56119
56120 --
56121 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
56122 trace
56123 (p_msg => 'END of AcctLineType_103'
56124 ,p_level => C_LEVEL_PROCEDURE
56125 ,p_module => l_log_module);
56126 END IF;
56127 --
56128 EXCEPTION
56129 WHEN xla_exceptions_pkg.application_exception THEN
56130 RAISE;
56131 WHEN OTHERS THEN
56132 xla_exceptions_pkg.raise_message
56133 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_103');
56134 END AcctLineType_103;
56135 --
56136
56137 ---------------------------------------
56138 --
56139 -- PRIVATE FUNCTION
56140 -- AcctLineType_104
56141 --
56142 ---------------------------------------
56143 PROCEDURE AcctLineType_104 (
56144 p_application_id IN NUMBER
56145 ,p_event_id IN NUMBER
56146 ,p_calculate_acctd_flag IN VARCHAR2
56147 ,p_calculate_g_l_flag IN VARCHAR2
56148 ,p_actual_flag IN OUT VARCHAR2
56149 ,p_balance_type_code OUT VARCHAR2
56150 ,p_gain_or_loss_ref OUT VARCHAR2
56151
56152 --Cost Management Default Account
56153 , p_source_4 IN NUMBER
56154 --DISTRIBUTION_IDENTIFIER
56155 , p_source_11 IN NUMBER
56156 --Distribution Type
56157 , p_source_12 IN VARCHAR2
56158 , p_source_12_meaning IN VARCHAR2
56159 --Entered Currency Code
56160 , p_source_15 IN VARCHAR2
56161 --Entered Amount
56162 , p_source_18 IN NUMBER
56163 --Currency Conversion Date
56164 , p_source_19 IN DATE
56165 --Currency Conversion Rate
56166 , p_source_20 IN NUMBER
56167 --Currency Conversion Type
56168 , p_source_21 IN VARCHAR2
56169 --Accounted Amount
56170 , p_source_22 IN NUMBER
56171 --Accounting Line Type
56172 , p_source_24 IN NUMBER
56173 )
56174 IS
56175
56176 l_component_type VARCHAR2(80);
56177 l_component_code VARCHAR2(30);
56178 l_component_type_code VARCHAR2(1);
56179 l_component_appl_id INTEGER;
56180 l_amb_context_code VARCHAR2(30);
56181 l_entity_code VARCHAR2(30);
56182 l_event_class_code VARCHAR2(30);
56183 l_ae_header_id NUMBER;
56184 l_event_type_code VARCHAR2(30);
56185 l_line_definition_code VARCHAR2(30);
56186 l_line_definition_owner_code VARCHAR2(1);
56187 --
56188 -- adr variables
56189 l_segment VARCHAR2(30);
56190 l_ccid NUMBER;
56191 l_adr_transaction_coa_id NUMBER;
56192 l_adr_accounting_coa_id NUMBER;
56193 l_adr_flexfield_segment_code VARCHAR2(30);
56194 l_adr_flex_value_set_id NUMBER;
56195 l_adr_value_type_code VARCHAR2(30);
56196 l_adr_value_combination_id NUMBER;
56197 l_adr_value_segment_code VARCHAR2(30);
56198
56199 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
56200 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
56201 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
56202 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
56203
56204 -- 4262811 Variables ------------------------------------------------------------------------------------------
56205 l_entered_amt_idx NUMBER;
56206 l_accted_amt_idx NUMBER;
56207 l_acc_rev_flag VARCHAR2(1);
56208 l_accrual_line_num NUMBER;
56209 l_tmp_amt NUMBER;
56210 l_acc_rev_natural_side_code VARCHAR2(1);
56211
56212 l_num_entries NUMBER;
56213 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
56214 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
56215 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
56216 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
56217 l_recog_line_1 NUMBER;
56218 l_recog_line_2 NUMBER;
56219
56220 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
56221 l_bflow_applied_to_amt NUMBER; -- 5132302
56222 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
56223
56224 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
56225
56226 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
56227 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
56228
56229 ---------------------------------------------------------------------------------------------------------------
56230
56231
56232 --
56233 -- bulk performance
56234 --
56235 l_balance_type_code VARCHAR2(1);
56236 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
56237 l_log_module VARCHAR2(240);
56238
56239 --
56240 -- Upgrade strategy
56241 --
56242 l_actual_upg_option VARCHAR2(1);
56243 l_enc_upg_option VARCHAR2(1);
56244
56245 --
56246 BEGIN
56247 --
56248 IF g_log_enabled THEN
56249 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_104';
56250 END IF;
56251 --
56252 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
56253
56254 trace
56255 (p_msg => 'BEGIN of AcctLineType_104'
56256 ,p_level => C_LEVEL_PROCEDURE
56257 ,p_module => l_log_module);
56258
56259 END IF;
56260 --
56261 l_component_type := 'AMB_JLT';
56262 l_component_code := 'INTERORG_RECEIVABLES';
56263 l_component_type_code := 'S';
56264 l_component_appl_id := 707;
56265 l_amb_context_code := 'DEFAULT';
56266 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
56267 l_event_class_code := 'USER_DEFINE';
56268 l_event_type_code := 'UDIR_INTERORG_RCPT_TP';
56269 l_line_definition_owner_code := 'S';
56270 l_line_definition_code := 'USER_DIR_INTERORG_RCPT_TP';
56271 --
56272 l_balance_type_code := 'A';
56273 l_segment := NULL;
56274 l_ccid := NULL;
56275 l_adr_transaction_coa_id := NULL;
56276 l_adr_accounting_coa_id := NULL;
56277 l_adr_flexfield_segment_code := NULL;
56278 l_adr_flex_value_set_id := NULL;
56279 l_adr_value_type_code := NULL;
56280 l_adr_value_combination_id := NULL;
56281 l_adr_value_segment_code := NULL;
56282
56283 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
56284 l_bflow_class_code := ''; -- 4219869 Business Flow
56285 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
56286 l_budgetary_control_flag := 'N';
56287
56288 l_bflow_applied_to_amt_idx := NULL; -- 5132302
56289 l_bflow_applied_to_amt := NULL; -- 5132302
56290 l_entered_amt_idx := NULL; -- 4262811
56291 l_accted_amt_idx := NULL; -- 4262811
56292 l_acc_rev_flag := NULL; -- 4262811
56293 l_accrual_line_num := NULL; -- 4262811
56294 l_tmp_amt := NULL; -- 4262811
56295 --
56296
56297 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
56298 l_balance_type_code <> 'B' THEN
56299 IF NVL(p_source_24,9E125) = 10
56300 THEN
56301
56302 --
56303 XLA_AE_LINES_PKG.SetNewLine;
56304
56305 p_balance_type_code := l_balance_type_code;
56306 -- set the flag so later we will know whether the gain loss line needs to be created
56307
56308 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
56309 p_actual_flag :='A';
56310 END IF;
56311
56312 --
56313 -- bulk performance
56314 --
56315 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
56316 p_header_num => 0); -- 4262811
56317 --
56318 -- set accounting line options
56319 --
56320 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
56321 p_natural_side_code => 'D'
56322 , p_gain_or_loss_flag => 'N'
56323 , p_gl_transfer_mode_code => 'S'
56324 , p_acct_entry_type_code => 'A'
56325 , p_switch_side_flag => 'Y'
56326 , p_merge_duplicate_code => 'N'
56327 );
56328 --
56329 l_acc_rev_natural_side_code := 'C'; -- 4262811
56330 --
56331 --
56332 -- set accounting line type info
56333 --
56334 xla_ae_lines_pkg.SetAcctLineType
56335 (p_component_type => l_component_type
56336 ,p_event_type_code => l_event_type_code
56337 ,p_line_definition_owner_code => l_line_definition_owner_code
56338 ,p_line_definition_code => l_line_definition_code
56339 ,p_accounting_line_code => l_component_code
56340 ,p_accounting_line_type_code => l_component_type_code
56341 ,p_accounting_line_appl_id => l_component_appl_id
56342 ,p_amb_context_code => l_amb_context_code
56343 ,p_entity_code => l_entity_code
56344 ,p_event_class_code => l_event_class_code);
56345 --
56346 -- set accounting class
56347 --
56348 xla_ae_lines_pkg.SetAcctClass(
56349 p_accounting_class_code => 'INTERORG_RECEIVABLES'
56350 , p_ae_header_id => l_ae_header_id
56351 );
56352
56353 --
56354 -- set rounding class
56355 --
56356 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
56357 'INTERORG_RECEIVABLES';
56358
56359 --
56360 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
56361 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
56362 --
56363 -- bulk performance
56364 --
56365 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
56366
56367 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
56368 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
56369
56370 -- 4955764
56371 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
56372 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
56373
56374 -- 4458381 Public Sector Enh
56375
56376 --
56377 -- set accounting attributes for the line type
56378 --
56379 l_entered_amt_idx := 3;
56380 l_accted_amt_idx := 8;
56381 l_bflow_applied_to_amt_idx := NULL; -- 5132302
56382 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
56383 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
56384 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
56385 l_rec_acct_attrs.array_char_value(2) := p_source_12;
56386 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
56387 l_rec_acct_attrs.array_num_value(3) := p_source_18;
56388 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
56389 l_rec_acct_attrs.array_char_value(4) := p_source_15;
56390 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
56391 l_rec_acct_attrs.array_date_value(5) := p_source_19;
56392 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
56393 l_rec_acct_attrs.array_num_value(6) := p_source_20;
56394 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
56395 l_rec_acct_attrs.array_char_value(7) := p_source_21;
56396 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
56397 l_rec_acct_attrs.array_num_value(8) := p_source_22;
56398
56399 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
56400 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
56401
56402 ---------------------------------------------------------------------------------------------------------------
56403 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
56404 ---------------------------------------------------------------------------------------------------------------
56405 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
56406
56407 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
56408 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
56409
56410 IF xla_accounting_cache_pkg.GetValueChar
56411 (p_source_code => 'LEDGER_CATEGORY_CODE'
56412 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
56413 AND l_bflow_method_code = 'PRIOR_ENTRY'
56414 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
56415 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
56416 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
56417 )
56418 THEN
56419 xla_ae_lines_pkg.BflowUpgEntry
56420 (p_business_method_code => l_bflow_method_code
56421 ,p_business_class_code => l_bflow_class_code
56422 ,p_balance_type => l_balance_type_code);
56423 ELSE
56424 NULL;
56425 -- No business flow processing for business flow method of NONE.
56426 END IF;
56427
56428 --
56429 -- call analytical criteria
56430 --
56431
56432 --
56433 -- call description
56434 --
56435 -- No description or it is inherited.
56436 --
56437 -- call ADRs
56438 -- Bug 4922099
56439 --
56440 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
56441 (NVL(l_actual_upg_option, 'N') = 'O') OR
56442 (NVL(l_enc_upg_option, 'N') = 'O')
56443 )
56444 THEN
56445 NULL;
56446 --
56447 --
56448
56449 l_ccid := AcctDerRule_4(
56450 p_application_id => p_application_id
56451 , p_ae_header_id => l_ae_header_id
56452 , p_source_4 => p_source_4
56453 , x_transaction_coa_id => l_adr_transaction_coa_id
56454 , x_accounting_coa_id => l_adr_accounting_coa_id
56455 , x_value_type_code => l_adr_value_type_code
56456 , p_side => 'NA'
56457 );
56458
56459 xla_ae_lines_pkg.set_ccid(
56460 p_code_combination_id => l_ccid
56461 , p_value_type_code => l_adr_value_type_code
56462 , p_transaction_coa_id => l_adr_transaction_coa_id
56463 , p_accounting_coa_id => l_adr_accounting_coa_id
56464 , p_adr_code => 'CST_DEFAULT'
56465 , p_adr_type_code => 'S'
56466 , p_component_type => l_component_type
56467 , p_component_code => l_component_code
56468 , p_component_type_code => l_component_type_code
56469 , p_component_appl_id => l_component_appl_id
56470 , p_amb_context_code => l_amb_context_code
56471 , p_side => 'NA'
56472 );
56473
56474
56475 --
56476 --
56477 END IF;
56478 --
56479 -- Bug 4922099
56480 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
56481 (NVL(l_enc_upg_option, 'N') = 'O')
56482 ) AND
56483 (l_bflow_method_code = 'PRIOR_ENTRY')
56484 )
56485 THEN
56486 IF
56487 --
56488 1 = 2
56489 --
56490 THEN
56491 xla_accounting_err_pkg.build_message
56492 (p_appli_s_name => 'XLA'
56493 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
56494 ,p_token_1 => 'LINE_NUMBER'
56495 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
56496 ,p_token_2 => 'LINE_TYPE_NAME'
56497 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
56498 l_component_type
56499 ,l_component_code
56500 ,l_component_type_code
56501 ,l_component_appl_id
56502 ,l_amb_context_code
56503 ,l_entity_code
56504 ,l_event_class_code
56505 )
56506 ,p_token_3 => 'OWNER'
56507 ,p_value_3 => xla_lookups_pkg.get_meaning(
56508 p_lookup_type => 'XLA_OWNER_TYPE'
56509 ,p_lookup_code => l_component_type_code
56510 )
56511 ,p_token_4 => 'PRODUCT_NAME'
56512 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
56513 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
56514 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
56515 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
56516 ,p_ae_header_id => NULL
56517 );
56518
56519 IF (C_LEVEL_ERROR>= g_log_level) THEN
56520 trace
56521 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
56522 ,p_level => C_LEVEL_ERROR
56523 ,p_module => l_log_module);
56524 END IF;
56525 END IF;
56526 END IF;
56527 --
56528 --
56529 ------------------------------------------------------------------------------------------------
56530 -- 4219869 Business Flow
56531 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
56532 -- Prior Entry. Currently, the following code is always generated.
56533 ------------------------------------------------------------------------------------------------
56534 XLA_AE_LINES_PKG.ValidateCurrentLine;
56535
56536 ------------------------------------------------------------------------------------
56537 -- 4219869 Business Flow
56538 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
56539 ------------------------------------------------------------------------------------
56540 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
56541
56542 ----------------------------------------------------------------------------------
56543 -- 4219869 Business Flow
56544 -- Update journal entry status -- Need to generate this within IF <condition>
56545 ----------------------------------------------------------------------------------
56546 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
56547 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
56548 ,p_balance_type_code => l_balance_type_code
56549 );
56550
56551 -------------------------------------------------------------------------------------------
56552 -- 4262811 - Generate the Accrual Reversal lines
56553 -------------------------------------------------------------------------------------------
56554 BEGIN
56555 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
56556 (g_array_event(p_event_id).array_value_num('header_index'));
56557 IF l_acc_rev_flag IS NULL THEN
56558 l_acc_rev_flag := 'N';
56559 END IF;
56560 EXCEPTION
56561 WHEN OTHERS THEN
56562 l_acc_rev_flag := 'N';
56563 END;
56564 --
56565 IF (l_acc_rev_flag = 'Y') THEN
56566
56567 -- 4645092 ------------------------------------------------------------------------------
56568 -- To allow MPA report to determine if it should generate report process
56569 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
56570 ------------------------------------------------------------------------------------------
56571
56572 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
56573 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
56574 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
56575 -- call ADRs
56576 -- Bug 4922099
56577 --
56578 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
56579 (NVL(l_actual_upg_option, 'N') = 'O') OR
56580 (NVL(l_enc_upg_option, 'N') = 'O')
56581 )
56582 THEN
56583 NULL;
56584 --
56585 --
56586
56587 l_ccid := AcctDerRule_4(
56588 p_application_id => p_application_id
56589 , p_ae_header_id => l_ae_header_id
56590 , p_source_4 => p_source_4
56591 , x_transaction_coa_id => l_adr_transaction_coa_id
56592 , x_accounting_coa_id => l_adr_accounting_coa_id
56593 , x_value_type_code => l_adr_value_type_code
56594 , p_side => 'NA'
56595 );
56596
56597 xla_ae_lines_pkg.set_ccid(
56598 p_code_combination_id => l_ccid
56599 , p_value_type_code => l_adr_value_type_code
56600 , p_transaction_coa_id => l_adr_transaction_coa_id
56601 , p_accounting_coa_id => l_adr_accounting_coa_id
56602 , p_adr_code => 'CST_DEFAULT'
56603 , p_adr_type_code => 'S'
56604 , p_component_type => l_component_type
56605 , p_component_code => l_component_code
56606 , p_component_type_code => l_component_type_code
56607 , p_component_appl_id => l_component_appl_id
56608 , p_amb_context_code => l_amb_context_code
56609 , p_side => 'NA'
56610 );
56611
56612
56613 --
56614 --
56615 END IF;
56616
56617 --
56618 -- Update the line information that should be overwritten
56619 --
56620 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
56621 p_header_num => 1);
56622 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
56623
56624 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
56625
56626 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
56627 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
56628 END IF;
56629
56630 --
56631 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
56632 --
56633 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
56634 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
56635 ELSE
56636 ---------------------------------------------------------------------------------------------------
56637 -- 4262811a Switch Sign
56638 ---------------------------------------------------------------------------------------------------
56639 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
56640 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
56641 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
56642 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
56643 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
56644 -- 5132302
56645 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
56646 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
56647
56648 END IF;
56649
56650 -- 4955764
56651 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
56652 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
56653
56654
56655 XLA_AE_LINES_PKG.ValidateCurrentLine;
56656 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
56657
56658 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
56659 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
56660 ,p_balance_type_code => l_balance_type_code);
56661
56662 END IF;
56663
56664 -----------------------------------------------------------------------------------------
56665 -- 4262811 Multiperiod Accounting
56666 -----------------------------------------------------------------------------------------
56667 -- No MPA option is assigned.
56668
56669
56670 END IF;
56671 END IF;
56672 --
56673
56674 --
56675 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
56676 trace
56677 (p_msg => 'END of AcctLineType_104'
56678 ,p_level => C_LEVEL_PROCEDURE
56679 ,p_module => l_log_module);
56680 END IF;
56681 --
56682 EXCEPTION
56683 WHEN xla_exceptions_pkg.application_exception THEN
56684 RAISE;
56685 WHEN OTHERS THEN
56686 xla_exceptions_pkg.raise_message
56687 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_104');
56688 END AcctLineType_104;
56689 --
56690
56691 ---------------------------------------
56692 --
56693 -- PRIVATE FUNCTION
56694 -- AcctLineType_105
56695 --
56696 ---------------------------------------
56697 PROCEDURE AcctLineType_105 (
56698 p_application_id IN NUMBER
56699 ,p_event_id IN NUMBER
56700 ,p_calculate_acctd_flag IN VARCHAR2
56701 ,p_calculate_g_l_flag IN VARCHAR2
56702 ,p_actual_flag IN OUT VARCHAR2
56703 ,p_balance_type_code OUT VARCHAR2
56704 ,p_gain_or_loss_ref OUT VARCHAR2
56705
56706 --Cost Management Default Account
56707 , p_source_4 IN NUMBER
56708 --DISTRIBUTION_IDENTIFIER
56709 , p_source_11 IN NUMBER
56710 --Distribution Type
56711 , p_source_12 IN VARCHAR2
56712 , p_source_12_meaning IN VARCHAR2
56713 --Entered Currency Code
56714 , p_source_15 IN VARCHAR2
56715 --Entered Amount
56716 , p_source_18 IN NUMBER
56717 --Currency Conversion Date
56718 , p_source_19 IN DATE
56719 --Currency Conversion Rate
56720 , p_source_20 IN NUMBER
56721 --Currency Conversion Type
56722 , p_source_21 IN VARCHAR2
56723 --Accounted Amount
56724 , p_source_22 IN NUMBER
56725 --Accounting Line Type
56726 , p_source_24 IN NUMBER
56727 )
56728 IS
56729
56730 l_component_type VARCHAR2(80);
56731 l_component_code VARCHAR2(30);
56732 l_component_type_code VARCHAR2(1);
56733 l_component_appl_id INTEGER;
56734 l_amb_context_code VARCHAR2(30);
56735 l_entity_code VARCHAR2(30);
56736 l_event_class_code VARCHAR2(30);
56737 l_ae_header_id NUMBER;
56738 l_event_type_code VARCHAR2(30);
56739 l_line_definition_code VARCHAR2(30);
56740 l_line_definition_owner_code VARCHAR2(1);
56741 --
56742 -- adr variables
56743 l_segment VARCHAR2(30);
56744 l_ccid NUMBER;
56745 l_adr_transaction_coa_id NUMBER;
56746 l_adr_accounting_coa_id NUMBER;
56747 l_adr_flexfield_segment_code VARCHAR2(30);
56748 l_adr_flex_value_set_id NUMBER;
56749 l_adr_value_type_code VARCHAR2(30);
56750 l_adr_value_combination_id NUMBER;
56751 l_adr_value_segment_code VARCHAR2(30);
56752
56753 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
56754 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
56755 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
56756 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
56757
56758 -- 4262811 Variables ------------------------------------------------------------------------------------------
56759 l_entered_amt_idx NUMBER;
56760 l_accted_amt_idx NUMBER;
56761 l_acc_rev_flag VARCHAR2(1);
56762 l_accrual_line_num NUMBER;
56763 l_tmp_amt NUMBER;
56764 l_acc_rev_natural_side_code VARCHAR2(1);
56765
56766 l_num_entries NUMBER;
56767 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
56768 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
56769 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
56770 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
56771 l_recog_line_1 NUMBER;
56772 l_recog_line_2 NUMBER;
56773
56774 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
56775 l_bflow_applied_to_amt NUMBER; -- 5132302
56776 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
56777
56778 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
56779
56780 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
56781 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
56782
56783 ---------------------------------------------------------------------------------------------------------------
56784
56785
56786 --
56787 -- bulk performance
56788 --
56789 l_balance_type_code VARCHAR2(1);
56790 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
56791 l_log_module VARCHAR2(240);
56792
56793 --
56794 -- Upgrade strategy
56795 --
56796 l_actual_upg_option VARCHAR2(1);
56797 l_enc_upg_option VARCHAR2(1);
56798
56799 --
56800 BEGIN
56801 --
56802 IF g_log_enabled THEN
56803 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_105';
56804 END IF;
56805 --
56806 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
56807
56808 trace
56809 (p_msg => 'BEGIN of AcctLineType_105'
56810 ,p_level => C_LEVEL_PROCEDURE
56811 ,p_module => l_log_module);
56812
56813 END IF;
56814 --
56815 l_component_type := 'AMB_JLT';
56816 l_component_code := 'INTERORG_TRANSFER_CREDIT';
56817 l_component_type_code := 'S';
56818 l_component_appl_id := 707;
56819 l_amb_context_code := 'DEFAULT';
56820 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
56821 l_event_class_code := 'USER_DEFINE';
56822 l_event_type_code := 'UDIR_INTERORG_RCPT_TP';
56823 l_line_definition_owner_code := 'S';
56824 l_line_definition_code := 'USER_DIR_INTERORG_RCPT_TP';
56825 --
56826 l_balance_type_code := 'A';
56827 l_segment := NULL;
56828 l_ccid := NULL;
56829 l_adr_transaction_coa_id := NULL;
56830 l_adr_accounting_coa_id := NULL;
56831 l_adr_flexfield_segment_code := NULL;
56832 l_adr_flex_value_set_id := NULL;
56833 l_adr_value_type_code := NULL;
56834 l_adr_value_combination_id := NULL;
56835 l_adr_value_segment_code := NULL;
56836
56837 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
56838 l_bflow_class_code := ''; -- 4219869 Business Flow
56839 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
56840 l_budgetary_control_flag := 'N';
56841
56842 l_bflow_applied_to_amt_idx := NULL; -- 5132302
56843 l_bflow_applied_to_amt := NULL; -- 5132302
56844 l_entered_amt_idx := NULL; -- 4262811
56845 l_accted_amt_idx := NULL; -- 4262811
56846 l_acc_rev_flag := NULL; -- 4262811
56847 l_accrual_line_num := NULL; -- 4262811
56848 l_tmp_amt := NULL; -- 4262811
56849 --
56850
56851 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
56852 l_balance_type_code <> 'B' THEN
56853 IF NVL(p_source_24,9E125) = 11
56854 THEN
56855
56856 --
56857 XLA_AE_LINES_PKG.SetNewLine;
56858
56859 p_balance_type_code := l_balance_type_code;
56860 -- set the flag so later we will know whether the gain loss line needs to be created
56861
56862 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
56863 p_actual_flag :='A';
56864 END IF;
56865
56866 --
56867 -- bulk performance
56868 --
56869 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
56870 p_header_num => 0); -- 4262811
56871 --
56872 -- set accounting line options
56873 --
56874 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
56875 p_natural_side_code => 'D'
56876 , p_gain_or_loss_flag => 'N'
56877 , p_gl_transfer_mode_code => 'S'
56878 , p_acct_entry_type_code => 'A'
56879 , p_switch_side_flag => 'Y'
56880 , p_merge_duplicate_code => 'N'
56881 );
56882 --
56883 l_acc_rev_natural_side_code := 'C'; -- 4262811
56884 --
56885 --
56886 -- set accounting line type info
56887 --
56888 xla_ae_lines_pkg.SetAcctLineType
56889 (p_component_type => l_component_type
56890 ,p_event_type_code => l_event_type_code
56891 ,p_line_definition_owner_code => l_line_definition_owner_code
56892 ,p_line_definition_code => l_line_definition_code
56893 ,p_accounting_line_code => l_component_code
56894 ,p_accounting_line_type_code => l_component_type_code
56895 ,p_accounting_line_appl_id => l_component_appl_id
56896 ,p_amb_context_code => l_amb_context_code
56897 ,p_entity_code => l_entity_code
56898 ,p_event_class_code => l_event_class_code);
56899 --
56900 -- set accounting class
56901 --
56902 xla_ae_lines_pkg.SetAcctClass(
56903 p_accounting_class_code => 'INTERORG_TRANSFER_CREDIT'
56904 , p_ae_header_id => l_ae_header_id
56905 );
56906
56907 --
56908 -- set rounding class
56909 --
56910 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
56911 'INTERORG_TRANSFER_CREDIT';
56912
56913 --
56914 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
56915 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
56916 --
56917 -- bulk performance
56918 --
56919 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
56920
56921 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
56922 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
56923
56924 -- 4955764
56925 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
56926 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
56927
56928 -- 4458381 Public Sector Enh
56929
56930 --
56931 -- set accounting attributes for the line type
56932 --
56933 l_entered_amt_idx := 3;
56934 l_accted_amt_idx := 8;
56935 l_bflow_applied_to_amt_idx := NULL; -- 5132302
56936 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
56937 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
56938 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
56939 l_rec_acct_attrs.array_char_value(2) := p_source_12;
56940 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
56941 l_rec_acct_attrs.array_num_value(3) := p_source_18;
56942 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
56943 l_rec_acct_attrs.array_char_value(4) := p_source_15;
56944 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
56945 l_rec_acct_attrs.array_date_value(5) := p_source_19;
56946 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
56947 l_rec_acct_attrs.array_num_value(6) := p_source_20;
56948 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
56949 l_rec_acct_attrs.array_char_value(7) := p_source_21;
56950 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
56951 l_rec_acct_attrs.array_num_value(8) := p_source_22;
56952
56953 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
56954 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
56955
56956 ---------------------------------------------------------------------------------------------------------------
56957 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
56958 ---------------------------------------------------------------------------------------------------------------
56959 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
56960
56961 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
56962 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
56963
56964 IF xla_accounting_cache_pkg.GetValueChar
56965 (p_source_code => 'LEDGER_CATEGORY_CODE'
56966 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
56967 AND l_bflow_method_code = 'PRIOR_ENTRY'
56968 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
56969 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
56970 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
56971 )
56972 THEN
56973 xla_ae_lines_pkg.BflowUpgEntry
56974 (p_business_method_code => l_bflow_method_code
56975 ,p_business_class_code => l_bflow_class_code
56976 ,p_balance_type => l_balance_type_code);
56977 ELSE
56978 NULL;
56979 -- No business flow processing for business flow method of NONE.
56980 END IF;
56981
56982 --
56983 -- call analytical criteria
56984 --
56985
56986 --
56987 -- call description
56988 --
56989 -- No description or it is inherited.
56990 --
56991 -- call ADRs
56992 -- Bug 4922099
56993 --
56994 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
56995 (NVL(l_actual_upg_option, 'N') = 'O') OR
56996 (NVL(l_enc_upg_option, 'N') = 'O')
56997 )
56998 THEN
56999 NULL;
57000 --
57001 --
57002
57003 l_ccid := AcctDerRule_4(
57004 p_application_id => p_application_id
57005 , p_ae_header_id => l_ae_header_id
57006 , p_source_4 => p_source_4
57007 , x_transaction_coa_id => l_adr_transaction_coa_id
57008 , x_accounting_coa_id => l_adr_accounting_coa_id
57009 , x_value_type_code => l_adr_value_type_code
57010 , p_side => 'NA'
57011 );
57012
57013 xla_ae_lines_pkg.set_ccid(
57014 p_code_combination_id => l_ccid
57015 , p_value_type_code => l_adr_value_type_code
57016 , p_transaction_coa_id => l_adr_transaction_coa_id
57017 , p_accounting_coa_id => l_adr_accounting_coa_id
57018 , p_adr_code => 'CST_DEFAULT'
57019 , p_adr_type_code => 'S'
57020 , p_component_type => l_component_type
57021 , p_component_code => l_component_code
57022 , p_component_type_code => l_component_type_code
57023 , p_component_appl_id => l_component_appl_id
57024 , p_amb_context_code => l_amb_context_code
57025 , p_side => 'NA'
57026 );
57027
57028
57029 --
57030 --
57031 END IF;
57032 --
57033 -- Bug 4922099
57034 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
57035 (NVL(l_enc_upg_option, 'N') = 'O')
57036 ) AND
57037 (l_bflow_method_code = 'PRIOR_ENTRY')
57038 )
57039 THEN
57040 IF
57041 --
57042 1 = 2
57043 --
57044 THEN
57045 xla_accounting_err_pkg.build_message
57046 (p_appli_s_name => 'XLA'
57047 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
57048 ,p_token_1 => 'LINE_NUMBER'
57049 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
57050 ,p_token_2 => 'LINE_TYPE_NAME'
57051 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
57052 l_component_type
57053 ,l_component_code
57054 ,l_component_type_code
57055 ,l_component_appl_id
57056 ,l_amb_context_code
57057 ,l_entity_code
57058 ,l_event_class_code
57059 )
57060 ,p_token_3 => 'OWNER'
57061 ,p_value_3 => xla_lookups_pkg.get_meaning(
57062 p_lookup_type => 'XLA_OWNER_TYPE'
57063 ,p_lookup_code => l_component_type_code
57064 )
57065 ,p_token_4 => 'PRODUCT_NAME'
57066 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
57067 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
57068 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
57069 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
57070 ,p_ae_header_id => NULL
57071 );
57072
57073 IF (C_LEVEL_ERROR>= g_log_level) THEN
57074 trace
57075 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
57076 ,p_level => C_LEVEL_ERROR
57077 ,p_module => l_log_module);
57078 END IF;
57079 END IF;
57080 END IF;
57081 --
57082 --
57083 ------------------------------------------------------------------------------------------------
57084 -- 4219869 Business Flow
57085 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
57086 -- Prior Entry. Currently, the following code is always generated.
57087 ------------------------------------------------------------------------------------------------
57088 XLA_AE_LINES_PKG.ValidateCurrentLine;
57089
57090 ------------------------------------------------------------------------------------
57091 -- 4219869 Business Flow
57092 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
57093 ------------------------------------------------------------------------------------
57094 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
57095
57096 ----------------------------------------------------------------------------------
57097 -- 4219869 Business Flow
57098 -- Update journal entry status -- Need to generate this within IF <condition>
57099 ----------------------------------------------------------------------------------
57100 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
57101 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
57102 ,p_balance_type_code => l_balance_type_code
57103 );
57104
57105 -------------------------------------------------------------------------------------------
57106 -- 4262811 - Generate the Accrual Reversal lines
57107 -------------------------------------------------------------------------------------------
57108 BEGIN
57109 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
57110 (g_array_event(p_event_id).array_value_num('header_index'));
57111 IF l_acc_rev_flag IS NULL THEN
57112 l_acc_rev_flag := 'N';
57113 END IF;
57114 EXCEPTION
57115 WHEN OTHERS THEN
57116 l_acc_rev_flag := 'N';
57117 END;
57118 --
57119 IF (l_acc_rev_flag = 'Y') THEN
57120
57121 -- 4645092 ------------------------------------------------------------------------------
57122 -- To allow MPA report to determine if it should generate report process
57123 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
57124 ------------------------------------------------------------------------------------------
57125
57126 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
57127 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
57128 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
57129 -- call ADRs
57130 -- Bug 4922099
57131 --
57132 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
57133 (NVL(l_actual_upg_option, 'N') = 'O') OR
57134 (NVL(l_enc_upg_option, 'N') = 'O')
57135 )
57136 THEN
57137 NULL;
57138 --
57139 --
57140
57141 l_ccid := AcctDerRule_4(
57142 p_application_id => p_application_id
57143 , p_ae_header_id => l_ae_header_id
57144 , p_source_4 => p_source_4
57145 , x_transaction_coa_id => l_adr_transaction_coa_id
57146 , x_accounting_coa_id => l_adr_accounting_coa_id
57147 , x_value_type_code => l_adr_value_type_code
57148 , p_side => 'NA'
57149 );
57150
57151 xla_ae_lines_pkg.set_ccid(
57152 p_code_combination_id => l_ccid
57153 , p_value_type_code => l_adr_value_type_code
57154 , p_transaction_coa_id => l_adr_transaction_coa_id
57155 , p_accounting_coa_id => l_adr_accounting_coa_id
57156 , p_adr_code => 'CST_DEFAULT'
57157 , p_adr_type_code => 'S'
57158 , p_component_type => l_component_type
57159 , p_component_code => l_component_code
57160 , p_component_type_code => l_component_type_code
57161 , p_component_appl_id => l_component_appl_id
57162 , p_amb_context_code => l_amb_context_code
57163 , p_side => 'NA'
57164 );
57165
57166
57167 --
57168 --
57169 END IF;
57170
57171 --
57172 -- Update the line information that should be overwritten
57173 --
57174 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
57175 p_header_num => 1);
57176 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
57177
57178 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
57179
57180 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
57181 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
57182 END IF;
57183
57184 --
57185 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
57186 --
57187 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
57188 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
57189 ELSE
57190 ---------------------------------------------------------------------------------------------------
57191 -- 4262811a Switch Sign
57192 ---------------------------------------------------------------------------------------------------
57193 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
57194 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
57195 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
57196 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
57197 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
57198 -- 5132302
57199 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
57200 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
57201
57202 END IF;
57203
57204 -- 4955764
57205 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
57206 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
57207
57208
57209 XLA_AE_LINES_PKG.ValidateCurrentLine;
57210 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
57211
57212 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
57213 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
57214 ,p_balance_type_code => l_balance_type_code);
57215
57216 END IF;
57217
57218 -----------------------------------------------------------------------------------------
57219 -- 4262811 Multiperiod Accounting
57220 -----------------------------------------------------------------------------------------
57221 -- No MPA option is assigned.
57222
57223
57224 END IF;
57225 END IF;
57226 --
57227
57228 --
57229 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
57230 trace
57231 (p_msg => 'END of AcctLineType_105'
57232 ,p_level => C_LEVEL_PROCEDURE
57233 ,p_module => l_log_module);
57234 END IF;
57235 --
57236 EXCEPTION
57237 WHEN xla_exceptions_pkg.application_exception THEN
57238 RAISE;
57239 WHEN OTHERS THEN
57240 xla_exceptions_pkg.raise_message
57241 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_105');
57242 END AcctLineType_105;
57243 --
57244
57245 ---------------------------------------
57246 --
57247 -- PRIVATE FUNCTION
57248 -- AcctLineType_106
57249 --
57250 ---------------------------------------
57251 PROCEDURE AcctLineType_106 (
57252 p_application_id IN NUMBER
57253 ,p_event_id IN NUMBER
57254 ,p_calculate_acctd_flag IN VARCHAR2
57255 ,p_calculate_g_l_flag IN VARCHAR2
57256 ,p_actual_flag IN OUT VARCHAR2
57257 ,p_balance_type_code OUT VARCHAR2
57258 ,p_gain_or_loss_ref OUT VARCHAR2
57259
57260 --Cost Management Default Account
57261 , p_source_4 IN NUMBER
57262 --DISTRIBUTION_IDENTIFIER
57263 , p_source_11 IN NUMBER
57264 --Distribution Type
57265 , p_source_12 IN VARCHAR2
57266 , p_source_12_meaning IN VARCHAR2
57267 --Entered Currency Code
57268 , p_source_15 IN VARCHAR2
57269 --Entered Amount
57270 , p_source_18 IN NUMBER
57271 --Currency Conversion Date
57272 , p_source_19 IN DATE
57273 --Currency Conversion Rate
57274 , p_source_20 IN NUMBER
57275 --Currency Conversion Type
57276 , p_source_21 IN VARCHAR2
57277 --Accounted Amount
57278 , p_source_22 IN NUMBER
57279 --Accounting Line Type
57280 , p_source_24 IN NUMBER
57281 )
57282 IS
57283
57284 l_component_type VARCHAR2(80);
57285 l_component_code VARCHAR2(30);
57286 l_component_type_code VARCHAR2(1);
57287 l_component_appl_id INTEGER;
57288 l_amb_context_code VARCHAR2(30);
57289 l_entity_code VARCHAR2(30);
57290 l_event_class_code VARCHAR2(30);
57291 l_ae_header_id NUMBER;
57292 l_event_type_code VARCHAR2(30);
57293 l_line_definition_code VARCHAR2(30);
57294 l_line_definition_owner_code VARCHAR2(1);
57295 --
57296 -- adr variables
57297 l_segment VARCHAR2(30);
57298 l_ccid NUMBER;
57299 l_adr_transaction_coa_id NUMBER;
57300 l_adr_accounting_coa_id NUMBER;
57301 l_adr_flexfield_segment_code VARCHAR2(30);
57302 l_adr_flex_value_set_id NUMBER;
57303 l_adr_value_type_code VARCHAR2(30);
57304 l_adr_value_combination_id NUMBER;
57305 l_adr_value_segment_code VARCHAR2(30);
57306
57307 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
57308 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
57309 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
57310 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
57311
57312 -- 4262811 Variables ------------------------------------------------------------------------------------------
57313 l_entered_amt_idx NUMBER;
57314 l_accted_amt_idx NUMBER;
57315 l_acc_rev_flag VARCHAR2(1);
57316 l_accrual_line_num NUMBER;
57317 l_tmp_amt NUMBER;
57318 l_acc_rev_natural_side_code VARCHAR2(1);
57319
57320 l_num_entries NUMBER;
57321 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
57322 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
57323 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
57324 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
57325 l_recog_line_1 NUMBER;
57326 l_recog_line_2 NUMBER;
57327
57328 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
57329 l_bflow_applied_to_amt NUMBER; -- 5132302
57330 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
57331
57332 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
57333
57334 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
57335 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
57336
57337 ---------------------------------------------------------------------------------------------------------------
57338
57339
57340 --
57341 -- bulk performance
57342 --
57343 l_balance_type_code VARCHAR2(1);
57344 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
57345 l_log_module VARCHAR2(240);
57346
57347 --
57348 -- Upgrade strategy
57349 --
57350 l_actual_upg_option VARCHAR2(1);
57351 l_enc_upg_option VARCHAR2(1);
57352
57353 --
57354 BEGIN
57355 --
57356 IF g_log_enabled THEN
57357 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_106';
57358 END IF;
57359 --
57360 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
57361
57362 trace
57363 (p_msg => 'BEGIN of AcctLineType_106'
57364 ,p_level => C_LEVEL_PROCEDURE
57365 ,p_module => l_log_module);
57366
57367 END IF;
57368 --
57369 l_component_type := 'AMB_JLT';
57370 l_component_code := 'INTERORG_TRANSFER_CREDIT';
57371 l_component_type_code := 'S';
57372 l_component_appl_id := 707;
57373 l_amb_context_code := 'DEFAULT';
57374 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
57375 l_event_class_code := 'USER_DEFINE';
57376 l_event_type_code := 'UDIR_INTERORG_RCPT_NO_TP';
57377 l_line_definition_owner_code := 'S';
57378 l_line_definition_code := 'USER_DIR_INTERORG_RCPT_NO_TP';
57379 --
57380 l_balance_type_code := 'A';
57381 l_segment := NULL;
57382 l_ccid := NULL;
57383 l_adr_transaction_coa_id := NULL;
57384 l_adr_accounting_coa_id := NULL;
57385 l_adr_flexfield_segment_code := NULL;
57386 l_adr_flex_value_set_id := NULL;
57387 l_adr_value_type_code := NULL;
57388 l_adr_value_combination_id := NULL;
57389 l_adr_value_segment_code := NULL;
57390
57391 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
57392 l_bflow_class_code := ''; -- 4219869 Business Flow
57393 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
57394 l_budgetary_control_flag := 'N';
57395
57396 l_bflow_applied_to_amt_idx := NULL; -- 5132302
57397 l_bflow_applied_to_amt := NULL; -- 5132302
57398 l_entered_amt_idx := NULL; -- 4262811
57399 l_accted_amt_idx := NULL; -- 4262811
57400 l_acc_rev_flag := NULL; -- 4262811
57401 l_accrual_line_num := NULL; -- 4262811
57402 l_tmp_amt := NULL; -- 4262811
57403 --
57404
57405 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
57406 l_balance_type_code <> 'B' THEN
57407 IF NVL(p_source_24,9E125) = 11
57408 THEN
57409
57410 --
57411 XLA_AE_LINES_PKG.SetNewLine;
57412
57413 p_balance_type_code := l_balance_type_code;
57414 -- set the flag so later we will know whether the gain loss line needs to be created
57415
57416 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
57417 p_actual_flag :='A';
57418 END IF;
57419
57420 --
57421 -- bulk performance
57422 --
57423 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
57424 p_header_num => 0); -- 4262811
57425 --
57426 -- set accounting line options
57427 --
57428 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
57429 p_natural_side_code => 'D'
57430 , p_gain_or_loss_flag => 'N'
57431 , p_gl_transfer_mode_code => 'S'
57432 , p_acct_entry_type_code => 'A'
57433 , p_switch_side_flag => 'Y'
57434 , p_merge_duplicate_code => 'N'
57435 );
57436 --
57437 l_acc_rev_natural_side_code := 'C'; -- 4262811
57438 --
57439 --
57440 -- set accounting line type info
57441 --
57442 xla_ae_lines_pkg.SetAcctLineType
57443 (p_component_type => l_component_type
57444 ,p_event_type_code => l_event_type_code
57445 ,p_line_definition_owner_code => l_line_definition_owner_code
57446 ,p_line_definition_code => l_line_definition_code
57447 ,p_accounting_line_code => l_component_code
57448 ,p_accounting_line_type_code => l_component_type_code
57449 ,p_accounting_line_appl_id => l_component_appl_id
57450 ,p_amb_context_code => l_amb_context_code
57451 ,p_entity_code => l_entity_code
57452 ,p_event_class_code => l_event_class_code);
57453 --
57454 -- set accounting class
57455 --
57456 xla_ae_lines_pkg.SetAcctClass(
57457 p_accounting_class_code => 'INTERORG_TRANSFER_CREDIT'
57458 , p_ae_header_id => l_ae_header_id
57459 );
57460
57461 --
57462 -- set rounding class
57463 --
57464 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
57465 'INTERORG_TRANSFER_CREDIT';
57466
57467 --
57468 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
57469 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
57470 --
57471 -- bulk performance
57472 --
57473 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
57474
57475 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
57476 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
57477
57478 -- 4955764
57479 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
57480 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
57481
57482 -- 4458381 Public Sector Enh
57483
57484 --
57485 -- set accounting attributes for the line type
57486 --
57487 l_entered_amt_idx := 3;
57488 l_accted_amt_idx := 8;
57489 l_bflow_applied_to_amt_idx := NULL; -- 5132302
57490 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
57491 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
57492 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
57493 l_rec_acct_attrs.array_char_value(2) := p_source_12;
57494 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
57495 l_rec_acct_attrs.array_num_value(3) := p_source_18;
57496 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
57497 l_rec_acct_attrs.array_char_value(4) := p_source_15;
57498 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
57499 l_rec_acct_attrs.array_date_value(5) := p_source_19;
57500 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
57501 l_rec_acct_attrs.array_num_value(6) := p_source_20;
57502 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
57503 l_rec_acct_attrs.array_char_value(7) := p_source_21;
57504 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
57505 l_rec_acct_attrs.array_num_value(8) := p_source_22;
57506
57507 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
57508 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
57509
57510 ---------------------------------------------------------------------------------------------------------------
57511 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
57512 ---------------------------------------------------------------------------------------------------------------
57513 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
57514
57515 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
57516 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
57517
57518 IF xla_accounting_cache_pkg.GetValueChar
57519 (p_source_code => 'LEDGER_CATEGORY_CODE'
57520 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
57521 AND l_bflow_method_code = 'PRIOR_ENTRY'
57522 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
57523 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
57524 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
57525 )
57526 THEN
57527 xla_ae_lines_pkg.BflowUpgEntry
57528 (p_business_method_code => l_bflow_method_code
57529 ,p_business_class_code => l_bflow_class_code
57530 ,p_balance_type => l_balance_type_code);
57531 ELSE
57532 NULL;
57533 -- No business flow processing for business flow method of NONE.
57534 END IF;
57535
57536 --
57537 -- call analytical criteria
57538 --
57539
57540 --
57541 -- call description
57542 --
57543 -- No description or it is inherited.
57544 --
57545 -- call ADRs
57546 -- Bug 4922099
57547 --
57548 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
57549 (NVL(l_actual_upg_option, 'N') = 'O') OR
57550 (NVL(l_enc_upg_option, 'N') = 'O')
57551 )
57552 THEN
57553 NULL;
57554 --
57555 --
57556
57557 l_ccid := AcctDerRule_4(
57558 p_application_id => p_application_id
57559 , p_ae_header_id => l_ae_header_id
57560 , p_source_4 => p_source_4
57561 , x_transaction_coa_id => l_adr_transaction_coa_id
57562 , x_accounting_coa_id => l_adr_accounting_coa_id
57563 , x_value_type_code => l_adr_value_type_code
57564 , p_side => 'NA'
57565 );
57566
57567 xla_ae_lines_pkg.set_ccid(
57568 p_code_combination_id => l_ccid
57569 , p_value_type_code => l_adr_value_type_code
57570 , p_transaction_coa_id => l_adr_transaction_coa_id
57571 , p_accounting_coa_id => l_adr_accounting_coa_id
57572 , p_adr_code => 'CST_DEFAULT'
57573 , p_adr_type_code => 'S'
57574 , p_component_type => l_component_type
57575 , p_component_code => l_component_code
57576 , p_component_type_code => l_component_type_code
57577 , p_component_appl_id => l_component_appl_id
57578 , p_amb_context_code => l_amb_context_code
57579 , p_side => 'NA'
57580 );
57581
57582
57583 --
57584 --
57585 END IF;
57586 --
57587 -- Bug 4922099
57588 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
57589 (NVL(l_enc_upg_option, 'N') = 'O')
57590 ) AND
57591 (l_bflow_method_code = 'PRIOR_ENTRY')
57592 )
57593 THEN
57594 IF
57595 --
57596 1 = 2
57597 --
57598 THEN
57599 xla_accounting_err_pkg.build_message
57600 (p_appli_s_name => 'XLA'
57601 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
57602 ,p_token_1 => 'LINE_NUMBER'
57603 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
57604 ,p_token_2 => 'LINE_TYPE_NAME'
57605 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
57606 l_component_type
57607 ,l_component_code
57608 ,l_component_type_code
57609 ,l_component_appl_id
57610 ,l_amb_context_code
57611 ,l_entity_code
57612 ,l_event_class_code
57613 )
57614 ,p_token_3 => 'OWNER'
57615 ,p_value_3 => xla_lookups_pkg.get_meaning(
57616 p_lookup_type => 'XLA_OWNER_TYPE'
57617 ,p_lookup_code => l_component_type_code
57618 )
57619 ,p_token_4 => 'PRODUCT_NAME'
57620 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
57621 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
57622 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
57623 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
57624 ,p_ae_header_id => NULL
57625 );
57626
57627 IF (C_LEVEL_ERROR>= g_log_level) THEN
57628 trace
57629 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
57630 ,p_level => C_LEVEL_ERROR
57631 ,p_module => l_log_module);
57632 END IF;
57633 END IF;
57634 END IF;
57635 --
57636 --
57637 ------------------------------------------------------------------------------------------------
57638 -- 4219869 Business Flow
57639 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
57640 -- Prior Entry. Currently, the following code is always generated.
57641 ------------------------------------------------------------------------------------------------
57642 XLA_AE_LINES_PKG.ValidateCurrentLine;
57643
57644 ------------------------------------------------------------------------------------
57645 -- 4219869 Business Flow
57646 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
57647 ------------------------------------------------------------------------------------
57648 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
57649
57650 ----------------------------------------------------------------------------------
57651 -- 4219869 Business Flow
57652 -- Update journal entry status -- Need to generate this within IF <condition>
57653 ----------------------------------------------------------------------------------
57654 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
57655 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
57656 ,p_balance_type_code => l_balance_type_code
57657 );
57658
57659 -------------------------------------------------------------------------------------------
57660 -- 4262811 - Generate the Accrual Reversal lines
57661 -------------------------------------------------------------------------------------------
57662 BEGIN
57663 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
57664 (g_array_event(p_event_id).array_value_num('header_index'));
57665 IF l_acc_rev_flag IS NULL THEN
57666 l_acc_rev_flag := 'N';
57667 END IF;
57668 EXCEPTION
57669 WHEN OTHERS THEN
57670 l_acc_rev_flag := 'N';
57671 END;
57672 --
57673 IF (l_acc_rev_flag = 'Y') THEN
57674
57675 -- 4645092 ------------------------------------------------------------------------------
57676 -- To allow MPA report to determine if it should generate report process
57677 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
57678 ------------------------------------------------------------------------------------------
57679
57680 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
57681 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
57682 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
57683 -- call ADRs
57684 -- Bug 4922099
57685 --
57686 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
57687 (NVL(l_actual_upg_option, 'N') = 'O') OR
57688 (NVL(l_enc_upg_option, 'N') = 'O')
57689 )
57690 THEN
57691 NULL;
57692 --
57693 --
57694
57695 l_ccid := AcctDerRule_4(
57696 p_application_id => p_application_id
57697 , p_ae_header_id => l_ae_header_id
57698 , p_source_4 => p_source_4
57699 , x_transaction_coa_id => l_adr_transaction_coa_id
57700 , x_accounting_coa_id => l_adr_accounting_coa_id
57701 , x_value_type_code => l_adr_value_type_code
57702 , p_side => 'NA'
57703 );
57704
57705 xla_ae_lines_pkg.set_ccid(
57706 p_code_combination_id => l_ccid
57707 , p_value_type_code => l_adr_value_type_code
57708 , p_transaction_coa_id => l_adr_transaction_coa_id
57709 , p_accounting_coa_id => l_adr_accounting_coa_id
57710 , p_adr_code => 'CST_DEFAULT'
57711 , p_adr_type_code => 'S'
57712 , p_component_type => l_component_type
57713 , p_component_code => l_component_code
57714 , p_component_type_code => l_component_type_code
57715 , p_component_appl_id => l_component_appl_id
57716 , p_amb_context_code => l_amb_context_code
57717 , p_side => 'NA'
57718 );
57719
57720
57721 --
57722 --
57723 END IF;
57724
57725 --
57726 -- Update the line information that should be overwritten
57727 --
57728 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
57729 p_header_num => 1);
57730 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
57731
57732 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
57733
57734 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
57735 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
57736 END IF;
57737
57738 --
57739 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
57740 --
57741 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
57742 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
57743 ELSE
57744 ---------------------------------------------------------------------------------------------------
57745 -- 4262811a Switch Sign
57746 ---------------------------------------------------------------------------------------------------
57747 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
57748 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
57749 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
57750 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
57751 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
57752 -- 5132302
57753 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
57754 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
57755
57756 END IF;
57757
57758 -- 4955764
57759 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
57760 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
57761
57762
57763 XLA_AE_LINES_PKG.ValidateCurrentLine;
57764 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
57765
57766 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
57767 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
57768 ,p_balance_type_code => l_balance_type_code);
57769
57770 END IF;
57771
57772 -----------------------------------------------------------------------------------------
57773 -- 4262811 Multiperiod Accounting
57774 -----------------------------------------------------------------------------------------
57775 -- No MPA option is assigned.
57776
57777
57778 END IF;
57779 END IF;
57780 --
57781
57782 --
57783 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
57784 trace
57785 (p_msg => 'END of AcctLineType_106'
57786 ,p_level => C_LEVEL_PROCEDURE
57787 ,p_module => l_log_module);
57788 END IF;
57789 --
57790 EXCEPTION
57791 WHEN xla_exceptions_pkg.application_exception THEN
57792 RAISE;
57793 WHEN OTHERS THEN
57794 xla_exceptions_pkg.raise_message
57795 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_106');
57796 END AcctLineType_106;
57797 --
57798
57799 ---------------------------------------
57800 --
57801 -- PRIVATE FUNCTION
57802 -- AcctLineType_107
57803 --
57804 ---------------------------------------
57805 PROCEDURE AcctLineType_107 (
57806 p_application_id IN NUMBER
57807 ,p_event_id IN NUMBER
57808 ,p_calculate_acctd_flag IN VARCHAR2
57809 ,p_calculate_g_l_flag IN VARCHAR2
57810 ,p_actual_flag IN OUT VARCHAR2
57811 ,p_balance_type_code OUT VARCHAR2
57812 ,p_gain_or_loss_ref OUT VARCHAR2
57813
57814 --Cost Management Default Account
57815 , p_source_4 IN NUMBER
57816 --DISTRIBUTION_IDENTIFIER
57817 , p_source_11 IN NUMBER
57818 --Distribution Type
57819 , p_source_12 IN VARCHAR2
57820 , p_source_12_meaning IN VARCHAR2
57821 --Entered Currency Code
57822 , p_source_15 IN VARCHAR2
57823 --Entered Amount
57824 , p_source_18 IN NUMBER
57825 --Currency Conversion Date
57826 , p_source_19 IN DATE
57827 --Currency Conversion Rate
57828 , p_source_20 IN NUMBER
57829 --Currency Conversion Type
57830 , p_source_21 IN VARCHAR2
57831 --Accounted Amount
57832 , p_source_22 IN NUMBER
57833 --Accounting Line Type
57834 , p_source_24 IN NUMBER
57835 )
57836 IS
57837
57838 l_component_type VARCHAR2(80);
57839 l_component_code VARCHAR2(30);
57840 l_component_type_code VARCHAR2(1);
57841 l_component_appl_id INTEGER;
57842 l_amb_context_code VARCHAR2(30);
57843 l_entity_code VARCHAR2(30);
57844 l_event_class_code VARCHAR2(30);
57845 l_ae_header_id NUMBER;
57846 l_event_type_code VARCHAR2(30);
57847 l_line_definition_code VARCHAR2(30);
57848 l_line_definition_owner_code VARCHAR2(1);
57849 --
57850 -- adr variables
57851 l_segment VARCHAR2(30);
57852 l_ccid NUMBER;
57853 l_adr_transaction_coa_id NUMBER;
57854 l_adr_accounting_coa_id NUMBER;
57855 l_adr_flexfield_segment_code VARCHAR2(30);
57856 l_adr_flex_value_set_id NUMBER;
57857 l_adr_value_type_code VARCHAR2(30);
57858 l_adr_value_combination_id NUMBER;
57859 l_adr_value_segment_code VARCHAR2(30);
57860
57861 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
57862 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
57863 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
57864 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
57865
57866 -- 4262811 Variables ------------------------------------------------------------------------------------------
57867 l_entered_amt_idx NUMBER;
57868 l_accted_amt_idx NUMBER;
57869 l_acc_rev_flag VARCHAR2(1);
57870 l_accrual_line_num NUMBER;
57871 l_tmp_amt NUMBER;
57872 l_acc_rev_natural_side_code VARCHAR2(1);
57873
57874 l_num_entries NUMBER;
57875 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
57876 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
57877 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
57878 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
57879 l_recog_line_1 NUMBER;
57880 l_recog_line_2 NUMBER;
57881
57882 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
57883 l_bflow_applied_to_amt NUMBER; -- 5132302
57884 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
57885
57886 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
57887
57888 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
57889 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
57890
57891 ---------------------------------------------------------------------------------------------------------------
57892
57893
57894 --
57895 -- bulk performance
57896 --
57897 l_balance_type_code VARCHAR2(1);
57898 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
57899 l_log_module VARCHAR2(240);
57900
57901 --
57902 -- Upgrade strategy
57903 --
57904 l_actual_upg_option VARCHAR2(1);
57905 l_enc_upg_option VARCHAR2(1);
57906
57907 --
57908 BEGIN
57909 --
57910 IF g_log_enabled THEN
57911 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_107';
57912 END IF;
57913 --
57914 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
57915
57916 trace
57917 (p_msg => 'BEGIN of AcctLineType_107'
57918 ,p_level => C_LEVEL_PROCEDURE
57919 ,p_module => l_log_module);
57920
57921 END IF;
57922 --
57923 l_component_type := 'AMB_JLT';
57924 l_component_code := 'INTERORG_TRANSFER_CREDIT';
57925 l_component_type_code := 'S';
57926 l_component_appl_id := 707;
57927 l_amb_context_code := 'DEFAULT';
57928 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
57929 l_event_class_code := 'FOB_RCPT_SENDER_RCPT';
57930 l_event_type_code := 'FOB_RCPT_SENDER_RCPT_ALL';
57931 l_line_definition_owner_code := 'S';
57932 l_line_definition_code := 'FOB_RCPT_SENDER_RCPT';
57933 --
57934 l_balance_type_code := 'A';
57935 l_segment := NULL;
57936 l_ccid := NULL;
57937 l_adr_transaction_coa_id := NULL;
57938 l_adr_accounting_coa_id := NULL;
57939 l_adr_flexfield_segment_code := NULL;
57940 l_adr_flex_value_set_id := NULL;
57941 l_adr_value_type_code := NULL;
57942 l_adr_value_combination_id := NULL;
57943 l_adr_value_segment_code := NULL;
57944
57945 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
57946 l_bflow_class_code := ''; -- 4219869 Business Flow
57947 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
57948 l_budgetary_control_flag := 'N';
57949
57950 l_bflow_applied_to_amt_idx := NULL; -- 5132302
57951 l_bflow_applied_to_amt := NULL; -- 5132302
57952 l_entered_amt_idx := NULL; -- 4262811
57953 l_accted_amt_idx := NULL; -- 4262811
57954 l_acc_rev_flag := NULL; -- 4262811
57955 l_accrual_line_num := NULL; -- 4262811
57956 l_tmp_amt := NULL; -- 4262811
57957 --
57958
57959 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
57960 l_balance_type_code <> 'B' THEN
57961 IF NVL(p_source_24,9E125) = 11
57962 THEN
57963
57964 --
57965 XLA_AE_LINES_PKG.SetNewLine;
57966
57967 p_balance_type_code := l_balance_type_code;
57968 -- set the flag so later we will know whether the gain loss line needs to be created
57969
57970 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
57971 p_actual_flag :='A';
57972 END IF;
57973
57974 --
57975 -- bulk performance
57976 --
57977 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
57978 p_header_num => 0); -- 4262811
57979 --
57980 -- set accounting line options
57981 --
57982 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
57983 p_natural_side_code => 'D'
57984 , p_gain_or_loss_flag => 'N'
57985 , p_gl_transfer_mode_code => 'S'
57986 , p_acct_entry_type_code => 'A'
57987 , p_switch_side_flag => 'Y'
57988 , p_merge_duplicate_code => 'N'
57989 );
57990 --
57991 l_acc_rev_natural_side_code := 'C'; -- 4262811
57992 --
57993 --
57994 -- set accounting line type info
57995 --
57996 xla_ae_lines_pkg.SetAcctLineType
57997 (p_component_type => l_component_type
57998 ,p_event_type_code => l_event_type_code
57999 ,p_line_definition_owner_code => l_line_definition_owner_code
58000 ,p_line_definition_code => l_line_definition_code
58001 ,p_accounting_line_code => l_component_code
58002 ,p_accounting_line_type_code => l_component_type_code
58003 ,p_accounting_line_appl_id => l_component_appl_id
58004 ,p_amb_context_code => l_amb_context_code
58005 ,p_entity_code => l_entity_code
58006 ,p_event_class_code => l_event_class_code);
58007 --
58008 -- set accounting class
58009 --
58010 xla_ae_lines_pkg.SetAcctClass(
58011 p_accounting_class_code => 'INTERORG_TRANSFER_CREDIT'
58012 , p_ae_header_id => l_ae_header_id
58013 );
58014
58015 --
58016 -- set rounding class
58017 --
58018 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
58019 'INTERORG_TRANSFER_CREDIT';
58020
58021 --
58022 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
58023 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
58024 --
58025 -- bulk performance
58026 --
58027 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
58028
58029 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
58030 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
58031
58032 -- 4955764
58033 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
58034 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
58035
58036 -- 4458381 Public Sector Enh
58037
58038 --
58039 -- set accounting attributes for the line type
58040 --
58041 l_entered_amt_idx := 3;
58042 l_accted_amt_idx := 8;
58043 l_bflow_applied_to_amt_idx := NULL; -- 5132302
58044 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
58045 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
58046 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
58047 l_rec_acct_attrs.array_char_value(2) := p_source_12;
58048 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
58049 l_rec_acct_attrs.array_num_value(3) := p_source_18;
58050 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
58051 l_rec_acct_attrs.array_char_value(4) := p_source_15;
58052 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
58053 l_rec_acct_attrs.array_date_value(5) := p_source_19;
58054 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
58055 l_rec_acct_attrs.array_num_value(6) := p_source_20;
58056 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
58057 l_rec_acct_attrs.array_char_value(7) := p_source_21;
58058 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
58059 l_rec_acct_attrs.array_num_value(8) := p_source_22;
58060
58061 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
58062 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
58063
58064 ---------------------------------------------------------------------------------------------------------------
58065 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
58066 ---------------------------------------------------------------------------------------------------------------
58067 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
58068
58069 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
58070 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
58071
58072 IF xla_accounting_cache_pkg.GetValueChar
58073 (p_source_code => 'LEDGER_CATEGORY_CODE'
58074 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
58075 AND l_bflow_method_code = 'PRIOR_ENTRY'
58076 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
58077 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
58078 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
58079 )
58080 THEN
58081 xla_ae_lines_pkg.BflowUpgEntry
58082 (p_business_method_code => l_bflow_method_code
58083 ,p_business_class_code => l_bflow_class_code
58084 ,p_balance_type => l_balance_type_code);
58085 ELSE
58086 NULL;
58087 -- No business flow processing for business flow method of NONE.
58088 END IF;
58089
58090 --
58091 -- call analytical criteria
58092 --
58093
58094 --
58095 -- call description
58096 --
58097 -- No description or it is inherited.
58098 --
58099 -- call ADRs
58100 -- Bug 4922099
58101 --
58102 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
58103 (NVL(l_actual_upg_option, 'N') = 'O') OR
58104 (NVL(l_enc_upg_option, 'N') = 'O')
58105 )
58106 THEN
58107 NULL;
58108 --
58109 --
58110
58111 l_ccid := AcctDerRule_4(
58112 p_application_id => p_application_id
58113 , p_ae_header_id => l_ae_header_id
58114 , p_source_4 => p_source_4
58115 , x_transaction_coa_id => l_adr_transaction_coa_id
58116 , x_accounting_coa_id => l_adr_accounting_coa_id
58117 , x_value_type_code => l_adr_value_type_code
58118 , p_side => 'NA'
58119 );
58120
58121 xla_ae_lines_pkg.set_ccid(
58122 p_code_combination_id => l_ccid
58123 , p_value_type_code => l_adr_value_type_code
58124 , p_transaction_coa_id => l_adr_transaction_coa_id
58125 , p_accounting_coa_id => l_adr_accounting_coa_id
58126 , p_adr_code => 'CST_DEFAULT'
58127 , p_adr_type_code => 'S'
58128 , p_component_type => l_component_type
58129 , p_component_code => l_component_code
58130 , p_component_type_code => l_component_type_code
58131 , p_component_appl_id => l_component_appl_id
58132 , p_amb_context_code => l_amb_context_code
58133 , p_side => 'NA'
58134 );
58135
58136
58137 --
58138 --
58139 END IF;
58140 --
58141 -- Bug 4922099
58142 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
58143 (NVL(l_enc_upg_option, 'N') = 'O')
58144 ) AND
58145 (l_bflow_method_code = 'PRIOR_ENTRY')
58146 )
58147 THEN
58148 IF
58149 --
58150 1 = 2
58151 --
58152 THEN
58153 xla_accounting_err_pkg.build_message
58154 (p_appli_s_name => 'XLA'
58155 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
58156 ,p_token_1 => 'LINE_NUMBER'
58157 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
58158 ,p_token_2 => 'LINE_TYPE_NAME'
58159 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
58160 l_component_type
58161 ,l_component_code
58162 ,l_component_type_code
58163 ,l_component_appl_id
58164 ,l_amb_context_code
58165 ,l_entity_code
58166 ,l_event_class_code
58167 )
58168 ,p_token_3 => 'OWNER'
58169 ,p_value_3 => xla_lookups_pkg.get_meaning(
58170 p_lookup_type => 'XLA_OWNER_TYPE'
58171 ,p_lookup_code => l_component_type_code
58172 )
58173 ,p_token_4 => 'PRODUCT_NAME'
58174 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
58175 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
58176 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
58177 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
58178 ,p_ae_header_id => NULL
58179 );
58180
58181 IF (C_LEVEL_ERROR>= g_log_level) THEN
58182 trace
58183 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
58184 ,p_level => C_LEVEL_ERROR
58185 ,p_module => l_log_module);
58186 END IF;
58187 END IF;
58188 END IF;
58189 --
58190 --
58191 ------------------------------------------------------------------------------------------------
58192 -- 4219869 Business Flow
58193 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
58194 -- Prior Entry. Currently, the following code is always generated.
58195 ------------------------------------------------------------------------------------------------
58196 XLA_AE_LINES_PKG.ValidateCurrentLine;
58197
58198 ------------------------------------------------------------------------------------
58199 -- 4219869 Business Flow
58200 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
58201 ------------------------------------------------------------------------------------
58202 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
58203
58204 ----------------------------------------------------------------------------------
58205 -- 4219869 Business Flow
58206 -- Update journal entry status -- Need to generate this within IF <condition>
58207 ----------------------------------------------------------------------------------
58208 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
58209 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
58210 ,p_balance_type_code => l_balance_type_code
58211 );
58212
58213 -------------------------------------------------------------------------------------------
58214 -- 4262811 - Generate the Accrual Reversal lines
58215 -------------------------------------------------------------------------------------------
58216 BEGIN
58217 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
58218 (g_array_event(p_event_id).array_value_num('header_index'));
58219 IF l_acc_rev_flag IS NULL THEN
58220 l_acc_rev_flag := 'N';
58221 END IF;
58222 EXCEPTION
58223 WHEN OTHERS THEN
58224 l_acc_rev_flag := 'N';
58225 END;
58226 --
58227 IF (l_acc_rev_flag = 'Y') THEN
58228
58229 -- 4645092 ------------------------------------------------------------------------------
58230 -- To allow MPA report to determine if it should generate report process
58231 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
58232 ------------------------------------------------------------------------------------------
58233
58234 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
58235 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
58236 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
58237 -- call ADRs
58238 -- Bug 4922099
58239 --
58240 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
58241 (NVL(l_actual_upg_option, 'N') = 'O') OR
58242 (NVL(l_enc_upg_option, 'N') = 'O')
58243 )
58244 THEN
58245 NULL;
58246 --
58247 --
58248
58249 l_ccid := AcctDerRule_4(
58250 p_application_id => p_application_id
58251 , p_ae_header_id => l_ae_header_id
58252 , p_source_4 => p_source_4
58253 , x_transaction_coa_id => l_adr_transaction_coa_id
58254 , x_accounting_coa_id => l_adr_accounting_coa_id
58255 , x_value_type_code => l_adr_value_type_code
58256 , p_side => 'NA'
58257 );
58258
58259 xla_ae_lines_pkg.set_ccid(
58260 p_code_combination_id => l_ccid
58261 , p_value_type_code => l_adr_value_type_code
58262 , p_transaction_coa_id => l_adr_transaction_coa_id
58263 , p_accounting_coa_id => l_adr_accounting_coa_id
58264 , p_adr_code => 'CST_DEFAULT'
58265 , p_adr_type_code => 'S'
58266 , p_component_type => l_component_type
58267 , p_component_code => l_component_code
58268 , p_component_type_code => l_component_type_code
58269 , p_component_appl_id => l_component_appl_id
58270 , p_amb_context_code => l_amb_context_code
58271 , p_side => 'NA'
58272 );
58273
58274
58275 --
58276 --
58277 END IF;
58278
58279 --
58280 -- Update the line information that should be overwritten
58281 --
58282 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
58283 p_header_num => 1);
58284 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
58285
58286 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
58287
58288 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
58289 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
58290 END IF;
58291
58292 --
58293 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
58294 --
58295 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
58296 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
58297 ELSE
58298 ---------------------------------------------------------------------------------------------------
58299 -- 4262811a Switch Sign
58300 ---------------------------------------------------------------------------------------------------
58301 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
58302 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
58303 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
58304 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
58305 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
58306 -- 5132302
58307 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
58308 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
58309
58310 END IF;
58311
58312 -- 4955764
58313 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
58314 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
58315
58316
58317 XLA_AE_LINES_PKG.ValidateCurrentLine;
58318 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
58319
58320 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
58321 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
58322 ,p_balance_type_code => l_balance_type_code);
58323
58324 END IF;
58325
58326 -----------------------------------------------------------------------------------------
58327 -- 4262811 Multiperiod Accounting
58328 -----------------------------------------------------------------------------------------
58329 -- No MPA option is assigned.
58330
58331
58332 END IF;
58333 END IF;
58334 --
58335
58336 --
58337 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
58338 trace
58339 (p_msg => 'END of AcctLineType_107'
58340 ,p_level => C_LEVEL_PROCEDURE
58341 ,p_module => l_log_module);
58342 END IF;
58343 --
58344 EXCEPTION
58345 WHEN xla_exceptions_pkg.application_exception THEN
58346 RAISE;
58347 WHEN OTHERS THEN
58348 xla_exceptions_pkg.raise_message
58349 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_107');
58350 END AcctLineType_107;
58351 --
58352
58353 ---------------------------------------
58354 --
58355 -- PRIVATE FUNCTION
58356 -- AcctLineType_108
58357 --
58358 ---------------------------------------
58359 PROCEDURE AcctLineType_108 (
58360 p_application_id IN NUMBER
58361 ,p_event_id IN NUMBER
58362 ,p_calculate_acctd_flag IN VARCHAR2
58363 ,p_calculate_g_l_flag IN VARCHAR2
58364 ,p_actual_flag IN OUT VARCHAR2
58365 ,p_balance_type_code OUT VARCHAR2
58366 ,p_gain_or_loss_ref OUT VARCHAR2
58367
58368 --Cost Management Default Account
58369 , p_source_4 IN NUMBER
58370 --DISTRIBUTION_IDENTIFIER
58371 , p_source_11 IN NUMBER
58372 --Distribution Type
58373 , p_source_12 IN VARCHAR2
58374 , p_source_12_meaning IN VARCHAR2
58375 --Entered Currency Code
58376 , p_source_15 IN VARCHAR2
58377 --Entered Amount
58378 , p_source_18 IN NUMBER
58379 --Currency Conversion Date
58380 , p_source_19 IN DATE
58381 --Currency Conversion Rate
58382 , p_source_20 IN NUMBER
58383 --Currency Conversion Type
58384 , p_source_21 IN VARCHAR2
58385 --Accounted Amount
58386 , p_source_22 IN NUMBER
58387 --Accounting Line Type
58388 , p_source_24 IN NUMBER
58389 )
58390 IS
58391
58392 l_component_type VARCHAR2(80);
58393 l_component_code VARCHAR2(30);
58394 l_component_type_code VARCHAR2(1);
58395 l_component_appl_id INTEGER;
58396 l_amb_context_code VARCHAR2(30);
58397 l_entity_code VARCHAR2(30);
58398 l_event_class_code VARCHAR2(30);
58399 l_ae_header_id NUMBER;
58400 l_event_type_code VARCHAR2(30);
58401 l_line_definition_code VARCHAR2(30);
58402 l_line_definition_owner_code VARCHAR2(1);
58403 --
58404 -- adr variables
58405 l_segment VARCHAR2(30);
58406 l_ccid NUMBER;
58407 l_adr_transaction_coa_id NUMBER;
58408 l_adr_accounting_coa_id NUMBER;
58409 l_adr_flexfield_segment_code VARCHAR2(30);
58410 l_adr_flex_value_set_id NUMBER;
58411 l_adr_value_type_code VARCHAR2(30);
58412 l_adr_value_combination_id NUMBER;
58413 l_adr_value_segment_code VARCHAR2(30);
58414
58415 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
58416 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
58417 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
58418 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
58419
58420 -- 4262811 Variables ------------------------------------------------------------------------------------------
58421 l_entered_amt_idx NUMBER;
58422 l_accted_amt_idx NUMBER;
58423 l_acc_rev_flag VARCHAR2(1);
58424 l_accrual_line_num NUMBER;
58425 l_tmp_amt NUMBER;
58426 l_acc_rev_natural_side_code VARCHAR2(1);
58427
58428 l_num_entries NUMBER;
58429 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
58430 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
58431 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
58432 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
58433 l_recog_line_1 NUMBER;
58434 l_recog_line_2 NUMBER;
58435
58436 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
58437 l_bflow_applied_to_amt NUMBER; -- 5132302
58438 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
58439
58440 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
58441
58442 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
58443 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
58444
58445 ---------------------------------------------------------------------------------------------------------------
58446
58447
58448 --
58449 -- bulk performance
58450 --
58451 l_balance_type_code VARCHAR2(1);
58452 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
58453 l_log_module VARCHAR2(240);
58454
58455 --
58456 -- Upgrade strategy
58457 --
58458 l_actual_upg_option VARCHAR2(1);
58459 l_enc_upg_option VARCHAR2(1);
58460
58461 --
58462 BEGIN
58463 --
58464 IF g_log_enabled THEN
58465 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_108';
58466 END IF;
58467 --
58468 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
58469
58470 trace
58471 (p_msg => 'BEGIN of AcctLineType_108'
58472 ,p_level => C_LEVEL_PROCEDURE
58473 ,p_module => l_log_module);
58474
58475 END IF;
58476 --
58477 l_component_type := 'AMB_JLT';
58478 l_component_code := 'INTERORG_TRANSFER_CREDIT';
58479 l_component_type_code := 'S';
58480 l_component_appl_id := 707;
58481 l_amb_context_code := 'DEFAULT';
58482 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
58483 l_event_class_code := 'USER_DEFINE';
58484 l_event_type_code := 'UDIR_INTERORG_SHIP_NO_TP';
58485 l_line_definition_owner_code := 'S';
58486 l_line_definition_code := 'USER_DIR_INTERORG_SHIP_NO_TP';
58487 --
58488 l_balance_type_code := 'A';
58489 l_segment := NULL;
58490 l_ccid := NULL;
58491 l_adr_transaction_coa_id := NULL;
58492 l_adr_accounting_coa_id := NULL;
58493 l_adr_flexfield_segment_code := NULL;
58494 l_adr_flex_value_set_id := NULL;
58495 l_adr_value_type_code := NULL;
58496 l_adr_value_combination_id := NULL;
58497 l_adr_value_segment_code := NULL;
58498
58499 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
58500 l_bflow_class_code := ''; -- 4219869 Business Flow
58501 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
58502 l_budgetary_control_flag := 'N';
58503
58504 l_bflow_applied_to_amt_idx := NULL; -- 5132302
58505 l_bflow_applied_to_amt := NULL; -- 5132302
58506 l_entered_amt_idx := NULL; -- 4262811
58507 l_accted_amt_idx := NULL; -- 4262811
58508 l_acc_rev_flag := NULL; -- 4262811
58509 l_accrual_line_num := NULL; -- 4262811
58510 l_tmp_amt := NULL; -- 4262811
58511 --
58512
58513 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
58514 l_balance_type_code <> 'B' THEN
58515 IF NVL(p_source_24,9E125) = 11
58516 THEN
58517
58518 --
58519 XLA_AE_LINES_PKG.SetNewLine;
58520
58521 p_balance_type_code := l_balance_type_code;
58522 -- set the flag so later we will know whether the gain loss line needs to be created
58523
58524 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
58525 p_actual_flag :='A';
58526 END IF;
58527
58528 --
58529 -- bulk performance
58530 --
58531 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
58532 p_header_num => 0); -- 4262811
58533 --
58534 -- set accounting line options
58535 --
58536 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
58537 p_natural_side_code => 'D'
58538 , p_gain_or_loss_flag => 'N'
58539 , p_gl_transfer_mode_code => 'S'
58540 , p_acct_entry_type_code => 'A'
58541 , p_switch_side_flag => 'Y'
58542 , p_merge_duplicate_code => 'N'
58543 );
58544 --
58545 l_acc_rev_natural_side_code := 'C'; -- 4262811
58546 --
58547 --
58548 -- set accounting line type info
58549 --
58550 xla_ae_lines_pkg.SetAcctLineType
58551 (p_component_type => l_component_type
58552 ,p_event_type_code => l_event_type_code
58553 ,p_line_definition_owner_code => l_line_definition_owner_code
58554 ,p_line_definition_code => l_line_definition_code
58555 ,p_accounting_line_code => l_component_code
58556 ,p_accounting_line_type_code => l_component_type_code
58557 ,p_accounting_line_appl_id => l_component_appl_id
58558 ,p_amb_context_code => l_amb_context_code
58559 ,p_entity_code => l_entity_code
58560 ,p_event_class_code => l_event_class_code);
58561 --
58562 -- set accounting class
58563 --
58564 xla_ae_lines_pkg.SetAcctClass(
58565 p_accounting_class_code => 'INTERORG_TRANSFER_CREDIT'
58566 , p_ae_header_id => l_ae_header_id
58567 );
58568
58569 --
58570 -- set rounding class
58571 --
58572 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
58573 'INTERORG_TRANSFER_CREDIT';
58574
58575 --
58576 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
58577 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
58578 --
58579 -- bulk performance
58580 --
58581 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
58582
58583 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
58584 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
58585
58586 -- 4955764
58587 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
58588 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
58589
58590 -- 4458381 Public Sector Enh
58591
58592 --
58593 -- set accounting attributes for the line type
58594 --
58595 l_entered_amt_idx := 3;
58596 l_accted_amt_idx := 8;
58597 l_bflow_applied_to_amt_idx := NULL; -- 5132302
58598 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
58599 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
58600 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
58601 l_rec_acct_attrs.array_char_value(2) := p_source_12;
58602 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
58603 l_rec_acct_attrs.array_num_value(3) := p_source_18;
58604 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
58605 l_rec_acct_attrs.array_char_value(4) := p_source_15;
58606 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
58607 l_rec_acct_attrs.array_date_value(5) := p_source_19;
58608 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
58609 l_rec_acct_attrs.array_num_value(6) := p_source_20;
58610 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
58611 l_rec_acct_attrs.array_char_value(7) := p_source_21;
58612 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
58613 l_rec_acct_attrs.array_num_value(8) := p_source_22;
58614
58615 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
58616 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
58617
58618 ---------------------------------------------------------------------------------------------------------------
58619 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
58620 ---------------------------------------------------------------------------------------------------------------
58621 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
58622
58623 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
58624 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
58625
58626 IF xla_accounting_cache_pkg.GetValueChar
58627 (p_source_code => 'LEDGER_CATEGORY_CODE'
58628 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
58629 AND l_bflow_method_code = 'PRIOR_ENTRY'
58630 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
58631 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
58632 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
58633 )
58634 THEN
58635 xla_ae_lines_pkg.BflowUpgEntry
58636 (p_business_method_code => l_bflow_method_code
58637 ,p_business_class_code => l_bflow_class_code
58638 ,p_balance_type => l_balance_type_code);
58639 ELSE
58640 NULL;
58641 -- No business flow processing for business flow method of NONE.
58642 END IF;
58643
58644 --
58645 -- call analytical criteria
58646 --
58647
58648 --
58649 -- call description
58650 --
58651 -- No description or it is inherited.
58652 --
58653 -- call ADRs
58654 -- Bug 4922099
58655 --
58656 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
58657 (NVL(l_actual_upg_option, 'N') = 'O') OR
58658 (NVL(l_enc_upg_option, 'N') = 'O')
58659 )
58660 THEN
58661 NULL;
58662 --
58663 --
58664
58665 l_ccid := AcctDerRule_4(
58666 p_application_id => p_application_id
58667 , p_ae_header_id => l_ae_header_id
58668 , p_source_4 => p_source_4
58669 , x_transaction_coa_id => l_adr_transaction_coa_id
58670 , x_accounting_coa_id => l_adr_accounting_coa_id
58671 , x_value_type_code => l_adr_value_type_code
58672 , p_side => 'NA'
58673 );
58674
58675 xla_ae_lines_pkg.set_ccid(
58676 p_code_combination_id => l_ccid
58677 , p_value_type_code => l_adr_value_type_code
58678 , p_transaction_coa_id => l_adr_transaction_coa_id
58679 , p_accounting_coa_id => l_adr_accounting_coa_id
58680 , p_adr_code => 'CST_DEFAULT'
58681 , p_adr_type_code => 'S'
58682 , p_component_type => l_component_type
58683 , p_component_code => l_component_code
58684 , p_component_type_code => l_component_type_code
58685 , p_component_appl_id => l_component_appl_id
58686 , p_amb_context_code => l_amb_context_code
58687 , p_side => 'NA'
58688 );
58689
58690
58691 --
58692 --
58693 END IF;
58694 --
58695 -- Bug 4922099
58696 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
58697 (NVL(l_enc_upg_option, 'N') = 'O')
58698 ) AND
58699 (l_bflow_method_code = 'PRIOR_ENTRY')
58700 )
58701 THEN
58702 IF
58703 --
58704 1 = 2
58705 --
58706 THEN
58707 xla_accounting_err_pkg.build_message
58708 (p_appli_s_name => 'XLA'
58709 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
58710 ,p_token_1 => 'LINE_NUMBER'
58711 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
58712 ,p_token_2 => 'LINE_TYPE_NAME'
58713 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
58714 l_component_type
58715 ,l_component_code
58716 ,l_component_type_code
58717 ,l_component_appl_id
58718 ,l_amb_context_code
58719 ,l_entity_code
58720 ,l_event_class_code
58721 )
58722 ,p_token_3 => 'OWNER'
58723 ,p_value_3 => xla_lookups_pkg.get_meaning(
58724 p_lookup_type => 'XLA_OWNER_TYPE'
58725 ,p_lookup_code => l_component_type_code
58726 )
58727 ,p_token_4 => 'PRODUCT_NAME'
58728 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
58729 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
58730 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
58731 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
58732 ,p_ae_header_id => NULL
58733 );
58734
58735 IF (C_LEVEL_ERROR>= g_log_level) THEN
58736 trace
58737 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
58738 ,p_level => C_LEVEL_ERROR
58739 ,p_module => l_log_module);
58740 END IF;
58741 END IF;
58742 END IF;
58743 --
58744 --
58745 ------------------------------------------------------------------------------------------------
58746 -- 4219869 Business Flow
58747 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
58748 -- Prior Entry. Currently, the following code is always generated.
58749 ------------------------------------------------------------------------------------------------
58750 XLA_AE_LINES_PKG.ValidateCurrentLine;
58751
58752 ------------------------------------------------------------------------------------
58753 -- 4219869 Business Flow
58754 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
58755 ------------------------------------------------------------------------------------
58756 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
58757
58758 ----------------------------------------------------------------------------------
58759 -- 4219869 Business Flow
58760 -- Update journal entry status -- Need to generate this within IF <condition>
58761 ----------------------------------------------------------------------------------
58762 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
58763 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
58764 ,p_balance_type_code => l_balance_type_code
58765 );
58766
58767 -------------------------------------------------------------------------------------------
58768 -- 4262811 - Generate the Accrual Reversal lines
58769 -------------------------------------------------------------------------------------------
58770 BEGIN
58771 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
58772 (g_array_event(p_event_id).array_value_num('header_index'));
58773 IF l_acc_rev_flag IS NULL THEN
58774 l_acc_rev_flag := 'N';
58775 END IF;
58776 EXCEPTION
58777 WHEN OTHERS THEN
58778 l_acc_rev_flag := 'N';
58779 END;
58780 --
58781 IF (l_acc_rev_flag = 'Y') THEN
58782
58783 -- 4645092 ------------------------------------------------------------------------------
58784 -- To allow MPA report to determine if it should generate report process
58785 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
58786 ------------------------------------------------------------------------------------------
58787
58788 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
58789 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
58790 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
58791 -- call ADRs
58792 -- Bug 4922099
58793 --
58794 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
58795 (NVL(l_actual_upg_option, 'N') = 'O') OR
58796 (NVL(l_enc_upg_option, 'N') = 'O')
58797 )
58798 THEN
58799 NULL;
58800 --
58801 --
58802
58803 l_ccid := AcctDerRule_4(
58804 p_application_id => p_application_id
58805 , p_ae_header_id => l_ae_header_id
58806 , p_source_4 => p_source_4
58807 , x_transaction_coa_id => l_adr_transaction_coa_id
58808 , x_accounting_coa_id => l_adr_accounting_coa_id
58809 , x_value_type_code => l_adr_value_type_code
58810 , p_side => 'NA'
58811 );
58812
58813 xla_ae_lines_pkg.set_ccid(
58814 p_code_combination_id => l_ccid
58815 , p_value_type_code => l_adr_value_type_code
58816 , p_transaction_coa_id => l_adr_transaction_coa_id
58817 , p_accounting_coa_id => l_adr_accounting_coa_id
58818 , p_adr_code => 'CST_DEFAULT'
58819 , p_adr_type_code => 'S'
58820 , p_component_type => l_component_type
58821 , p_component_code => l_component_code
58822 , p_component_type_code => l_component_type_code
58823 , p_component_appl_id => l_component_appl_id
58824 , p_amb_context_code => l_amb_context_code
58825 , p_side => 'NA'
58826 );
58827
58828
58829 --
58830 --
58831 END IF;
58832
58833 --
58834 -- Update the line information that should be overwritten
58835 --
58836 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
58837 p_header_num => 1);
58838 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
58839
58840 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
58841
58842 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
58843 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
58844 END IF;
58845
58846 --
58847 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
58848 --
58849 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
58850 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
58851 ELSE
58852 ---------------------------------------------------------------------------------------------------
58853 -- 4262811a Switch Sign
58854 ---------------------------------------------------------------------------------------------------
58855 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
58856 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
58857 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
58858 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
58859 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
58860 -- 5132302
58861 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
58862 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
58863
58864 END IF;
58865
58866 -- 4955764
58867 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
58868 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
58869
58870
58871 XLA_AE_LINES_PKG.ValidateCurrentLine;
58872 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
58873
58874 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
58875 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
58876 ,p_balance_type_code => l_balance_type_code);
58877
58878 END IF;
58879
58880 -----------------------------------------------------------------------------------------
58881 -- 4262811 Multiperiod Accounting
58882 -----------------------------------------------------------------------------------------
58883 -- No MPA option is assigned.
58884
58885
58886 END IF;
58887 END IF;
58888 --
58889
58890 --
58891 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
58892 trace
58893 (p_msg => 'END of AcctLineType_108'
58894 ,p_level => C_LEVEL_PROCEDURE
58895 ,p_module => l_log_module);
58896 END IF;
58897 --
58898 EXCEPTION
58899 WHEN xla_exceptions_pkg.application_exception THEN
58900 RAISE;
58901 WHEN OTHERS THEN
58902 xla_exceptions_pkg.raise_message
58903 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_108');
58904 END AcctLineType_108;
58905 --
58906
58907 ---------------------------------------
58908 --
58909 -- PRIVATE FUNCTION
58910 -- AcctLineType_109
58911 --
58912 ---------------------------------------
58913 PROCEDURE AcctLineType_109 (
58914 p_application_id IN NUMBER
58915 ,p_event_id IN NUMBER
58916 ,p_calculate_acctd_flag IN VARCHAR2
58917 ,p_calculate_g_l_flag IN VARCHAR2
58918 ,p_actual_flag IN OUT VARCHAR2
58919 ,p_balance_type_code OUT VARCHAR2
58920 ,p_gain_or_loss_ref OUT VARCHAR2
58921
58922 --Cost Management Default Account
58923 , p_source_4 IN NUMBER
58924 --DISTRIBUTION_IDENTIFIER
58925 , p_source_11 IN NUMBER
58926 --Distribution Type
58927 , p_source_12 IN VARCHAR2
58928 , p_source_12_meaning IN VARCHAR2
58929 --Entered Currency Code
58930 , p_source_15 IN VARCHAR2
58931 --Entered Amount
58932 , p_source_18 IN NUMBER
58933 --Currency Conversion Date
58934 , p_source_19 IN DATE
58935 --Currency Conversion Rate
58936 , p_source_20 IN NUMBER
58937 --Currency Conversion Type
58938 , p_source_21 IN VARCHAR2
58939 --Accounted Amount
58940 , p_source_22 IN NUMBER
58941 --Accounting Line Type
58942 , p_source_24 IN NUMBER
58943 )
58944 IS
58945
58946 l_component_type VARCHAR2(80);
58947 l_component_code VARCHAR2(30);
58948 l_component_type_code VARCHAR2(1);
58949 l_component_appl_id INTEGER;
58950 l_amb_context_code VARCHAR2(30);
58951 l_entity_code VARCHAR2(30);
58952 l_event_class_code VARCHAR2(30);
58953 l_ae_header_id NUMBER;
58954 l_event_type_code VARCHAR2(30);
58955 l_line_definition_code VARCHAR2(30);
58956 l_line_definition_owner_code VARCHAR2(1);
58957 --
58958 -- adr variables
58959 l_segment VARCHAR2(30);
58960 l_ccid NUMBER;
58961 l_adr_transaction_coa_id NUMBER;
58962 l_adr_accounting_coa_id NUMBER;
58963 l_adr_flexfield_segment_code VARCHAR2(30);
58964 l_adr_flex_value_set_id NUMBER;
58965 l_adr_value_type_code VARCHAR2(30);
58966 l_adr_value_combination_id NUMBER;
58967 l_adr_value_segment_code VARCHAR2(30);
58968
58969 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
58970 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
58971 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
58972 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
58973
58974 -- 4262811 Variables ------------------------------------------------------------------------------------------
58975 l_entered_amt_idx NUMBER;
58976 l_accted_amt_idx NUMBER;
58977 l_acc_rev_flag VARCHAR2(1);
58978 l_accrual_line_num NUMBER;
58979 l_tmp_amt NUMBER;
58980 l_acc_rev_natural_side_code VARCHAR2(1);
58981
58982 l_num_entries NUMBER;
58983 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
58984 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
58985 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
58986 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
58987 l_recog_line_1 NUMBER;
58988 l_recog_line_2 NUMBER;
58989
58990 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
58991 l_bflow_applied_to_amt NUMBER; -- 5132302
58992 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
58993
58994 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
58995
58996 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
58997 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
58998
58999 ---------------------------------------------------------------------------------------------------------------
59000
59001
59002 --
59003 -- bulk performance
59004 --
59005 l_balance_type_code VARCHAR2(1);
59006 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
59007 l_log_module VARCHAR2(240);
59008
59009 --
59010 -- Upgrade strategy
59011 --
59012 l_actual_upg_option VARCHAR2(1);
59013 l_enc_upg_option VARCHAR2(1);
59014
59015 --
59016 BEGIN
59017 --
59018 IF g_log_enabled THEN
59019 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_109';
59020 END IF;
59021 --
59022 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
59023
59024 trace
59025 (p_msg => 'BEGIN of AcctLineType_109'
59026 ,p_level => C_LEVEL_PROCEDURE
59027 ,p_module => l_log_module);
59028
59029 END IF;
59030 --
59031 l_component_type := 'AMB_JLT';
59032 l_component_code := 'INTERORG_TRANSFER_CREDIT';
59033 l_component_type_code := 'S';
59034 l_component_appl_id := 707;
59035 l_amb_context_code := 'DEFAULT';
59036 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
59037 l_event_class_code := 'FOB_SHIP_SENDER_SHIP';
59038 l_event_type_code := 'FOB_SHIP_SENDER_SHIP_ALL';
59039 l_line_definition_owner_code := 'S';
59040 l_line_definition_code := 'FOB_SHIP_SENDER_SHIP';
59041 --
59042 l_balance_type_code := 'A';
59043 l_segment := NULL;
59044 l_ccid := NULL;
59045 l_adr_transaction_coa_id := NULL;
59046 l_adr_accounting_coa_id := NULL;
59047 l_adr_flexfield_segment_code := NULL;
59048 l_adr_flex_value_set_id := NULL;
59049 l_adr_value_type_code := NULL;
59050 l_adr_value_combination_id := NULL;
59051 l_adr_value_segment_code := NULL;
59052
59053 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
59054 l_bflow_class_code := ''; -- 4219869 Business Flow
59055 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
59056 l_budgetary_control_flag := 'N';
59057
59058 l_bflow_applied_to_amt_idx := NULL; -- 5132302
59059 l_bflow_applied_to_amt := NULL; -- 5132302
59060 l_entered_amt_idx := NULL; -- 4262811
59061 l_accted_amt_idx := NULL; -- 4262811
59062 l_acc_rev_flag := NULL; -- 4262811
59063 l_accrual_line_num := NULL; -- 4262811
59064 l_tmp_amt := NULL; -- 4262811
59065 --
59066
59067 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
59068 l_balance_type_code <> 'B' THEN
59069 IF NVL(p_source_24,9E125) = 11
59070 THEN
59071
59072 --
59073 XLA_AE_LINES_PKG.SetNewLine;
59074
59075 p_balance_type_code := l_balance_type_code;
59076 -- set the flag so later we will know whether the gain loss line needs to be created
59077
59078 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
59079 p_actual_flag :='A';
59080 END IF;
59081
59082 --
59083 -- bulk performance
59084 --
59085 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
59086 p_header_num => 0); -- 4262811
59087 --
59088 -- set accounting line options
59089 --
59090 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
59091 p_natural_side_code => 'D'
59092 , p_gain_or_loss_flag => 'N'
59093 , p_gl_transfer_mode_code => 'S'
59094 , p_acct_entry_type_code => 'A'
59095 , p_switch_side_flag => 'Y'
59096 , p_merge_duplicate_code => 'N'
59097 );
59098 --
59099 l_acc_rev_natural_side_code := 'C'; -- 4262811
59100 --
59101 --
59102 -- set accounting line type info
59103 --
59104 xla_ae_lines_pkg.SetAcctLineType
59105 (p_component_type => l_component_type
59106 ,p_event_type_code => l_event_type_code
59107 ,p_line_definition_owner_code => l_line_definition_owner_code
59108 ,p_line_definition_code => l_line_definition_code
59109 ,p_accounting_line_code => l_component_code
59110 ,p_accounting_line_type_code => l_component_type_code
59111 ,p_accounting_line_appl_id => l_component_appl_id
59112 ,p_amb_context_code => l_amb_context_code
59113 ,p_entity_code => l_entity_code
59114 ,p_event_class_code => l_event_class_code);
59115 --
59116 -- set accounting class
59117 --
59118 xla_ae_lines_pkg.SetAcctClass(
59119 p_accounting_class_code => 'INTERORG_TRANSFER_CREDIT'
59120 , p_ae_header_id => l_ae_header_id
59121 );
59122
59123 --
59124 -- set rounding class
59125 --
59126 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
59127 'INTERORG_TRANSFER_CREDIT';
59128
59129 --
59130 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
59131 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
59132 --
59133 -- bulk performance
59134 --
59135 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
59136
59137 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
59138 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
59139
59140 -- 4955764
59141 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
59142 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
59143
59144 -- 4458381 Public Sector Enh
59145
59146 --
59147 -- set accounting attributes for the line type
59148 --
59149 l_entered_amt_idx := 3;
59150 l_accted_amt_idx := 8;
59151 l_bflow_applied_to_amt_idx := NULL; -- 5132302
59152 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
59153 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
59154 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
59155 l_rec_acct_attrs.array_char_value(2) := p_source_12;
59156 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
59157 l_rec_acct_attrs.array_num_value(3) := p_source_18;
59158 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
59159 l_rec_acct_attrs.array_char_value(4) := p_source_15;
59160 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
59161 l_rec_acct_attrs.array_date_value(5) := p_source_19;
59162 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
59163 l_rec_acct_attrs.array_num_value(6) := p_source_20;
59164 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
59165 l_rec_acct_attrs.array_char_value(7) := p_source_21;
59166 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
59167 l_rec_acct_attrs.array_num_value(8) := p_source_22;
59168
59169 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
59170 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
59171
59172 ---------------------------------------------------------------------------------------------------------------
59173 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
59174 ---------------------------------------------------------------------------------------------------------------
59175 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
59176
59177 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
59178 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
59179
59180 IF xla_accounting_cache_pkg.GetValueChar
59181 (p_source_code => 'LEDGER_CATEGORY_CODE'
59182 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
59183 AND l_bflow_method_code = 'PRIOR_ENTRY'
59184 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
59185 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
59186 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
59187 )
59188 THEN
59189 xla_ae_lines_pkg.BflowUpgEntry
59190 (p_business_method_code => l_bflow_method_code
59191 ,p_business_class_code => l_bflow_class_code
59192 ,p_balance_type => l_balance_type_code);
59193 ELSE
59194 NULL;
59195 -- No business flow processing for business flow method of NONE.
59196 END IF;
59197
59198 --
59199 -- call analytical criteria
59200 --
59201
59202 --
59203 -- call description
59204 --
59205 -- No description or it is inherited.
59206 --
59207 -- call ADRs
59208 -- Bug 4922099
59209 --
59210 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
59211 (NVL(l_actual_upg_option, 'N') = 'O') OR
59212 (NVL(l_enc_upg_option, 'N') = 'O')
59213 )
59214 THEN
59215 NULL;
59216 --
59217 --
59218
59219 l_ccid := AcctDerRule_4(
59220 p_application_id => p_application_id
59221 , p_ae_header_id => l_ae_header_id
59222 , p_source_4 => p_source_4
59223 , x_transaction_coa_id => l_adr_transaction_coa_id
59224 , x_accounting_coa_id => l_adr_accounting_coa_id
59225 , x_value_type_code => l_adr_value_type_code
59226 , p_side => 'NA'
59227 );
59228
59229 xla_ae_lines_pkg.set_ccid(
59230 p_code_combination_id => l_ccid
59231 , p_value_type_code => l_adr_value_type_code
59232 , p_transaction_coa_id => l_adr_transaction_coa_id
59233 , p_accounting_coa_id => l_adr_accounting_coa_id
59234 , p_adr_code => 'CST_DEFAULT'
59235 , p_adr_type_code => 'S'
59236 , p_component_type => l_component_type
59237 , p_component_code => l_component_code
59238 , p_component_type_code => l_component_type_code
59239 , p_component_appl_id => l_component_appl_id
59240 , p_amb_context_code => l_amb_context_code
59241 , p_side => 'NA'
59242 );
59243
59244
59245 --
59246 --
59247 END IF;
59248 --
59249 -- Bug 4922099
59250 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
59251 (NVL(l_enc_upg_option, 'N') = 'O')
59252 ) AND
59253 (l_bflow_method_code = 'PRIOR_ENTRY')
59254 )
59255 THEN
59256 IF
59257 --
59258 1 = 2
59259 --
59260 THEN
59261 xla_accounting_err_pkg.build_message
59262 (p_appli_s_name => 'XLA'
59263 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
59264 ,p_token_1 => 'LINE_NUMBER'
59265 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
59266 ,p_token_2 => 'LINE_TYPE_NAME'
59267 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
59268 l_component_type
59269 ,l_component_code
59270 ,l_component_type_code
59271 ,l_component_appl_id
59272 ,l_amb_context_code
59273 ,l_entity_code
59274 ,l_event_class_code
59275 )
59276 ,p_token_3 => 'OWNER'
59277 ,p_value_3 => xla_lookups_pkg.get_meaning(
59278 p_lookup_type => 'XLA_OWNER_TYPE'
59279 ,p_lookup_code => l_component_type_code
59280 )
59281 ,p_token_4 => 'PRODUCT_NAME'
59282 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
59283 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
59284 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
59285 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
59286 ,p_ae_header_id => NULL
59287 );
59288
59289 IF (C_LEVEL_ERROR>= g_log_level) THEN
59290 trace
59291 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
59292 ,p_level => C_LEVEL_ERROR
59293 ,p_module => l_log_module);
59294 END IF;
59295 END IF;
59296 END IF;
59297 --
59298 --
59299 ------------------------------------------------------------------------------------------------
59300 -- 4219869 Business Flow
59301 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
59302 -- Prior Entry. Currently, the following code is always generated.
59303 ------------------------------------------------------------------------------------------------
59304 XLA_AE_LINES_PKG.ValidateCurrentLine;
59305
59306 ------------------------------------------------------------------------------------
59307 -- 4219869 Business Flow
59308 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
59309 ------------------------------------------------------------------------------------
59310 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
59311
59312 ----------------------------------------------------------------------------------
59313 -- 4219869 Business Flow
59314 -- Update journal entry status -- Need to generate this within IF <condition>
59315 ----------------------------------------------------------------------------------
59316 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
59317 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
59318 ,p_balance_type_code => l_balance_type_code
59319 );
59320
59321 -------------------------------------------------------------------------------------------
59322 -- 4262811 - Generate the Accrual Reversal lines
59323 -------------------------------------------------------------------------------------------
59324 BEGIN
59325 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
59326 (g_array_event(p_event_id).array_value_num('header_index'));
59327 IF l_acc_rev_flag IS NULL THEN
59328 l_acc_rev_flag := 'N';
59329 END IF;
59330 EXCEPTION
59331 WHEN OTHERS THEN
59332 l_acc_rev_flag := 'N';
59333 END;
59334 --
59335 IF (l_acc_rev_flag = 'Y') THEN
59336
59337 -- 4645092 ------------------------------------------------------------------------------
59338 -- To allow MPA report to determine if it should generate report process
59339 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
59340 ------------------------------------------------------------------------------------------
59341
59342 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
59343 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
59344 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
59345 -- call ADRs
59346 -- Bug 4922099
59347 --
59348 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
59349 (NVL(l_actual_upg_option, 'N') = 'O') OR
59350 (NVL(l_enc_upg_option, 'N') = 'O')
59351 )
59352 THEN
59353 NULL;
59354 --
59355 --
59356
59357 l_ccid := AcctDerRule_4(
59358 p_application_id => p_application_id
59359 , p_ae_header_id => l_ae_header_id
59360 , p_source_4 => p_source_4
59361 , x_transaction_coa_id => l_adr_transaction_coa_id
59362 , x_accounting_coa_id => l_adr_accounting_coa_id
59363 , x_value_type_code => l_adr_value_type_code
59364 , p_side => 'NA'
59365 );
59366
59367 xla_ae_lines_pkg.set_ccid(
59368 p_code_combination_id => l_ccid
59369 , p_value_type_code => l_adr_value_type_code
59370 , p_transaction_coa_id => l_adr_transaction_coa_id
59371 , p_accounting_coa_id => l_adr_accounting_coa_id
59372 , p_adr_code => 'CST_DEFAULT'
59373 , p_adr_type_code => 'S'
59374 , p_component_type => l_component_type
59375 , p_component_code => l_component_code
59376 , p_component_type_code => l_component_type_code
59377 , p_component_appl_id => l_component_appl_id
59378 , p_amb_context_code => l_amb_context_code
59379 , p_side => 'NA'
59380 );
59381
59382
59383 --
59384 --
59385 END IF;
59386
59387 --
59388 -- Update the line information that should be overwritten
59389 --
59390 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
59391 p_header_num => 1);
59392 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
59393
59394 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
59395
59396 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
59397 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
59398 END IF;
59399
59400 --
59401 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
59402 --
59403 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
59404 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
59405 ELSE
59406 ---------------------------------------------------------------------------------------------------
59407 -- 4262811a Switch Sign
59408 ---------------------------------------------------------------------------------------------------
59409 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
59410 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
59411 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
59412 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
59413 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
59414 -- 5132302
59415 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
59416 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
59417
59418 END IF;
59419
59420 -- 4955764
59421 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
59422 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
59423
59424
59425 XLA_AE_LINES_PKG.ValidateCurrentLine;
59426 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
59427
59428 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
59429 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
59430 ,p_balance_type_code => l_balance_type_code);
59431
59432 END IF;
59433
59434 -----------------------------------------------------------------------------------------
59435 -- 4262811 Multiperiod Accounting
59436 -----------------------------------------------------------------------------------------
59437 -- No MPA option is assigned.
59438
59439
59440 END IF;
59441 END IF;
59442 --
59443
59444 --
59445 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
59446 trace
59447 (p_msg => 'END of AcctLineType_109'
59448 ,p_level => C_LEVEL_PROCEDURE
59449 ,p_module => l_log_module);
59450 END IF;
59451 --
59452 EXCEPTION
59453 WHEN xla_exceptions_pkg.application_exception THEN
59454 RAISE;
59455 WHEN OTHERS THEN
59456 xla_exceptions_pkg.raise_message
59457 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_109');
59458 END AcctLineType_109;
59459 --
59460
59461 ---------------------------------------
59462 --
59463 -- PRIVATE FUNCTION
59464 -- AcctLineType_110
59465 --
59466 ---------------------------------------
59467 PROCEDURE AcctLineType_110 (
59468 p_application_id IN NUMBER
59469 ,p_event_id IN NUMBER
59470 ,p_calculate_acctd_flag IN VARCHAR2
59471 ,p_calculate_g_l_flag IN VARCHAR2
59472 ,p_actual_flag IN OUT VARCHAR2
59473 ,p_balance_type_code OUT VARCHAR2
59474 ,p_gain_or_loss_ref OUT VARCHAR2
59475
59476 --Cost Management Default Account
59477 , p_source_4 IN NUMBER
59478 --DISTRIBUTION_IDENTIFIER
59479 , p_source_11 IN NUMBER
59480 --Distribution Type
59481 , p_source_12 IN VARCHAR2
59482 , p_source_12_meaning IN VARCHAR2
59483 --Entered Currency Code
59484 , p_source_15 IN VARCHAR2
59485 --Entered Amount
59486 , p_source_18 IN NUMBER
59487 --Currency Conversion Date
59488 , p_source_19 IN DATE
59489 --Currency Conversion Rate
59490 , p_source_20 IN NUMBER
59491 --Currency Conversion Type
59492 , p_source_21 IN VARCHAR2
59493 --Accounted Amount
59494 , p_source_22 IN NUMBER
59495 --Accounting Line Type
59496 , p_source_24 IN NUMBER
59497 )
59498 IS
59499
59500 l_component_type VARCHAR2(80);
59501 l_component_code VARCHAR2(30);
59502 l_component_type_code VARCHAR2(1);
59503 l_component_appl_id INTEGER;
59504 l_amb_context_code VARCHAR2(30);
59505 l_entity_code VARCHAR2(30);
59506 l_event_class_code VARCHAR2(30);
59507 l_ae_header_id NUMBER;
59508 l_event_type_code VARCHAR2(30);
59509 l_line_definition_code VARCHAR2(30);
59510 l_line_definition_owner_code VARCHAR2(1);
59511 --
59512 -- adr variables
59513 l_segment VARCHAR2(30);
59514 l_ccid NUMBER;
59515 l_adr_transaction_coa_id NUMBER;
59516 l_adr_accounting_coa_id NUMBER;
59517 l_adr_flexfield_segment_code VARCHAR2(30);
59518 l_adr_flex_value_set_id NUMBER;
59519 l_adr_value_type_code VARCHAR2(30);
59520 l_adr_value_combination_id NUMBER;
59521 l_adr_value_segment_code VARCHAR2(30);
59522
59523 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
59524 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
59525 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
59526 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
59527
59528 -- 4262811 Variables ------------------------------------------------------------------------------------------
59529 l_entered_amt_idx NUMBER;
59530 l_accted_amt_idx NUMBER;
59531 l_acc_rev_flag VARCHAR2(1);
59532 l_accrual_line_num NUMBER;
59533 l_tmp_amt NUMBER;
59534 l_acc_rev_natural_side_code VARCHAR2(1);
59535
59536 l_num_entries NUMBER;
59537 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
59538 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
59539 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
59540 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
59541 l_recog_line_1 NUMBER;
59542 l_recog_line_2 NUMBER;
59543
59544 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
59545 l_bflow_applied_to_amt NUMBER; -- 5132302
59546 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
59547
59548 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
59549
59550 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
59551 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
59552
59553 ---------------------------------------------------------------------------------------------------------------
59554
59555
59556 --
59557 -- bulk performance
59558 --
59559 l_balance_type_code VARCHAR2(1);
59560 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
59561 l_log_module VARCHAR2(240);
59562
59563 --
59564 -- Upgrade strategy
59565 --
59566 l_actual_upg_option VARCHAR2(1);
59567 l_enc_upg_option VARCHAR2(1);
59568
59569 --
59570 BEGIN
59571 --
59572 IF g_log_enabled THEN
59573 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_110';
59574 END IF;
59575 --
59576 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
59577
59578 trace
59579 (p_msg => 'BEGIN of AcctLineType_110'
59580 ,p_level => C_LEVEL_PROCEDURE
59581 ,p_module => l_log_module);
59582
59583 END IF;
59584 --
59585 l_component_type := 'AMB_JLT';
59586 l_component_code := 'INTERORG_TRANSFER_CREDIT';
59587 l_component_type_code := 'S';
59588 l_component_appl_id := 707;
59589 l_amb_context_code := 'DEFAULT';
59590 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
59591 l_event_class_code := 'USER_DEFINE';
59592 l_event_type_code := 'UDIR_INTERORG_RCPT';
59593 l_line_definition_owner_code := 'S';
59594 l_line_definition_code := 'USER_DIR_INTERORG_RCPT';
59595 --
59596 l_balance_type_code := 'A';
59597 l_segment := NULL;
59598 l_ccid := NULL;
59599 l_adr_transaction_coa_id := NULL;
59600 l_adr_accounting_coa_id := NULL;
59601 l_adr_flexfield_segment_code := NULL;
59602 l_adr_flex_value_set_id := NULL;
59603 l_adr_value_type_code := NULL;
59604 l_adr_value_combination_id := NULL;
59605 l_adr_value_segment_code := NULL;
59606
59607 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
59608 l_bflow_class_code := ''; -- 4219869 Business Flow
59609 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
59610 l_budgetary_control_flag := 'N';
59611
59612 l_bflow_applied_to_amt_idx := NULL; -- 5132302
59613 l_bflow_applied_to_amt := NULL; -- 5132302
59614 l_entered_amt_idx := NULL; -- 4262811
59615 l_accted_amt_idx := NULL; -- 4262811
59616 l_acc_rev_flag := NULL; -- 4262811
59617 l_accrual_line_num := NULL; -- 4262811
59618 l_tmp_amt := NULL; -- 4262811
59619 --
59620
59621 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
59622 l_balance_type_code <> 'B' THEN
59623 IF NVL(p_source_24,9E125) = 11
59624 THEN
59625
59626 --
59627 XLA_AE_LINES_PKG.SetNewLine;
59628
59629 p_balance_type_code := l_balance_type_code;
59630 -- set the flag so later we will know whether the gain loss line needs to be created
59631
59632 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
59633 p_actual_flag :='A';
59634 END IF;
59635
59636 --
59637 -- bulk performance
59638 --
59639 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
59640 p_header_num => 0); -- 4262811
59641 --
59642 -- set accounting line options
59643 --
59644 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
59645 p_natural_side_code => 'D'
59646 , p_gain_or_loss_flag => 'N'
59647 , p_gl_transfer_mode_code => 'S'
59648 , p_acct_entry_type_code => 'A'
59649 , p_switch_side_flag => 'Y'
59650 , p_merge_duplicate_code => 'N'
59651 );
59652 --
59653 l_acc_rev_natural_side_code := 'C'; -- 4262811
59654 --
59655 --
59656 -- set accounting line type info
59657 --
59658 xla_ae_lines_pkg.SetAcctLineType
59659 (p_component_type => l_component_type
59660 ,p_event_type_code => l_event_type_code
59661 ,p_line_definition_owner_code => l_line_definition_owner_code
59662 ,p_line_definition_code => l_line_definition_code
59663 ,p_accounting_line_code => l_component_code
59664 ,p_accounting_line_type_code => l_component_type_code
59665 ,p_accounting_line_appl_id => l_component_appl_id
59666 ,p_amb_context_code => l_amb_context_code
59667 ,p_entity_code => l_entity_code
59668 ,p_event_class_code => l_event_class_code);
59669 --
59670 -- set accounting class
59671 --
59672 xla_ae_lines_pkg.SetAcctClass(
59673 p_accounting_class_code => 'INTERORG_TRANSFER_CREDIT'
59674 , p_ae_header_id => l_ae_header_id
59675 );
59676
59677 --
59678 -- set rounding class
59679 --
59680 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
59681 'INTERORG_TRANSFER_CREDIT';
59682
59683 --
59684 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
59685 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
59686 --
59687 -- bulk performance
59688 --
59689 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
59690
59691 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
59692 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
59693
59694 -- 4955764
59695 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
59696 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
59697
59698 -- 4458381 Public Sector Enh
59699
59700 --
59701 -- set accounting attributes for the line type
59702 --
59703 l_entered_amt_idx := 3;
59704 l_accted_amt_idx := 8;
59705 l_bflow_applied_to_amt_idx := NULL; -- 5132302
59706 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
59707 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
59708 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
59709 l_rec_acct_attrs.array_char_value(2) := p_source_12;
59710 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
59711 l_rec_acct_attrs.array_num_value(3) := p_source_18;
59712 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
59713 l_rec_acct_attrs.array_char_value(4) := p_source_15;
59714 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
59715 l_rec_acct_attrs.array_date_value(5) := p_source_19;
59716 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
59717 l_rec_acct_attrs.array_num_value(6) := p_source_20;
59718 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
59719 l_rec_acct_attrs.array_char_value(7) := p_source_21;
59720 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
59721 l_rec_acct_attrs.array_num_value(8) := p_source_22;
59722
59723 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
59724 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
59725
59726 ---------------------------------------------------------------------------------------------------------------
59727 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
59728 ---------------------------------------------------------------------------------------------------------------
59729 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
59730
59731 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
59732 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
59733
59734 IF xla_accounting_cache_pkg.GetValueChar
59735 (p_source_code => 'LEDGER_CATEGORY_CODE'
59736 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
59737 AND l_bflow_method_code = 'PRIOR_ENTRY'
59738 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
59739 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
59740 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
59741 )
59742 THEN
59743 xla_ae_lines_pkg.BflowUpgEntry
59744 (p_business_method_code => l_bflow_method_code
59745 ,p_business_class_code => l_bflow_class_code
59746 ,p_balance_type => l_balance_type_code);
59747 ELSE
59748 NULL;
59749 -- No business flow processing for business flow method of NONE.
59750 END IF;
59751
59752 --
59753 -- call analytical criteria
59754 --
59755
59756 --
59757 -- call description
59758 --
59759 -- No description or it is inherited.
59760 --
59761 -- call ADRs
59762 -- Bug 4922099
59763 --
59764 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
59765 (NVL(l_actual_upg_option, 'N') = 'O') OR
59766 (NVL(l_enc_upg_option, 'N') = 'O')
59767 )
59768 THEN
59769 NULL;
59770 --
59771 --
59772
59773 l_ccid := AcctDerRule_4(
59774 p_application_id => p_application_id
59775 , p_ae_header_id => l_ae_header_id
59776 , p_source_4 => p_source_4
59777 , x_transaction_coa_id => l_adr_transaction_coa_id
59778 , x_accounting_coa_id => l_adr_accounting_coa_id
59779 , x_value_type_code => l_adr_value_type_code
59780 , p_side => 'NA'
59781 );
59782
59783 xla_ae_lines_pkg.set_ccid(
59784 p_code_combination_id => l_ccid
59785 , p_value_type_code => l_adr_value_type_code
59786 , p_transaction_coa_id => l_adr_transaction_coa_id
59787 , p_accounting_coa_id => l_adr_accounting_coa_id
59788 , p_adr_code => 'CST_DEFAULT'
59789 , p_adr_type_code => 'S'
59790 , p_component_type => l_component_type
59791 , p_component_code => l_component_code
59792 , p_component_type_code => l_component_type_code
59793 , p_component_appl_id => l_component_appl_id
59794 , p_amb_context_code => l_amb_context_code
59795 , p_side => 'NA'
59796 );
59797
59798
59799 --
59800 --
59801 END IF;
59802 --
59803 -- Bug 4922099
59804 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
59805 (NVL(l_enc_upg_option, 'N') = 'O')
59806 ) AND
59807 (l_bflow_method_code = 'PRIOR_ENTRY')
59808 )
59809 THEN
59810 IF
59811 --
59812 1 = 2
59813 --
59814 THEN
59815 xla_accounting_err_pkg.build_message
59816 (p_appli_s_name => 'XLA'
59817 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
59818 ,p_token_1 => 'LINE_NUMBER'
59819 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
59820 ,p_token_2 => 'LINE_TYPE_NAME'
59821 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
59822 l_component_type
59823 ,l_component_code
59824 ,l_component_type_code
59825 ,l_component_appl_id
59826 ,l_amb_context_code
59827 ,l_entity_code
59828 ,l_event_class_code
59829 )
59830 ,p_token_3 => 'OWNER'
59831 ,p_value_3 => xla_lookups_pkg.get_meaning(
59832 p_lookup_type => 'XLA_OWNER_TYPE'
59833 ,p_lookup_code => l_component_type_code
59834 )
59835 ,p_token_4 => 'PRODUCT_NAME'
59836 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
59837 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
59838 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
59839 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
59840 ,p_ae_header_id => NULL
59841 );
59842
59843 IF (C_LEVEL_ERROR>= g_log_level) THEN
59844 trace
59845 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
59846 ,p_level => C_LEVEL_ERROR
59847 ,p_module => l_log_module);
59848 END IF;
59849 END IF;
59850 END IF;
59851 --
59852 --
59853 ------------------------------------------------------------------------------------------------
59854 -- 4219869 Business Flow
59855 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
59856 -- Prior Entry. Currently, the following code is always generated.
59857 ------------------------------------------------------------------------------------------------
59858 XLA_AE_LINES_PKG.ValidateCurrentLine;
59859
59860 ------------------------------------------------------------------------------------
59861 -- 4219869 Business Flow
59862 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
59863 ------------------------------------------------------------------------------------
59864 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
59865
59866 ----------------------------------------------------------------------------------
59867 -- 4219869 Business Flow
59868 -- Update journal entry status -- Need to generate this within IF <condition>
59869 ----------------------------------------------------------------------------------
59870 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
59871 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
59872 ,p_balance_type_code => l_balance_type_code
59873 );
59874
59875 -------------------------------------------------------------------------------------------
59876 -- 4262811 - Generate the Accrual Reversal lines
59877 -------------------------------------------------------------------------------------------
59878 BEGIN
59879 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
59880 (g_array_event(p_event_id).array_value_num('header_index'));
59881 IF l_acc_rev_flag IS NULL THEN
59882 l_acc_rev_flag := 'N';
59883 END IF;
59884 EXCEPTION
59885 WHEN OTHERS THEN
59886 l_acc_rev_flag := 'N';
59887 END;
59888 --
59889 IF (l_acc_rev_flag = 'Y') THEN
59890
59891 -- 4645092 ------------------------------------------------------------------------------
59892 -- To allow MPA report to determine if it should generate report process
59893 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
59894 ------------------------------------------------------------------------------------------
59895
59896 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
59897 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
59898 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
59899 -- call ADRs
59900 -- Bug 4922099
59901 --
59902 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
59903 (NVL(l_actual_upg_option, 'N') = 'O') OR
59904 (NVL(l_enc_upg_option, 'N') = 'O')
59905 )
59906 THEN
59907 NULL;
59908 --
59909 --
59910
59911 l_ccid := AcctDerRule_4(
59912 p_application_id => p_application_id
59913 , p_ae_header_id => l_ae_header_id
59914 , p_source_4 => p_source_4
59915 , x_transaction_coa_id => l_adr_transaction_coa_id
59916 , x_accounting_coa_id => l_adr_accounting_coa_id
59917 , x_value_type_code => l_adr_value_type_code
59918 , p_side => 'NA'
59919 );
59920
59921 xla_ae_lines_pkg.set_ccid(
59922 p_code_combination_id => l_ccid
59923 , p_value_type_code => l_adr_value_type_code
59924 , p_transaction_coa_id => l_adr_transaction_coa_id
59925 , p_accounting_coa_id => l_adr_accounting_coa_id
59926 , p_adr_code => 'CST_DEFAULT'
59927 , p_adr_type_code => 'S'
59928 , p_component_type => l_component_type
59929 , p_component_code => l_component_code
59930 , p_component_type_code => l_component_type_code
59931 , p_component_appl_id => l_component_appl_id
59932 , p_amb_context_code => l_amb_context_code
59933 , p_side => 'NA'
59934 );
59935
59936
59937 --
59938 --
59939 END IF;
59940
59941 --
59942 -- Update the line information that should be overwritten
59943 --
59944 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
59945 p_header_num => 1);
59946 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
59947
59948 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
59949
59950 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
59951 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
59952 END IF;
59953
59954 --
59955 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
59956 --
59957 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
59958 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
59959 ELSE
59960 ---------------------------------------------------------------------------------------------------
59961 -- 4262811a Switch Sign
59962 ---------------------------------------------------------------------------------------------------
59963 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
59964 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
59965 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
59966 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
59967 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
59968 -- 5132302
59969 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
59970 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
59971
59972 END IF;
59973
59974 -- 4955764
59975 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
59976 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
59977
59978
59979 XLA_AE_LINES_PKG.ValidateCurrentLine;
59980 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
59981
59982 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
59983 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
59984 ,p_balance_type_code => l_balance_type_code);
59985
59986 END IF;
59987
59988 -----------------------------------------------------------------------------------------
59989 -- 4262811 Multiperiod Accounting
59990 -----------------------------------------------------------------------------------------
59991 -- No MPA option is assigned.
59992
59993
59994 END IF;
59995 END IF;
59996 --
59997
59998 --
59999 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
60000 trace
60001 (p_msg => 'END of AcctLineType_110'
60002 ,p_level => C_LEVEL_PROCEDURE
60003 ,p_module => l_log_module);
60004 END IF;
60005 --
60006 EXCEPTION
60007 WHEN xla_exceptions_pkg.application_exception THEN
60008 RAISE;
60009 WHEN OTHERS THEN
60010 xla_exceptions_pkg.raise_message
60011 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_110');
60012 END AcctLineType_110;
60013 --
60014
60015 ---------------------------------------
60016 --
60017 -- PRIVATE FUNCTION
60018 -- AcctLineType_111
60019 --
60020 ---------------------------------------
60021 PROCEDURE AcctLineType_111 (
60022 p_application_id IN NUMBER
60023 ,p_event_id IN NUMBER
60024 ,p_calculate_acctd_flag IN VARCHAR2
60025 ,p_calculate_g_l_flag IN VARCHAR2
60026 ,p_actual_flag IN OUT VARCHAR2
60027 ,p_balance_type_code OUT VARCHAR2
60028 ,p_gain_or_loss_ref OUT VARCHAR2
60029
60030 --Cost Management Default Account
60031 , p_source_4 IN NUMBER
60032 --DISTRIBUTION_IDENTIFIER
60033 , p_source_11 IN NUMBER
60034 --Distribution Type
60035 , p_source_12 IN VARCHAR2
60036 , p_source_12_meaning IN VARCHAR2
60037 --Entered Currency Code
60038 , p_source_15 IN VARCHAR2
60039 --Entered Amount
60040 , p_source_18 IN NUMBER
60041 --Currency Conversion Date
60042 , p_source_19 IN DATE
60043 --Currency Conversion Rate
60044 , p_source_20 IN NUMBER
60045 --Currency Conversion Type
60046 , p_source_21 IN VARCHAR2
60047 --Accounted Amount
60048 , p_source_22 IN NUMBER
60049 --Accounting Line Type
60050 , p_source_24 IN NUMBER
60051 )
60052 IS
60053
60054 l_component_type VARCHAR2(80);
60055 l_component_code VARCHAR2(30);
60056 l_component_type_code VARCHAR2(1);
60057 l_component_appl_id INTEGER;
60058 l_amb_context_code VARCHAR2(30);
60059 l_entity_code VARCHAR2(30);
60060 l_event_class_code VARCHAR2(30);
60061 l_ae_header_id NUMBER;
60062 l_event_type_code VARCHAR2(30);
60063 l_line_definition_code VARCHAR2(30);
60064 l_line_definition_owner_code VARCHAR2(1);
60065 --
60066 -- adr variables
60067 l_segment VARCHAR2(30);
60068 l_ccid NUMBER;
60069 l_adr_transaction_coa_id NUMBER;
60070 l_adr_accounting_coa_id NUMBER;
60071 l_adr_flexfield_segment_code VARCHAR2(30);
60072 l_adr_flex_value_set_id NUMBER;
60073 l_adr_value_type_code VARCHAR2(30);
60074 l_adr_value_combination_id NUMBER;
60075 l_adr_value_segment_code VARCHAR2(30);
60076
60077 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
60078 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
60079 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
60080 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
60081
60082 -- 4262811 Variables ------------------------------------------------------------------------------------------
60083 l_entered_amt_idx NUMBER;
60084 l_accted_amt_idx NUMBER;
60085 l_acc_rev_flag VARCHAR2(1);
60086 l_accrual_line_num NUMBER;
60087 l_tmp_amt NUMBER;
60088 l_acc_rev_natural_side_code VARCHAR2(1);
60089
60090 l_num_entries NUMBER;
60091 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
60092 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
60093 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
60094 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
60095 l_recog_line_1 NUMBER;
60096 l_recog_line_2 NUMBER;
60097
60098 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
60099 l_bflow_applied_to_amt NUMBER; -- 5132302
60100 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
60101
60102 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
60103
60104 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
60105 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
60106
60107 ---------------------------------------------------------------------------------------------------------------
60108
60109
60110 --
60111 -- bulk performance
60112 --
60113 l_balance_type_code VARCHAR2(1);
60114 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
60115 l_log_module VARCHAR2(240);
60116
60117 --
60118 -- Upgrade strategy
60119 --
60120 l_actual_upg_option VARCHAR2(1);
60121 l_enc_upg_option VARCHAR2(1);
60122
60123 --
60124 BEGIN
60125 --
60126 IF g_log_enabled THEN
60127 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_111';
60128 END IF;
60129 --
60130 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
60131
60132 trace
60133 (p_msg => 'BEGIN of AcctLineType_111'
60134 ,p_level => C_LEVEL_PROCEDURE
60135 ,p_module => l_log_module);
60136
60137 END IF;
60138 --
60139 l_component_type := 'AMB_JLT';
60140 l_component_code := 'INTERORG_TRANSFER_CREDIT';
60141 l_component_type_code := 'S';
60142 l_component_appl_id := 707;
60143 l_amb_context_code := 'DEFAULT';
60144 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
60145 l_event_class_code := 'USER_DEFINE';
60146 l_event_type_code := 'UDIR_INTERORG_SHIP_TP';
60147 l_line_definition_owner_code := 'S';
60148 l_line_definition_code := 'USER_DIR_INTERORG_SHIP_TP';
60149 --
60150 l_balance_type_code := 'A';
60151 l_segment := NULL;
60152 l_ccid := NULL;
60153 l_adr_transaction_coa_id := NULL;
60154 l_adr_accounting_coa_id := NULL;
60155 l_adr_flexfield_segment_code := NULL;
60156 l_adr_flex_value_set_id := NULL;
60157 l_adr_value_type_code := NULL;
60158 l_adr_value_combination_id := NULL;
60159 l_adr_value_segment_code := NULL;
60160
60161 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
60162 l_bflow_class_code := ''; -- 4219869 Business Flow
60163 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
60164 l_budgetary_control_flag := 'N';
60165
60166 l_bflow_applied_to_amt_idx := NULL; -- 5132302
60167 l_bflow_applied_to_amt := NULL; -- 5132302
60168 l_entered_amt_idx := NULL; -- 4262811
60169 l_accted_amt_idx := NULL; -- 4262811
60170 l_acc_rev_flag := NULL; -- 4262811
60171 l_accrual_line_num := NULL; -- 4262811
60172 l_tmp_amt := NULL; -- 4262811
60173 --
60174
60175 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
60176 l_balance_type_code <> 'B' THEN
60177 IF NVL(p_source_24,9E125) = 11
60178 THEN
60179
60180 --
60181 XLA_AE_LINES_PKG.SetNewLine;
60182
60183 p_balance_type_code := l_balance_type_code;
60184 -- set the flag so later we will know whether the gain loss line needs to be created
60185
60186 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
60187 p_actual_flag :='A';
60188 END IF;
60189
60190 --
60191 -- bulk performance
60192 --
60193 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
60194 p_header_num => 0); -- 4262811
60195 --
60196 -- set accounting line options
60197 --
60198 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
60199 p_natural_side_code => 'D'
60200 , p_gain_or_loss_flag => 'N'
60201 , p_gl_transfer_mode_code => 'S'
60202 , p_acct_entry_type_code => 'A'
60203 , p_switch_side_flag => 'Y'
60204 , p_merge_duplicate_code => 'N'
60205 );
60206 --
60207 l_acc_rev_natural_side_code := 'C'; -- 4262811
60208 --
60209 --
60210 -- set accounting line type info
60211 --
60212 xla_ae_lines_pkg.SetAcctLineType
60213 (p_component_type => l_component_type
60214 ,p_event_type_code => l_event_type_code
60215 ,p_line_definition_owner_code => l_line_definition_owner_code
60216 ,p_line_definition_code => l_line_definition_code
60217 ,p_accounting_line_code => l_component_code
60218 ,p_accounting_line_type_code => l_component_type_code
60219 ,p_accounting_line_appl_id => l_component_appl_id
60220 ,p_amb_context_code => l_amb_context_code
60221 ,p_entity_code => l_entity_code
60222 ,p_event_class_code => l_event_class_code);
60223 --
60224 -- set accounting class
60225 --
60226 xla_ae_lines_pkg.SetAcctClass(
60227 p_accounting_class_code => 'INTERORG_TRANSFER_CREDIT'
60228 , p_ae_header_id => l_ae_header_id
60229 );
60230
60231 --
60232 -- set rounding class
60233 --
60234 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
60235 'INTERORG_TRANSFER_CREDIT';
60236
60237 --
60238 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
60239 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
60240 --
60241 -- bulk performance
60242 --
60243 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
60244
60245 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
60246 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
60247
60248 -- 4955764
60249 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
60250 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
60251
60252 -- 4458381 Public Sector Enh
60253
60254 --
60255 -- set accounting attributes for the line type
60256 --
60257 l_entered_amt_idx := 3;
60258 l_accted_amt_idx := 8;
60259 l_bflow_applied_to_amt_idx := NULL; -- 5132302
60260 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
60261 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
60262 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
60263 l_rec_acct_attrs.array_char_value(2) := p_source_12;
60264 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
60265 l_rec_acct_attrs.array_num_value(3) := p_source_18;
60266 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
60267 l_rec_acct_attrs.array_char_value(4) := p_source_15;
60268 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
60269 l_rec_acct_attrs.array_date_value(5) := p_source_19;
60270 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
60271 l_rec_acct_attrs.array_num_value(6) := p_source_20;
60272 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
60273 l_rec_acct_attrs.array_char_value(7) := p_source_21;
60274 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
60275 l_rec_acct_attrs.array_num_value(8) := p_source_22;
60276
60277 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
60278 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
60279
60280 ---------------------------------------------------------------------------------------------------------------
60281 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
60282 ---------------------------------------------------------------------------------------------------------------
60283 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
60284
60285 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
60286 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
60287
60288 IF xla_accounting_cache_pkg.GetValueChar
60289 (p_source_code => 'LEDGER_CATEGORY_CODE'
60290 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
60291 AND l_bflow_method_code = 'PRIOR_ENTRY'
60292 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
60293 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
60294 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
60295 )
60296 THEN
60297 xla_ae_lines_pkg.BflowUpgEntry
60298 (p_business_method_code => l_bflow_method_code
60299 ,p_business_class_code => l_bflow_class_code
60300 ,p_balance_type => l_balance_type_code);
60301 ELSE
60302 NULL;
60303 -- No business flow processing for business flow method of NONE.
60304 END IF;
60305
60306 --
60307 -- call analytical criteria
60308 --
60309
60310 --
60311 -- call description
60312 --
60313 -- No description or it is inherited.
60314 --
60315 -- call ADRs
60316 -- Bug 4922099
60317 --
60318 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
60319 (NVL(l_actual_upg_option, 'N') = 'O') OR
60320 (NVL(l_enc_upg_option, 'N') = 'O')
60321 )
60322 THEN
60323 NULL;
60324 --
60325 --
60326
60327 l_ccid := AcctDerRule_4(
60328 p_application_id => p_application_id
60329 , p_ae_header_id => l_ae_header_id
60330 , p_source_4 => p_source_4
60331 , x_transaction_coa_id => l_adr_transaction_coa_id
60332 , x_accounting_coa_id => l_adr_accounting_coa_id
60333 , x_value_type_code => l_adr_value_type_code
60334 , p_side => 'NA'
60335 );
60336
60337 xla_ae_lines_pkg.set_ccid(
60338 p_code_combination_id => l_ccid
60339 , p_value_type_code => l_adr_value_type_code
60340 , p_transaction_coa_id => l_adr_transaction_coa_id
60341 , p_accounting_coa_id => l_adr_accounting_coa_id
60342 , p_adr_code => 'CST_DEFAULT'
60343 , p_adr_type_code => 'S'
60344 , p_component_type => l_component_type
60345 , p_component_code => l_component_code
60346 , p_component_type_code => l_component_type_code
60347 , p_component_appl_id => l_component_appl_id
60348 , p_amb_context_code => l_amb_context_code
60349 , p_side => 'NA'
60350 );
60351
60352
60353 --
60354 --
60355 END IF;
60356 --
60357 -- Bug 4922099
60358 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
60359 (NVL(l_enc_upg_option, 'N') = 'O')
60360 ) AND
60361 (l_bflow_method_code = 'PRIOR_ENTRY')
60362 )
60363 THEN
60364 IF
60365 --
60366 1 = 2
60367 --
60368 THEN
60369 xla_accounting_err_pkg.build_message
60370 (p_appli_s_name => 'XLA'
60371 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
60372 ,p_token_1 => 'LINE_NUMBER'
60373 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
60374 ,p_token_2 => 'LINE_TYPE_NAME'
60375 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
60376 l_component_type
60377 ,l_component_code
60378 ,l_component_type_code
60379 ,l_component_appl_id
60380 ,l_amb_context_code
60381 ,l_entity_code
60382 ,l_event_class_code
60383 )
60384 ,p_token_3 => 'OWNER'
60385 ,p_value_3 => xla_lookups_pkg.get_meaning(
60386 p_lookup_type => 'XLA_OWNER_TYPE'
60387 ,p_lookup_code => l_component_type_code
60388 )
60389 ,p_token_4 => 'PRODUCT_NAME'
60390 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
60391 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
60392 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
60393 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
60394 ,p_ae_header_id => NULL
60395 );
60396
60397 IF (C_LEVEL_ERROR>= g_log_level) THEN
60398 trace
60399 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
60400 ,p_level => C_LEVEL_ERROR
60401 ,p_module => l_log_module);
60402 END IF;
60403 END IF;
60404 END IF;
60405 --
60406 --
60407 ------------------------------------------------------------------------------------------------
60408 -- 4219869 Business Flow
60409 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
60410 -- Prior Entry. Currently, the following code is always generated.
60411 ------------------------------------------------------------------------------------------------
60412 XLA_AE_LINES_PKG.ValidateCurrentLine;
60413
60414 ------------------------------------------------------------------------------------
60415 -- 4219869 Business Flow
60416 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
60417 ------------------------------------------------------------------------------------
60418 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
60419
60420 ----------------------------------------------------------------------------------
60421 -- 4219869 Business Flow
60422 -- Update journal entry status -- Need to generate this within IF <condition>
60423 ----------------------------------------------------------------------------------
60424 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
60425 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
60426 ,p_balance_type_code => l_balance_type_code
60427 );
60428
60429 -------------------------------------------------------------------------------------------
60430 -- 4262811 - Generate the Accrual Reversal lines
60431 -------------------------------------------------------------------------------------------
60432 BEGIN
60433 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
60434 (g_array_event(p_event_id).array_value_num('header_index'));
60435 IF l_acc_rev_flag IS NULL THEN
60436 l_acc_rev_flag := 'N';
60437 END IF;
60438 EXCEPTION
60439 WHEN OTHERS THEN
60440 l_acc_rev_flag := 'N';
60441 END;
60442 --
60443 IF (l_acc_rev_flag = 'Y') THEN
60444
60445 -- 4645092 ------------------------------------------------------------------------------
60446 -- To allow MPA report to determine if it should generate report process
60447 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
60448 ------------------------------------------------------------------------------------------
60449
60450 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
60451 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
60452 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
60453 -- call ADRs
60454 -- Bug 4922099
60455 --
60456 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
60457 (NVL(l_actual_upg_option, 'N') = 'O') OR
60458 (NVL(l_enc_upg_option, 'N') = 'O')
60459 )
60460 THEN
60461 NULL;
60462 --
60463 --
60464
60465 l_ccid := AcctDerRule_4(
60466 p_application_id => p_application_id
60467 , p_ae_header_id => l_ae_header_id
60468 , p_source_4 => p_source_4
60469 , x_transaction_coa_id => l_adr_transaction_coa_id
60470 , x_accounting_coa_id => l_adr_accounting_coa_id
60471 , x_value_type_code => l_adr_value_type_code
60472 , p_side => 'NA'
60473 );
60474
60475 xla_ae_lines_pkg.set_ccid(
60476 p_code_combination_id => l_ccid
60477 , p_value_type_code => l_adr_value_type_code
60478 , p_transaction_coa_id => l_adr_transaction_coa_id
60479 , p_accounting_coa_id => l_adr_accounting_coa_id
60480 , p_adr_code => 'CST_DEFAULT'
60481 , p_adr_type_code => 'S'
60482 , p_component_type => l_component_type
60483 , p_component_code => l_component_code
60484 , p_component_type_code => l_component_type_code
60485 , p_component_appl_id => l_component_appl_id
60486 , p_amb_context_code => l_amb_context_code
60487 , p_side => 'NA'
60488 );
60489
60490
60491 --
60492 --
60493 END IF;
60494
60495 --
60496 -- Update the line information that should be overwritten
60497 --
60498 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
60499 p_header_num => 1);
60500 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
60501
60502 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
60503
60504 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
60505 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
60506 END IF;
60507
60508 --
60509 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
60510 --
60511 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
60512 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
60513 ELSE
60514 ---------------------------------------------------------------------------------------------------
60515 -- 4262811a Switch Sign
60516 ---------------------------------------------------------------------------------------------------
60517 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
60518 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
60519 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
60520 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
60521 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
60522 -- 5132302
60523 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
60524 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
60525
60526 END IF;
60527
60528 -- 4955764
60529 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
60530 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
60531
60532
60533 XLA_AE_LINES_PKG.ValidateCurrentLine;
60534 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
60535
60536 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
60537 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
60538 ,p_balance_type_code => l_balance_type_code);
60539
60540 END IF;
60541
60542 -----------------------------------------------------------------------------------------
60543 -- 4262811 Multiperiod Accounting
60544 -----------------------------------------------------------------------------------------
60545 -- No MPA option is assigned.
60546
60547
60548 END IF;
60549 END IF;
60550 --
60551
60552 --
60553 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
60554 trace
60555 (p_msg => 'END of AcctLineType_111'
60556 ,p_level => C_LEVEL_PROCEDURE
60557 ,p_module => l_log_module);
60558 END IF;
60559 --
60560 EXCEPTION
60561 WHEN xla_exceptions_pkg.application_exception THEN
60562 RAISE;
60563 WHEN OTHERS THEN
60564 xla_exceptions_pkg.raise_message
60565 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_111');
60566 END AcctLineType_111;
60567 --
60568
60569 ---------------------------------------
60570 --
60571 -- PRIVATE FUNCTION
60572 -- AcctLineType_112
60573 --
60574 ---------------------------------------
60575 PROCEDURE AcctLineType_112 (
60576 p_application_id IN NUMBER
60577 ,p_event_id IN NUMBER
60578 ,p_calculate_acctd_flag IN VARCHAR2
60579 ,p_calculate_g_l_flag IN VARCHAR2
60580 ,p_actual_flag IN OUT VARCHAR2
60581 ,p_balance_type_code OUT VARCHAR2
60582 ,p_gain_or_loss_ref OUT VARCHAR2
60583
60584 --Cost Management Default Account
60585 , p_source_4 IN NUMBER
60586 --DISTRIBUTION_IDENTIFIER
60587 , p_source_11 IN NUMBER
60588 --Distribution Type
60589 , p_source_12 IN VARCHAR2
60590 , p_source_12_meaning IN VARCHAR2
60591 --Entered Currency Code
60592 , p_source_15 IN VARCHAR2
60593 --Entered Amount
60594 , p_source_18 IN NUMBER
60595 --Currency Conversion Date
60596 , p_source_19 IN DATE
60597 --Currency Conversion Rate
60598 , p_source_20 IN NUMBER
60599 --Currency Conversion Type
60600 , p_source_21 IN VARCHAR2
60601 --Accounted Amount
60602 , p_source_22 IN NUMBER
60603 --Accounting Line Type
60604 , p_source_24 IN NUMBER
60605 )
60606 IS
60607
60608 l_component_type VARCHAR2(80);
60609 l_component_code VARCHAR2(30);
60610 l_component_type_code VARCHAR2(1);
60611 l_component_appl_id INTEGER;
60612 l_amb_context_code VARCHAR2(30);
60613 l_entity_code VARCHAR2(30);
60614 l_event_class_code VARCHAR2(30);
60615 l_ae_header_id NUMBER;
60616 l_event_type_code VARCHAR2(30);
60617 l_line_definition_code VARCHAR2(30);
60618 l_line_definition_owner_code VARCHAR2(1);
60619 --
60620 -- adr variables
60621 l_segment VARCHAR2(30);
60622 l_ccid NUMBER;
60623 l_adr_transaction_coa_id NUMBER;
60624 l_adr_accounting_coa_id NUMBER;
60625 l_adr_flexfield_segment_code VARCHAR2(30);
60626 l_adr_flex_value_set_id NUMBER;
60627 l_adr_value_type_code VARCHAR2(30);
60628 l_adr_value_combination_id NUMBER;
60629 l_adr_value_segment_code VARCHAR2(30);
60630
60631 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
60632 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
60633 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
60634 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
60635
60636 -- 4262811 Variables ------------------------------------------------------------------------------------------
60637 l_entered_amt_idx NUMBER;
60638 l_accted_amt_idx NUMBER;
60639 l_acc_rev_flag VARCHAR2(1);
60640 l_accrual_line_num NUMBER;
60641 l_tmp_amt NUMBER;
60642 l_acc_rev_natural_side_code VARCHAR2(1);
60643
60644 l_num_entries NUMBER;
60645 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
60646 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
60647 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
60648 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
60649 l_recog_line_1 NUMBER;
60650 l_recog_line_2 NUMBER;
60651
60652 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
60653 l_bflow_applied_to_amt NUMBER; -- 5132302
60654 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
60655
60656 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
60657
60658 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
60659 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
60660
60661 ---------------------------------------------------------------------------------------------------------------
60662
60663
60664 --
60665 -- bulk performance
60666 --
60667 l_balance_type_code VARCHAR2(1);
60668 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
60669 l_log_module VARCHAR2(240);
60670
60671 --
60672 -- Upgrade strategy
60673 --
60674 l_actual_upg_option VARCHAR2(1);
60675 l_enc_upg_option VARCHAR2(1);
60676
60677 --
60678 BEGIN
60679 --
60680 IF g_log_enabled THEN
60681 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_112';
60682 END IF;
60683 --
60684 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
60685
60686 trace
60687 (p_msg => 'BEGIN of AcctLineType_112'
60688 ,p_level => C_LEVEL_PROCEDURE
60689 ,p_module => l_log_module);
60690
60691 END IF;
60692 --
60693 l_component_type := 'AMB_JLT';
60694 l_component_code := 'INTERORG_TRANSFER_CREDIT';
60695 l_component_type_code := 'S';
60696 l_component_appl_id := 707;
60697 l_amb_context_code := 'DEFAULT';
60698 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
60699 l_event_class_code := 'USER_DEFINE';
60700 l_event_type_code := 'UFOB_SHIP_SENDER_SHIP_NO_TP';
60701 l_line_definition_owner_code := 'S';
60702 l_line_definition_code := 'USER_FOB_SHIP_SENDER_SHIP_NOTP';
60703 --
60704 l_balance_type_code := 'A';
60705 l_segment := NULL;
60706 l_ccid := NULL;
60707 l_adr_transaction_coa_id := NULL;
60708 l_adr_accounting_coa_id := NULL;
60709 l_adr_flexfield_segment_code := NULL;
60710 l_adr_flex_value_set_id := NULL;
60711 l_adr_value_type_code := NULL;
60712 l_adr_value_combination_id := NULL;
60713 l_adr_value_segment_code := NULL;
60714
60715 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
60716 l_bflow_class_code := ''; -- 4219869 Business Flow
60717 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
60718 l_budgetary_control_flag := 'N';
60719
60720 l_bflow_applied_to_amt_idx := NULL; -- 5132302
60721 l_bflow_applied_to_amt := NULL; -- 5132302
60722 l_entered_amt_idx := NULL; -- 4262811
60723 l_accted_amt_idx := NULL; -- 4262811
60724 l_acc_rev_flag := NULL; -- 4262811
60725 l_accrual_line_num := NULL; -- 4262811
60726 l_tmp_amt := NULL; -- 4262811
60727 --
60728
60729 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
60730 l_balance_type_code <> 'B' THEN
60731 IF NVL(p_source_24,9E125) = 11
60732 THEN
60733
60734 --
60735 XLA_AE_LINES_PKG.SetNewLine;
60736
60737 p_balance_type_code := l_balance_type_code;
60738 -- set the flag so later we will know whether the gain loss line needs to be created
60739
60740 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
60741 p_actual_flag :='A';
60742 END IF;
60743
60744 --
60745 -- bulk performance
60746 --
60747 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
60748 p_header_num => 0); -- 4262811
60749 --
60750 -- set accounting line options
60751 --
60752 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
60753 p_natural_side_code => 'D'
60754 , p_gain_or_loss_flag => 'N'
60755 , p_gl_transfer_mode_code => 'S'
60756 , p_acct_entry_type_code => 'A'
60757 , p_switch_side_flag => 'Y'
60758 , p_merge_duplicate_code => 'N'
60759 );
60760 --
60761 l_acc_rev_natural_side_code := 'C'; -- 4262811
60762 --
60763 --
60764 -- set accounting line type info
60765 --
60766 xla_ae_lines_pkg.SetAcctLineType
60767 (p_component_type => l_component_type
60768 ,p_event_type_code => l_event_type_code
60769 ,p_line_definition_owner_code => l_line_definition_owner_code
60770 ,p_line_definition_code => l_line_definition_code
60771 ,p_accounting_line_code => l_component_code
60772 ,p_accounting_line_type_code => l_component_type_code
60773 ,p_accounting_line_appl_id => l_component_appl_id
60774 ,p_amb_context_code => l_amb_context_code
60775 ,p_entity_code => l_entity_code
60776 ,p_event_class_code => l_event_class_code);
60777 --
60778 -- set accounting class
60779 --
60780 xla_ae_lines_pkg.SetAcctClass(
60781 p_accounting_class_code => 'INTERORG_TRANSFER_CREDIT'
60782 , p_ae_header_id => l_ae_header_id
60783 );
60784
60785 --
60786 -- set rounding class
60787 --
60788 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
60789 'INTERORG_TRANSFER_CREDIT';
60790
60791 --
60792 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
60793 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
60794 --
60795 -- bulk performance
60796 --
60797 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
60798
60799 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
60800 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
60801
60802 -- 4955764
60803 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
60804 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
60805
60806 -- 4458381 Public Sector Enh
60807
60808 --
60809 -- set accounting attributes for the line type
60810 --
60811 l_entered_amt_idx := 3;
60812 l_accted_amt_idx := 8;
60813 l_bflow_applied_to_amt_idx := NULL; -- 5132302
60814 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
60815 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
60816 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
60817 l_rec_acct_attrs.array_char_value(2) := p_source_12;
60818 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
60819 l_rec_acct_attrs.array_num_value(3) := p_source_18;
60820 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
60821 l_rec_acct_attrs.array_char_value(4) := p_source_15;
60822 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
60823 l_rec_acct_attrs.array_date_value(5) := p_source_19;
60824 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
60825 l_rec_acct_attrs.array_num_value(6) := p_source_20;
60826 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
60827 l_rec_acct_attrs.array_char_value(7) := p_source_21;
60828 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
60829 l_rec_acct_attrs.array_num_value(8) := p_source_22;
60830
60831 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
60832 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
60833
60834 ---------------------------------------------------------------------------------------------------------------
60835 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
60836 ---------------------------------------------------------------------------------------------------------------
60837 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
60838
60839 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
60840 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
60841
60842 IF xla_accounting_cache_pkg.GetValueChar
60843 (p_source_code => 'LEDGER_CATEGORY_CODE'
60844 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
60845 AND l_bflow_method_code = 'PRIOR_ENTRY'
60846 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
60847 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
60848 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
60849 )
60850 THEN
60851 xla_ae_lines_pkg.BflowUpgEntry
60852 (p_business_method_code => l_bflow_method_code
60853 ,p_business_class_code => l_bflow_class_code
60854 ,p_balance_type => l_balance_type_code);
60855 ELSE
60856 NULL;
60857 -- No business flow processing for business flow method of NONE.
60858 END IF;
60859
60860 --
60861 -- call analytical criteria
60862 --
60863
60864 --
60865 -- call description
60866 --
60867 -- No description or it is inherited.
60868 --
60869 -- call ADRs
60870 -- Bug 4922099
60871 --
60872 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
60873 (NVL(l_actual_upg_option, 'N') = 'O') OR
60874 (NVL(l_enc_upg_option, 'N') = 'O')
60875 )
60876 THEN
60877 NULL;
60878 --
60879 --
60880
60881 l_ccid := AcctDerRule_4(
60882 p_application_id => p_application_id
60883 , p_ae_header_id => l_ae_header_id
60884 , p_source_4 => p_source_4
60885 , x_transaction_coa_id => l_adr_transaction_coa_id
60886 , x_accounting_coa_id => l_adr_accounting_coa_id
60887 , x_value_type_code => l_adr_value_type_code
60888 , p_side => 'NA'
60889 );
60890
60891 xla_ae_lines_pkg.set_ccid(
60892 p_code_combination_id => l_ccid
60893 , p_value_type_code => l_adr_value_type_code
60894 , p_transaction_coa_id => l_adr_transaction_coa_id
60895 , p_accounting_coa_id => l_adr_accounting_coa_id
60896 , p_adr_code => 'CST_DEFAULT'
60897 , p_adr_type_code => 'S'
60898 , p_component_type => l_component_type
60899 , p_component_code => l_component_code
60900 , p_component_type_code => l_component_type_code
60901 , p_component_appl_id => l_component_appl_id
60902 , p_amb_context_code => l_amb_context_code
60903 , p_side => 'NA'
60904 );
60905
60906
60907 --
60908 --
60909 END IF;
60910 --
60911 -- Bug 4922099
60912 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
60913 (NVL(l_enc_upg_option, 'N') = 'O')
60914 ) AND
60915 (l_bflow_method_code = 'PRIOR_ENTRY')
60916 )
60917 THEN
60918 IF
60919 --
60920 1 = 2
60921 --
60922 THEN
60923 xla_accounting_err_pkg.build_message
60924 (p_appli_s_name => 'XLA'
60925 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
60926 ,p_token_1 => 'LINE_NUMBER'
60927 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
60928 ,p_token_2 => 'LINE_TYPE_NAME'
60929 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
60930 l_component_type
60931 ,l_component_code
60932 ,l_component_type_code
60933 ,l_component_appl_id
60934 ,l_amb_context_code
60935 ,l_entity_code
60936 ,l_event_class_code
60937 )
60938 ,p_token_3 => 'OWNER'
60939 ,p_value_3 => xla_lookups_pkg.get_meaning(
60940 p_lookup_type => 'XLA_OWNER_TYPE'
60941 ,p_lookup_code => l_component_type_code
60942 )
60943 ,p_token_4 => 'PRODUCT_NAME'
60944 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
60945 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
60946 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
60947 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
60948 ,p_ae_header_id => NULL
60949 );
60950
60951 IF (C_LEVEL_ERROR>= g_log_level) THEN
60952 trace
60953 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
60954 ,p_level => C_LEVEL_ERROR
60955 ,p_module => l_log_module);
60956 END IF;
60957 END IF;
60958 END IF;
60959 --
60960 --
60961 ------------------------------------------------------------------------------------------------
60962 -- 4219869 Business Flow
60963 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
60964 -- Prior Entry. Currently, the following code is always generated.
60965 ------------------------------------------------------------------------------------------------
60966 XLA_AE_LINES_PKG.ValidateCurrentLine;
60967
60968 ------------------------------------------------------------------------------------
60969 -- 4219869 Business Flow
60970 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
60971 ------------------------------------------------------------------------------------
60972 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
60973
60974 ----------------------------------------------------------------------------------
60975 -- 4219869 Business Flow
60976 -- Update journal entry status -- Need to generate this within IF <condition>
60977 ----------------------------------------------------------------------------------
60978 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
60979 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
60980 ,p_balance_type_code => l_balance_type_code
60981 );
60982
60983 -------------------------------------------------------------------------------------------
60984 -- 4262811 - Generate the Accrual Reversal lines
60985 -------------------------------------------------------------------------------------------
60986 BEGIN
60987 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
60988 (g_array_event(p_event_id).array_value_num('header_index'));
60989 IF l_acc_rev_flag IS NULL THEN
60990 l_acc_rev_flag := 'N';
60991 END IF;
60992 EXCEPTION
60993 WHEN OTHERS THEN
60994 l_acc_rev_flag := 'N';
60995 END;
60996 --
60997 IF (l_acc_rev_flag = 'Y') THEN
60998
60999 -- 4645092 ------------------------------------------------------------------------------
61000 -- To allow MPA report to determine if it should generate report process
61001 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
61002 ------------------------------------------------------------------------------------------
61003
61004 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
61005 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
61006 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
61007 -- call ADRs
61008 -- Bug 4922099
61009 --
61010 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
61011 (NVL(l_actual_upg_option, 'N') = 'O') OR
61012 (NVL(l_enc_upg_option, 'N') = 'O')
61013 )
61014 THEN
61015 NULL;
61016 --
61017 --
61018
61019 l_ccid := AcctDerRule_4(
61020 p_application_id => p_application_id
61021 , p_ae_header_id => l_ae_header_id
61022 , p_source_4 => p_source_4
61023 , x_transaction_coa_id => l_adr_transaction_coa_id
61024 , x_accounting_coa_id => l_adr_accounting_coa_id
61025 , x_value_type_code => l_adr_value_type_code
61026 , p_side => 'NA'
61027 );
61028
61029 xla_ae_lines_pkg.set_ccid(
61030 p_code_combination_id => l_ccid
61031 , p_value_type_code => l_adr_value_type_code
61032 , p_transaction_coa_id => l_adr_transaction_coa_id
61033 , p_accounting_coa_id => l_adr_accounting_coa_id
61034 , p_adr_code => 'CST_DEFAULT'
61035 , p_adr_type_code => 'S'
61036 , p_component_type => l_component_type
61037 , p_component_code => l_component_code
61038 , p_component_type_code => l_component_type_code
61039 , p_component_appl_id => l_component_appl_id
61040 , p_amb_context_code => l_amb_context_code
61041 , p_side => 'NA'
61042 );
61043
61044
61045 --
61046 --
61047 END IF;
61048
61049 --
61050 -- Update the line information that should be overwritten
61051 --
61052 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
61053 p_header_num => 1);
61054 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
61055
61056 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
61057
61058 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
61059 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
61060 END IF;
61061
61062 --
61063 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
61064 --
61065 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
61066 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
61067 ELSE
61068 ---------------------------------------------------------------------------------------------------
61069 -- 4262811a Switch Sign
61070 ---------------------------------------------------------------------------------------------------
61071 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
61072 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
61073 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
61074 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
61075 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
61076 -- 5132302
61077 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
61078 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
61079
61080 END IF;
61081
61082 -- 4955764
61083 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
61084 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
61085
61086
61087 XLA_AE_LINES_PKG.ValidateCurrentLine;
61088 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
61089
61090 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
61091 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
61092 ,p_balance_type_code => l_balance_type_code);
61093
61094 END IF;
61095
61096 -----------------------------------------------------------------------------------------
61097 -- 4262811 Multiperiod Accounting
61098 -----------------------------------------------------------------------------------------
61099 -- No MPA option is assigned.
61100
61101
61102 END IF;
61103 END IF;
61104 --
61105
61106 --
61107 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
61108 trace
61109 (p_msg => 'END of AcctLineType_112'
61110 ,p_level => C_LEVEL_PROCEDURE
61111 ,p_module => l_log_module);
61112 END IF;
61113 --
61114 EXCEPTION
61115 WHEN xla_exceptions_pkg.application_exception THEN
61116 RAISE;
61117 WHEN OTHERS THEN
61118 xla_exceptions_pkg.raise_message
61119 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_112');
61120 END AcctLineType_112;
61121 --
61122
61123 ---------------------------------------
61124 --
61125 -- PRIVATE FUNCTION
61126 -- AcctLineType_113
61127 --
61128 ---------------------------------------
61129 PROCEDURE AcctLineType_113 (
61130 p_application_id IN NUMBER
61131 ,p_event_id IN NUMBER
61132 ,p_calculate_acctd_flag IN VARCHAR2
61133 ,p_calculate_g_l_flag IN VARCHAR2
61134 ,p_actual_flag IN OUT VARCHAR2
61135 ,p_balance_type_code OUT VARCHAR2
61136 ,p_gain_or_loss_ref OUT VARCHAR2
61137
61138 --Cost Management Default Account
61139 , p_source_4 IN NUMBER
61140 --Applied to Application ID
61141 , p_source_6 IN NUMBER
61142 --Applied to Distribution Link Type
61143 , p_source_7 IN VARCHAR2
61144 --Applied to Entity Code
61145 , p_source_8 IN VARCHAR2
61146 --DISTRIBUTION_IDENTIFIER
61147 , p_source_11 IN NUMBER
61148 --Distribution Type
61149 , p_source_12 IN VARCHAR2
61150 , p_source_12_meaning IN VARCHAR2
61151 --Encumbrance Reversal Amount Entered
61152 , p_source_14 IN NUMBER
61153 --Entered Currency Code
61154 , p_source_15 IN VARCHAR2
61155 --Transaction Encumbrance Reversal Amount
61156 , p_source_16 IN NUMBER
61157 --Entered Amount
61158 , p_source_18 IN NUMBER
61159 --Currency Conversion Date
61160 , p_source_19 IN DATE
61161 --Currency Conversion Rate
61162 , p_source_20 IN NUMBER
61163 --Currency Conversion Type
61164 , p_source_21 IN VARCHAR2
61165 --Accounted Amount
61166 , p_source_22 IN NUMBER
61167 --Accounting Line Type
61168 , p_source_24 IN NUMBER
61169 --Costing Encumbrance Upgrade Option
61170 , p_source_27 IN VARCHAR2
61171 --TXN_PO_DISTRIBUTION_ID
61172 , p_source_28 IN NUMBER
61173 --TXN_PO_HEADER_ID
61174 , p_source_29 IN NUMBER
61175 --Requisition Budget Account
61176 , p_source_30 IN NUMBER
61177 --Requisition Encumbrance Type Identifier
61178 , p_source_31 IN NUMBER
61179 )
61180 IS
61181
61182 l_component_type VARCHAR2(80);
61183 l_component_code VARCHAR2(30);
61184 l_component_type_code VARCHAR2(1);
61185 l_component_appl_id INTEGER;
61186 l_amb_context_code VARCHAR2(30);
61187 l_entity_code VARCHAR2(30);
61188 l_event_class_code VARCHAR2(30);
61189 l_ae_header_id NUMBER;
61190 l_event_type_code VARCHAR2(30);
61191 l_line_definition_code VARCHAR2(30);
61192 l_line_definition_owner_code VARCHAR2(1);
61193 --
61194 -- adr variables
61195 l_segment VARCHAR2(30);
61196 l_ccid NUMBER;
61197 l_adr_transaction_coa_id NUMBER;
61198 l_adr_accounting_coa_id NUMBER;
61199 l_adr_flexfield_segment_code VARCHAR2(30);
61200 l_adr_flex_value_set_id NUMBER;
61201 l_adr_value_type_code VARCHAR2(30);
61202 l_adr_value_combination_id NUMBER;
61203 l_adr_value_segment_code VARCHAR2(30);
61204
61205 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
61206 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
61207 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
61208 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
61209
61210 -- 4262811 Variables ------------------------------------------------------------------------------------------
61211 l_entered_amt_idx NUMBER;
61212 l_accted_amt_idx NUMBER;
61213 l_acc_rev_flag VARCHAR2(1);
61214 l_accrual_line_num NUMBER;
61215 l_tmp_amt NUMBER;
61216 l_acc_rev_natural_side_code VARCHAR2(1);
61217
61218 l_num_entries NUMBER;
61219 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
61220 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
61221 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
61222 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
61223 l_recog_line_1 NUMBER;
61224 l_recog_line_2 NUMBER;
61225
61226 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
61227 l_bflow_applied_to_amt NUMBER; -- 5132302
61228 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
61229
61230 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
61231
61232 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
61233 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
61234
61235 ---------------------------------------------------------------------------------------------------------------
61236
61237
61238 --
61239 -- bulk performance
61240 --
61241 l_balance_type_code VARCHAR2(1);
61242 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
61243 l_log_module VARCHAR2(240);
61244
61245 --
61246 -- Upgrade strategy
61247 --
61248 l_actual_upg_option VARCHAR2(1);
61249 l_enc_upg_option VARCHAR2(1);
61250
61251 --
61252 BEGIN
61253 --
61254 IF g_log_enabled THEN
61255 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_113';
61256 END IF;
61257 --
61258 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
61259
61260 trace
61261 (p_msg => 'BEGIN of AcctLineType_113'
61262 ,p_level => C_LEVEL_PROCEDURE
61263 ,p_module => l_log_module);
61264
61265 END IF;
61266 --
61267 l_component_type := 'AMB_JLT';
61268 l_component_code := 'INTERORG_TRANSFER_CREDIT';
61269 l_component_type_code := 'S';
61270 l_component_appl_id := 707;
61271 l_amb_context_code := 'DEFAULT';
61272 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
61273 l_event_class_code := 'DIR_INTERORG_RCPT';
61274 l_event_type_code := 'DIR_INTERORG_RCPT_ALL';
61275 l_line_definition_owner_code := 'S';
61276 l_line_definition_code := 'DIRECT_INTERORG_RCPT';
61277 --
61278 l_balance_type_code := 'A';
61279 l_segment := NULL;
61280 l_ccid := NULL;
61281 l_adr_transaction_coa_id := NULL;
61282 l_adr_accounting_coa_id := NULL;
61283 l_adr_flexfield_segment_code := NULL;
61284 l_adr_flex_value_set_id := NULL;
61285 l_adr_value_type_code := NULL;
61286 l_adr_value_combination_id := NULL;
61287 l_adr_value_segment_code := NULL;
61288
61289 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
61290 l_bflow_class_code := ''; -- 4219869 Business Flow
61291 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
61292 l_budgetary_control_flag := 'N';
61293
61294 l_bflow_applied_to_amt_idx := NULL; -- 5132302
61295 l_bflow_applied_to_amt := NULL; -- 5132302
61296 l_entered_amt_idx := NULL; -- 4262811
61297 l_accted_amt_idx := NULL; -- 4262811
61298 l_acc_rev_flag := NULL; -- 4262811
61299 l_accrual_line_num := NULL; -- 4262811
61300 l_tmp_amt := NULL; -- 4262811
61301 --
61302
61303 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
61304 l_balance_type_code <> 'B' THEN
61305 IF NVL(p_source_24,9E125) = 11
61306 THEN
61307
61308 --
61309 XLA_AE_LINES_PKG.SetNewLine;
61310
61311 p_balance_type_code := l_balance_type_code;
61312 -- set the flag so later we will know whether the gain loss line needs to be created
61313
61314 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
61315 p_actual_flag :='A';
61316 END IF;
61317
61318 --
61319 -- bulk performance
61320 --
61321 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
61322 p_header_num => 0); -- 4262811
61323 --
61324 -- set accounting line options
61325 --
61326 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
61327 p_natural_side_code => 'D'
61328 , p_gain_or_loss_flag => 'N'
61329 , p_gl_transfer_mode_code => 'S'
61330 , p_acct_entry_type_code => 'A'
61331 , p_switch_side_flag => 'Y'
61332 , p_merge_duplicate_code => 'N'
61333 );
61334 --
61335 l_acc_rev_natural_side_code := 'C'; -- 4262811
61336 --
61337 --
61338 -- set accounting line type info
61339 --
61340 xla_ae_lines_pkg.SetAcctLineType
61341 (p_component_type => l_component_type
61342 ,p_event_type_code => l_event_type_code
61343 ,p_line_definition_owner_code => l_line_definition_owner_code
61344 ,p_line_definition_code => l_line_definition_code
61345 ,p_accounting_line_code => l_component_code
61346 ,p_accounting_line_type_code => l_component_type_code
61347 ,p_accounting_line_appl_id => l_component_appl_id
61348 ,p_amb_context_code => l_amb_context_code
61349 ,p_entity_code => l_entity_code
61350 ,p_event_class_code => l_event_class_code);
61351 --
61352 -- set accounting class
61353 --
61354 xla_ae_lines_pkg.SetAcctClass(
61355 p_accounting_class_code => 'INTERORG_TRANSFER_CREDIT'
61356 , p_ae_header_id => l_ae_header_id
61357 );
61358
61359 --
61360 -- set rounding class
61361 --
61362 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
61363 'INTERORG_TRANSFER_CREDIT';
61364
61365 --
61366 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
61367 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
61368 --
61369 -- bulk performance
61370 --
61371 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
61372
61373 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
61374 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
61375
61376 -- 4955764
61377 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
61378 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
61379
61380 -- 4458381 Public Sector Enh
61381
61382 --
61383 -- set accounting attributes for the line type
61384 --
61385 l_entered_amt_idx := 17;
61386 l_accted_amt_idx := 22;
61387 l_bflow_applied_to_amt_idx := NULL; -- 5132302
61388 l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
61389 l_rec_acct_attrs.array_num_value(1) := p_source_6;
61390 l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
61391 l_rec_acct_attrs.array_char_value(2) := p_source_7;
61392 l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
61393 l_rec_acct_attrs.array_char_value(3) := p_source_8;
61394 l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
61395 l_rec_acct_attrs.array_num_value(4) := to_char(p_source_28);
61396 l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
61397 l_rec_acct_attrs.array_num_value(5) := to_char(p_source_29);
61398 l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
61399 l_rec_acct_attrs.array_num_value(6) := to_char(p_source_11);
61400 l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
61401 l_rec_acct_attrs.array_char_value(7) := p_source_12;
61402 l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
61403 l_rec_acct_attrs.array_num_value(8) := TO_NUMBER(p_source_30);
61404 l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
61405 l_rec_acct_attrs.array_num_value(9) := p_source_14;
61406 l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
61407 l_rec_acct_attrs.array_char_value(10) := p_source_15;
61408 l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
61409 l_rec_acct_attrs.array_num_value(11) := p_source_16;
61410 l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
61411 l_rec_acct_attrs.array_num_value(12) := TO_NUMBER(p_source_30);
61412 l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
61413 l_rec_acct_attrs.array_num_value(13) := p_source_14;
61414 l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
61415 l_rec_acct_attrs.array_char_value(14) := p_source_15;
61416 l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
61417 l_rec_acct_attrs.array_num_value(15) := p_source_16;
61418 l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
61419 l_rec_acct_attrs.array_char_value(16) := p_source_27;
61420 l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
61421 l_rec_acct_attrs.array_num_value(17) := p_source_18;
61422 l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
61423 l_rec_acct_attrs.array_char_value(18) := p_source_15;
61424 l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
61425 l_rec_acct_attrs.array_date_value(19) := p_source_19;
61426 l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
61427 l_rec_acct_attrs.array_num_value(20) := p_source_20;
61428 l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
61429 l_rec_acct_attrs.array_char_value(21) := p_source_21;
61430 l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
61431 l_rec_acct_attrs.array_num_value(22) := p_source_22;
61432 l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
61433 l_rec_acct_attrs.array_num_value(23) := p_source_31;
61434 l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
61435 l_rec_acct_attrs.array_num_value(24) := p_source_31;
61436
61437 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
61438 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
61439
61440 ---------------------------------------------------------------------------------------------------------------
61441 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
61442 ---------------------------------------------------------------------------------------------------------------
61443 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
61444
61445 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
61446 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
61447
61448 IF xla_accounting_cache_pkg.GetValueChar
61449 (p_source_code => 'LEDGER_CATEGORY_CODE'
61450 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
61451 AND l_bflow_method_code = 'PRIOR_ENTRY'
61452 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
61453 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
61454 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
61455 )
61456 THEN
61457 xla_ae_lines_pkg.BflowUpgEntry
61458 (p_business_method_code => l_bflow_method_code
61459 ,p_business_class_code => l_bflow_class_code
61460 ,p_balance_type => l_balance_type_code);
61461 ELSE
61462 NULL;
61463 -- No business flow processing for business flow method of NONE.
61464 END IF;
61465
61466 --
61467 -- call analytical criteria
61468 --
61469
61470 --
61471 -- call description
61472 --
61473 -- No description or it is inherited.
61474 --
61475 -- call ADRs
61476 -- Bug 4922099
61477 --
61478 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
61479 (NVL(l_actual_upg_option, 'N') = 'O') OR
61480 (NVL(l_enc_upg_option, 'N') = 'O')
61481 )
61482 THEN
61483 NULL;
61484 --
61485 --
61486
61487 l_ccid := AcctDerRule_4(
61488 p_application_id => p_application_id
61489 , p_ae_header_id => l_ae_header_id
61490 , p_source_4 => p_source_4
61491 , x_transaction_coa_id => l_adr_transaction_coa_id
61492 , x_accounting_coa_id => l_adr_accounting_coa_id
61493 , x_value_type_code => l_adr_value_type_code
61494 , p_side => 'NA'
61495 );
61496
61497 xla_ae_lines_pkg.set_ccid(
61498 p_code_combination_id => l_ccid
61499 , p_value_type_code => l_adr_value_type_code
61500 , p_transaction_coa_id => l_adr_transaction_coa_id
61501 , p_accounting_coa_id => l_adr_accounting_coa_id
61502 , p_adr_code => 'CST_DEFAULT'
61503 , p_adr_type_code => 'S'
61504 , p_component_type => l_component_type
61505 , p_component_code => l_component_code
61506 , p_component_type_code => l_component_type_code
61507 , p_component_appl_id => l_component_appl_id
61508 , p_amb_context_code => l_amb_context_code
61509 , p_side => 'NA'
61510 );
61511
61512
61513 --
61514 --
61515 END IF;
61516 --
61517 -- Bug 4922099
61518 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
61519 (NVL(l_enc_upg_option, 'N') = 'O')
61520 ) AND
61521 (l_bflow_method_code = 'PRIOR_ENTRY')
61522 )
61523 THEN
61524 IF
61525 --
61526 1 = 2
61527 --
61528 THEN
61529 xla_accounting_err_pkg.build_message
61530 (p_appli_s_name => 'XLA'
61531 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
61532 ,p_token_1 => 'LINE_NUMBER'
61533 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
61534 ,p_token_2 => 'LINE_TYPE_NAME'
61535 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
61536 l_component_type
61537 ,l_component_code
61538 ,l_component_type_code
61539 ,l_component_appl_id
61540 ,l_amb_context_code
61541 ,l_entity_code
61542 ,l_event_class_code
61543 )
61544 ,p_token_3 => 'OWNER'
61545 ,p_value_3 => xla_lookups_pkg.get_meaning(
61546 p_lookup_type => 'XLA_OWNER_TYPE'
61547 ,p_lookup_code => l_component_type_code
61548 )
61549 ,p_token_4 => 'PRODUCT_NAME'
61550 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
61551 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
61552 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
61553 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
61554 ,p_ae_header_id => NULL
61555 );
61556
61557 IF (C_LEVEL_ERROR>= g_log_level) THEN
61558 trace
61559 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
61560 ,p_level => C_LEVEL_ERROR
61561 ,p_module => l_log_module);
61562 END IF;
61563 END IF;
61564 END IF;
61565 --
61566 --
61567 ------------------------------------------------------------------------------------------------
61568 -- 4219869 Business Flow
61569 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
61570 -- Prior Entry. Currently, the following code is always generated.
61571 ------------------------------------------------------------------------------------------------
61572 XLA_AE_LINES_PKG.ValidateCurrentLine;
61573
61574 ------------------------------------------------------------------------------------
61575 -- 4219869 Business Flow
61576 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
61577 ------------------------------------------------------------------------------------
61578 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
61579
61580 ----------------------------------------------------------------------------------
61581 -- 4219869 Business Flow
61582 -- Update journal entry status -- Need to generate this within IF <condition>
61583 ----------------------------------------------------------------------------------
61584 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
61585 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
61586 ,p_balance_type_code => l_balance_type_code
61587 );
61588
61589 -------------------------------------------------------------------------------------------
61590 -- 4262811 - Generate the Accrual Reversal lines
61591 -------------------------------------------------------------------------------------------
61592 BEGIN
61593 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
61594 (g_array_event(p_event_id).array_value_num('header_index'));
61595 IF l_acc_rev_flag IS NULL THEN
61596 l_acc_rev_flag := 'N';
61597 END IF;
61598 EXCEPTION
61599 WHEN OTHERS THEN
61600 l_acc_rev_flag := 'N';
61601 END;
61602 --
61603 IF (l_acc_rev_flag = 'Y') THEN
61604
61605 -- 4645092 ------------------------------------------------------------------------------
61606 -- To allow MPA report to determine if it should generate report process
61607 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
61608 ------------------------------------------------------------------------------------------
61609
61610 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
61611 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
61612 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
61613 -- call ADRs
61614 -- Bug 4922099
61615 --
61616 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
61617 (NVL(l_actual_upg_option, 'N') = 'O') OR
61618 (NVL(l_enc_upg_option, 'N') = 'O')
61619 )
61620 THEN
61621 NULL;
61622 --
61623 --
61624
61625 l_ccid := AcctDerRule_4(
61626 p_application_id => p_application_id
61627 , p_ae_header_id => l_ae_header_id
61628 , p_source_4 => p_source_4
61629 , x_transaction_coa_id => l_adr_transaction_coa_id
61630 , x_accounting_coa_id => l_adr_accounting_coa_id
61631 , x_value_type_code => l_adr_value_type_code
61632 , p_side => 'NA'
61633 );
61634
61635 xla_ae_lines_pkg.set_ccid(
61636 p_code_combination_id => l_ccid
61637 , p_value_type_code => l_adr_value_type_code
61638 , p_transaction_coa_id => l_adr_transaction_coa_id
61639 , p_accounting_coa_id => l_adr_accounting_coa_id
61640 , p_adr_code => 'CST_DEFAULT'
61641 , p_adr_type_code => 'S'
61642 , p_component_type => l_component_type
61643 , p_component_code => l_component_code
61644 , p_component_type_code => l_component_type_code
61645 , p_component_appl_id => l_component_appl_id
61646 , p_amb_context_code => l_amb_context_code
61647 , p_side => 'NA'
61648 );
61649
61650
61651 --
61652 --
61653 END IF;
61654
61655 --
61656 -- Update the line information that should be overwritten
61657 --
61658 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
61659 p_header_num => 1);
61660 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
61661
61662 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
61663
61664 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
61665 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
61666 END IF;
61667
61668 --
61669 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
61670 --
61671 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
61672 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
61673 ELSE
61674 ---------------------------------------------------------------------------------------------------
61675 -- 4262811a Switch Sign
61676 ---------------------------------------------------------------------------------------------------
61677 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
61678 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
61679 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
61680 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
61681 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
61682 -- 5132302
61683 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
61684 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
61685
61686 END IF;
61687
61688 -- 4955764
61689 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
61690 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
61691
61692
61693 XLA_AE_LINES_PKG.ValidateCurrentLine;
61694 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
61695
61696 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
61697 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
61698 ,p_balance_type_code => l_balance_type_code);
61699
61700 END IF;
61701
61702 -----------------------------------------------------------------------------------------
61703 -- 4262811 Multiperiod Accounting
61704 -----------------------------------------------------------------------------------------
61705 -- No MPA option is assigned.
61706
61707
61708 END IF;
61709 END IF;
61710 --
61711
61712 --
61713 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
61714 trace
61715 (p_msg => 'END of AcctLineType_113'
61716 ,p_level => C_LEVEL_PROCEDURE
61717 ,p_module => l_log_module);
61718 END IF;
61719 --
61720 EXCEPTION
61721 WHEN xla_exceptions_pkg.application_exception THEN
61722 RAISE;
61723 WHEN OTHERS THEN
61724 xla_exceptions_pkg.raise_message
61725 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_113');
61726 END AcctLineType_113;
61727 --
61728
61729 ---------------------------------------
61730 --
61731 -- PRIVATE FUNCTION
61732 -- AcctLineType_114
61733 --
61734 ---------------------------------------
61735 PROCEDURE AcctLineType_114 (
61736 p_application_id IN NUMBER
61737 ,p_event_id IN NUMBER
61738 ,p_calculate_acctd_flag IN VARCHAR2
61739 ,p_calculate_g_l_flag IN VARCHAR2
61740 ,p_actual_flag IN OUT VARCHAR2
61741 ,p_balance_type_code OUT VARCHAR2
61742 ,p_gain_or_loss_ref OUT VARCHAR2
61743
61744 --Cost Management Default Account
61745 , p_source_4 IN NUMBER
61746 --DISTRIBUTION_IDENTIFIER
61747 , p_source_11 IN NUMBER
61748 --Distribution Type
61749 , p_source_12 IN VARCHAR2
61750 , p_source_12_meaning IN VARCHAR2
61751 --Entered Currency Code
61752 , p_source_15 IN VARCHAR2
61753 --Entered Amount
61754 , p_source_18 IN NUMBER
61755 --Currency Conversion Date
61756 , p_source_19 IN DATE
61757 --Currency Conversion Rate
61758 , p_source_20 IN NUMBER
61759 --Currency Conversion Type
61760 , p_source_21 IN VARCHAR2
61761 --Accounted Amount
61762 , p_source_22 IN NUMBER
61763 --Accounting Line Type
61764 , p_source_24 IN NUMBER
61765 )
61766 IS
61767
61768 l_component_type VARCHAR2(80);
61769 l_component_code VARCHAR2(30);
61770 l_component_type_code VARCHAR2(1);
61771 l_component_appl_id INTEGER;
61772 l_amb_context_code VARCHAR2(30);
61773 l_entity_code VARCHAR2(30);
61774 l_event_class_code VARCHAR2(30);
61775 l_ae_header_id NUMBER;
61776 l_event_type_code VARCHAR2(30);
61777 l_line_definition_code VARCHAR2(30);
61778 l_line_definition_owner_code VARCHAR2(1);
61779 --
61780 -- adr variables
61781 l_segment VARCHAR2(30);
61782 l_ccid NUMBER;
61783 l_adr_transaction_coa_id NUMBER;
61784 l_adr_accounting_coa_id NUMBER;
61785 l_adr_flexfield_segment_code VARCHAR2(30);
61786 l_adr_flex_value_set_id NUMBER;
61787 l_adr_value_type_code VARCHAR2(30);
61788 l_adr_value_combination_id NUMBER;
61789 l_adr_value_segment_code VARCHAR2(30);
61790
61791 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
61792 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
61793 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
61794 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
61795
61796 -- 4262811 Variables ------------------------------------------------------------------------------------------
61797 l_entered_amt_idx NUMBER;
61798 l_accted_amt_idx NUMBER;
61799 l_acc_rev_flag VARCHAR2(1);
61800 l_accrual_line_num NUMBER;
61801 l_tmp_amt NUMBER;
61802 l_acc_rev_natural_side_code VARCHAR2(1);
61803
61804 l_num_entries NUMBER;
61805 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
61806 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
61807 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
61808 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
61809 l_recog_line_1 NUMBER;
61810 l_recog_line_2 NUMBER;
61811
61812 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
61813 l_bflow_applied_to_amt NUMBER; -- 5132302
61814 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
61815
61816 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
61817
61818 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
61819 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
61820
61821 ---------------------------------------------------------------------------------------------------------------
61822
61823
61824 --
61825 -- bulk performance
61826 --
61827 l_balance_type_code VARCHAR2(1);
61828 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
61829 l_log_module VARCHAR2(240);
61830
61831 --
61832 -- Upgrade strategy
61833 --
61834 l_actual_upg_option VARCHAR2(1);
61835 l_enc_upg_option VARCHAR2(1);
61836
61837 --
61838 BEGIN
61839 --
61840 IF g_log_enabled THEN
61841 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_114';
61842 END IF;
61843 --
61844 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
61845
61846 trace
61847 (p_msg => 'BEGIN of AcctLineType_114'
61848 ,p_level => C_LEVEL_PROCEDURE
61849 ,p_module => l_log_module);
61850
61851 END IF;
61852 --
61853 l_component_type := 'AMB_JLT';
61854 l_component_code := 'INTERORG_TRANSFER_CREDIT';
61855 l_component_type_code := 'S';
61856 l_component_appl_id := 707;
61857 l_amb_context_code := 'DEFAULT';
61858 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
61859 l_event_class_code := 'USER_DEFINE';
61860 l_event_type_code := 'UDIR_INTERORG_SHIP';
61861 l_line_definition_owner_code := 'S';
61862 l_line_definition_code := 'USER_DIR_INTERORG_SHIP';
61863 --
61864 l_balance_type_code := 'A';
61865 l_segment := NULL;
61866 l_ccid := NULL;
61867 l_adr_transaction_coa_id := NULL;
61868 l_adr_accounting_coa_id := NULL;
61869 l_adr_flexfield_segment_code := NULL;
61870 l_adr_flex_value_set_id := NULL;
61871 l_adr_value_type_code := NULL;
61872 l_adr_value_combination_id := NULL;
61873 l_adr_value_segment_code := NULL;
61874
61875 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
61876 l_bflow_class_code := ''; -- 4219869 Business Flow
61877 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
61878 l_budgetary_control_flag := 'N';
61879
61880 l_bflow_applied_to_amt_idx := NULL; -- 5132302
61881 l_bflow_applied_to_amt := NULL; -- 5132302
61882 l_entered_amt_idx := NULL; -- 4262811
61883 l_accted_amt_idx := NULL; -- 4262811
61884 l_acc_rev_flag := NULL; -- 4262811
61885 l_accrual_line_num := NULL; -- 4262811
61886 l_tmp_amt := NULL; -- 4262811
61887 --
61888
61889 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
61890 l_balance_type_code <> 'B' THEN
61891 IF NVL(p_source_24,9E125) = 11
61892 THEN
61893
61894 --
61895 XLA_AE_LINES_PKG.SetNewLine;
61896
61897 p_balance_type_code := l_balance_type_code;
61898 -- set the flag so later we will know whether the gain loss line needs to be created
61899
61900 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
61901 p_actual_flag :='A';
61902 END IF;
61903
61904 --
61905 -- bulk performance
61906 --
61907 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
61908 p_header_num => 0); -- 4262811
61909 --
61910 -- set accounting line options
61911 --
61912 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
61913 p_natural_side_code => 'D'
61914 , p_gain_or_loss_flag => 'N'
61915 , p_gl_transfer_mode_code => 'S'
61916 , p_acct_entry_type_code => 'A'
61917 , p_switch_side_flag => 'Y'
61918 , p_merge_duplicate_code => 'N'
61919 );
61920 --
61921 l_acc_rev_natural_side_code := 'C'; -- 4262811
61922 --
61923 --
61924 -- set accounting line type info
61925 --
61926 xla_ae_lines_pkg.SetAcctLineType
61927 (p_component_type => l_component_type
61928 ,p_event_type_code => l_event_type_code
61929 ,p_line_definition_owner_code => l_line_definition_owner_code
61930 ,p_line_definition_code => l_line_definition_code
61931 ,p_accounting_line_code => l_component_code
61932 ,p_accounting_line_type_code => l_component_type_code
61933 ,p_accounting_line_appl_id => l_component_appl_id
61934 ,p_amb_context_code => l_amb_context_code
61935 ,p_entity_code => l_entity_code
61936 ,p_event_class_code => l_event_class_code);
61937 --
61938 -- set accounting class
61939 --
61940 xla_ae_lines_pkg.SetAcctClass(
61941 p_accounting_class_code => 'INTERORG_TRANSFER_CREDIT'
61942 , p_ae_header_id => l_ae_header_id
61943 );
61944
61945 --
61946 -- set rounding class
61947 --
61948 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
61949 'INTERORG_TRANSFER_CREDIT';
61950
61951 --
61952 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
61953 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
61954 --
61955 -- bulk performance
61956 --
61957 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
61958
61959 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
61960 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
61961
61962 -- 4955764
61963 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
61964 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
61965
61966 -- 4458381 Public Sector Enh
61967
61968 --
61969 -- set accounting attributes for the line type
61970 --
61971 l_entered_amt_idx := 3;
61972 l_accted_amt_idx := 8;
61973 l_bflow_applied_to_amt_idx := NULL; -- 5132302
61974 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
61975 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
61976 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
61977 l_rec_acct_attrs.array_char_value(2) := p_source_12;
61978 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
61979 l_rec_acct_attrs.array_num_value(3) := p_source_18;
61980 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
61981 l_rec_acct_attrs.array_char_value(4) := p_source_15;
61982 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
61983 l_rec_acct_attrs.array_date_value(5) := p_source_19;
61984 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
61985 l_rec_acct_attrs.array_num_value(6) := p_source_20;
61986 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
61987 l_rec_acct_attrs.array_char_value(7) := p_source_21;
61988 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
61989 l_rec_acct_attrs.array_num_value(8) := p_source_22;
61990
61991 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
61992 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
61993
61994 ---------------------------------------------------------------------------------------------------------------
61995 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
61996 ---------------------------------------------------------------------------------------------------------------
61997 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
61998
61999 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
62000 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
62001
62002 IF xla_accounting_cache_pkg.GetValueChar
62003 (p_source_code => 'LEDGER_CATEGORY_CODE'
62004 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
62005 AND l_bflow_method_code = 'PRIOR_ENTRY'
62006 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
62007 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
62008 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
62009 )
62010 THEN
62011 xla_ae_lines_pkg.BflowUpgEntry
62012 (p_business_method_code => l_bflow_method_code
62013 ,p_business_class_code => l_bflow_class_code
62014 ,p_balance_type => l_balance_type_code);
62015 ELSE
62016 NULL;
62017 -- No business flow processing for business flow method of NONE.
62018 END IF;
62019
62020 --
62021 -- call analytical criteria
62022 --
62023
62024 --
62025 -- call description
62026 --
62027 -- No description or it is inherited.
62028 --
62029 -- call ADRs
62030 -- Bug 4922099
62031 --
62032 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
62033 (NVL(l_actual_upg_option, 'N') = 'O') OR
62034 (NVL(l_enc_upg_option, 'N') = 'O')
62035 )
62036 THEN
62037 NULL;
62038 --
62039 --
62040
62041 l_ccid := AcctDerRule_4(
62042 p_application_id => p_application_id
62043 , p_ae_header_id => l_ae_header_id
62044 , p_source_4 => p_source_4
62045 , x_transaction_coa_id => l_adr_transaction_coa_id
62046 , x_accounting_coa_id => l_adr_accounting_coa_id
62047 , x_value_type_code => l_adr_value_type_code
62048 , p_side => 'NA'
62049 );
62050
62051 xla_ae_lines_pkg.set_ccid(
62052 p_code_combination_id => l_ccid
62053 , p_value_type_code => l_adr_value_type_code
62054 , p_transaction_coa_id => l_adr_transaction_coa_id
62055 , p_accounting_coa_id => l_adr_accounting_coa_id
62056 , p_adr_code => 'CST_DEFAULT'
62057 , p_adr_type_code => 'S'
62058 , p_component_type => l_component_type
62059 , p_component_code => l_component_code
62060 , p_component_type_code => l_component_type_code
62061 , p_component_appl_id => l_component_appl_id
62062 , p_amb_context_code => l_amb_context_code
62063 , p_side => 'NA'
62064 );
62065
62066
62067 --
62068 --
62069 END IF;
62070 --
62071 -- Bug 4922099
62072 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
62073 (NVL(l_enc_upg_option, 'N') = 'O')
62074 ) AND
62075 (l_bflow_method_code = 'PRIOR_ENTRY')
62076 )
62077 THEN
62078 IF
62079 --
62080 1 = 2
62081 --
62082 THEN
62083 xla_accounting_err_pkg.build_message
62084 (p_appli_s_name => 'XLA'
62085 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
62086 ,p_token_1 => 'LINE_NUMBER'
62087 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
62088 ,p_token_2 => 'LINE_TYPE_NAME'
62089 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
62090 l_component_type
62091 ,l_component_code
62092 ,l_component_type_code
62093 ,l_component_appl_id
62094 ,l_amb_context_code
62095 ,l_entity_code
62096 ,l_event_class_code
62097 )
62098 ,p_token_3 => 'OWNER'
62099 ,p_value_3 => xla_lookups_pkg.get_meaning(
62100 p_lookup_type => 'XLA_OWNER_TYPE'
62101 ,p_lookup_code => l_component_type_code
62102 )
62103 ,p_token_4 => 'PRODUCT_NAME'
62104 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
62105 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
62106 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
62107 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
62108 ,p_ae_header_id => NULL
62109 );
62110
62111 IF (C_LEVEL_ERROR>= g_log_level) THEN
62112 trace
62113 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
62114 ,p_level => C_LEVEL_ERROR
62115 ,p_module => l_log_module);
62116 END IF;
62117 END IF;
62118 END IF;
62119 --
62120 --
62121 ------------------------------------------------------------------------------------------------
62122 -- 4219869 Business Flow
62123 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
62124 -- Prior Entry. Currently, the following code is always generated.
62125 ------------------------------------------------------------------------------------------------
62126 XLA_AE_LINES_PKG.ValidateCurrentLine;
62127
62128 ------------------------------------------------------------------------------------
62129 -- 4219869 Business Flow
62130 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
62131 ------------------------------------------------------------------------------------
62132 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
62133
62134 ----------------------------------------------------------------------------------
62135 -- 4219869 Business Flow
62136 -- Update journal entry status -- Need to generate this within IF <condition>
62137 ----------------------------------------------------------------------------------
62138 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
62139 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
62140 ,p_balance_type_code => l_balance_type_code
62141 );
62142
62143 -------------------------------------------------------------------------------------------
62144 -- 4262811 - Generate the Accrual Reversal lines
62145 -------------------------------------------------------------------------------------------
62146 BEGIN
62147 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
62148 (g_array_event(p_event_id).array_value_num('header_index'));
62149 IF l_acc_rev_flag IS NULL THEN
62150 l_acc_rev_flag := 'N';
62151 END IF;
62152 EXCEPTION
62153 WHEN OTHERS THEN
62154 l_acc_rev_flag := 'N';
62155 END;
62156 --
62157 IF (l_acc_rev_flag = 'Y') THEN
62158
62159 -- 4645092 ------------------------------------------------------------------------------
62160 -- To allow MPA report to determine if it should generate report process
62161 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
62162 ------------------------------------------------------------------------------------------
62163
62164 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
62165 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
62166 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
62167 -- call ADRs
62168 -- Bug 4922099
62169 --
62170 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
62171 (NVL(l_actual_upg_option, 'N') = 'O') OR
62172 (NVL(l_enc_upg_option, 'N') = 'O')
62173 )
62174 THEN
62175 NULL;
62176 --
62177 --
62178
62179 l_ccid := AcctDerRule_4(
62180 p_application_id => p_application_id
62181 , p_ae_header_id => l_ae_header_id
62182 , p_source_4 => p_source_4
62183 , x_transaction_coa_id => l_adr_transaction_coa_id
62184 , x_accounting_coa_id => l_adr_accounting_coa_id
62185 , x_value_type_code => l_adr_value_type_code
62186 , p_side => 'NA'
62187 );
62188
62189 xla_ae_lines_pkg.set_ccid(
62190 p_code_combination_id => l_ccid
62191 , p_value_type_code => l_adr_value_type_code
62192 , p_transaction_coa_id => l_adr_transaction_coa_id
62193 , p_accounting_coa_id => l_adr_accounting_coa_id
62194 , p_adr_code => 'CST_DEFAULT'
62195 , p_adr_type_code => 'S'
62196 , p_component_type => l_component_type
62197 , p_component_code => l_component_code
62198 , p_component_type_code => l_component_type_code
62199 , p_component_appl_id => l_component_appl_id
62200 , p_amb_context_code => l_amb_context_code
62201 , p_side => 'NA'
62202 );
62203
62204
62205 --
62206 --
62207 END IF;
62208
62209 --
62210 -- Update the line information that should be overwritten
62211 --
62212 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
62213 p_header_num => 1);
62214 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
62215
62216 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
62217
62218 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
62219 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
62220 END IF;
62221
62222 --
62223 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
62224 --
62225 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
62226 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
62227 ELSE
62228 ---------------------------------------------------------------------------------------------------
62229 -- 4262811a Switch Sign
62230 ---------------------------------------------------------------------------------------------------
62231 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
62232 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
62233 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
62234 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
62235 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
62236 -- 5132302
62237 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
62238 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
62239
62240 END IF;
62241
62242 -- 4955764
62243 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
62244 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
62245
62246
62247 XLA_AE_LINES_PKG.ValidateCurrentLine;
62248 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
62249
62250 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
62251 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
62252 ,p_balance_type_code => l_balance_type_code);
62253
62254 END IF;
62255
62256 -----------------------------------------------------------------------------------------
62257 -- 4262811 Multiperiod Accounting
62258 -----------------------------------------------------------------------------------------
62259 -- No MPA option is assigned.
62260
62261
62262 END IF;
62263 END IF;
62264 --
62265
62266 --
62267 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
62268 trace
62269 (p_msg => 'END of AcctLineType_114'
62270 ,p_level => C_LEVEL_PROCEDURE
62271 ,p_module => l_log_module);
62272 END IF;
62273 --
62274 EXCEPTION
62275 WHEN xla_exceptions_pkg.application_exception THEN
62276 RAISE;
62277 WHEN OTHERS THEN
62278 xla_exceptions_pkg.raise_message
62279 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_114');
62280 END AcctLineType_114;
62281 --
62282
62283 ---------------------------------------
62284 --
62285 -- PRIVATE FUNCTION
62286 -- AcctLineType_115
62287 --
62288 ---------------------------------------
62289 PROCEDURE AcctLineType_115 (
62290 p_application_id IN NUMBER
62291 ,p_event_id IN NUMBER
62292 ,p_calculate_acctd_flag IN VARCHAR2
62293 ,p_calculate_g_l_flag IN VARCHAR2
62294 ,p_actual_flag IN OUT VARCHAR2
62295 ,p_balance_type_code OUT VARCHAR2
62296 ,p_gain_or_loss_ref OUT VARCHAR2
62297
62298 --Cost Management Default Account
62299 , p_source_4 IN NUMBER
62300 --DISTRIBUTION_IDENTIFIER
62301 , p_source_11 IN NUMBER
62302 --Distribution Type
62303 , p_source_12 IN VARCHAR2
62304 , p_source_12_meaning IN VARCHAR2
62305 --Entered Currency Code
62306 , p_source_15 IN VARCHAR2
62307 --Entered Amount
62308 , p_source_18 IN NUMBER
62309 --Currency Conversion Date
62310 , p_source_19 IN DATE
62311 --Currency Conversion Rate
62312 , p_source_20 IN NUMBER
62313 --Currency Conversion Type
62314 , p_source_21 IN VARCHAR2
62315 --Accounted Amount
62316 , p_source_22 IN NUMBER
62317 --Accounting Line Type
62318 , p_source_24 IN NUMBER
62319 )
62320 IS
62321
62322 l_component_type VARCHAR2(80);
62323 l_component_code VARCHAR2(30);
62324 l_component_type_code VARCHAR2(1);
62325 l_component_appl_id INTEGER;
62326 l_amb_context_code VARCHAR2(30);
62327 l_entity_code VARCHAR2(30);
62328 l_event_class_code VARCHAR2(30);
62329 l_ae_header_id NUMBER;
62330 l_event_type_code VARCHAR2(30);
62331 l_line_definition_code VARCHAR2(30);
62332 l_line_definition_owner_code VARCHAR2(1);
62333 --
62334 -- adr variables
62335 l_segment VARCHAR2(30);
62336 l_ccid NUMBER;
62337 l_adr_transaction_coa_id NUMBER;
62338 l_adr_accounting_coa_id NUMBER;
62339 l_adr_flexfield_segment_code VARCHAR2(30);
62340 l_adr_flex_value_set_id NUMBER;
62341 l_adr_value_type_code VARCHAR2(30);
62342 l_adr_value_combination_id NUMBER;
62343 l_adr_value_segment_code VARCHAR2(30);
62344
62345 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
62346 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
62347 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
62348 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
62349
62350 -- 4262811 Variables ------------------------------------------------------------------------------------------
62351 l_entered_amt_idx NUMBER;
62352 l_accted_amt_idx NUMBER;
62353 l_acc_rev_flag VARCHAR2(1);
62354 l_accrual_line_num NUMBER;
62355 l_tmp_amt NUMBER;
62356 l_acc_rev_natural_side_code VARCHAR2(1);
62357
62358 l_num_entries NUMBER;
62359 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
62360 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
62361 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
62362 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
62363 l_recog_line_1 NUMBER;
62364 l_recog_line_2 NUMBER;
62365
62366 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
62367 l_bflow_applied_to_amt NUMBER; -- 5132302
62368 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
62369
62370 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
62371
62372 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
62373 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
62374
62375 ---------------------------------------------------------------------------------------------------------------
62376
62377
62378 --
62379 -- bulk performance
62380 --
62381 l_balance_type_code VARCHAR2(1);
62382 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
62383 l_log_module VARCHAR2(240);
62384
62385 --
62386 -- Upgrade strategy
62387 --
62388 l_actual_upg_option VARCHAR2(1);
62389 l_enc_upg_option VARCHAR2(1);
62390
62391 --
62392 BEGIN
62393 --
62394 IF g_log_enabled THEN
62395 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_115';
62396 END IF;
62397 --
62398 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
62399
62400 trace
62401 (p_msg => 'BEGIN of AcctLineType_115'
62402 ,p_level => C_LEVEL_PROCEDURE
62403 ,p_module => l_log_module);
62404
62405 END IF;
62406 --
62407 l_component_type := 'AMB_JLT';
62408 l_component_code := 'INTERORG_TRANSFER_CREDIT';
62409 l_component_type_code := 'S';
62410 l_component_appl_id := 707;
62411 l_amb_context_code := 'DEFAULT';
62412 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
62413 l_event_class_code := 'USER_DEFINE';
62414 l_event_type_code := 'UFOB_SHIP_SENDER_SHIP_TP';
62415 l_line_definition_owner_code := 'S';
62416 l_line_definition_code := 'USER_FOB_SHIP_SENDER_SHIP_TP';
62417 --
62418 l_balance_type_code := 'A';
62419 l_segment := NULL;
62420 l_ccid := NULL;
62421 l_adr_transaction_coa_id := NULL;
62422 l_adr_accounting_coa_id := NULL;
62423 l_adr_flexfield_segment_code := NULL;
62424 l_adr_flex_value_set_id := NULL;
62425 l_adr_value_type_code := NULL;
62426 l_adr_value_combination_id := NULL;
62427 l_adr_value_segment_code := NULL;
62428
62429 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
62430 l_bflow_class_code := ''; -- 4219869 Business Flow
62431 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
62432 l_budgetary_control_flag := 'N';
62433
62434 l_bflow_applied_to_amt_idx := NULL; -- 5132302
62435 l_bflow_applied_to_amt := NULL; -- 5132302
62436 l_entered_amt_idx := NULL; -- 4262811
62437 l_accted_amt_idx := NULL; -- 4262811
62438 l_acc_rev_flag := NULL; -- 4262811
62439 l_accrual_line_num := NULL; -- 4262811
62440 l_tmp_amt := NULL; -- 4262811
62441 --
62442
62443 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
62444 l_balance_type_code <> 'B' THEN
62445 IF NVL(p_source_24,9E125) = 11
62446 THEN
62447
62448 --
62449 XLA_AE_LINES_PKG.SetNewLine;
62450
62451 p_balance_type_code := l_balance_type_code;
62452 -- set the flag so later we will know whether the gain loss line needs to be created
62453
62454 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
62455 p_actual_flag :='A';
62456 END IF;
62457
62458 --
62459 -- bulk performance
62460 --
62461 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
62462 p_header_num => 0); -- 4262811
62463 --
62464 -- set accounting line options
62465 --
62466 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
62467 p_natural_side_code => 'D'
62468 , p_gain_or_loss_flag => 'N'
62469 , p_gl_transfer_mode_code => 'S'
62470 , p_acct_entry_type_code => 'A'
62471 , p_switch_side_flag => 'Y'
62472 , p_merge_duplicate_code => 'N'
62473 );
62474 --
62475 l_acc_rev_natural_side_code := 'C'; -- 4262811
62476 --
62477 --
62478 -- set accounting line type info
62479 --
62480 xla_ae_lines_pkg.SetAcctLineType
62481 (p_component_type => l_component_type
62482 ,p_event_type_code => l_event_type_code
62483 ,p_line_definition_owner_code => l_line_definition_owner_code
62484 ,p_line_definition_code => l_line_definition_code
62485 ,p_accounting_line_code => l_component_code
62486 ,p_accounting_line_type_code => l_component_type_code
62487 ,p_accounting_line_appl_id => l_component_appl_id
62488 ,p_amb_context_code => l_amb_context_code
62489 ,p_entity_code => l_entity_code
62490 ,p_event_class_code => l_event_class_code);
62491 --
62492 -- set accounting class
62493 --
62494 xla_ae_lines_pkg.SetAcctClass(
62495 p_accounting_class_code => 'INTERORG_TRANSFER_CREDIT'
62496 , p_ae_header_id => l_ae_header_id
62497 );
62498
62499 --
62500 -- set rounding class
62501 --
62502 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
62503 'INTERORG_TRANSFER_CREDIT';
62504
62505 --
62506 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
62507 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
62508 --
62509 -- bulk performance
62510 --
62511 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
62512
62513 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
62514 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
62515
62516 -- 4955764
62517 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
62518 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
62519
62520 -- 4458381 Public Sector Enh
62521
62522 --
62523 -- set accounting attributes for the line type
62524 --
62525 l_entered_amt_idx := 3;
62526 l_accted_amt_idx := 8;
62527 l_bflow_applied_to_amt_idx := NULL; -- 5132302
62528 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
62529 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
62530 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
62531 l_rec_acct_attrs.array_char_value(2) := p_source_12;
62532 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
62533 l_rec_acct_attrs.array_num_value(3) := p_source_18;
62534 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
62535 l_rec_acct_attrs.array_char_value(4) := p_source_15;
62536 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
62537 l_rec_acct_attrs.array_date_value(5) := p_source_19;
62538 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
62539 l_rec_acct_attrs.array_num_value(6) := p_source_20;
62540 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
62541 l_rec_acct_attrs.array_char_value(7) := p_source_21;
62542 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
62543 l_rec_acct_attrs.array_num_value(8) := p_source_22;
62544
62545 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
62546 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
62547
62548 ---------------------------------------------------------------------------------------------------------------
62549 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
62550 ---------------------------------------------------------------------------------------------------------------
62551 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
62552
62553 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
62554 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
62555
62556 IF xla_accounting_cache_pkg.GetValueChar
62557 (p_source_code => 'LEDGER_CATEGORY_CODE'
62558 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
62559 AND l_bflow_method_code = 'PRIOR_ENTRY'
62560 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
62561 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
62562 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
62563 )
62564 THEN
62565 xla_ae_lines_pkg.BflowUpgEntry
62566 (p_business_method_code => l_bflow_method_code
62567 ,p_business_class_code => l_bflow_class_code
62568 ,p_balance_type => l_balance_type_code);
62569 ELSE
62570 NULL;
62571 -- No business flow processing for business flow method of NONE.
62572 END IF;
62573
62574 --
62575 -- call analytical criteria
62576 --
62577
62578 --
62579 -- call description
62580 --
62581 -- No description or it is inherited.
62582 --
62583 -- call ADRs
62584 -- Bug 4922099
62585 --
62586 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
62587 (NVL(l_actual_upg_option, 'N') = 'O') OR
62588 (NVL(l_enc_upg_option, 'N') = 'O')
62589 )
62590 THEN
62591 NULL;
62592 --
62593 --
62594
62595 l_ccid := AcctDerRule_4(
62596 p_application_id => p_application_id
62597 , p_ae_header_id => l_ae_header_id
62598 , p_source_4 => p_source_4
62599 , x_transaction_coa_id => l_adr_transaction_coa_id
62600 , x_accounting_coa_id => l_adr_accounting_coa_id
62601 , x_value_type_code => l_adr_value_type_code
62602 , p_side => 'NA'
62603 );
62604
62605 xla_ae_lines_pkg.set_ccid(
62606 p_code_combination_id => l_ccid
62607 , p_value_type_code => l_adr_value_type_code
62608 , p_transaction_coa_id => l_adr_transaction_coa_id
62609 , p_accounting_coa_id => l_adr_accounting_coa_id
62610 , p_adr_code => 'CST_DEFAULT'
62611 , p_adr_type_code => 'S'
62612 , p_component_type => l_component_type
62613 , p_component_code => l_component_code
62614 , p_component_type_code => l_component_type_code
62615 , p_component_appl_id => l_component_appl_id
62616 , p_amb_context_code => l_amb_context_code
62617 , p_side => 'NA'
62618 );
62619
62620
62621 --
62622 --
62623 END IF;
62624 --
62625 -- Bug 4922099
62626 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
62627 (NVL(l_enc_upg_option, 'N') = 'O')
62628 ) AND
62629 (l_bflow_method_code = 'PRIOR_ENTRY')
62630 )
62631 THEN
62632 IF
62633 --
62634 1 = 2
62635 --
62636 THEN
62637 xla_accounting_err_pkg.build_message
62638 (p_appli_s_name => 'XLA'
62639 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
62640 ,p_token_1 => 'LINE_NUMBER'
62641 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
62642 ,p_token_2 => 'LINE_TYPE_NAME'
62643 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
62644 l_component_type
62645 ,l_component_code
62646 ,l_component_type_code
62647 ,l_component_appl_id
62648 ,l_amb_context_code
62649 ,l_entity_code
62650 ,l_event_class_code
62651 )
62652 ,p_token_3 => 'OWNER'
62653 ,p_value_3 => xla_lookups_pkg.get_meaning(
62654 p_lookup_type => 'XLA_OWNER_TYPE'
62655 ,p_lookup_code => l_component_type_code
62656 )
62657 ,p_token_4 => 'PRODUCT_NAME'
62658 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
62659 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
62660 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
62661 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
62662 ,p_ae_header_id => NULL
62663 );
62664
62665 IF (C_LEVEL_ERROR>= g_log_level) THEN
62666 trace
62667 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
62668 ,p_level => C_LEVEL_ERROR
62669 ,p_module => l_log_module);
62670 END IF;
62671 END IF;
62672 END IF;
62673 --
62674 --
62675 ------------------------------------------------------------------------------------------------
62676 -- 4219869 Business Flow
62677 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
62678 -- Prior Entry. Currently, the following code is always generated.
62679 ------------------------------------------------------------------------------------------------
62680 XLA_AE_LINES_PKG.ValidateCurrentLine;
62681
62682 ------------------------------------------------------------------------------------
62683 -- 4219869 Business Flow
62684 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
62685 ------------------------------------------------------------------------------------
62686 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
62687
62688 ----------------------------------------------------------------------------------
62689 -- 4219869 Business Flow
62690 -- Update journal entry status -- Need to generate this within IF <condition>
62691 ----------------------------------------------------------------------------------
62692 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
62693 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
62694 ,p_balance_type_code => l_balance_type_code
62695 );
62696
62697 -------------------------------------------------------------------------------------------
62698 -- 4262811 - Generate the Accrual Reversal lines
62699 -------------------------------------------------------------------------------------------
62700 BEGIN
62701 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
62702 (g_array_event(p_event_id).array_value_num('header_index'));
62703 IF l_acc_rev_flag IS NULL THEN
62704 l_acc_rev_flag := 'N';
62705 END IF;
62706 EXCEPTION
62707 WHEN OTHERS THEN
62708 l_acc_rev_flag := 'N';
62709 END;
62710 --
62711 IF (l_acc_rev_flag = 'Y') THEN
62712
62713 -- 4645092 ------------------------------------------------------------------------------
62714 -- To allow MPA report to determine if it should generate report process
62715 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
62716 ------------------------------------------------------------------------------------------
62717
62718 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
62719 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
62720 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
62721 -- call ADRs
62722 -- Bug 4922099
62723 --
62724 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
62725 (NVL(l_actual_upg_option, 'N') = 'O') OR
62726 (NVL(l_enc_upg_option, 'N') = 'O')
62727 )
62728 THEN
62729 NULL;
62730 --
62731 --
62732
62733 l_ccid := AcctDerRule_4(
62734 p_application_id => p_application_id
62735 , p_ae_header_id => l_ae_header_id
62736 , p_source_4 => p_source_4
62737 , x_transaction_coa_id => l_adr_transaction_coa_id
62738 , x_accounting_coa_id => l_adr_accounting_coa_id
62739 , x_value_type_code => l_adr_value_type_code
62740 , p_side => 'NA'
62741 );
62742
62743 xla_ae_lines_pkg.set_ccid(
62744 p_code_combination_id => l_ccid
62745 , p_value_type_code => l_adr_value_type_code
62746 , p_transaction_coa_id => l_adr_transaction_coa_id
62747 , p_accounting_coa_id => l_adr_accounting_coa_id
62748 , p_adr_code => 'CST_DEFAULT'
62749 , p_adr_type_code => 'S'
62750 , p_component_type => l_component_type
62751 , p_component_code => l_component_code
62752 , p_component_type_code => l_component_type_code
62753 , p_component_appl_id => l_component_appl_id
62754 , p_amb_context_code => l_amb_context_code
62755 , p_side => 'NA'
62756 );
62757
62758
62759 --
62760 --
62761 END IF;
62762
62763 --
62764 -- Update the line information that should be overwritten
62765 --
62766 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
62767 p_header_num => 1);
62768 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
62769
62770 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
62771
62772 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
62773 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
62774 END IF;
62775
62776 --
62777 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
62778 --
62779 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
62780 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
62781 ELSE
62782 ---------------------------------------------------------------------------------------------------
62783 -- 4262811a Switch Sign
62784 ---------------------------------------------------------------------------------------------------
62785 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
62786 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
62787 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
62788 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
62789 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
62790 -- 5132302
62791 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
62792 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
62793
62794 END IF;
62795
62796 -- 4955764
62797 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
62798 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
62799
62800
62801 XLA_AE_LINES_PKG.ValidateCurrentLine;
62802 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
62803
62804 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
62805 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
62806 ,p_balance_type_code => l_balance_type_code);
62807
62808 END IF;
62809
62810 -----------------------------------------------------------------------------------------
62811 -- 4262811 Multiperiod Accounting
62812 -----------------------------------------------------------------------------------------
62813 -- No MPA option is assigned.
62814
62815
62816 END IF;
62817 END IF;
62818 --
62819
62820 --
62821 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
62822 trace
62823 (p_msg => 'END of AcctLineType_115'
62824 ,p_level => C_LEVEL_PROCEDURE
62825 ,p_module => l_log_module);
62826 END IF;
62827 --
62828 EXCEPTION
62829 WHEN xla_exceptions_pkg.application_exception THEN
62830 RAISE;
62831 WHEN OTHERS THEN
62832 xla_exceptions_pkg.raise_message
62833 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_115');
62834 END AcctLineType_115;
62835 --
62836
62837 ---------------------------------------
62838 --
62839 -- PRIVATE FUNCTION
62840 -- AcctLineType_116
62841 --
62842 ---------------------------------------
62843 PROCEDURE AcctLineType_116 (
62844 p_application_id IN NUMBER
62845 ,p_event_id IN NUMBER
62846 ,p_calculate_acctd_flag IN VARCHAR2
62847 ,p_calculate_g_l_flag IN VARCHAR2
62848 ,p_actual_flag IN OUT VARCHAR2
62849 ,p_balance_type_code OUT VARCHAR2
62850 ,p_gain_or_loss_ref OUT VARCHAR2
62851
62852 --Cost Management Default Account
62853 , p_source_4 IN NUMBER
62854 --DISTRIBUTION_IDENTIFIER
62855 , p_source_11 IN NUMBER
62856 --Distribution Type
62857 , p_source_12 IN VARCHAR2
62858 , p_source_12_meaning IN VARCHAR2
62859 --Entered Currency Code
62860 , p_source_15 IN VARCHAR2
62861 --Entered Amount
62862 , p_source_18 IN NUMBER
62863 --Currency Conversion Date
62864 , p_source_19 IN DATE
62865 --Currency Conversion Rate
62866 , p_source_20 IN NUMBER
62867 --Currency Conversion Type
62868 , p_source_21 IN VARCHAR2
62869 --Accounted Amount
62870 , p_source_22 IN NUMBER
62871 --Accounting Line Type
62872 , p_source_24 IN NUMBER
62873 )
62874 IS
62875
62876 l_component_type VARCHAR2(80);
62877 l_component_code VARCHAR2(30);
62878 l_component_type_code VARCHAR2(1);
62879 l_component_appl_id INTEGER;
62880 l_amb_context_code VARCHAR2(30);
62881 l_entity_code VARCHAR2(30);
62882 l_event_class_code VARCHAR2(30);
62883 l_ae_header_id NUMBER;
62884 l_event_type_code VARCHAR2(30);
62885 l_line_definition_code VARCHAR2(30);
62886 l_line_definition_owner_code VARCHAR2(1);
62887 --
62888 -- adr variables
62889 l_segment VARCHAR2(30);
62890 l_ccid NUMBER;
62891 l_adr_transaction_coa_id NUMBER;
62892 l_adr_accounting_coa_id NUMBER;
62893 l_adr_flexfield_segment_code VARCHAR2(30);
62894 l_adr_flex_value_set_id NUMBER;
62895 l_adr_value_type_code VARCHAR2(30);
62896 l_adr_value_combination_id NUMBER;
62897 l_adr_value_segment_code VARCHAR2(30);
62898
62899 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
62900 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
62901 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
62902 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
62903
62904 -- 4262811 Variables ------------------------------------------------------------------------------------------
62905 l_entered_amt_idx NUMBER;
62906 l_accted_amt_idx NUMBER;
62907 l_acc_rev_flag VARCHAR2(1);
62908 l_accrual_line_num NUMBER;
62909 l_tmp_amt NUMBER;
62910 l_acc_rev_natural_side_code VARCHAR2(1);
62911
62912 l_num_entries NUMBER;
62913 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
62914 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
62915 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
62916 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
62917 l_recog_line_1 NUMBER;
62918 l_recog_line_2 NUMBER;
62919
62920 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
62921 l_bflow_applied_to_amt NUMBER; -- 5132302
62922 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
62923
62924 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
62925
62926 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
62927 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
62928
62929 ---------------------------------------------------------------------------------------------------------------
62930
62931
62932 --
62933 -- bulk performance
62934 --
62935 l_balance_type_code VARCHAR2(1);
62936 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
62937 l_log_module VARCHAR2(240);
62938
62939 --
62940 -- Upgrade strategy
62941 --
62942 l_actual_upg_option VARCHAR2(1);
62943 l_enc_upg_option VARCHAR2(1);
62944
62945 --
62946 BEGIN
62947 --
62948 IF g_log_enabled THEN
62949 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_116';
62950 END IF;
62951 --
62952 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
62953
62954 trace
62955 (p_msg => 'BEGIN of AcctLineType_116'
62956 ,p_level => C_LEVEL_PROCEDURE
62957 ,p_module => l_log_module);
62958
62959 END IF;
62960 --
62961 l_component_type := 'AMB_JLT';
62962 l_component_code := 'INTERORG_TRANSFER_CREDIT';
62963 l_component_type_code := 'S';
62964 l_component_appl_id := 707;
62965 l_amb_context_code := 'DEFAULT';
62966 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
62967 l_event_class_code := 'DIR_INTERORG_SHIP';
62968 l_event_type_code := 'DIR_INTERORG_SHIP_ALL';
62969 l_line_definition_owner_code := 'S';
62970 l_line_definition_code := 'DIRECT_INTERORG_SHIP';
62971 --
62972 l_balance_type_code := 'A';
62973 l_segment := NULL;
62974 l_ccid := NULL;
62975 l_adr_transaction_coa_id := NULL;
62976 l_adr_accounting_coa_id := NULL;
62977 l_adr_flexfield_segment_code := NULL;
62978 l_adr_flex_value_set_id := NULL;
62979 l_adr_value_type_code := NULL;
62980 l_adr_value_combination_id := NULL;
62981 l_adr_value_segment_code := NULL;
62982
62983 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
62984 l_bflow_class_code := ''; -- 4219869 Business Flow
62985 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
62986 l_budgetary_control_flag := 'N';
62987
62988 l_bflow_applied_to_amt_idx := NULL; -- 5132302
62989 l_bflow_applied_to_amt := NULL; -- 5132302
62990 l_entered_amt_idx := NULL; -- 4262811
62991 l_accted_amt_idx := NULL; -- 4262811
62992 l_acc_rev_flag := NULL; -- 4262811
62993 l_accrual_line_num := NULL; -- 4262811
62994 l_tmp_amt := NULL; -- 4262811
62995 --
62996
62997 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
62998 l_balance_type_code <> 'B' THEN
62999 IF NVL(p_source_24,9E125) = 11
63000 THEN
63001
63002 --
63003 XLA_AE_LINES_PKG.SetNewLine;
63004
63005 p_balance_type_code := l_balance_type_code;
63006 -- set the flag so later we will know whether the gain loss line needs to be created
63007
63008 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
63009 p_actual_flag :='A';
63010 END IF;
63011
63012 --
63013 -- bulk performance
63014 --
63015 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
63016 p_header_num => 0); -- 4262811
63017 --
63018 -- set accounting line options
63019 --
63020 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
63021 p_natural_side_code => 'D'
63022 , p_gain_or_loss_flag => 'N'
63023 , p_gl_transfer_mode_code => 'S'
63024 , p_acct_entry_type_code => 'A'
63025 , p_switch_side_flag => 'Y'
63026 , p_merge_duplicate_code => 'N'
63027 );
63028 --
63029 l_acc_rev_natural_side_code := 'C'; -- 4262811
63030 --
63031 --
63032 -- set accounting line type info
63033 --
63034 xla_ae_lines_pkg.SetAcctLineType
63035 (p_component_type => l_component_type
63036 ,p_event_type_code => l_event_type_code
63037 ,p_line_definition_owner_code => l_line_definition_owner_code
63038 ,p_line_definition_code => l_line_definition_code
63039 ,p_accounting_line_code => l_component_code
63040 ,p_accounting_line_type_code => l_component_type_code
63041 ,p_accounting_line_appl_id => l_component_appl_id
63042 ,p_amb_context_code => l_amb_context_code
63043 ,p_entity_code => l_entity_code
63044 ,p_event_class_code => l_event_class_code);
63045 --
63046 -- set accounting class
63047 --
63048 xla_ae_lines_pkg.SetAcctClass(
63049 p_accounting_class_code => 'INTERORG_TRANSFER_CREDIT'
63050 , p_ae_header_id => l_ae_header_id
63051 );
63052
63053 --
63054 -- set rounding class
63055 --
63056 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
63057 'INTERORG_TRANSFER_CREDIT';
63058
63059 --
63060 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
63061 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
63062 --
63063 -- bulk performance
63064 --
63065 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
63066
63067 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
63068 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
63069
63070 -- 4955764
63071 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
63072 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
63073
63074 -- 4458381 Public Sector Enh
63075
63076 --
63077 -- set accounting attributes for the line type
63078 --
63079 l_entered_amt_idx := 3;
63080 l_accted_amt_idx := 8;
63081 l_bflow_applied_to_amt_idx := NULL; -- 5132302
63082 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
63083 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
63084 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
63085 l_rec_acct_attrs.array_char_value(2) := p_source_12;
63086 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
63087 l_rec_acct_attrs.array_num_value(3) := p_source_18;
63088 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
63089 l_rec_acct_attrs.array_char_value(4) := p_source_15;
63090 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
63091 l_rec_acct_attrs.array_date_value(5) := p_source_19;
63092 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
63093 l_rec_acct_attrs.array_num_value(6) := p_source_20;
63094 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
63095 l_rec_acct_attrs.array_char_value(7) := p_source_21;
63096 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
63097 l_rec_acct_attrs.array_num_value(8) := p_source_22;
63098
63099 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
63100 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
63101
63102 ---------------------------------------------------------------------------------------------------------------
63103 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
63104 ---------------------------------------------------------------------------------------------------------------
63105 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
63106
63107 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
63108 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
63109
63110 IF xla_accounting_cache_pkg.GetValueChar
63111 (p_source_code => 'LEDGER_CATEGORY_CODE'
63112 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
63113 AND l_bflow_method_code = 'PRIOR_ENTRY'
63114 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
63115 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
63116 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
63117 )
63118 THEN
63119 xla_ae_lines_pkg.BflowUpgEntry
63120 (p_business_method_code => l_bflow_method_code
63121 ,p_business_class_code => l_bflow_class_code
63122 ,p_balance_type => l_balance_type_code);
63123 ELSE
63124 NULL;
63125 -- No business flow processing for business flow method of NONE.
63126 END IF;
63127
63128 --
63129 -- call analytical criteria
63130 --
63131
63132 --
63133 -- call description
63134 --
63135 -- No description or it is inherited.
63136 --
63137 -- call ADRs
63138 -- Bug 4922099
63139 --
63140 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
63141 (NVL(l_actual_upg_option, 'N') = 'O') OR
63142 (NVL(l_enc_upg_option, 'N') = 'O')
63143 )
63144 THEN
63145 NULL;
63146 --
63147 --
63148
63149 l_ccid := AcctDerRule_4(
63150 p_application_id => p_application_id
63151 , p_ae_header_id => l_ae_header_id
63152 , p_source_4 => p_source_4
63153 , x_transaction_coa_id => l_adr_transaction_coa_id
63154 , x_accounting_coa_id => l_adr_accounting_coa_id
63155 , x_value_type_code => l_adr_value_type_code
63156 , p_side => 'NA'
63157 );
63158
63159 xla_ae_lines_pkg.set_ccid(
63160 p_code_combination_id => l_ccid
63161 , p_value_type_code => l_adr_value_type_code
63162 , p_transaction_coa_id => l_adr_transaction_coa_id
63163 , p_accounting_coa_id => l_adr_accounting_coa_id
63164 , p_adr_code => 'CST_DEFAULT'
63165 , p_adr_type_code => 'S'
63166 , p_component_type => l_component_type
63167 , p_component_code => l_component_code
63168 , p_component_type_code => l_component_type_code
63169 , p_component_appl_id => l_component_appl_id
63170 , p_amb_context_code => l_amb_context_code
63171 , p_side => 'NA'
63172 );
63173
63174
63175 --
63176 --
63177 END IF;
63178 --
63179 -- Bug 4922099
63180 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
63181 (NVL(l_enc_upg_option, 'N') = 'O')
63182 ) AND
63183 (l_bflow_method_code = 'PRIOR_ENTRY')
63184 )
63185 THEN
63186 IF
63187 --
63188 1 = 2
63189 --
63190 THEN
63191 xla_accounting_err_pkg.build_message
63192 (p_appli_s_name => 'XLA'
63193 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
63194 ,p_token_1 => 'LINE_NUMBER'
63195 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
63196 ,p_token_2 => 'LINE_TYPE_NAME'
63197 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
63198 l_component_type
63199 ,l_component_code
63200 ,l_component_type_code
63201 ,l_component_appl_id
63202 ,l_amb_context_code
63203 ,l_entity_code
63204 ,l_event_class_code
63205 )
63206 ,p_token_3 => 'OWNER'
63207 ,p_value_3 => xla_lookups_pkg.get_meaning(
63208 p_lookup_type => 'XLA_OWNER_TYPE'
63209 ,p_lookup_code => l_component_type_code
63210 )
63211 ,p_token_4 => 'PRODUCT_NAME'
63212 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
63213 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
63214 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
63215 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
63216 ,p_ae_header_id => NULL
63217 );
63218
63219 IF (C_LEVEL_ERROR>= g_log_level) THEN
63220 trace
63221 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
63222 ,p_level => C_LEVEL_ERROR
63223 ,p_module => l_log_module);
63224 END IF;
63225 END IF;
63226 END IF;
63227 --
63228 --
63229 ------------------------------------------------------------------------------------------------
63230 -- 4219869 Business Flow
63231 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
63232 -- Prior Entry. Currently, the following code is always generated.
63233 ------------------------------------------------------------------------------------------------
63234 XLA_AE_LINES_PKG.ValidateCurrentLine;
63235
63236 ------------------------------------------------------------------------------------
63237 -- 4219869 Business Flow
63238 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
63239 ------------------------------------------------------------------------------------
63240 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
63241
63242 ----------------------------------------------------------------------------------
63243 -- 4219869 Business Flow
63244 -- Update journal entry status -- Need to generate this within IF <condition>
63245 ----------------------------------------------------------------------------------
63246 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
63247 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
63248 ,p_balance_type_code => l_balance_type_code
63249 );
63250
63251 -------------------------------------------------------------------------------------------
63252 -- 4262811 - Generate the Accrual Reversal lines
63253 -------------------------------------------------------------------------------------------
63254 BEGIN
63255 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
63256 (g_array_event(p_event_id).array_value_num('header_index'));
63257 IF l_acc_rev_flag IS NULL THEN
63258 l_acc_rev_flag := 'N';
63259 END IF;
63260 EXCEPTION
63261 WHEN OTHERS THEN
63262 l_acc_rev_flag := 'N';
63263 END;
63264 --
63265 IF (l_acc_rev_flag = 'Y') THEN
63266
63267 -- 4645092 ------------------------------------------------------------------------------
63268 -- To allow MPA report to determine if it should generate report process
63269 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
63270 ------------------------------------------------------------------------------------------
63271
63272 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
63273 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
63274 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
63275 -- call ADRs
63276 -- Bug 4922099
63277 --
63278 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
63279 (NVL(l_actual_upg_option, 'N') = 'O') OR
63280 (NVL(l_enc_upg_option, 'N') = 'O')
63281 )
63282 THEN
63283 NULL;
63284 --
63285 --
63286
63287 l_ccid := AcctDerRule_4(
63288 p_application_id => p_application_id
63289 , p_ae_header_id => l_ae_header_id
63290 , p_source_4 => p_source_4
63291 , x_transaction_coa_id => l_adr_transaction_coa_id
63292 , x_accounting_coa_id => l_adr_accounting_coa_id
63293 , x_value_type_code => l_adr_value_type_code
63294 , p_side => 'NA'
63295 );
63296
63297 xla_ae_lines_pkg.set_ccid(
63298 p_code_combination_id => l_ccid
63299 , p_value_type_code => l_adr_value_type_code
63300 , p_transaction_coa_id => l_adr_transaction_coa_id
63301 , p_accounting_coa_id => l_adr_accounting_coa_id
63302 , p_adr_code => 'CST_DEFAULT'
63303 , p_adr_type_code => 'S'
63304 , p_component_type => l_component_type
63305 , p_component_code => l_component_code
63306 , p_component_type_code => l_component_type_code
63307 , p_component_appl_id => l_component_appl_id
63308 , p_amb_context_code => l_amb_context_code
63309 , p_side => 'NA'
63310 );
63311
63312
63313 --
63314 --
63315 END IF;
63316
63317 --
63318 -- Update the line information that should be overwritten
63319 --
63320 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
63321 p_header_num => 1);
63322 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
63323
63324 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
63325
63326 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
63327 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
63328 END IF;
63329
63330 --
63331 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
63332 --
63333 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
63334 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
63335 ELSE
63336 ---------------------------------------------------------------------------------------------------
63337 -- 4262811a Switch Sign
63338 ---------------------------------------------------------------------------------------------------
63339 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
63340 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
63341 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
63342 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
63343 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
63344 -- 5132302
63345 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
63346 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
63347
63348 END IF;
63349
63350 -- 4955764
63351 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
63352 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
63353
63354
63355 XLA_AE_LINES_PKG.ValidateCurrentLine;
63356 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
63357
63358 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
63359 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
63360 ,p_balance_type_code => l_balance_type_code);
63361
63362 END IF;
63363
63364 -----------------------------------------------------------------------------------------
63365 -- 4262811 Multiperiod Accounting
63366 -----------------------------------------------------------------------------------------
63367 -- No MPA option is assigned.
63368
63369
63370 END IF;
63371 END IF;
63372 --
63373
63374 --
63375 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
63376 trace
63377 (p_msg => 'END of AcctLineType_116'
63378 ,p_level => C_LEVEL_PROCEDURE
63379 ,p_module => l_log_module);
63380 END IF;
63381 --
63382 EXCEPTION
63383 WHEN xla_exceptions_pkg.application_exception THEN
63384 RAISE;
63385 WHEN OTHERS THEN
63386 xla_exceptions_pkg.raise_message
63387 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_116');
63388 END AcctLineType_116;
63389 --
63390
63391 ---------------------------------------
63392 --
63393 -- PRIVATE FUNCTION
63394 -- AcctLineType_117
63395 --
63396 ---------------------------------------
63397 PROCEDURE AcctLineType_117 (
63398 p_application_id IN NUMBER
63399 ,p_event_id IN NUMBER
63400 ,p_calculate_acctd_flag IN VARCHAR2
63401 ,p_calculate_g_l_flag IN VARCHAR2
63402 ,p_actual_flag IN OUT VARCHAR2
63403 ,p_balance_type_code OUT VARCHAR2
63404 ,p_gain_or_loss_ref OUT VARCHAR2
63405
63406 --Cost Management Default Account
63407 , p_source_4 IN NUMBER
63408 --DISTRIBUTION_IDENTIFIER
63409 , p_source_11 IN NUMBER
63410 --Distribution Type
63411 , p_source_12 IN VARCHAR2
63412 , p_source_12_meaning IN VARCHAR2
63413 --Entered Currency Code
63414 , p_source_15 IN VARCHAR2
63415 --Entered Amount
63416 , p_source_18 IN NUMBER
63417 --Currency Conversion Date
63418 , p_source_19 IN DATE
63419 --Currency Conversion Rate
63420 , p_source_20 IN NUMBER
63421 --Currency Conversion Type
63422 , p_source_21 IN VARCHAR2
63423 --Accounted Amount
63424 , p_source_22 IN NUMBER
63425 --Accounting Line Type
63426 , p_source_24 IN NUMBER
63427 )
63428 IS
63429
63430 l_component_type VARCHAR2(80);
63431 l_component_code VARCHAR2(30);
63432 l_component_type_code VARCHAR2(1);
63433 l_component_appl_id INTEGER;
63434 l_amb_context_code VARCHAR2(30);
63435 l_entity_code VARCHAR2(30);
63436 l_event_class_code VARCHAR2(30);
63437 l_ae_header_id NUMBER;
63438 l_event_type_code VARCHAR2(30);
63439 l_line_definition_code VARCHAR2(30);
63440 l_line_definition_owner_code VARCHAR2(1);
63441 --
63442 -- adr variables
63443 l_segment VARCHAR2(30);
63444 l_ccid NUMBER;
63445 l_adr_transaction_coa_id NUMBER;
63446 l_adr_accounting_coa_id NUMBER;
63447 l_adr_flexfield_segment_code VARCHAR2(30);
63448 l_adr_flex_value_set_id NUMBER;
63449 l_adr_value_type_code VARCHAR2(30);
63450 l_adr_value_combination_id NUMBER;
63451 l_adr_value_segment_code VARCHAR2(30);
63452
63453 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
63454 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
63455 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
63456 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
63457
63458 -- 4262811 Variables ------------------------------------------------------------------------------------------
63459 l_entered_amt_idx NUMBER;
63460 l_accted_amt_idx NUMBER;
63461 l_acc_rev_flag VARCHAR2(1);
63462 l_accrual_line_num NUMBER;
63463 l_tmp_amt NUMBER;
63464 l_acc_rev_natural_side_code VARCHAR2(1);
63465
63466 l_num_entries NUMBER;
63467 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
63468 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
63469 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
63470 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
63471 l_recog_line_1 NUMBER;
63472 l_recog_line_2 NUMBER;
63473
63474 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
63475 l_bflow_applied_to_amt NUMBER; -- 5132302
63476 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
63477
63478 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
63479
63480 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
63481 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
63482
63483 ---------------------------------------------------------------------------------------------------------------
63484
63485
63486 --
63487 -- bulk performance
63488 --
63489 l_balance_type_code VARCHAR2(1);
63490 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
63491 l_log_module VARCHAR2(240);
63492
63493 --
63494 -- Upgrade strategy
63495 --
63496 l_actual_upg_option VARCHAR2(1);
63497 l_enc_upg_option VARCHAR2(1);
63498
63499 --
63500 BEGIN
63501 --
63502 IF g_log_enabled THEN
63503 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_117';
63504 END IF;
63505 --
63506 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
63507
63508 trace
63509 (p_msg => 'BEGIN of AcctLineType_117'
63510 ,p_level => C_LEVEL_PROCEDURE
63511 ,p_module => l_log_module);
63512
63513 END IF;
63514 --
63515 l_component_type := 'AMB_JLT';
63516 l_component_code := 'INTRANSIT_VALUATION';
63517 l_component_type_code := 'S';
63518 l_component_appl_id := 707;
63519 l_amb_context_code := 'DEFAULT';
63520 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
63521 l_event_class_code := 'USER_DEFINE';
63522 l_event_type_code := 'UFOB_RCPT_SENDER_SHIP';
63523 l_line_definition_owner_code := 'S';
63524 l_line_definition_code := 'USER_FOB_RCPT_SENDER_SHIP';
63525 --
63526 l_balance_type_code := 'A';
63527 l_segment := NULL;
63528 l_ccid := NULL;
63529 l_adr_transaction_coa_id := NULL;
63530 l_adr_accounting_coa_id := NULL;
63531 l_adr_flexfield_segment_code := NULL;
63532 l_adr_flex_value_set_id := NULL;
63533 l_adr_value_type_code := NULL;
63534 l_adr_value_combination_id := NULL;
63535 l_adr_value_segment_code := NULL;
63536
63537 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
63538 l_bflow_class_code := ''; -- 4219869 Business Flow
63539 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
63540 l_budgetary_control_flag := 'N';
63541
63542 l_bflow_applied_to_amt_idx := NULL; -- 5132302
63543 l_bflow_applied_to_amt := NULL; -- 5132302
63544 l_entered_amt_idx := NULL; -- 4262811
63545 l_accted_amt_idx := NULL; -- 4262811
63546 l_acc_rev_flag := NULL; -- 4262811
63547 l_accrual_line_num := NULL; -- 4262811
63548 l_tmp_amt := NULL; -- 4262811
63549 --
63550
63551 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
63552 l_balance_type_code <> 'B' THEN
63553 IF NVL(p_source_24,9E125) = 14
63554 THEN
63555
63556 --
63557 XLA_AE_LINES_PKG.SetNewLine;
63558
63559 p_balance_type_code := l_balance_type_code;
63560 -- set the flag so later we will know whether the gain loss line needs to be created
63561
63562 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
63563 p_actual_flag :='A';
63564 END IF;
63565
63566 --
63567 -- bulk performance
63568 --
63569 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
63570 p_header_num => 0); -- 4262811
63571 --
63572 -- set accounting line options
63573 --
63574 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
63575 p_natural_side_code => 'D'
63576 , p_gain_or_loss_flag => 'N'
63577 , p_gl_transfer_mode_code => 'S'
63578 , p_acct_entry_type_code => 'A'
63579 , p_switch_side_flag => 'Y'
63580 , p_merge_duplicate_code => 'N'
63581 );
63582 --
63583 l_acc_rev_natural_side_code := 'C'; -- 4262811
63584 --
63585 --
63586 -- set accounting line type info
63587 --
63588 xla_ae_lines_pkg.SetAcctLineType
63589 (p_component_type => l_component_type
63590 ,p_event_type_code => l_event_type_code
63591 ,p_line_definition_owner_code => l_line_definition_owner_code
63592 ,p_line_definition_code => l_line_definition_code
63593 ,p_accounting_line_code => l_component_code
63594 ,p_accounting_line_type_code => l_component_type_code
63595 ,p_accounting_line_appl_id => l_component_appl_id
63596 ,p_amb_context_code => l_amb_context_code
63597 ,p_entity_code => l_entity_code
63598 ,p_event_class_code => l_event_class_code);
63599 --
63600 -- set accounting class
63601 --
63602 xla_ae_lines_pkg.SetAcctClass(
63603 p_accounting_class_code => 'INTRANSIT_VALUATION'
63604 , p_ae_header_id => l_ae_header_id
63605 );
63606
63607 --
63608 -- set rounding class
63609 --
63610 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
63611 'INTRANSIT_VALUATION';
63612
63613 --
63614 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
63615 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
63616 --
63617 -- bulk performance
63618 --
63619 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
63620
63621 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
63622 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
63623
63624 -- 4955764
63625 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
63626 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
63627
63628 -- 4458381 Public Sector Enh
63629
63630 --
63631 -- set accounting attributes for the line type
63632 --
63633 l_entered_amt_idx := 3;
63634 l_accted_amt_idx := 8;
63635 l_bflow_applied_to_amt_idx := NULL; -- 5132302
63636 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
63637 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
63638 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
63639 l_rec_acct_attrs.array_char_value(2) := p_source_12;
63640 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
63641 l_rec_acct_attrs.array_num_value(3) := p_source_18;
63642 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
63643 l_rec_acct_attrs.array_char_value(4) := p_source_15;
63644 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
63645 l_rec_acct_attrs.array_date_value(5) := p_source_19;
63646 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
63647 l_rec_acct_attrs.array_num_value(6) := p_source_20;
63648 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
63649 l_rec_acct_attrs.array_char_value(7) := p_source_21;
63650 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
63651 l_rec_acct_attrs.array_num_value(8) := p_source_22;
63652
63653 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
63654 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
63655
63656 ---------------------------------------------------------------------------------------------------------------
63657 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
63658 ---------------------------------------------------------------------------------------------------------------
63659 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
63660
63661 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
63662 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
63663
63664 IF xla_accounting_cache_pkg.GetValueChar
63665 (p_source_code => 'LEDGER_CATEGORY_CODE'
63666 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
63667 AND l_bflow_method_code = 'PRIOR_ENTRY'
63668 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
63669 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
63670 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
63671 )
63672 THEN
63673 xla_ae_lines_pkg.BflowUpgEntry
63674 (p_business_method_code => l_bflow_method_code
63675 ,p_business_class_code => l_bflow_class_code
63676 ,p_balance_type => l_balance_type_code);
63677 ELSE
63678 NULL;
63679 -- No business flow processing for business flow method of NONE.
63680 END IF;
63681
63682 --
63683 -- call analytical criteria
63684 --
63685
63686 --
63687 -- call description
63688 --
63689 -- No description or it is inherited.
63690 --
63691 -- call ADRs
63692 -- Bug 4922099
63693 --
63694 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
63695 (NVL(l_actual_upg_option, 'N') = 'O') OR
63696 (NVL(l_enc_upg_option, 'N') = 'O')
63697 )
63698 THEN
63699 NULL;
63700 --
63701 --
63702
63703 l_ccid := AcctDerRule_4(
63704 p_application_id => p_application_id
63705 , p_ae_header_id => l_ae_header_id
63706 , p_source_4 => p_source_4
63707 , x_transaction_coa_id => l_adr_transaction_coa_id
63708 , x_accounting_coa_id => l_adr_accounting_coa_id
63709 , x_value_type_code => l_adr_value_type_code
63710 , p_side => 'NA'
63711 );
63712
63713 xla_ae_lines_pkg.set_ccid(
63714 p_code_combination_id => l_ccid
63715 , p_value_type_code => l_adr_value_type_code
63716 , p_transaction_coa_id => l_adr_transaction_coa_id
63717 , p_accounting_coa_id => l_adr_accounting_coa_id
63718 , p_adr_code => 'CST_DEFAULT'
63719 , p_adr_type_code => 'S'
63720 , p_component_type => l_component_type
63721 , p_component_code => l_component_code
63722 , p_component_type_code => l_component_type_code
63723 , p_component_appl_id => l_component_appl_id
63724 , p_amb_context_code => l_amb_context_code
63725 , p_side => 'NA'
63726 );
63727
63728
63729 --
63730 --
63731 END IF;
63732 --
63733 -- Bug 4922099
63734 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
63735 (NVL(l_enc_upg_option, 'N') = 'O')
63736 ) AND
63737 (l_bflow_method_code = 'PRIOR_ENTRY')
63738 )
63739 THEN
63740 IF
63741 --
63742 1 = 2
63743 --
63744 THEN
63745 xla_accounting_err_pkg.build_message
63746 (p_appli_s_name => 'XLA'
63747 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
63748 ,p_token_1 => 'LINE_NUMBER'
63749 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
63750 ,p_token_2 => 'LINE_TYPE_NAME'
63751 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
63752 l_component_type
63753 ,l_component_code
63754 ,l_component_type_code
63755 ,l_component_appl_id
63756 ,l_amb_context_code
63757 ,l_entity_code
63758 ,l_event_class_code
63759 )
63760 ,p_token_3 => 'OWNER'
63761 ,p_value_3 => xla_lookups_pkg.get_meaning(
63762 p_lookup_type => 'XLA_OWNER_TYPE'
63763 ,p_lookup_code => l_component_type_code
63764 )
63765 ,p_token_4 => 'PRODUCT_NAME'
63766 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
63767 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
63768 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
63769 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
63770 ,p_ae_header_id => NULL
63771 );
63772
63773 IF (C_LEVEL_ERROR>= g_log_level) THEN
63774 trace
63775 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
63776 ,p_level => C_LEVEL_ERROR
63777 ,p_module => l_log_module);
63778 END IF;
63779 END IF;
63780 END IF;
63781 --
63782 --
63783 ------------------------------------------------------------------------------------------------
63784 -- 4219869 Business Flow
63785 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
63786 -- Prior Entry. Currently, the following code is always generated.
63787 ------------------------------------------------------------------------------------------------
63788 XLA_AE_LINES_PKG.ValidateCurrentLine;
63789
63790 ------------------------------------------------------------------------------------
63791 -- 4219869 Business Flow
63792 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
63793 ------------------------------------------------------------------------------------
63794 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
63795
63796 ----------------------------------------------------------------------------------
63797 -- 4219869 Business Flow
63798 -- Update journal entry status -- Need to generate this within IF <condition>
63799 ----------------------------------------------------------------------------------
63800 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
63801 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
63802 ,p_balance_type_code => l_balance_type_code
63803 );
63804
63805 -------------------------------------------------------------------------------------------
63806 -- 4262811 - Generate the Accrual Reversal lines
63807 -------------------------------------------------------------------------------------------
63808 BEGIN
63809 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
63810 (g_array_event(p_event_id).array_value_num('header_index'));
63811 IF l_acc_rev_flag IS NULL THEN
63812 l_acc_rev_flag := 'N';
63813 END IF;
63814 EXCEPTION
63815 WHEN OTHERS THEN
63816 l_acc_rev_flag := 'N';
63817 END;
63818 --
63819 IF (l_acc_rev_flag = 'Y') THEN
63820
63821 -- 4645092 ------------------------------------------------------------------------------
63822 -- To allow MPA report to determine if it should generate report process
63823 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
63824 ------------------------------------------------------------------------------------------
63825
63826 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
63827 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
63828 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
63829 -- call ADRs
63830 -- Bug 4922099
63831 --
63832 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
63833 (NVL(l_actual_upg_option, 'N') = 'O') OR
63834 (NVL(l_enc_upg_option, 'N') = 'O')
63835 )
63836 THEN
63837 NULL;
63838 --
63839 --
63840
63841 l_ccid := AcctDerRule_4(
63842 p_application_id => p_application_id
63843 , p_ae_header_id => l_ae_header_id
63844 , p_source_4 => p_source_4
63845 , x_transaction_coa_id => l_adr_transaction_coa_id
63846 , x_accounting_coa_id => l_adr_accounting_coa_id
63847 , x_value_type_code => l_adr_value_type_code
63848 , p_side => 'NA'
63849 );
63850
63851 xla_ae_lines_pkg.set_ccid(
63852 p_code_combination_id => l_ccid
63853 , p_value_type_code => l_adr_value_type_code
63854 , p_transaction_coa_id => l_adr_transaction_coa_id
63855 , p_accounting_coa_id => l_adr_accounting_coa_id
63856 , p_adr_code => 'CST_DEFAULT'
63857 , p_adr_type_code => 'S'
63858 , p_component_type => l_component_type
63859 , p_component_code => l_component_code
63860 , p_component_type_code => l_component_type_code
63861 , p_component_appl_id => l_component_appl_id
63862 , p_amb_context_code => l_amb_context_code
63863 , p_side => 'NA'
63864 );
63865
63866
63867 --
63868 --
63869 END IF;
63870
63871 --
63872 -- Update the line information that should be overwritten
63873 --
63874 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
63875 p_header_num => 1);
63876 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
63877
63878 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
63879
63880 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
63881 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
63882 END IF;
63883
63884 --
63885 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
63886 --
63887 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
63888 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
63889 ELSE
63890 ---------------------------------------------------------------------------------------------------
63891 -- 4262811a Switch Sign
63892 ---------------------------------------------------------------------------------------------------
63893 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
63894 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
63895 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
63896 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
63897 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
63898 -- 5132302
63899 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
63900 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
63901
63902 END IF;
63903
63904 -- 4955764
63905 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
63906 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
63907
63908
63909 XLA_AE_LINES_PKG.ValidateCurrentLine;
63910 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
63911
63912 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
63913 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
63914 ,p_balance_type_code => l_balance_type_code);
63915
63916 END IF;
63917
63918 -----------------------------------------------------------------------------------------
63919 -- 4262811 Multiperiod Accounting
63920 -----------------------------------------------------------------------------------------
63921 -- No MPA option is assigned.
63922
63923
63924 END IF;
63925 END IF;
63926 --
63927
63928 --
63929 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
63930 trace
63931 (p_msg => 'END of AcctLineType_117'
63932 ,p_level => C_LEVEL_PROCEDURE
63933 ,p_module => l_log_module);
63934 END IF;
63935 --
63936 EXCEPTION
63937 WHEN xla_exceptions_pkg.application_exception THEN
63938 RAISE;
63939 WHEN OTHERS THEN
63940 xla_exceptions_pkg.raise_message
63941 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_117');
63942 END AcctLineType_117;
63943 --
63944
63945 ---------------------------------------
63946 --
63947 -- PRIVATE FUNCTION
63948 -- AcctLineType_118
63949 --
63950 ---------------------------------------
63951 PROCEDURE AcctLineType_118 (
63952 p_application_id IN NUMBER
63953 ,p_event_id IN NUMBER
63954 ,p_calculate_acctd_flag IN VARCHAR2
63955 ,p_calculate_g_l_flag IN VARCHAR2
63956 ,p_actual_flag IN OUT VARCHAR2
63957 ,p_balance_type_code OUT VARCHAR2
63958 ,p_gain_or_loss_ref OUT VARCHAR2
63959
63960 --Cost Management Default Account
63961 , p_source_4 IN NUMBER
63962 --DISTRIBUTION_IDENTIFIER
63963 , p_source_11 IN NUMBER
63964 --Distribution Type
63965 , p_source_12 IN VARCHAR2
63966 , p_source_12_meaning IN VARCHAR2
63967 --Entered Currency Code
63968 , p_source_15 IN VARCHAR2
63969 --Entered Amount
63970 , p_source_18 IN NUMBER
63971 --Currency Conversion Date
63972 , p_source_19 IN DATE
63973 --Currency Conversion Rate
63974 , p_source_20 IN NUMBER
63975 --Currency Conversion Type
63976 , p_source_21 IN VARCHAR2
63977 --Accounted Amount
63978 , p_source_22 IN NUMBER
63979 --Accounting Line Type
63980 , p_source_24 IN NUMBER
63981 )
63982 IS
63983
63984 l_component_type VARCHAR2(80);
63985 l_component_code VARCHAR2(30);
63986 l_component_type_code VARCHAR2(1);
63987 l_component_appl_id INTEGER;
63988 l_amb_context_code VARCHAR2(30);
63989 l_entity_code VARCHAR2(30);
63990 l_event_class_code VARCHAR2(30);
63991 l_ae_header_id NUMBER;
63992 l_event_type_code VARCHAR2(30);
63993 l_line_definition_code VARCHAR2(30);
63994 l_line_definition_owner_code VARCHAR2(1);
63995 --
63996 -- adr variables
63997 l_segment VARCHAR2(30);
63998 l_ccid NUMBER;
63999 l_adr_transaction_coa_id NUMBER;
64000 l_adr_accounting_coa_id NUMBER;
64001 l_adr_flexfield_segment_code VARCHAR2(30);
64002 l_adr_flex_value_set_id NUMBER;
64003 l_adr_value_type_code VARCHAR2(30);
64004 l_adr_value_combination_id NUMBER;
64005 l_adr_value_segment_code VARCHAR2(30);
64006
64007 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
64008 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
64009 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
64010 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
64011
64012 -- 4262811 Variables ------------------------------------------------------------------------------------------
64013 l_entered_amt_idx NUMBER;
64014 l_accted_amt_idx NUMBER;
64015 l_acc_rev_flag VARCHAR2(1);
64016 l_accrual_line_num NUMBER;
64017 l_tmp_amt NUMBER;
64018 l_acc_rev_natural_side_code VARCHAR2(1);
64019
64020 l_num_entries NUMBER;
64021 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
64022 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
64023 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
64024 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
64025 l_recog_line_1 NUMBER;
64026 l_recog_line_2 NUMBER;
64027
64028 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
64029 l_bflow_applied_to_amt NUMBER; -- 5132302
64030 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
64031
64032 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
64033
64034 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
64035 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
64036
64037 ---------------------------------------------------------------------------------------------------------------
64038
64039
64040 --
64041 -- bulk performance
64042 --
64043 l_balance_type_code VARCHAR2(1);
64044 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
64045 l_log_module VARCHAR2(240);
64046
64047 --
64048 -- Upgrade strategy
64049 --
64050 l_actual_upg_option VARCHAR2(1);
64051 l_enc_upg_option VARCHAR2(1);
64052
64053 --
64054 BEGIN
64055 --
64056 IF g_log_enabled THEN
64057 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_118';
64058 END IF;
64059 --
64060 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
64061
64062 trace
64063 (p_msg => 'BEGIN of AcctLineType_118'
64064 ,p_level => C_LEVEL_PROCEDURE
64065 ,p_module => l_log_module);
64066
64067 END IF;
64068 --
64069 l_component_type := 'AMB_JLT';
64070 l_component_code := 'INTRANSIT_VALUATION';
64071 l_component_type_code := 'S';
64072 l_component_appl_id := 707;
64073 l_amb_context_code := 'DEFAULT';
64074 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
64075 l_event_class_code := 'USER_DEFINE';
64076 l_event_type_code := 'UAVG_COST_UPD';
64077 l_line_definition_owner_code := 'S';
64078 l_line_definition_code := 'USER_COST_UPD';
64079 --
64080 l_balance_type_code := 'A';
64081 l_segment := NULL;
64082 l_ccid := NULL;
64083 l_adr_transaction_coa_id := NULL;
64084 l_adr_accounting_coa_id := NULL;
64085 l_adr_flexfield_segment_code := NULL;
64086 l_adr_flex_value_set_id := NULL;
64087 l_adr_value_type_code := NULL;
64088 l_adr_value_combination_id := NULL;
64089 l_adr_value_segment_code := NULL;
64090
64091 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
64092 l_bflow_class_code := ''; -- 4219869 Business Flow
64093 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
64094 l_budgetary_control_flag := 'N';
64095
64096 l_bflow_applied_to_amt_idx := NULL; -- 5132302
64097 l_bflow_applied_to_amt := NULL; -- 5132302
64098 l_entered_amt_idx := NULL; -- 4262811
64099 l_accted_amt_idx := NULL; -- 4262811
64100 l_acc_rev_flag := NULL; -- 4262811
64101 l_accrual_line_num := NULL; -- 4262811
64102 l_tmp_amt := NULL; -- 4262811
64103 --
64104
64105 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
64106 l_balance_type_code <> 'B' THEN
64107 IF NVL(p_source_24,9E125) = 14
64108 THEN
64109
64110 --
64111 XLA_AE_LINES_PKG.SetNewLine;
64112
64113 p_balance_type_code := l_balance_type_code;
64114 -- set the flag so later we will know whether the gain loss line needs to be created
64115
64116 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
64117 p_actual_flag :='A';
64118 END IF;
64119
64120 --
64121 -- bulk performance
64122 --
64123 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
64124 p_header_num => 0); -- 4262811
64125 --
64126 -- set accounting line options
64127 --
64128 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
64129 p_natural_side_code => 'D'
64130 , p_gain_or_loss_flag => 'N'
64131 , p_gl_transfer_mode_code => 'S'
64132 , p_acct_entry_type_code => 'A'
64133 , p_switch_side_flag => 'Y'
64134 , p_merge_duplicate_code => 'N'
64135 );
64136 --
64137 l_acc_rev_natural_side_code := 'C'; -- 4262811
64138 --
64139 --
64140 -- set accounting line type info
64141 --
64142 xla_ae_lines_pkg.SetAcctLineType
64143 (p_component_type => l_component_type
64144 ,p_event_type_code => l_event_type_code
64145 ,p_line_definition_owner_code => l_line_definition_owner_code
64146 ,p_line_definition_code => l_line_definition_code
64147 ,p_accounting_line_code => l_component_code
64148 ,p_accounting_line_type_code => l_component_type_code
64149 ,p_accounting_line_appl_id => l_component_appl_id
64150 ,p_amb_context_code => l_amb_context_code
64151 ,p_entity_code => l_entity_code
64152 ,p_event_class_code => l_event_class_code);
64153 --
64154 -- set accounting class
64155 --
64156 xla_ae_lines_pkg.SetAcctClass(
64157 p_accounting_class_code => 'INTRANSIT_VALUATION'
64158 , p_ae_header_id => l_ae_header_id
64159 );
64160
64161 --
64162 -- set rounding class
64163 --
64164 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
64165 'INTRANSIT_VALUATION';
64166
64167 --
64168 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
64169 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
64170 --
64171 -- bulk performance
64172 --
64173 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
64174
64175 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
64176 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
64177
64178 -- 4955764
64179 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
64180 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
64181
64182 -- 4458381 Public Sector Enh
64183
64184 --
64185 -- set accounting attributes for the line type
64186 --
64187 l_entered_amt_idx := 3;
64188 l_accted_amt_idx := 8;
64189 l_bflow_applied_to_amt_idx := NULL; -- 5132302
64190 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
64191 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
64192 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
64193 l_rec_acct_attrs.array_char_value(2) := p_source_12;
64194 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
64195 l_rec_acct_attrs.array_num_value(3) := p_source_18;
64196 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
64197 l_rec_acct_attrs.array_char_value(4) := p_source_15;
64198 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
64199 l_rec_acct_attrs.array_date_value(5) := p_source_19;
64200 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
64201 l_rec_acct_attrs.array_num_value(6) := p_source_20;
64202 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
64203 l_rec_acct_attrs.array_char_value(7) := p_source_21;
64204 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
64205 l_rec_acct_attrs.array_num_value(8) := p_source_22;
64206
64207 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
64208 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
64209
64210 ---------------------------------------------------------------------------------------------------------------
64211 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
64212 ---------------------------------------------------------------------------------------------------------------
64213 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
64214
64215 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
64216 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
64217
64218 IF xla_accounting_cache_pkg.GetValueChar
64219 (p_source_code => 'LEDGER_CATEGORY_CODE'
64220 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
64221 AND l_bflow_method_code = 'PRIOR_ENTRY'
64222 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
64223 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
64224 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
64225 )
64226 THEN
64227 xla_ae_lines_pkg.BflowUpgEntry
64228 (p_business_method_code => l_bflow_method_code
64229 ,p_business_class_code => l_bflow_class_code
64230 ,p_balance_type => l_balance_type_code);
64231 ELSE
64232 NULL;
64233 -- No business flow processing for business flow method of NONE.
64234 END IF;
64235
64236 --
64237 -- call analytical criteria
64238 --
64239
64240 --
64241 -- call description
64242 --
64243 -- No description or it is inherited.
64244 --
64245 -- call ADRs
64246 -- Bug 4922099
64247 --
64248 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
64249 (NVL(l_actual_upg_option, 'N') = 'O') OR
64250 (NVL(l_enc_upg_option, 'N') = 'O')
64251 )
64252 THEN
64253 NULL;
64254 --
64255 --
64256
64257 l_ccid := AcctDerRule_4(
64258 p_application_id => p_application_id
64259 , p_ae_header_id => l_ae_header_id
64260 , p_source_4 => p_source_4
64261 , x_transaction_coa_id => l_adr_transaction_coa_id
64262 , x_accounting_coa_id => l_adr_accounting_coa_id
64263 , x_value_type_code => l_adr_value_type_code
64264 , p_side => 'NA'
64265 );
64266
64267 xla_ae_lines_pkg.set_ccid(
64268 p_code_combination_id => l_ccid
64269 , p_value_type_code => l_adr_value_type_code
64270 , p_transaction_coa_id => l_adr_transaction_coa_id
64271 , p_accounting_coa_id => l_adr_accounting_coa_id
64272 , p_adr_code => 'CST_DEFAULT'
64273 , p_adr_type_code => 'S'
64274 , p_component_type => l_component_type
64275 , p_component_code => l_component_code
64276 , p_component_type_code => l_component_type_code
64277 , p_component_appl_id => l_component_appl_id
64278 , p_amb_context_code => l_amb_context_code
64279 , p_side => 'NA'
64280 );
64281
64282
64283 --
64284 --
64285 END IF;
64286 --
64287 -- Bug 4922099
64288 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
64289 (NVL(l_enc_upg_option, 'N') = 'O')
64290 ) AND
64291 (l_bflow_method_code = 'PRIOR_ENTRY')
64292 )
64293 THEN
64294 IF
64295 --
64296 1 = 2
64297 --
64298 THEN
64299 xla_accounting_err_pkg.build_message
64300 (p_appli_s_name => 'XLA'
64301 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
64302 ,p_token_1 => 'LINE_NUMBER'
64303 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
64304 ,p_token_2 => 'LINE_TYPE_NAME'
64305 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
64306 l_component_type
64307 ,l_component_code
64308 ,l_component_type_code
64309 ,l_component_appl_id
64310 ,l_amb_context_code
64311 ,l_entity_code
64312 ,l_event_class_code
64313 )
64314 ,p_token_3 => 'OWNER'
64315 ,p_value_3 => xla_lookups_pkg.get_meaning(
64316 p_lookup_type => 'XLA_OWNER_TYPE'
64317 ,p_lookup_code => l_component_type_code
64318 )
64319 ,p_token_4 => 'PRODUCT_NAME'
64320 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
64321 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
64322 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
64323 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
64324 ,p_ae_header_id => NULL
64325 );
64326
64327 IF (C_LEVEL_ERROR>= g_log_level) THEN
64328 trace
64329 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
64330 ,p_level => C_LEVEL_ERROR
64331 ,p_module => l_log_module);
64332 END IF;
64333 END IF;
64334 END IF;
64335 --
64336 --
64337 ------------------------------------------------------------------------------------------------
64338 -- 4219869 Business Flow
64339 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
64340 -- Prior Entry. Currently, the following code is always generated.
64341 ------------------------------------------------------------------------------------------------
64342 XLA_AE_LINES_PKG.ValidateCurrentLine;
64343
64344 ------------------------------------------------------------------------------------
64345 -- 4219869 Business Flow
64346 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
64347 ------------------------------------------------------------------------------------
64348 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
64349
64350 ----------------------------------------------------------------------------------
64351 -- 4219869 Business Flow
64352 -- Update journal entry status -- Need to generate this within IF <condition>
64353 ----------------------------------------------------------------------------------
64354 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
64355 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
64356 ,p_balance_type_code => l_balance_type_code
64357 );
64358
64359 -------------------------------------------------------------------------------------------
64360 -- 4262811 - Generate the Accrual Reversal lines
64361 -------------------------------------------------------------------------------------------
64362 BEGIN
64363 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
64364 (g_array_event(p_event_id).array_value_num('header_index'));
64365 IF l_acc_rev_flag IS NULL THEN
64366 l_acc_rev_flag := 'N';
64367 END IF;
64368 EXCEPTION
64369 WHEN OTHERS THEN
64370 l_acc_rev_flag := 'N';
64371 END;
64372 --
64373 IF (l_acc_rev_flag = 'Y') THEN
64374
64375 -- 4645092 ------------------------------------------------------------------------------
64376 -- To allow MPA report to determine if it should generate report process
64377 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
64378 ------------------------------------------------------------------------------------------
64379
64380 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
64381 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
64382 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
64383 -- call ADRs
64384 -- Bug 4922099
64385 --
64386 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
64387 (NVL(l_actual_upg_option, 'N') = 'O') OR
64388 (NVL(l_enc_upg_option, 'N') = 'O')
64389 )
64390 THEN
64391 NULL;
64392 --
64393 --
64394
64395 l_ccid := AcctDerRule_4(
64396 p_application_id => p_application_id
64397 , p_ae_header_id => l_ae_header_id
64398 , p_source_4 => p_source_4
64399 , x_transaction_coa_id => l_adr_transaction_coa_id
64400 , x_accounting_coa_id => l_adr_accounting_coa_id
64401 , x_value_type_code => l_adr_value_type_code
64402 , p_side => 'NA'
64403 );
64404
64405 xla_ae_lines_pkg.set_ccid(
64406 p_code_combination_id => l_ccid
64407 , p_value_type_code => l_adr_value_type_code
64408 , p_transaction_coa_id => l_adr_transaction_coa_id
64409 , p_accounting_coa_id => l_adr_accounting_coa_id
64410 , p_adr_code => 'CST_DEFAULT'
64411 , p_adr_type_code => 'S'
64412 , p_component_type => l_component_type
64413 , p_component_code => l_component_code
64414 , p_component_type_code => l_component_type_code
64415 , p_component_appl_id => l_component_appl_id
64416 , p_amb_context_code => l_amb_context_code
64417 , p_side => 'NA'
64418 );
64419
64420
64421 --
64422 --
64423 END IF;
64424
64425 --
64426 -- Update the line information that should be overwritten
64427 --
64428 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
64429 p_header_num => 1);
64430 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
64431
64432 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
64433
64434 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
64435 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
64436 END IF;
64437
64438 --
64439 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
64440 --
64441 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
64442 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
64443 ELSE
64444 ---------------------------------------------------------------------------------------------------
64445 -- 4262811a Switch Sign
64446 ---------------------------------------------------------------------------------------------------
64447 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
64448 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
64449 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
64450 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
64451 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
64452 -- 5132302
64453 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
64454 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
64455
64456 END IF;
64457
64458 -- 4955764
64459 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
64460 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
64461
64462
64463 XLA_AE_LINES_PKG.ValidateCurrentLine;
64464 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
64465
64466 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
64467 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
64468 ,p_balance_type_code => l_balance_type_code);
64469
64470 END IF;
64471
64472 -----------------------------------------------------------------------------------------
64473 -- 4262811 Multiperiod Accounting
64474 -----------------------------------------------------------------------------------------
64475 -- No MPA option is assigned.
64476
64477
64478 END IF;
64479 END IF;
64480 --
64481
64482 --
64483 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
64484 trace
64485 (p_msg => 'END of AcctLineType_118'
64486 ,p_level => C_LEVEL_PROCEDURE
64487 ,p_module => l_log_module);
64488 END IF;
64489 --
64490 EXCEPTION
64491 WHEN xla_exceptions_pkg.application_exception THEN
64492 RAISE;
64493 WHEN OTHERS THEN
64494 xla_exceptions_pkg.raise_message
64495 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_118');
64496 END AcctLineType_118;
64497 --
64498
64499 ---------------------------------------
64500 --
64501 -- PRIVATE FUNCTION
64502 -- AcctLineType_119
64503 --
64504 ---------------------------------------
64505 PROCEDURE AcctLineType_119 (
64506 p_application_id IN NUMBER
64507 ,p_event_id IN NUMBER
64508 ,p_calculate_acctd_flag IN VARCHAR2
64509 ,p_calculate_g_l_flag IN VARCHAR2
64510 ,p_actual_flag IN OUT VARCHAR2
64511 ,p_balance_type_code OUT VARCHAR2
64512 ,p_gain_or_loss_ref OUT VARCHAR2
64513
64514 --Cost Management Default Account
64515 , p_source_4 IN NUMBER
64516 --Applied to Application ID
64517 , p_source_6 IN NUMBER
64518 --Applied to Distribution Link Type
64519 , p_source_7 IN VARCHAR2
64520 --Applied to Entity Code
64521 , p_source_8 IN VARCHAR2
64522 --DISTRIBUTION_IDENTIFIER
64523 , p_source_11 IN NUMBER
64524 --Distribution Type
64525 , p_source_12 IN VARCHAR2
64526 , p_source_12_meaning IN VARCHAR2
64527 --Encumbrance Reversal Amount Entered
64528 , p_source_14 IN NUMBER
64529 --Entered Currency Code
64530 , p_source_15 IN VARCHAR2
64531 --Transaction Encumbrance Reversal Amount
64532 , p_source_16 IN NUMBER
64533 --Entered Amount
64534 , p_source_18 IN NUMBER
64535 --Currency Conversion Date
64536 , p_source_19 IN DATE
64537 --Currency Conversion Rate
64538 , p_source_20 IN NUMBER
64539 --Currency Conversion Type
64540 , p_source_21 IN VARCHAR2
64541 --Accounted Amount
64542 , p_source_22 IN NUMBER
64543 --Accounting Line Type
64544 , p_source_24 IN NUMBER
64545 --Costing Encumbrance Upgrade Option
64546 , p_source_27 IN VARCHAR2
64547 --TXN_PO_DISTRIBUTION_ID
64548 , p_source_28 IN NUMBER
64549 --TXN_PO_HEADER_ID
64550 , p_source_29 IN NUMBER
64551 --Requisition Budget Account
64552 , p_source_30 IN NUMBER
64553 --Requisition Encumbrance Type Identifier
64554 , p_source_31 IN NUMBER
64555 )
64556 IS
64557
64558 l_component_type VARCHAR2(80);
64559 l_component_code VARCHAR2(30);
64560 l_component_type_code VARCHAR2(1);
64561 l_component_appl_id INTEGER;
64562 l_amb_context_code VARCHAR2(30);
64563 l_entity_code VARCHAR2(30);
64564 l_event_class_code VARCHAR2(30);
64565 l_ae_header_id NUMBER;
64566 l_event_type_code VARCHAR2(30);
64567 l_line_definition_code VARCHAR2(30);
64568 l_line_definition_owner_code VARCHAR2(1);
64569 --
64570 -- adr variables
64571 l_segment VARCHAR2(30);
64572 l_ccid NUMBER;
64573 l_adr_transaction_coa_id NUMBER;
64574 l_adr_accounting_coa_id NUMBER;
64575 l_adr_flexfield_segment_code VARCHAR2(30);
64576 l_adr_flex_value_set_id NUMBER;
64577 l_adr_value_type_code VARCHAR2(30);
64578 l_adr_value_combination_id NUMBER;
64579 l_adr_value_segment_code VARCHAR2(30);
64580
64581 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
64582 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
64583 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
64584 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
64585
64586 -- 4262811 Variables ------------------------------------------------------------------------------------------
64587 l_entered_amt_idx NUMBER;
64588 l_accted_amt_idx NUMBER;
64589 l_acc_rev_flag VARCHAR2(1);
64590 l_accrual_line_num NUMBER;
64591 l_tmp_amt NUMBER;
64592 l_acc_rev_natural_side_code VARCHAR2(1);
64593
64594 l_num_entries NUMBER;
64595 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
64596 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
64597 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
64598 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
64599 l_recog_line_1 NUMBER;
64600 l_recog_line_2 NUMBER;
64601
64602 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
64603 l_bflow_applied_to_amt NUMBER; -- 5132302
64604 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
64605
64606 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
64607
64608 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
64609 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
64610
64611 ---------------------------------------------------------------------------------------------------------------
64612
64613
64614 --
64615 -- bulk performance
64616 --
64617 l_balance_type_code VARCHAR2(1);
64618 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
64619 l_log_module VARCHAR2(240);
64620
64621 --
64622 -- Upgrade strategy
64623 --
64624 l_actual_upg_option VARCHAR2(1);
64625 l_enc_upg_option VARCHAR2(1);
64626
64627 --
64628 BEGIN
64629 --
64630 IF g_log_enabled THEN
64631 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_119';
64632 END IF;
64633 --
64634 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
64635
64636 trace
64637 (p_msg => 'BEGIN of AcctLineType_119'
64638 ,p_level => C_LEVEL_PROCEDURE
64639 ,p_module => l_log_module);
64640
64641 END IF;
64642 --
64643 l_component_type := 'AMB_JLT';
64644 l_component_code := 'INTRANSIT_VALUATION';
64645 l_component_type_code := 'S';
64646 l_component_appl_id := 707;
64647 l_amb_context_code := 'DEFAULT';
64648 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
64649 l_event_class_code := 'FOB_SHIP_RECIPIENT_RCPT';
64650 l_event_type_code := 'FOB_SHIP_RECIPIENT_RCPT_ALL';
64651 l_line_definition_owner_code := 'S';
64652 l_line_definition_code := 'FOB_SHIP_RECIPIENT_RCPT';
64653 --
64654 l_balance_type_code := 'A';
64655 l_segment := NULL;
64656 l_ccid := NULL;
64657 l_adr_transaction_coa_id := NULL;
64658 l_adr_accounting_coa_id := NULL;
64659 l_adr_flexfield_segment_code := NULL;
64660 l_adr_flex_value_set_id := NULL;
64661 l_adr_value_type_code := NULL;
64662 l_adr_value_combination_id := NULL;
64663 l_adr_value_segment_code := NULL;
64664
64665 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
64666 l_bflow_class_code := ''; -- 4219869 Business Flow
64667 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
64668 l_budgetary_control_flag := 'N';
64669
64670 l_bflow_applied_to_amt_idx := NULL; -- 5132302
64671 l_bflow_applied_to_amt := NULL; -- 5132302
64672 l_entered_amt_idx := NULL; -- 4262811
64673 l_accted_amt_idx := NULL; -- 4262811
64674 l_acc_rev_flag := NULL; -- 4262811
64675 l_accrual_line_num := NULL; -- 4262811
64676 l_tmp_amt := NULL; -- 4262811
64677 --
64678
64679 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
64680 l_balance_type_code <> 'B' THEN
64681 IF NVL(p_source_24,9E125) = 14
64682 THEN
64683
64684 --
64685 XLA_AE_LINES_PKG.SetNewLine;
64686
64687 p_balance_type_code := l_balance_type_code;
64688 -- set the flag so later we will know whether the gain loss line needs to be created
64689
64690 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
64691 p_actual_flag :='A';
64692 END IF;
64693
64694 --
64695 -- bulk performance
64696 --
64697 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
64698 p_header_num => 0); -- 4262811
64699 --
64700 -- set accounting line options
64701 --
64702 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
64703 p_natural_side_code => 'D'
64704 , p_gain_or_loss_flag => 'N'
64705 , p_gl_transfer_mode_code => 'S'
64706 , p_acct_entry_type_code => 'A'
64707 , p_switch_side_flag => 'Y'
64708 , p_merge_duplicate_code => 'N'
64709 );
64710 --
64711 l_acc_rev_natural_side_code := 'C'; -- 4262811
64712 --
64713 --
64714 -- set accounting line type info
64715 --
64716 xla_ae_lines_pkg.SetAcctLineType
64717 (p_component_type => l_component_type
64718 ,p_event_type_code => l_event_type_code
64719 ,p_line_definition_owner_code => l_line_definition_owner_code
64720 ,p_line_definition_code => l_line_definition_code
64721 ,p_accounting_line_code => l_component_code
64722 ,p_accounting_line_type_code => l_component_type_code
64723 ,p_accounting_line_appl_id => l_component_appl_id
64724 ,p_amb_context_code => l_amb_context_code
64725 ,p_entity_code => l_entity_code
64726 ,p_event_class_code => l_event_class_code);
64727 --
64728 -- set accounting class
64729 --
64730 xla_ae_lines_pkg.SetAcctClass(
64731 p_accounting_class_code => 'INTRANSIT_VALUATION'
64732 , p_ae_header_id => l_ae_header_id
64733 );
64734
64735 --
64736 -- set rounding class
64737 --
64738 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
64739 'INTRANSIT_VALUATION';
64740
64741 --
64742 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
64743 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
64744 --
64745 -- bulk performance
64746 --
64747 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
64748
64749 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
64750 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
64751
64752 -- 4955764
64753 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
64754 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
64755
64756 -- 4458381 Public Sector Enh
64757
64758 --
64759 -- set accounting attributes for the line type
64760 --
64761 l_entered_amt_idx := 17;
64762 l_accted_amt_idx := 22;
64763 l_bflow_applied_to_amt_idx := NULL; -- 5132302
64764 l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
64765 l_rec_acct_attrs.array_num_value(1) := p_source_6;
64766 l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
64767 l_rec_acct_attrs.array_char_value(2) := p_source_7;
64768 l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
64769 l_rec_acct_attrs.array_char_value(3) := p_source_8;
64770 l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
64771 l_rec_acct_attrs.array_num_value(4) := to_char(p_source_28);
64772 l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
64773 l_rec_acct_attrs.array_num_value(5) := to_char(p_source_29);
64774 l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
64775 l_rec_acct_attrs.array_num_value(6) := to_char(p_source_11);
64776 l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
64777 l_rec_acct_attrs.array_char_value(7) := p_source_12;
64778 l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
64779 l_rec_acct_attrs.array_num_value(8) := TO_NUMBER(p_source_30);
64780 l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
64781 l_rec_acct_attrs.array_num_value(9) := p_source_14;
64782 l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
64783 l_rec_acct_attrs.array_char_value(10) := p_source_15;
64784 l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
64785 l_rec_acct_attrs.array_num_value(11) := p_source_16;
64786 l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
64787 l_rec_acct_attrs.array_num_value(12) := TO_NUMBER(p_source_30);
64788 l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
64789 l_rec_acct_attrs.array_num_value(13) := p_source_14;
64790 l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
64791 l_rec_acct_attrs.array_char_value(14) := p_source_15;
64792 l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
64793 l_rec_acct_attrs.array_num_value(15) := p_source_16;
64794 l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
64795 l_rec_acct_attrs.array_char_value(16) := p_source_27;
64796 l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
64797 l_rec_acct_attrs.array_num_value(17) := p_source_18;
64798 l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
64799 l_rec_acct_attrs.array_char_value(18) := p_source_15;
64800 l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
64801 l_rec_acct_attrs.array_date_value(19) := p_source_19;
64802 l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
64803 l_rec_acct_attrs.array_num_value(20) := p_source_20;
64804 l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
64805 l_rec_acct_attrs.array_char_value(21) := p_source_21;
64806 l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
64807 l_rec_acct_attrs.array_num_value(22) := p_source_22;
64808 l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
64809 l_rec_acct_attrs.array_num_value(23) := p_source_31;
64810 l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
64811 l_rec_acct_attrs.array_num_value(24) := p_source_31;
64812
64813 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
64814 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
64815
64816 ---------------------------------------------------------------------------------------------------------------
64817 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
64818 ---------------------------------------------------------------------------------------------------------------
64819 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
64820
64821 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
64822 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
64823
64824 IF xla_accounting_cache_pkg.GetValueChar
64825 (p_source_code => 'LEDGER_CATEGORY_CODE'
64826 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
64827 AND l_bflow_method_code = 'PRIOR_ENTRY'
64828 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
64829 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
64830 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
64831 )
64832 THEN
64833 xla_ae_lines_pkg.BflowUpgEntry
64834 (p_business_method_code => l_bflow_method_code
64835 ,p_business_class_code => l_bflow_class_code
64836 ,p_balance_type => l_balance_type_code);
64837 ELSE
64838 NULL;
64839 -- No business flow processing for business flow method of NONE.
64840 END IF;
64841
64842 --
64843 -- call analytical criteria
64844 --
64845
64846 --
64847 -- call description
64848 --
64849 -- No description or it is inherited.
64850 --
64851 -- call ADRs
64852 -- Bug 4922099
64853 --
64854 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
64855 (NVL(l_actual_upg_option, 'N') = 'O') OR
64856 (NVL(l_enc_upg_option, 'N') = 'O')
64857 )
64858 THEN
64859 NULL;
64860 --
64861 --
64862
64863 l_ccid := AcctDerRule_4(
64864 p_application_id => p_application_id
64865 , p_ae_header_id => l_ae_header_id
64866 , p_source_4 => p_source_4
64867 , x_transaction_coa_id => l_adr_transaction_coa_id
64868 , x_accounting_coa_id => l_adr_accounting_coa_id
64869 , x_value_type_code => l_adr_value_type_code
64870 , p_side => 'NA'
64871 );
64872
64873 xla_ae_lines_pkg.set_ccid(
64874 p_code_combination_id => l_ccid
64875 , p_value_type_code => l_adr_value_type_code
64876 , p_transaction_coa_id => l_adr_transaction_coa_id
64877 , p_accounting_coa_id => l_adr_accounting_coa_id
64878 , p_adr_code => 'CST_DEFAULT'
64879 , p_adr_type_code => 'S'
64880 , p_component_type => l_component_type
64881 , p_component_code => l_component_code
64882 , p_component_type_code => l_component_type_code
64883 , p_component_appl_id => l_component_appl_id
64884 , p_amb_context_code => l_amb_context_code
64885 , p_side => 'NA'
64886 );
64887
64888
64889 --
64890 --
64891 END IF;
64892 --
64893 -- Bug 4922099
64894 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
64895 (NVL(l_enc_upg_option, 'N') = 'O')
64896 ) AND
64897 (l_bflow_method_code = 'PRIOR_ENTRY')
64898 )
64899 THEN
64900 IF
64901 --
64902 1 = 2
64903 --
64904 THEN
64905 xla_accounting_err_pkg.build_message
64906 (p_appli_s_name => 'XLA'
64907 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
64908 ,p_token_1 => 'LINE_NUMBER'
64909 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
64910 ,p_token_2 => 'LINE_TYPE_NAME'
64911 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
64912 l_component_type
64913 ,l_component_code
64914 ,l_component_type_code
64915 ,l_component_appl_id
64916 ,l_amb_context_code
64917 ,l_entity_code
64918 ,l_event_class_code
64919 )
64920 ,p_token_3 => 'OWNER'
64921 ,p_value_3 => xla_lookups_pkg.get_meaning(
64922 p_lookup_type => 'XLA_OWNER_TYPE'
64923 ,p_lookup_code => l_component_type_code
64924 )
64925 ,p_token_4 => 'PRODUCT_NAME'
64926 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
64927 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
64928 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
64929 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
64930 ,p_ae_header_id => NULL
64931 );
64932
64933 IF (C_LEVEL_ERROR>= g_log_level) THEN
64934 trace
64935 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
64936 ,p_level => C_LEVEL_ERROR
64937 ,p_module => l_log_module);
64938 END IF;
64939 END IF;
64940 END IF;
64941 --
64942 --
64943 ------------------------------------------------------------------------------------------------
64944 -- 4219869 Business Flow
64945 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
64946 -- Prior Entry. Currently, the following code is always generated.
64947 ------------------------------------------------------------------------------------------------
64948 XLA_AE_LINES_PKG.ValidateCurrentLine;
64949
64950 ------------------------------------------------------------------------------------
64951 -- 4219869 Business Flow
64952 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
64953 ------------------------------------------------------------------------------------
64954 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
64955
64956 ----------------------------------------------------------------------------------
64957 -- 4219869 Business Flow
64958 -- Update journal entry status -- Need to generate this within IF <condition>
64959 ----------------------------------------------------------------------------------
64960 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
64961 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
64962 ,p_balance_type_code => l_balance_type_code
64963 );
64964
64965 -------------------------------------------------------------------------------------------
64966 -- 4262811 - Generate the Accrual Reversal lines
64967 -------------------------------------------------------------------------------------------
64968 BEGIN
64969 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
64970 (g_array_event(p_event_id).array_value_num('header_index'));
64971 IF l_acc_rev_flag IS NULL THEN
64972 l_acc_rev_flag := 'N';
64973 END IF;
64974 EXCEPTION
64975 WHEN OTHERS THEN
64976 l_acc_rev_flag := 'N';
64977 END;
64978 --
64979 IF (l_acc_rev_flag = 'Y') THEN
64980
64981 -- 4645092 ------------------------------------------------------------------------------
64982 -- To allow MPA report to determine if it should generate report process
64983 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
64984 ------------------------------------------------------------------------------------------
64985
64986 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
64987 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
64988 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
64989 -- call ADRs
64990 -- Bug 4922099
64991 --
64992 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
64993 (NVL(l_actual_upg_option, 'N') = 'O') OR
64994 (NVL(l_enc_upg_option, 'N') = 'O')
64995 )
64996 THEN
64997 NULL;
64998 --
64999 --
65000
65001 l_ccid := AcctDerRule_4(
65002 p_application_id => p_application_id
65003 , p_ae_header_id => l_ae_header_id
65004 , p_source_4 => p_source_4
65005 , x_transaction_coa_id => l_adr_transaction_coa_id
65006 , x_accounting_coa_id => l_adr_accounting_coa_id
65007 , x_value_type_code => l_adr_value_type_code
65008 , p_side => 'NA'
65009 );
65010
65011 xla_ae_lines_pkg.set_ccid(
65012 p_code_combination_id => l_ccid
65013 , p_value_type_code => l_adr_value_type_code
65014 , p_transaction_coa_id => l_adr_transaction_coa_id
65015 , p_accounting_coa_id => l_adr_accounting_coa_id
65016 , p_adr_code => 'CST_DEFAULT'
65017 , p_adr_type_code => 'S'
65018 , p_component_type => l_component_type
65019 , p_component_code => l_component_code
65020 , p_component_type_code => l_component_type_code
65021 , p_component_appl_id => l_component_appl_id
65022 , p_amb_context_code => l_amb_context_code
65023 , p_side => 'NA'
65024 );
65025
65026
65027 --
65028 --
65029 END IF;
65030
65031 --
65032 -- Update the line information that should be overwritten
65033 --
65034 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
65035 p_header_num => 1);
65036 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
65037
65038 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
65039
65040 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
65041 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
65042 END IF;
65043
65044 --
65045 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
65046 --
65047 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
65048 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
65049 ELSE
65050 ---------------------------------------------------------------------------------------------------
65051 -- 4262811a Switch Sign
65052 ---------------------------------------------------------------------------------------------------
65053 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
65054 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
65055 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
65056 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
65057 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
65058 -- 5132302
65059 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
65060 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
65061
65062 END IF;
65063
65064 -- 4955764
65065 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
65066 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
65067
65068
65069 XLA_AE_LINES_PKG.ValidateCurrentLine;
65070 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
65071
65072 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
65073 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
65074 ,p_balance_type_code => l_balance_type_code);
65075
65076 END IF;
65077
65078 -----------------------------------------------------------------------------------------
65079 -- 4262811 Multiperiod Accounting
65080 -----------------------------------------------------------------------------------------
65081 -- No MPA option is assigned.
65082
65083
65084 END IF;
65085 END IF;
65086 --
65087
65088 --
65089 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
65090 trace
65091 (p_msg => 'END of AcctLineType_119'
65092 ,p_level => C_LEVEL_PROCEDURE
65093 ,p_module => l_log_module);
65094 END IF;
65095 --
65096 EXCEPTION
65097 WHEN xla_exceptions_pkg.application_exception THEN
65098 RAISE;
65099 WHEN OTHERS THEN
65100 xla_exceptions_pkg.raise_message
65101 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_119');
65102 END AcctLineType_119;
65103 --
65104
65105 ---------------------------------------
65106 --
65107 -- PRIVATE FUNCTION
65108 -- AcctLineType_120
65109 --
65110 ---------------------------------------
65111 PROCEDURE AcctLineType_120 (
65112 p_application_id IN NUMBER
65113 ,p_event_id IN NUMBER
65114 ,p_calculate_acctd_flag IN VARCHAR2
65115 ,p_calculate_g_l_flag IN VARCHAR2
65116 ,p_actual_flag IN OUT VARCHAR2
65117 ,p_balance_type_code OUT VARCHAR2
65118 ,p_gain_or_loss_ref OUT VARCHAR2
65119
65120 --Cost Management Default Account
65121 , p_source_4 IN NUMBER
65122 --DISTRIBUTION_IDENTIFIER
65123 , p_source_11 IN NUMBER
65124 --Distribution Type
65125 , p_source_12 IN VARCHAR2
65126 , p_source_12_meaning IN VARCHAR2
65127 --Entered Currency Code
65128 , p_source_15 IN VARCHAR2
65129 --Entered Amount
65130 , p_source_18 IN NUMBER
65131 --Currency Conversion Date
65132 , p_source_19 IN DATE
65133 --Currency Conversion Rate
65134 , p_source_20 IN NUMBER
65135 --Currency Conversion Type
65136 , p_source_21 IN VARCHAR2
65137 --Accounted Amount
65138 , p_source_22 IN NUMBER
65139 --Accounting Line Type
65140 , p_source_24 IN NUMBER
65141 )
65142 IS
65143
65144 l_component_type VARCHAR2(80);
65145 l_component_code VARCHAR2(30);
65146 l_component_type_code VARCHAR2(1);
65147 l_component_appl_id INTEGER;
65148 l_amb_context_code VARCHAR2(30);
65149 l_entity_code VARCHAR2(30);
65150 l_event_class_code VARCHAR2(30);
65151 l_ae_header_id NUMBER;
65152 l_event_type_code VARCHAR2(30);
65153 l_line_definition_code VARCHAR2(30);
65154 l_line_definition_owner_code VARCHAR2(1);
65155 --
65156 -- adr variables
65157 l_segment VARCHAR2(30);
65158 l_ccid NUMBER;
65159 l_adr_transaction_coa_id NUMBER;
65160 l_adr_accounting_coa_id NUMBER;
65161 l_adr_flexfield_segment_code VARCHAR2(30);
65162 l_adr_flex_value_set_id NUMBER;
65163 l_adr_value_type_code VARCHAR2(30);
65164 l_adr_value_combination_id NUMBER;
65165 l_adr_value_segment_code VARCHAR2(30);
65166
65167 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
65168 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
65169 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
65170 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
65171
65172 -- 4262811 Variables ------------------------------------------------------------------------------------------
65173 l_entered_amt_idx NUMBER;
65174 l_accted_amt_idx NUMBER;
65175 l_acc_rev_flag VARCHAR2(1);
65176 l_accrual_line_num NUMBER;
65177 l_tmp_amt NUMBER;
65178 l_acc_rev_natural_side_code VARCHAR2(1);
65179
65180 l_num_entries NUMBER;
65181 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
65182 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
65183 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
65184 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
65185 l_recog_line_1 NUMBER;
65186 l_recog_line_2 NUMBER;
65187
65188 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
65189 l_bflow_applied_to_amt NUMBER; -- 5132302
65190 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
65191
65192 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
65193
65194 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
65195 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
65196
65197 ---------------------------------------------------------------------------------------------------------------
65198
65199
65200 --
65201 -- bulk performance
65202 --
65203 l_balance_type_code VARCHAR2(1);
65204 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
65205 l_log_module VARCHAR2(240);
65206
65207 --
65208 -- Upgrade strategy
65209 --
65210 l_actual_upg_option VARCHAR2(1);
65211 l_enc_upg_option VARCHAR2(1);
65212
65213 --
65214 BEGIN
65215 --
65216 IF g_log_enabled THEN
65217 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_120';
65218 END IF;
65219 --
65220 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
65221
65222 trace
65223 (p_msg => 'BEGIN of AcctLineType_120'
65224 ,p_level => C_LEVEL_PROCEDURE
65225 ,p_module => l_log_module);
65226
65227 END IF;
65228 --
65229 l_component_type := 'AMB_JLT';
65230 l_component_code := 'INTRANSIT_VALUATION';
65231 l_component_type_code := 'S';
65232 l_component_appl_id := 707;
65233 l_amb_context_code := 'DEFAULT';
65234 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
65235 l_event_class_code := 'FOB_RCPT_SENDER_SHIP';
65236 l_event_type_code := 'FOB_RCPT_SENDER_SHIP_ALL';
65237 l_line_definition_owner_code := 'S';
65238 l_line_definition_code := 'FOB_RCPT_SEND_SHIP';
65239 --
65240 l_balance_type_code := 'A';
65241 l_segment := NULL;
65242 l_ccid := NULL;
65243 l_adr_transaction_coa_id := NULL;
65244 l_adr_accounting_coa_id := NULL;
65245 l_adr_flexfield_segment_code := NULL;
65246 l_adr_flex_value_set_id := NULL;
65247 l_adr_value_type_code := NULL;
65248 l_adr_value_combination_id := NULL;
65249 l_adr_value_segment_code := NULL;
65250
65251 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
65252 l_bflow_class_code := ''; -- 4219869 Business Flow
65253 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
65254 l_budgetary_control_flag := 'N';
65255
65256 l_bflow_applied_to_amt_idx := NULL; -- 5132302
65257 l_bflow_applied_to_amt := NULL; -- 5132302
65258 l_entered_amt_idx := NULL; -- 4262811
65259 l_accted_amt_idx := NULL; -- 4262811
65260 l_acc_rev_flag := NULL; -- 4262811
65261 l_accrual_line_num := NULL; -- 4262811
65262 l_tmp_amt := NULL; -- 4262811
65263 --
65264
65265 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
65266 l_balance_type_code <> 'B' THEN
65267 IF NVL(p_source_24,9E125) = 14
65268 THEN
65269
65270 --
65271 XLA_AE_LINES_PKG.SetNewLine;
65272
65273 p_balance_type_code := l_balance_type_code;
65274 -- set the flag so later we will know whether the gain loss line needs to be created
65275
65276 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
65277 p_actual_flag :='A';
65278 END IF;
65279
65280 --
65281 -- bulk performance
65282 --
65283 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
65284 p_header_num => 0); -- 4262811
65285 --
65286 -- set accounting line options
65287 --
65288 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
65289 p_natural_side_code => 'D'
65290 , p_gain_or_loss_flag => 'N'
65291 , p_gl_transfer_mode_code => 'S'
65292 , p_acct_entry_type_code => 'A'
65293 , p_switch_side_flag => 'Y'
65294 , p_merge_duplicate_code => 'N'
65295 );
65296 --
65297 l_acc_rev_natural_side_code := 'C'; -- 4262811
65298 --
65299 --
65300 -- set accounting line type info
65301 --
65302 xla_ae_lines_pkg.SetAcctLineType
65303 (p_component_type => l_component_type
65304 ,p_event_type_code => l_event_type_code
65305 ,p_line_definition_owner_code => l_line_definition_owner_code
65306 ,p_line_definition_code => l_line_definition_code
65307 ,p_accounting_line_code => l_component_code
65308 ,p_accounting_line_type_code => l_component_type_code
65309 ,p_accounting_line_appl_id => l_component_appl_id
65310 ,p_amb_context_code => l_amb_context_code
65311 ,p_entity_code => l_entity_code
65312 ,p_event_class_code => l_event_class_code);
65313 --
65314 -- set accounting class
65315 --
65316 xla_ae_lines_pkg.SetAcctClass(
65317 p_accounting_class_code => 'INTRANSIT_VALUATION'
65318 , p_ae_header_id => l_ae_header_id
65319 );
65320
65321 --
65322 -- set rounding class
65323 --
65324 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
65325 'INTRANSIT_VALUATION';
65326
65327 --
65328 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
65329 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
65330 --
65331 -- bulk performance
65332 --
65333 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
65334
65335 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
65336 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
65337
65338 -- 4955764
65339 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
65340 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
65341
65342 -- 4458381 Public Sector Enh
65343
65344 --
65345 -- set accounting attributes for the line type
65346 --
65347 l_entered_amt_idx := 3;
65348 l_accted_amt_idx := 8;
65349 l_bflow_applied_to_amt_idx := NULL; -- 5132302
65350 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
65351 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
65352 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
65353 l_rec_acct_attrs.array_char_value(2) := p_source_12;
65354 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
65355 l_rec_acct_attrs.array_num_value(3) := p_source_18;
65356 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
65357 l_rec_acct_attrs.array_char_value(4) := p_source_15;
65358 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
65359 l_rec_acct_attrs.array_date_value(5) := p_source_19;
65360 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
65361 l_rec_acct_attrs.array_num_value(6) := p_source_20;
65362 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
65363 l_rec_acct_attrs.array_char_value(7) := p_source_21;
65364 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
65365 l_rec_acct_attrs.array_num_value(8) := p_source_22;
65366
65367 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
65368 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
65369
65370 ---------------------------------------------------------------------------------------------------------------
65371 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
65372 ---------------------------------------------------------------------------------------------------------------
65373 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
65374
65375 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
65376 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
65377
65378 IF xla_accounting_cache_pkg.GetValueChar
65379 (p_source_code => 'LEDGER_CATEGORY_CODE'
65380 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
65381 AND l_bflow_method_code = 'PRIOR_ENTRY'
65382 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
65383 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
65384 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
65385 )
65386 THEN
65387 xla_ae_lines_pkg.BflowUpgEntry
65388 (p_business_method_code => l_bflow_method_code
65389 ,p_business_class_code => l_bflow_class_code
65390 ,p_balance_type => l_balance_type_code);
65391 ELSE
65392 NULL;
65393 -- No business flow processing for business flow method of NONE.
65394 END IF;
65395
65396 --
65397 -- call analytical criteria
65398 --
65399
65400 --
65401 -- call description
65402 --
65403 -- No description or it is inherited.
65404 --
65405 -- call ADRs
65406 -- Bug 4922099
65407 --
65408 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
65409 (NVL(l_actual_upg_option, 'N') = 'O') OR
65410 (NVL(l_enc_upg_option, 'N') = 'O')
65411 )
65412 THEN
65413 NULL;
65414 --
65415 --
65416
65417 l_ccid := AcctDerRule_4(
65418 p_application_id => p_application_id
65419 , p_ae_header_id => l_ae_header_id
65420 , p_source_4 => p_source_4
65421 , x_transaction_coa_id => l_adr_transaction_coa_id
65422 , x_accounting_coa_id => l_adr_accounting_coa_id
65423 , x_value_type_code => l_adr_value_type_code
65424 , p_side => 'NA'
65425 );
65426
65427 xla_ae_lines_pkg.set_ccid(
65428 p_code_combination_id => l_ccid
65429 , p_value_type_code => l_adr_value_type_code
65430 , p_transaction_coa_id => l_adr_transaction_coa_id
65431 , p_accounting_coa_id => l_adr_accounting_coa_id
65432 , p_adr_code => 'CST_DEFAULT'
65433 , p_adr_type_code => 'S'
65434 , p_component_type => l_component_type
65435 , p_component_code => l_component_code
65436 , p_component_type_code => l_component_type_code
65437 , p_component_appl_id => l_component_appl_id
65438 , p_amb_context_code => l_amb_context_code
65439 , p_side => 'NA'
65440 );
65441
65442
65443 --
65444 --
65445 END IF;
65446 --
65447 -- Bug 4922099
65448 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
65449 (NVL(l_enc_upg_option, 'N') = 'O')
65450 ) AND
65451 (l_bflow_method_code = 'PRIOR_ENTRY')
65452 )
65453 THEN
65454 IF
65455 --
65456 1 = 2
65457 --
65458 THEN
65459 xla_accounting_err_pkg.build_message
65460 (p_appli_s_name => 'XLA'
65461 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
65462 ,p_token_1 => 'LINE_NUMBER'
65463 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
65464 ,p_token_2 => 'LINE_TYPE_NAME'
65465 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
65466 l_component_type
65467 ,l_component_code
65468 ,l_component_type_code
65469 ,l_component_appl_id
65470 ,l_amb_context_code
65471 ,l_entity_code
65472 ,l_event_class_code
65473 )
65474 ,p_token_3 => 'OWNER'
65475 ,p_value_3 => xla_lookups_pkg.get_meaning(
65476 p_lookup_type => 'XLA_OWNER_TYPE'
65477 ,p_lookup_code => l_component_type_code
65478 )
65479 ,p_token_4 => 'PRODUCT_NAME'
65480 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
65481 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
65482 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
65483 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
65484 ,p_ae_header_id => NULL
65485 );
65486
65487 IF (C_LEVEL_ERROR>= g_log_level) THEN
65488 trace
65489 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
65490 ,p_level => C_LEVEL_ERROR
65491 ,p_module => l_log_module);
65492 END IF;
65493 END IF;
65494 END IF;
65495 --
65496 --
65497 ------------------------------------------------------------------------------------------------
65498 -- 4219869 Business Flow
65499 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
65500 -- Prior Entry. Currently, the following code is always generated.
65501 ------------------------------------------------------------------------------------------------
65502 XLA_AE_LINES_PKG.ValidateCurrentLine;
65503
65504 ------------------------------------------------------------------------------------
65505 -- 4219869 Business Flow
65506 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
65507 ------------------------------------------------------------------------------------
65508 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
65509
65510 ----------------------------------------------------------------------------------
65511 -- 4219869 Business Flow
65512 -- Update journal entry status -- Need to generate this within IF <condition>
65513 ----------------------------------------------------------------------------------
65514 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
65515 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
65516 ,p_balance_type_code => l_balance_type_code
65517 );
65518
65519 -------------------------------------------------------------------------------------------
65520 -- 4262811 - Generate the Accrual Reversal lines
65521 -------------------------------------------------------------------------------------------
65522 BEGIN
65523 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
65524 (g_array_event(p_event_id).array_value_num('header_index'));
65525 IF l_acc_rev_flag IS NULL THEN
65526 l_acc_rev_flag := 'N';
65527 END IF;
65528 EXCEPTION
65529 WHEN OTHERS THEN
65530 l_acc_rev_flag := 'N';
65531 END;
65532 --
65533 IF (l_acc_rev_flag = 'Y') THEN
65534
65535 -- 4645092 ------------------------------------------------------------------------------
65536 -- To allow MPA report to determine if it should generate report process
65537 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
65538 ------------------------------------------------------------------------------------------
65539
65540 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
65541 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
65542 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
65543 -- call ADRs
65544 -- Bug 4922099
65545 --
65546 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
65547 (NVL(l_actual_upg_option, 'N') = 'O') OR
65548 (NVL(l_enc_upg_option, 'N') = 'O')
65549 )
65550 THEN
65551 NULL;
65552 --
65553 --
65554
65555 l_ccid := AcctDerRule_4(
65556 p_application_id => p_application_id
65557 , p_ae_header_id => l_ae_header_id
65558 , p_source_4 => p_source_4
65559 , x_transaction_coa_id => l_adr_transaction_coa_id
65560 , x_accounting_coa_id => l_adr_accounting_coa_id
65561 , x_value_type_code => l_adr_value_type_code
65562 , p_side => 'NA'
65563 );
65564
65565 xla_ae_lines_pkg.set_ccid(
65566 p_code_combination_id => l_ccid
65567 , p_value_type_code => l_adr_value_type_code
65568 , p_transaction_coa_id => l_adr_transaction_coa_id
65569 , p_accounting_coa_id => l_adr_accounting_coa_id
65570 , p_adr_code => 'CST_DEFAULT'
65571 , p_adr_type_code => 'S'
65572 , p_component_type => l_component_type
65573 , p_component_code => l_component_code
65574 , p_component_type_code => l_component_type_code
65575 , p_component_appl_id => l_component_appl_id
65576 , p_amb_context_code => l_amb_context_code
65577 , p_side => 'NA'
65578 );
65579
65580
65581 --
65582 --
65583 END IF;
65584
65585 --
65586 -- Update the line information that should be overwritten
65587 --
65588 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
65589 p_header_num => 1);
65590 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
65591
65592 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
65593
65594 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
65595 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
65596 END IF;
65597
65598 --
65599 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
65600 --
65601 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
65602 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
65603 ELSE
65604 ---------------------------------------------------------------------------------------------------
65605 -- 4262811a Switch Sign
65606 ---------------------------------------------------------------------------------------------------
65607 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
65608 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
65609 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
65610 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
65611 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
65612 -- 5132302
65613 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
65614 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
65615
65616 END IF;
65617
65618 -- 4955764
65619 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
65620 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
65621
65622
65623 XLA_AE_LINES_PKG.ValidateCurrentLine;
65624 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
65625
65626 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
65627 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
65628 ,p_balance_type_code => l_balance_type_code);
65629
65630 END IF;
65631
65632 -----------------------------------------------------------------------------------------
65633 -- 4262811 Multiperiod Accounting
65634 -----------------------------------------------------------------------------------------
65635 -- No MPA option is assigned.
65636
65637
65638 END IF;
65639 END IF;
65640 --
65641
65642 --
65643 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
65644 trace
65645 (p_msg => 'END of AcctLineType_120'
65646 ,p_level => C_LEVEL_PROCEDURE
65647 ,p_module => l_log_module);
65648 END IF;
65649 --
65650 EXCEPTION
65651 WHEN xla_exceptions_pkg.application_exception THEN
65652 RAISE;
65653 WHEN OTHERS THEN
65654 xla_exceptions_pkg.raise_message
65655 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_120');
65656 END AcctLineType_120;
65657 --
65658
65659 ---------------------------------------
65660 --
65661 -- PRIVATE FUNCTION
65662 -- AcctLineType_121
65663 --
65664 ---------------------------------------
65665 PROCEDURE AcctLineType_121 (
65666 p_application_id IN NUMBER
65667 ,p_event_id IN NUMBER
65668 ,p_calculate_acctd_flag IN VARCHAR2
65669 ,p_calculate_g_l_flag IN VARCHAR2
65670 ,p_actual_flag IN OUT VARCHAR2
65671 ,p_balance_type_code OUT VARCHAR2
65672 ,p_gain_or_loss_ref OUT VARCHAR2
65673
65674 --Cost Management Default Account
65675 , p_source_4 IN NUMBER
65676 --DISTRIBUTION_IDENTIFIER
65677 , p_source_11 IN NUMBER
65678 --Distribution Type
65679 , p_source_12 IN VARCHAR2
65680 , p_source_12_meaning IN VARCHAR2
65681 --Entered Currency Code
65682 , p_source_15 IN VARCHAR2
65683 --Entered Amount
65684 , p_source_18 IN NUMBER
65685 --Currency Conversion Date
65686 , p_source_19 IN DATE
65687 --Currency Conversion Rate
65688 , p_source_20 IN NUMBER
65689 --Currency Conversion Type
65690 , p_source_21 IN VARCHAR2
65691 --Accounted Amount
65692 , p_source_22 IN NUMBER
65693 --Accounting Line Type
65694 , p_source_24 IN NUMBER
65695 )
65696 IS
65697
65698 l_component_type VARCHAR2(80);
65699 l_component_code VARCHAR2(30);
65700 l_component_type_code VARCHAR2(1);
65701 l_component_appl_id INTEGER;
65702 l_amb_context_code VARCHAR2(30);
65703 l_entity_code VARCHAR2(30);
65704 l_event_class_code VARCHAR2(30);
65705 l_ae_header_id NUMBER;
65706 l_event_type_code VARCHAR2(30);
65707 l_line_definition_code VARCHAR2(30);
65708 l_line_definition_owner_code VARCHAR2(1);
65709 --
65710 -- adr variables
65711 l_segment VARCHAR2(30);
65712 l_ccid NUMBER;
65713 l_adr_transaction_coa_id NUMBER;
65714 l_adr_accounting_coa_id NUMBER;
65715 l_adr_flexfield_segment_code VARCHAR2(30);
65716 l_adr_flex_value_set_id NUMBER;
65717 l_adr_value_type_code VARCHAR2(30);
65718 l_adr_value_combination_id NUMBER;
65719 l_adr_value_segment_code VARCHAR2(30);
65720
65721 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
65722 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
65723 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
65724 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
65725
65726 -- 4262811 Variables ------------------------------------------------------------------------------------------
65727 l_entered_amt_idx NUMBER;
65728 l_accted_amt_idx NUMBER;
65729 l_acc_rev_flag VARCHAR2(1);
65730 l_accrual_line_num NUMBER;
65731 l_tmp_amt NUMBER;
65732 l_acc_rev_natural_side_code VARCHAR2(1);
65733
65734 l_num_entries NUMBER;
65735 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
65736 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
65737 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
65738 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
65739 l_recog_line_1 NUMBER;
65740 l_recog_line_2 NUMBER;
65741
65742 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
65743 l_bflow_applied_to_amt NUMBER; -- 5132302
65744 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
65745
65746 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
65747
65748 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
65749 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
65750
65751 ---------------------------------------------------------------------------------------------------------------
65752
65753
65754 --
65755 -- bulk performance
65756 --
65757 l_balance_type_code VARCHAR2(1);
65758 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
65759 l_log_module VARCHAR2(240);
65760
65761 --
65762 -- Upgrade strategy
65763 --
65764 l_actual_upg_option VARCHAR2(1);
65765 l_enc_upg_option VARCHAR2(1);
65766
65767 --
65768 BEGIN
65769 --
65770 IF g_log_enabled THEN
65771 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_121';
65772 END IF;
65773 --
65774 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
65775
65776 trace
65777 (p_msg => 'BEGIN of AcctLineType_121'
65778 ,p_level => C_LEVEL_PROCEDURE
65779 ,p_module => l_log_module);
65780
65781 END IF;
65782 --
65783 l_component_type := 'AMB_JLT';
65784 l_component_code := 'INTRANSIT_VALUATION';
65785 l_component_type_code := 'S';
65786 l_component_appl_id := 707;
65787 l_amb_context_code := 'DEFAULT';
65788 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
65789 l_event_class_code := 'USER_DEFINE';
65790 l_event_type_code := 'UIPV_TXFR';
65791 l_line_definition_owner_code := 'S';
65792 l_line_definition_code := 'USER_IPV_TXFR';
65793 --
65794 l_balance_type_code := 'A';
65795 l_segment := NULL;
65796 l_ccid := NULL;
65797 l_adr_transaction_coa_id := NULL;
65798 l_adr_accounting_coa_id := NULL;
65799 l_adr_flexfield_segment_code := NULL;
65800 l_adr_flex_value_set_id := NULL;
65801 l_adr_value_type_code := NULL;
65802 l_adr_value_combination_id := NULL;
65803 l_adr_value_segment_code := NULL;
65804
65805 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
65806 l_bflow_class_code := ''; -- 4219869 Business Flow
65807 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
65808 l_budgetary_control_flag := 'N';
65809
65810 l_bflow_applied_to_amt_idx := NULL; -- 5132302
65811 l_bflow_applied_to_amt := NULL; -- 5132302
65812 l_entered_amt_idx := NULL; -- 4262811
65813 l_accted_amt_idx := NULL; -- 4262811
65814 l_acc_rev_flag := NULL; -- 4262811
65815 l_accrual_line_num := NULL; -- 4262811
65816 l_tmp_amt := NULL; -- 4262811
65817 --
65818
65819 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
65820 l_balance_type_code <> 'B' THEN
65821 IF NVL(p_source_24,9E125) = 14
65822 THEN
65823
65824 --
65825 XLA_AE_LINES_PKG.SetNewLine;
65826
65827 p_balance_type_code := l_balance_type_code;
65828 -- set the flag so later we will know whether the gain loss line needs to be created
65829
65830 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
65831 p_actual_flag :='A';
65832 END IF;
65833
65834 --
65835 -- bulk performance
65836 --
65837 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
65838 p_header_num => 0); -- 4262811
65839 --
65840 -- set accounting line options
65841 --
65842 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
65843 p_natural_side_code => 'D'
65844 , p_gain_or_loss_flag => 'N'
65845 , p_gl_transfer_mode_code => 'S'
65846 , p_acct_entry_type_code => 'A'
65847 , p_switch_side_flag => 'Y'
65848 , p_merge_duplicate_code => 'N'
65849 );
65850 --
65851 l_acc_rev_natural_side_code := 'C'; -- 4262811
65852 --
65853 --
65854 -- set accounting line type info
65855 --
65856 xla_ae_lines_pkg.SetAcctLineType
65857 (p_component_type => l_component_type
65858 ,p_event_type_code => l_event_type_code
65859 ,p_line_definition_owner_code => l_line_definition_owner_code
65860 ,p_line_definition_code => l_line_definition_code
65861 ,p_accounting_line_code => l_component_code
65862 ,p_accounting_line_type_code => l_component_type_code
65863 ,p_accounting_line_appl_id => l_component_appl_id
65864 ,p_amb_context_code => l_amb_context_code
65865 ,p_entity_code => l_entity_code
65866 ,p_event_class_code => l_event_class_code);
65867 --
65868 -- set accounting class
65869 --
65870 xla_ae_lines_pkg.SetAcctClass(
65871 p_accounting_class_code => 'INTRANSIT_VALUATION'
65872 , p_ae_header_id => l_ae_header_id
65873 );
65874
65875 --
65876 -- set rounding class
65877 --
65878 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
65879 'INTRANSIT_VALUATION';
65880
65881 --
65882 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
65883 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
65884 --
65885 -- bulk performance
65886 --
65887 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
65888
65889 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
65890 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
65891
65892 -- 4955764
65893 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
65894 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
65895
65896 -- 4458381 Public Sector Enh
65897
65898 --
65899 -- set accounting attributes for the line type
65900 --
65901 l_entered_amt_idx := 3;
65902 l_accted_amt_idx := 8;
65903 l_bflow_applied_to_amt_idx := NULL; -- 5132302
65904 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
65905 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
65906 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
65907 l_rec_acct_attrs.array_char_value(2) := p_source_12;
65908 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
65909 l_rec_acct_attrs.array_num_value(3) := p_source_18;
65910 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
65911 l_rec_acct_attrs.array_char_value(4) := p_source_15;
65912 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
65913 l_rec_acct_attrs.array_date_value(5) := p_source_19;
65914 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
65915 l_rec_acct_attrs.array_num_value(6) := p_source_20;
65916 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
65917 l_rec_acct_attrs.array_char_value(7) := p_source_21;
65918 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
65919 l_rec_acct_attrs.array_num_value(8) := p_source_22;
65920
65921 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
65922 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
65923
65924 ---------------------------------------------------------------------------------------------------------------
65925 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
65926 ---------------------------------------------------------------------------------------------------------------
65927 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
65928
65929 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
65930 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
65931
65932 IF xla_accounting_cache_pkg.GetValueChar
65933 (p_source_code => 'LEDGER_CATEGORY_CODE'
65934 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
65935 AND l_bflow_method_code = 'PRIOR_ENTRY'
65936 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
65937 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
65938 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
65939 )
65940 THEN
65941 xla_ae_lines_pkg.BflowUpgEntry
65942 (p_business_method_code => l_bflow_method_code
65943 ,p_business_class_code => l_bflow_class_code
65944 ,p_balance_type => l_balance_type_code);
65945 ELSE
65946 NULL;
65947 -- No business flow processing for business flow method of NONE.
65948 END IF;
65949
65950 --
65951 -- call analytical criteria
65952 --
65953
65954 --
65955 -- call description
65956 --
65957 -- No description or it is inherited.
65958 --
65959 -- call ADRs
65960 -- Bug 4922099
65961 --
65962 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
65963 (NVL(l_actual_upg_option, 'N') = 'O') OR
65964 (NVL(l_enc_upg_option, 'N') = 'O')
65965 )
65966 THEN
65967 NULL;
65968 --
65969 --
65970
65971 l_ccid := AcctDerRule_4(
65972 p_application_id => p_application_id
65973 , p_ae_header_id => l_ae_header_id
65974 , p_source_4 => p_source_4
65975 , x_transaction_coa_id => l_adr_transaction_coa_id
65976 , x_accounting_coa_id => l_adr_accounting_coa_id
65977 , x_value_type_code => l_adr_value_type_code
65978 , p_side => 'NA'
65979 );
65980
65981 xla_ae_lines_pkg.set_ccid(
65982 p_code_combination_id => l_ccid
65983 , p_value_type_code => l_adr_value_type_code
65984 , p_transaction_coa_id => l_adr_transaction_coa_id
65985 , p_accounting_coa_id => l_adr_accounting_coa_id
65986 , p_adr_code => 'CST_DEFAULT'
65987 , p_adr_type_code => 'S'
65988 , p_component_type => l_component_type
65989 , p_component_code => l_component_code
65990 , p_component_type_code => l_component_type_code
65991 , p_component_appl_id => l_component_appl_id
65992 , p_amb_context_code => l_amb_context_code
65993 , p_side => 'NA'
65994 );
65995
65996
65997 --
65998 --
65999 END IF;
66000 --
66001 -- Bug 4922099
66002 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
66003 (NVL(l_enc_upg_option, 'N') = 'O')
66004 ) AND
66005 (l_bflow_method_code = 'PRIOR_ENTRY')
66006 )
66007 THEN
66008 IF
66009 --
66010 1 = 2
66011 --
66012 THEN
66013 xla_accounting_err_pkg.build_message
66014 (p_appli_s_name => 'XLA'
66015 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
66016 ,p_token_1 => 'LINE_NUMBER'
66017 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
66018 ,p_token_2 => 'LINE_TYPE_NAME'
66019 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
66020 l_component_type
66021 ,l_component_code
66022 ,l_component_type_code
66023 ,l_component_appl_id
66024 ,l_amb_context_code
66025 ,l_entity_code
66026 ,l_event_class_code
66027 )
66028 ,p_token_3 => 'OWNER'
66029 ,p_value_3 => xla_lookups_pkg.get_meaning(
66030 p_lookup_type => 'XLA_OWNER_TYPE'
66031 ,p_lookup_code => l_component_type_code
66032 )
66033 ,p_token_4 => 'PRODUCT_NAME'
66034 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
66035 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
66036 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
66037 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
66038 ,p_ae_header_id => NULL
66039 );
66040
66041 IF (C_LEVEL_ERROR>= g_log_level) THEN
66042 trace
66043 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
66044 ,p_level => C_LEVEL_ERROR
66045 ,p_module => l_log_module);
66046 END IF;
66047 END IF;
66048 END IF;
66049 --
66050 --
66051 ------------------------------------------------------------------------------------------------
66052 -- 4219869 Business Flow
66053 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
66054 -- Prior Entry. Currently, the following code is always generated.
66055 ------------------------------------------------------------------------------------------------
66056 XLA_AE_LINES_PKG.ValidateCurrentLine;
66057
66058 ------------------------------------------------------------------------------------
66059 -- 4219869 Business Flow
66060 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
66061 ------------------------------------------------------------------------------------
66062 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
66063
66064 ----------------------------------------------------------------------------------
66065 -- 4219869 Business Flow
66066 -- Update journal entry status -- Need to generate this within IF <condition>
66067 ----------------------------------------------------------------------------------
66068 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
66069 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
66070 ,p_balance_type_code => l_balance_type_code
66071 );
66072
66073 -------------------------------------------------------------------------------------------
66074 -- 4262811 - Generate the Accrual Reversal lines
66075 -------------------------------------------------------------------------------------------
66076 BEGIN
66077 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
66078 (g_array_event(p_event_id).array_value_num('header_index'));
66079 IF l_acc_rev_flag IS NULL THEN
66080 l_acc_rev_flag := 'N';
66081 END IF;
66082 EXCEPTION
66083 WHEN OTHERS THEN
66084 l_acc_rev_flag := 'N';
66085 END;
66086 --
66087 IF (l_acc_rev_flag = 'Y') THEN
66088
66089 -- 4645092 ------------------------------------------------------------------------------
66090 -- To allow MPA report to determine if it should generate report process
66091 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
66092 ------------------------------------------------------------------------------------------
66093
66094 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
66095 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
66096 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
66097 -- call ADRs
66098 -- Bug 4922099
66099 --
66100 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
66101 (NVL(l_actual_upg_option, 'N') = 'O') OR
66102 (NVL(l_enc_upg_option, 'N') = 'O')
66103 )
66104 THEN
66105 NULL;
66106 --
66107 --
66108
66109 l_ccid := AcctDerRule_4(
66110 p_application_id => p_application_id
66111 , p_ae_header_id => l_ae_header_id
66112 , p_source_4 => p_source_4
66113 , x_transaction_coa_id => l_adr_transaction_coa_id
66114 , x_accounting_coa_id => l_adr_accounting_coa_id
66115 , x_value_type_code => l_adr_value_type_code
66116 , p_side => 'NA'
66117 );
66118
66119 xla_ae_lines_pkg.set_ccid(
66120 p_code_combination_id => l_ccid
66121 , p_value_type_code => l_adr_value_type_code
66122 , p_transaction_coa_id => l_adr_transaction_coa_id
66123 , p_accounting_coa_id => l_adr_accounting_coa_id
66124 , p_adr_code => 'CST_DEFAULT'
66125 , p_adr_type_code => 'S'
66126 , p_component_type => l_component_type
66127 , p_component_code => l_component_code
66128 , p_component_type_code => l_component_type_code
66129 , p_component_appl_id => l_component_appl_id
66130 , p_amb_context_code => l_amb_context_code
66131 , p_side => 'NA'
66132 );
66133
66134
66135 --
66136 --
66137 END IF;
66138
66139 --
66140 -- Update the line information that should be overwritten
66141 --
66142 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
66143 p_header_num => 1);
66144 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
66145
66146 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
66147
66148 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
66149 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
66150 END IF;
66151
66152 --
66153 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
66154 --
66155 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
66156 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
66157 ELSE
66158 ---------------------------------------------------------------------------------------------------
66159 -- 4262811a Switch Sign
66160 ---------------------------------------------------------------------------------------------------
66161 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
66162 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
66163 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
66164 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
66165 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
66166 -- 5132302
66167 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
66168 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
66169
66170 END IF;
66171
66172 -- 4955764
66173 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
66174 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
66175
66176
66177 XLA_AE_LINES_PKG.ValidateCurrentLine;
66178 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
66179
66180 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
66181 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
66182 ,p_balance_type_code => l_balance_type_code);
66183
66184 END IF;
66185
66186 -----------------------------------------------------------------------------------------
66187 -- 4262811 Multiperiod Accounting
66188 -----------------------------------------------------------------------------------------
66189 -- No MPA option is assigned.
66190
66191
66192 END IF;
66193 END IF;
66194 --
66195
66196 --
66197 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
66198 trace
66199 (p_msg => 'END of AcctLineType_121'
66200 ,p_level => C_LEVEL_PROCEDURE
66201 ,p_module => l_log_module);
66202 END IF;
66203 --
66204 EXCEPTION
66205 WHEN xla_exceptions_pkg.application_exception THEN
66206 RAISE;
66207 WHEN OTHERS THEN
66208 xla_exceptions_pkg.raise_message
66209 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_121');
66210 END AcctLineType_121;
66211 --
66212
66213 ---------------------------------------
66214 --
66215 -- PRIVATE FUNCTION
66216 -- AcctLineType_122
66217 --
66218 ---------------------------------------
66219 PROCEDURE AcctLineType_122 (
66220 p_application_id IN NUMBER
66221 ,p_event_id IN NUMBER
66222 ,p_calculate_acctd_flag IN VARCHAR2
66223 ,p_calculate_g_l_flag IN VARCHAR2
66224 ,p_actual_flag IN OUT VARCHAR2
66225 ,p_balance_type_code OUT VARCHAR2
66226 ,p_gain_or_loss_ref OUT VARCHAR2
66227
66228 --Cost Management Default Account
66229 , p_source_4 IN NUMBER
66230 --DISTRIBUTION_IDENTIFIER
66231 , p_source_11 IN NUMBER
66232 --Distribution Type
66233 , p_source_12 IN VARCHAR2
66234 , p_source_12_meaning IN VARCHAR2
66235 --Entered Currency Code
66236 , p_source_15 IN VARCHAR2
66237 --Entered Amount
66238 , p_source_18 IN NUMBER
66239 --Currency Conversion Date
66240 , p_source_19 IN DATE
66241 --Currency Conversion Rate
66242 , p_source_20 IN NUMBER
66243 --Currency Conversion Type
66244 , p_source_21 IN VARCHAR2
66245 --Accounted Amount
66246 , p_source_22 IN NUMBER
66247 --Accounting Line Type
66248 , p_source_24 IN NUMBER
66249 )
66250 IS
66251
66252 l_component_type VARCHAR2(80);
66253 l_component_code VARCHAR2(30);
66254 l_component_type_code VARCHAR2(1);
66255 l_component_appl_id INTEGER;
66256 l_amb_context_code VARCHAR2(30);
66257 l_entity_code VARCHAR2(30);
66258 l_event_class_code VARCHAR2(30);
66259 l_ae_header_id NUMBER;
66260 l_event_type_code VARCHAR2(30);
66261 l_line_definition_code VARCHAR2(30);
66262 l_line_definition_owner_code VARCHAR2(1);
66263 --
66264 -- adr variables
66265 l_segment VARCHAR2(30);
66266 l_ccid NUMBER;
66267 l_adr_transaction_coa_id NUMBER;
66268 l_adr_accounting_coa_id NUMBER;
66269 l_adr_flexfield_segment_code VARCHAR2(30);
66270 l_adr_flex_value_set_id NUMBER;
66271 l_adr_value_type_code VARCHAR2(30);
66272 l_adr_value_combination_id NUMBER;
66273 l_adr_value_segment_code VARCHAR2(30);
66274
66275 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
66276 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
66277 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
66278 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
66279
66280 -- 4262811 Variables ------------------------------------------------------------------------------------------
66281 l_entered_amt_idx NUMBER;
66282 l_accted_amt_idx NUMBER;
66283 l_acc_rev_flag VARCHAR2(1);
66284 l_accrual_line_num NUMBER;
66285 l_tmp_amt NUMBER;
66286 l_acc_rev_natural_side_code VARCHAR2(1);
66287
66288 l_num_entries NUMBER;
66289 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
66290 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
66291 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
66292 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
66293 l_recog_line_1 NUMBER;
66294 l_recog_line_2 NUMBER;
66295
66296 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
66297 l_bflow_applied_to_amt NUMBER; -- 5132302
66298 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
66299
66300 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
66301
66302 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
66303 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
66304
66305 ---------------------------------------------------------------------------------------------------------------
66306
66307
66308 --
66309 -- bulk performance
66310 --
66311 l_balance_type_code VARCHAR2(1);
66312 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
66313 l_log_module VARCHAR2(240);
66314
66315 --
66316 -- Upgrade strategy
66317 --
66318 l_actual_upg_option VARCHAR2(1);
66319 l_enc_upg_option VARCHAR2(1);
66320
66321 --
66322 BEGIN
66323 --
66324 IF g_log_enabled THEN
66325 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_122';
66326 END IF;
66327 --
66328 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
66329
66330 trace
66331 (p_msg => 'BEGIN of AcctLineType_122'
66332 ,p_level => C_LEVEL_PROCEDURE
66333 ,p_module => l_log_module);
66334
66335 END IF;
66336 --
66337 l_component_type := 'AMB_JLT';
66338 l_component_code := 'INTRANSIT_VALUATION';
66339 l_component_type_code := 'S';
66340 l_component_appl_id := 707;
66341 l_amb_context_code := 'DEFAULT';
66342 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
66343 l_event_class_code := 'FOB_RCPT_SENDER_RCPT';
66344 l_event_type_code := 'FOB_RCPT_SENDER_RCPT_ALL';
66345 l_line_definition_owner_code := 'S';
66346 l_line_definition_code := 'FOB_RCPT_SENDER_RCPT';
66347 --
66348 l_balance_type_code := 'A';
66349 l_segment := NULL;
66350 l_ccid := NULL;
66351 l_adr_transaction_coa_id := NULL;
66352 l_adr_accounting_coa_id := NULL;
66353 l_adr_flexfield_segment_code := NULL;
66354 l_adr_flex_value_set_id := NULL;
66355 l_adr_value_type_code := NULL;
66356 l_adr_value_combination_id := NULL;
66357 l_adr_value_segment_code := NULL;
66358
66359 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
66360 l_bflow_class_code := ''; -- 4219869 Business Flow
66361 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
66362 l_budgetary_control_flag := 'N';
66363
66364 l_bflow_applied_to_amt_idx := NULL; -- 5132302
66365 l_bflow_applied_to_amt := NULL; -- 5132302
66366 l_entered_amt_idx := NULL; -- 4262811
66367 l_accted_amt_idx := NULL; -- 4262811
66368 l_acc_rev_flag := NULL; -- 4262811
66369 l_accrual_line_num := NULL; -- 4262811
66370 l_tmp_amt := NULL; -- 4262811
66371 --
66372
66373 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
66374 l_balance_type_code <> 'B' THEN
66375 IF NVL(p_source_24,9E125) = 14
66376 THEN
66377
66378 --
66379 XLA_AE_LINES_PKG.SetNewLine;
66380
66381 p_balance_type_code := l_balance_type_code;
66382 -- set the flag so later we will know whether the gain loss line needs to be created
66383
66384 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
66385 p_actual_flag :='A';
66386 END IF;
66387
66388 --
66389 -- bulk performance
66390 --
66391 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
66392 p_header_num => 0); -- 4262811
66393 --
66394 -- set accounting line options
66395 --
66396 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
66397 p_natural_side_code => 'D'
66398 , p_gain_or_loss_flag => 'N'
66399 , p_gl_transfer_mode_code => 'S'
66400 , p_acct_entry_type_code => 'A'
66401 , p_switch_side_flag => 'Y'
66402 , p_merge_duplicate_code => 'N'
66403 );
66404 --
66405 l_acc_rev_natural_side_code := 'C'; -- 4262811
66406 --
66407 --
66408 -- set accounting line type info
66409 --
66410 xla_ae_lines_pkg.SetAcctLineType
66411 (p_component_type => l_component_type
66412 ,p_event_type_code => l_event_type_code
66413 ,p_line_definition_owner_code => l_line_definition_owner_code
66414 ,p_line_definition_code => l_line_definition_code
66415 ,p_accounting_line_code => l_component_code
66416 ,p_accounting_line_type_code => l_component_type_code
66417 ,p_accounting_line_appl_id => l_component_appl_id
66418 ,p_amb_context_code => l_amb_context_code
66419 ,p_entity_code => l_entity_code
66420 ,p_event_class_code => l_event_class_code);
66421 --
66422 -- set accounting class
66423 --
66424 xla_ae_lines_pkg.SetAcctClass(
66425 p_accounting_class_code => 'INTRANSIT_VALUATION'
66426 , p_ae_header_id => l_ae_header_id
66427 );
66428
66429 --
66430 -- set rounding class
66431 --
66432 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
66433 'INTRANSIT_VALUATION';
66434
66435 --
66436 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
66437 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
66438 --
66439 -- bulk performance
66440 --
66441 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
66442
66443 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
66444 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
66445
66446 -- 4955764
66447 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
66448 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
66449
66450 -- 4458381 Public Sector Enh
66451
66452 --
66453 -- set accounting attributes for the line type
66454 --
66455 l_entered_amt_idx := 3;
66456 l_accted_amt_idx := 8;
66457 l_bflow_applied_to_amt_idx := NULL; -- 5132302
66458 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
66459 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
66460 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
66461 l_rec_acct_attrs.array_char_value(2) := p_source_12;
66462 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
66463 l_rec_acct_attrs.array_num_value(3) := p_source_18;
66464 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
66465 l_rec_acct_attrs.array_char_value(4) := p_source_15;
66466 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
66467 l_rec_acct_attrs.array_date_value(5) := p_source_19;
66468 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
66469 l_rec_acct_attrs.array_num_value(6) := p_source_20;
66470 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
66471 l_rec_acct_attrs.array_char_value(7) := p_source_21;
66472 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
66473 l_rec_acct_attrs.array_num_value(8) := p_source_22;
66474
66475 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
66476 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
66477
66478 ---------------------------------------------------------------------------------------------------------------
66479 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
66480 ---------------------------------------------------------------------------------------------------------------
66481 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
66482
66483 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
66484 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
66485
66486 IF xla_accounting_cache_pkg.GetValueChar
66487 (p_source_code => 'LEDGER_CATEGORY_CODE'
66488 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
66489 AND l_bflow_method_code = 'PRIOR_ENTRY'
66490 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
66491 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
66492 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
66493 )
66494 THEN
66495 xla_ae_lines_pkg.BflowUpgEntry
66496 (p_business_method_code => l_bflow_method_code
66497 ,p_business_class_code => l_bflow_class_code
66498 ,p_balance_type => l_balance_type_code);
66499 ELSE
66500 NULL;
66501 -- No business flow processing for business flow method of NONE.
66502 END IF;
66503
66504 --
66505 -- call analytical criteria
66506 --
66507
66508 --
66509 -- call description
66510 --
66511 -- No description or it is inherited.
66512 --
66513 -- call ADRs
66514 -- Bug 4922099
66515 --
66516 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
66517 (NVL(l_actual_upg_option, 'N') = 'O') OR
66518 (NVL(l_enc_upg_option, 'N') = 'O')
66519 )
66520 THEN
66521 NULL;
66522 --
66523 --
66524
66525 l_ccid := AcctDerRule_4(
66526 p_application_id => p_application_id
66527 , p_ae_header_id => l_ae_header_id
66528 , p_source_4 => p_source_4
66529 , x_transaction_coa_id => l_adr_transaction_coa_id
66530 , x_accounting_coa_id => l_adr_accounting_coa_id
66531 , x_value_type_code => l_adr_value_type_code
66532 , p_side => 'NA'
66533 );
66534
66535 xla_ae_lines_pkg.set_ccid(
66536 p_code_combination_id => l_ccid
66537 , p_value_type_code => l_adr_value_type_code
66538 , p_transaction_coa_id => l_adr_transaction_coa_id
66539 , p_accounting_coa_id => l_adr_accounting_coa_id
66540 , p_adr_code => 'CST_DEFAULT'
66541 , p_adr_type_code => 'S'
66542 , p_component_type => l_component_type
66543 , p_component_code => l_component_code
66544 , p_component_type_code => l_component_type_code
66545 , p_component_appl_id => l_component_appl_id
66546 , p_amb_context_code => l_amb_context_code
66547 , p_side => 'NA'
66548 );
66549
66550
66551 --
66552 --
66553 END IF;
66554 --
66555 -- Bug 4922099
66556 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
66557 (NVL(l_enc_upg_option, 'N') = 'O')
66558 ) AND
66559 (l_bflow_method_code = 'PRIOR_ENTRY')
66560 )
66561 THEN
66562 IF
66563 --
66564 1 = 2
66565 --
66566 THEN
66567 xla_accounting_err_pkg.build_message
66568 (p_appli_s_name => 'XLA'
66569 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
66570 ,p_token_1 => 'LINE_NUMBER'
66571 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
66572 ,p_token_2 => 'LINE_TYPE_NAME'
66573 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
66574 l_component_type
66575 ,l_component_code
66576 ,l_component_type_code
66577 ,l_component_appl_id
66578 ,l_amb_context_code
66579 ,l_entity_code
66580 ,l_event_class_code
66581 )
66582 ,p_token_3 => 'OWNER'
66583 ,p_value_3 => xla_lookups_pkg.get_meaning(
66584 p_lookup_type => 'XLA_OWNER_TYPE'
66585 ,p_lookup_code => l_component_type_code
66586 )
66587 ,p_token_4 => 'PRODUCT_NAME'
66588 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
66589 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
66590 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
66591 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
66592 ,p_ae_header_id => NULL
66593 );
66594
66595 IF (C_LEVEL_ERROR>= g_log_level) THEN
66596 trace
66597 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
66598 ,p_level => C_LEVEL_ERROR
66599 ,p_module => l_log_module);
66600 END IF;
66601 END IF;
66602 END IF;
66603 --
66604 --
66605 ------------------------------------------------------------------------------------------------
66606 -- 4219869 Business Flow
66607 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
66608 -- Prior Entry. Currently, the following code is always generated.
66609 ------------------------------------------------------------------------------------------------
66610 XLA_AE_LINES_PKG.ValidateCurrentLine;
66611
66612 ------------------------------------------------------------------------------------
66613 -- 4219869 Business Flow
66614 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
66615 ------------------------------------------------------------------------------------
66616 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
66617
66618 ----------------------------------------------------------------------------------
66619 -- 4219869 Business Flow
66620 -- Update journal entry status -- Need to generate this within IF <condition>
66621 ----------------------------------------------------------------------------------
66622 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
66623 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
66624 ,p_balance_type_code => l_balance_type_code
66625 );
66626
66627 -------------------------------------------------------------------------------------------
66628 -- 4262811 - Generate the Accrual Reversal lines
66629 -------------------------------------------------------------------------------------------
66630 BEGIN
66631 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
66632 (g_array_event(p_event_id).array_value_num('header_index'));
66633 IF l_acc_rev_flag IS NULL THEN
66634 l_acc_rev_flag := 'N';
66635 END IF;
66636 EXCEPTION
66637 WHEN OTHERS THEN
66638 l_acc_rev_flag := 'N';
66639 END;
66640 --
66641 IF (l_acc_rev_flag = 'Y') THEN
66642
66643 -- 4645092 ------------------------------------------------------------------------------
66644 -- To allow MPA report to determine if it should generate report process
66645 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
66646 ------------------------------------------------------------------------------------------
66647
66648 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
66649 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
66650 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
66651 -- call ADRs
66652 -- Bug 4922099
66653 --
66654 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
66655 (NVL(l_actual_upg_option, 'N') = 'O') OR
66656 (NVL(l_enc_upg_option, 'N') = 'O')
66657 )
66658 THEN
66659 NULL;
66660 --
66661 --
66662
66663 l_ccid := AcctDerRule_4(
66664 p_application_id => p_application_id
66665 , p_ae_header_id => l_ae_header_id
66666 , p_source_4 => p_source_4
66667 , x_transaction_coa_id => l_adr_transaction_coa_id
66668 , x_accounting_coa_id => l_adr_accounting_coa_id
66669 , x_value_type_code => l_adr_value_type_code
66670 , p_side => 'NA'
66671 );
66672
66673 xla_ae_lines_pkg.set_ccid(
66674 p_code_combination_id => l_ccid
66675 , p_value_type_code => l_adr_value_type_code
66676 , p_transaction_coa_id => l_adr_transaction_coa_id
66677 , p_accounting_coa_id => l_adr_accounting_coa_id
66678 , p_adr_code => 'CST_DEFAULT'
66679 , p_adr_type_code => 'S'
66680 , p_component_type => l_component_type
66681 , p_component_code => l_component_code
66682 , p_component_type_code => l_component_type_code
66683 , p_component_appl_id => l_component_appl_id
66684 , p_amb_context_code => l_amb_context_code
66685 , p_side => 'NA'
66686 );
66687
66688
66689 --
66690 --
66691 END IF;
66692
66693 --
66694 -- Update the line information that should be overwritten
66695 --
66696 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
66697 p_header_num => 1);
66698 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
66699
66700 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
66701
66702 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
66703 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
66704 END IF;
66705
66706 --
66707 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
66708 --
66709 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
66710 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
66711 ELSE
66712 ---------------------------------------------------------------------------------------------------
66713 -- 4262811a Switch Sign
66714 ---------------------------------------------------------------------------------------------------
66715 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
66716 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
66717 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
66718 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
66719 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
66720 -- 5132302
66721 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
66722 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
66723
66724 END IF;
66725
66726 -- 4955764
66727 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
66728 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
66729
66730
66731 XLA_AE_LINES_PKG.ValidateCurrentLine;
66732 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
66733
66734 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
66735 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
66736 ,p_balance_type_code => l_balance_type_code);
66737
66738 END IF;
66739
66740 -----------------------------------------------------------------------------------------
66741 -- 4262811 Multiperiod Accounting
66742 -----------------------------------------------------------------------------------------
66743 -- No MPA option is assigned.
66744
66745
66746 END IF;
66747 END IF;
66748 --
66749
66750 --
66751 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
66752 trace
66753 (p_msg => 'END of AcctLineType_122'
66754 ,p_level => C_LEVEL_PROCEDURE
66755 ,p_module => l_log_module);
66756 END IF;
66757 --
66758 EXCEPTION
66759 WHEN xla_exceptions_pkg.application_exception THEN
66760 RAISE;
66761 WHEN OTHERS THEN
66762 xla_exceptions_pkg.raise_message
66763 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_122');
66764 END AcctLineType_122;
66765 --
66766
66767 ---------------------------------------
66768 --
66769 -- PRIVATE FUNCTION
66770 -- AcctLineType_123
66771 --
66772 ---------------------------------------
66773 PROCEDURE AcctLineType_123 (
66774 p_application_id IN NUMBER
66775 ,p_event_id IN NUMBER
66776 ,p_calculate_acctd_flag IN VARCHAR2
66777 ,p_calculate_g_l_flag IN VARCHAR2
66778 ,p_actual_flag IN OUT VARCHAR2
66779 ,p_balance_type_code OUT VARCHAR2
66780 ,p_gain_or_loss_ref OUT VARCHAR2
66781
66782 --Cost Management Default Account
66783 , p_source_4 IN NUMBER
66784 --DISTRIBUTION_IDENTIFIER
66785 , p_source_11 IN NUMBER
66786 --Distribution Type
66787 , p_source_12 IN VARCHAR2
66788 , p_source_12_meaning IN VARCHAR2
66789 --Entered Currency Code
66790 , p_source_15 IN VARCHAR2
66791 --Entered Amount
66792 , p_source_18 IN NUMBER
66793 --Currency Conversion Date
66794 , p_source_19 IN DATE
66795 --Currency Conversion Rate
66796 , p_source_20 IN NUMBER
66797 --Currency Conversion Type
66798 , p_source_21 IN VARCHAR2
66799 --Accounted Amount
66800 , p_source_22 IN NUMBER
66801 --Accounting Line Type
66802 , p_source_24 IN NUMBER
66803 )
66804 IS
66805
66806 l_component_type VARCHAR2(80);
66807 l_component_code VARCHAR2(30);
66808 l_component_type_code VARCHAR2(1);
66809 l_component_appl_id INTEGER;
66810 l_amb_context_code VARCHAR2(30);
66811 l_entity_code VARCHAR2(30);
66812 l_event_class_code VARCHAR2(30);
66813 l_ae_header_id NUMBER;
66814 l_event_type_code VARCHAR2(30);
66815 l_line_definition_code VARCHAR2(30);
66816 l_line_definition_owner_code VARCHAR2(1);
66817 --
66818 -- adr variables
66819 l_segment VARCHAR2(30);
66820 l_ccid NUMBER;
66821 l_adr_transaction_coa_id NUMBER;
66822 l_adr_accounting_coa_id NUMBER;
66823 l_adr_flexfield_segment_code VARCHAR2(30);
66824 l_adr_flex_value_set_id NUMBER;
66825 l_adr_value_type_code VARCHAR2(30);
66826 l_adr_value_combination_id NUMBER;
66827 l_adr_value_segment_code VARCHAR2(30);
66828
66829 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
66830 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
66831 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
66832 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
66833
66834 -- 4262811 Variables ------------------------------------------------------------------------------------------
66835 l_entered_amt_idx NUMBER;
66836 l_accted_amt_idx NUMBER;
66837 l_acc_rev_flag VARCHAR2(1);
66838 l_accrual_line_num NUMBER;
66839 l_tmp_amt NUMBER;
66840 l_acc_rev_natural_side_code VARCHAR2(1);
66841
66842 l_num_entries NUMBER;
66843 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
66844 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
66845 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
66846 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
66847 l_recog_line_1 NUMBER;
66848 l_recog_line_2 NUMBER;
66849
66850 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
66851 l_bflow_applied_to_amt NUMBER; -- 5132302
66852 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
66853
66854 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
66855
66856 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
66857 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
66858
66859 ---------------------------------------------------------------------------------------------------------------
66860
66861
66862 --
66863 -- bulk performance
66864 --
66865 l_balance_type_code VARCHAR2(1);
66866 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
66867 l_log_module VARCHAR2(240);
66868
66869 --
66870 -- Upgrade strategy
66871 --
66872 l_actual_upg_option VARCHAR2(1);
66873 l_enc_upg_option VARCHAR2(1);
66874
66875 --
66876 BEGIN
66877 --
66878 IF g_log_enabled THEN
66879 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_123';
66880 END IF;
66881 --
66882 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
66883
66884 trace
66885 (p_msg => 'BEGIN of AcctLineType_123'
66886 ,p_level => C_LEVEL_PROCEDURE
66887 ,p_module => l_log_module);
66888
66889 END IF;
66890 --
66891 l_component_type := 'AMB_JLT';
66892 l_component_code := 'INTRANSIT_VALUATION';
66893 l_component_type_code := 'S';
66894 l_component_appl_id := 707;
66895 l_amb_context_code := 'DEFAULT';
66896 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
66897 l_event_class_code := 'USER_DEFINE';
66898 l_event_type_code := 'UFOB_SHIP_RECIPIENT_SHIP_TP';
66899 l_line_definition_owner_code := 'S';
66900 l_line_definition_code := 'USER_FOB_SHIP_RECP_SHIP_TP';
66901 --
66902 l_balance_type_code := 'A';
66903 l_segment := NULL;
66904 l_ccid := NULL;
66905 l_adr_transaction_coa_id := NULL;
66906 l_adr_accounting_coa_id := NULL;
66907 l_adr_flexfield_segment_code := NULL;
66908 l_adr_flex_value_set_id := NULL;
66909 l_adr_value_type_code := NULL;
66910 l_adr_value_combination_id := NULL;
66911 l_adr_value_segment_code := NULL;
66912
66913 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
66914 l_bflow_class_code := ''; -- 4219869 Business Flow
66915 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
66916 l_budgetary_control_flag := 'N';
66917
66918 l_bflow_applied_to_amt_idx := NULL; -- 5132302
66919 l_bflow_applied_to_amt := NULL; -- 5132302
66920 l_entered_amt_idx := NULL; -- 4262811
66921 l_accted_amt_idx := NULL; -- 4262811
66922 l_acc_rev_flag := NULL; -- 4262811
66923 l_accrual_line_num := NULL; -- 4262811
66924 l_tmp_amt := NULL; -- 4262811
66925 --
66926
66927 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
66928 l_balance_type_code <> 'B' THEN
66929 IF NVL(p_source_24,9E125) = 14
66930 THEN
66931
66932 --
66933 XLA_AE_LINES_PKG.SetNewLine;
66934
66935 p_balance_type_code := l_balance_type_code;
66936 -- set the flag so later we will know whether the gain loss line needs to be created
66937
66938 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
66939 p_actual_flag :='A';
66940 END IF;
66941
66942 --
66943 -- bulk performance
66944 --
66945 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
66946 p_header_num => 0); -- 4262811
66947 --
66948 -- set accounting line options
66949 --
66950 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
66951 p_natural_side_code => 'D'
66952 , p_gain_or_loss_flag => 'N'
66953 , p_gl_transfer_mode_code => 'S'
66954 , p_acct_entry_type_code => 'A'
66955 , p_switch_side_flag => 'Y'
66956 , p_merge_duplicate_code => 'N'
66957 );
66958 --
66959 l_acc_rev_natural_side_code := 'C'; -- 4262811
66960 --
66961 --
66962 -- set accounting line type info
66963 --
66964 xla_ae_lines_pkg.SetAcctLineType
66965 (p_component_type => l_component_type
66966 ,p_event_type_code => l_event_type_code
66967 ,p_line_definition_owner_code => l_line_definition_owner_code
66968 ,p_line_definition_code => l_line_definition_code
66969 ,p_accounting_line_code => l_component_code
66970 ,p_accounting_line_type_code => l_component_type_code
66971 ,p_accounting_line_appl_id => l_component_appl_id
66972 ,p_amb_context_code => l_amb_context_code
66973 ,p_entity_code => l_entity_code
66974 ,p_event_class_code => l_event_class_code);
66975 --
66976 -- set accounting class
66977 --
66978 xla_ae_lines_pkg.SetAcctClass(
66979 p_accounting_class_code => 'INTRANSIT_VALUATION'
66980 , p_ae_header_id => l_ae_header_id
66981 );
66982
66983 --
66984 -- set rounding class
66985 --
66986 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
66987 'INTRANSIT_VALUATION';
66988
66989 --
66990 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
66991 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
66992 --
66993 -- bulk performance
66994 --
66995 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
66996
66997 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
66998 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
66999
67000 -- 4955764
67001 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
67002 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
67003
67004 -- 4458381 Public Sector Enh
67005
67006 --
67007 -- set accounting attributes for the line type
67008 --
67009 l_entered_amt_idx := 3;
67010 l_accted_amt_idx := 8;
67011 l_bflow_applied_to_amt_idx := NULL; -- 5132302
67012 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
67013 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
67014 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
67015 l_rec_acct_attrs.array_char_value(2) := p_source_12;
67016 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
67017 l_rec_acct_attrs.array_num_value(3) := p_source_18;
67018 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
67019 l_rec_acct_attrs.array_char_value(4) := p_source_15;
67020 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
67021 l_rec_acct_attrs.array_date_value(5) := p_source_19;
67022 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
67023 l_rec_acct_attrs.array_num_value(6) := p_source_20;
67024 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
67025 l_rec_acct_attrs.array_char_value(7) := p_source_21;
67026 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
67027 l_rec_acct_attrs.array_num_value(8) := p_source_22;
67028
67029 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
67030 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
67031
67032 ---------------------------------------------------------------------------------------------------------------
67033 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
67034 ---------------------------------------------------------------------------------------------------------------
67035 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
67036
67037 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
67038 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
67039
67040 IF xla_accounting_cache_pkg.GetValueChar
67041 (p_source_code => 'LEDGER_CATEGORY_CODE'
67042 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
67043 AND l_bflow_method_code = 'PRIOR_ENTRY'
67044 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
67045 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
67046 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
67047 )
67048 THEN
67049 xla_ae_lines_pkg.BflowUpgEntry
67050 (p_business_method_code => l_bflow_method_code
67051 ,p_business_class_code => l_bflow_class_code
67052 ,p_balance_type => l_balance_type_code);
67053 ELSE
67054 NULL;
67055 -- No business flow processing for business flow method of NONE.
67056 END IF;
67057
67058 --
67059 -- call analytical criteria
67060 --
67061
67062 --
67063 -- call description
67064 --
67065 -- No description or it is inherited.
67066 --
67067 -- call ADRs
67068 -- Bug 4922099
67069 --
67070 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
67071 (NVL(l_actual_upg_option, 'N') = 'O') OR
67072 (NVL(l_enc_upg_option, 'N') = 'O')
67073 )
67074 THEN
67075 NULL;
67076 --
67077 --
67078
67079 l_ccid := AcctDerRule_4(
67080 p_application_id => p_application_id
67081 , p_ae_header_id => l_ae_header_id
67082 , p_source_4 => p_source_4
67083 , x_transaction_coa_id => l_adr_transaction_coa_id
67084 , x_accounting_coa_id => l_adr_accounting_coa_id
67085 , x_value_type_code => l_adr_value_type_code
67086 , p_side => 'NA'
67087 );
67088
67089 xla_ae_lines_pkg.set_ccid(
67090 p_code_combination_id => l_ccid
67091 , p_value_type_code => l_adr_value_type_code
67092 , p_transaction_coa_id => l_adr_transaction_coa_id
67093 , p_accounting_coa_id => l_adr_accounting_coa_id
67094 , p_adr_code => 'CST_DEFAULT'
67095 , p_adr_type_code => 'S'
67096 , p_component_type => l_component_type
67097 , p_component_code => l_component_code
67098 , p_component_type_code => l_component_type_code
67099 , p_component_appl_id => l_component_appl_id
67100 , p_amb_context_code => l_amb_context_code
67101 , p_side => 'NA'
67102 );
67103
67104
67105 --
67106 --
67107 END IF;
67108 --
67109 -- Bug 4922099
67110 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
67111 (NVL(l_enc_upg_option, 'N') = 'O')
67112 ) AND
67113 (l_bflow_method_code = 'PRIOR_ENTRY')
67114 )
67115 THEN
67116 IF
67117 --
67118 1 = 2
67119 --
67120 THEN
67121 xla_accounting_err_pkg.build_message
67122 (p_appli_s_name => 'XLA'
67123 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
67124 ,p_token_1 => 'LINE_NUMBER'
67125 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
67126 ,p_token_2 => 'LINE_TYPE_NAME'
67127 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
67128 l_component_type
67129 ,l_component_code
67130 ,l_component_type_code
67131 ,l_component_appl_id
67132 ,l_amb_context_code
67133 ,l_entity_code
67134 ,l_event_class_code
67135 )
67136 ,p_token_3 => 'OWNER'
67137 ,p_value_3 => xla_lookups_pkg.get_meaning(
67138 p_lookup_type => 'XLA_OWNER_TYPE'
67139 ,p_lookup_code => l_component_type_code
67140 )
67141 ,p_token_4 => 'PRODUCT_NAME'
67142 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
67143 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
67144 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
67145 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
67146 ,p_ae_header_id => NULL
67147 );
67148
67149 IF (C_LEVEL_ERROR>= g_log_level) THEN
67150 trace
67151 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
67152 ,p_level => C_LEVEL_ERROR
67153 ,p_module => l_log_module);
67154 END IF;
67155 END IF;
67156 END IF;
67157 --
67158 --
67159 ------------------------------------------------------------------------------------------------
67160 -- 4219869 Business Flow
67161 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
67162 -- Prior Entry. Currently, the following code is always generated.
67163 ------------------------------------------------------------------------------------------------
67164 XLA_AE_LINES_PKG.ValidateCurrentLine;
67165
67166 ------------------------------------------------------------------------------------
67167 -- 4219869 Business Flow
67168 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
67169 ------------------------------------------------------------------------------------
67170 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
67171
67172 ----------------------------------------------------------------------------------
67173 -- 4219869 Business Flow
67174 -- Update journal entry status -- Need to generate this within IF <condition>
67175 ----------------------------------------------------------------------------------
67176 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
67177 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
67178 ,p_balance_type_code => l_balance_type_code
67179 );
67180
67181 -------------------------------------------------------------------------------------------
67182 -- 4262811 - Generate the Accrual Reversal lines
67183 -------------------------------------------------------------------------------------------
67184 BEGIN
67185 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
67186 (g_array_event(p_event_id).array_value_num('header_index'));
67187 IF l_acc_rev_flag IS NULL THEN
67188 l_acc_rev_flag := 'N';
67189 END IF;
67190 EXCEPTION
67191 WHEN OTHERS THEN
67192 l_acc_rev_flag := 'N';
67193 END;
67194 --
67195 IF (l_acc_rev_flag = 'Y') THEN
67196
67197 -- 4645092 ------------------------------------------------------------------------------
67198 -- To allow MPA report to determine if it should generate report process
67199 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
67200 ------------------------------------------------------------------------------------------
67201
67202 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
67203 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
67204 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
67205 -- call ADRs
67206 -- Bug 4922099
67207 --
67208 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
67209 (NVL(l_actual_upg_option, 'N') = 'O') OR
67210 (NVL(l_enc_upg_option, 'N') = 'O')
67211 )
67212 THEN
67213 NULL;
67214 --
67215 --
67216
67217 l_ccid := AcctDerRule_4(
67218 p_application_id => p_application_id
67219 , p_ae_header_id => l_ae_header_id
67220 , p_source_4 => p_source_4
67221 , x_transaction_coa_id => l_adr_transaction_coa_id
67222 , x_accounting_coa_id => l_adr_accounting_coa_id
67223 , x_value_type_code => l_adr_value_type_code
67224 , p_side => 'NA'
67225 );
67226
67227 xla_ae_lines_pkg.set_ccid(
67228 p_code_combination_id => l_ccid
67229 , p_value_type_code => l_adr_value_type_code
67230 , p_transaction_coa_id => l_adr_transaction_coa_id
67231 , p_accounting_coa_id => l_adr_accounting_coa_id
67232 , p_adr_code => 'CST_DEFAULT'
67233 , p_adr_type_code => 'S'
67234 , p_component_type => l_component_type
67235 , p_component_code => l_component_code
67236 , p_component_type_code => l_component_type_code
67237 , p_component_appl_id => l_component_appl_id
67238 , p_amb_context_code => l_amb_context_code
67239 , p_side => 'NA'
67240 );
67241
67242
67243 --
67244 --
67245 END IF;
67246
67247 --
67248 -- Update the line information that should be overwritten
67249 --
67250 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
67251 p_header_num => 1);
67252 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
67253
67254 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
67255
67256 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
67257 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
67258 END IF;
67259
67260 --
67261 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
67262 --
67263 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
67264 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
67265 ELSE
67266 ---------------------------------------------------------------------------------------------------
67267 -- 4262811a Switch Sign
67268 ---------------------------------------------------------------------------------------------------
67269 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
67270 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
67271 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
67272 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
67273 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
67274 -- 5132302
67275 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
67276 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
67277
67278 END IF;
67279
67280 -- 4955764
67281 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
67282 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
67283
67284
67285 XLA_AE_LINES_PKG.ValidateCurrentLine;
67286 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
67287
67288 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
67289 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
67290 ,p_balance_type_code => l_balance_type_code);
67291
67292 END IF;
67293
67294 -----------------------------------------------------------------------------------------
67295 -- 4262811 Multiperiod Accounting
67296 -----------------------------------------------------------------------------------------
67297 -- No MPA option is assigned.
67298
67299
67300 END IF;
67301 END IF;
67302 --
67303
67304 --
67305 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
67306 trace
67307 (p_msg => 'END of AcctLineType_123'
67308 ,p_level => C_LEVEL_PROCEDURE
67309 ,p_module => l_log_module);
67310 END IF;
67311 --
67312 EXCEPTION
67313 WHEN xla_exceptions_pkg.application_exception THEN
67314 RAISE;
67315 WHEN OTHERS THEN
67316 xla_exceptions_pkg.raise_message
67317 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_123');
67318 END AcctLineType_123;
67319 --
67320
67321 ---------------------------------------
67322 --
67323 -- PRIVATE FUNCTION
67324 -- AcctLineType_124
67325 --
67326 ---------------------------------------
67327 PROCEDURE AcctLineType_124 (
67328 p_application_id IN NUMBER
67329 ,p_event_id IN NUMBER
67330 ,p_calculate_acctd_flag IN VARCHAR2
67331 ,p_calculate_g_l_flag IN VARCHAR2
67332 ,p_actual_flag IN OUT VARCHAR2
67333 ,p_balance_type_code OUT VARCHAR2
67334 ,p_gain_or_loss_ref OUT VARCHAR2
67335
67336 --Cost Management Default Account
67337 , p_source_4 IN NUMBER
67338 --DISTRIBUTION_IDENTIFIER
67339 , p_source_11 IN NUMBER
67340 --Distribution Type
67341 , p_source_12 IN VARCHAR2
67342 , p_source_12_meaning IN VARCHAR2
67343 --Entered Currency Code
67344 , p_source_15 IN VARCHAR2
67345 --Entered Amount
67346 , p_source_18 IN NUMBER
67347 --Currency Conversion Date
67348 , p_source_19 IN DATE
67349 --Currency Conversion Rate
67350 , p_source_20 IN NUMBER
67351 --Currency Conversion Type
67352 , p_source_21 IN VARCHAR2
67353 --Accounted Amount
67354 , p_source_22 IN NUMBER
67355 --Accounting Line Type
67356 , p_source_24 IN NUMBER
67357 )
67358 IS
67359
67360 l_component_type VARCHAR2(80);
67361 l_component_code VARCHAR2(30);
67362 l_component_type_code VARCHAR2(1);
67363 l_component_appl_id INTEGER;
67364 l_amb_context_code VARCHAR2(30);
67365 l_entity_code VARCHAR2(30);
67366 l_event_class_code VARCHAR2(30);
67367 l_ae_header_id NUMBER;
67368 l_event_type_code VARCHAR2(30);
67369 l_line_definition_code VARCHAR2(30);
67370 l_line_definition_owner_code VARCHAR2(1);
67371 --
67372 -- adr variables
67373 l_segment VARCHAR2(30);
67374 l_ccid NUMBER;
67375 l_adr_transaction_coa_id NUMBER;
67376 l_adr_accounting_coa_id NUMBER;
67377 l_adr_flexfield_segment_code VARCHAR2(30);
67378 l_adr_flex_value_set_id NUMBER;
67379 l_adr_value_type_code VARCHAR2(30);
67380 l_adr_value_combination_id NUMBER;
67381 l_adr_value_segment_code VARCHAR2(30);
67382
67383 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
67384 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
67385 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
67386 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
67387
67388 -- 4262811 Variables ------------------------------------------------------------------------------------------
67389 l_entered_amt_idx NUMBER;
67390 l_accted_amt_idx NUMBER;
67391 l_acc_rev_flag VARCHAR2(1);
67392 l_accrual_line_num NUMBER;
67393 l_tmp_amt NUMBER;
67394 l_acc_rev_natural_side_code VARCHAR2(1);
67395
67396 l_num_entries NUMBER;
67397 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
67398 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
67399 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
67400 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
67401 l_recog_line_1 NUMBER;
67402 l_recog_line_2 NUMBER;
67403
67404 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
67405 l_bflow_applied_to_amt NUMBER; -- 5132302
67406 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
67407
67408 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
67409
67410 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
67411 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
67412
67413 ---------------------------------------------------------------------------------------------------------------
67414
67415
67416 --
67417 -- bulk performance
67418 --
67419 l_balance_type_code VARCHAR2(1);
67420 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
67421 l_log_module VARCHAR2(240);
67422
67423 --
67424 -- Upgrade strategy
67425 --
67426 l_actual_upg_option VARCHAR2(1);
67427 l_enc_upg_option VARCHAR2(1);
67428
67429 --
67430 BEGIN
67431 --
67432 IF g_log_enabled THEN
67433 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_124';
67434 END IF;
67435 --
67436 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
67437
67438 trace
67439 (p_msg => 'BEGIN of AcctLineType_124'
67440 ,p_level => C_LEVEL_PROCEDURE
67441 ,p_module => l_log_module);
67442
67443 END IF;
67444 --
67445 l_component_type := 'AMB_JLT';
67446 l_component_code := 'INTRANSIT_VALUATION';
67447 l_component_type_code := 'S';
67448 l_component_appl_id := 707;
67449 l_amb_context_code := 'DEFAULT';
67450 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
67451 l_event_class_code := 'USER_DEFINE';
67452 l_event_type_code := 'UFOB_SHIP_RECIPIENT_SHIP_NO_TP';
67453 l_line_definition_owner_code := 'S';
67454 l_line_definition_code := 'USER_FOB_SHIP_RECP_SHIP_NO_TP';
67455 --
67456 l_balance_type_code := 'A';
67457 l_segment := NULL;
67458 l_ccid := NULL;
67459 l_adr_transaction_coa_id := NULL;
67460 l_adr_accounting_coa_id := NULL;
67461 l_adr_flexfield_segment_code := NULL;
67462 l_adr_flex_value_set_id := NULL;
67463 l_adr_value_type_code := NULL;
67464 l_adr_value_combination_id := NULL;
67465 l_adr_value_segment_code := NULL;
67466
67467 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
67468 l_bflow_class_code := ''; -- 4219869 Business Flow
67469 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
67470 l_budgetary_control_flag := 'N';
67471
67472 l_bflow_applied_to_amt_idx := NULL; -- 5132302
67473 l_bflow_applied_to_amt := NULL; -- 5132302
67474 l_entered_amt_idx := NULL; -- 4262811
67475 l_accted_amt_idx := NULL; -- 4262811
67476 l_acc_rev_flag := NULL; -- 4262811
67477 l_accrual_line_num := NULL; -- 4262811
67478 l_tmp_amt := NULL; -- 4262811
67479 --
67480
67481 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
67482 l_balance_type_code <> 'B' THEN
67483 IF NVL(p_source_24,9E125) = 14
67484 THEN
67485
67486 --
67487 XLA_AE_LINES_PKG.SetNewLine;
67488
67489 p_balance_type_code := l_balance_type_code;
67490 -- set the flag so later we will know whether the gain loss line needs to be created
67491
67492 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
67493 p_actual_flag :='A';
67494 END IF;
67495
67496 --
67497 -- bulk performance
67498 --
67499 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
67500 p_header_num => 0); -- 4262811
67501 --
67502 -- set accounting line options
67503 --
67504 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
67505 p_natural_side_code => 'D'
67506 , p_gain_or_loss_flag => 'N'
67507 , p_gl_transfer_mode_code => 'S'
67508 , p_acct_entry_type_code => 'A'
67509 , p_switch_side_flag => 'Y'
67510 , p_merge_duplicate_code => 'N'
67511 );
67512 --
67513 l_acc_rev_natural_side_code := 'C'; -- 4262811
67514 --
67515 --
67516 -- set accounting line type info
67517 --
67518 xla_ae_lines_pkg.SetAcctLineType
67519 (p_component_type => l_component_type
67520 ,p_event_type_code => l_event_type_code
67521 ,p_line_definition_owner_code => l_line_definition_owner_code
67522 ,p_line_definition_code => l_line_definition_code
67523 ,p_accounting_line_code => l_component_code
67524 ,p_accounting_line_type_code => l_component_type_code
67525 ,p_accounting_line_appl_id => l_component_appl_id
67526 ,p_amb_context_code => l_amb_context_code
67527 ,p_entity_code => l_entity_code
67528 ,p_event_class_code => l_event_class_code);
67529 --
67530 -- set accounting class
67531 --
67532 xla_ae_lines_pkg.SetAcctClass(
67533 p_accounting_class_code => 'INTRANSIT_VALUATION'
67534 , p_ae_header_id => l_ae_header_id
67535 );
67536
67537 --
67538 -- set rounding class
67539 --
67540 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
67541 'INTRANSIT_VALUATION';
67542
67543 --
67544 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
67545 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
67546 --
67547 -- bulk performance
67548 --
67549 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
67550
67551 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
67552 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
67553
67554 -- 4955764
67555 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
67556 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
67557
67558 -- 4458381 Public Sector Enh
67559
67560 --
67561 -- set accounting attributes for the line type
67562 --
67563 l_entered_amt_idx := 3;
67564 l_accted_amt_idx := 8;
67565 l_bflow_applied_to_amt_idx := NULL; -- 5132302
67566 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
67567 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
67568 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
67569 l_rec_acct_attrs.array_char_value(2) := p_source_12;
67570 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
67571 l_rec_acct_attrs.array_num_value(3) := p_source_18;
67572 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
67573 l_rec_acct_attrs.array_char_value(4) := p_source_15;
67574 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
67575 l_rec_acct_attrs.array_date_value(5) := p_source_19;
67576 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
67577 l_rec_acct_attrs.array_num_value(6) := p_source_20;
67578 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
67579 l_rec_acct_attrs.array_char_value(7) := p_source_21;
67580 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
67581 l_rec_acct_attrs.array_num_value(8) := p_source_22;
67582
67583 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
67584 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
67585
67586 ---------------------------------------------------------------------------------------------------------------
67587 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
67588 ---------------------------------------------------------------------------------------------------------------
67589 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
67590
67591 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
67592 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
67593
67594 IF xla_accounting_cache_pkg.GetValueChar
67595 (p_source_code => 'LEDGER_CATEGORY_CODE'
67596 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
67597 AND l_bflow_method_code = 'PRIOR_ENTRY'
67598 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
67599 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
67600 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
67601 )
67602 THEN
67603 xla_ae_lines_pkg.BflowUpgEntry
67604 (p_business_method_code => l_bflow_method_code
67605 ,p_business_class_code => l_bflow_class_code
67606 ,p_balance_type => l_balance_type_code);
67607 ELSE
67608 NULL;
67609 -- No business flow processing for business flow method of NONE.
67610 END IF;
67611
67612 --
67613 -- call analytical criteria
67614 --
67615
67616 --
67617 -- call description
67618 --
67619 -- No description or it is inherited.
67620 --
67621 -- call ADRs
67622 -- Bug 4922099
67623 --
67624 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
67625 (NVL(l_actual_upg_option, 'N') = 'O') OR
67626 (NVL(l_enc_upg_option, 'N') = 'O')
67627 )
67628 THEN
67629 NULL;
67630 --
67631 --
67632
67633 l_ccid := AcctDerRule_4(
67634 p_application_id => p_application_id
67635 , p_ae_header_id => l_ae_header_id
67636 , p_source_4 => p_source_4
67637 , x_transaction_coa_id => l_adr_transaction_coa_id
67638 , x_accounting_coa_id => l_adr_accounting_coa_id
67639 , x_value_type_code => l_adr_value_type_code
67640 , p_side => 'NA'
67641 );
67642
67643 xla_ae_lines_pkg.set_ccid(
67644 p_code_combination_id => l_ccid
67645 , p_value_type_code => l_adr_value_type_code
67646 , p_transaction_coa_id => l_adr_transaction_coa_id
67647 , p_accounting_coa_id => l_adr_accounting_coa_id
67648 , p_adr_code => 'CST_DEFAULT'
67649 , p_adr_type_code => 'S'
67650 , p_component_type => l_component_type
67651 , p_component_code => l_component_code
67652 , p_component_type_code => l_component_type_code
67653 , p_component_appl_id => l_component_appl_id
67654 , p_amb_context_code => l_amb_context_code
67655 , p_side => 'NA'
67656 );
67657
67658
67659 --
67660 --
67661 END IF;
67662 --
67663 -- Bug 4922099
67664 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
67665 (NVL(l_enc_upg_option, 'N') = 'O')
67666 ) AND
67667 (l_bflow_method_code = 'PRIOR_ENTRY')
67668 )
67669 THEN
67670 IF
67671 --
67672 1 = 2
67673 --
67674 THEN
67675 xla_accounting_err_pkg.build_message
67676 (p_appli_s_name => 'XLA'
67677 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
67678 ,p_token_1 => 'LINE_NUMBER'
67679 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
67680 ,p_token_2 => 'LINE_TYPE_NAME'
67681 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
67682 l_component_type
67683 ,l_component_code
67684 ,l_component_type_code
67685 ,l_component_appl_id
67686 ,l_amb_context_code
67687 ,l_entity_code
67688 ,l_event_class_code
67689 )
67690 ,p_token_3 => 'OWNER'
67691 ,p_value_3 => xla_lookups_pkg.get_meaning(
67692 p_lookup_type => 'XLA_OWNER_TYPE'
67693 ,p_lookup_code => l_component_type_code
67694 )
67695 ,p_token_4 => 'PRODUCT_NAME'
67696 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
67697 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
67698 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
67699 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
67700 ,p_ae_header_id => NULL
67701 );
67702
67703 IF (C_LEVEL_ERROR>= g_log_level) THEN
67704 trace
67705 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
67706 ,p_level => C_LEVEL_ERROR
67707 ,p_module => l_log_module);
67708 END IF;
67709 END IF;
67710 END IF;
67711 --
67712 --
67713 ------------------------------------------------------------------------------------------------
67714 -- 4219869 Business Flow
67715 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
67716 -- Prior Entry. Currently, the following code is always generated.
67717 ------------------------------------------------------------------------------------------------
67718 XLA_AE_LINES_PKG.ValidateCurrentLine;
67719
67720 ------------------------------------------------------------------------------------
67721 -- 4219869 Business Flow
67722 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
67723 ------------------------------------------------------------------------------------
67724 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
67725
67726 ----------------------------------------------------------------------------------
67727 -- 4219869 Business Flow
67728 -- Update journal entry status -- Need to generate this within IF <condition>
67729 ----------------------------------------------------------------------------------
67730 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
67731 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
67732 ,p_balance_type_code => l_balance_type_code
67733 );
67734
67735 -------------------------------------------------------------------------------------------
67736 -- 4262811 - Generate the Accrual Reversal lines
67737 -------------------------------------------------------------------------------------------
67738 BEGIN
67739 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
67740 (g_array_event(p_event_id).array_value_num('header_index'));
67741 IF l_acc_rev_flag IS NULL THEN
67742 l_acc_rev_flag := 'N';
67743 END IF;
67744 EXCEPTION
67745 WHEN OTHERS THEN
67746 l_acc_rev_flag := 'N';
67747 END;
67748 --
67749 IF (l_acc_rev_flag = 'Y') THEN
67750
67751 -- 4645092 ------------------------------------------------------------------------------
67752 -- To allow MPA report to determine if it should generate report process
67753 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
67754 ------------------------------------------------------------------------------------------
67755
67756 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
67757 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
67758 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
67759 -- call ADRs
67760 -- Bug 4922099
67761 --
67762 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
67763 (NVL(l_actual_upg_option, 'N') = 'O') OR
67764 (NVL(l_enc_upg_option, 'N') = 'O')
67765 )
67766 THEN
67767 NULL;
67768 --
67769 --
67770
67771 l_ccid := AcctDerRule_4(
67772 p_application_id => p_application_id
67773 , p_ae_header_id => l_ae_header_id
67774 , p_source_4 => p_source_4
67775 , x_transaction_coa_id => l_adr_transaction_coa_id
67776 , x_accounting_coa_id => l_adr_accounting_coa_id
67777 , x_value_type_code => l_adr_value_type_code
67778 , p_side => 'NA'
67779 );
67780
67781 xla_ae_lines_pkg.set_ccid(
67782 p_code_combination_id => l_ccid
67783 , p_value_type_code => l_adr_value_type_code
67784 , p_transaction_coa_id => l_adr_transaction_coa_id
67785 , p_accounting_coa_id => l_adr_accounting_coa_id
67786 , p_adr_code => 'CST_DEFAULT'
67787 , p_adr_type_code => 'S'
67788 , p_component_type => l_component_type
67789 , p_component_code => l_component_code
67790 , p_component_type_code => l_component_type_code
67791 , p_component_appl_id => l_component_appl_id
67792 , p_amb_context_code => l_amb_context_code
67793 , p_side => 'NA'
67794 );
67795
67796
67797 --
67798 --
67799 END IF;
67800
67801 --
67802 -- Update the line information that should be overwritten
67803 --
67804 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
67805 p_header_num => 1);
67806 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
67807
67808 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
67809
67810 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
67811 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
67812 END IF;
67813
67814 --
67815 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
67816 --
67817 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
67818 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
67819 ELSE
67820 ---------------------------------------------------------------------------------------------------
67821 -- 4262811a Switch Sign
67822 ---------------------------------------------------------------------------------------------------
67823 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
67824 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
67825 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
67826 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
67827 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
67828 -- 5132302
67829 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
67830 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
67831
67832 END IF;
67833
67834 -- 4955764
67835 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
67836 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
67837
67838
67839 XLA_AE_LINES_PKG.ValidateCurrentLine;
67840 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
67841
67842 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
67843 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
67844 ,p_balance_type_code => l_balance_type_code);
67845
67846 END IF;
67847
67848 -----------------------------------------------------------------------------------------
67849 -- 4262811 Multiperiod Accounting
67850 -----------------------------------------------------------------------------------------
67851 -- No MPA option is assigned.
67852
67853
67854 END IF;
67855 END IF;
67856 --
67857
67858 --
67859 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
67860 trace
67861 (p_msg => 'END of AcctLineType_124'
67862 ,p_level => C_LEVEL_PROCEDURE
67863 ,p_module => l_log_module);
67864 END IF;
67865 --
67866 EXCEPTION
67867 WHEN xla_exceptions_pkg.application_exception THEN
67868 RAISE;
67869 WHEN OTHERS THEN
67870 xla_exceptions_pkg.raise_message
67871 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_124');
67872 END AcctLineType_124;
67873 --
67874
67875 ---------------------------------------
67876 --
67877 -- PRIVATE FUNCTION
67878 -- AcctLineType_125
67879 --
67880 ---------------------------------------
67881 PROCEDURE AcctLineType_125 (
67882 p_application_id IN NUMBER
67883 ,p_event_id IN NUMBER
67884 ,p_calculate_acctd_flag IN VARCHAR2
67885 ,p_calculate_g_l_flag IN VARCHAR2
67886 ,p_actual_flag IN OUT VARCHAR2
67887 ,p_balance_type_code OUT VARCHAR2
67888 ,p_gain_or_loss_ref OUT VARCHAR2
67889
67890 --Cost Management Default Account
67891 , p_source_4 IN NUMBER
67892 --DISTRIBUTION_IDENTIFIER
67893 , p_source_11 IN NUMBER
67894 --Distribution Type
67895 , p_source_12 IN VARCHAR2
67896 , p_source_12_meaning IN VARCHAR2
67897 --Entered Currency Code
67898 , p_source_15 IN VARCHAR2
67899 --Entered Amount
67900 , p_source_18 IN NUMBER
67901 --Currency Conversion Date
67902 , p_source_19 IN DATE
67903 --Currency Conversion Rate
67904 , p_source_20 IN NUMBER
67905 --Currency Conversion Type
67906 , p_source_21 IN VARCHAR2
67907 --Accounted Amount
67908 , p_source_22 IN NUMBER
67909 --Accounting Line Type
67910 , p_source_24 IN NUMBER
67911 )
67912 IS
67913
67914 l_component_type VARCHAR2(80);
67915 l_component_code VARCHAR2(30);
67916 l_component_type_code VARCHAR2(1);
67917 l_component_appl_id INTEGER;
67918 l_amb_context_code VARCHAR2(30);
67919 l_entity_code VARCHAR2(30);
67920 l_event_class_code VARCHAR2(30);
67921 l_ae_header_id NUMBER;
67922 l_event_type_code VARCHAR2(30);
67923 l_line_definition_code VARCHAR2(30);
67924 l_line_definition_owner_code VARCHAR2(1);
67925 --
67926 -- adr variables
67927 l_segment VARCHAR2(30);
67928 l_ccid NUMBER;
67929 l_adr_transaction_coa_id NUMBER;
67930 l_adr_accounting_coa_id NUMBER;
67931 l_adr_flexfield_segment_code VARCHAR2(30);
67932 l_adr_flex_value_set_id NUMBER;
67933 l_adr_value_type_code VARCHAR2(30);
67934 l_adr_value_combination_id NUMBER;
67935 l_adr_value_segment_code VARCHAR2(30);
67936
67937 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
67938 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
67939 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
67940 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
67941
67942 -- 4262811 Variables ------------------------------------------------------------------------------------------
67943 l_entered_amt_idx NUMBER;
67944 l_accted_amt_idx NUMBER;
67945 l_acc_rev_flag VARCHAR2(1);
67946 l_accrual_line_num NUMBER;
67947 l_tmp_amt NUMBER;
67948 l_acc_rev_natural_side_code VARCHAR2(1);
67949
67950 l_num_entries NUMBER;
67951 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
67952 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
67953 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
67954 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
67955 l_recog_line_1 NUMBER;
67956 l_recog_line_2 NUMBER;
67957
67958 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
67959 l_bflow_applied_to_amt NUMBER; -- 5132302
67960 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
67961
67962 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
67963
67964 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
67965 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
67966
67967 ---------------------------------------------------------------------------------------------------------------
67968
67969
67970 --
67971 -- bulk performance
67972 --
67973 l_balance_type_code VARCHAR2(1);
67974 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
67975 l_log_module VARCHAR2(240);
67976
67977 --
67978 -- Upgrade strategy
67979 --
67980 l_actual_upg_option VARCHAR2(1);
67981 l_enc_upg_option VARCHAR2(1);
67982
67983 --
67984 BEGIN
67985 --
67986 IF g_log_enabled THEN
67987 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_125';
67988 END IF;
67989 --
67990 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
67991
67992 trace
67993 (p_msg => 'BEGIN of AcctLineType_125'
67994 ,p_level => C_LEVEL_PROCEDURE
67995 ,p_module => l_log_module);
67996
67997 END IF;
67998 --
67999 l_component_type := 'AMB_JLT';
68000 l_component_code := 'INTRANSIT_VALUATION';
68001 l_component_type_code := 'S';
68002 l_component_appl_id := 707;
68003 l_amb_context_code := 'DEFAULT';
68004 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
68005 l_event_class_code := 'FOB_SHIP_RECIPIENT_SHIP';
68006 l_event_type_code := 'FOB_SHIP_RECIPIENT_SHIP_ALL';
68007 l_line_definition_owner_code := 'S';
68008 l_line_definition_code := 'FOB_SHIP_RECIPIENT_SHIP';
68009 --
68010 l_balance_type_code := 'A';
68011 l_segment := NULL;
68012 l_ccid := NULL;
68013 l_adr_transaction_coa_id := NULL;
68014 l_adr_accounting_coa_id := NULL;
68015 l_adr_flexfield_segment_code := NULL;
68016 l_adr_flex_value_set_id := NULL;
68017 l_adr_value_type_code := NULL;
68018 l_adr_value_combination_id := NULL;
68019 l_adr_value_segment_code := NULL;
68020
68021 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
68022 l_bflow_class_code := ''; -- 4219869 Business Flow
68023 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
68024 l_budgetary_control_flag := 'N';
68025
68026 l_bflow_applied_to_amt_idx := NULL; -- 5132302
68027 l_bflow_applied_to_amt := NULL; -- 5132302
68028 l_entered_amt_idx := NULL; -- 4262811
68029 l_accted_amt_idx := NULL; -- 4262811
68030 l_acc_rev_flag := NULL; -- 4262811
68031 l_accrual_line_num := NULL; -- 4262811
68032 l_tmp_amt := NULL; -- 4262811
68033 --
68034
68035 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
68036 l_balance_type_code <> 'B' THEN
68037 IF NVL(p_source_24,9E125) = 14
68038 THEN
68039
68040 --
68041 XLA_AE_LINES_PKG.SetNewLine;
68042
68043 p_balance_type_code := l_balance_type_code;
68044 -- set the flag so later we will know whether the gain loss line needs to be created
68045
68046 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
68047 p_actual_flag :='A';
68048 END IF;
68049
68050 --
68051 -- bulk performance
68052 --
68053 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
68054 p_header_num => 0); -- 4262811
68055 --
68056 -- set accounting line options
68057 --
68058 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
68059 p_natural_side_code => 'D'
68060 , p_gain_or_loss_flag => 'N'
68061 , p_gl_transfer_mode_code => 'S'
68062 , p_acct_entry_type_code => 'A'
68063 , p_switch_side_flag => 'Y'
68064 , p_merge_duplicate_code => 'N'
68065 );
68066 --
68067 l_acc_rev_natural_side_code := 'C'; -- 4262811
68068 --
68069 --
68070 -- set accounting line type info
68071 --
68072 xla_ae_lines_pkg.SetAcctLineType
68073 (p_component_type => l_component_type
68074 ,p_event_type_code => l_event_type_code
68075 ,p_line_definition_owner_code => l_line_definition_owner_code
68076 ,p_line_definition_code => l_line_definition_code
68077 ,p_accounting_line_code => l_component_code
68078 ,p_accounting_line_type_code => l_component_type_code
68079 ,p_accounting_line_appl_id => l_component_appl_id
68080 ,p_amb_context_code => l_amb_context_code
68081 ,p_entity_code => l_entity_code
68082 ,p_event_class_code => l_event_class_code);
68083 --
68084 -- set accounting class
68085 --
68086 xla_ae_lines_pkg.SetAcctClass(
68087 p_accounting_class_code => 'INTRANSIT_VALUATION'
68088 , p_ae_header_id => l_ae_header_id
68089 );
68090
68091 --
68092 -- set rounding class
68093 --
68094 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
68095 'INTRANSIT_VALUATION';
68096
68097 --
68098 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
68099 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
68100 --
68101 -- bulk performance
68102 --
68103 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
68104
68105 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
68106 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
68107
68108 -- 4955764
68109 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
68110 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
68111
68112 -- 4458381 Public Sector Enh
68113
68114 --
68115 -- set accounting attributes for the line type
68116 --
68117 l_entered_amt_idx := 3;
68118 l_accted_amt_idx := 8;
68119 l_bflow_applied_to_amt_idx := NULL; -- 5132302
68120 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
68121 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
68122 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
68123 l_rec_acct_attrs.array_char_value(2) := p_source_12;
68124 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
68125 l_rec_acct_attrs.array_num_value(3) := p_source_18;
68126 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
68127 l_rec_acct_attrs.array_char_value(4) := p_source_15;
68128 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
68129 l_rec_acct_attrs.array_date_value(5) := p_source_19;
68130 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
68131 l_rec_acct_attrs.array_num_value(6) := p_source_20;
68132 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
68133 l_rec_acct_attrs.array_char_value(7) := p_source_21;
68134 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
68135 l_rec_acct_attrs.array_num_value(8) := p_source_22;
68136
68137 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
68138 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
68139
68140 ---------------------------------------------------------------------------------------------------------------
68141 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
68142 ---------------------------------------------------------------------------------------------------------------
68143 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
68144
68145 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
68146 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
68147
68148 IF xla_accounting_cache_pkg.GetValueChar
68149 (p_source_code => 'LEDGER_CATEGORY_CODE'
68150 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
68151 AND l_bflow_method_code = 'PRIOR_ENTRY'
68152 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
68153 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
68154 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
68155 )
68156 THEN
68157 xla_ae_lines_pkg.BflowUpgEntry
68158 (p_business_method_code => l_bflow_method_code
68159 ,p_business_class_code => l_bflow_class_code
68160 ,p_balance_type => l_balance_type_code);
68161 ELSE
68162 NULL;
68163 -- No business flow processing for business flow method of NONE.
68164 END IF;
68165
68166 --
68167 -- call analytical criteria
68168 --
68169
68170 --
68171 -- call description
68172 --
68173 -- No description or it is inherited.
68174 --
68175 -- call ADRs
68176 -- Bug 4922099
68177 --
68178 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
68179 (NVL(l_actual_upg_option, 'N') = 'O') OR
68180 (NVL(l_enc_upg_option, 'N') = 'O')
68181 )
68182 THEN
68183 NULL;
68184 --
68185 --
68186
68187 l_ccid := AcctDerRule_4(
68188 p_application_id => p_application_id
68189 , p_ae_header_id => l_ae_header_id
68190 , p_source_4 => p_source_4
68191 , x_transaction_coa_id => l_adr_transaction_coa_id
68192 , x_accounting_coa_id => l_adr_accounting_coa_id
68193 , x_value_type_code => l_adr_value_type_code
68194 , p_side => 'NA'
68195 );
68196
68197 xla_ae_lines_pkg.set_ccid(
68198 p_code_combination_id => l_ccid
68199 , p_value_type_code => l_adr_value_type_code
68200 , p_transaction_coa_id => l_adr_transaction_coa_id
68201 , p_accounting_coa_id => l_adr_accounting_coa_id
68202 , p_adr_code => 'CST_DEFAULT'
68203 , p_adr_type_code => 'S'
68204 , p_component_type => l_component_type
68205 , p_component_code => l_component_code
68206 , p_component_type_code => l_component_type_code
68207 , p_component_appl_id => l_component_appl_id
68208 , p_amb_context_code => l_amb_context_code
68209 , p_side => 'NA'
68210 );
68211
68212
68213 --
68214 --
68215 END IF;
68216 --
68217 -- Bug 4922099
68218 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
68219 (NVL(l_enc_upg_option, 'N') = 'O')
68220 ) AND
68221 (l_bflow_method_code = 'PRIOR_ENTRY')
68222 )
68223 THEN
68224 IF
68225 --
68226 1 = 2
68227 --
68228 THEN
68229 xla_accounting_err_pkg.build_message
68230 (p_appli_s_name => 'XLA'
68231 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
68232 ,p_token_1 => 'LINE_NUMBER'
68233 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
68234 ,p_token_2 => 'LINE_TYPE_NAME'
68235 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
68236 l_component_type
68237 ,l_component_code
68238 ,l_component_type_code
68239 ,l_component_appl_id
68240 ,l_amb_context_code
68241 ,l_entity_code
68242 ,l_event_class_code
68243 )
68244 ,p_token_3 => 'OWNER'
68245 ,p_value_3 => xla_lookups_pkg.get_meaning(
68246 p_lookup_type => 'XLA_OWNER_TYPE'
68247 ,p_lookup_code => l_component_type_code
68248 )
68249 ,p_token_4 => 'PRODUCT_NAME'
68250 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
68251 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
68252 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
68253 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
68254 ,p_ae_header_id => NULL
68255 );
68256
68257 IF (C_LEVEL_ERROR>= g_log_level) THEN
68258 trace
68259 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
68260 ,p_level => C_LEVEL_ERROR
68261 ,p_module => l_log_module);
68262 END IF;
68263 END IF;
68264 END IF;
68265 --
68266 --
68267 ------------------------------------------------------------------------------------------------
68268 -- 4219869 Business Flow
68269 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
68270 -- Prior Entry. Currently, the following code is always generated.
68271 ------------------------------------------------------------------------------------------------
68272 XLA_AE_LINES_PKG.ValidateCurrentLine;
68273
68274 ------------------------------------------------------------------------------------
68275 -- 4219869 Business Flow
68276 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
68277 ------------------------------------------------------------------------------------
68278 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
68279
68280 ----------------------------------------------------------------------------------
68281 -- 4219869 Business Flow
68282 -- Update journal entry status -- Need to generate this within IF <condition>
68283 ----------------------------------------------------------------------------------
68284 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
68285 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
68286 ,p_balance_type_code => l_balance_type_code
68287 );
68288
68289 -------------------------------------------------------------------------------------------
68290 -- 4262811 - Generate the Accrual Reversal lines
68291 -------------------------------------------------------------------------------------------
68292 BEGIN
68293 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
68294 (g_array_event(p_event_id).array_value_num('header_index'));
68295 IF l_acc_rev_flag IS NULL THEN
68296 l_acc_rev_flag := 'N';
68297 END IF;
68298 EXCEPTION
68299 WHEN OTHERS THEN
68300 l_acc_rev_flag := 'N';
68301 END;
68302 --
68303 IF (l_acc_rev_flag = 'Y') THEN
68304
68305 -- 4645092 ------------------------------------------------------------------------------
68306 -- To allow MPA report to determine if it should generate report process
68307 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
68308 ------------------------------------------------------------------------------------------
68309
68310 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
68311 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
68312 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
68313 -- call ADRs
68314 -- Bug 4922099
68315 --
68316 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
68317 (NVL(l_actual_upg_option, 'N') = 'O') OR
68318 (NVL(l_enc_upg_option, 'N') = 'O')
68319 )
68320 THEN
68321 NULL;
68322 --
68323 --
68324
68325 l_ccid := AcctDerRule_4(
68326 p_application_id => p_application_id
68327 , p_ae_header_id => l_ae_header_id
68328 , p_source_4 => p_source_4
68329 , x_transaction_coa_id => l_adr_transaction_coa_id
68330 , x_accounting_coa_id => l_adr_accounting_coa_id
68331 , x_value_type_code => l_adr_value_type_code
68332 , p_side => 'NA'
68333 );
68334
68335 xla_ae_lines_pkg.set_ccid(
68336 p_code_combination_id => l_ccid
68337 , p_value_type_code => l_adr_value_type_code
68338 , p_transaction_coa_id => l_adr_transaction_coa_id
68339 , p_accounting_coa_id => l_adr_accounting_coa_id
68340 , p_adr_code => 'CST_DEFAULT'
68341 , p_adr_type_code => 'S'
68342 , p_component_type => l_component_type
68343 , p_component_code => l_component_code
68344 , p_component_type_code => l_component_type_code
68345 , p_component_appl_id => l_component_appl_id
68346 , p_amb_context_code => l_amb_context_code
68347 , p_side => 'NA'
68348 );
68349
68350
68351 --
68352 --
68353 END IF;
68354
68355 --
68356 -- Update the line information that should be overwritten
68357 --
68358 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
68359 p_header_num => 1);
68360 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
68361
68362 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
68363
68364 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
68365 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
68366 END IF;
68367
68368 --
68369 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
68370 --
68371 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
68372 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
68373 ELSE
68374 ---------------------------------------------------------------------------------------------------
68375 -- 4262811a Switch Sign
68376 ---------------------------------------------------------------------------------------------------
68377 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
68378 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
68379 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
68380 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
68381 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
68382 -- 5132302
68383 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
68384 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
68385
68386 END IF;
68387
68388 -- 4955764
68389 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
68390 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
68391
68392
68393 XLA_AE_LINES_PKG.ValidateCurrentLine;
68394 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
68395
68396 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
68397 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
68398 ,p_balance_type_code => l_balance_type_code);
68399
68400 END IF;
68401
68402 -----------------------------------------------------------------------------------------
68403 -- 4262811 Multiperiod Accounting
68404 -----------------------------------------------------------------------------------------
68405 -- No MPA option is assigned.
68406
68407
68408 END IF;
68409 END IF;
68410 --
68411
68412 --
68413 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
68414 trace
68415 (p_msg => 'END of AcctLineType_125'
68416 ,p_level => C_LEVEL_PROCEDURE
68417 ,p_module => l_log_module);
68418 END IF;
68419 --
68420 EXCEPTION
68421 WHEN xla_exceptions_pkg.application_exception THEN
68422 RAISE;
68423 WHEN OTHERS THEN
68424 xla_exceptions_pkg.raise_message
68425 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_125');
68426 END AcctLineType_125;
68427 --
68428
68429 ---------------------------------------
68430 --
68431 -- PRIVATE FUNCTION
68432 -- AcctLineType_126
68433 --
68434 ---------------------------------------
68435 PROCEDURE AcctLineType_126 (
68436 p_application_id IN NUMBER
68437 ,p_event_id IN NUMBER
68438 ,p_calculate_acctd_flag IN VARCHAR2
68439 ,p_calculate_g_l_flag IN VARCHAR2
68440 ,p_actual_flag IN OUT VARCHAR2
68441 ,p_balance_type_code OUT VARCHAR2
68442 ,p_gain_or_loss_ref OUT VARCHAR2
68443
68444 --Cost Management Default Account
68445 , p_source_4 IN NUMBER
68446 --DISTRIBUTION_IDENTIFIER
68447 , p_source_11 IN NUMBER
68448 --Distribution Type
68449 , p_source_12 IN VARCHAR2
68450 , p_source_12_meaning IN VARCHAR2
68451 --Entered Currency Code
68452 , p_source_15 IN VARCHAR2
68453 --Entered Amount
68454 , p_source_18 IN NUMBER
68455 --Currency Conversion Date
68456 , p_source_19 IN DATE
68457 --Currency Conversion Rate
68458 , p_source_20 IN NUMBER
68459 --Currency Conversion Type
68460 , p_source_21 IN VARCHAR2
68461 --Accounted Amount
68462 , p_source_22 IN NUMBER
68463 --Accounting Line Type
68464 , p_source_24 IN NUMBER
68465 )
68466 IS
68467
68468 l_component_type VARCHAR2(80);
68469 l_component_code VARCHAR2(30);
68470 l_component_type_code VARCHAR2(1);
68471 l_component_appl_id INTEGER;
68472 l_amb_context_code VARCHAR2(30);
68473 l_entity_code VARCHAR2(30);
68474 l_event_class_code VARCHAR2(30);
68475 l_ae_header_id NUMBER;
68476 l_event_type_code VARCHAR2(30);
68477 l_line_definition_code VARCHAR2(30);
68478 l_line_definition_owner_code VARCHAR2(1);
68479 --
68480 -- adr variables
68481 l_segment VARCHAR2(30);
68482 l_ccid NUMBER;
68483 l_adr_transaction_coa_id NUMBER;
68484 l_adr_accounting_coa_id NUMBER;
68485 l_adr_flexfield_segment_code VARCHAR2(30);
68486 l_adr_flex_value_set_id NUMBER;
68487 l_adr_value_type_code VARCHAR2(30);
68488 l_adr_value_combination_id NUMBER;
68489 l_adr_value_segment_code VARCHAR2(30);
68490
68491 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
68492 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
68493 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
68494 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
68495
68496 -- 4262811 Variables ------------------------------------------------------------------------------------------
68497 l_entered_amt_idx NUMBER;
68498 l_accted_amt_idx NUMBER;
68499 l_acc_rev_flag VARCHAR2(1);
68500 l_accrual_line_num NUMBER;
68501 l_tmp_amt NUMBER;
68502 l_acc_rev_natural_side_code VARCHAR2(1);
68503
68504 l_num_entries NUMBER;
68505 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
68506 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
68507 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
68508 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
68509 l_recog_line_1 NUMBER;
68510 l_recog_line_2 NUMBER;
68511
68512 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
68513 l_bflow_applied_to_amt NUMBER; -- 5132302
68514 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
68515
68516 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
68517
68518 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
68519 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
68520
68521 ---------------------------------------------------------------------------------------------------------------
68522
68523
68524 --
68525 -- bulk performance
68526 --
68527 l_balance_type_code VARCHAR2(1);
68528 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
68529 l_log_module VARCHAR2(240);
68530
68531 --
68532 -- Upgrade strategy
68533 --
68534 l_actual_upg_option VARCHAR2(1);
68535 l_enc_upg_option VARCHAR2(1);
68536
68537 --
68538 BEGIN
68539 --
68540 IF g_log_enabled THEN
68541 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_126';
68542 END IF;
68543 --
68544 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
68545
68546 trace
68547 (p_msg => 'BEGIN of AcctLineType_126'
68548 ,p_level => C_LEVEL_PROCEDURE
68549 ,p_module => l_log_module);
68550
68551 END IF;
68552 --
68553 l_component_type := 'AMB_JLT';
68554 l_component_code := 'INVENTORY_VALUATION';
68555 l_component_type_code := 'S';
68556 l_component_appl_id := 707;
68557 l_amb_context_code := 'DEFAULT';
68558 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
68559 l_event_class_code := 'LOG_INTERCOMPANY';
68560 l_event_type_code := 'LOG_INTERCOMPANY_ALL';
68561 l_line_definition_owner_code := 'S';
68562 l_line_definition_code := 'LOG_INTERCOMPANY';
68563 --
68564 l_balance_type_code := 'A';
68565 l_segment := NULL;
68566 l_ccid := NULL;
68567 l_adr_transaction_coa_id := NULL;
68568 l_adr_accounting_coa_id := NULL;
68569 l_adr_flexfield_segment_code := NULL;
68570 l_adr_flex_value_set_id := NULL;
68571 l_adr_value_type_code := NULL;
68572 l_adr_value_combination_id := NULL;
68573 l_adr_value_segment_code := NULL;
68574
68575 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
68576 l_bflow_class_code := ''; -- 4219869 Business Flow
68577 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
68578 l_budgetary_control_flag := 'N';
68579
68580 l_bflow_applied_to_amt_idx := NULL; -- 5132302
68581 l_bflow_applied_to_amt := NULL; -- 5132302
68582 l_entered_amt_idx := NULL; -- 4262811
68583 l_accted_amt_idx := NULL; -- 4262811
68584 l_acc_rev_flag := NULL; -- 4262811
68585 l_accrual_line_num := NULL; -- 4262811
68586 l_tmp_amt := NULL; -- 4262811
68587 --
68588
68589 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
68590 l_balance_type_code <> 'B' THEN
68591 IF NVL(p_source_24,9E125) = 1
68592 THEN
68593
68594 --
68595 XLA_AE_LINES_PKG.SetNewLine;
68596
68597 p_balance_type_code := l_balance_type_code;
68598 -- set the flag so later we will know whether the gain loss line needs to be created
68599
68600 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
68601 p_actual_flag :='A';
68602 END IF;
68603
68604 --
68605 -- bulk performance
68606 --
68607 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
68608 p_header_num => 0); -- 4262811
68609 --
68610 -- set accounting line options
68611 --
68612 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
68613 p_natural_side_code => 'D'
68614 , p_gain_or_loss_flag => 'N'
68615 , p_gl_transfer_mode_code => 'S'
68616 , p_acct_entry_type_code => 'A'
68617 , p_switch_side_flag => 'Y'
68618 , p_merge_duplicate_code => 'N'
68619 );
68620 --
68621 l_acc_rev_natural_side_code := 'C'; -- 4262811
68622 --
68623 --
68624 -- set accounting line type info
68625 --
68626 xla_ae_lines_pkg.SetAcctLineType
68627 (p_component_type => l_component_type
68628 ,p_event_type_code => l_event_type_code
68629 ,p_line_definition_owner_code => l_line_definition_owner_code
68630 ,p_line_definition_code => l_line_definition_code
68631 ,p_accounting_line_code => l_component_code
68632 ,p_accounting_line_type_code => l_component_type_code
68633 ,p_accounting_line_appl_id => l_component_appl_id
68634 ,p_amb_context_code => l_amb_context_code
68635 ,p_entity_code => l_entity_code
68636 ,p_event_class_code => l_event_class_code);
68637 --
68638 -- set accounting class
68639 --
68640 xla_ae_lines_pkg.SetAcctClass(
68641 p_accounting_class_code => 'INVENTORY_VALUATION'
68642 , p_ae_header_id => l_ae_header_id
68643 );
68644
68645 --
68646 -- set rounding class
68647 --
68648 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
68649 'INVENTORY_VALUATION';
68650
68651 --
68652 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
68653 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
68654 --
68655 -- bulk performance
68656 --
68657 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
68658
68659 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
68660 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
68661
68662 -- 4955764
68663 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
68664 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
68665
68666 -- 4458381 Public Sector Enh
68667
68668 --
68669 -- set accounting attributes for the line type
68670 --
68671 l_entered_amt_idx := 3;
68672 l_accted_amt_idx := 8;
68673 l_bflow_applied_to_amt_idx := NULL; -- 5132302
68674 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
68675 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
68676 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
68677 l_rec_acct_attrs.array_char_value(2) := p_source_12;
68678 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
68679 l_rec_acct_attrs.array_num_value(3) := p_source_18;
68680 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
68681 l_rec_acct_attrs.array_char_value(4) := p_source_15;
68682 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
68683 l_rec_acct_attrs.array_date_value(5) := p_source_19;
68684 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
68685 l_rec_acct_attrs.array_num_value(6) := p_source_20;
68686 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
68687 l_rec_acct_attrs.array_char_value(7) := p_source_21;
68688 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
68689 l_rec_acct_attrs.array_num_value(8) := p_source_22;
68690
68691 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
68692 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
68693
68694 ---------------------------------------------------------------------------------------------------------------
68695 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
68696 ---------------------------------------------------------------------------------------------------------------
68697 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
68698
68699 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
68700 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
68701
68702 IF xla_accounting_cache_pkg.GetValueChar
68703 (p_source_code => 'LEDGER_CATEGORY_CODE'
68704 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
68705 AND l_bflow_method_code = 'PRIOR_ENTRY'
68706 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
68707 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
68708 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
68709 )
68710 THEN
68711 xla_ae_lines_pkg.BflowUpgEntry
68712 (p_business_method_code => l_bflow_method_code
68713 ,p_business_class_code => l_bflow_class_code
68714 ,p_balance_type => l_balance_type_code);
68715 ELSE
68716 NULL;
68717 -- No business flow processing for business flow method of NONE.
68718 END IF;
68719
68720 --
68721 -- call analytical criteria
68722 --
68723
68724 --
68725 -- call description
68726 --
68727 -- No description or it is inherited.
68728 --
68729 -- call ADRs
68730 -- Bug 4922099
68731 --
68732 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
68733 (NVL(l_actual_upg_option, 'N') = 'O') OR
68734 (NVL(l_enc_upg_option, 'N') = 'O')
68735 )
68736 THEN
68737 NULL;
68738 --
68739 --
68740
68741 l_ccid := AcctDerRule_4(
68742 p_application_id => p_application_id
68743 , p_ae_header_id => l_ae_header_id
68744 , p_source_4 => p_source_4
68745 , x_transaction_coa_id => l_adr_transaction_coa_id
68746 , x_accounting_coa_id => l_adr_accounting_coa_id
68747 , x_value_type_code => l_adr_value_type_code
68748 , p_side => 'NA'
68749 );
68750
68751 xla_ae_lines_pkg.set_ccid(
68752 p_code_combination_id => l_ccid
68753 , p_value_type_code => l_adr_value_type_code
68754 , p_transaction_coa_id => l_adr_transaction_coa_id
68755 , p_accounting_coa_id => l_adr_accounting_coa_id
68756 , p_adr_code => 'CST_DEFAULT'
68757 , p_adr_type_code => 'S'
68758 , p_component_type => l_component_type
68759 , p_component_code => l_component_code
68760 , p_component_type_code => l_component_type_code
68761 , p_component_appl_id => l_component_appl_id
68762 , p_amb_context_code => l_amb_context_code
68763 , p_side => 'NA'
68764 );
68765
68766
68767 --
68768 --
68769 END IF;
68770 --
68771 -- Bug 4922099
68772 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
68773 (NVL(l_enc_upg_option, 'N') = 'O')
68774 ) AND
68775 (l_bflow_method_code = 'PRIOR_ENTRY')
68776 )
68777 THEN
68778 IF
68779 --
68780 1 = 2
68781 --
68782 THEN
68783 xla_accounting_err_pkg.build_message
68784 (p_appli_s_name => 'XLA'
68785 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
68786 ,p_token_1 => 'LINE_NUMBER'
68787 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
68788 ,p_token_2 => 'LINE_TYPE_NAME'
68789 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
68790 l_component_type
68791 ,l_component_code
68792 ,l_component_type_code
68793 ,l_component_appl_id
68794 ,l_amb_context_code
68795 ,l_entity_code
68796 ,l_event_class_code
68797 )
68798 ,p_token_3 => 'OWNER'
68799 ,p_value_3 => xla_lookups_pkg.get_meaning(
68800 p_lookup_type => 'XLA_OWNER_TYPE'
68801 ,p_lookup_code => l_component_type_code
68802 )
68803 ,p_token_4 => 'PRODUCT_NAME'
68804 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
68805 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
68806 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
68807 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
68808 ,p_ae_header_id => NULL
68809 );
68810
68811 IF (C_LEVEL_ERROR>= g_log_level) THEN
68812 trace
68813 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
68814 ,p_level => C_LEVEL_ERROR
68815 ,p_module => l_log_module);
68816 END IF;
68817 END IF;
68818 END IF;
68819 --
68820 --
68821 ------------------------------------------------------------------------------------------------
68822 -- 4219869 Business Flow
68823 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
68824 -- Prior Entry. Currently, the following code is always generated.
68825 ------------------------------------------------------------------------------------------------
68826 XLA_AE_LINES_PKG.ValidateCurrentLine;
68827
68828 ------------------------------------------------------------------------------------
68829 -- 4219869 Business Flow
68830 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
68831 ------------------------------------------------------------------------------------
68832 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
68833
68834 ----------------------------------------------------------------------------------
68835 -- 4219869 Business Flow
68836 -- Update journal entry status -- Need to generate this within IF <condition>
68837 ----------------------------------------------------------------------------------
68838 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
68839 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
68840 ,p_balance_type_code => l_balance_type_code
68841 );
68842
68843 -------------------------------------------------------------------------------------------
68844 -- 4262811 - Generate the Accrual Reversal lines
68845 -------------------------------------------------------------------------------------------
68846 BEGIN
68847 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
68848 (g_array_event(p_event_id).array_value_num('header_index'));
68849 IF l_acc_rev_flag IS NULL THEN
68850 l_acc_rev_flag := 'N';
68851 END IF;
68852 EXCEPTION
68853 WHEN OTHERS THEN
68854 l_acc_rev_flag := 'N';
68855 END;
68856 --
68857 IF (l_acc_rev_flag = 'Y') THEN
68858
68859 -- 4645092 ------------------------------------------------------------------------------
68860 -- To allow MPA report to determine if it should generate report process
68861 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
68862 ------------------------------------------------------------------------------------------
68863
68864 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
68865 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
68866 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
68867 -- call ADRs
68868 -- Bug 4922099
68869 --
68870 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
68871 (NVL(l_actual_upg_option, 'N') = 'O') OR
68872 (NVL(l_enc_upg_option, 'N') = 'O')
68873 )
68874 THEN
68875 NULL;
68876 --
68877 --
68878
68879 l_ccid := AcctDerRule_4(
68880 p_application_id => p_application_id
68881 , p_ae_header_id => l_ae_header_id
68882 , p_source_4 => p_source_4
68883 , x_transaction_coa_id => l_adr_transaction_coa_id
68884 , x_accounting_coa_id => l_adr_accounting_coa_id
68885 , x_value_type_code => l_adr_value_type_code
68886 , p_side => 'NA'
68887 );
68888
68889 xla_ae_lines_pkg.set_ccid(
68890 p_code_combination_id => l_ccid
68891 , p_value_type_code => l_adr_value_type_code
68892 , p_transaction_coa_id => l_adr_transaction_coa_id
68893 , p_accounting_coa_id => l_adr_accounting_coa_id
68894 , p_adr_code => 'CST_DEFAULT'
68895 , p_adr_type_code => 'S'
68896 , p_component_type => l_component_type
68897 , p_component_code => l_component_code
68898 , p_component_type_code => l_component_type_code
68899 , p_component_appl_id => l_component_appl_id
68900 , p_amb_context_code => l_amb_context_code
68901 , p_side => 'NA'
68902 );
68903
68904
68905 --
68906 --
68907 END IF;
68908
68909 --
68910 -- Update the line information that should be overwritten
68911 --
68912 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
68913 p_header_num => 1);
68914 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
68915
68916 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
68917
68918 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
68919 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
68920 END IF;
68921
68922 --
68923 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
68924 --
68925 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
68926 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
68927 ELSE
68928 ---------------------------------------------------------------------------------------------------
68929 -- 4262811a Switch Sign
68930 ---------------------------------------------------------------------------------------------------
68931 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
68932 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
68933 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
68934 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
68935 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
68936 -- 5132302
68937 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
68938 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
68939
68940 END IF;
68941
68942 -- 4955764
68943 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
68944 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
68945
68946
68947 XLA_AE_LINES_PKG.ValidateCurrentLine;
68948 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
68949
68950 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
68951 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
68952 ,p_balance_type_code => l_balance_type_code);
68953
68954 END IF;
68955
68956 -----------------------------------------------------------------------------------------
68957 -- 4262811 Multiperiod Accounting
68958 -----------------------------------------------------------------------------------------
68959 -- No MPA option is assigned.
68960
68961
68962 END IF;
68963 END IF;
68964 --
68965
68966 --
68967 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
68968 trace
68969 (p_msg => 'END of AcctLineType_126'
68970 ,p_level => C_LEVEL_PROCEDURE
68971 ,p_module => l_log_module);
68972 END IF;
68973 --
68974 EXCEPTION
68975 WHEN xla_exceptions_pkg.application_exception THEN
68976 RAISE;
68977 WHEN OTHERS THEN
68978 xla_exceptions_pkg.raise_message
68979 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_126');
68980 END AcctLineType_126;
68981 --
68982
68983 ---------------------------------------
68984 --
68985 -- PRIVATE FUNCTION
68986 -- AcctLineType_127
68987 --
68988 ---------------------------------------
68989 PROCEDURE AcctLineType_127 (
68990 p_application_id IN NUMBER
68991 ,p_event_id IN NUMBER
68992 ,p_calculate_acctd_flag IN VARCHAR2
68993 ,p_calculate_g_l_flag IN VARCHAR2
68994 ,p_actual_flag IN OUT VARCHAR2
68995 ,p_balance_type_code OUT VARCHAR2
68996 ,p_gain_or_loss_ref OUT VARCHAR2
68997
68998 --Cost Management Default Account
68999 , p_source_4 IN NUMBER
69000 --DISTRIBUTION_IDENTIFIER
69001 , p_source_11 IN NUMBER
69002 --Distribution Type
69003 , p_source_12 IN VARCHAR2
69004 , p_source_12_meaning IN VARCHAR2
69005 --Entered Currency Code
69006 , p_source_15 IN VARCHAR2
69007 --Entered Amount
69008 , p_source_18 IN NUMBER
69009 --Currency Conversion Date
69010 , p_source_19 IN DATE
69011 --Currency Conversion Rate
69012 , p_source_20 IN NUMBER
69013 --Currency Conversion Type
69014 , p_source_21 IN VARCHAR2
69015 --Accounted Amount
69016 , p_source_22 IN NUMBER
69017 --Accounting Line Type
69018 , p_source_24 IN NUMBER
69019 )
69020 IS
69021
69022 l_component_type VARCHAR2(80);
69023 l_component_code VARCHAR2(30);
69024 l_component_type_code VARCHAR2(1);
69025 l_component_appl_id INTEGER;
69026 l_amb_context_code VARCHAR2(30);
69027 l_entity_code VARCHAR2(30);
69028 l_event_class_code VARCHAR2(30);
69029 l_ae_header_id NUMBER;
69030 l_event_type_code VARCHAR2(30);
69031 l_line_definition_code VARCHAR2(30);
69032 l_line_definition_owner_code VARCHAR2(1);
69033 --
69034 -- adr variables
69035 l_segment VARCHAR2(30);
69036 l_ccid NUMBER;
69037 l_adr_transaction_coa_id NUMBER;
69038 l_adr_accounting_coa_id NUMBER;
69039 l_adr_flexfield_segment_code VARCHAR2(30);
69040 l_adr_flex_value_set_id NUMBER;
69041 l_adr_value_type_code VARCHAR2(30);
69042 l_adr_value_combination_id NUMBER;
69043 l_adr_value_segment_code VARCHAR2(30);
69044
69045 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
69046 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
69047 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
69048 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
69049
69050 -- 4262811 Variables ------------------------------------------------------------------------------------------
69051 l_entered_amt_idx NUMBER;
69052 l_accted_amt_idx NUMBER;
69053 l_acc_rev_flag VARCHAR2(1);
69054 l_accrual_line_num NUMBER;
69055 l_tmp_amt NUMBER;
69056 l_acc_rev_natural_side_code VARCHAR2(1);
69057
69058 l_num_entries NUMBER;
69059 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
69060 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
69061 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
69062 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
69063 l_recog_line_1 NUMBER;
69064 l_recog_line_2 NUMBER;
69065
69066 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
69067 l_bflow_applied_to_amt NUMBER; -- 5132302
69068 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
69069
69070 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
69071
69072 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
69073 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
69074
69075 ---------------------------------------------------------------------------------------------------------------
69076
69077
69078 --
69079 -- bulk performance
69080 --
69081 l_balance_type_code VARCHAR2(1);
69082 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
69083 l_log_module VARCHAR2(240);
69084
69085 --
69086 -- Upgrade strategy
69087 --
69088 l_actual_upg_option VARCHAR2(1);
69089 l_enc_upg_option VARCHAR2(1);
69090
69091 --
69092 BEGIN
69093 --
69094 IF g_log_enabled THEN
69095 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_127';
69096 END IF;
69097 --
69098 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
69099
69100 trace
69101 (p_msg => 'BEGIN of AcctLineType_127'
69102 ,p_level => C_LEVEL_PROCEDURE
69103 ,p_module => l_log_module);
69104
69105 END IF;
69106 --
69107 l_component_type := 'AMB_JLT';
69108 l_component_code := 'INVENTORY_VALUATION';
69109 l_component_type_code := 'S';
69110 l_component_appl_id := 707;
69111 l_amb_context_code := 'DEFAULT';
69112 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
69113 l_event_class_code := 'SALES_ORDER';
69114 l_event_type_code := 'SALES_ORDER_ALL';
69115 l_line_definition_owner_code := 'S';
69116 l_line_definition_code := 'SALES_ORDER';
69117 --
69118 l_balance_type_code := 'A';
69119 l_segment := NULL;
69120 l_ccid := NULL;
69121 l_adr_transaction_coa_id := NULL;
69122 l_adr_accounting_coa_id := NULL;
69123 l_adr_flexfield_segment_code := NULL;
69124 l_adr_flex_value_set_id := NULL;
69125 l_adr_value_type_code := NULL;
69126 l_adr_value_combination_id := NULL;
69127 l_adr_value_segment_code := NULL;
69128
69129 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
69130 l_bflow_class_code := ''; -- 4219869 Business Flow
69131 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
69132 l_budgetary_control_flag := 'N';
69133
69134 l_bflow_applied_to_amt_idx := NULL; -- 5132302
69135 l_bflow_applied_to_amt := NULL; -- 5132302
69136 l_entered_amt_idx := NULL; -- 4262811
69137 l_accted_amt_idx := NULL; -- 4262811
69138 l_acc_rev_flag := NULL; -- 4262811
69139 l_accrual_line_num := NULL; -- 4262811
69140 l_tmp_amt := NULL; -- 4262811
69141 --
69142
69143 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
69144 l_balance_type_code <> 'B' THEN
69145 IF NVL(p_source_24,9E125) = 1
69146 THEN
69147
69148 --
69149 XLA_AE_LINES_PKG.SetNewLine;
69150
69151 p_balance_type_code := l_balance_type_code;
69152 -- set the flag so later we will know whether the gain loss line needs to be created
69153
69154 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
69155 p_actual_flag :='A';
69156 END IF;
69157
69158 --
69159 -- bulk performance
69160 --
69161 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
69162 p_header_num => 0); -- 4262811
69163 --
69164 -- set accounting line options
69165 --
69166 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
69167 p_natural_side_code => 'D'
69168 , p_gain_or_loss_flag => 'N'
69169 , p_gl_transfer_mode_code => 'S'
69170 , p_acct_entry_type_code => 'A'
69171 , p_switch_side_flag => 'Y'
69172 , p_merge_duplicate_code => 'N'
69173 );
69174 --
69175 l_acc_rev_natural_side_code := 'C'; -- 4262811
69176 --
69177 --
69178 -- set accounting line type info
69179 --
69180 xla_ae_lines_pkg.SetAcctLineType
69181 (p_component_type => l_component_type
69182 ,p_event_type_code => l_event_type_code
69183 ,p_line_definition_owner_code => l_line_definition_owner_code
69184 ,p_line_definition_code => l_line_definition_code
69185 ,p_accounting_line_code => l_component_code
69186 ,p_accounting_line_type_code => l_component_type_code
69187 ,p_accounting_line_appl_id => l_component_appl_id
69188 ,p_amb_context_code => l_amb_context_code
69189 ,p_entity_code => l_entity_code
69190 ,p_event_class_code => l_event_class_code);
69191 --
69192 -- set accounting class
69193 --
69194 xla_ae_lines_pkg.SetAcctClass(
69195 p_accounting_class_code => 'INVENTORY_VALUATION'
69196 , p_ae_header_id => l_ae_header_id
69197 );
69198
69199 --
69200 -- set rounding class
69201 --
69202 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
69203 'INVENTORY_VALUATION';
69204
69205 --
69206 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
69207 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
69208 --
69209 -- bulk performance
69210 --
69211 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
69212
69213 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
69214 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
69215
69216 -- 4955764
69217 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
69218 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
69219
69220 -- 4458381 Public Sector Enh
69221
69222 --
69223 -- set accounting attributes for the line type
69224 --
69225 l_entered_amt_idx := 3;
69226 l_accted_amt_idx := 8;
69227 l_bflow_applied_to_amt_idx := NULL; -- 5132302
69228 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
69229 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
69230 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
69231 l_rec_acct_attrs.array_char_value(2) := p_source_12;
69232 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
69233 l_rec_acct_attrs.array_num_value(3) := p_source_18;
69234 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
69235 l_rec_acct_attrs.array_char_value(4) := p_source_15;
69236 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
69237 l_rec_acct_attrs.array_date_value(5) := p_source_19;
69238 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
69239 l_rec_acct_attrs.array_num_value(6) := p_source_20;
69240 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
69241 l_rec_acct_attrs.array_char_value(7) := p_source_21;
69242 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
69243 l_rec_acct_attrs.array_num_value(8) := p_source_22;
69244
69245 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
69246 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
69247
69248 ---------------------------------------------------------------------------------------------------------------
69249 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
69250 ---------------------------------------------------------------------------------------------------------------
69251 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
69252
69253 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
69254 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
69255
69256 IF xla_accounting_cache_pkg.GetValueChar
69257 (p_source_code => 'LEDGER_CATEGORY_CODE'
69258 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
69259 AND l_bflow_method_code = 'PRIOR_ENTRY'
69260 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
69261 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
69262 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
69263 )
69264 THEN
69265 xla_ae_lines_pkg.BflowUpgEntry
69266 (p_business_method_code => l_bflow_method_code
69267 ,p_business_class_code => l_bflow_class_code
69268 ,p_balance_type => l_balance_type_code);
69269 ELSE
69270 NULL;
69271 -- No business flow processing for business flow method of NONE.
69272 END IF;
69273
69274 --
69275 -- call analytical criteria
69276 --
69277
69278 --
69279 -- call description
69280 --
69281 -- No description or it is inherited.
69282 --
69283 -- call ADRs
69284 -- Bug 4922099
69285 --
69286 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
69287 (NVL(l_actual_upg_option, 'N') = 'O') OR
69288 (NVL(l_enc_upg_option, 'N') = 'O')
69289 )
69290 THEN
69291 NULL;
69292 --
69293 --
69294
69295 l_ccid := AcctDerRule_4(
69296 p_application_id => p_application_id
69297 , p_ae_header_id => l_ae_header_id
69298 , p_source_4 => p_source_4
69299 , x_transaction_coa_id => l_adr_transaction_coa_id
69300 , x_accounting_coa_id => l_adr_accounting_coa_id
69301 , x_value_type_code => l_adr_value_type_code
69302 , p_side => 'NA'
69303 );
69304
69305 xla_ae_lines_pkg.set_ccid(
69306 p_code_combination_id => l_ccid
69307 , p_value_type_code => l_adr_value_type_code
69308 , p_transaction_coa_id => l_adr_transaction_coa_id
69309 , p_accounting_coa_id => l_adr_accounting_coa_id
69310 , p_adr_code => 'CST_DEFAULT'
69311 , p_adr_type_code => 'S'
69312 , p_component_type => l_component_type
69313 , p_component_code => l_component_code
69314 , p_component_type_code => l_component_type_code
69315 , p_component_appl_id => l_component_appl_id
69316 , p_amb_context_code => l_amb_context_code
69317 , p_side => 'NA'
69318 );
69319
69320
69321 --
69322 --
69323 END IF;
69324 --
69325 -- Bug 4922099
69326 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
69327 (NVL(l_enc_upg_option, 'N') = 'O')
69328 ) AND
69329 (l_bflow_method_code = 'PRIOR_ENTRY')
69330 )
69331 THEN
69332 IF
69333 --
69334 1 = 2
69335 --
69336 THEN
69337 xla_accounting_err_pkg.build_message
69338 (p_appli_s_name => 'XLA'
69339 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
69340 ,p_token_1 => 'LINE_NUMBER'
69341 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
69342 ,p_token_2 => 'LINE_TYPE_NAME'
69343 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
69344 l_component_type
69345 ,l_component_code
69346 ,l_component_type_code
69347 ,l_component_appl_id
69348 ,l_amb_context_code
69349 ,l_entity_code
69350 ,l_event_class_code
69351 )
69352 ,p_token_3 => 'OWNER'
69353 ,p_value_3 => xla_lookups_pkg.get_meaning(
69354 p_lookup_type => 'XLA_OWNER_TYPE'
69355 ,p_lookup_code => l_component_type_code
69356 )
69357 ,p_token_4 => 'PRODUCT_NAME'
69358 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
69359 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
69360 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
69361 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
69362 ,p_ae_header_id => NULL
69363 );
69364
69365 IF (C_LEVEL_ERROR>= g_log_level) THEN
69366 trace
69367 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
69368 ,p_level => C_LEVEL_ERROR
69369 ,p_module => l_log_module);
69370 END IF;
69371 END IF;
69372 END IF;
69373 --
69374 --
69375 ------------------------------------------------------------------------------------------------
69376 -- 4219869 Business Flow
69377 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
69378 -- Prior Entry. Currently, the following code is always generated.
69379 ------------------------------------------------------------------------------------------------
69380 XLA_AE_LINES_PKG.ValidateCurrentLine;
69381
69382 ------------------------------------------------------------------------------------
69383 -- 4219869 Business Flow
69384 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
69385 ------------------------------------------------------------------------------------
69386 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
69387
69388 ----------------------------------------------------------------------------------
69389 -- 4219869 Business Flow
69390 -- Update journal entry status -- Need to generate this within IF <condition>
69391 ----------------------------------------------------------------------------------
69392 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
69393 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
69394 ,p_balance_type_code => l_balance_type_code
69395 );
69396
69397 -------------------------------------------------------------------------------------------
69398 -- 4262811 - Generate the Accrual Reversal lines
69399 -------------------------------------------------------------------------------------------
69400 BEGIN
69401 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
69402 (g_array_event(p_event_id).array_value_num('header_index'));
69403 IF l_acc_rev_flag IS NULL THEN
69404 l_acc_rev_flag := 'N';
69405 END IF;
69406 EXCEPTION
69407 WHEN OTHERS THEN
69408 l_acc_rev_flag := 'N';
69409 END;
69410 --
69411 IF (l_acc_rev_flag = 'Y') THEN
69412
69413 -- 4645092 ------------------------------------------------------------------------------
69414 -- To allow MPA report to determine if it should generate report process
69415 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
69416 ------------------------------------------------------------------------------------------
69417
69418 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
69419 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
69420 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
69421 -- call ADRs
69422 -- Bug 4922099
69423 --
69424 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
69425 (NVL(l_actual_upg_option, 'N') = 'O') OR
69426 (NVL(l_enc_upg_option, 'N') = 'O')
69427 )
69428 THEN
69429 NULL;
69430 --
69431 --
69432
69433 l_ccid := AcctDerRule_4(
69434 p_application_id => p_application_id
69435 , p_ae_header_id => l_ae_header_id
69436 , p_source_4 => p_source_4
69437 , x_transaction_coa_id => l_adr_transaction_coa_id
69438 , x_accounting_coa_id => l_adr_accounting_coa_id
69439 , x_value_type_code => l_adr_value_type_code
69440 , p_side => 'NA'
69441 );
69442
69443 xla_ae_lines_pkg.set_ccid(
69444 p_code_combination_id => l_ccid
69445 , p_value_type_code => l_adr_value_type_code
69446 , p_transaction_coa_id => l_adr_transaction_coa_id
69447 , p_accounting_coa_id => l_adr_accounting_coa_id
69448 , p_adr_code => 'CST_DEFAULT'
69449 , p_adr_type_code => 'S'
69450 , p_component_type => l_component_type
69451 , p_component_code => l_component_code
69452 , p_component_type_code => l_component_type_code
69453 , p_component_appl_id => l_component_appl_id
69454 , p_amb_context_code => l_amb_context_code
69455 , p_side => 'NA'
69456 );
69457
69458
69459 --
69460 --
69461 END IF;
69462
69463 --
69464 -- Update the line information that should be overwritten
69465 --
69466 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
69467 p_header_num => 1);
69468 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
69469
69470 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
69471
69472 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
69473 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
69474 END IF;
69475
69476 --
69477 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
69478 --
69479 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
69480 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
69481 ELSE
69482 ---------------------------------------------------------------------------------------------------
69483 -- 4262811a Switch Sign
69484 ---------------------------------------------------------------------------------------------------
69485 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
69486 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
69487 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
69488 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
69489 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
69490 -- 5132302
69491 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
69492 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
69493
69494 END IF;
69495
69496 -- 4955764
69497 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
69498 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
69499
69500
69501 XLA_AE_LINES_PKG.ValidateCurrentLine;
69502 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
69503
69504 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
69505 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
69506 ,p_balance_type_code => l_balance_type_code);
69507
69508 END IF;
69509
69510 -----------------------------------------------------------------------------------------
69511 -- 4262811 Multiperiod Accounting
69512 -----------------------------------------------------------------------------------------
69513 -- No MPA option is assigned.
69514
69515
69516 END IF;
69517 END IF;
69518 --
69519
69520 --
69521 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
69522 trace
69523 (p_msg => 'END of AcctLineType_127'
69524 ,p_level => C_LEVEL_PROCEDURE
69525 ,p_module => l_log_module);
69526 END IF;
69527 --
69528 EXCEPTION
69529 WHEN xla_exceptions_pkg.application_exception THEN
69530 RAISE;
69531 WHEN OTHERS THEN
69532 xla_exceptions_pkg.raise_message
69533 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_127');
69534 END AcctLineType_127;
69535 --
69536
69537 ---------------------------------------
69538 --
69539 -- PRIVATE FUNCTION
69540 -- AcctLineType_128
69541 --
69542 ---------------------------------------
69543 PROCEDURE AcctLineType_128 (
69544 p_application_id IN NUMBER
69545 ,p_event_id IN NUMBER
69546 ,p_calculate_acctd_flag IN VARCHAR2
69547 ,p_calculate_g_l_flag IN VARCHAR2
69548 ,p_actual_flag IN OUT VARCHAR2
69549 ,p_balance_type_code OUT VARCHAR2
69550 ,p_gain_or_loss_ref OUT VARCHAR2
69551
69552 --Cost Management Default Account
69553 , p_source_4 IN NUMBER
69554 --DISTRIBUTION_IDENTIFIER
69555 , p_source_11 IN NUMBER
69556 --Distribution Type
69557 , p_source_12 IN VARCHAR2
69558 , p_source_12_meaning IN VARCHAR2
69559 --Entered Currency Code
69560 , p_source_15 IN VARCHAR2
69561 --Entered Amount
69562 , p_source_18 IN NUMBER
69563 --Currency Conversion Date
69564 , p_source_19 IN DATE
69565 --Currency Conversion Rate
69566 , p_source_20 IN NUMBER
69567 --Currency Conversion Type
69568 , p_source_21 IN VARCHAR2
69569 --Accounted Amount
69570 , p_source_22 IN NUMBER
69571 --Accounting Line Type
69572 , p_source_24 IN NUMBER
69573 )
69574 IS
69575
69576 l_component_type VARCHAR2(80);
69577 l_component_code VARCHAR2(30);
69578 l_component_type_code VARCHAR2(1);
69579 l_component_appl_id INTEGER;
69580 l_amb_context_code VARCHAR2(30);
69581 l_entity_code VARCHAR2(30);
69582 l_event_class_code VARCHAR2(30);
69583 l_ae_header_id NUMBER;
69584 l_event_type_code VARCHAR2(30);
69585 l_line_definition_code VARCHAR2(30);
69586 l_line_definition_owner_code VARCHAR2(1);
69587 --
69588 -- adr variables
69589 l_segment VARCHAR2(30);
69590 l_ccid NUMBER;
69591 l_adr_transaction_coa_id NUMBER;
69592 l_adr_accounting_coa_id NUMBER;
69593 l_adr_flexfield_segment_code VARCHAR2(30);
69594 l_adr_flex_value_set_id NUMBER;
69595 l_adr_value_type_code VARCHAR2(30);
69596 l_adr_value_combination_id NUMBER;
69597 l_adr_value_segment_code VARCHAR2(30);
69598
69599 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
69600 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
69601 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
69602 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
69603
69604 -- 4262811 Variables ------------------------------------------------------------------------------------------
69605 l_entered_amt_idx NUMBER;
69606 l_accted_amt_idx NUMBER;
69607 l_acc_rev_flag VARCHAR2(1);
69608 l_accrual_line_num NUMBER;
69609 l_tmp_amt NUMBER;
69610 l_acc_rev_natural_side_code VARCHAR2(1);
69611
69612 l_num_entries NUMBER;
69613 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
69614 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
69615 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
69616 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
69617 l_recog_line_1 NUMBER;
69618 l_recog_line_2 NUMBER;
69619
69620 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
69621 l_bflow_applied_to_amt NUMBER; -- 5132302
69622 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
69623
69624 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
69625
69626 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
69627 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
69628
69629 ---------------------------------------------------------------------------------------------------------------
69630
69631
69632 --
69633 -- bulk performance
69634 --
69635 l_balance_type_code VARCHAR2(1);
69636 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
69637 l_log_module VARCHAR2(240);
69638
69639 --
69640 -- Upgrade strategy
69641 --
69642 l_actual_upg_option VARCHAR2(1);
69643 l_enc_upg_option VARCHAR2(1);
69644
69645 --
69646 BEGIN
69647 --
69648 IF g_log_enabled THEN
69649 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_128';
69650 END IF;
69651 --
69652 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
69653
69654 trace
69655 (p_msg => 'BEGIN of AcctLineType_128'
69656 ,p_level => C_LEVEL_PROCEDURE
69657 ,p_module => l_log_module);
69658
69659 END IF;
69660 --
69661 l_component_type := 'AMB_JLT';
69662 l_component_code := 'INVENTORY_VALUATION';
69663 l_component_type_code := 'S';
69664 l_component_appl_id := 707;
69665 l_amb_context_code := 'DEFAULT';
69666 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
69667 l_event_class_code := 'USER_DEFINE';
69668 l_event_type_code := 'UDIR_INTERORG_SHIP';
69669 l_line_definition_owner_code := 'S';
69670 l_line_definition_code := 'USER_DIR_INTERORG_SHIP';
69671 --
69672 l_balance_type_code := 'A';
69673 l_segment := NULL;
69674 l_ccid := NULL;
69675 l_adr_transaction_coa_id := NULL;
69676 l_adr_accounting_coa_id := NULL;
69677 l_adr_flexfield_segment_code := NULL;
69678 l_adr_flex_value_set_id := NULL;
69679 l_adr_value_type_code := NULL;
69680 l_adr_value_combination_id := NULL;
69681 l_adr_value_segment_code := NULL;
69682
69683 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
69684 l_bflow_class_code := ''; -- 4219869 Business Flow
69685 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
69686 l_budgetary_control_flag := 'N';
69687
69688 l_bflow_applied_to_amt_idx := NULL; -- 5132302
69689 l_bflow_applied_to_amt := NULL; -- 5132302
69690 l_entered_amt_idx := NULL; -- 4262811
69691 l_accted_amt_idx := NULL; -- 4262811
69692 l_acc_rev_flag := NULL; -- 4262811
69693 l_accrual_line_num := NULL; -- 4262811
69694 l_tmp_amt := NULL; -- 4262811
69695 --
69696
69697 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
69698 l_balance_type_code <> 'B' THEN
69699 IF NVL(p_source_24,9E125) = 1
69700 THEN
69701
69702 --
69703 XLA_AE_LINES_PKG.SetNewLine;
69704
69705 p_balance_type_code := l_balance_type_code;
69706 -- set the flag so later we will know whether the gain loss line needs to be created
69707
69708 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
69709 p_actual_flag :='A';
69710 END IF;
69711
69712 --
69713 -- bulk performance
69714 --
69715 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
69716 p_header_num => 0); -- 4262811
69717 --
69718 -- set accounting line options
69719 --
69720 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
69721 p_natural_side_code => 'D'
69722 , p_gain_or_loss_flag => 'N'
69723 , p_gl_transfer_mode_code => 'S'
69724 , p_acct_entry_type_code => 'A'
69725 , p_switch_side_flag => 'Y'
69726 , p_merge_duplicate_code => 'N'
69727 );
69728 --
69729 l_acc_rev_natural_side_code := 'C'; -- 4262811
69730 --
69731 --
69732 -- set accounting line type info
69733 --
69734 xla_ae_lines_pkg.SetAcctLineType
69735 (p_component_type => l_component_type
69736 ,p_event_type_code => l_event_type_code
69737 ,p_line_definition_owner_code => l_line_definition_owner_code
69738 ,p_line_definition_code => l_line_definition_code
69739 ,p_accounting_line_code => l_component_code
69740 ,p_accounting_line_type_code => l_component_type_code
69741 ,p_accounting_line_appl_id => l_component_appl_id
69742 ,p_amb_context_code => l_amb_context_code
69743 ,p_entity_code => l_entity_code
69744 ,p_event_class_code => l_event_class_code);
69745 --
69746 -- set accounting class
69747 --
69748 xla_ae_lines_pkg.SetAcctClass(
69749 p_accounting_class_code => 'INVENTORY_VALUATION'
69750 , p_ae_header_id => l_ae_header_id
69751 );
69752
69753 --
69754 -- set rounding class
69755 --
69756 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
69757 'INVENTORY_VALUATION';
69758
69759 --
69760 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
69761 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
69762 --
69763 -- bulk performance
69764 --
69765 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
69766
69767 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
69768 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
69769
69770 -- 4955764
69771 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
69772 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
69773
69774 -- 4458381 Public Sector Enh
69775
69776 --
69777 -- set accounting attributes for the line type
69778 --
69779 l_entered_amt_idx := 3;
69780 l_accted_amt_idx := 8;
69781 l_bflow_applied_to_amt_idx := NULL; -- 5132302
69782 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
69783 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
69784 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
69785 l_rec_acct_attrs.array_char_value(2) := p_source_12;
69786 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
69787 l_rec_acct_attrs.array_num_value(3) := p_source_18;
69788 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
69789 l_rec_acct_attrs.array_char_value(4) := p_source_15;
69790 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
69791 l_rec_acct_attrs.array_date_value(5) := p_source_19;
69792 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
69793 l_rec_acct_attrs.array_num_value(6) := p_source_20;
69794 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
69795 l_rec_acct_attrs.array_char_value(7) := p_source_21;
69796 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
69797 l_rec_acct_attrs.array_num_value(8) := p_source_22;
69798
69799 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
69800 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
69801
69802 ---------------------------------------------------------------------------------------------------------------
69803 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
69804 ---------------------------------------------------------------------------------------------------------------
69805 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
69806
69807 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
69808 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
69809
69810 IF xla_accounting_cache_pkg.GetValueChar
69811 (p_source_code => 'LEDGER_CATEGORY_CODE'
69812 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
69813 AND l_bflow_method_code = 'PRIOR_ENTRY'
69814 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
69815 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
69816 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
69817 )
69818 THEN
69819 xla_ae_lines_pkg.BflowUpgEntry
69820 (p_business_method_code => l_bflow_method_code
69821 ,p_business_class_code => l_bflow_class_code
69822 ,p_balance_type => l_balance_type_code);
69823 ELSE
69824 NULL;
69825 -- No business flow processing for business flow method of NONE.
69826 END IF;
69827
69828 --
69829 -- call analytical criteria
69830 --
69831
69832 --
69833 -- call description
69834 --
69835 -- No description or it is inherited.
69836 --
69837 -- call ADRs
69838 -- Bug 4922099
69839 --
69840 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
69841 (NVL(l_actual_upg_option, 'N') = 'O') OR
69842 (NVL(l_enc_upg_option, 'N') = 'O')
69843 )
69844 THEN
69845 NULL;
69846 --
69847 --
69848
69849 l_ccid := AcctDerRule_4(
69850 p_application_id => p_application_id
69851 , p_ae_header_id => l_ae_header_id
69852 , p_source_4 => p_source_4
69853 , x_transaction_coa_id => l_adr_transaction_coa_id
69854 , x_accounting_coa_id => l_adr_accounting_coa_id
69855 , x_value_type_code => l_adr_value_type_code
69856 , p_side => 'NA'
69857 );
69858
69859 xla_ae_lines_pkg.set_ccid(
69860 p_code_combination_id => l_ccid
69861 , p_value_type_code => l_adr_value_type_code
69862 , p_transaction_coa_id => l_adr_transaction_coa_id
69863 , p_accounting_coa_id => l_adr_accounting_coa_id
69864 , p_adr_code => 'CST_DEFAULT'
69865 , p_adr_type_code => 'S'
69866 , p_component_type => l_component_type
69867 , p_component_code => l_component_code
69868 , p_component_type_code => l_component_type_code
69869 , p_component_appl_id => l_component_appl_id
69870 , p_amb_context_code => l_amb_context_code
69871 , p_side => 'NA'
69872 );
69873
69874
69875 --
69876 --
69877 END IF;
69878 --
69879 -- Bug 4922099
69880 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
69881 (NVL(l_enc_upg_option, 'N') = 'O')
69882 ) AND
69883 (l_bflow_method_code = 'PRIOR_ENTRY')
69884 )
69885 THEN
69886 IF
69887 --
69888 1 = 2
69889 --
69890 THEN
69891 xla_accounting_err_pkg.build_message
69892 (p_appli_s_name => 'XLA'
69893 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
69894 ,p_token_1 => 'LINE_NUMBER'
69895 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
69896 ,p_token_2 => 'LINE_TYPE_NAME'
69897 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
69898 l_component_type
69899 ,l_component_code
69900 ,l_component_type_code
69901 ,l_component_appl_id
69902 ,l_amb_context_code
69903 ,l_entity_code
69904 ,l_event_class_code
69905 )
69906 ,p_token_3 => 'OWNER'
69907 ,p_value_3 => xla_lookups_pkg.get_meaning(
69908 p_lookup_type => 'XLA_OWNER_TYPE'
69909 ,p_lookup_code => l_component_type_code
69910 )
69911 ,p_token_4 => 'PRODUCT_NAME'
69912 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
69913 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
69914 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
69915 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
69916 ,p_ae_header_id => NULL
69917 );
69918
69919 IF (C_LEVEL_ERROR>= g_log_level) THEN
69920 trace
69921 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
69922 ,p_level => C_LEVEL_ERROR
69923 ,p_module => l_log_module);
69924 END IF;
69925 END IF;
69926 END IF;
69927 --
69928 --
69929 ------------------------------------------------------------------------------------------------
69930 -- 4219869 Business Flow
69931 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
69932 -- Prior Entry. Currently, the following code is always generated.
69933 ------------------------------------------------------------------------------------------------
69934 XLA_AE_LINES_PKG.ValidateCurrentLine;
69935
69936 ------------------------------------------------------------------------------------
69937 -- 4219869 Business Flow
69938 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
69939 ------------------------------------------------------------------------------------
69940 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
69941
69942 ----------------------------------------------------------------------------------
69943 -- 4219869 Business Flow
69944 -- Update journal entry status -- Need to generate this within IF <condition>
69945 ----------------------------------------------------------------------------------
69946 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
69947 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
69948 ,p_balance_type_code => l_balance_type_code
69949 );
69950
69951 -------------------------------------------------------------------------------------------
69952 -- 4262811 - Generate the Accrual Reversal lines
69953 -------------------------------------------------------------------------------------------
69954 BEGIN
69955 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
69956 (g_array_event(p_event_id).array_value_num('header_index'));
69957 IF l_acc_rev_flag IS NULL THEN
69958 l_acc_rev_flag := 'N';
69959 END IF;
69960 EXCEPTION
69961 WHEN OTHERS THEN
69962 l_acc_rev_flag := 'N';
69963 END;
69964 --
69965 IF (l_acc_rev_flag = 'Y') THEN
69966
69967 -- 4645092 ------------------------------------------------------------------------------
69968 -- To allow MPA report to determine if it should generate report process
69969 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
69970 ------------------------------------------------------------------------------------------
69971
69972 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
69973 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
69974 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
69975 -- call ADRs
69976 -- Bug 4922099
69977 --
69978 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
69979 (NVL(l_actual_upg_option, 'N') = 'O') OR
69980 (NVL(l_enc_upg_option, 'N') = 'O')
69981 )
69982 THEN
69983 NULL;
69984 --
69985 --
69986
69987 l_ccid := AcctDerRule_4(
69988 p_application_id => p_application_id
69989 , p_ae_header_id => l_ae_header_id
69990 , p_source_4 => p_source_4
69991 , x_transaction_coa_id => l_adr_transaction_coa_id
69992 , x_accounting_coa_id => l_adr_accounting_coa_id
69993 , x_value_type_code => l_adr_value_type_code
69994 , p_side => 'NA'
69995 );
69996
69997 xla_ae_lines_pkg.set_ccid(
69998 p_code_combination_id => l_ccid
69999 , p_value_type_code => l_adr_value_type_code
70000 , p_transaction_coa_id => l_adr_transaction_coa_id
70001 , p_accounting_coa_id => l_adr_accounting_coa_id
70002 , p_adr_code => 'CST_DEFAULT'
70003 , p_adr_type_code => 'S'
70004 , p_component_type => l_component_type
70005 , p_component_code => l_component_code
70006 , p_component_type_code => l_component_type_code
70007 , p_component_appl_id => l_component_appl_id
70008 , p_amb_context_code => l_amb_context_code
70009 , p_side => 'NA'
70010 );
70011
70012
70013 --
70014 --
70015 END IF;
70016
70017 --
70018 -- Update the line information that should be overwritten
70019 --
70020 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
70021 p_header_num => 1);
70022 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
70023
70024 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
70025
70026 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
70027 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
70028 END IF;
70029
70030 --
70031 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
70032 --
70033 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
70034 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
70035 ELSE
70036 ---------------------------------------------------------------------------------------------------
70037 -- 4262811a Switch Sign
70038 ---------------------------------------------------------------------------------------------------
70039 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
70040 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
70041 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
70042 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
70043 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
70044 -- 5132302
70045 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
70046 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
70047
70048 END IF;
70049
70050 -- 4955764
70051 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
70052 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
70053
70054
70055 XLA_AE_LINES_PKG.ValidateCurrentLine;
70056 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
70057
70058 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
70059 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
70060 ,p_balance_type_code => l_balance_type_code);
70061
70062 END IF;
70063
70064 -----------------------------------------------------------------------------------------
70065 -- 4262811 Multiperiod Accounting
70066 -----------------------------------------------------------------------------------------
70067 -- No MPA option is assigned.
70068
70069
70070 END IF;
70071 END IF;
70072 --
70073
70074 --
70075 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
70076 trace
70077 (p_msg => 'END of AcctLineType_128'
70078 ,p_level => C_LEVEL_PROCEDURE
70079 ,p_module => l_log_module);
70080 END IF;
70081 --
70082 EXCEPTION
70083 WHEN xla_exceptions_pkg.application_exception THEN
70084 RAISE;
70085 WHEN OTHERS THEN
70086 xla_exceptions_pkg.raise_message
70087 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_128');
70088 END AcctLineType_128;
70089 --
70090
70091 ---------------------------------------
70092 --
70093 -- PRIVATE FUNCTION
70094 -- AcctLineType_129
70095 --
70096 ---------------------------------------
70097 PROCEDURE AcctLineType_129 (
70098 p_application_id IN NUMBER
70099 ,p_event_id IN NUMBER
70100 ,p_calculate_acctd_flag IN VARCHAR2
70101 ,p_calculate_g_l_flag IN VARCHAR2
70102 ,p_actual_flag IN OUT VARCHAR2
70103 ,p_balance_type_code OUT VARCHAR2
70104 ,p_gain_or_loss_ref OUT VARCHAR2
70105
70106 --Cost Management Default Account
70107 , p_source_4 IN NUMBER
70108 --DISTRIBUTION_IDENTIFIER
70109 , p_source_11 IN NUMBER
70110 --Distribution Type
70111 , p_source_12 IN VARCHAR2
70112 , p_source_12_meaning IN VARCHAR2
70113 --Entered Currency Code
70114 , p_source_15 IN VARCHAR2
70115 --Entered Amount
70116 , p_source_18 IN NUMBER
70117 --Currency Conversion Date
70118 , p_source_19 IN DATE
70119 --Currency Conversion Rate
70120 , p_source_20 IN NUMBER
70121 --Currency Conversion Type
70122 , p_source_21 IN VARCHAR2
70123 --Accounted Amount
70124 , p_source_22 IN NUMBER
70125 --Accounting Line Type
70126 , p_source_24 IN NUMBER
70127 )
70128 IS
70129
70130 l_component_type VARCHAR2(80);
70131 l_component_code VARCHAR2(30);
70132 l_component_type_code VARCHAR2(1);
70133 l_component_appl_id INTEGER;
70134 l_amb_context_code VARCHAR2(30);
70135 l_entity_code VARCHAR2(30);
70136 l_event_class_code VARCHAR2(30);
70137 l_ae_header_id NUMBER;
70138 l_event_type_code VARCHAR2(30);
70139 l_line_definition_code VARCHAR2(30);
70140 l_line_definition_owner_code VARCHAR2(1);
70141 --
70142 -- adr variables
70143 l_segment VARCHAR2(30);
70144 l_ccid NUMBER;
70145 l_adr_transaction_coa_id NUMBER;
70146 l_adr_accounting_coa_id NUMBER;
70147 l_adr_flexfield_segment_code VARCHAR2(30);
70148 l_adr_flex_value_set_id NUMBER;
70149 l_adr_value_type_code VARCHAR2(30);
70150 l_adr_value_combination_id NUMBER;
70151 l_adr_value_segment_code VARCHAR2(30);
70152
70153 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
70154 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
70155 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
70156 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
70157
70158 -- 4262811 Variables ------------------------------------------------------------------------------------------
70159 l_entered_amt_idx NUMBER;
70160 l_accted_amt_idx NUMBER;
70161 l_acc_rev_flag VARCHAR2(1);
70162 l_accrual_line_num NUMBER;
70163 l_tmp_amt NUMBER;
70164 l_acc_rev_natural_side_code VARCHAR2(1);
70165
70166 l_num_entries NUMBER;
70167 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
70168 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
70169 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
70170 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
70171 l_recog_line_1 NUMBER;
70172 l_recog_line_2 NUMBER;
70173
70174 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
70175 l_bflow_applied_to_amt NUMBER; -- 5132302
70176 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
70177
70178 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
70179
70180 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
70181 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
70182
70183 ---------------------------------------------------------------------------------------------------------------
70184
70185
70186 --
70187 -- bulk performance
70188 --
70189 l_balance_type_code VARCHAR2(1);
70190 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
70191 l_log_module VARCHAR2(240);
70192
70193 --
70194 -- Upgrade strategy
70195 --
70196 l_actual_upg_option VARCHAR2(1);
70197 l_enc_upg_option VARCHAR2(1);
70198
70199 --
70200 BEGIN
70201 --
70202 IF g_log_enabled THEN
70203 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_129';
70204 END IF;
70205 --
70206 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
70207
70208 trace
70209 (p_msg => 'BEGIN of AcctLineType_129'
70210 ,p_level => C_LEVEL_PROCEDURE
70211 ,p_module => l_log_module);
70212
70213 END IF;
70214 --
70215 l_component_type := 'AMB_JLT';
70216 l_component_code := 'INVENTORY_VALUATION';
70217 l_component_type_code := 'S';
70218 l_component_appl_id := 707;
70219 l_amb_context_code := 'DEFAULT';
70220 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
70221 l_event_class_code := 'CON_INV_OWNR_TXFR';
70222 l_event_type_code := 'CON_INV_OWNR_TXFR_ALL';
70223 l_line_definition_owner_code := 'S';
70224 l_line_definition_code := 'CON_INV_OWNR_TXFR';
70225 --
70226 l_balance_type_code := 'A';
70227 l_segment := NULL;
70228 l_ccid := NULL;
70229 l_adr_transaction_coa_id := NULL;
70230 l_adr_accounting_coa_id := NULL;
70231 l_adr_flexfield_segment_code := NULL;
70232 l_adr_flex_value_set_id := NULL;
70233 l_adr_value_type_code := NULL;
70234 l_adr_value_combination_id := NULL;
70235 l_adr_value_segment_code := NULL;
70236
70237 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
70238 l_bflow_class_code := ''; -- 4219869 Business Flow
70239 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
70240 l_budgetary_control_flag := 'N';
70241
70242 l_bflow_applied_to_amt_idx := NULL; -- 5132302
70243 l_bflow_applied_to_amt := NULL; -- 5132302
70244 l_entered_amt_idx := NULL; -- 4262811
70245 l_accted_amt_idx := NULL; -- 4262811
70246 l_acc_rev_flag := NULL; -- 4262811
70247 l_accrual_line_num := NULL; -- 4262811
70248 l_tmp_amt := NULL; -- 4262811
70249 --
70250
70251 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
70252 l_balance_type_code <> 'B' THEN
70253 IF NVL(p_source_24,9E125) = 1
70254 THEN
70255
70256 --
70257 XLA_AE_LINES_PKG.SetNewLine;
70258
70259 p_balance_type_code := l_balance_type_code;
70260 -- set the flag so later we will know whether the gain loss line needs to be created
70261
70262 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
70263 p_actual_flag :='A';
70264 END IF;
70265
70266 --
70267 -- bulk performance
70268 --
70269 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
70270 p_header_num => 0); -- 4262811
70271 --
70272 -- set accounting line options
70273 --
70274 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
70275 p_natural_side_code => 'D'
70276 , p_gain_or_loss_flag => 'N'
70277 , p_gl_transfer_mode_code => 'S'
70278 , p_acct_entry_type_code => 'A'
70279 , p_switch_side_flag => 'Y'
70280 , p_merge_duplicate_code => 'N'
70281 );
70282 --
70283 l_acc_rev_natural_side_code := 'C'; -- 4262811
70284 --
70285 --
70286 -- set accounting line type info
70287 --
70288 xla_ae_lines_pkg.SetAcctLineType
70289 (p_component_type => l_component_type
70290 ,p_event_type_code => l_event_type_code
70291 ,p_line_definition_owner_code => l_line_definition_owner_code
70292 ,p_line_definition_code => l_line_definition_code
70293 ,p_accounting_line_code => l_component_code
70294 ,p_accounting_line_type_code => l_component_type_code
70295 ,p_accounting_line_appl_id => l_component_appl_id
70296 ,p_amb_context_code => l_amb_context_code
70297 ,p_entity_code => l_entity_code
70298 ,p_event_class_code => l_event_class_code);
70299 --
70300 -- set accounting class
70301 --
70302 xla_ae_lines_pkg.SetAcctClass(
70303 p_accounting_class_code => 'INVENTORY_VALUATION'
70304 , p_ae_header_id => l_ae_header_id
70305 );
70306
70307 --
70308 -- set rounding class
70309 --
70310 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
70311 'INVENTORY_VALUATION';
70312
70313 --
70314 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
70315 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
70316 --
70317 -- bulk performance
70318 --
70319 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
70320
70321 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
70322 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
70323
70324 -- 4955764
70325 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
70326 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
70327
70328 -- 4458381 Public Sector Enh
70329
70330 --
70331 -- set accounting attributes for the line type
70332 --
70333 l_entered_amt_idx := 3;
70334 l_accted_amt_idx := 8;
70335 l_bflow_applied_to_amt_idx := NULL; -- 5132302
70336 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
70337 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
70338 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
70339 l_rec_acct_attrs.array_char_value(2) := p_source_12;
70340 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
70341 l_rec_acct_attrs.array_num_value(3) := p_source_18;
70342 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
70343 l_rec_acct_attrs.array_char_value(4) := p_source_15;
70344 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
70345 l_rec_acct_attrs.array_date_value(5) := p_source_19;
70346 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
70347 l_rec_acct_attrs.array_num_value(6) := p_source_20;
70348 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
70349 l_rec_acct_attrs.array_char_value(7) := p_source_21;
70350 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
70351 l_rec_acct_attrs.array_num_value(8) := p_source_22;
70352
70353 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
70354 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
70355
70356 ---------------------------------------------------------------------------------------------------------------
70357 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
70358 ---------------------------------------------------------------------------------------------------------------
70359 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
70360
70361 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
70362 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
70363
70364 IF xla_accounting_cache_pkg.GetValueChar
70365 (p_source_code => 'LEDGER_CATEGORY_CODE'
70366 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
70367 AND l_bflow_method_code = 'PRIOR_ENTRY'
70368 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
70369 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
70370 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
70371 )
70372 THEN
70373 xla_ae_lines_pkg.BflowUpgEntry
70374 (p_business_method_code => l_bflow_method_code
70375 ,p_business_class_code => l_bflow_class_code
70376 ,p_balance_type => l_balance_type_code);
70377 ELSE
70378 NULL;
70379 -- No business flow processing for business flow method of NONE.
70380 END IF;
70381
70382 --
70383 -- call analytical criteria
70384 --
70385
70386 --
70387 -- call description
70388 --
70389 -- No description or it is inherited.
70390 --
70391 -- call ADRs
70392 -- Bug 4922099
70393 --
70394 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
70395 (NVL(l_actual_upg_option, 'N') = 'O') OR
70396 (NVL(l_enc_upg_option, 'N') = 'O')
70397 )
70398 THEN
70399 NULL;
70400 --
70401 --
70402
70403 l_ccid := AcctDerRule_4(
70404 p_application_id => p_application_id
70405 , p_ae_header_id => l_ae_header_id
70406 , p_source_4 => p_source_4
70407 , x_transaction_coa_id => l_adr_transaction_coa_id
70408 , x_accounting_coa_id => l_adr_accounting_coa_id
70409 , x_value_type_code => l_adr_value_type_code
70410 , p_side => 'NA'
70411 );
70412
70413 xla_ae_lines_pkg.set_ccid(
70414 p_code_combination_id => l_ccid
70415 , p_value_type_code => l_adr_value_type_code
70416 , p_transaction_coa_id => l_adr_transaction_coa_id
70417 , p_accounting_coa_id => l_adr_accounting_coa_id
70418 , p_adr_code => 'CST_DEFAULT'
70419 , p_adr_type_code => 'S'
70420 , p_component_type => l_component_type
70421 , p_component_code => l_component_code
70422 , p_component_type_code => l_component_type_code
70423 , p_component_appl_id => l_component_appl_id
70424 , p_amb_context_code => l_amb_context_code
70425 , p_side => 'NA'
70426 );
70427
70428
70429 --
70430 --
70431 END IF;
70432 --
70433 -- Bug 4922099
70434 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
70435 (NVL(l_enc_upg_option, 'N') = 'O')
70436 ) AND
70437 (l_bflow_method_code = 'PRIOR_ENTRY')
70438 )
70439 THEN
70440 IF
70441 --
70442 1 = 2
70443 --
70444 THEN
70445 xla_accounting_err_pkg.build_message
70446 (p_appli_s_name => 'XLA'
70447 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
70448 ,p_token_1 => 'LINE_NUMBER'
70449 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
70450 ,p_token_2 => 'LINE_TYPE_NAME'
70451 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
70452 l_component_type
70453 ,l_component_code
70454 ,l_component_type_code
70455 ,l_component_appl_id
70456 ,l_amb_context_code
70457 ,l_entity_code
70458 ,l_event_class_code
70459 )
70460 ,p_token_3 => 'OWNER'
70461 ,p_value_3 => xla_lookups_pkg.get_meaning(
70462 p_lookup_type => 'XLA_OWNER_TYPE'
70463 ,p_lookup_code => l_component_type_code
70464 )
70465 ,p_token_4 => 'PRODUCT_NAME'
70466 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
70467 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
70468 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
70469 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
70470 ,p_ae_header_id => NULL
70471 );
70472
70473 IF (C_LEVEL_ERROR>= g_log_level) THEN
70474 trace
70475 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
70476 ,p_level => C_LEVEL_ERROR
70477 ,p_module => l_log_module);
70478 END IF;
70479 END IF;
70480 END IF;
70481 --
70482 --
70483 ------------------------------------------------------------------------------------------------
70484 -- 4219869 Business Flow
70485 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
70486 -- Prior Entry. Currently, the following code is always generated.
70487 ------------------------------------------------------------------------------------------------
70488 XLA_AE_LINES_PKG.ValidateCurrentLine;
70489
70490 ------------------------------------------------------------------------------------
70491 -- 4219869 Business Flow
70492 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
70493 ------------------------------------------------------------------------------------
70494 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
70495
70496 ----------------------------------------------------------------------------------
70497 -- 4219869 Business Flow
70498 -- Update journal entry status -- Need to generate this within IF <condition>
70499 ----------------------------------------------------------------------------------
70500 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
70501 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
70502 ,p_balance_type_code => l_balance_type_code
70503 );
70504
70505 -------------------------------------------------------------------------------------------
70506 -- 4262811 - Generate the Accrual Reversal lines
70507 -------------------------------------------------------------------------------------------
70508 BEGIN
70509 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
70510 (g_array_event(p_event_id).array_value_num('header_index'));
70511 IF l_acc_rev_flag IS NULL THEN
70512 l_acc_rev_flag := 'N';
70513 END IF;
70514 EXCEPTION
70515 WHEN OTHERS THEN
70516 l_acc_rev_flag := 'N';
70517 END;
70518 --
70519 IF (l_acc_rev_flag = 'Y') THEN
70520
70521 -- 4645092 ------------------------------------------------------------------------------
70522 -- To allow MPA report to determine if it should generate report process
70523 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
70524 ------------------------------------------------------------------------------------------
70525
70526 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
70527 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
70528 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
70529 -- call ADRs
70530 -- Bug 4922099
70531 --
70532 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
70533 (NVL(l_actual_upg_option, 'N') = 'O') OR
70534 (NVL(l_enc_upg_option, 'N') = 'O')
70535 )
70536 THEN
70537 NULL;
70538 --
70539 --
70540
70541 l_ccid := AcctDerRule_4(
70542 p_application_id => p_application_id
70543 , p_ae_header_id => l_ae_header_id
70544 , p_source_4 => p_source_4
70545 , x_transaction_coa_id => l_adr_transaction_coa_id
70546 , x_accounting_coa_id => l_adr_accounting_coa_id
70547 , x_value_type_code => l_adr_value_type_code
70548 , p_side => 'NA'
70549 );
70550
70551 xla_ae_lines_pkg.set_ccid(
70552 p_code_combination_id => l_ccid
70553 , p_value_type_code => l_adr_value_type_code
70554 , p_transaction_coa_id => l_adr_transaction_coa_id
70555 , p_accounting_coa_id => l_adr_accounting_coa_id
70556 , p_adr_code => 'CST_DEFAULT'
70557 , p_adr_type_code => 'S'
70558 , p_component_type => l_component_type
70559 , p_component_code => l_component_code
70560 , p_component_type_code => l_component_type_code
70561 , p_component_appl_id => l_component_appl_id
70562 , p_amb_context_code => l_amb_context_code
70563 , p_side => 'NA'
70564 );
70565
70566
70567 --
70568 --
70569 END IF;
70570
70571 --
70572 -- Update the line information that should be overwritten
70573 --
70574 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
70575 p_header_num => 1);
70576 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
70577
70578 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
70579
70580 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
70581 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
70582 END IF;
70583
70584 --
70585 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
70586 --
70587 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
70588 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
70589 ELSE
70590 ---------------------------------------------------------------------------------------------------
70591 -- 4262811a Switch Sign
70592 ---------------------------------------------------------------------------------------------------
70593 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
70594 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
70595 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
70596 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
70597 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
70598 -- 5132302
70599 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
70600 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
70601
70602 END IF;
70603
70604 -- 4955764
70605 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
70606 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
70607
70608
70609 XLA_AE_LINES_PKG.ValidateCurrentLine;
70610 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
70611
70612 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
70613 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
70614 ,p_balance_type_code => l_balance_type_code);
70615
70616 END IF;
70617
70618 -----------------------------------------------------------------------------------------
70619 -- 4262811 Multiperiod Accounting
70620 -----------------------------------------------------------------------------------------
70621 -- No MPA option is assigned.
70622
70623
70624 END IF;
70625 END IF;
70626 --
70627
70628 --
70629 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
70630 trace
70631 (p_msg => 'END of AcctLineType_129'
70632 ,p_level => C_LEVEL_PROCEDURE
70633 ,p_module => l_log_module);
70634 END IF;
70635 --
70636 EXCEPTION
70637 WHEN xla_exceptions_pkg.application_exception THEN
70638 RAISE;
70639 WHEN OTHERS THEN
70640 xla_exceptions_pkg.raise_message
70641 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_129');
70642 END AcctLineType_129;
70643 --
70644
70645 ---------------------------------------
70646 --
70647 -- PRIVATE FUNCTION
70648 -- AcctLineType_130
70649 --
70650 ---------------------------------------
70651 PROCEDURE AcctLineType_130 (
70652 p_application_id IN NUMBER
70653 ,p_event_id IN NUMBER
70654 ,p_calculate_acctd_flag IN VARCHAR2
70655 ,p_calculate_g_l_flag IN VARCHAR2
70656 ,p_actual_flag IN OUT VARCHAR2
70657 ,p_balance_type_code OUT VARCHAR2
70658 ,p_gain_or_loss_ref OUT VARCHAR2
70659
70660 --Cost Management Default Account
70661 , p_source_4 IN NUMBER
70662 --DISTRIBUTION_IDENTIFIER
70663 , p_source_11 IN NUMBER
70664 --Distribution Type
70665 , p_source_12 IN VARCHAR2
70666 , p_source_12_meaning IN VARCHAR2
70667 --Entered Currency Code
70668 , p_source_15 IN VARCHAR2
70669 --Entered Amount
70670 , p_source_18 IN NUMBER
70671 --Currency Conversion Date
70672 , p_source_19 IN DATE
70673 --Currency Conversion Rate
70674 , p_source_20 IN NUMBER
70675 --Currency Conversion Type
70676 , p_source_21 IN VARCHAR2
70677 --Accounted Amount
70678 , p_source_22 IN NUMBER
70679 --Accounting Line Type
70680 , p_source_24 IN NUMBER
70681 )
70682 IS
70683
70684 l_component_type VARCHAR2(80);
70685 l_component_code VARCHAR2(30);
70686 l_component_type_code VARCHAR2(1);
70687 l_component_appl_id INTEGER;
70688 l_amb_context_code VARCHAR2(30);
70689 l_entity_code VARCHAR2(30);
70690 l_event_class_code VARCHAR2(30);
70691 l_ae_header_id NUMBER;
70692 l_event_type_code VARCHAR2(30);
70693 l_line_definition_code VARCHAR2(30);
70694 l_line_definition_owner_code VARCHAR2(1);
70695 --
70696 -- adr variables
70697 l_segment VARCHAR2(30);
70698 l_ccid NUMBER;
70699 l_adr_transaction_coa_id NUMBER;
70700 l_adr_accounting_coa_id NUMBER;
70701 l_adr_flexfield_segment_code VARCHAR2(30);
70702 l_adr_flex_value_set_id NUMBER;
70703 l_adr_value_type_code VARCHAR2(30);
70704 l_adr_value_combination_id NUMBER;
70705 l_adr_value_segment_code VARCHAR2(30);
70706
70707 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
70708 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
70709 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
70710 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
70711
70712 -- 4262811 Variables ------------------------------------------------------------------------------------------
70713 l_entered_amt_idx NUMBER;
70714 l_accted_amt_idx NUMBER;
70715 l_acc_rev_flag VARCHAR2(1);
70716 l_accrual_line_num NUMBER;
70717 l_tmp_amt NUMBER;
70718 l_acc_rev_natural_side_code VARCHAR2(1);
70719
70720 l_num_entries NUMBER;
70721 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
70722 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
70723 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
70724 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
70725 l_recog_line_1 NUMBER;
70726 l_recog_line_2 NUMBER;
70727
70728 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
70729 l_bflow_applied_to_amt NUMBER; -- 5132302
70730 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
70731
70732 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
70733
70734 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
70735 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
70736
70737 ---------------------------------------------------------------------------------------------------------------
70738
70739
70740 --
70741 -- bulk performance
70742 --
70743 l_balance_type_code VARCHAR2(1);
70744 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
70745 l_log_module VARCHAR2(240);
70746
70747 --
70748 -- Upgrade strategy
70749 --
70750 l_actual_upg_option VARCHAR2(1);
70751 l_enc_upg_option VARCHAR2(1);
70752
70753 --
70754 BEGIN
70755 --
70756 IF g_log_enabled THEN
70757 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_130';
70758 END IF;
70759 --
70760 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
70761
70762 trace
70763 (p_msg => 'BEGIN of AcctLineType_130'
70764 ,p_level => C_LEVEL_PROCEDURE
70765 ,p_module => l_log_module);
70766
70767 END IF;
70768 --
70769 l_component_type := 'AMB_JLT';
70770 l_component_code := 'INVENTORY_VALUATION';
70771 l_component_type_code := 'S';
70772 l_component_appl_id := 707;
70773 l_amb_context_code := 'DEFAULT';
70774 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
70775 l_event_class_code := 'DIR_INTERORG_SHIP';
70776 l_event_type_code := 'DIR_INTERORG_SHIP_ALL';
70777 l_line_definition_owner_code := 'S';
70778 l_line_definition_code := 'DIRECT_INTERORG_SHIP';
70779 --
70780 l_balance_type_code := 'A';
70781 l_segment := NULL;
70782 l_ccid := NULL;
70783 l_adr_transaction_coa_id := NULL;
70784 l_adr_accounting_coa_id := NULL;
70785 l_adr_flexfield_segment_code := NULL;
70786 l_adr_flex_value_set_id := NULL;
70787 l_adr_value_type_code := NULL;
70788 l_adr_value_combination_id := NULL;
70789 l_adr_value_segment_code := NULL;
70790
70791 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
70792 l_bflow_class_code := ''; -- 4219869 Business Flow
70793 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
70794 l_budgetary_control_flag := 'N';
70795
70796 l_bflow_applied_to_amt_idx := NULL; -- 5132302
70797 l_bflow_applied_to_amt := NULL; -- 5132302
70798 l_entered_amt_idx := NULL; -- 4262811
70799 l_accted_amt_idx := NULL; -- 4262811
70800 l_acc_rev_flag := NULL; -- 4262811
70801 l_accrual_line_num := NULL; -- 4262811
70802 l_tmp_amt := NULL; -- 4262811
70803 --
70804
70805 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
70806 l_balance_type_code <> 'B' THEN
70807 IF NVL(p_source_24,9E125) = 1
70808 THEN
70809
70810 --
70811 XLA_AE_LINES_PKG.SetNewLine;
70812
70813 p_balance_type_code := l_balance_type_code;
70814 -- set the flag so later we will know whether the gain loss line needs to be created
70815
70816 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
70817 p_actual_flag :='A';
70818 END IF;
70819
70820 --
70821 -- bulk performance
70822 --
70823 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
70824 p_header_num => 0); -- 4262811
70825 --
70826 -- set accounting line options
70827 --
70828 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
70829 p_natural_side_code => 'D'
70830 , p_gain_or_loss_flag => 'N'
70831 , p_gl_transfer_mode_code => 'S'
70832 , p_acct_entry_type_code => 'A'
70833 , p_switch_side_flag => 'Y'
70834 , p_merge_duplicate_code => 'N'
70835 );
70836 --
70837 l_acc_rev_natural_side_code := 'C'; -- 4262811
70838 --
70839 --
70840 -- set accounting line type info
70841 --
70842 xla_ae_lines_pkg.SetAcctLineType
70843 (p_component_type => l_component_type
70844 ,p_event_type_code => l_event_type_code
70845 ,p_line_definition_owner_code => l_line_definition_owner_code
70846 ,p_line_definition_code => l_line_definition_code
70847 ,p_accounting_line_code => l_component_code
70848 ,p_accounting_line_type_code => l_component_type_code
70849 ,p_accounting_line_appl_id => l_component_appl_id
70850 ,p_amb_context_code => l_amb_context_code
70851 ,p_entity_code => l_entity_code
70852 ,p_event_class_code => l_event_class_code);
70853 --
70854 -- set accounting class
70855 --
70856 xla_ae_lines_pkg.SetAcctClass(
70857 p_accounting_class_code => 'INVENTORY_VALUATION'
70858 , p_ae_header_id => l_ae_header_id
70859 );
70860
70861 --
70862 -- set rounding class
70863 --
70864 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
70865 'INVENTORY_VALUATION';
70866
70867 --
70868 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
70869 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
70870 --
70871 -- bulk performance
70872 --
70873 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
70874
70875 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
70876 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
70877
70878 -- 4955764
70879 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
70880 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
70881
70882 -- 4458381 Public Sector Enh
70883
70884 --
70885 -- set accounting attributes for the line type
70886 --
70887 l_entered_amt_idx := 3;
70888 l_accted_amt_idx := 8;
70889 l_bflow_applied_to_amt_idx := NULL; -- 5132302
70890 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
70891 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
70892 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
70893 l_rec_acct_attrs.array_char_value(2) := p_source_12;
70894 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
70895 l_rec_acct_attrs.array_num_value(3) := p_source_18;
70896 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
70897 l_rec_acct_attrs.array_char_value(4) := p_source_15;
70898 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
70899 l_rec_acct_attrs.array_date_value(5) := p_source_19;
70900 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
70901 l_rec_acct_attrs.array_num_value(6) := p_source_20;
70902 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
70903 l_rec_acct_attrs.array_char_value(7) := p_source_21;
70904 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
70905 l_rec_acct_attrs.array_num_value(8) := p_source_22;
70906
70907 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
70908 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
70909
70910 ---------------------------------------------------------------------------------------------------------------
70911 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
70912 ---------------------------------------------------------------------------------------------------------------
70913 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
70914
70915 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
70916 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
70917
70918 IF xla_accounting_cache_pkg.GetValueChar
70919 (p_source_code => 'LEDGER_CATEGORY_CODE'
70920 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
70921 AND l_bflow_method_code = 'PRIOR_ENTRY'
70922 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
70923 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
70924 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
70925 )
70926 THEN
70927 xla_ae_lines_pkg.BflowUpgEntry
70928 (p_business_method_code => l_bflow_method_code
70929 ,p_business_class_code => l_bflow_class_code
70930 ,p_balance_type => l_balance_type_code);
70931 ELSE
70932 NULL;
70933 -- No business flow processing for business flow method of NONE.
70934 END IF;
70935
70936 --
70937 -- call analytical criteria
70938 --
70939
70940 --
70941 -- call description
70942 --
70943 -- No description or it is inherited.
70944 --
70945 -- call ADRs
70946 -- Bug 4922099
70947 --
70948 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
70949 (NVL(l_actual_upg_option, 'N') = 'O') OR
70950 (NVL(l_enc_upg_option, 'N') = 'O')
70951 )
70952 THEN
70953 NULL;
70954 --
70955 --
70956
70957 l_ccid := AcctDerRule_4(
70958 p_application_id => p_application_id
70959 , p_ae_header_id => l_ae_header_id
70960 , p_source_4 => p_source_4
70961 , x_transaction_coa_id => l_adr_transaction_coa_id
70962 , x_accounting_coa_id => l_adr_accounting_coa_id
70963 , x_value_type_code => l_adr_value_type_code
70964 , p_side => 'NA'
70965 );
70966
70967 xla_ae_lines_pkg.set_ccid(
70968 p_code_combination_id => l_ccid
70969 , p_value_type_code => l_adr_value_type_code
70970 , p_transaction_coa_id => l_adr_transaction_coa_id
70971 , p_accounting_coa_id => l_adr_accounting_coa_id
70972 , p_adr_code => 'CST_DEFAULT'
70973 , p_adr_type_code => 'S'
70974 , p_component_type => l_component_type
70975 , p_component_code => l_component_code
70976 , p_component_type_code => l_component_type_code
70977 , p_component_appl_id => l_component_appl_id
70978 , p_amb_context_code => l_amb_context_code
70979 , p_side => 'NA'
70980 );
70981
70982
70983 --
70984 --
70985 END IF;
70986 --
70987 -- Bug 4922099
70988 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
70989 (NVL(l_enc_upg_option, 'N') = 'O')
70990 ) AND
70991 (l_bflow_method_code = 'PRIOR_ENTRY')
70992 )
70993 THEN
70994 IF
70995 --
70996 1 = 2
70997 --
70998 THEN
70999 xla_accounting_err_pkg.build_message
71000 (p_appli_s_name => 'XLA'
71001 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
71002 ,p_token_1 => 'LINE_NUMBER'
71003 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
71004 ,p_token_2 => 'LINE_TYPE_NAME'
71005 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
71006 l_component_type
71007 ,l_component_code
71008 ,l_component_type_code
71009 ,l_component_appl_id
71010 ,l_amb_context_code
71011 ,l_entity_code
71012 ,l_event_class_code
71013 )
71014 ,p_token_3 => 'OWNER'
71015 ,p_value_3 => xla_lookups_pkg.get_meaning(
71016 p_lookup_type => 'XLA_OWNER_TYPE'
71017 ,p_lookup_code => l_component_type_code
71018 )
71019 ,p_token_4 => 'PRODUCT_NAME'
71020 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
71021 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
71022 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
71023 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
71024 ,p_ae_header_id => NULL
71025 );
71026
71027 IF (C_LEVEL_ERROR>= g_log_level) THEN
71028 trace
71029 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
71030 ,p_level => C_LEVEL_ERROR
71031 ,p_module => l_log_module);
71032 END IF;
71033 END IF;
71034 END IF;
71035 --
71036 --
71037 ------------------------------------------------------------------------------------------------
71038 -- 4219869 Business Flow
71039 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
71040 -- Prior Entry. Currently, the following code is always generated.
71041 ------------------------------------------------------------------------------------------------
71042 XLA_AE_LINES_PKG.ValidateCurrentLine;
71043
71044 ------------------------------------------------------------------------------------
71045 -- 4219869 Business Flow
71046 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
71047 ------------------------------------------------------------------------------------
71048 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
71049
71050 ----------------------------------------------------------------------------------
71051 -- 4219869 Business Flow
71052 -- Update journal entry status -- Need to generate this within IF <condition>
71053 ----------------------------------------------------------------------------------
71054 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
71055 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
71056 ,p_balance_type_code => l_balance_type_code
71057 );
71058
71059 -------------------------------------------------------------------------------------------
71060 -- 4262811 - Generate the Accrual Reversal lines
71061 -------------------------------------------------------------------------------------------
71062 BEGIN
71063 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
71064 (g_array_event(p_event_id).array_value_num('header_index'));
71065 IF l_acc_rev_flag IS NULL THEN
71066 l_acc_rev_flag := 'N';
71067 END IF;
71068 EXCEPTION
71069 WHEN OTHERS THEN
71070 l_acc_rev_flag := 'N';
71071 END;
71072 --
71073 IF (l_acc_rev_flag = 'Y') THEN
71074
71075 -- 4645092 ------------------------------------------------------------------------------
71076 -- To allow MPA report to determine if it should generate report process
71077 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
71078 ------------------------------------------------------------------------------------------
71079
71080 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
71081 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
71082 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
71083 -- call ADRs
71084 -- Bug 4922099
71085 --
71086 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
71087 (NVL(l_actual_upg_option, 'N') = 'O') OR
71088 (NVL(l_enc_upg_option, 'N') = 'O')
71089 )
71090 THEN
71091 NULL;
71092 --
71093 --
71094
71095 l_ccid := AcctDerRule_4(
71096 p_application_id => p_application_id
71097 , p_ae_header_id => l_ae_header_id
71098 , p_source_4 => p_source_4
71099 , x_transaction_coa_id => l_adr_transaction_coa_id
71100 , x_accounting_coa_id => l_adr_accounting_coa_id
71101 , x_value_type_code => l_adr_value_type_code
71102 , p_side => 'NA'
71103 );
71104
71105 xla_ae_lines_pkg.set_ccid(
71106 p_code_combination_id => l_ccid
71107 , p_value_type_code => l_adr_value_type_code
71108 , p_transaction_coa_id => l_adr_transaction_coa_id
71109 , p_accounting_coa_id => l_adr_accounting_coa_id
71110 , p_adr_code => 'CST_DEFAULT'
71111 , p_adr_type_code => 'S'
71112 , p_component_type => l_component_type
71113 , p_component_code => l_component_code
71114 , p_component_type_code => l_component_type_code
71115 , p_component_appl_id => l_component_appl_id
71116 , p_amb_context_code => l_amb_context_code
71117 , p_side => 'NA'
71118 );
71119
71120
71121 --
71122 --
71123 END IF;
71124
71125 --
71126 -- Update the line information that should be overwritten
71127 --
71128 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
71129 p_header_num => 1);
71130 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
71131
71132 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
71133
71134 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
71135 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
71136 END IF;
71137
71138 --
71139 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
71140 --
71141 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
71142 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
71143 ELSE
71144 ---------------------------------------------------------------------------------------------------
71145 -- 4262811a Switch Sign
71146 ---------------------------------------------------------------------------------------------------
71147 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
71148 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
71149 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
71150 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
71151 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
71152 -- 5132302
71153 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
71154 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
71155
71156 END IF;
71157
71158 -- 4955764
71159 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
71160 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
71161
71162
71163 XLA_AE_LINES_PKG.ValidateCurrentLine;
71164 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
71165
71166 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
71167 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
71168 ,p_balance_type_code => l_balance_type_code);
71169
71170 END IF;
71171
71172 -----------------------------------------------------------------------------------------
71173 -- 4262811 Multiperiod Accounting
71174 -----------------------------------------------------------------------------------------
71175 -- No MPA option is assigned.
71176
71177
71178 END IF;
71179 END IF;
71180 --
71181
71182 --
71183 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
71184 trace
71185 (p_msg => 'END of AcctLineType_130'
71186 ,p_level => C_LEVEL_PROCEDURE
71187 ,p_module => l_log_module);
71188 END IF;
71189 --
71190 EXCEPTION
71191 WHEN xla_exceptions_pkg.application_exception THEN
71192 RAISE;
71193 WHEN OTHERS THEN
71194 xla_exceptions_pkg.raise_message
71195 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_130');
71196 END AcctLineType_130;
71197 --
71198
71199 ---------------------------------------
71200 --
71201 -- PRIVATE FUNCTION
71202 -- AcctLineType_131
71203 --
71204 ---------------------------------------
71205 PROCEDURE AcctLineType_131 (
71206 p_application_id IN NUMBER
71207 ,p_event_id IN NUMBER
71208 ,p_calculate_acctd_flag IN VARCHAR2
71209 ,p_calculate_g_l_flag IN VARCHAR2
71210 ,p_actual_flag IN OUT VARCHAR2
71211 ,p_balance_type_code OUT VARCHAR2
71212 ,p_gain_or_loss_ref OUT VARCHAR2
71213
71214 --Cost Management Default Account
71215 , p_source_4 IN NUMBER
71216 --DISTRIBUTION_IDENTIFIER
71217 , p_source_11 IN NUMBER
71218 --Distribution Type
71219 , p_source_12 IN VARCHAR2
71220 , p_source_12_meaning IN VARCHAR2
71221 --Entered Currency Code
71222 , p_source_15 IN VARCHAR2
71223 --Entered Amount
71224 , p_source_18 IN NUMBER
71225 --Currency Conversion Date
71226 , p_source_19 IN DATE
71227 --Currency Conversion Rate
71228 , p_source_20 IN NUMBER
71229 --Currency Conversion Type
71230 , p_source_21 IN VARCHAR2
71231 --Accounted Amount
71232 , p_source_22 IN NUMBER
71233 --Accounting Line Type
71234 , p_source_24 IN NUMBER
71235 )
71236 IS
71237
71238 l_component_type VARCHAR2(80);
71239 l_component_code VARCHAR2(30);
71240 l_component_type_code VARCHAR2(1);
71241 l_component_appl_id INTEGER;
71242 l_amb_context_code VARCHAR2(30);
71243 l_entity_code VARCHAR2(30);
71244 l_event_class_code VARCHAR2(30);
71245 l_ae_header_id NUMBER;
71246 l_event_type_code VARCHAR2(30);
71247 l_line_definition_code VARCHAR2(30);
71248 l_line_definition_owner_code VARCHAR2(1);
71249 --
71250 -- adr variables
71251 l_segment VARCHAR2(30);
71252 l_ccid NUMBER;
71253 l_adr_transaction_coa_id NUMBER;
71254 l_adr_accounting_coa_id NUMBER;
71255 l_adr_flexfield_segment_code VARCHAR2(30);
71256 l_adr_flex_value_set_id NUMBER;
71257 l_adr_value_type_code VARCHAR2(30);
71258 l_adr_value_combination_id NUMBER;
71259 l_adr_value_segment_code VARCHAR2(30);
71260
71261 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
71262 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
71263 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
71264 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
71265
71266 -- 4262811 Variables ------------------------------------------------------------------------------------------
71267 l_entered_amt_idx NUMBER;
71268 l_accted_amt_idx NUMBER;
71269 l_acc_rev_flag VARCHAR2(1);
71270 l_accrual_line_num NUMBER;
71271 l_tmp_amt NUMBER;
71272 l_acc_rev_natural_side_code VARCHAR2(1);
71273
71274 l_num_entries NUMBER;
71275 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
71276 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
71277 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
71278 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
71279 l_recog_line_1 NUMBER;
71280 l_recog_line_2 NUMBER;
71281
71282 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
71283 l_bflow_applied_to_amt NUMBER; -- 5132302
71284 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
71285
71286 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
71287
71288 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
71289 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
71290
71291 ---------------------------------------------------------------------------------------------------------------
71292
71293
71294 --
71295 -- bulk performance
71296 --
71297 l_balance_type_code VARCHAR2(1);
71298 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
71299 l_log_module VARCHAR2(240);
71300
71301 --
71302 -- Upgrade strategy
71303 --
71304 l_actual_upg_option VARCHAR2(1);
71305 l_enc_upg_option VARCHAR2(1);
71306
71307 --
71308 BEGIN
71309 --
71310 IF g_log_enabled THEN
71311 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_131';
71312 END IF;
71313 --
71314 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
71315
71316 trace
71317 (p_msg => 'BEGIN of AcctLineType_131'
71318 ,p_level => C_LEVEL_PROCEDURE
71319 ,p_module => l_log_module);
71320
71321 END IF;
71322 --
71323 l_component_type := 'AMB_JLT';
71324 l_component_code := 'INVENTORY_VALUATION';
71325 l_component_type_code := 'S';
71326 l_component_appl_id := 707;
71327 l_amb_context_code := 'DEFAULT';
71328 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
71329 l_event_class_code := 'USER_DEFINE';
71330 l_event_type_code := 'UCG_TXFR';
71331 l_line_definition_owner_code := 'S';
71332 l_line_definition_code := 'USER_CG_TXFR';
71333 --
71334 l_balance_type_code := 'A';
71335 l_segment := NULL;
71336 l_ccid := NULL;
71337 l_adr_transaction_coa_id := NULL;
71338 l_adr_accounting_coa_id := NULL;
71339 l_adr_flexfield_segment_code := NULL;
71340 l_adr_flex_value_set_id := NULL;
71341 l_adr_value_type_code := NULL;
71342 l_adr_value_combination_id := NULL;
71343 l_adr_value_segment_code := NULL;
71344
71345 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
71346 l_bflow_class_code := ''; -- 4219869 Business Flow
71347 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
71348 l_budgetary_control_flag := 'N';
71349
71350 l_bflow_applied_to_amt_idx := NULL; -- 5132302
71351 l_bflow_applied_to_amt := NULL; -- 5132302
71352 l_entered_amt_idx := NULL; -- 4262811
71353 l_accted_amt_idx := NULL; -- 4262811
71354 l_acc_rev_flag := NULL; -- 4262811
71355 l_accrual_line_num := NULL; -- 4262811
71356 l_tmp_amt := NULL; -- 4262811
71357 --
71358
71359 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
71360 l_balance_type_code <> 'B' THEN
71361 IF NVL(p_source_24,9E125) = 1
71362 THEN
71363
71364 --
71365 XLA_AE_LINES_PKG.SetNewLine;
71366
71367 p_balance_type_code := l_balance_type_code;
71368 -- set the flag so later we will know whether the gain loss line needs to be created
71369
71370 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
71371 p_actual_flag :='A';
71372 END IF;
71373
71374 --
71375 -- bulk performance
71376 --
71377 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
71378 p_header_num => 0); -- 4262811
71379 --
71380 -- set accounting line options
71381 --
71382 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
71383 p_natural_side_code => 'D'
71384 , p_gain_or_loss_flag => 'N'
71385 , p_gl_transfer_mode_code => 'S'
71386 , p_acct_entry_type_code => 'A'
71387 , p_switch_side_flag => 'Y'
71388 , p_merge_duplicate_code => 'N'
71389 );
71390 --
71391 l_acc_rev_natural_side_code := 'C'; -- 4262811
71392 --
71393 --
71394 -- set accounting line type info
71395 --
71396 xla_ae_lines_pkg.SetAcctLineType
71397 (p_component_type => l_component_type
71398 ,p_event_type_code => l_event_type_code
71399 ,p_line_definition_owner_code => l_line_definition_owner_code
71400 ,p_line_definition_code => l_line_definition_code
71401 ,p_accounting_line_code => l_component_code
71402 ,p_accounting_line_type_code => l_component_type_code
71403 ,p_accounting_line_appl_id => l_component_appl_id
71404 ,p_amb_context_code => l_amb_context_code
71405 ,p_entity_code => l_entity_code
71406 ,p_event_class_code => l_event_class_code);
71407 --
71408 -- set accounting class
71409 --
71410 xla_ae_lines_pkg.SetAcctClass(
71411 p_accounting_class_code => 'INVENTORY_VALUATION'
71412 , p_ae_header_id => l_ae_header_id
71413 );
71414
71415 --
71416 -- set rounding class
71417 --
71418 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
71419 'INVENTORY_VALUATION';
71420
71421 --
71422 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
71423 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
71424 --
71425 -- bulk performance
71426 --
71427 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
71428
71429 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
71430 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
71431
71432 -- 4955764
71433 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
71434 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
71435
71436 -- 4458381 Public Sector Enh
71437
71438 --
71439 -- set accounting attributes for the line type
71440 --
71441 l_entered_amt_idx := 3;
71442 l_accted_amt_idx := 8;
71443 l_bflow_applied_to_amt_idx := NULL; -- 5132302
71444 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
71445 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
71446 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
71447 l_rec_acct_attrs.array_char_value(2) := p_source_12;
71448 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
71449 l_rec_acct_attrs.array_num_value(3) := p_source_18;
71450 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
71451 l_rec_acct_attrs.array_char_value(4) := p_source_15;
71452 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
71453 l_rec_acct_attrs.array_date_value(5) := p_source_19;
71454 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
71455 l_rec_acct_attrs.array_num_value(6) := p_source_20;
71456 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
71457 l_rec_acct_attrs.array_char_value(7) := p_source_21;
71458 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
71459 l_rec_acct_attrs.array_num_value(8) := p_source_22;
71460
71461 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
71462 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
71463
71464 ---------------------------------------------------------------------------------------------------------------
71465 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
71466 ---------------------------------------------------------------------------------------------------------------
71467 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
71468
71469 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
71470 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
71471
71472 IF xla_accounting_cache_pkg.GetValueChar
71473 (p_source_code => 'LEDGER_CATEGORY_CODE'
71474 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
71475 AND l_bflow_method_code = 'PRIOR_ENTRY'
71476 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
71477 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
71478 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
71479 )
71480 THEN
71481 xla_ae_lines_pkg.BflowUpgEntry
71482 (p_business_method_code => l_bflow_method_code
71483 ,p_business_class_code => l_bflow_class_code
71484 ,p_balance_type => l_balance_type_code);
71485 ELSE
71486 NULL;
71487 -- No business flow processing for business flow method of NONE.
71488 END IF;
71489
71490 --
71491 -- call analytical criteria
71492 --
71493
71494 --
71495 -- call description
71496 --
71497 -- No description or it is inherited.
71498 --
71499 -- call ADRs
71500 -- Bug 4922099
71501 --
71502 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
71503 (NVL(l_actual_upg_option, 'N') = 'O') OR
71504 (NVL(l_enc_upg_option, 'N') = 'O')
71505 )
71506 THEN
71507 NULL;
71508 --
71509 --
71510
71511 l_ccid := AcctDerRule_4(
71512 p_application_id => p_application_id
71513 , p_ae_header_id => l_ae_header_id
71514 , p_source_4 => p_source_4
71515 , x_transaction_coa_id => l_adr_transaction_coa_id
71516 , x_accounting_coa_id => l_adr_accounting_coa_id
71517 , x_value_type_code => l_adr_value_type_code
71518 , p_side => 'NA'
71519 );
71520
71521 xla_ae_lines_pkg.set_ccid(
71522 p_code_combination_id => l_ccid
71523 , p_value_type_code => l_adr_value_type_code
71524 , p_transaction_coa_id => l_adr_transaction_coa_id
71525 , p_accounting_coa_id => l_adr_accounting_coa_id
71526 , p_adr_code => 'CST_DEFAULT'
71527 , p_adr_type_code => 'S'
71528 , p_component_type => l_component_type
71529 , p_component_code => l_component_code
71530 , p_component_type_code => l_component_type_code
71531 , p_component_appl_id => l_component_appl_id
71532 , p_amb_context_code => l_amb_context_code
71533 , p_side => 'NA'
71534 );
71535
71536
71537 --
71538 --
71539 END IF;
71540 --
71541 -- Bug 4922099
71542 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
71543 (NVL(l_enc_upg_option, 'N') = 'O')
71544 ) AND
71545 (l_bflow_method_code = 'PRIOR_ENTRY')
71546 )
71547 THEN
71548 IF
71549 --
71550 1 = 2
71551 --
71552 THEN
71553 xla_accounting_err_pkg.build_message
71554 (p_appli_s_name => 'XLA'
71555 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
71556 ,p_token_1 => 'LINE_NUMBER'
71557 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
71558 ,p_token_2 => 'LINE_TYPE_NAME'
71559 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
71560 l_component_type
71561 ,l_component_code
71562 ,l_component_type_code
71563 ,l_component_appl_id
71564 ,l_amb_context_code
71565 ,l_entity_code
71566 ,l_event_class_code
71567 )
71568 ,p_token_3 => 'OWNER'
71569 ,p_value_3 => xla_lookups_pkg.get_meaning(
71570 p_lookup_type => 'XLA_OWNER_TYPE'
71571 ,p_lookup_code => l_component_type_code
71572 )
71573 ,p_token_4 => 'PRODUCT_NAME'
71574 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
71575 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
71576 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
71577 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
71578 ,p_ae_header_id => NULL
71579 );
71580
71581 IF (C_LEVEL_ERROR>= g_log_level) THEN
71582 trace
71583 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
71584 ,p_level => C_LEVEL_ERROR
71585 ,p_module => l_log_module);
71586 END IF;
71587 END IF;
71588 END IF;
71589 --
71590 --
71591 ------------------------------------------------------------------------------------------------
71592 -- 4219869 Business Flow
71593 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
71594 -- Prior Entry. Currently, the following code is always generated.
71595 ------------------------------------------------------------------------------------------------
71596 XLA_AE_LINES_PKG.ValidateCurrentLine;
71597
71598 ------------------------------------------------------------------------------------
71599 -- 4219869 Business Flow
71600 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
71601 ------------------------------------------------------------------------------------
71602 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
71603
71604 ----------------------------------------------------------------------------------
71605 -- 4219869 Business Flow
71606 -- Update journal entry status -- Need to generate this within IF <condition>
71607 ----------------------------------------------------------------------------------
71608 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
71609 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
71610 ,p_balance_type_code => l_balance_type_code
71611 );
71612
71613 -------------------------------------------------------------------------------------------
71614 -- 4262811 - Generate the Accrual Reversal lines
71615 -------------------------------------------------------------------------------------------
71616 BEGIN
71617 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
71618 (g_array_event(p_event_id).array_value_num('header_index'));
71619 IF l_acc_rev_flag IS NULL THEN
71620 l_acc_rev_flag := 'N';
71621 END IF;
71622 EXCEPTION
71623 WHEN OTHERS THEN
71624 l_acc_rev_flag := 'N';
71625 END;
71626 --
71627 IF (l_acc_rev_flag = 'Y') THEN
71628
71629 -- 4645092 ------------------------------------------------------------------------------
71630 -- To allow MPA report to determine if it should generate report process
71631 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
71632 ------------------------------------------------------------------------------------------
71633
71634 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
71635 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
71636 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
71637 -- call ADRs
71638 -- Bug 4922099
71639 --
71640 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
71641 (NVL(l_actual_upg_option, 'N') = 'O') OR
71642 (NVL(l_enc_upg_option, 'N') = 'O')
71643 )
71644 THEN
71645 NULL;
71646 --
71647 --
71648
71649 l_ccid := AcctDerRule_4(
71650 p_application_id => p_application_id
71651 , p_ae_header_id => l_ae_header_id
71652 , p_source_4 => p_source_4
71653 , x_transaction_coa_id => l_adr_transaction_coa_id
71654 , x_accounting_coa_id => l_adr_accounting_coa_id
71655 , x_value_type_code => l_adr_value_type_code
71656 , p_side => 'NA'
71657 );
71658
71659 xla_ae_lines_pkg.set_ccid(
71660 p_code_combination_id => l_ccid
71661 , p_value_type_code => l_adr_value_type_code
71662 , p_transaction_coa_id => l_adr_transaction_coa_id
71663 , p_accounting_coa_id => l_adr_accounting_coa_id
71664 , p_adr_code => 'CST_DEFAULT'
71665 , p_adr_type_code => 'S'
71666 , p_component_type => l_component_type
71667 , p_component_code => l_component_code
71668 , p_component_type_code => l_component_type_code
71669 , p_component_appl_id => l_component_appl_id
71670 , p_amb_context_code => l_amb_context_code
71671 , p_side => 'NA'
71672 );
71673
71674
71675 --
71676 --
71677 END IF;
71678
71679 --
71680 -- Update the line information that should be overwritten
71681 --
71682 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
71683 p_header_num => 1);
71684 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
71685
71686 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
71687
71688 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
71689 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
71690 END IF;
71691
71692 --
71693 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
71694 --
71695 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
71696 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
71697 ELSE
71698 ---------------------------------------------------------------------------------------------------
71699 -- 4262811a Switch Sign
71700 ---------------------------------------------------------------------------------------------------
71701 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
71702 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
71703 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
71704 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
71705 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
71706 -- 5132302
71707 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
71708 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
71709
71710 END IF;
71711
71712 -- 4955764
71713 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
71714 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
71715
71716
71717 XLA_AE_LINES_PKG.ValidateCurrentLine;
71718 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
71719
71720 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
71721 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
71722 ,p_balance_type_code => l_balance_type_code);
71723
71724 END IF;
71725
71726 -----------------------------------------------------------------------------------------
71727 -- 4262811 Multiperiod Accounting
71728 -----------------------------------------------------------------------------------------
71729 -- No MPA option is assigned.
71730
71731
71732 END IF;
71733 END IF;
71734 --
71735
71736 --
71737 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
71738 trace
71739 (p_msg => 'END of AcctLineType_131'
71740 ,p_level => C_LEVEL_PROCEDURE
71741 ,p_module => l_log_module);
71742 END IF;
71743 --
71744 EXCEPTION
71745 WHEN xla_exceptions_pkg.application_exception THEN
71746 RAISE;
71747 WHEN OTHERS THEN
71748 xla_exceptions_pkg.raise_message
71749 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_131');
71750 END AcctLineType_131;
71751 --
71752
71753 ---------------------------------------
71754 --
71755 -- PRIVATE FUNCTION
71756 -- AcctLineType_132
71757 --
71758 ---------------------------------------
71759 PROCEDURE AcctLineType_132 (
71760 p_application_id IN NUMBER
71761 ,p_event_id IN NUMBER
71762 ,p_calculate_acctd_flag IN VARCHAR2
71763 ,p_calculate_g_l_flag IN VARCHAR2
71764 ,p_actual_flag IN OUT VARCHAR2
71765 ,p_balance_type_code OUT VARCHAR2
71766 ,p_gain_or_loss_ref OUT VARCHAR2
71767
71768 --Cost Management Default Account
71769 , p_source_4 IN NUMBER
71770 --DISTRIBUTION_IDENTIFIER
71771 , p_source_11 IN NUMBER
71772 --Distribution Type
71773 , p_source_12 IN VARCHAR2
71774 , p_source_12_meaning IN VARCHAR2
71775 --Entered Currency Code
71776 , p_source_15 IN VARCHAR2
71777 --Entered Amount
71778 , p_source_18 IN NUMBER
71779 --Currency Conversion Date
71780 , p_source_19 IN DATE
71781 --Currency Conversion Rate
71782 , p_source_20 IN NUMBER
71783 --Currency Conversion Type
71784 , p_source_21 IN VARCHAR2
71785 --Accounted Amount
71786 , p_source_22 IN NUMBER
71787 --Accounting Line Type
71788 , p_source_24 IN NUMBER
71789 )
71790 IS
71791
71792 l_component_type VARCHAR2(80);
71793 l_component_code VARCHAR2(30);
71794 l_component_type_code VARCHAR2(1);
71795 l_component_appl_id INTEGER;
71796 l_amb_context_code VARCHAR2(30);
71797 l_entity_code VARCHAR2(30);
71798 l_event_class_code VARCHAR2(30);
71799 l_ae_header_id NUMBER;
71800 l_event_type_code VARCHAR2(30);
71801 l_line_definition_code VARCHAR2(30);
71802 l_line_definition_owner_code VARCHAR2(1);
71803 --
71804 -- adr variables
71805 l_segment VARCHAR2(30);
71806 l_ccid NUMBER;
71807 l_adr_transaction_coa_id NUMBER;
71808 l_adr_accounting_coa_id NUMBER;
71809 l_adr_flexfield_segment_code VARCHAR2(30);
71810 l_adr_flex_value_set_id NUMBER;
71811 l_adr_value_type_code VARCHAR2(30);
71812 l_adr_value_combination_id NUMBER;
71813 l_adr_value_segment_code VARCHAR2(30);
71814
71815 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
71816 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
71817 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
71818 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
71819
71820 -- 4262811 Variables ------------------------------------------------------------------------------------------
71821 l_entered_amt_idx NUMBER;
71822 l_accted_amt_idx NUMBER;
71823 l_acc_rev_flag VARCHAR2(1);
71824 l_accrual_line_num NUMBER;
71825 l_tmp_amt NUMBER;
71826 l_acc_rev_natural_side_code VARCHAR2(1);
71827
71828 l_num_entries NUMBER;
71829 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
71830 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
71831 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
71832 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
71833 l_recog_line_1 NUMBER;
71834 l_recog_line_2 NUMBER;
71835
71836 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
71837 l_bflow_applied_to_amt NUMBER; -- 5132302
71838 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
71839
71840 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
71841
71842 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
71843 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
71844
71845 ---------------------------------------------------------------------------------------------------------------
71846
71847
71848 --
71849 -- bulk performance
71850 --
71851 l_balance_type_code VARCHAR2(1);
71852 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
71853 l_log_module VARCHAR2(240);
71854
71855 --
71856 -- Upgrade strategy
71857 --
71858 l_actual_upg_option VARCHAR2(1);
71859 l_enc_upg_option VARCHAR2(1);
71860
71861 --
71862 BEGIN
71863 --
71864 IF g_log_enabled THEN
71865 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_132';
71866 END IF;
71867 --
71868 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
71869
71870 trace
71871 (p_msg => 'BEGIN of AcctLineType_132'
71872 ,p_level => C_LEVEL_PROCEDURE
71873 ,p_module => l_log_module);
71874
71875 END IF;
71876 --
71877 l_component_type := 'AMB_JLT';
71878 l_component_code := 'INVENTORY_VALUATION';
71879 l_component_type_code := 'S';
71880 l_component_appl_id := 707;
71881 l_amb_context_code := 'DEFAULT';
71882 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
71883 l_event_class_code := 'USER_DEFINE';
71884 l_event_type_code := 'UDIR_INTERORG_RCPT_TP';
71885 l_line_definition_owner_code := 'S';
71886 l_line_definition_code := 'USER_DIR_INTERORG_RCPT_TP';
71887 --
71888 l_balance_type_code := 'A';
71889 l_segment := NULL;
71890 l_ccid := NULL;
71891 l_adr_transaction_coa_id := NULL;
71892 l_adr_accounting_coa_id := NULL;
71893 l_adr_flexfield_segment_code := NULL;
71894 l_adr_flex_value_set_id := NULL;
71895 l_adr_value_type_code := NULL;
71896 l_adr_value_combination_id := NULL;
71897 l_adr_value_segment_code := NULL;
71898
71899 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
71900 l_bflow_class_code := ''; -- 4219869 Business Flow
71901 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
71902 l_budgetary_control_flag := 'N';
71903
71904 l_bflow_applied_to_amt_idx := NULL; -- 5132302
71905 l_bflow_applied_to_amt := NULL; -- 5132302
71906 l_entered_amt_idx := NULL; -- 4262811
71907 l_accted_amt_idx := NULL; -- 4262811
71908 l_acc_rev_flag := NULL; -- 4262811
71909 l_accrual_line_num := NULL; -- 4262811
71910 l_tmp_amt := NULL; -- 4262811
71911 --
71912
71913 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
71914 l_balance_type_code <> 'B' THEN
71915 IF NVL(p_source_24,9E125) = 1
71916 THEN
71917
71918 --
71919 XLA_AE_LINES_PKG.SetNewLine;
71920
71921 p_balance_type_code := l_balance_type_code;
71922 -- set the flag so later we will know whether the gain loss line needs to be created
71923
71924 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
71925 p_actual_flag :='A';
71926 END IF;
71927
71928 --
71929 -- bulk performance
71930 --
71931 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
71932 p_header_num => 0); -- 4262811
71933 --
71934 -- set accounting line options
71935 --
71936 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
71937 p_natural_side_code => 'D'
71938 , p_gain_or_loss_flag => 'N'
71939 , p_gl_transfer_mode_code => 'S'
71940 , p_acct_entry_type_code => 'A'
71941 , p_switch_side_flag => 'Y'
71942 , p_merge_duplicate_code => 'N'
71943 );
71944 --
71945 l_acc_rev_natural_side_code := 'C'; -- 4262811
71946 --
71947 --
71948 -- set accounting line type info
71949 --
71950 xla_ae_lines_pkg.SetAcctLineType
71951 (p_component_type => l_component_type
71952 ,p_event_type_code => l_event_type_code
71953 ,p_line_definition_owner_code => l_line_definition_owner_code
71954 ,p_line_definition_code => l_line_definition_code
71955 ,p_accounting_line_code => l_component_code
71956 ,p_accounting_line_type_code => l_component_type_code
71957 ,p_accounting_line_appl_id => l_component_appl_id
71958 ,p_amb_context_code => l_amb_context_code
71959 ,p_entity_code => l_entity_code
71960 ,p_event_class_code => l_event_class_code);
71961 --
71962 -- set accounting class
71963 --
71964 xla_ae_lines_pkg.SetAcctClass(
71965 p_accounting_class_code => 'INVENTORY_VALUATION'
71966 , p_ae_header_id => l_ae_header_id
71967 );
71968
71969 --
71970 -- set rounding class
71971 --
71972 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
71973 'INVENTORY_VALUATION';
71974
71975 --
71976 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
71977 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
71978 --
71979 -- bulk performance
71980 --
71981 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
71982
71983 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
71984 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
71985
71986 -- 4955764
71987 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
71988 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
71989
71990 -- 4458381 Public Sector Enh
71991
71992 --
71993 -- set accounting attributes for the line type
71994 --
71995 l_entered_amt_idx := 3;
71996 l_accted_amt_idx := 8;
71997 l_bflow_applied_to_amt_idx := NULL; -- 5132302
71998 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
71999 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
72000 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
72001 l_rec_acct_attrs.array_char_value(2) := p_source_12;
72002 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
72003 l_rec_acct_attrs.array_num_value(3) := p_source_18;
72004 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
72005 l_rec_acct_attrs.array_char_value(4) := p_source_15;
72006 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
72007 l_rec_acct_attrs.array_date_value(5) := p_source_19;
72008 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
72009 l_rec_acct_attrs.array_num_value(6) := p_source_20;
72010 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
72011 l_rec_acct_attrs.array_char_value(7) := p_source_21;
72012 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
72013 l_rec_acct_attrs.array_num_value(8) := p_source_22;
72014
72015 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
72016 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
72017
72018 ---------------------------------------------------------------------------------------------------------------
72019 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
72020 ---------------------------------------------------------------------------------------------------------------
72021 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
72022
72023 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
72024 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
72025
72026 IF xla_accounting_cache_pkg.GetValueChar
72027 (p_source_code => 'LEDGER_CATEGORY_CODE'
72028 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
72029 AND l_bflow_method_code = 'PRIOR_ENTRY'
72030 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
72031 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
72032 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
72033 )
72034 THEN
72035 xla_ae_lines_pkg.BflowUpgEntry
72036 (p_business_method_code => l_bflow_method_code
72037 ,p_business_class_code => l_bflow_class_code
72038 ,p_balance_type => l_balance_type_code);
72039 ELSE
72040 NULL;
72041 -- No business flow processing for business flow method of NONE.
72042 END IF;
72043
72044 --
72045 -- call analytical criteria
72046 --
72047
72048 --
72049 -- call description
72050 --
72051 -- No description or it is inherited.
72052 --
72053 -- call ADRs
72054 -- Bug 4922099
72055 --
72056 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
72057 (NVL(l_actual_upg_option, 'N') = 'O') OR
72058 (NVL(l_enc_upg_option, 'N') = 'O')
72059 )
72060 THEN
72061 NULL;
72062 --
72063 --
72064
72065 l_ccid := AcctDerRule_4(
72066 p_application_id => p_application_id
72067 , p_ae_header_id => l_ae_header_id
72068 , p_source_4 => p_source_4
72069 , x_transaction_coa_id => l_adr_transaction_coa_id
72070 , x_accounting_coa_id => l_adr_accounting_coa_id
72071 , x_value_type_code => l_adr_value_type_code
72072 , p_side => 'NA'
72073 );
72074
72075 xla_ae_lines_pkg.set_ccid(
72076 p_code_combination_id => l_ccid
72077 , p_value_type_code => l_adr_value_type_code
72078 , p_transaction_coa_id => l_adr_transaction_coa_id
72079 , p_accounting_coa_id => l_adr_accounting_coa_id
72080 , p_adr_code => 'CST_DEFAULT'
72081 , p_adr_type_code => 'S'
72082 , p_component_type => l_component_type
72083 , p_component_code => l_component_code
72084 , p_component_type_code => l_component_type_code
72085 , p_component_appl_id => l_component_appl_id
72086 , p_amb_context_code => l_amb_context_code
72087 , p_side => 'NA'
72088 );
72089
72090
72091 --
72092 --
72093 END IF;
72094 --
72095 -- Bug 4922099
72096 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
72097 (NVL(l_enc_upg_option, 'N') = 'O')
72098 ) AND
72099 (l_bflow_method_code = 'PRIOR_ENTRY')
72100 )
72101 THEN
72102 IF
72103 --
72104 1 = 2
72105 --
72106 THEN
72107 xla_accounting_err_pkg.build_message
72108 (p_appli_s_name => 'XLA'
72109 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
72110 ,p_token_1 => 'LINE_NUMBER'
72111 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
72112 ,p_token_2 => 'LINE_TYPE_NAME'
72113 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
72114 l_component_type
72115 ,l_component_code
72116 ,l_component_type_code
72117 ,l_component_appl_id
72118 ,l_amb_context_code
72119 ,l_entity_code
72120 ,l_event_class_code
72121 )
72122 ,p_token_3 => 'OWNER'
72123 ,p_value_3 => xla_lookups_pkg.get_meaning(
72124 p_lookup_type => 'XLA_OWNER_TYPE'
72125 ,p_lookup_code => l_component_type_code
72126 )
72127 ,p_token_4 => 'PRODUCT_NAME'
72128 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
72129 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
72130 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
72131 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
72132 ,p_ae_header_id => NULL
72133 );
72134
72135 IF (C_LEVEL_ERROR>= g_log_level) THEN
72136 trace
72137 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
72138 ,p_level => C_LEVEL_ERROR
72139 ,p_module => l_log_module);
72140 END IF;
72141 END IF;
72142 END IF;
72143 --
72144 --
72145 ------------------------------------------------------------------------------------------------
72146 -- 4219869 Business Flow
72147 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
72148 -- Prior Entry. Currently, the following code is always generated.
72149 ------------------------------------------------------------------------------------------------
72150 XLA_AE_LINES_PKG.ValidateCurrentLine;
72151
72152 ------------------------------------------------------------------------------------
72153 -- 4219869 Business Flow
72154 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
72155 ------------------------------------------------------------------------------------
72156 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
72157
72158 ----------------------------------------------------------------------------------
72159 -- 4219869 Business Flow
72160 -- Update journal entry status -- Need to generate this within IF <condition>
72161 ----------------------------------------------------------------------------------
72162 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
72163 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
72164 ,p_balance_type_code => l_balance_type_code
72165 );
72166
72167 -------------------------------------------------------------------------------------------
72168 -- 4262811 - Generate the Accrual Reversal lines
72169 -------------------------------------------------------------------------------------------
72170 BEGIN
72171 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
72172 (g_array_event(p_event_id).array_value_num('header_index'));
72173 IF l_acc_rev_flag IS NULL THEN
72174 l_acc_rev_flag := 'N';
72175 END IF;
72176 EXCEPTION
72177 WHEN OTHERS THEN
72178 l_acc_rev_flag := 'N';
72179 END;
72180 --
72181 IF (l_acc_rev_flag = 'Y') THEN
72182
72183 -- 4645092 ------------------------------------------------------------------------------
72184 -- To allow MPA report to determine if it should generate report process
72185 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
72186 ------------------------------------------------------------------------------------------
72187
72188 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
72189 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
72190 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
72191 -- call ADRs
72192 -- Bug 4922099
72193 --
72194 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
72195 (NVL(l_actual_upg_option, 'N') = 'O') OR
72196 (NVL(l_enc_upg_option, 'N') = 'O')
72197 )
72198 THEN
72199 NULL;
72200 --
72201 --
72202
72203 l_ccid := AcctDerRule_4(
72204 p_application_id => p_application_id
72205 , p_ae_header_id => l_ae_header_id
72206 , p_source_4 => p_source_4
72207 , x_transaction_coa_id => l_adr_transaction_coa_id
72208 , x_accounting_coa_id => l_adr_accounting_coa_id
72209 , x_value_type_code => l_adr_value_type_code
72210 , p_side => 'NA'
72211 );
72212
72213 xla_ae_lines_pkg.set_ccid(
72214 p_code_combination_id => l_ccid
72215 , p_value_type_code => l_adr_value_type_code
72216 , p_transaction_coa_id => l_adr_transaction_coa_id
72217 , p_accounting_coa_id => l_adr_accounting_coa_id
72218 , p_adr_code => 'CST_DEFAULT'
72219 , p_adr_type_code => 'S'
72220 , p_component_type => l_component_type
72221 , p_component_code => l_component_code
72222 , p_component_type_code => l_component_type_code
72223 , p_component_appl_id => l_component_appl_id
72224 , p_amb_context_code => l_amb_context_code
72225 , p_side => 'NA'
72226 );
72227
72228
72229 --
72230 --
72231 END IF;
72232
72233 --
72234 -- Update the line information that should be overwritten
72235 --
72236 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
72237 p_header_num => 1);
72238 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
72239
72240 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
72241
72242 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
72243 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
72244 END IF;
72245
72246 --
72247 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
72248 --
72249 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
72250 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
72251 ELSE
72252 ---------------------------------------------------------------------------------------------------
72253 -- 4262811a Switch Sign
72254 ---------------------------------------------------------------------------------------------------
72255 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
72256 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
72257 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
72258 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
72259 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
72260 -- 5132302
72261 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
72262 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
72263
72264 END IF;
72265
72266 -- 4955764
72267 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
72268 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
72269
72270
72271 XLA_AE_LINES_PKG.ValidateCurrentLine;
72272 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
72273
72274 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
72275 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
72276 ,p_balance_type_code => l_balance_type_code);
72277
72278 END IF;
72279
72280 -----------------------------------------------------------------------------------------
72281 -- 4262811 Multiperiod Accounting
72282 -----------------------------------------------------------------------------------------
72283 -- No MPA option is assigned.
72284
72285
72286 END IF;
72287 END IF;
72288 --
72289
72290 --
72291 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
72292 trace
72293 (p_msg => 'END of AcctLineType_132'
72294 ,p_level => C_LEVEL_PROCEDURE
72295 ,p_module => l_log_module);
72296 END IF;
72297 --
72298 EXCEPTION
72299 WHEN xla_exceptions_pkg.application_exception THEN
72300 RAISE;
72301 WHEN OTHERS THEN
72302 xla_exceptions_pkg.raise_message
72303 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_132');
72304 END AcctLineType_132;
72305 --
72306
72307 ---------------------------------------
72308 --
72309 -- PRIVATE FUNCTION
72310 -- AcctLineType_133
72311 --
72312 ---------------------------------------
72313 PROCEDURE AcctLineType_133 (
72314 p_application_id IN NUMBER
72315 ,p_event_id IN NUMBER
72316 ,p_calculate_acctd_flag IN VARCHAR2
72317 ,p_calculate_g_l_flag IN VARCHAR2
72318 ,p_actual_flag IN OUT VARCHAR2
72319 ,p_balance_type_code OUT VARCHAR2
72320 ,p_gain_or_loss_ref OUT VARCHAR2
72321
72322 --Cost Management Default Account
72323 , p_source_4 IN NUMBER
72324 --DISTRIBUTION_IDENTIFIER
72325 , p_source_11 IN NUMBER
72326 --Distribution Type
72327 , p_source_12 IN VARCHAR2
72328 , p_source_12_meaning IN VARCHAR2
72329 --Entered Currency Code
72330 , p_source_15 IN VARCHAR2
72331 --Entered Amount
72332 , p_source_18 IN NUMBER
72333 --Currency Conversion Date
72334 , p_source_19 IN DATE
72335 --Currency Conversion Rate
72336 , p_source_20 IN NUMBER
72337 --Currency Conversion Type
72338 , p_source_21 IN VARCHAR2
72339 --Accounted Amount
72340 , p_source_22 IN NUMBER
72341 --Accounting Line Type
72342 , p_source_24 IN NUMBER
72343 )
72344 IS
72345
72346 l_component_type VARCHAR2(80);
72347 l_component_code VARCHAR2(30);
72348 l_component_type_code VARCHAR2(1);
72349 l_component_appl_id INTEGER;
72350 l_amb_context_code VARCHAR2(30);
72351 l_entity_code VARCHAR2(30);
72352 l_event_class_code VARCHAR2(30);
72353 l_ae_header_id NUMBER;
72354 l_event_type_code VARCHAR2(30);
72355 l_line_definition_code VARCHAR2(30);
72356 l_line_definition_owner_code VARCHAR2(1);
72357 --
72358 -- adr variables
72359 l_segment VARCHAR2(30);
72360 l_ccid NUMBER;
72361 l_adr_transaction_coa_id NUMBER;
72362 l_adr_accounting_coa_id NUMBER;
72363 l_adr_flexfield_segment_code VARCHAR2(30);
72364 l_adr_flex_value_set_id NUMBER;
72365 l_adr_value_type_code VARCHAR2(30);
72366 l_adr_value_combination_id NUMBER;
72367 l_adr_value_segment_code VARCHAR2(30);
72368
72369 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
72370 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
72371 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
72372 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
72373
72374 -- 4262811 Variables ------------------------------------------------------------------------------------------
72375 l_entered_amt_idx NUMBER;
72376 l_accted_amt_idx NUMBER;
72377 l_acc_rev_flag VARCHAR2(1);
72378 l_accrual_line_num NUMBER;
72379 l_tmp_amt NUMBER;
72380 l_acc_rev_natural_side_code VARCHAR2(1);
72381
72382 l_num_entries NUMBER;
72383 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
72384 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
72385 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
72386 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
72387 l_recog_line_1 NUMBER;
72388 l_recog_line_2 NUMBER;
72389
72390 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
72391 l_bflow_applied_to_amt NUMBER; -- 5132302
72392 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
72393
72394 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
72395
72396 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
72397 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
72398
72399 ---------------------------------------------------------------------------------------------------------------
72400
72401
72402 --
72403 -- bulk performance
72404 --
72405 l_balance_type_code VARCHAR2(1);
72406 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
72407 l_log_module VARCHAR2(240);
72408
72409 --
72410 -- Upgrade strategy
72411 --
72412 l_actual_upg_option VARCHAR2(1);
72413 l_enc_upg_option VARCHAR2(1);
72414
72415 --
72416 BEGIN
72417 --
72418 IF g_log_enabled THEN
72419 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_133';
72420 END IF;
72421 --
72422 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
72423
72424 trace
72425 (p_msg => 'BEGIN of AcctLineType_133'
72426 ,p_level => C_LEVEL_PROCEDURE
72427 ,p_module => l_log_module);
72428
72429 END IF;
72430 --
72431 l_component_type := 'AMB_JLT';
72432 l_component_code := 'INVENTORY_VALUATION';
72433 l_component_type_code := 'S';
72434 l_component_appl_id := 707;
72435 l_amb_context_code := 'DEFAULT';
72436 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
72437 l_event_class_code := 'USER_DEFINE';
72438 l_event_type_code := 'UFOB_SHIP_SENDER_SHIP_TP';
72439 l_line_definition_owner_code := 'S';
72440 l_line_definition_code := 'USER_FOB_SHIP_SENDER_SHIP_TP';
72441 --
72442 l_balance_type_code := 'A';
72443 l_segment := NULL;
72444 l_ccid := NULL;
72445 l_adr_transaction_coa_id := NULL;
72446 l_adr_accounting_coa_id := NULL;
72447 l_adr_flexfield_segment_code := NULL;
72448 l_adr_flex_value_set_id := NULL;
72449 l_adr_value_type_code := NULL;
72450 l_adr_value_combination_id := NULL;
72451 l_adr_value_segment_code := NULL;
72452
72453 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
72454 l_bflow_class_code := ''; -- 4219869 Business Flow
72455 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
72456 l_budgetary_control_flag := 'N';
72457
72458 l_bflow_applied_to_amt_idx := NULL; -- 5132302
72459 l_bflow_applied_to_amt := NULL; -- 5132302
72460 l_entered_amt_idx := NULL; -- 4262811
72461 l_accted_amt_idx := NULL; -- 4262811
72462 l_acc_rev_flag := NULL; -- 4262811
72463 l_accrual_line_num := NULL; -- 4262811
72464 l_tmp_amt := NULL; -- 4262811
72465 --
72466
72467 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
72468 l_balance_type_code <> 'B' THEN
72469 IF NVL(p_source_24,9E125) = 1
72470 THEN
72471
72472 --
72473 XLA_AE_LINES_PKG.SetNewLine;
72474
72475 p_balance_type_code := l_balance_type_code;
72476 -- set the flag so later we will know whether the gain loss line needs to be created
72477
72478 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
72479 p_actual_flag :='A';
72480 END IF;
72481
72482 --
72483 -- bulk performance
72484 --
72485 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
72486 p_header_num => 0); -- 4262811
72487 --
72488 -- set accounting line options
72489 --
72490 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
72491 p_natural_side_code => 'D'
72492 , p_gain_or_loss_flag => 'N'
72493 , p_gl_transfer_mode_code => 'S'
72494 , p_acct_entry_type_code => 'A'
72495 , p_switch_side_flag => 'Y'
72496 , p_merge_duplicate_code => 'N'
72497 );
72498 --
72499 l_acc_rev_natural_side_code := 'C'; -- 4262811
72500 --
72501 --
72502 -- set accounting line type info
72503 --
72504 xla_ae_lines_pkg.SetAcctLineType
72505 (p_component_type => l_component_type
72506 ,p_event_type_code => l_event_type_code
72507 ,p_line_definition_owner_code => l_line_definition_owner_code
72508 ,p_line_definition_code => l_line_definition_code
72509 ,p_accounting_line_code => l_component_code
72510 ,p_accounting_line_type_code => l_component_type_code
72511 ,p_accounting_line_appl_id => l_component_appl_id
72512 ,p_amb_context_code => l_amb_context_code
72513 ,p_entity_code => l_entity_code
72514 ,p_event_class_code => l_event_class_code);
72515 --
72516 -- set accounting class
72517 --
72518 xla_ae_lines_pkg.SetAcctClass(
72519 p_accounting_class_code => 'INVENTORY_VALUATION'
72520 , p_ae_header_id => l_ae_header_id
72521 );
72522
72523 --
72524 -- set rounding class
72525 --
72526 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
72527 'INVENTORY_VALUATION';
72528
72529 --
72530 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
72531 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
72532 --
72533 -- bulk performance
72534 --
72535 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
72536
72537 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
72538 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
72539
72540 -- 4955764
72541 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
72542 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
72543
72544 -- 4458381 Public Sector Enh
72545
72546 --
72547 -- set accounting attributes for the line type
72548 --
72549 l_entered_amt_idx := 3;
72550 l_accted_amt_idx := 8;
72551 l_bflow_applied_to_amt_idx := NULL; -- 5132302
72552 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
72553 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
72554 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
72555 l_rec_acct_attrs.array_char_value(2) := p_source_12;
72556 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
72557 l_rec_acct_attrs.array_num_value(3) := p_source_18;
72558 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
72559 l_rec_acct_attrs.array_char_value(4) := p_source_15;
72560 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
72561 l_rec_acct_attrs.array_date_value(5) := p_source_19;
72562 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
72563 l_rec_acct_attrs.array_num_value(6) := p_source_20;
72564 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
72565 l_rec_acct_attrs.array_char_value(7) := p_source_21;
72566 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
72567 l_rec_acct_attrs.array_num_value(8) := p_source_22;
72568
72569 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
72570 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
72571
72572 ---------------------------------------------------------------------------------------------------------------
72573 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
72574 ---------------------------------------------------------------------------------------------------------------
72575 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
72576
72577 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
72578 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
72579
72580 IF xla_accounting_cache_pkg.GetValueChar
72581 (p_source_code => 'LEDGER_CATEGORY_CODE'
72582 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
72583 AND l_bflow_method_code = 'PRIOR_ENTRY'
72584 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
72585 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
72586 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
72587 )
72588 THEN
72589 xla_ae_lines_pkg.BflowUpgEntry
72590 (p_business_method_code => l_bflow_method_code
72591 ,p_business_class_code => l_bflow_class_code
72592 ,p_balance_type => l_balance_type_code);
72593 ELSE
72594 NULL;
72595 -- No business flow processing for business flow method of NONE.
72596 END IF;
72597
72598 --
72599 -- call analytical criteria
72600 --
72601
72602 --
72603 -- call description
72604 --
72605 -- No description or it is inherited.
72606 --
72607 -- call ADRs
72608 -- Bug 4922099
72609 --
72610 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
72611 (NVL(l_actual_upg_option, 'N') = 'O') OR
72612 (NVL(l_enc_upg_option, 'N') = 'O')
72613 )
72614 THEN
72615 NULL;
72616 --
72617 --
72618
72619 l_ccid := AcctDerRule_4(
72620 p_application_id => p_application_id
72621 , p_ae_header_id => l_ae_header_id
72622 , p_source_4 => p_source_4
72623 , x_transaction_coa_id => l_adr_transaction_coa_id
72624 , x_accounting_coa_id => l_adr_accounting_coa_id
72625 , x_value_type_code => l_adr_value_type_code
72626 , p_side => 'NA'
72627 );
72628
72629 xla_ae_lines_pkg.set_ccid(
72630 p_code_combination_id => l_ccid
72631 , p_value_type_code => l_adr_value_type_code
72632 , p_transaction_coa_id => l_adr_transaction_coa_id
72633 , p_accounting_coa_id => l_adr_accounting_coa_id
72634 , p_adr_code => 'CST_DEFAULT'
72635 , p_adr_type_code => 'S'
72636 , p_component_type => l_component_type
72637 , p_component_code => l_component_code
72638 , p_component_type_code => l_component_type_code
72639 , p_component_appl_id => l_component_appl_id
72640 , p_amb_context_code => l_amb_context_code
72641 , p_side => 'NA'
72642 );
72643
72644
72645 --
72646 --
72647 END IF;
72648 --
72649 -- Bug 4922099
72650 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
72651 (NVL(l_enc_upg_option, 'N') = 'O')
72652 ) AND
72653 (l_bflow_method_code = 'PRIOR_ENTRY')
72654 )
72655 THEN
72656 IF
72657 --
72658 1 = 2
72659 --
72660 THEN
72661 xla_accounting_err_pkg.build_message
72662 (p_appli_s_name => 'XLA'
72663 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
72664 ,p_token_1 => 'LINE_NUMBER'
72665 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
72666 ,p_token_2 => 'LINE_TYPE_NAME'
72667 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
72668 l_component_type
72669 ,l_component_code
72670 ,l_component_type_code
72671 ,l_component_appl_id
72672 ,l_amb_context_code
72673 ,l_entity_code
72674 ,l_event_class_code
72675 )
72676 ,p_token_3 => 'OWNER'
72677 ,p_value_3 => xla_lookups_pkg.get_meaning(
72678 p_lookup_type => 'XLA_OWNER_TYPE'
72679 ,p_lookup_code => l_component_type_code
72680 )
72681 ,p_token_4 => 'PRODUCT_NAME'
72682 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
72683 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
72684 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
72685 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
72686 ,p_ae_header_id => NULL
72687 );
72688
72689 IF (C_LEVEL_ERROR>= g_log_level) THEN
72690 trace
72691 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
72692 ,p_level => C_LEVEL_ERROR
72693 ,p_module => l_log_module);
72694 END IF;
72695 END IF;
72696 END IF;
72697 --
72698 --
72699 ------------------------------------------------------------------------------------------------
72700 -- 4219869 Business Flow
72701 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
72702 -- Prior Entry. Currently, the following code is always generated.
72703 ------------------------------------------------------------------------------------------------
72704 XLA_AE_LINES_PKG.ValidateCurrentLine;
72705
72706 ------------------------------------------------------------------------------------
72707 -- 4219869 Business Flow
72708 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
72709 ------------------------------------------------------------------------------------
72710 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
72711
72712 ----------------------------------------------------------------------------------
72713 -- 4219869 Business Flow
72714 -- Update journal entry status -- Need to generate this within IF <condition>
72715 ----------------------------------------------------------------------------------
72716 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
72717 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
72718 ,p_balance_type_code => l_balance_type_code
72719 );
72720
72721 -------------------------------------------------------------------------------------------
72722 -- 4262811 - Generate the Accrual Reversal lines
72723 -------------------------------------------------------------------------------------------
72724 BEGIN
72725 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
72726 (g_array_event(p_event_id).array_value_num('header_index'));
72727 IF l_acc_rev_flag IS NULL THEN
72728 l_acc_rev_flag := 'N';
72729 END IF;
72730 EXCEPTION
72731 WHEN OTHERS THEN
72732 l_acc_rev_flag := 'N';
72733 END;
72734 --
72735 IF (l_acc_rev_flag = 'Y') THEN
72736
72737 -- 4645092 ------------------------------------------------------------------------------
72738 -- To allow MPA report to determine if it should generate report process
72739 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
72740 ------------------------------------------------------------------------------------------
72741
72742 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
72743 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
72744 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
72745 -- call ADRs
72746 -- Bug 4922099
72747 --
72748 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
72749 (NVL(l_actual_upg_option, 'N') = 'O') OR
72750 (NVL(l_enc_upg_option, 'N') = 'O')
72751 )
72752 THEN
72753 NULL;
72754 --
72755 --
72756
72757 l_ccid := AcctDerRule_4(
72758 p_application_id => p_application_id
72759 , p_ae_header_id => l_ae_header_id
72760 , p_source_4 => p_source_4
72761 , x_transaction_coa_id => l_adr_transaction_coa_id
72762 , x_accounting_coa_id => l_adr_accounting_coa_id
72763 , x_value_type_code => l_adr_value_type_code
72764 , p_side => 'NA'
72765 );
72766
72767 xla_ae_lines_pkg.set_ccid(
72768 p_code_combination_id => l_ccid
72769 , p_value_type_code => l_adr_value_type_code
72770 , p_transaction_coa_id => l_adr_transaction_coa_id
72771 , p_accounting_coa_id => l_adr_accounting_coa_id
72772 , p_adr_code => 'CST_DEFAULT'
72773 , p_adr_type_code => 'S'
72774 , p_component_type => l_component_type
72775 , p_component_code => l_component_code
72776 , p_component_type_code => l_component_type_code
72777 , p_component_appl_id => l_component_appl_id
72778 , p_amb_context_code => l_amb_context_code
72779 , p_side => 'NA'
72780 );
72781
72782
72783 --
72784 --
72785 END IF;
72786
72787 --
72788 -- Update the line information that should be overwritten
72789 --
72790 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
72791 p_header_num => 1);
72792 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
72793
72794 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
72795
72796 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
72797 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
72798 END IF;
72799
72800 --
72801 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
72802 --
72803 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
72804 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
72805 ELSE
72806 ---------------------------------------------------------------------------------------------------
72807 -- 4262811a Switch Sign
72808 ---------------------------------------------------------------------------------------------------
72809 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
72810 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
72811 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
72812 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
72813 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
72814 -- 5132302
72815 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
72816 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
72817
72818 END IF;
72819
72820 -- 4955764
72821 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
72822 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
72823
72824
72825 XLA_AE_LINES_PKG.ValidateCurrentLine;
72826 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
72827
72828 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
72829 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
72830 ,p_balance_type_code => l_balance_type_code);
72831
72832 END IF;
72833
72834 -----------------------------------------------------------------------------------------
72835 -- 4262811 Multiperiod Accounting
72836 -----------------------------------------------------------------------------------------
72837 -- No MPA option is assigned.
72838
72839
72840 END IF;
72841 END IF;
72842 --
72843
72844 --
72845 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
72846 trace
72847 (p_msg => 'END of AcctLineType_133'
72848 ,p_level => C_LEVEL_PROCEDURE
72849 ,p_module => l_log_module);
72850 END IF;
72851 --
72852 EXCEPTION
72853 WHEN xla_exceptions_pkg.application_exception THEN
72854 RAISE;
72855 WHEN OTHERS THEN
72856 xla_exceptions_pkg.raise_message
72857 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_133');
72858 END AcctLineType_133;
72859 --
72860
72861 ---------------------------------------
72862 --
72863 -- PRIVATE FUNCTION
72864 -- AcctLineType_134
72865 --
72866 ---------------------------------------
72867 PROCEDURE AcctLineType_134 (
72868 p_application_id IN NUMBER
72869 ,p_event_id IN NUMBER
72870 ,p_calculate_acctd_flag IN VARCHAR2
72871 ,p_calculate_g_l_flag IN VARCHAR2
72872 ,p_actual_flag IN OUT VARCHAR2
72873 ,p_balance_type_code OUT VARCHAR2
72874 ,p_gain_or_loss_ref OUT VARCHAR2
72875
72876 --Cost Management Default Account
72877 , p_source_4 IN NUMBER
72878 --DISTRIBUTION_IDENTIFIER
72879 , p_source_11 IN NUMBER
72880 --Distribution Type
72881 , p_source_12 IN VARCHAR2
72882 , p_source_12_meaning IN VARCHAR2
72883 --Entered Currency Code
72884 , p_source_15 IN VARCHAR2
72885 --Entered Amount
72886 , p_source_18 IN NUMBER
72887 --Currency Conversion Date
72888 , p_source_19 IN DATE
72889 --Currency Conversion Rate
72890 , p_source_20 IN NUMBER
72891 --Currency Conversion Type
72892 , p_source_21 IN VARCHAR2
72893 --Accounted Amount
72894 , p_source_22 IN NUMBER
72895 --Accounting Line Type
72896 , p_source_24 IN NUMBER
72897 )
72898 IS
72899
72900 l_component_type VARCHAR2(80);
72901 l_component_code VARCHAR2(30);
72902 l_component_type_code VARCHAR2(1);
72903 l_component_appl_id INTEGER;
72904 l_amb_context_code VARCHAR2(30);
72905 l_entity_code VARCHAR2(30);
72906 l_event_class_code VARCHAR2(30);
72907 l_ae_header_id NUMBER;
72908 l_event_type_code VARCHAR2(30);
72909 l_line_definition_code VARCHAR2(30);
72910 l_line_definition_owner_code VARCHAR2(1);
72911 --
72912 -- adr variables
72913 l_segment VARCHAR2(30);
72914 l_ccid NUMBER;
72915 l_adr_transaction_coa_id NUMBER;
72916 l_adr_accounting_coa_id NUMBER;
72917 l_adr_flexfield_segment_code VARCHAR2(30);
72918 l_adr_flex_value_set_id NUMBER;
72919 l_adr_value_type_code VARCHAR2(30);
72920 l_adr_value_combination_id NUMBER;
72921 l_adr_value_segment_code VARCHAR2(30);
72922
72923 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
72924 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
72925 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
72926 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
72927
72928 -- 4262811 Variables ------------------------------------------------------------------------------------------
72929 l_entered_amt_idx NUMBER;
72930 l_accted_amt_idx NUMBER;
72931 l_acc_rev_flag VARCHAR2(1);
72932 l_accrual_line_num NUMBER;
72933 l_tmp_amt NUMBER;
72934 l_acc_rev_natural_side_code VARCHAR2(1);
72935
72936 l_num_entries NUMBER;
72937 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
72938 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
72939 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
72940 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
72941 l_recog_line_1 NUMBER;
72942 l_recog_line_2 NUMBER;
72943
72944 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
72945 l_bflow_applied_to_amt NUMBER; -- 5132302
72946 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
72947
72948 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
72949
72950 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
72951 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
72952
72953 ---------------------------------------------------------------------------------------------------------------
72954
72955
72956 --
72957 -- bulk performance
72958 --
72959 l_balance_type_code VARCHAR2(1);
72960 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
72961 l_log_module VARCHAR2(240);
72962
72963 --
72964 -- Upgrade strategy
72965 --
72966 l_actual_upg_option VARCHAR2(1);
72967 l_enc_upg_option VARCHAR2(1);
72968
72969 --
72970 BEGIN
72971 --
72972 IF g_log_enabled THEN
72973 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_134';
72974 END IF;
72975 --
72976 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
72977
72978 trace
72979 (p_msg => 'BEGIN of AcctLineType_134'
72980 ,p_level => C_LEVEL_PROCEDURE
72981 ,p_module => l_log_module);
72982
72983 END IF;
72984 --
72985 l_component_type := 'AMB_JLT';
72986 l_component_code := 'INVENTORY_VALUATION';
72987 l_component_type_code := 'S';
72988 l_component_appl_id := 707;
72989 l_amb_context_code := 'DEFAULT';
72990 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
72991 l_event_class_code := 'USER_DEFINE';
72992 l_event_type_code := 'UMISC_RCPT';
72993 l_line_definition_owner_code := 'S';
72994 l_line_definition_code := 'USER_RCPT';
72995 --
72996 l_balance_type_code := 'A';
72997 l_segment := NULL;
72998 l_ccid := NULL;
72999 l_adr_transaction_coa_id := NULL;
73000 l_adr_accounting_coa_id := NULL;
73001 l_adr_flexfield_segment_code := NULL;
73002 l_adr_flex_value_set_id := NULL;
73003 l_adr_value_type_code := NULL;
73004 l_adr_value_combination_id := NULL;
73005 l_adr_value_segment_code := NULL;
73006
73007 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
73008 l_bflow_class_code := ''; -- 4219869 Business Flow
73009 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
73010 l_budgetary_control_flag := 'N';
73011
73012 l_bflow_applied_to_amt_idx := NULL; -- 5132302
73013 l_bflow_applied_to_amt := NULL; -- 5132302
73014 l_entered_amt_idx := NULL; -- 4262811
73015 l_accted_amt_idx := NULL; -- 4262811
73016 l_acc_rev_flag := NULL; -- 4262811
73017 l_accrual_line_num := NULL; -- 4262811
73018 l_tmp_amt := NULL; -- 4262811
73019 --
73020
73021 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
73022 l_balance_type_code <> 'B' THEN
73023 IF NVL(p_source_24,9E125) = 1
73024 THEN
73025
73026 --
73027 XLA_AE_LINES_PKG.SetNewLine;
73028
73029 p_balance_type_code := l_balance_type_code;
73030 -- set the flag so later we will know whether the gain loss line needs to be created
73031
73032 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
73033 p_actual_flag :='A';
73034 END IF;
73035
73036 --
73037 -- bulk performance
73038 --
73039 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
73040 p_header_num => 0); -- 4262811
73041 --
73042 -- set accounting line options
73043 --
73044 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
73045 p_natural_side_code => 'D'
73046 , p_gain_or_loss_flag => 'N'
73047 , p_gl_transfer_mode_code => 'S'
73048 , p_acct_entry_type_code => 'A'
73049 , p_switch_side_flag => 'Y'
73050 , p_merge_duplicate_code => 'N'
73051 );
73052 --
73053 l_acc_rev_natural_side_code := 'C'; -- 4262811
73054 --
73055 --
73056 -- set accounting line type info
73057 --
73058 xla_ae_lines_pkg.SetAcctLineType
73059 (p_component_type => l_component_type
73060 ,p_event_type_code => l_event_type_code
73061 ,p_line_definition_owner_code => l_line_definition_owner_code
73062 ,p_line_definition_code => l_line_definition_code
73063 ,p_accounting_line_code => l_component_code
73064 ,p_accounting_line_type_code => l_component_type_code
73065 ,p_accounting_line_appl_id => l_component_appl_id
73066 ,p_amb_context_code => l_amb_context_code
73067 ,p_entity_code => l_entity_code
73068 ,p_event_class_code => l_event_class_code);
73069 --
73070 -- set accounting class
73071 --
73072 xla_ae_lines_pkg.SetAcctClass(
73073 p_accounting_class_code => 'INVENTORY_VALUATION'
73074 , p_ae_header_id => l_ae_header_id
73075 );
73076
73077 --
73078 -- set rounding class
73079 --
73080 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
73081 'INVENTORY_VALUATION';
73082
73083 --
73084 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
73085 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
73086 --
73087 -- bulk performance
73088 --
73089 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
73090
73091 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
73092 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
73093
73094 -- 4955764
73095 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
73096 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
73097
73098 -- 4458381 Public Sector Enh
73099
73100 --
73101 -- set accounting attributes for the line type
73102 --
73103 l_entered_amt_idx := 3;
73104 l_accted_amt_idx := 8;
73105 l_bflow_applied_to_amt_idx := NULL; -- 5132302
73106 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
73107 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
73108 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
73109 l_rec_acct_attrs.array_char_value(2) := p_source_12;
73110 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
73111 l_rec_acct_attrs.array_num_value(3) := p_source_18;
73112 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
73113 l_rec_acct_attrs.array_char_value(4) := p_source_15;
73114 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
73115 l_rec_acct_attrs.array_date_value(5) := p_source_19;
73116 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
73117 l_rec_acct_attrs.array_num_value(6) := p_source_20;
73118 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
73119 l_rec_acct_attrs.array_char_value(7) := p_source_21;
73120 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
73121 l_rec_acct_attrs.array_num_value(8) := p_source_22;
73122
73123 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
73124 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
73125
73126 ---------------------------------------------------------------------------------------------------------------
73127 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
73128 ---------------------------------------------------------------------------------------------------------------
73129 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
73130
73131 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
73132 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
73133
73134 IF xla_accounting_cache_pkg.GetValueChar
73135 (p_source_code => 'LEDGER_CATEGORY_CODE'
73136 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
73137 AND l_bflow_method_code = 'PRIOR_ENTRY'
73138 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
73139 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
73140 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
73141 )
73142 THEN
73143 xla_ae_lines_pkg.BflowUpgEntry
73144 (p_business_method_code => l_bflow_method_code
73145 ,p_business_class_code => l_bflow_class_code
73146 ,p_balance_type => l_balance_type_code);
73147 ELSE
73148 NULL;
73149 -- No business flow processing for business flow method of NONE.
73150 END IF;
73151
73152 --
73153 -- call analytical criteria
73154 --
73155
73156 --
73157 -- call description
73158 --
73159 -- No description or it is inherited.
73160 --
73161 -- call ADRs
73162 -- Bug 4922099
73163 --
73164 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
73165 (NVL(l_actual_upg_option, 'N') = 'O') OR
73166 (NVL(l_enc_upg_option, 'N') = 'O')
73167 )
73168 THEN
73169 NULL;
73170 --
73171 --
73172
73173 l_ccid := AcctDerRule_4(
73174 p_application_id => p_application_id
73175 , p_ae_header_id => l_ae_header_id
73176 , p_source_4 => p_source_4
73177 , x_transaction_coa_id => l_adr_transaction_coa_id
73178 , x_accounting_coa_id => l_adr_accounting_coa_id
73179 , x_value_type_code => l_adr_value_type_code
73180 , p_side => 'NA'
73181 );
73182
73183 xla_ae_lines_pkg.set_ccid(
73184 p_code_combination_id => l_ccid
73185 , p_value_type_code => l_adr_value_type_code
73186 , p_transaction_coa_id => l_adr_transaction_coa_id
73187 , p_accounting_coa_id => l_adr_accounting_coa_id
73188 , p_adr_code => 'CST_DEFAULT'
73189 , p_adr_type_code => 'S'
73190 , p_component_type => l_component_type
73191 , p_component_code => l_component_code
73192 , p_component_type_code => l_component_type_code
73193 , p_component_appl_id => l_component_appl_id
73194 , p_amb_context_code => l_amb_context_code
73195 , p_side => 'NA'
73196 );
73197
73198
73199 --
73200 --
73201 END IF;
73202 --
73203 -- Bug 4922099
73204 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
73205 (NVL(l_enc_upg_option, 'N') = 'O')
73206 ) AND
73207 (l_bflow_method_code = 'PRIOR_ENTRY')
73208 )
73209 THEN
73210 IF
73211 --
73212 1 = 2
73213 --
73214 THEN
73215 xla_accounting_err_pkg.build_message
73216 (p_appli_s_name => 'XLA'
73217 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
73218 ,p_token_1 => 'LINE_NUMBER'
73219 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
73220 ,p_token_2 => 'LINE_TYPE_NAME'
73221 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
73222 l_component_type
73223 ,l_component_code
73224 ,l_component_type_code
73225 ,l_component_appl_id
73226 ,l_amb_context_code
73227 ,l_entity_code
73228 ,l_event_class_code
73229 )
73230 ,p_token_3 => 'OWNER'
73231 ,p_value_3 => xla_lookups_pkg.get_meaning(
73232 p_lookup_type => 'XLA_OWNER_TYPE'
73233 ,p_lookup_code => l_component_type_code
73234 )
73235 ,p_token_4 => 'PRODUCT_NAME'
73236 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
73237 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
73238 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
73239 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
73240 ,p_ae_header_id => NULL
73241 );
73242
73243 IF (C_LEVEL_ERROR>= g_log_level) THEN
73244 trace
73245 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
73246 ,p_level => C_LEVEL_ERROR
73247 ,p_module => l_log_module);
73248 END IF;
73249 END IF;
73250 END IF;
73251 --
73252 --
73253 ------------------------------------------------------------------------------------------------
73254 -- 4219869 Business Flow
73255 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
73256 -- Prior Entry. Currently, the following code is always generated.
73257 ------------------------------------------------------------------------------------------------
73258 XLA_AE_LINES_PKG.ValidateCurrentLine;
73259
73260 ------------------------------------------------------------------------------------
73261 -- 4219869 Business Flow
73262 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
73263 ------------------------------------------------------------------------------------
73264 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
73265
73266 ----------------------------------------------------------------------------------
73267 -- 4219869 Business Flow
73268 -- Update journal entry status -- Need to generate this within IF <condition>
73269 ----------------------------------------------------------------------------------
73270 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
73271 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
73272 ,p_balance_type_code => l_balance_type_code
73273 );
73274
73275 -------------------------------------------------------------------------------------------
73276 -- 4262811 - Generate the Accrual Reversal lines
73277 -------------------------------------------------------------------------------------------
73278 BEGIN
73279 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
73280 (g_array_event(p_event_id).array_value_num('header_index'));
73281 IF l_acc_rev_flag IS NULL THEN
73282 l_acc_rev_flag := 'N';
73283 END IF;
73284 EXCEPTION
73285 WHEN OTHERS THEN
73286 l_acc_rev_flag := 'N';
73287 END;
73288 --
73289 IF (l_acc_rev_flag = 'Y') THEN
73290
73291 -- 4645092 ------------------------------------------------------------------------------
73292 -- To allow MPA report to determine if it should generate report process
73293 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
73294 ------------------------------------------------------------------------------------------
73295
73296 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
73297 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
73298 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
73299 -- call ADRs
73300 -- Bug 4922099
73301 --
73302 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
73303 (NVL(l_actual_upg_option, 'N') = 'O') OR
73304 (NVL(l_enc_upg_option, 'N') = 'O')
73305 )
73306 THEN
73307 NULL;
73308 --
73309 --
73310
73311 l_ccid := AcctDerRule_4(
73312 p_application_id => p_application_id
73313 , p_ae_header_id => l_ae_header_id
73314 , p_source_4 => p_source_4
73315 , x_transaction_coa_id => l_adr_transaction_coa_id
73316 , x_accounting_coa_id => l_adr_accounting_coa_id
73317 , x_value_type_code => l_adr_value_type_code
73318 , p_side => 'NA'
73319 );
73320
73321 xla_ae_lines_pkg.set_ccid(
73322 p_code_combination_id => l_ccid
73323 , p_value_type_code => l_adr_value_type_code
73324 , p_transaction_coa_id => l_adr_transaction_coa_id
73325 , p_accounting_coa_id => l_adr_accounting_coa_id
73326 , p_adr_code => 'CST_DEFAULT'
73327 , p_adr_type_code => 'S'
73328 , p_component_type => l_component_type
73329 , p_component_code => l_component_code
73330 , p_component_type_code => l_component_type_code
73331 , p_component_appl_id => l_component_appl_id
73332 , p_amb_context_code => l_amb_context_code
73333 , p_side => 'NA'
73334 );
73335
73336
73337 --
73338 --
73339 END IF;
73340
73341 --
73342 -- Update the line information that should be overwritten
73343 --
73344 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
73345 p_header_num => 1);
73346 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
73347
73348 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
73349
73350 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
73351 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
73352 END IF;
73353
73354 --
73355 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
73356 --
73357 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
73358 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
73359 ELSE
73360 ---------------------------------------------------------------------------------------------------
73361 -- 4262811a Switch Sign
73362 ---------------------------------------------------------------------------------------------------
73363 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
73364 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
73365 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
73366 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
73367 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
73368 -- 5132302
73369 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
73370 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
73371
73372 END IF;
73373
73374 -- 4955764
73375 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
73376 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
73377
73378
73379 XLA_AE_LINES_PKG.ValidateCurrentLine;
73380 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
73381
73382 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
73383 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
73384 ,p_balance_type_code => l_balance_type_code);
73385
73386 END IF;
73387
73388 -----------------------------------------------------------------------------------------
73389 -- 4262811 Multiperiod Accounting
73390 -----------------------------------------------------------------------------------------
73391 -- No MPA option is assigned.
73392
73393
73394 END IF;
73395 END IF;
73396 --
73397
73398 --
73399 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
73400 trace
73401 (p_msg => 'END of AcctLineType_134'
73402 ,p_level => C_LEVEL_PROCEDURE
73403 ,p_module => l_log_module);
73404 END IF;
73405 --
73406 EXCEPTION
73407 WHEN xla_exceptions_pkg.application_exception THEN
73408 RAISE;
73409 WHEN OTHERS THEN
73410 xla_exceptions_pkg.raise_message
73411 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_134');
73412 END AcctLineType_134;
73413 --
73414
73415 ---------------------------------------
73416 --
73417 -- PRIVATE FUNCTION
73418 -- AcctLineType_135
73419 --
73420 ---------------------------------------
73421 PROCEDURE AcctLineType_135 (
73422 p_application_id IN NUMBER
73423 ,p_event_id IN NUMBER
73424 ,p_calculate_acctd_flag IN VARCHAR2
73425 ,p_calculate_g_l_flag IN VARCHAR2
73426 ,p_actual_flag IN OUT VARCHAR2
73427 ,p_balance_type_code OUT VARCHAR2
73428 ,p_gain_or_loss_ref OUT VARCHAR2
73429
73430 --Cost Management Default Account
73431 , p_source_4 IN NUMBER
73432 --DISTRIBUTION_IDENTIFIER
73433 , p_source_11 IN NUMBER
73434 --Distribution Type
73435 , p_source_12 IN VARCHAR2
73436 , p_source_12_meaning IN VARCHAR2
73437 --Entered Currency Code
73438 , p_source_15 IN VARCHAR2
73439 --Entered Amount
73440 , p_source_18 IN NUMBER
73441 --Currency Conversion Date
73442 , p_source_19 IN DATE
73443 --Currency Conversion Rate
73444 , p_source_20 IN NUMBER
73445 --Currency Conversion Type
73446 , p_source_21 IN VARCHAR2
73447 --Accounted Amount
73448 , p_source_22 IN NUMBER
73449 --Accounting Line Type
73450 , p_source_24 IN NUMBER
73451 )
73452 IS
73453
73454 l_component_type VARCHAR2(80);
73455 l_component_code VARCHAR2(30);
73456 l_component_type_code VARCHAR2(1);
73457 l_component_appl_id INTEGER;
73458 l_amb_context_code VARCHAR2(30);
73459 l_entity_code VARCHAR2(30);
73460 l_event_class_code VARCHAR2(30);
73461 l_ae_header_id NUMBER;
73462 l_event_type_code VARCHAR2(30);
73463 l_line_definition_code VARCHAR2(30);
73464 l_line_definition_owner_code VARCHAR2(1);
73465 --
73466 -- adr variables
73467 l_segment VARCHAR2(30);
73468 l_ccid NUMBER;
73469 l_adr_transaction_coa_id NUMBER;
73470 l_adr_accounting_coa_id NUMBER;
73471 l_adr_flexfield_segment_code VARCHAR2(30);
73472 l_adr_flex_value_set_id NUMBER;
73473 l_adr_value_type_code VARCHAR2(30);
73474 l_adr_value_combination_id NUMBER;
73475 l_adr_value_segment_code VARCHAR2(30);
73476
73477 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
73478 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
73479 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
73480 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
73481
73482 -- 4262811 Variables ------------------------------------------------------------------------------------------
73483 l_entered_amt_idx NUMBER;
73484 l_accted_amt_idx NUMBER;
73485 l_acc_rev_flag VARCHAR2(1);
73486 l_accrual_line_num NUMBER;
73487 l_tmp_amt NUMBER;
73488 l_acc_rev_natural_side_code VARCHAR2(1);
73489
73490 l_num_entries NUMBER;
73491 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
73492 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
73493 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
73494 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
73495 l_recog_line_1 NUMBER;
73496 l_recog_line_2 NUMBER;
73497
73498 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
73499 l_bflow_applied_to_amt NUMBER; -- 5132302
73500 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
73501
73502 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
73503
73504 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
73505 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
73506
73507 ---------------------------------------------------------------------------------------------------------------
73508
73509
73510 --
73511 -- bulk performance
73512 --
73513 l_balance_type_code VARCHAR2(1);
73514 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
73515 l_log_module VARCHAR2(240);
73516
73517 --
73518 -- Upgrade strategy
73519 --
73520 l_actual_upg_option VARCHAR2(1);
73521 l_enc_upg_option VARCHAR2(1);
73522
73523 --
73524 BEGIN
73525 --
73526 IF g_log_enabled THEN
73527 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_135';
73528 END IF;
73529 --
73530 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
73531
73532 trace
73533 (p_msg => 'BEGIN of AcctLineType_135'
73534 ,p_level => C_LEVEL_PROCEDURE
73535 ,p_module => l_log_module);
73536
73537 END IF;
73538 --
73539 l_component_type := 'AMB_JLT';
73540 l_component_code := 'INVENTORY_VALUATION';
73541 l_component_type_code := 'S';
73542 l_component_appl_id := 707;
73543 l_amb_context_code := 'DEFAULT';
73544 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
73545 l_event_class_code := 'USER_DEFINE';
73546 l_event_type_code := 'UAVG_COST_UPD';
73547 l_line_definition_owner_code := 'S';
73548 l_line_definition_code := 'USER_COST_UPD';
73549 --
73550 l_balance_type_code := 'A';
73551 l_segment := NULL;
73552 l_ccid := NULL;
73553 l_adr_transaction_coa_id := NULL;
73554 l_adr_accounting_coa_id := NULL;
73555 l_adr_flexfield_segment_code := NULL;
73556 l_adr_flex_value_set_id := NULL;
73557 l_adr_value_type_code := NULL;
73558 l_adr_value_combination_id := NULL;
73559 l_adr_value_segment_code := NULL;
73560
73561 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
73562 l_bflow_class_code := ''; -- 4219869 Business Flow
73563 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
73564 l_budgetary_control_flag := 'N';
73565
73566 l_bflow_applied_to_amt_idx := NULL; -- 5132302
73567 l_bflow_applied_to_amt := NULL; -- 5132302
73568 l_entered_amt_idx := NULL; -- 4262811
73569 l_accted_amt_idx := NULL; -- 4262811
73570 l_acc_rev_flag := NULL; -- 4262811
73571 l_accrual_line_num := NULL; -- 4262811
73572 l_tmp_amt := NULL; -- 4262811
73573 --
73574
73575 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
73576 l_balance_type_code <> 'B' THEN
73577 IF NVL(p_source_24,9E125) = 1
73578 THEN
73579
73580 --
73581 XLA_AE_LINES_PKG.SetNewLine;
73582
73583 p_balance_type_code := l_balance_type_code;
73584 -- set the flag so later we will know whether the gain loss line needs to be created
73585
73586 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
73587 p_actual_flag :='A';
73588 END IF;
73589
73590 --
73591 -- bulk performance
73592 --
73593 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
73594 p_header_num => 0); -- 4262811
73595 --
73596 -- set accounting line options
73597 --
73598 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
73599 p_natural_side_code => 'D'
73600 , p_gain_or_loss_flag => 'N'
73601 , p_gl_transfer_mode_code => 'S'
73602 , p_acct_entry_type_code => 'A'
73603 , p_switch_side_flag => 'Y'
73604 , p_merge_duplicate_code => 'N'
73605 );
73606 --
73607 l_acc_rev_natural_side_code := 'C'; -- 4262811
73608 --
73609 --
73610 -- set accounting line type info
73611 --
73612 xla_ae_lines_pkg.SetAcctLineType
73613 (p_component_type => l_component_type
73614 ,p_event_type_code => l_event_type_code
73615 ,p_line_definition_owner_code => l_line_definition_owner_code
73616 ,p_line_definition_code => l_line_definition_code
73617 ,p_accounting_line_code => l_component_code
73618 ,p_accounting_line_type_code => l_component_type_code
73619 ,p_accounting_line_appl_id => l_component_appl_id
73620 ,p_amb_context_code => l_amb_context_code
73621 ,p_entity_code => l_entity_code
73622 ,p_event_class_code => l_event_class_code);
73623 --
73624 -- set accounting class
73625 --
73626 xla_ae_lines_pkg.SetAcctClass(
73627 p_accounting_class_code => 'INVENTORY_VALUATION'
73628 , p_ae_header_id => l_ae_header_id
73629 );
73630
73631 --
73632 -- set rounding class
73633 --
73634 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
73635 'INVENTORY_VALUATION';
73636
73637 --
73638 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
73639 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
73640 --
73641 -- bulk performance
73642 --
73643 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
73644
73645 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
73646 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
73647
73648 -- 4955764
73649 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
73650 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
73651
73652 -- 4458381 Public Sector Enh
73653
73654 --
73655 -- set accounting attributes for the line type
73656 --
73657 l_entered_amt_idx := 3;
73658 l_accted_amt_idx := 8;
73659 l_bflow_applied_to_amt_idx := NULL; -- 5132302
73660 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
73661 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
73662 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
73663 l_rec_acct_attrs.array_char_value(2) := p_source_12;
73664 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
73665 l_rec_acct_attrs.array_num_value(3) := p_source_18;
73666 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
73667 l_rec_acct_attrs.array_char_value(4) := p_source_15;
73668 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
73669 l_rec_acct_attrs.array_date_value(5) := p_source_19;
73670 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
73671 l_rec_acct_attrs.array_num_value(6) := p_source_20;
73672 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
73673 l_rec_acct_attrs.array_char_value(7) := p_source_21;
73674 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
73675 l_rec_acct_attrs.array_num_value(8) := p_source_22;
73676
73677 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
73678 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
73679
73680 ---------------------------------------------------------------------------------------------------------------
73681 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
73682 ---------------------------------------------------------------------------------------------------------------
73683 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
73684
73685 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
73686 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
73687
73688 IF xla_accounting_cache_pkg.GetValueChar
73689 (p_source_code => 'LEDGER_CATEGORY_CODE'
73690 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
73691 AND l_bflow_method_code = 'PRIOR_ENTRY'
73692 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
73693 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
73694 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
73695 )
73696 THEN
73697 xla_ae_lines_pkg.BflowUpgEntry
73698 (p_business_method_code => l_bflow_method_code
73699 ,p_business_class_code => l_bflow_class_code
73700 ,p_balance_type => l_balance_type_code);
73701 ELSE
73702 NULL;
73703 -- No business flow processing for business flow method of NONE.
73704 END IF;
73705
73706 --
73707 -- call analytical criteria
73708 --
73709
73710 --
73711 -- call description
73712 --
73713 -- No description or it is inherited.
73714 --
73715 -- call ADRs
73716 -- Bug 4922099
73717 --
73718 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
73719 (NVL(l_actual_upg_option, 'N') = 'O') OR
73720 (NVL(l_enc_upg_option, 'N') = 'O')
73721 )
73722 THEN
73723 NULL;
73724 --
73725 --
73726
73727 l_ccid := AcctDerRule_4(
73728 p_application_id => p_application_id
73729 , p_ae_header_id => l_ae_header_id
73730 , p_source_4 => p_source_4
73731 , x_transaction_coa_id => l_adr_transaction_coa_id
73732 , x_accounting_coa_id => l_adr_accounting_coa_id
73733 , x_value_type_code => l_adr_value_type_code
73734 , p_side => 'NA'
73735 );
73736
73737 xla_ae_lines_pkg.set_ccid(
73738 p_code_combination_id => l_ccid
73739 , p_value_type_code => l_adr_value_type_code
73740 , p_transaction_coa_id => l_adr_transaction_coa_id
73741 , p_accounting_coa_id => l_adr_accounting_coa_id
73742 , p_adr_code => 'CST_DEFAULT'
73743 , p_adr_type_code => 'S'
73744 , p_component_type => l_component_type
73745 , p_component_code => l_component_code
73746 , p_component_type_code => l_component_type_code
73747 , p_component_appl_id => l_component_appl_id
73748 , p_amb_context_code => l_amb_context_code
73749 , p_side => 'NA'
73750 );
73751
73752
73753 --
73754 --
73755 END IF;
73756 --
73757 -- Bug 4922099
73758 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
73759 (NVL(l_enc_upg_option, 'N') = 'O')
73760 ) AND
73761 (l_bflow_method_code = 'PRIOR_ENTRY')
73762 )
73763 THEN
73764 IF
73765 --
73766 1 = 2
73767 --
73768 THEN
73769 xla_accounting_err_pkg.build_message
73770 (p_appli_s_name => 'XLA'
73771 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
73772 ,p_token_1 => 'LINE_NUMBER'
73773 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
73774 ,p_token_2 => 'LINE_TYPE_NAME'
73775 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
73776 l_component_type
73777 ,l_component_code
73778 ,l_component_type_code
73779 ,l_component_appl_id
73780 ,l_amb_context_code
73781 ,l_entity_code
73782 ,l_event_class_code
73783 )
73784 ,p_token_3 => 'OWNER'
73785 ,p_value_3 => xla_lookups_pkg.get_meaning(
73786 p_lookup_type => 'XLA_OWNER_TYPE'
73787 ,p_lookup_code => l_component_type_code
73788 )
73789 ,p_token_4 => 'PRODUCT_NAME'
73790 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
73791 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
73792 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
73793 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
73794 ,p_ae_header_id => NULL
73795 );
73796
73797 IF (C_LEVEL_ERROR>= g_log_level) THEN
73798 trace
73799 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
73800 ,p_level => C_LEVEL_ERROR
73801 ,p_module => l_log_module);
73802 END IF;
73803 END IF;
73804 END IF;
73805 --
73806 --
73807 ------------------------------------------------------------------------------------------------
73808 -- 4219869 Business Flow
73809 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
73810 -- Prior Entry. Currently, the following code is always generated.
73811 ------------------------------------------------------------------------------------------------
73812 XLA_AE_LINES_PKG.ValidateCurrentLine;
73813
73814 ------------------------------------------------------------------------------------
73815 -- 4219869 Business Flow
73816 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
73817 ------------------------------------------------------------------------------------
73818 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
73819
73820 ----------------------------------------------------------------------------------
73821 -- 4219869 Business Flow
73822 -- Update journal entry status -- Need to generate this within IF <condition>
73823 ----------------------------------------------------------------------------------
73824 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
73825 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
73826 ,p_balance_type_code => l_balance_type_code
73827 );
73828
73829 -------------------------------------------------------------------------------------------
73830 -- 4262811 - Generate the Accrual Reversal lines
73831 -------------------------------------------------------------------------------------------
73832 BEGIN
73833 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
73834 (g_array_event(p_event_id).array_value_num('header_index'));
73835 IF l_acc_rev_flag IS NULL THEN
73836 l_acc_rev_flag := 'N';
73837 END IF;
73838 EXCEPTION
73839 WHEN OTHERS THEN
73840 l_acc_rev_flag := 'N';
73841 END;
73842 --
73843 IF (l_acc_rev_flag = 'Y') THEN
73844
73845 -- 4645092 ------------------------------------------------------------------------------
73846 -- To allow MPA report to determine if it should generate report process
73847 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
73848 ------------------------------------------------------------------------------------------
73849
73850 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
73851 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
73852 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
73853 -- call ADRs
73854 -- Bug 4922099
73855 --
73856 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
73857 (NVL(l_actual_upg_option, 'N') = 'O') OR
73858 (NVL(l_enc_upg_option, 'N') = 'O')
73859 )
73860 THEN
73861 NULL;
73862 --
73863 --
73864
73865 l_ccid := AcctDerRule_4(
73866 p_application_id => p_application_id
73867 , p_ae_header_id => l_ae_header_id
73868 , p_source_4 => p_source_4
73869 , x_transaction_coa_id => l_adr_transaction_coa_id
73870 , x_accounting_coa_id => l_adr_accounting_coa_id
73871 , x_value_type_code => l_adr_value_type_code
73872 , p_side => 'NA'
73873 );
73874
73875 xla_ae_lines_pkg.set_ccid(
73876 p_code_combination_id => l_ccid
73877 , p_value_type_code => l_adr_value_type_code
73878 , p_transaction_coa_id => l_adr_transaction_coa_id
73879 , p_accounting_coa_id => l_adr_accounting_coa_id
73880 , p_adr_code => 'CST_DEFAULT'
73881 , p_adr_type_code => 'S'
73882 , p_component_type => l_component_type
73883 , p_component_code => l_component_code
73884 , p_component_type_code => l_component_type_code
73885 , p_component_appl_id => l_component_appl_id
73886 , p_amb_context_code => l_amb_context_code
73887 , p_side => 'NA'
73888 );
73889
73890
73891 --
73892 --
73893 END IF;
73894
73895 --
73896 -- Update the line information that should be overwritten
73897 --
73898 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
73899 p_header_num => 1);
73900 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
73901
73902 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
73903
73904 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
73905 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
73906 END IF;
73907
73908 --
73909 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
73910 --
73911 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
73912 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
73913 ELSE
73914 ---------------------------------------------------------------------------------------------------
73915 -- 4262811a Switch Sign
73916 ---------------------------------------------------------------------------------------------------
73917 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
73918 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
73919 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
73920 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
73921 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
73922 -- 5132302
73923 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
73924 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
73925
73926 END IF;
73927
73928 -- 4955764
73929 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
73930 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
73931
73932
73933 XLA_AE_LINES_PKG.ValidateCurrentLine;
73934 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
73935
73936 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
73937 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
73938 ,p_balance_type_code => l_balance_type_code);
73939
73940 END IF;
73941
73942 -----------------------------------------------------------------------------------------
73943 -- 4262811 Multiperiod Accounting
73944 -----------------------------------------------------------------------------------------
73945 -- No MPA option is assigned.
73946
73947
73948 END IF;
73949 END IF;
73950 --
73951
73952 --
73953 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
73954 trace
73955 (p_msg => 'END of AcctLineType_135'
73956 ,p_level => C_LEVEL_PROCEDURE
73957 ,p_module => l_log_module);
73958 END IF;
73959 --
73960 EXCEPTION
73961 WHEN xla_exceptions_pkg.application_exception THEN
73962 RAISE;
73963 WHEN OTHERS THEN
73964 xla_exceptions_pkg.raise_message
73965 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_135');
73966 END AcctLineType_135;
73967 --
73968
73969 ---------------------------------------
73970 --
73971 -- PRIVATE FUNCTION
73972 -- AcctLineType_136
73973 --
73974 ---------------------------------------
73975 PROCEDURE AcctLineType_136 (
73976 p_application_id IN NUMBER
73977 ,p_event_id IN NUMBER
73978 ,p_calculate_acctd_flag IN VARCHAR2
73979 ,p_calculate_g_l_flag IN VARCHAR2
73980 ,p_actual_flag IN OUT VARCHAR2
73981 ,p_balance_type_code OUT VARCHAR2
73982 ,p_gain_or_loss_ref OUT VARCHAR2
73983
73984 --Cost Management Default Account
73985 , p_source_4 IN NUMBER
73986 --DISTRIBUTION_IDENTIFIER
73987 , p_source_11 IN NUMBER
73988 --Distribution Type
73989 , p_source_12 IN VARCHAR2
73990 , p_source_12_meaning IN VARCHAR2
73991 --Entered Currency Code
73992 , p_source_15 IN VARCHAR2
73993 --Entered Amount
73994 , p_source_18 IN NUMBER
73995 --Currency Conversion Date
73996 , p_source_19 IN DATE
73997 --Currency Conversion Rate
73998 , p_source_20 IN NUMBER
73999 --Currency Conversion Type
74000 , p_source_21 IN VARCHAR2
74001 --Accounted Amount
74002 , p_source_22 IN NUMBER
74003 --Accounting Line Type
74004 , p_source_24 IN NUMBER
74005 )
74006 IS
74007
74008 l_component_type VARCHAR2(80);
74009 l_component_code VARCHAR2(30);
74010 l_component_type_code VARCHAR2(1);
74011 l_component_appl_id INTEGER;
74012 l_amb_context_code VARCHAR2(30);
74013 l_entity_code VARCHAR2(30);
74014 l_event_class_code VARCHAR2(30);
74015 l_ae_header_id NUMBER;
74016 l_event_type_code VARCHAR2(30);
74017 l_line_definition_code VARCHAR2(30);
74018 l_line_definition_owner_code VARCHAR2(1);
74019 --
74020 -- adr variables
74021 l_segment VARCHAR2(30);
74022 l_ccid NUMBER;
74023 l_adr_transaction_coa_id NUMBER;
74024 l_adr_accounting_coa_id NUMBER;
74025 l_adr_flexfield_segment_code VARCHAR2(30);
74026 l_adr_flex_value_set_id NUMBER;
74027 l_adr_value_type_code VARCHAR2(30);
74028 l_adr_value_combination_id NUMBER;
74029 l_adr_value_segment_code VARCHAR2(30);
74030
74031 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
74032 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
74033 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
74034 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
74035
74036 -- 4262811 Variables ------------------------------------------------------------------------------------------
74037 l_entered_amt_idx NUMBER;
74038 l_accted_amt_idx NUMBER;
74039 l_acc_rev_flag VARCHAR2(1);
74040 l_accrual_line_num NUMBER;
74041 l_tmp_amt NUMBER;
74042 l_acc_rev_natural_side_code VARCHAR2(1);
74043
74044 l_num_entries NUMBER;
74045 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
74046 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
74047 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
74048 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
74049 l_recog_line_1 NUMBER;
74050 l_recog_line_2 NUMBER;
74051
74052 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
74053 l_bflow_applied_to_amt NUMBER; -- 5132302
74054 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
74055
74056 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
74057
74058 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
74059 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
74060
74061 ---------------------------------------------------------------------------------------------------------------
74062
74063
74064 --
74065 -- bulk performance
74066 --
74067 l_balance_type_code VARCHAR2(1);
74068 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
74069 l_log_module VARCHAR2(240);
74070
74071 --
74072 -- Upgrade strategy
74073 --
74074 l_actual_upg_option VARCHAR2(1);
74075 l_enc_upg_option VARCHAR2(1);
74076
74077 --
74078 BEGIN
74079 --
74080 IF g_log_enabled THEN
74081 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_136';
74082 END IF;
74083 --
74084 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
74085
74086 trace
74087 (p_msg => 'BEGIN of AcctLineType_136'
74088 ,p_level => C_LEVEL_PROCEDURE
74089 ,p_module => l_log_module);
74090
74091 END IF;
74092 --
74093 l_component_type := 'AMB_JLT';
74094 l_component_code := 'INVENTORY_VALUATION';
74095 l_component_type_code := 'S';
74096 l_component_appl_id := 707;
74097 l_amb_context_code := 'DEFAULT';
74098 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
74099 l_event_class_code := 'USER_DEFINE';
74100 l_event_type_code := 'UDIR_INTERORG_RCPT';
74101 l_line_definition_owner_code := 'S';
74102 l_line_definition_code := 'USER_DIR_INTERORG_RCPT';
74103 --
74104 l_balance_type_code := 'A';
74105 l_segment := NULL;
74106 l_ccid := NULL;
74107 l_adr_transaction_coa_id := NULL;
74108 l_adr_accounting_coa_id := NULL;
74109 l_adr_flexfield_segment_code := NULL;
74110 l_adr_flex_value_set_id := NULL;
74111 l_adr_value_type_code := NULL;
74112 l_adr_value_combination_id := NULL;
74113 l_adr_value_segment_code := NULL;
74114
74115 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
74116 l_bflow_class_code := ''; -- 4219869 Business Flow
74117 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
74118 l_budgetary_control_flag := 'N';
74119
74120 l_bflow_applied_to_amt_idx := NULL; -- 5132302
74121 l_bflow_applied_to_amt := NULL; -- 5132302
74122 l_entered_amt_idx := NULL; -- 4262811
74123 l_accted_amt_idx := NULL; -- 4262811
74124 l_acc_rev_flag := NULL; -- 4262811
74125 l_accrual_line_num := NULL; -- 4262811
74126 l_tmp_amt := NULL; -- 4262811
74127 --
74128
74129 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
74130 l_balance_type_code <> 'B' THEN
74131 IF NVL(p_source_24,9E125) = 1
74132 THEN
74133
74134 --
74135 XLA_AE_LINES_PKG.SetNewLine;
74136
74137 p_balance_type_code := l_balance_type_code;
74138 -- set the flag so later we will know whether the gain loss line needs to be created
74139
74140 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
74141 p_actual_flag :='A';
74142 END IF;
74143
74144 --
74145 -- bulk performance
74146 --
74147 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
74148 p_header_num => 0); -- 4262811
74149 --
74150 -- set accounting line options
74151 --
74152 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
74153 p_natural_side_code => 'D'
74154 , p_gain_or_loss_flag => 'N'
74155 , p_gl_transfer_mode_code => 'S'
74156 , p_acct_entry_type_code => 'A'
74157 , p_switch_side_flag => 'Y'
74158 , p_merge_duplicate_code => 'N'
74159 );
74160 --
74161 l_acc_rev_natural_side_code := 'C'; -- 4262811
74162 --
74163 --
74164 -- set accounting line type info
74165 --
74166 xla_ae_lines_pkg.SetAcctLineType
74167 (p_component_type => l_component_type
74168 ,p_event_type_code => l_event_type_code
74169 ,p_line_definition_owner_code => l_line_definition_owner_code
74170 ,p_line_definition_code => l_line_definition_code
74171 ,p_accounting_line_code => l_component_code
74172 ,p_accounting_line_type_code => l_component_type_code
74173 ,p_accounting_line_appl_id => l_component_appl_id
74174 ,p_amb_context_code => l_amb_context_code
74175 ,p_entity_code => l_entity_code
74176 ,p_event_class_code => l_event_class_code);
74177 --
74178 -- set accounting class
74179 --
74180 xla_ae_lines_pkg.SetAcctClass(
74181 p_accounting_class_code => 'INVENTORY_VALUATION'
74182 , p_ae_header_id => l_ae_header_id
74183 );
74184
74185 --
74186 -- set rounding class
74187 --
74188 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
74189 'INVENTORY_VALUATION';
74190
74191 --
74192 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
74193 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
74194 --
74195 -- bulk performance
74196 --
74197 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
74198
74199 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
74200 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
74201
74202 -- 4955764
74203 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
74204 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
74205
74206 -- 4458381 Public Sector Enh
74207
74208 --
74209 -- set accounting attributes for the line type
74210 --
74211 l_entered_amt_idx := 3;
74212 l_accted_amt_idx := 8;
74213 l_bflow_applied_to_amt_idx := NULL; -- 5132302
74214 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
74215 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
74216 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
74217 l_rec_acct_attrs.array_char_value(2) := p_source_12;
74218 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
74219 l_rec_acct_attrs.array_num_value(3) := p_source_18;
74220 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
74221 l_rec_acct_attrs.array_char_value(4) := p_source_15;
74222 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
74223 l_rec_acct_attrs.array_date_value(5) := p_source_19;
74224 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
74225 l_rec_acct_attrs.array_num_value(6) := p_source_20;
74226 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
74227 l_rec_acct_attrs.array_char_value(7) := p_source_21;
74228 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
74229 l_rec_acct_attrs.array_num_value(8) := p_source_22;
74230
74231 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
74232 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
74233
74234 ---------------------------------------------------------------------------------------------------------------
74235 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
74236 ---------------------------------------------------------------------------------------------------------------
74237 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
74238
74239 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
74240 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
74241
74242 IF xla_accounting_cache_pkg.GetValueChar
74243 (p_source_code => 'LEDGER_CATEGORY_CODE'
74244 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
74245 AND l_bflow_method_code = 'PRIOR_ENTRY'
74246 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
74247 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
74248 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
74249 )
74250 THEN
74251 xla_ae_lines_pkg.BflowUpgEntry
74252 (p_business_method_code => l_bflow_method_code
74253 ,p_business_class_code => l_bflow_class_code
74254 ,p_balance_type => l_balance_type_code);
74255 ELSE
74256 NULL;
74257 -- No business flow processing for business flow method of NONE.
74258 END IF;
74259
74260 --
74261 -- call analytical criteria
74262 --
74263
74264 --
74265 -- call description
74266 --
74267 -- No description or it is inherited.
74268 --
74269 -- call ADRs
74270 -- Bug 4922099
74271 --
74272 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
74273 (NVL(l_actual_upg_option, 'N') = 'O') OR
74274 (NVL(l_enc_upg_option, 'N') = 'O')
74275 )
74276 THEN
74277 NULL;
74278 --
74279 --
74280
74281 l_ccid := AcctDerRule_4(
74282 p_application_id => p_application_id
74283 , p_ae_header_id => l_ae_header_id
74284 , p_source_4 => p_source_4
74285 , x_transaction_coa_id => l_adr_transaction_coa_id
74286 , x_accounting_coa_id => l_adr_accounting_coa_id
74287 , x_value_type_code => l_adr_value_type_code
74288 , p_side => 'NA'
74289 );
74290
74291 xla_ae_lines_pkg.set_ccid(
74292 p_code_combination_id => l_ccid
74293 , p_value_type_code => l_adr_value_type_code
74294 , p_transaction_coa_id => l_adr_transaction_coa_id
74295 , p_accounting_coa_id => l_adr_accounting_coa_id
74296 , p_adr_code => 'CST_DEFAULT'
74297 , p_adr_type_code => 'S'
74298 , p_component_type => l_component_type
74299 , p_component_code => l_component_code
74300 , p_component_type_code => l_component_type_code
74301 , p_component_appl_id => l_component_appl_id
74302 , p_amb_context_code => l_amb_context_code
74303 , p_side => 'NA'
74304 );
74305
74306
74307 --
74308 --
74309 END IF;
74310 --
74311 -- Bug 4922099
74312 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
74313 (NVL(l_enc_upg_option, 'N') = 'O')
74314 ) AND
74315 (l_bflow_method_code = 'PRIOR_ENTRY')
74316 )
74317 THEN
74318 IF
74319 --
74320 1 = 2
74321 --
74322 THEN
74323 xla_accounting_err_pkg.build_message
74324 (p_appli_s_name => 'XLA'
74325 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
74326 ,p_token_1 => 'LINE_NUMBER'
74327 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
74328 ,p_token_2 => 'LINE_TYPE_NAME'
74329 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
74330 l_component_type
74331 ,l_component_code
74332 ,l_component_type_code
74333 ,l_component_appl_id
74334 ,l_amb_context_code
74335 ,l_entity_code
74336 ,l_event_class_code
74337 )
74338 ,p_token_3 => 'OWNER'
74339 ,p_value_3 => xla_lookups_pkg.get_meaning(
74340 p_lookup_type => 'XLA_OWNER_TYPE'
74341 ,p_lookup_code => l_component_type_code
74342 )
74343 ,p_token_4 => 'PRODUCT_NAME'
74344 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
74345 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
74346 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
74347 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
74348 ,p_ae_header_id => NULL
74349 );
74350
74351 IF (C_LEVEL_ERROR>= g_log_level) THEN
74352 trace
74353 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
74354 ,p_level => C_LEVEL_ERROR
74355 ,p_module => l_log_module);
74356 END IF;
74357 END IF;
74358 END IF;
74359 --
74360 --
74361 ------------------------------------------------------------------------------------------------
74362 -- 4219869 Business Flow
74363 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
74364 -- Prior Entry. Currently, the following code is always generated.
74365 ------------------------------------------------------------------------------------------------
74366 XLA_AE_LINES_PKG.ValidateCurrentLine;
74367
74368 ------------------------------------------------------------------------------------
74369 -- 4219869 Business Flow
74370 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
74371 ------------------------------------------------------------------------------------
74372 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
74373
74374 ----------------------------------------------------------------------------------
74375 -- 4219869 Business Flow
74376 -- Update journal entry status -- Need to generate this within IF <condition>
74377 ----------------------------------------------------------------------------------
74378 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
74379 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
74380 ,p_balance_type_code => l_balance_type_code
74381 );
74382
74383 -------------------------------------------------------------------------------------------
74384 -- 4262811 - Generate the Accrual Reversal lines
74385 -------------------------------------------------------------------------------------------
74386 BEGIN
74387 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
74388 (g_array_event(p_event_id).array_value_num('header_index'));
74389 IF l_acc_rev_flag IS NULL THEN
74390 l_acc_rev_flag := 'N';
74391 END IF;
74392 EXCEPTION
74393 WHEN OTHERS THEN
74394 l_acc_rev_flag := 'N';
74395 END;
74396 --
74397 IF (l_acc_rev_flag = 'Y') THEN
74398
74399 -- 4645092 ------------------------------------------------------------------------------
74400 -- To allow MPA report to determine if it should generate report process
74401 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
74402 ------------------------------------------------------------------------------------------
74403
74404 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
74405 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
74406 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
74407 -- call ADRs
74408 -- Bug 4922099
74409 --
74410 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
74411 (NVL(l_actual_upg_option, 'N') = 'O') OR
74412 (NVL(l_enc_upg_option, 'N') = 'O')
74413 )
74414 THEN
74415 NULL;
74416 --
74417 --
74418
74419 l_ccid := AcctDerRule_4(
74420 p_application_id => p_application_id
74421 , p_ae_header_id => l_ae_header_id
74422 , p_source_4 => p_source_4
74423 , x_transaction_coa_id => l_adr_transaction_coa_id
74424 , x_accounting_coa_id => l_adr_accounting_coa_id
74425 , x_value_type_code => l_adr_value_type_code
74426 , p_side => 'NA'
74427 );
74428
74429 xla_ae_lines_pkg.set_ccid(
74430 p_code_combination_id => l_ccid
74431 , p_value_type_code => l_adr_value_type_code
74432 , p_transaction_coa_id => l_adr_transaction_coa_id
74433 , p_accounting_coa_id => l_adr_accounting_coa_id
74434 , p_adr_code => 'CST_DEFAULT'
74435 , p_adr_type_code => 'S'
74436 , p_component_type => l_component_type
74437 , p_component_code => l_component_code
74438 , p_component_type_code => l_component_type_code
74439 , p_component_appl_id => l_component_appl_id
74440 , p_amb_context_code => l_amb_context_code
74441 , p_side => 'NA'
74442 );
74443
74444
74445 --
74446 --
74447 END IF;
74448
74449 --
74450 -- Update the line information that should be overwritten
74451 --
74452 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
74453 p_header_num => 1);
74454 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
74455
74456 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
74457
74458 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
74459 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
74460 END IF;
74461
74462 --
74463 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
74464 --
74465 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
74466 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
74467 ELSE
74468 ---------------------------------------------------------------------------------------------------
74469 -- 4262811a Switch Sign
74470 ---------------------------------------------------------------------------------------------------
74471 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
74472 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
74473 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
74474 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
74475 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
74476 -- 5132302
74477 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
74478 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
74479
74480 END IF;
74481
74482 -- 4955764
74483 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
74484 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
74485
74486
74487 XLA_AE_LINES_PKG.ValidateCurrentLine;
74488 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
74489
74490 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
74491 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
74492 ,p_balance_type_code => l_balance_type_code);
74493
74494 END IF;
74495
74496 -----------------------------------------------------------------------------------------
74497 -- 4262811 Multiperiod Accounting
74498 -----------------------------------------------------------------------------------------
74499 -- No MPA option is assigned.
74500
74501
74502 END IF;
74503 END IF;
74504 --
74505
74506 --
74507 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
74508 trace
74509 (p_msg => 'END of AcctLineType_136'
74510 ,p_level => C_LEVEL_PROCEDURE
74511 ,p_module => l_log_module);
74512 END IF;
74513 --
74514 EXCEPTION
74515 WHEN xla_exceptions_pkg.application_exception THEN
74516 RAISE;
74517 WHEN OTHERS THEN
74518 xla_exceptions_pkg.raise_message
74519 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_136');
74520 END AcctLineType_136;
74521 --
74522
74523 ---------------------------------------
74524 --
74525 -- PRIVATE FUNCTION
74526 -- AcctLineType_137
74527 --
74528 ---------------------------------------
74529 PROCEDURE AcctLineType_137 (
74530 p_application_id IN NUMBER
74531 ,p_event_id IN NUMBER
74532 ,p_calculate_acctd_flag IN VARCHAR2
74533 ,p_calculate_g_l_flag IN VARCHAR2
74534 ,p_actual_flag IN OUT VARCHAR2
74535 ,p_balance_type_code OUT VARCHAR2
74536 ,p_gain_or_loss_ref OUT VARCHAR2
74537
74538 --Cost Management Default Account
74539 , p_source_4 IN NUMBER
74540 --DISTRIBUTION_IDENTIFIER
74541 , p_source_11 IN NUMBER
74542 --Distribution Type
74543 , p_source_12 IN VARCHAR2
74544 , p_source_12_meaning IN VARCHAR2
74545 --Entered Currency Code
74546 , p_source_15 IN VARCHAR2
74547 --Entered Amount
74548 , p_source_18 IN NUMBER
74549 --Currency Conversion Date
74550 , p_source_19 IN DATE
74551 --Currency Conversion Rate
74552 , p_source_20 IN NUMBER
74553 --Currency Conversion Type
74554 , p_source_21 IN VARCHAR2
74555 --Accounted Amount
74556 , p_source_22 IN NUMBER
74557 --Accounting Line Type
74558 , p_source_24 IN NUMBER
74559 )
74560 IS
74561
74562 l_component_type VARCHAR2(80);
74563 l_component_code VARCHAR2(30);
74564 l_component_type_code VARCHAR2(1);
74565 l_component_appl_id INTEGER;
74566 l_amb_context_code VARCHAR2(30);
74567 l_entity_code VARCHAR2(30);
74568 l_event_class_code VARCHAR2(30);
74569 l_ae_header_id NUMBER;
74570 l_event_type_code VARCHAR2(30);
74571 l_line_definition_code VARCHAR2(30);
74572 l_line_definition_owner_code VARCHAR2(1);
74573 --
74574 -- adr variables
74575 l_segment VARCHAR2(30);
74576 l_ccid NUMBER;
74577 l_adr_transaction_coa_id NUMBER;
74578 l_adr_accounting_coa_id NUMBER;
74579 l_adr_flexfield_segment_code VARCHAR2(30);
74580 l_adr_flex_value_set_id NUMBER;
74581 l_adr_value_type_code VARCHAR2(30);
74582 l_adr_value_combination_id NUMBER;
74583 l_adr_value_segment_code VARCHAR2(30);
74584
74585 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
74586 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
74587 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
74588 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
74589
74590 -- 4262811 Variables ------------------------------------------------------------------------------------------
74591 l_entered_amt_idx NUMBER;
74592 l_accted_amt_idx NUMBER;
74593 l_acc_rev_flag VARCHAR2(1);
74594 l_accrual_line_num NUMBER;
74595 l_tmp_amt NUMBER;
74596 l_acc_rev_natural_side_code VARCHAR2(1);
74597
74598 l_num_entries NUMBER;
74599 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
74600 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
74601 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
74602 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
74603 l_recog_line_1 NUMBER;
74604 l_recog_line_2 NUMBER;
74605
74606 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
74607 l_bflow_applied_to_amt NUMBER; -- 5132302
74608 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
74609
74610 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
74611
74612 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
74613 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
74614
74615 ---------------------------------------------------------------------------------------------------------------
74616
74617
74618 --
74619 -- bulk performance
74620 --
74621 l_balance_type_code VARCHAR2(1);
74622 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
74623 l_log_module VARCHAR2(240);
74624
74625 --
74626 -- Upgrade strategy
74627 --
74628 l_actual_upg_option VARCHAR2(1);
74629 l_enc_upg_option VARCHAR2(1);
74630
74631 --
74632 BEGIN
74633 --
74634 IF g_log_enabled THEN
74635 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_137';
74636 END IF;
74637 --
74638 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
74639
74640 trace
74641 (p_msg => 'BEGIN of AcctLineType_137'
74642 ,p_level => C_LEVEL_PROCEDURE
74643 ,p_module => l_log_module);
74644
74645 END IF;
74646 --
74647 l_component_type := 'AMB_JLT';
74648 l_component_code := 'INVENTORY_VALUATION';
74649 l_component_type_code := 'S';
74650 l_component_appl_id := 707;
74651 l_amb_context_code := 'DEFAULT';
74652 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
74653 l_event_class_code := 'USER_DEFINE';
74654 l_event_type_code := 'UDIR_INTERORG_RCPT_NO_TP';
74655 l_line_definition_owner_code := 'S';
74656 l_line_definition_code := 'USER_DIR_INTERORG_RCPT_NO_TP';
74657 --
74658 l_balance_type_code := 'A';
74659 l_segment := NULL;
74660 l_ccid := NULL;
74661 l_adr_transaction_coa_id := NULL;
74662 l_adr_accounting_coa_id := NULL;
74663 l_adr_flexfield_segment_code := NULL;
74664 l_adr_flex_value_set_id := NULL;
74665 l_adr_value_type_code := NULL;
74666 l_adr_value_combination_id := NULL;
74667 l_adr_value_segment_code := NULL;
74668
74669 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
74670 l_bflow_class_code := ''; -- 4219869 Business Flow
74671 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
74672 l_budgetary_control_flag := 'N';
74673
74674 l_bflow_applied_to_amt_idx := NULL; -- 5132302
74675 l_bflow_applied_to_amt := NULL; -- 5132302
74676 l_entered_amt_idx := NULL; -- 4262811
74677 l_accted_amt_idx := NULL; -- 4262811
74678 l_acc_rev_flag := NULL; -- 4262811
74679 l_accrual_line_num := NULL; -- 4262811
74680 l_tmp_amt := NULL; -- 4262811
74681 --
74682
74683 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
74684 l_balance_type_code <> 'B' THEN
74685 IF NVL(p_source_24,9E125) = 1
74686 THEN
74687
74688 --
74689 XLA_AE_LINES_PKG.SetNewLine;
74690
74691 p_balance_type_code := l_balance_type_code;
74692 -- set the flag so later we will know whether the gain loss line needs to be created
74693
74694 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
74695 p_actual_flag :='A';
74696 END IF;
74697
74698 --
74699 -- bulk performance
74700 --
74701 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
74702 p_header_num => 0); -- 4262811
74703 --
74704 -- set accounting line options
74705 --
74706 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
74707 p_natural_side_code => 'D'
74708 , p_gain_or_loss_flag => 'N'
74709 , p_gl_transfer_mode_code => 'S'
74710 , p_acct_entry_type_code => 'A'
74711 , p_switch_side_flag => 'Y'
74712 , p_merge_duplicate_code => 'N'
74713 );
74714 --
74715 l_acc_rev_natural_side_code := 'C'; -- 4262811
74716 --
74717 --
74718 -- set accounting line type info
74719 --
74720 xla_ae_lines_pkg.SetAcctLineType
74721 (p_component_type => l_component_type
74722 ,p_event_type_code => l_event_type_code
74723 ,p_line_definition_owner_code => l_line_definition_owner_code
74724 ,p_line_definition_code => l_line_definition_code
74725 ,p_accounting_line_code => l_component_code
74726 ,p_accounting_line_type_code => l_component_type_code
74727 ,p_accounting_line_appl_id => l_component_appl_id
74728 ,p_amb_context_code => l_amb_context_code
74729 ,p_entity_code => l_entity_code
74730 ,p_event_class_code => l_event_class_code);
74731 --
74732 -- set accounting class
74733 --
74734 xla_ae_lines_pkg.SetAcctClass(
74735 p_accounting_class_code => 'INVENTORY_VALUATION'
74736 , p_ae_header_id => l_ae_header_id
74737 );
74738
74739 --
74740 -- set rounding class
74741 --
74742 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
74743 'INVENTORY_VALUATION';
74744
74745 --
74746 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
74747 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
74748 --
74749 -- bulk performance
74750 --
74751 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
74752
74753 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
74754 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
74755
74756 -- 4955764
74757 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
74758 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
74759
74760 -- 4458381 Public Sector Enh
74761
74762 --
74763 -- set accounting attributes for the line type
74764 --
74765 l_entered_amt_idx := 3;
74766 l_accted_amt_idx := 8;
74767 l_bflow_applied_to_amt_idx := NULL; -- 5132302
74768 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
74769 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
74770 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
74771 l_rec_acct_attrs.array_char_value(2) := p_source_12;
74772 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
74773 l_rec_acct_attrs.array_num_value(3) := p_source_18;
74774 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
74775 l_rec_acct_attrs.array_char_value(4) := p_source_15;
74776 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
74777 l_rec_acct_attrs.array_date_value(5) := p_source_19;
74778 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
74779 l_rec_acct_attrs.array_num_value(6) := p_source_20;
74780 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
74781 l_rec_acct_attrs.array_char_value(7) := p_source_21;
74782 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
74783 l_rec_acct_attrs.array_num_value(8) := p_source_22;
74784
74785 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
74786 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
74787
74788 ---------------------------------------------------------------------------------------------------------------
74789 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
74790 ---------------------------------------------------------------------------------------------------------------
74791 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
74792
74793 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
74794 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
74795
74796 IF xla_accounting_cache_pkg.GetValueChar
74797 (p_source_code => 'LEDGER_CATEGORY_CODE'
74798 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
74799 AND l_bflow_method_code = 'PRIOR_ENTRY'
74800 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
74801 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
74802 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
74803 )
74804 THEN
74805 xla_ae_lines_pkg.BflowUpgEntry
74806 (p_business_method_code => l_bflow_method_code
74807 ,p_business_class_code => l_bflow_class_code
74808 ,p_balance_type => l_balance_type_code);
74809 ELSE
74810 NULL;
74811 -- No business flow processing for business flow method of NONE.
74812 END IF;
74813
74814 --
74815 -- call analytical criteria
74816 --
74817
74818 --
74819 -- call description
74820 --
74821 -- No description or it is inherited.
74822 --
74823 -- call ADRs
74824 -- Bug 4922099
74825 --
74826 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
74827 (NVL(l_actual_upg_option, 'N') = 'O') OR
74828 (NVL(l_enc_upg_option, 'N') = 'O')
74829 )
74830 THEN
74831 NULL;
74832 --
74833 --
74834
74835 l_ccid := AcctDerRule_4(
74836 p_application_id => p_application_id
74837 , p_ae_header_id => l_ae_header_id
74838 , p_source_4 => p_source_4
74839 , x_transaction_coa_id => l_adr_transaction_coa_id
74840 , x_accounting_coa_id => l_adr_accounting_coa_id
74841 , x_value_type_code => l_adr_value_type_code
74842 , p_side => 'NA'
74843 );
74844
74845 xla_ae_lines_pkg.set_ccid(
74846 p_code_combination_id => l_ccid
74847 , p_value_type_code => l_adr_value_type_code
74848 , p_transaction_coa_id => l_adr_transaction_coa_id
74849 , p_accounting_coa_id => l_adr_accounting_coa_id
74850 , p_adr_code => 'CST_DEFAULT'
74851 , p_adr_type_code => 'S'
74852 , p_component_type => l_component_type
74853 , p_component_code => l_component_code
74854 , p_component_type_code => l_component_type_code
74855 , p_component_appl_id => l_component_appl_id
74856 , p_amb_context_code => l_amb_context_code
74857 , p_side => 'NA'
74858 );
74859
74860
74861 --
74862 --
74863 END IF;
74864 --
74865 -- Bug 4922099
74866 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
74867 (NVL(l_enc_upg_option, 'N') = 'O')
74868 ) AND
74869 (l_bflow_method_code = 'PRIOR_ENTRY')
74870 )
74871 THEN
74872 IF
74873 --
74874 1 = 2
74875 --
74876 THEN
74877 xla_accounting_err_pkg.build_message
74878 (p_appli_s_name => 'XLA'
74879 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
74880 ,p_token_1 => 'LINE_NUMBER'
74881 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
74882 ,p_token_2 => 'LINE_TYPE_NAME'
74883 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
74884 l_component_type
74885 ,l_component_code
74886 ,l_component_type_code
74887 ,l_component_appl_id
74888 ,l_amb_context_code
74889 ,l_entity_code
74890 ,l_event_class_code
74891 )
74892 ,p_token_3 => 'OWNER'
74893 ,p_value_3 => xla_lookups_pkg.get_meaning(
74894 p_lookup_type => 'XLA_OWNER_TYPE'
74895 ,p_lookup_code => l_component_type_code
74896 )
74897 ,p_token_4 => 'PRODUCT_NAME'
74898 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
74899 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
74900 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
74901 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
74902 ,p_ae_header_id => NULL
74903 );
74904
74905 IF (C_LEVEL_ERROR>= g_log_level) THEN
74906 trace
74907 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
74908 ,p_level => C_LEVEL_ERROR
74909 ,p_module => l_log_module);
74910 END IF;
74911 END IF;
74912 END IF;
74913 --
74914 --
74915 ------------------------------------------------------------------------------------------------
74916 -- 4219869 Business Flow
74917 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
74918 -- Prior Entry. Currently, the following code is always generated.
74919 ------------------------------------------------------------------------------------------------
74920 XLA_AE_LINES_PKG.ValidateCurrentLine;
74921
74922 ------------------------------------------------------------------------------------
74923 -- 4219869 Business Flow
74924 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
74925 ------------------------------------------------------------------------------------
74926 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
74927
74928 ----------------------------------------------------------------------------------
74929 -- 4219869 Business Flow
74930 -- Update journal entry status -- Need to generate this within IF <condition>
74931 ----------------------------------------------------------------------------------
74932 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
74933 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
74934 ,p_balance_type_code => l_balance_type_code
74935 );
74936
74937 -------------------------------------------------------------------------------------------
74938 -- 4262811 - Generate the Accrual Reversal lines
74939 -------------------------------------------------------------------------------------------
74940 BEGIN
74941 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
74942 (g_array_event(p_event_id).array_value_num('header_index'));
74943 IF l_acc_rev_flag IS NULL THEN
74944 l_acc_rev_flag := 'N';
74945 END IF;
74946 EXCEPTION
74947 WHEN OTHERS THEN
74948 l_acc_rev_flag := 'N';
74949 END;
74950 --
74951 IF (l_acc_rev_flag = 'Y') THEN
74952
74953 -- 4645092 ------------------------------------------------------------------------------
74954 -- To allow MPA report to determine if it should generate report process
74955 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
74956 ------------------------------------------------------------------------------------------
74957
74958 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
74959 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
74960 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
74961 -- call ADRs
74962 -- Bug 4922099
74963 --
74964 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
74965 (NVL(l_actual_upg_option, 'N') = 'O') OR
74966 (NVL(l_enc_upg_option, 'N') = 'O')
74967 )
74968 THEN
74969 NULL;
74970 --
74971 --
74972
74973 l_ccid := AcctDerRule_4(
74974 p_application_id => p_application_id
74975 , p_ae_header_id => l_ae_header_id
74976 , p_source_4 => p_source_4
74977 , x_transaction_coa_id => l_adr_transaction_coa_id
74978 , x_accounting_coa_id => l_adr_accounting_coa_id
74979 , x_value_type_code => l_adr_value_type_code
74980 , p_side => 'NA'
74981 );
74982
74983 xla_ae_lines_pkg.set_ccid(
74984 p_code_combination_id => l_ccid
74985 , p_value_type_code => l_adr_value_type_code
74986 , p_transaction_coa_id => l_adr_transaction_coa_id
74987 , p_accounting_coa_id => l_adr_accounting_coa_id
74988 , p_adr_code => 'CST_DEFAULT'
74989 , p_adr_type_code => 'S'
74990 , p_component_type => l_component_type
74991 , p_component_code => l_component_code
74992 , p_component_type_code => l_component_type_code
74993 , p_component_appl_id => l_component_appl_id
74994 , p_amb_context_code => l_amb_context_code
74995 , p_side => 'NA'
74996 );
74997
74998
74999 --
75000 --
75001 END IF;
75002
75003 --
75004 -- Update the line information that should be overwritten
75005 --
75006 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
75007 p_header_num => 1);
75008 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
75009
75010 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
75011
75012 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
75013 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
75014 END IF;
75015
75016 --
75017 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
75018 --
75019 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
75020 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
75021 ELSE
75022 ---------------------------------------------------------------------------------------------------
75023 -- 4262811a Switch Sign
75024 ---------------------------------------------------------------------------------------------------
75025 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
75026 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
75027 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
75028 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
75029 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
75030 -- 5132302
75031 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
75032 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
75033
75034 END IF;
75035
75036 -- 4955764
75037 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
75038 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
75039
75040
75041 XLA_AE_LINES_PKG.ValidateCurrentLine;
75042 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
75043
75044 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
75045 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
75046 ,p_balance_type_code => l_balance_type_code);
75047
75048 END IF;
75049
75050 -----------------------------------------------------------------------------------------
75051 -- 4262811 Multiperiod Accounting
75052 -----------------------------------------------------------------------------------------
75053 -- No MPA option is assigned.
75054
75055
75056 END IF;
75057 END IF;
75058 --
75059
75060 --
75061 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
75062 trace
75063 (p_msg => 'END of AcctLineType_137'
75064 ,p_level => C_LEVEL_PROCEDURE
75065 ,p_module => l_log_module);
75066 END IF;
75067 --
75068 EXCEPTION
75069 WHEN xla_exceptions_pkg.application_exception THEN
75070 RAISE;
75071 WHEN OTHERS THEN
75072 xla_exceptions_pkg.raise_message
75073 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_137');
75074 END AcctLineType_137;
75075 --
75076
75077 ---------------------------------------
75078 --
75079 -- PRIVATE FUNCTION
75080 -- AcctLineType_138
75081 --
75082 ---------------------------------------
75083 PROCEDURE AcctLineType_138 (
75084 p_application_id IN NUMBER
75085 ,p_event_id IN NUMBER
75086 ,p_calculate_acctd_flag IN VARCHAR2
75087 ,p_calculate_g_l_flag IN VARCHAR2
75088 ,p_actual_flag IN OUT VARCHAR2
75089 ,p_balance_type_code OUT VARCHAR2
75090 ,p_gain_or_loss_ref OUT VARCHAR2
75091
75092 --Cost Management Default Account
75093 , p_source_4 IN NUMBER
75094 --DISTRIBUTION_IDENTIFIER
75095 , p_source_11 IN NUMBER
75096 --Distribution Type
75097 , p_source_12 IN VARCHAR2
75098 , p_source_12_meaning IN VARCHAR2
75099 --Entered Currency Code
75100 , p_source_15 IN VARCHAR2
75101 --Entered Amount
75102 , p_source_18 IN NUMBER
75103 --Currency Conversion Date
75104 , p_source_19 IN DATE
75105 --Currency Conversion Rate
75106 , p_source_20 IN NUMBER
75107 --Currency Conversion Type
75108 , p_source_21 IN VARCHAR2
75109 --Accounted Amount
75110 , p_source_22 IN NUMBER
75111 --Accounting Line Type
75112 , p_source_24 IN NUMBER
75113 )
75114 IS
75115
75116 l_component_type VARCHAR2(80);
75117 l_component_code VARCHAR2(30);
75118 l_component_type_code VARCHAR2(1);
75119 l_component_appl_id INTEGER;
75120 l_amb_context_code VARCHAR2(30);
75121 l_entity_code VARCHAR2(30);
75122 l_event_class_code VARCHAR2(30);
75123 l_ae_header_id NUMBER;
75124 l_event_type_code VARCHAR2(30);
75125 l_line_definition_code VARCHAR2(30);
75126 l_line_definition_owner_code VARCHAR2(1);
75127 --
75128 -- adr variables
75129 l_segment VARCHAR2(30);
75130 l_ccid NUMBER;
75131 l_adr_transaction_coa_id NUMBER;
75132 l_adr_accounting_coa_id NUMBER;
75133 l_adr_flexfield_segment_code VARCHAR2(30);
75134 l_adr_flex_value_set_id NUMBER;
75135 l_adr_value_type_code VARCHAR2(30);
75136 l_adr_value_combination_id NUMBER;
75137 l_adr_value_segment_code VARCHAR2(30);
75138
75139 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
75140 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
75141 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
75142 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
75143
75144 -- 4262811 Variables ------------------------------------------------------------------------------------------
75145 l_entered_amt_idx NUMBER;
75146 l_accted_amt_idx NUMBER;
75147 l_acc_rev_flag VARCHAR2(1);
75148 l_accrual_line_num NUMBER;
75149 l_tmp_amt NUMBER;
75150 l_acc_rev_natural_side_code VARCHAR2(1);
75151
75152 l_num_entries NUMBER;
75153 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
75154 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
75155 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
75156 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
75157 l_recog_line_1 NUMBER;
75158 l_recog_line_2 NUMBER;
75159
75160 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
75161 l_bflow_applied_to_amt NUMBER; -- 5132302
75162 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
75163
75164 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
75165
75166 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
75167 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
75168
75169 ---------------------------------------------------------------------------------------------------------------
75170
75171
75172 --
75173 -- bulk performance
75174 --
75175 l_balance_type_code VARCHAR2(1);
75176 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
75177 l_log_module VARCHAR2(240);
75178
75179 --
75180 -- Upgrade strategy
75181 --
75182 l_actual_upg_option VARCHAR2(1);
75183 l_enc_upg_option VARCHAR2(1);
75184
75185 --
75186 BEGIN
75187 --
75188 IF g_log_enabled THEN
75189 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_138';
75190 END IF;
75191 --
75192 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
75193
75194 trace
75195 (p_msg => 'BEGIN of AcctLineType_138'
75196 ,p_level => C_LEVEL_PROCEDURE
75197 ,p_module => l_log_module);
75198
75199 END IF;
75200 --
75201 l_component_type := 'AMB_JLT';
75202 l_component_code := 'INVENTORY_VALUATION';
75203 l_component_type_code := 'S';
75204 l_component_appl_id := 707;
75205 l_amb_context_code := 'DEFAULT';
75206 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
75207 l_event_class_code := 'USER_DEFINE';
75208 l_event_type_code := 'UFOB_SHIP_SENDER_SHIP_NO_TP';
75209 l_line_definition_owner_code := 'S';
75210 l_line_definition_code := 'USER_FOB_SHIP_SENDER_SHIP_NOTP';
75211 --
75212 l_balance_type_code := 'A';
75213 l_segment := NULL;
75214 l_ccid := NULL;
75215 l_adr_transaction_coa_id := NULL;
75216 l_adr_accounting_coa_id := NULL;
75217 l_adr_flexfield_segment_code := NULL;
75218 l_adr_flex_value_set_id := NULL;
75219 l_adr_value_type_code := NULL;
75220 l_adr_value_combination_id := NULL;
75221 l_adr_value_segment_code := NULL;
75222
75223 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
75224 l_bflow_class_code := ''; -- 4219869 Business Flow
75225 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
75226 l_budgetary_control_flag := 'N';
75227
75228 l_bflow_applied_to_amt_idx := NULL; -- 5132302
75229 l_bflow_applied_to_amt := NULL; -- 5132302
75230 l_entered_amt_idx := NULL; -- 4262811
75231 l_accted_amt_idx := NULL; -- 4262811
75232 l_acc_rev_flag := NULL; -- 4262811
75233 l_accrual_line_num := NULL; -- 4262811
75234 l_tmp_amt := NULL; -- 4262811
75235 --
75236
75237 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
75238 l_balance_type_code <> 'B' THEN
75239 IF NVL(p_source_24,9E125) = 1
75240 THEN
75241
75242 --
75243 XLA_AE_LINES_PKG.SetNewLine;
75244
75245 p_balance_type_code := l_balance_type_code;
75246 -- set the flag so later we will know whether the gain loss line needs to be created
75247
75248 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
75249 p_actual_flag :='A';
75250 END IF;
75251
75252 --
75253 -- bulk performance
75254 --
75255 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
75256 p_header_num => 0); -- 4262811
75257 --
75258 -- set accounting line options
75259 --
75260 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
75261 p_natural_side_code => 'D'
75262 , p_gain_or_loss_flag => 'N'
75263 , p_gl_transfer_mode_code => 'S'
75264 , p_acct_entry_type_code => 'A'
75265 , p_switch_side_flag => 'Y'
75266 , p_merge_duplicate_code => 'N'
75267 );
75268 --
75269 l_acc_rev_natural_side_code := 'C'; -- 4262811
75270 --
75271 --
75272 -- set accounting line type info
75273 --
75274 xla_ae_lines_pkg.SetAcctLineType
75275 (p_component_type => l_component_type
75276 ,p_event_type_code => l_event_type_code
75277 ,p_line_definition_owner_code => l_line_definition_owner_code
75278 ,p_line_definition_code => l_line_definition_code
75279 ,p_accounting_line_code => l_component_code
75280 ,p_accounting_line_type_code => l_component_type_code
75281 ,p_accounting_line_appl_id => l_component_appl_id
75282 ,p_amb_context_code => l_amb_context_code
75283 ,p_entity_code => l_entity_code
75284 ,p_event_class_code => l_event_class_code);
75285 --
75286 -- set accounting class
75287 --
75288 xla_ae_lines_pkg.SetAcctClass(
75289 p_accounting_class_code => 'INVENTORY_VALUATION'
75290 , p_ae_header_id => l_ae_header_id
75291 );
75292
75293 --
75294 -- set rounding class
75295 --
75296 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
75297 'INVENTORY_VALUATION';
75298
75299 --
75300 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
75301 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
75302 --
75303 -- bulk performance
75304 --
75305 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
75306
75307 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
75308 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
75309
75310 -- 4955764
75311 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
75312 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
75313
75314 -- 4458381 Public Sector Enh
75315
75316 --
75317 -- set accounting attributes for the line type
75318 --
75319 l_entered_amt_idx := 3;
75320 l_accted_amt_idx := 8;
75321 l_bflow_applied_to_amt_idx := NULL; -- 5132302
75322 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
75323 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
75324 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
75325 l_rec_acct_attrs.array_char_value(2) := p_source_12;
75326 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
75327 l_rec_acct_attrs.array_num_value(3) := p_source_18;
75328 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
75329 l_rec_acct_attrs.array_char_value(4) := p_source_15;
75330 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
75331 l_rec_acct_attrs.array_date_value(5) := p_source_19;
75332 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
75333 l_rec_acct_attrs.array_num_value(6) := p_source_20;
75334 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
75335 l_rec_acct_attrs.array_char_value(7) := p_source_21;
75336 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
75337 l_rec_acct_attrs.array_num_value(8) := p_source_22;
75338
75339 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
75340 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
75341
75342 ---------------------------------------------------------------------------------------------------------------
75343 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
75344 ---------------------------------------------------------------------------------------------------------------
75345 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
75346
75347 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
75348 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
75349
75350 IF xla_accounting_cache_pkg.GetValueChar
75351 (p_source_code => 'LEDGER_CATEGORY_CODE'
75352 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
75353 AND l_bflow_method_code = 'PRIOR_ENTRY'
75354 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
75355 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
75356 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
75357 )
75358 THEN
75359 xla_ae_lines_pkg.BflowUpgEntry
75360 (p_business_method_code => l_bflow_method_code
75361 ,p_business_class_code => l_bflow_class_code
75362 ,p_balance_type => l_balance_type_code);
75363 ELSE
75364 NULL;
75365 -- No business flow processing for business flow method of NONE.
75366 END IF;
75367
75368 --
75369 -- call analytical criteria
75370 --
75371
75372 --
75373 -- call description
75374 --
75375 -- No description or it is inherited.
75376 --
75377 -- call ADRs
75378 -- Bug 4922099
75379 --
75380 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
75381 (NVL(l_actual_upg_option, 'N') = 'O') OR
75382 (NVL(l_enc_upg_option, 'N') = 'O')
75383 )
75384 THEN
75385 NULL;
75386 --
75387 --
75388
75389 l_ccid := AcctDerRule_4(
75390 p_application_id => p_application_id
75391 , p_ae_header_id => l_ae_header_id
75392 , p_source_4 => p_source_4
75393 , x_transaction_coa_id => l_adr_transaction_coa_id
75394 , x_accounting_coa_id => l_adr_accounting_coa_id
75395 , x_value_type_code => l_adr_value_type_code
75396 , p_side => 'NA'
75397 );
75398
75399 xla_ae_lines_pkg.set_ccid(
75400 p_code_combination_id => l_ccid
75401 , p_value_type_code => l_adr_value_type_code
75402 , p_transaction_coa_id => l_adr_transaction_coa_id
75403 , p_accounting_coa_id => l_adr_accounting_coa_id
75404 , p_adr_code => 'CST_DEFAULT'
75405 , p_adr_type_code => 'S'
75406 , p_component_type => l_component_type
75407 , p_component_code => l_component_code
75408 , p_component_type_code => l_component_type_code
75409 , p_component_appl_id => l_component_appl_id
75410 , p_amb_context_code => l_amb_context_code
75411 , p_side => 'NA'
75412 );
75413
75414
75415 --
75416 --
75417 END IF;
75418 --
75419 -- Bug 4922099
75420 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
75421 (NVL(l_enc_upg_option, 'N') = 'O')
75422 ) AND
75423 (l_bflow_method_code = 'PRIOR_ENTRY')
75424 )
75425 THEN
75426 IF
75427 --
75428 1 = 2
75429 --
75430 THEN
75431 xla_accounting_err_pkg.build_message
75432 (p_appli_s_name => 'XLA'
75433 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
75434 ,p_token_1 => 'LINE_NUMBER'
75435 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
75436 ,p_token_2 => 'LINE_TYPE_NAME'
75437 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
75438 l_component_type
75439 ,l_component_code
75440 ,l_component_type_code
75441 ,l_component_appl_id
75442 ,l_amb_context_code
75443 ,l_entity_code
75444 ,l_event_class_code
75445 )
75446 ,p_token_3 => 'OWNER'
75447 ,p_value_3 => xla_lookups_pkg.get_meaning(
75448 p_lookup_type => 'XLA_OWNER_TYPE'
75449 ,p_lookup_code => l_component_type_code
75450 )
75451 ,p_token_4 => 'PRODUCT_NAME'
75452 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
75453 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
75454 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
75455 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
75456 ,p_ae_header_id => NULL
75457 );
75458
75459 IF (C_LEVEL_ERROR>= g_log_level) THEN
75460 trace
75461 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
75462 ,p_level => C_LEVEL_ERROR
75463 ,p_module => l_log_module);
75464 END IF;
75465 END IF;
75466 END IF;
75467 --
75468 --
75469 ------------------------------------------------------------------------------------------------
75470 -- 4219869 Business Flow
75471 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
75472 -- Prior Entry. Currently, the following code is always generated.
75473 ------------------------------------------------------------------------------------------------
75474 XLA_AE_LINES_PKG.ValidateCurrentLine;
75475
75476 ------------------------------------------------------------------------------------
75477 -- 4219869 Business Flow
75478 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
75479 ------------------------------------------------------------------------------------
75480 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
75481
75482 ----------------------------------------------------------------------------------
75483 -- 4219869 Business Flow
75484 -- Update journal entry status -- Need to generate this within IF <condition>
75485 ----------------------------------------------------------------------------------
75486 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
75487 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
75488 ,p_balance_type_code => l_balance_type_code
75489 );
75490
75491 -------------------------------------------------------------------------------------------
75492 -- 4262811 - Generate the Accrual Reversal lines
75493 -------------------------------------------------------------------------------------------
75494 BEGIN
75495 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
75496 (g_array_event(p_event_id).array_value_num('header_index'));
75497 IF l_acc_rev_flag IS NULL THEN
75498 l_acc_rev_flag := 'N';
75499 END IF;
75500 EXCEPTION
75501 WHEN OTHERS THEN
75502 l_acc_rev_flag := 'N';
75503 END;
75504 --
75505 IF (l_acc_rev_flag = 'Y') THEN
75506
75507 -- 4645092 ------------------------------------------------------------------------------
75508 -- To allow MPA report to determine if it should generate report process
75509 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
75510 ------------------------------------------------------------------------------------------
75511
75512 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
75513 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
75514 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
75515 -- call ADRs
75516 -- Bug 4922099
75517 --
75518 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
75519 (NVL(l_actual_upg_option, 'N') = 'O') OR
75520 (NVL(l_enc_upg_option, 'N') = 'O')
75521 )
75522 THEN
75523 NULL;
75524 --
75525 --
75526
75527 l_ccid := AcctDerRule_4(
75528 p_application_id => p_application_id
75529 , p_ae_header_id => l_ae_header_id
75530 , p_source_4 => p_source_4
75531 , x_transaction_coa_id => l_adr_transaction_coa_id
75532 , x_accounting_coa_id => l_adr_accounting_coa_id
75533 , x_value_type_code => l_adr_value_type_code
75534 , p_side => 'NA'
75535 );
75536
75537 xla_ae_lines_pkg.set_ccid(
75538 p_code_combination_id => l_ccid
75539 , p_value_type_code => l_adr_value_type_code
75540 , p_transaction_coa_id => l_adr_transaction_coa_id
75541 , p_accounting_coa_id => l_adr_accounting_coa_id
75542 , p_adr_code => 'CST_DEFAULT'
75543 , p_adr_type_code => 'S'
75544 , p_component_type => l_component_type
75545 , p_component_code => l_component_code
75546 , p_component_type_code => l_component_type_code
75547 , p_component_appl_id => l_component_appl_id
75548 , p_amb_context_code => l_amb_context_code
75549 , p_side => 'NA'
75550 );
75551
75552
75553 --
75554 --
75555 END IF;
75556
75557 --
75558 -- Update the line information that should be overwritten
75559 --
75560 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
75561 p_header_num => 1);
75562 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
75563
75564 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
75565
75566 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
75567 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
75568 END IF;
75569
75570 --
75571 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
75572 --
75573 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
75574 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
75575 ELSE
75576 ---------------------------------------------------------------------------------------------------
75577 -- 4262811a Switch Sign
75578 ---------------------------------------------------------------------------------------------------
75579 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
75580 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
75581 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
75582 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
75583 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
75584 -- 5132302
75585 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
75586 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
75587
75588 END IF;
75589
75590 -- 4955764
75591 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
75592 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
75593
75594
75595 XLA_AE_LINES_PKG.ValidateCurrentLine;
75596 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
75597
75598 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
75599 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
75600 ,p_balance_type_code => l_balance_type_code);
75601
75602 END IF;
75603
75604 -----------------------------------------------------------------------------------------
75605 -- 4262811 Multiperiod Accounting
75606 -----------------------------------------------------------------------------------------
75607 -- No MPA option is assigned.
75608
75609
75610 END IF;
75611 END IF;
75612 --
75613
75614 --
75615 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
75616 trace
75617 (p_msg => 'END of AcctLineType_138'
75618 ,p_level => C_LEVEL_PROCEDURE
75619 ,p_module => l_log_module);
75620 END IF;
75621 --
75622 EXCEPTION
75623 WHEN xla_exceptions_pkg.application_exception THEN
75624 RAISE;
75625 WHEN OTHERS THEN
75626 xla_exceptions_pkg.raise_message
75627 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_138');
75628 END AcctLineType_138;
75629 --
75630
75631 ---------------------------------------
75632 --
75633 -- PRIVATE FUNCTION
75634 -- AcctLineType_139
75635 --
75636 ---------------------------------------
75637 PROCEDURE AcctLineType_139 (
75638 p_application_id IN NUMBER
75639 ,p_event_id IN NUMBER
75640 ,p_calculate_acctd_flag IN VARCHAR2
75641 ,p_calculate_g_l_flag IN VARCHAR2
75642 ,p_actual_flag IN OUT VARCHAR2
75643 ,p_balance_type_code OUT VARCHAR2
75644 ,p_gain_or_loss_ref OUT VARCHAR2
75645
75646 --Cost Management Default Account
75647 , p_source_4 IN NUMBER
75648 --DISTRIBUTION_IDENTIFIER
75649 , p_source_11 IN NUMBER
75650 --Distribution Type
75651 , p_source_12 IN VARCHAR2
75652 , p_source_12_meaning IN VARCHAR2
75653 --Entered Currency Code
75654 , p_source_15 IN VARCHAR2
75655 --Entered Amount
75656 , p_source_18 IN NUMBER
75657 --Currency Conversion Date
75658 , p_source_19 IN DATE
75659 --Currency Conversion Rate
75660 , p_source_20 IN NUMBER
75661 --Currency Conversion Type
75662 , p_source_21 IN VARCHAR2
75663 --Accounted Amount
75664 , p_source_22 IN NUMBER
75665 --Accounting Line Type
75666 , p_source_24 IN NUMBER
75667 )
75668 IS
75669
75670 l_component_type VARCHAR2(80);
75671 l_component_code VARCHAR2(30);
75672 l_component_type_code VARCHAR2(1);
75673 l_component_appl_id INTEGER;
75674 l_amb_context_code VARCHAR2(30);
75675 l_entity_code VARCHAR2(30);
75676 l_event_class_code VARCHAR2(30);
75677 l_ae_header_id NUMBER;
75678 l_event_type_code VARCHAR2(30);
75679 l_line_definition_code VARCHAR2(30);
75680 l_line_definition_owner_code VARCHAR2(1);
75681 --
75682 -- adr variables
75683 l_segment VARCHAR2(30);
75684 l_ccid NUMBER;
75685 l_adr_transaction_coa_id NUMBER;
75686 l_adr_accounting_coa_id NUMBER;
75687 l_adr_flexfield_segment_code VARCHAR2(30);
75688 l_adr_flex_value_set_id NUMBER;
75689 l_adr_value_type_code VARCHAR2(30);
75690 l_adr_value_combination_id NUMBER;
75691 l_adr_value_segment_code VARCHAR2(30);
75692
75693 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
75694 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
75695 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
75696 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
75697
75698 -- 4262811 Variables ------------------------------------------------------------------------------------------
75699 l_entered_amt_idx NUMBER;
75700 l_accted_amt_idx NUMBER;
75701 l_acc_rev_flag VARCHAR2(1);
75702 l_accrual_line_num NUMBER;
75703 l_tmp_amt NUMBER;
75704 l_acc_rev_natural_side_code VARCHAR2(1);
75705
75706 l_num_entries NUMBER;
75707 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
75708 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
75709 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
75710 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
75711 l_recog_line_1 NUMBER;
75712 l_recog_line_2 NUMBER;
75713
75714 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
75715 l_bflow_applied_to_amt NUMBER; -- 5132302
75716 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
75717
75718 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
75719
75720 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
75721 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
75722
75723 ---------------------------------------------------------------------------------------------------------------
75724
75725
75726 --
75727 -- bulk performance
75728 --
75729 l_balance_type_code VARCHAR2(1);
75730 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
75731 l_log_module VARCHAR2(240);
75732
75733 --
75734 -- Upgrade strategy
75735 --
75736 l_actual_upg_option VARCHAR2(1);
75737 l_enc_upg_option VARCHAR2(1);
75738
75739 --
75740 BEGIN
75741 --
75742 IF g_log_enabled THEN
75743 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_139';
75744 END IF;
75745 --
75746 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
75747
75748 trace
75749 (p_msg => 'BEGIN of AcctLineType_139'
75750 ,p_level => C_LEVEL_PROCEDURE
75751 ,p_module => l_log_module);
75752
75753 END IF;
75754 --
75755 l_component_type := 'AMB_JLT';
75756 l_component_code := 'INVENTORY_VALUATION';
75757 l_component_type_code := 'S';
75758 l_component_appl_id := 707;
75759 l_amb_context_code := 'DEFAULT';
75760 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
75761 l_event_class_code := 'WIP_MTL';
75762 l_event_type_code := 'WIP_MTL_ALL';
75763 l_line_definition_owner_code := 'S';
75764 l_line_definition_code := 'WIP_MTL';
75765 --
75766 l_balance_type_code := 'A';
75767 l_segment := NULL;
75768 l_ccid := NULL;
75769 l_adr_transaction_coa_id := NULL;
75770 l_adr_accounting_coa_id := NULL;
75771 l_adr_flexfield_segment_code := NULL;
75772 l_adr_flex_value_set_id := NULL;
75773 l_adr_value_type_code := NULL;
75774 l_adr_value_combination_id := NULL;
75775 l_adr_value_segment_code := NULL;
75776
75777 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
75778 l_bflow_class_code := ''; -- 4219869 Business Flow
75779 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
75780 l_budgetary_control_flag := 'N';
75781
75782 l_bflow_applied_to_amt_idx := NULL; -- 5132302
75783 l_bflow_applied_to_amt := NULL; -- 5132302
75784 l_entered_amt_idx := NULL; -- 4262811
75785 l_accted_amt_idx := NULL; -- 4262811
75786 l_acc_rev_flag := NULL; -- 4262811
75787 l_accrual_line_num := NULL; -- 4262811
75788 l_tmp_amt := NULL; -- 4262811
75789 --
75790
75791 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
75792 l_balance_type_code <> 'B' THEN
75793 IF NVL(p_source_24,9E125) = 1
75794 THEN
75795
75796 --
75797 XLA_AE_LINES_PKG.SetNewLine;
75798
75799 p_balance_type_code := l_balance_type_code;
75800 -- set the flag so later we will know whether the gain loss line needs to be created
75801
75802 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
75803 p_actual_flag :='A';
75804 END IF;
75805
75806 --
75807 -- bulk performance
75808 --
75809 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
75810 p_header_num => 0); -- 4262811
75811 --
75812 -- set accounting line options
75813 --
75814 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
75815 p_natural_side_code => 'D'
75816 , p_gain_or_loss_flag => 'N'
75817 , p_gl_transfer_mode_code => 'S'
75818 , p_acct_entry_type_code => 'A'
75819 , p_switch_side_flag => 'Y'
75820 , p_merge_duplicate_code => 'N'
75821 );
75822 --
75823 l_acc_rev_natural_side_code := 'C'; -- 4262811
75824 --
75825 --
75826 -- set accounting line type info
75827 --
75828 xla_ae_lines_pkg.SetAcctLineType
75829 (p_component_type => l_component_type
75830 ,p_event_type_code => l_event_type_code
75831 ,p_line_definition_owner_code => l_line_definition_owner_code
75832 ,p_line_definition_code => l_line_definition_code
75833 ,p_accounting_line_code => l_component_code
75834 ,p_accounting_line_type_code => l_component_type_code
75835 ,p_accounting_line_appl_id => l_component_appl_id
75836 ,p_amb_context_code => l_amb_context_code
75837 ,p_entity_code => l_entity_code
75838 ,p_event_class_code => l_event_class_code);
75839 --
75840 -- set accounting class
75841 --
75842 xla_ae_lines_pkg.SetAcctClass(
75843 p_accounting_class_code => 'INVENTORY_VALUATION'
75844 , p_ae_header_id => l_ae_header_id
75845 );
75846
75847 --
75848 -- set rounding class
75849 --
75850 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
75851 'INVENTORY_VALUATION';
75852
75853 --
75854 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
75855 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
75856 --
75857 -- bulk performance
75858 --
75859 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
75860
75861 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
75862 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
75863
75864 -- 4955764
75865 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
75866 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
75867
75868 -- 4458381 Public Sector Enh
75869
75870 --
75871 -- set accounting attributes for the line type
75872 --
75873 l_entered_amt_idx := 3;
75874 l_accted_amt_idx := 8;
75875 l_bflow_applied_to_amt_idx := NULL; -- 5132302
75876 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
75877 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
75878 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
75879 l_rec_acct_attrs.array_char_value(2) := p_source_12;
75880 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
75881 l_rec_acct_attrs.array_num_value(3) := p_source_18;
75882 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
75883 l_rec_acct_attrs.array_char_value(4) := p_source_15;
75884 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
75885 l_rec_acct_attrs.array_date_value(5) := p_source_19;
75886 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
75887 l_rec_acct_attrs.array_num_value(6) := p_source_20;
75888 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
75889 l_rec_acct_attrs.array_char_value(7) := p_source_21;
75890 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
75891 l_rec_acct_attrs.array_num_value(8) := p_source_22;
75892
75893 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
75894 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
75895
75896 ---------------------------------------------------------------------------------------------------------------
75897 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
75898 ---------------------------------------------------------------------------------------------------------------
75899 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
75900
75901 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
75902 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
75903
75904 IF xla_accounting_cache_pkg.GetValueChar
75905 (p_source_code => 'LEDGER_CATEGORY_CODE'
75906 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
75907 AND l_bflow_method_code = 'PRIOR_ENTRY'
75908 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
75909 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
75910 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
75911 )
75912 THEN
75913 xla_ae_lines_pkg.BflowUpgEntry
75914 (p_business_method_code => l_bflow_method_code
75915 ,p_business_class_code => l_bflow_class_code
75916 ,p_balance_type => l_balance_type_code);
75917 ELSE
75918 NULL;
75919 -- No business flow processing for business flow method of NONE.
75920 END IF;
75921
75922 --
75923 -- call analytical criteria
75924 --
75925
75926 --
75927 -- call description
75928 --
75929 -- No description or it is inherited.
75930 --
75931 -- call ADRs
75932 -- Bug 4922099
75933 --
75934 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
75935 (NVL(l_actual_upg_option, 'N') = 'O') OR
75936 (NVL(l_enc_upg_option, 'N') = 'O')
75937 )
75938 THEN
75939 NULL;
75940 --
75941 --
75942
75943 l_ccid := AcctDerRule_4(
75944 p_application_id => p_application_id
75945 , p_ae_header_id => l_ae_header_id
75946 , p_source_4 => p_source_4
75947 , x_transaction_coa_id => l_adr_transaction_coa_id
75948 , x_accounting_coa_id => l_adr_accounting_coa_id
75949 , x_value_type_code => l_adr_value_type_code
75950 , p_side => 'NA'
75951 );
75952
75953 xla_ae_lines_pkg.set_ccid(
75954 p_code_combination_id => l_ccid
75955 , p_value_type_code => l_adr_value_type_code
75956 , p_transaction_coa_id => l_adr_transaction_coa_id
75957 , p_accounting_coa_id => l_adr_accounting_coa_id
75958 , p_adr_code => 'CST_DEFAULT'
75959 , p_adr_type_code => 'S'
75960 , p_component_type => l_component_type
75961 , p_component_code => l_component_code
75962 , p_component_type_code => l_component_type_code
75963 , p_component_appl_id => l_component_appl_id
75964 , p_amb_context_code => l_amb_context_code
75965 , p_side => 'NA'
75966 );
75967
75968
75969 --
75970 --
75971 END IF;
75972 --
75973 -- Bug 4922099
75974 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
75975 (NVL(l_enc_upg_option, 'N') = 'O')
75976 ) AND
75977 (l_bflow_method_code = 'PRIOR_ENTRY')
75978 )
75979 THEN
75980 IF
75981 --
75982 1 = 2
75983 --
75984 THEN
75985 xla_accounting_err_pkg.build_message
75986 (p_appli_s_name => 'XLA'
75987 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
75988 ,p_token_1 => 'LINE_NUMBER'
75989 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
75990 ,p_token_2 => 'LINE_TYPE_NAME'
75991 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
75992 l_component_type
75993 ,l_component_code
75994 ,l_component_type_code
75995 ,l_component_appl_id
75996 ,l_amb_context_code
75997 ,l_entity_code
75998 ,l_event_class_code
75999 )
76000 ,p_token_3 => 'OWNER'
76001 ,p_value_3 => xla_lookups_pkg.get_meaning(
76002 p_lookup_type => 'XLA_OWNER_TYPE'
76003 ,p_lookup_code => l_component_type_code
76004 )
76005 ,p_token_4 => 'PRODUCT_NAME'
76006 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
76007 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
76008 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
76009 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
76010 ,p_ae_header_id => NULL
76011 );
76012
76013 IF (C_LEVEL_ERROR>= g_log_level) THEN
76014 trace
76015 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
76016 ,p_level => C_LEVEL_ERROR
76017 ,p_module => l_log_module);
76018 END IF;
76019 END IF;
76020 END IF;
76021 --
76022 --
76023 ------------------------------------------------------------------------------------------------
76024 -- 4219869 Business Flow
76025 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
76026 -- Prior Entry. Currently, the following code is always generated.
76027 ------------------------------------------------------------------------------------------------
76028 XLA_AE_LINES_PKG.ValidateCurrentLine;
76029
76030 ------------------------------------------------------------------------------------
76031 -- 4219869 Business Flow
76032 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
76033 ------------------------------------------------------------------------------------
76034 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
76035
76036 ----------------------------------------------------------------------------------
76037 -- 4219869 Business Flow
76038 -- Update journal entry status -- Need to generate this within IF <condition>
76039 ----------------------------------------------------------------------------------
76040 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
76041 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
76042 ,p_balance_type_code => l_balance_type_code
76043 );
76044
76045 -------------------------------------------------------------------------------------------
76046 -- 4262811 - Generate the Accrual Reversal lines
76047 -------------------------------------------------------------------------------------------
76048 BEGIN
76049 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
76050 (g_array_event(p_event_id).array_value_num('header_index'));
76051 IF l_acc_rev_flag IS NULL THEN
76052 l_acc_rev_flag := 'N';
76053 END IF;
76054 EXCEPTION
76055 WHEN OTHERS THEN
76056 l_acc_rev_flag := 'N';
76057 END;
76058 --
76059 IF (l_acc_rev_flag = 'Y') THEN
76060
76061 -- 4645092 ------------------------------------------------------------------------------
76062 -- To allow MPA report to determine if it should generate report process
76063 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
76064 ------------------------------------------------------------------------------------------
76065
76066 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
76067 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
76068 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
76069 -- call ADRs
76070 -- Bug 4922099
76071 --
76072 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
76073 (NVL(l_actual_upg_option, 'N') = 'O') OR
76074 (NVL(l_enc_upg_option, 'N') = 'O')
76075 )
76076 THEN
76077 NULL;
76078 --
76079 --
76080
76081 l_ccid := AcctDerRule_4(
76082 p_application_id => p_application_id
76083 , p_ae_header_id => l_ae_header_id
76084 , p_source_4 => p_source_4
76085 , x_transaction_coa_id => l_adr_transaction_coa_id
76086 , x_accounting_coa_id => l_adr_accounting_coa_id
76087 , x_value_type_code => l_adr_value_type_code
76088 , p_side => 'NA'
76089 );
76090
76091 xla_ae_lines_pkg.set_ccid(
76092 p_code_combination_id => l_ccid
76093 , p_value_type_code => l_adr_value_type_code
76094 , p_transaction_coa_id => l_adr_transaction_coa_id
76095 , p_accounting_coa_id => l_adr_accounting_coa_id
76096 , p_adr_code => 'CST_DEFAULT'
76097 , p_adr_type_code => 'S'
76098 , p_component_type => l_component_type
76099 , p_component_code => l_component_code
76100 , p_component_type_code => l_component_type_code
76101 , p_component_appl_id => l_component_appl_id
76102 , p_amb_context_code => l_amb_context_code
76103 , p_side => 'NA'
76104 );
76105
76106
76107 --
76108 --
76109 END IF;
76110
76111 --
76112 -- Update the line information that should be overwritten
76113 --
76114 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
76115 p_header_num => 1);
76116 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
76117
76118 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
76119
76120 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
76121 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
76122 END IF;
76123
76124 --
76125 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
76126 --
76127 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
76128 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
76129 ELSE
76130 ---------------------------------------------------------------------------------------------------
76131 -- 4262811a Switch Sign
76132 ---------------------------------------------------------------------------------------------------
76133 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
76134 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
76135 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
76136 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
76137 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
76138 -- 5132302
76139 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
76140 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
76141
76142 END IF;
76143
76144 -- 4955764
76145 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
76146 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
76147
76148
76149 XLA_AE_LINES_PKG.ValidateCurrentLine;
76150 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
76151
76152 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
76153 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
76154 ,p_balance_type_code => l_balance_type_code);
76155
76156 END IF;
76157
76158 -----------------------------------------------------------------------------------------
76159 -- 4262811 Multiperiod Accounting
76160 -----------------------------------------------------------------------------------------
76161 -- No MPA option is assigned.
76162
76163
76164 END IF;
76165 END IF;
76166 --
76167
76168 --
76169 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
76170 trace
76171 (p_msg => 'END of AcctLineType_139'
76172 ,p_level => C_LEVEL_PROCEDURE
76173 ,p_module => l_log_module);
76174 END IF;
76175 --
76176 EXCEPTION
76177 WHEN xla_exceptions_pkg.application_exception THEN
76178 RAISE;
76179 WHEN OTHERS THEN
76180 xla_exceptions_pkg.raise_message
76181 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_139');
76182 END AcctLineType_139;
76183 --
76184
76185 ---------------------------------------
76186 --
76187 -- PRIVATE FUNCTION
76188 -- AcctLineType_140
76189 --
76190 ---------------------------------------
76191 PROCEDURE AcctLineType_140 (
76192 p_application_id IN NUMBER
76193 ,p_event_id IN NUMBER
76194 ,p_calculate_acctd_flag IN VARCHAR2
76195 ,p_calculate_g_l_flag IN VARCHAR2
76196 ,p_actual_flag IN OUT VARCHAR2
76197 ,p_balance_type_code OUT VARCHAR2
76198 ,p_gain_or_loss_ref OUT VARCHAR2
76199
76200 --Cost Management Default Account
76201 , p_source_4 IN NUMBER
76202 --Applied to Application ID
76203 , p_source_6 IN NUMBER
76204 --Applied to Distribution Link Type
76205 , p_source_7 IN VARCHAR2
76206 --Applied to Entity Code
76207 , p_source_8 IN VARCHAR2
76208 --Applied To Purchase Document Identifier
76209 , p_source_10 IN NUMBER
76210 --DISTRIBUTION_IDENTIFIER
76211 , p_source_11 IN NUMBER
76212 --Distribution Type
76213 , p_source_12 IN VARCHAR2
76214 , p_source_12_meaning IN VARCHAR2
76215 --PO Budget Account
76216 , p_source_13 IN NUMBER
76217 --Encumbrance Reversal Amount Entered
76218 , p_source_14 IN NUMBER
76219 --Entered Currency Code
76220 , p_source_15 IN VARCHAR2
76221 --Transaction Encumbrance Reversal Amount
76222 , p_source_16 IN NUMBER
76223 --Entered Amount
76224 , p_source_18 IN NUMBER
76225 --Currency Conversion Date
76226 , p_source_19 IN DATE
76227 --Currency Conversion Rate
76228 , p_source_20 IN NUMBER
76229 --Currency Conversion Type
76230 , p_source_21 IN VARCHAR2
76231 --Accounted Amount
76232 , p_source_22 IN NUMBER
76233 --Purchasing Encumbrance Type Identifier
76234 , p_source_23 IN NUMBER
76235 --Accounting Line Type
76236 , p_source_24 IN NUMBER
76237 --Costing Encumbrance Upgrade Option
76238 , p_source_27 IN VARCHAR2
76239 --TXN_PO_DISTRIBUTION_ID
76240 , p_source_28 IN NUMBER
76241 )
76242 IS
76243
76244 l_component_type VARCHAR2(80);
76245 l_component_code VARCHAR2(30);
76246 l_component_type_code VARCHAR2(1);
76247 l_component_appl_id INTEGER;
76248 l_amb_context_code VARCHAR2(30);
76249 l_entity_code VARCHAR2(30);
76250 l_event_class_code VARCHAR2(30);
76251 l_ae_header_id NUMBER;
76252 l_event_type_code VARCHAR2(30);
76253 l_line_definition_code VARCHAR2(30);
76254 l_line_definition_owner_code VARCHAR2(1);
76255 --
76256 -- adr variables
76257 l_segment VARCHAR2(30);
76258 l_ccid NUMBER;
76259 l_adr_transaction_coa_id NUMBER;
76260 l_adr_accounting_coa_id NUMBER;
76261 l_adr_flexfield_segment_code VARCHAR2(30);
76262 l_adr_flex_value_set_id NUMBER;
76263 l_adr_value_type_code VARCHAR2(30);
76264 l_adr_value_combination_id NUMBER;
76265 l_adr_value_segment_code VARCHAR2(30);
76266
76267 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
76268 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
76269 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
76270 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
76271
76272 -- 4262811 Variables ------------------------------------------------------------------------------------------
76273 l_entered_amt_idx NUMBER;
76274 l_accted_amt_idx NUMBER;
76275 l_acc_rev_flag VARCHAR2(1);
76276 l_accrual_line_num NUMBER;
76277 l_tmp_amt NUMBER;
76278 l_acc_rev_natural_side_code VARCHAR2(1);
76279
76280 l_num_entries NUMBER;
76281 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
76282 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
76283 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
76284 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
76285 l_recog_line_1 NUMBER;
76286 l_recog_line_2 NUMBER;
76287
76288 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
76289 l_bflow_applied_to_amt NUMBER; -- 5132302
76290 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
76291
76292 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
76293
76294 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
76295 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
76296
76297 ---------------------------------------------------------------------------------------------------------------
76298
76299
76300 --
76301 -- bulk performance
76302 --
76303 l_balance_type_code VARCHAR2(1);
76304 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
76305 l_log_module VARCHAR2(240);
76306
76307 --
76308 -- Upgrade strategy
76309 --
76310 l_actual_upg_option VARCHAR2(1);
76311 l_enc_upg_option VARCHAR2(1);
76312
76313 --
76314 BEGIN
76315 --
76316 IF g_log_enabled THEN
76317 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_140';
76318 END IF;
76319 --
76320 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
76321
76322 trace
76323 (p_msg => 'BEGIN of AcctLineType_140'
76324 ,p_level => C_LEVEL_PROCEDURE
76325 ,p_module => l_log_module);
76326
76327 END IF;
76328 --
76329 l_component_type := 'AMB_JLT';
76330 l_component_code := 'INVENTORY_VALUATION';
76331 l_component_type_code := 'S';
76332 l_component_appl_id := 707;
76333 l_amb_context_code := 'DEFAULT';
76334 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
76335 l_event_class_code := 'PURCHASE_ORDER';
76336 l_event_type_code := 'PURCHASE_ORDER_ALL';
76337 l_line_definition_owner_code := 'S';
76338 l_line_definition_code := 'PURCHASE_ORDER';
76339 --
76340 l_balance_type_code := 'A';
76341 l_segment := NULL;
76342 l_ccid := NULL;
76343 l_adr_transaction_coa_id := NULL;
76344 l_adr_accounting_coa_id := NULL;
76345 l_adr_flexfield_segment_code := NULL;
76346 l_adr_flex_value_set_id := NULL;
76347 l_adr_value_type_code := NULL;
76348 l_adr_value_combination_id := NULL;
76349 l_adr_value_segment_code := NULL;
76350
76351 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
76352 l_bflow_class_code := ''; -- 4219869 Business Flow
76353 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
76354 l_budgetary_control_flag := 'N';
76355
76356 l_bflow_applied_to_amt_idx := NULL; -- 5132302
76357 l_bflow_applied_to_amt := NULL; -- 5132302
76358 l_entered_amt_idx := NULL; -- 4262811
76359 l_accted_amt_idx := NULL; -- 4262811
76360 l_acc_rev_flag := NULL; -- 4262811
76361 l_accrual_line_num := NULL; -- 4262811
76362 l_tmp_amt := NULL; -- 4262811
76363 --
76364
76365 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
76366 l_balance_type_code <> 'B' THEN
76367 IF NVL(p_source_24,9E125) = 1
76368 THEN
76369
76370 --
76371 XLA_AE_LINES_PKG.SetNewLine;
76372
76373 p_balance_type_code := l_balance_type_code;
76374 -- set the flag so later we will know whether the gain loss line needs to be created
76375
76376 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
76377 p_actual_flag :='A';
76378 END IF;
76379
76380 --
76381 -- bulk performance
76382 --
76383 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
76384 p_header_num => 0); -- 4262811
76385 --
76386 -- set accounting line options
76387 --
76388 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
76389 p_natural_side_code => 'D'
76390 , p_gain_or_loss_flag => 'N'
76391 , p_gl_transfer_mode_code => 'S'
76392 , p_acct_entry_type_code => 'A'
76393 , p_switch_side_flag => 'Y'
76394 , p_merge_duplicate_code => 'N'
76395 );
76396 --
76397 l_acc_rev_natural_side_code := 'C'; -- 4262811
76398 --
76399 --
76400 -- set accounting line type info
76401 --
76402 xla_ae_lines_pkg.SetAcctLineType
76403 (p_component_type => l_component_type
76404 ,p_event_type_code => l_event_type_code
76405 ,p_line_definition_owner_code => l_line_definition_owner_code
76406 ,p_line_definition_code => l_line_definition_code
76407 ,p_accounting_line_code => l_component_code
76408 ,p_accounting_line_type_code => l_component_type_code
76409 ,p_accounting_line_appl_id => l_component_appl_id
76410 ,p_amb_context_code => l_amb_context_code
76411 ,p_entity_code => l_entity_code
76412 ,p_event_class_code => l_event_class_code);
76413 --
76414 -- set accounting class
76415 --
76416 xla_ae_lines_pkg.SetAcctClass(
76417 p_accounting_class_code => 'INVENTORY_VALUATION'
76418 , p_ae_header_id => l_ae_header_id
76419 );
76420
76421 --
76422 -- set rounding class
76423 --
76424 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
76425 'INVENTORY_VALUATION';
76426
76427 --
76428 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
76429 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
76430 --
76431 -- bulk performance
76432 --
76433 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
76434
76435 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
76436 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
76437
76438 -- 4955764
76439 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
76440 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
76441
76442 -- 4458381 Public Sector Enh
76443
76444 --
76445 -- set accounting attributes for the line type
76446 --
76447 l_entered_amt_idx := 17;
76448 l_accted_amt_idx := 22;
76449 l_bflow_applied_to_amt_idx := NULL; -- 5132302
76450 l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
76451 l_rec_acct_attrs.array_num_value(1) := p_source_6;
76452 l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
76453 l_rec_acct_attrs.array_char_value(2) := p_source_7;
76454 l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
76455 l_rec_acct_attrs.array_char_value(3) := p_source_8;
76456 l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
76457 l_rec_acct_attrs.array_num_value(4) := to_char(p_source_28);
76458 l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
76459 l_rec_acct_attrs.array_num_value(5) := to_char(p_source_10);
76460 l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
76461 l_rec_acct_attrs.array_num_value(6) := to_char(p_source_11);
76462 l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
76463 l_rec_acct_attrs.array_char_value(7) := p_source_12;
76464 l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
76465 l_rec_acct_attrs.array_num_value(8) := TO_NUMBER(p_source_13);
76466 l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
76467 l_rec_acct_attrs.array_num_value(9) := p_source_14;
76468 l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
76469 l_rec_acct_attrs.array_char_value(10) := p_source_15;
76470 l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
76471 l_rec_acct_attrs.array_num_value(11) := p_source_16;
76472 l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
76473 l_rec_acct_attrs.array_num_value(12) := TO_NUMBER(p_source_13);
76474 l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
76475 l_rec_acct_attrs.array_num_value(13) := p_source_14;
76476 l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
76477 l_rec_acct_attrs.array_char_value(14) := p_source_15;
76478 l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
76479 l_rec_acct_attrs.array_num_value(15) := p_source_16;
76480 l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
76481 l_rec_acct_attrs.array_char_value(16) := p_source_27;
76482 l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
76483 l_rec_acct_attrs.array_num_value(17) := p_source_18;
76484 l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
76485 l_rec_acct_attrs.array_char_value(18) := p_source_15;
76486 l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
76487 l_rec_acct_attrs.array_date_value(19) := p_source_19;
76488 l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
76489 l_rec_acct_attrs.array_num_value(20) := p_source_20;
76490 l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
76491 l_rec_acct_attrs.array_char_value(21) := p_source_21;
76492 l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
76493 l_rec_acct_attrs.array_num_value(22) := p_source_22;
76494 l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
76495 l_rec_acct_attrs.array_num_value(23) := p_source_23;
76496 l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
76497 l_rec_acct_attrs.array_num_value(24) := p_source_23;
76498
76499 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
76500 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
76501
76502 ---------------------------------------------------------------------------------------------------------------
76503 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
76504 ---------------------------------------------------------------------------------------------------------------
76505 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
76506
76507 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
76508 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
76509
76510 IF xla_accounting_cache_pkg.GetValueChar
76511 (p_source_code => 'LEDGER_CATEGORY_CODE'
76512 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
76513 AND l_bflow_method_code = 'PRIOR_ENTRY'
76514 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
76515 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
76516 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
76517 )
76518 THEN
76519 xla_ae_lines_pkg.BflowUpgEntry
76520 (p_business_method_code => l_bflow_method_code
76521 ,p_business_class_code => l_bflow_class_code
76522 ,p_balance_type => l_balance_type_code);
76523 ELSE
76524 NULL;
76525 -- No business flow processing for business flow method of NONE.
76526 END IF;
76527
76528 --
76529 -- call analytical criteria
76530 --
76531
76532 --
76533 -- call description
76534 --
76535 -- No description or it is inherited.
76536 --
76537 -- call ADRs
76538 -- Bug 4922099
76539 --
76540 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
76541 (NVL(l_actual_upg_option, 'N') = 'O') OR
76542 (NVL(l_enc_upg_option, 'N') = 'O')
76543 )
76544 THEN
76545 NULL;
76546 --
76547 --
76548
76549 l_ccid := AcctDerRule_4(
76550 p_application_id => p_application_id
76551 , p_ae_header_id => l_ae_header_id
76552 , p_source_4 => p_source_4
76553 , x_transaction_coa_id => l_adr_transaction_coa_id
76554 , x_accounting_coa_id => l_adr_accounting_coa_id
76555 , x_value_type_code => l_adr_value_type_code
76556 , p_side => 'NA'
76557 );
76558
76559 xla_ae_lines_pkg.set_ccid(
76560 p_code_combination_id => l_ccid
76561 , p_value_type_code => l_adr_value_type_code
76562 , p_transaction_coa_id => l_adr_transaction_coa_id
76563 , p_accounting_coa_id => l_adr_accounting_coa_id
76564 , p_adr_code => 'CST_DEFAULT'
76565 , p_adr_type_code => 'S'
76566 , p_component_type => l_component_type
76567 , p_component_code => l_component_code
76568 , p_component_type_code => l_component_type_code
76569 , p_component_appl_id => l_component_appl_id
76570 , p_amb_context_code => l_amb_context_code
76571 , p_side => 'NA'
76572 );
76573
76574
76575 --
76576 --
76577 END IF;
76578 --
76579 -- Bug 4922099
76580 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
76581 (NVL(l_enc_upg_option, 'N') = 'O')
76582 ) AND
76583 (l_bflow_method_code = 'PRIOR_ENTRY')
76584 )
76585 THEN
76586 IF
76587 --
76588 1 = 2
76589 --
76590 THEN
76591 xla_accounting_err_pkg.build_message
76592 (p_appli_s_name => 'XLA'
76593 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
76594 ,p_token_1 => 'LINE_NUMBER'
76595 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
76596 ,p_token_2 => 'LINE_TYPE_NAME'
76597 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
76598 l_component_type
76599 ,l_component_code
76600 ,l_component_type_code
76601 ,l_component_appl_id
76602 ,l_amb_context_code
76603 ,l_entity_code
76604 ,l_event_class_code
76605 )
76606 ,p_token_3 => 'OWNER'
76607 ,p_value_3 => xla_lookups_pkg.get_meaning(
76608 p_lookup_type => 'XLA_OWNER_TYPE'
76609 ,p_lookup_code => l_component_type_code
76610 )
76611 ,p_token_4 => 'PRODUCT_NAME'
76612 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
76613 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
76614 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
76615 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
76616 ,p_ae_header_id => NULL
76617 );
76618
76619 IF (C_LEVEL_ERROR>= g_log_level) THEN
76620 trace
76621 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
76622 ,p_level => C_LEVEL_ERROR
76623 ,p_module => l_log_module);
76624 END IF;
76625 END IF;
76626 END IF;
76627 --
76628 --
76629 ------------------------------------------------------------------------------------------------
76630 -- 4219869 Business Flow
76631 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
76632 -- Prior Entry. Currently, the following code is always generated.
76633 ------------------------------------------------------------------------------------------------
76634 XLA_AE_LINES_PKG.ValidateCurrentLine;
76635
76636 ------------------------------------------------------------------------------------
76637 -- 4219869 Business Flow
76638 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
76639 ------------------------------------------------------------------------------------
76640 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
76641
76642 ----------------------------------------------------------------------------------
76643 -- 4219869 Business Flow
76644 -- Update journal entry status -- Need to generate this within IF <condition>
76645 ----------------------------------------------------------------------------------
76646 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
76647 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
76648 ,p_balance_type_code => l_balance_type_code
76649 );
76650
76651 -------------------------------------------------------------------------------------------
76652 -- 4262811 - Generate the Accrual Reversal lines
76653 -------------------------------------------------------------------------------------------
76654 BEGIN
76655 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
76656 (g_array_event(p_event_id).array_value_num('header_index'));
76657 IF l_acc_rev_flag IS NULL THEN
76658 l_acc_rev_flag := 'N';
76659 END IF;
76660 EXCEPTION
76661 WHEN OTHERS THEN
76662 l_acc_rev_flag := 'N';
76663 END;
76664 --
76665 IF (l_acc_rev_flag = 'Y') THEN
76666
76667 -- 4645092 ------------------------------------------------------------------------------
76668 -- To allow MPA report to determine if it should generate report process
76669 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
76670 ------------------------------------------------------------------------------------------
76671
76672 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
76673 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
76674 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
76675 -- call ADRs
76676 -- Bug 4922099
76677 --
76678 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
76679 (NVL(l_actual_upg_option, 'N') = 'O') OR
76680 (NVL(l_enc_upg_option, 'N') = 'O')
76681 )
76682 THEN
76683 NULL;
76684 --
76685 --
76686
76687 l_ccid := AcctDerRule_4(
76688 p_application_id => p_application_id
76689 , p_ae_header_id => l_ae_header_id
76690 , p_source_4 => p_source_4
76691 , x_transaction_coa_id => l_adr_transaction_coa_id
76692 , x_accounting_coa_id => l_adr_accounting_coa_id
76693 , x_value_type_code => l_adr_value_type_code
76694 , p_side => 'NA'
76695 );
76696
76697 xla_ae_lines_pkg.set_ccid(
76698 p_code_combination_id => l_ccid
76699 , p_value_type_code => l_adr_value_type_code
76700 , p_transaction_coa_id => l_adr_transaction_coa_id
76701 , p_accounting_coa_id => l_adr_accounting_coa_id
76702 , p_adr_code => 'CST_DEFAULT'
76703 , p_adr_type_code => 'S'
76704 , p_component_type => l_component_type
76705 , p_component_code => l_component_code
76706 , p_component_type_code => l_component_type_code
76707 , p_component_appl_id => l_component_appl_id
76708 , p_amb_context_code => l_amb_context_code
76709 , p_side => 'NA'
76710 );
76711
76712
76713 --
76714 --
76715 END IF;
76716
76717 --
76718 -- Update the line information that should be overwritten
76719 --
76720 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
76721 p_header_num => 1);
76722 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
76723
76724 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
76725
76726 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
76727 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
76728 END IF;
76729
76730 --
76731 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
76732 --
76733 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
76734 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
76735 ELSE
76736 ---------------------------------------------------------------------------------------------------
76737 -- 4262811a Switch Sign
76738 ---------------------------------------------------------------------------------------------------
76739 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
76740 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
76741 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
76742 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
76743 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
76744 -- 5132302
76745 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
76746 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
76747
76748 END IF;
76749
76750 -- 4955764
76751 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
76752 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
76753
76754
76755 XLA_AE_LINES_PKG.ValidateCurrentLine;
76756 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
76757
76758 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
76759 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
76760 ,p_balance_type_code => l_balance_type_code);
76761
76762 END IF;
76763
76764 -----------------------------------------------------------------------------------------
76765 -- 4262811 Multiperiod Accounting
76766 -----------------------------------------------------------------------------------------
76767 -- No MPA option is assigned.
76768
76769
76770 END IF;
76771 END IF;
76772 --
76773
76774 --
76775 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
76776 trace
76777 (p_msg => 'END of AcctLineType_140'
76778 ,p_level => C_LEVEL_PROCEDURE
76779 ,p_module => l_log_module);
76780 END IF;
76781 --
76782 EXCEPTION
76783 WHEN xla_exceptions_pkg.application_exception THEN
76784 RAISE;
76785 WHEN OTHERS THEN
76786 xla_exceptions_pkg.raise_message
76787 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_140');
76788 END AcctLineType_140;
76789 --
76790
76791 ---------------------------------------
76792 --
76793 -- PRIVATE FUNCTION
76794 -- AcctLineType_141
76795 --
76796 ---------------------------------------
76797 PROCEDURE AcctLineType_141 (
76798 p_application_id IN NUMBER
76799 ,p_event_id IN NUMBER
76800 ,p_calculate_acctd_flag IN VARCHAR2
76801 ,p_calculate_g_l_flag IN VARCHAR2
76802 ,p_actual_flag IN OUT VARCHAR2
76803 ,p_balance_type_code OUT VARCHAR2
76804 ,p_gain_or_loss_ref OUT VARCHAR2
76805
76806 --Cost Management Default Account
76807 , p_source_4 IN NUMBER
76808 --DISTRIBUTION_IDENTIFIER
76809 , p_source_11 IN NUMBER
76810 --Distribution Type
76811 , p_source_12 IN VARCHAR2
76812 , p_source_12_meaning IN VARCHAR2
76813 --Entered Currency Code
76814 , p_source_15 IN VARCHAR2
76815 --Entered Amount
76816 , p_source_18 IN NUMBER
76817 --Currency Conversion Date
76818 , p_source_19 IN DATE
76819 --Currency Conversion Rate
76820 , p_source_20 IN NUMBER
76821 --Currency Conversion Type
76822 , p_source_21 IN VARCHAR2
76823 --Accounted Amount
76824 , p_source_22 IN NUMBER
76825 --Accounting Line Type
76826 , p_source_24 IN NUMBER
76827 )
76828 IS
76829
76830 l_component_type VARCHAR2(80);
76831 l_component_code VARCHAR2(30);
76832 l_component_type_code VARCHAR2(1);
76833 l_component_appl_id INTEGER;
76834 l_amb_context_code VARCHAR2(30);
76835 l_entity_code VARCHAR2(30);
76836 l_event_class_code VARCHAR2(30);
76837 l_ae_header_id NUMBER;
76838 l_event_type_code VARCHAR2(30);
76839 l_line_definition_code VARCHAR2(30);
76840 l_line_definition_owner_code VARCHAR2(1);
76841 --
76842 -- adr variables
76843 l_segment VARCHAR2(30);
76844 l_ccid NUMBER;
76845 l_adr_transaction_coa_id NUMBER;
76846 l_adr_accounting_coa_id NUMBER;
76847 l_adr_flexfield_segment_code VARCHAR2(30);
76848 l_adr_flex_value_set_id NUMBER;
76849 l_adr_value_type_code VARCHAR2(30);
76850 l_adr_value_combination_id NUMBER;
76851 l_adr_value_segment_code VARCHAR2(30);
76852
76853 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
76854 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
76855 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
76856 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
76857
76858 -- 4262811 Variables ------------------------------------------------------------------------------------------
76859 l_entered_amt_idx NUMBER;
76860 l_accted_amt_idx NUMBER;
76861 l_acc_rev_flag VARCHAR2(1);
76862 l_accrual_line_num NUMBER;
76863 l_tmp_amt NUMBER;
76864 l_acc_rev_natural_side_code VARCHAR2(1);
76865
76866 l_num_entries NUMBER;
76867 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
76868 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
76869 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
76870 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
76871 l_recog_line_1 NUMBER;
76872 l_recog_line_2 NUMBER;
76873
76874 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
76875 l_bflow_applied_to_amt NUMBER; -- 5132302
76876 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
76877
76878 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
76879
76880 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
76881 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
76882
76883 ---------------------------------------------------------------------------------------------------------------
76884
76885
76886 --
76887 -- bulk performance
76888 --
76889 l_balance_type_code VARCHAR2(1);
76890 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
76891 l_log_module VARCHAR2(240);
76892
76893 --
76894 -- Upgrade strategy
76895 --
76896 l_actual_upg_option VARCHAR2(1);
76897 l_enc_upg_option VARCHAR2(1);
76898
76899 --
76900 BEGIN
76901 --
76902 IF g_log_enabled THEN
76903 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_141';
76904 END IF;
76905 --
76906 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
76907
76908 trace
76909 (p_msg => 'BEGIN of AcctLineType_141'
76910 ,p_level => C_LEVEL_PROCEDURE
76911 ,p_module => l_log_module);
76912
76913 END IF;
76914 --
76915 l_component_type := 'AMB_JLT';
76916 l_component_code := 'INVENTORY_VALUATION';
76917 l_component_type_code := 'S';
76918 l_component_appl_id := 707;
76919 l_amb_context_code := 'DEFAULT';
76920 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
76921 l_event_class_code := 'INT_ORDER_TO_EXP';
76922 l_event_type_code := 'INT_ORDER_TO_EXP_ALL';
76923 l_line_definition_owner_code := 'S';
76924 l_line_definition_code := 'INT_ORDER_TO_EXP';
76925 --
76926 l_balance_type_code := 'A';
76927 l_segment := NULL;
76928 l_ccid := NULL;
76929 l_adr_transaction_coa_id := NULL;
76930 l_adr_accounting_coa_id := NULL;
76931 l_adr_flexfield_segment_code := NULL;
76932 l_adr_flex_value_set_id := NULL;
76933 l_adr_value_type_code := NULL;
76934 l_adr_value_combination_id := NULL;
76935 l_adr_value_segment_code := NULL;
76936
76937 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
76938 l_bflow_class_code := ''; -- 4219869 Business Flow
76939 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
76940 l_budgetary_control_flag := 'N';
76941
76942 l_bflow_applied_to_amt_idx := NULL; -- 5132302
76943 l_bflow_applied_to_amt := NULL; -- 5132302
76944 l_entered_amt_idx := NULL; -- 4262811
76945 l_accted_amt_idx := NULL; -- 4262811
76946 l_acc_rev_flag := NULL; -- 4262811
76947 l_accrual_line_num := NULL; -- 4262811
76948 l_tmp_amt := NULL; -- 4262811
76949 --
76950
76951 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
76952 l_balance_type_code <> 'B' THEN
76953 IF NVL(p_source_24,9E125) = 1
76954 THEN
76955
76956 --
76957 XLA_AE_LINES_PKG.SetNewLine;
76958
76959 p_balance_type_code := l_balance_type_code;
76960 -- set the flag so later we will know whether the gain loss line needs to be created
76961
76962 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
76963 p_actual_flag :='A';
76964 END IF;
76965
76966 --
76967 -- bulk performance
76968 --
76969 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
76970 p_header_num => 0); -- 4262811
76971 --
76972 -- set accounting line options
76973 --
76974 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
76975 p_natural_side_code => 'D'
76976 , p_gain_or_loss_flag => 'N'
76977 , p_gl_transfer_mode_code => 'S'
76978 , p_acct_entry_type_code => 'A'
76979 , p_switch_side_flag => 'Y'
76980 , p_merge_duplicate_code => 'N'
76981 );
76982 --
76983 l_acc_rev_natural_side_code := 'C'; -- 4262811
76984 --
76985 --
76986 -- set accounting line type info
76987 --
76988 xla_ae_lines_pkg.SetAcctLineType
76989 (p_component_type => l_component_type
76990 ,p_event_type_code => l_event_type_code
76991 ,p_line_definition_owner_code => l_line_definition_owner_code
76992 ,p_line_definition_code => l_line_definition_code
76993 ,p_accounting_line_code => l_component_code
76994 ,p_accounting_line_type_code => l_component_type_code
76995 ,p_accounting_line_appl_id => l_component_appl_id
76996 ,p_amb_context_code => l_amb_context_code
76997 ,p_entity_code => l_entity_code
76998 ,p_event_class_code => l_event_class_code);
76999 --
77000 -- set accounting class
77001 --
77002 xla_ae_lines_pkg.SetAcctClass(
77003 p_accounting_class_code => 'INVENTORY_VALUATION'
77004 , p_ae_header_id => l_ae_header_id
77005 );
77006
77007 --
77008 -- set rounding class
77009 --
77010 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
77011 'INVENTORY_VALUATION';
77012
77013 --
77014 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
77015 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
77016 --
77017 -- bulk performance
77018 --
77019 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
77020
77021 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
77022 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
77023
77024 -- 4955764
77025 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
77026 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
77027
77028 -- 4458381 Public Sector Enh
77029
77030 --
77031 -- set accounting attributes for the line type
77032 --
77033 l_entered_amt_idx := 3;
77034 l_accted_amt_idx := 8;
77035 l_bflow_applied_to_amt_idx := NULL; -- 5132302
77036 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
77037 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
77038 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
77039 l_rec_acct_attrs.array_char_value(2) := p_source_12;
77040 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
77041 l_rec_acct_attrs.array_num_value(3) := p_source_18;
77042 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
77043 l_rec_acct_attrs.array_char_value(4) := p_source_15;
77044 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
77045 l_rec_acct_attrs.array_date_value(5) := p_source_19;
77046 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
77047 l_rec_acct_attrs.array_num_value(6) := p_source_20;
77048 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
77049 l_rec_acct_attrs.array_char_value(7) := p_source_21;
77050 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
77051 l_rec_acct_attrs.array_num_value(8) := p_source_22;
77052
77053 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
77054 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
77055
77056 ---------------------------------------------------------------------------------------------------------------
77057 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
77058 ---------------------------------------------------------------------------------------------------------------
77059 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
77060
77061 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
77062 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
77063
77064 IF xla_accounting_cache_pkg.GetValueChar
77065 (p_source_code => 'LEDGER_CATEGORY_CODE'
77066 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
77067 AND l_bflow_method_code = 'PRIOR_ENTRY'
77068 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
77069 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
77070 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
77071 )
77072 THEN
77073 xla_ae_lines_pkg.BflowUpgEntry
77074 (p_business_method_code => l_bflow_method_code
77075 ,p_business_class_code => l_bflow_class_code
77076 ,p_balance_type => l_balance_type_code);
77077 ELSE
77078 NULL;
77079 -- No business flow processing for business flow method of NONE.
77080 END IF;
77081
77082 --
77083 -- call analytical criteria
77084 --
77085
77086 --
77087 -- call description
77088 --
77089 -- No description or it is inherited.
77090 --
77091 -- call ADRs
77092 -- Bug 4922099
77093 --
77094 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
77095 (NVL(l_actual_upg_option, 'N') = 'O') OR
77096 (NVL(l_enc_upg_option, 'N') = 'O')
77097 )
77098 THEN
77099 NULL;
77100 --
77101 --
77102
77103 l_ccid := AcctDerRule_4(
77104 p_application_id => p_application_id
77105 , p_ae_header_id => l_ae_header_id
77106 , p_source_4 => p_source_4
77107 , x_transaction_coa_id => l_adr_transaction_coa_id
77108 , x_accounting_coa_id => l_adr_accounting_coa_id
77109 , x_value_type_code => l_adr_value_type_code
77110 , p_side => 'NA'
77111 );
77112
77113 xla_ae_lines_pkg.set_ccid(
77114 p_code_combination_id => l_ccid
77115 , p_value_type_code => l_adr_value_type_code
77116 , p_transaction_coa_id => l_adr_transaction_coa_id
77117 , p_accounting_coa_id => l_adr_accounting_coa_id
77118 , p_adr_code => 'CST_DEFAULT'
77119 , p_adr_type_code => 'S'
77120 , p_component_type => l_component_type
77121 , p_component_code => l_component_code
77122 , p_component_type_code => l_component_type_code
77123 , p_component_appl_id => l_component_appl_id
77124 , p_amb_context_code => l_amb_context_code
77125 , p_side => 'NA'
77126 );
77127
77128
77129 --
77130 --
77131 END IF;
77132 --
77133 -- Bug 4922099
77134 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
77135 (NVL(l_enc_upg_option, 'N') = 'O')
77136 ) AND
77137 (l_bflow_method_code = 'PRIOR_ENTRY')
77138 )
77139 THEN
77140 IF
77141 --
77142 1 = 2
77143 --
77144 THEN
77145 xla_accounting_err_pkg.build_message
77146 (p_appli_s_name => 'XLA'
77147 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
77148 ,p_token_1 => 'LINE_NUMBER'
77149 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
77150 ,p_token_2 => 'LINE_TYPE_NAME'
77151 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
77152 l_component_type
77153 ,l_component_code
77154 ,l_component_type_code
77155 ,l_component_appl_id
77156 ,l_amb_context_code
77157 ,l_entity_code
77158 ,l_event_class_code
77159 )
77160 ,p_token_3 => 'OWNER'
77161 ,p_value_3 => xla_lookups_pkg.get_meaning(
77162 p_lookup_type => 'XLA_OWNER_TYPE'
77163 ,p_lookup_code => l_component_type_code
77164 )
77165 ,p_token_4 => 'PRODUCT_NAME'
77166 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
77167 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
77168 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
77169 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
77170 ,p_ae_header_id => NULL
77171 );
77172
77173 IF (C_LEVEL_ERROR>= g_log_level) THEN
77174 trace
77175 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
77176 ,p_level => C_LEVEL_ERROR
77177 ,p_module => l_log_module);
77178 END IF;
77179 END IF;
77180 END IF;
77181 --
77182 --
77183 ------------------------------------------------------------------------------------------------
77184 -- 4219869 Business Flow
77185 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
77186 -- Prior Entry. Currently, the following code is always generated.
77187 ------------------------------------------------------------------------------------------------
77188 XLA_AE_LINES_PKG.ValidateCurrentLine;
77189
77190 ------------------------------------------------------------------------------------
77191 -- 4219869 Business Flow
77192 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
77193 ------------------------------------------------------------------------------------
77194 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
77195
77196 ----------------------------------------------------------------------------------
77197 -- 4219869 Business Flow
77198 -- Update journal entry status -- Need to generate this within IF <condition>
77199 ----------------------------------------------------------------------------------
77200 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
77201 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
77202 ,p_balance_type_code => l_balance_type_code
77203 );
77204
77205 -------------------------------------------------------------------------------------------
77206 -- 4262811 - Generate the Accrual Reversal lines
77207 -------------------------------------------------------------------------------------------
77208 BEGIN
77209 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
77210 (g_array_event(p_event_id).array_value_num('header_index'));
77211 IF l_acc_rev_flag IS NULL THEN
77212 l_acc_rev_flag := 'N';
77213 END IF;
77214 EXCEPTION
77215 WHEN OTHERS THEN
77216 l_acc_rev_flag := 'N';
77217 END;
77218 --
77219 IF (l_acc_rev_flag = 'Y') THEN
77220
77221 -- 4645092 ------------------------------------------------------------------------------
77222 -- To allow MPA report to determine if it should generate report process
77223 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
77224 ------------------------------------------------------------------------------------------
77225
77226 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
77227 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
77228 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
77229 -- call ADRs
77230 -- Bug 4922099
77231 --
77232 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
77233 (NVL(l_actual_upg_option, 'N') = 'O') OR
77234 (NVL(l_enc_upg_option, 'N') = 'O')
77235 )
77236 THEN
77237 NULL;
77238 --
77239 --
77240
77241 l_ccid := AcctDerRule_4(
77242 p_application_id => p_application_id
77243 , p_ae_header_id => l_ae_header_id
77244 , p_source_4 => p_source_4
77245 , x_transaction_coa_id => l_adr_transaction_coa_id
77246 , x_accounting_coa_id => l_adr_accounting_coa_id
77247 , x_value_type_code => l_adr_value_type_code
77248 , p_side => 'NA'
77249 );
77250
77251 xla_ae_lines_pkg.set_ccid(
77252 p_code_combination_id => l_ccid
77253 , p_value_type_code => l_adr_value_type_code
77254 , p_transaction_coa_id => l_adr_transaction_coa_id
77255 , p_accounting_coa_id => l_adr_accounting_coa_id
77256 , p_adr_code => 'CST_DEFAULT'
77257 , p_adr_type_code => 'S'
77258 , p_component_type => l_component_type
77259 , p_component_code => l_component_code
77260 , p_component_type_code => l_component_type_code
77261 , p_component_appl_id => l_component_appl_id
77262 , p_amb_context_code => l_amb_context_code
77263 , p_side => 'NA'
77264 );
77265
77266
77267 --
77268 --
77269 END IF;
77270
77271 --
77272 -- Update the line information that should be overwritten
77273 --
77274 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
77275 p_header_num => 1);
77276 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
77277
77278 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
77279
77280 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
77281 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
77282 END IF;
77283
77284 --
77285 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
77286 --
77287 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
77288 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
77289 ELSE
77290 ---------------------------------------------------------------------------------------------------
77291 -- 4262811a Switch Sign
77292 ---------------------------------------------------------------------------------------------------
77293 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
77294 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
77295 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
77296 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
77297 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
77298 -- 5132302
77299 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
77300 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
77301
77302 END IF;
77303
77304 -- 4955764
77305 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
77306 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
77307
77308
77309 XLA_AE_LINES_PKG.ValidateCurrentLine;
77310 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
77311
77312 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
77313 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
77314 ,p_balance_type_code => l_balance_type_code);
77315
77316 END IF;
77317
77318 -----------------------------------------------------------------------------------------
77319 -- 4262811 Multiperiod Accounting
77320 -----------------------------------------------------------------------------------------
77321 -- No MPA option is assigned.
77322
77323
77324 END IF;
77325 END IF;
77326 --
77327
77328 --
77329 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
77330 trace
77331 (p_msg => 'END of AcctLineType_141'
77332 ,p_level => C_LEVEL_PROCEDURE
77333 ,p_module => l_log_module);
77334 END IF;
77335 --
77336 EXCEPTION
77337 WHEN xla_exceptions_pkg.application_exception THEN
77338 RAISE;
77339 WHEN OTHERS THEN
77340 xla_exceptions_pkg.raise_message
77341 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_141');
77342 END AcctLineType_141;
77343 --
77344
77345 ---------------------------------------
77346 --
77347 -- PRIVATE FUNCTION
77348 -- AcctLineType_142
77349 --
77350 ---------------------------------------
77351 PROCEDURE AcctLineType_142 (
77352 p_application_id IN NUMBER
77353 ,p_event_id IN NUMBER
77354 ,p_calculate_acctd_flag IN VARCHAR2
77355 ,p_calculate_g_l_flag IN VARCHAR2
77356 ,p_actual_flag IN OUT VARCHAR2
77357 ,p_balance_type_code OUT VARCHAR2
77358 ,p_gain_or_loss_ref OUT VARCHAR2
77359
77360 --Cost Management Default Account
77361 , p_source_4 IN NUMBER
77362 --DISTRIBUTION_IDENTIFIER
77363 , p_source_11 IN NUMBER
77364 --Distribution Type
77365 , p_source_12 IN VARCHAR2
77366 , p_source_12_meaning IN VARCHAR2
77367 --Entered Currency Code
77368 , p_source_15 IN VARCHAR2
77369 --Entered Amount
77370 , p_source_18 IN NUMBER
77371 --Currency Conversion Date
77372 , p_source_19 IN DATE
77373 --Currency Conversion Rate
77374 , p_source_20 IN NUMBER
77375 --Currency Conversion Type
77376 , p_source_21 IN VARCHAR2
77377 --Accounted Amount
77378 , p_source_22 IN NUMBER
77379 --Accounting Line Type
77380 , p_source_24 IN NUMBER
77381 )
77382 IS
77383
77384 l_component_type VARCHAR2(80);
77385 l_component_code VARCHAR2(30);
77386 l_component_type_code VARCHAR2(1);
77387 l_component_appl_id INTEGER;
77388 l_amb_context_code VARCHAR2(30);
77389 l_entity_code VARCHAR2(30);
77390 l_event_class_code VARCHAR2(30);
77391 l_ae_header_id NUMBER;
77392 l_event_type_code VARCHAR2(30);
77393 l_line_definition_code VARCHAR2(30);
77394 l_line_definition_owner_code VARCHAR2(1);
77395 --
77396 -- adr variables
77397 l_segment VARCHAR2(30);
77398 l_ccid NUMBER;
77399 l_adr_transaction_coa_id NUMBER;
77400 l_adr_accounting_coa_id NUMBER;
77401 l_adr_flexfield_segment_code VARCHAR2(30);
77402 l_adr_flex_value_set_id NUMBER;
77403 l_adr_value_type_code VARCHAR2(30);
77404 l_adr_value_combination_id NUMBER;
77405 l_adr_value_segment_code VARCHAR2(30);
77406
77407 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
77408 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
77409 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
77410 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
77411
77412 -- 4262811 Variables ------------------------------------------------------------------------------------------
77413 l_entered_amt_idx NUMBER;
77414 l_accted_amt_idx NUMBER;
77415 l_acc_rev_flag VARCHAR2(1);
77416 l_accrual_line_num NUMBER;
77417 l_tmp_amt NUMBER;
77418 l_acc_rev_natural_side_code VARCHAR2(1);
77419
77420 l_num_entries NUMBER;
77421 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
77422 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
77423 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
77424 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
77425 l_recog_line_1 NUMBER;
77426 l_recog_line_2 NUMBER;
77427
77428 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
77429 l_bflow_applied_to_amt NUMBER; -- 5132302
77430 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
77431
77432 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
77433
77434 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
77435 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
77436
77437 ---------------------------------------------------------------------------------------------------------------
77438
77439
77440 --
77441 -- bulk performance
77442 --
77443 l_balance_type_code VARCHAR2(1);
77444 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
77445 l_log_module VARCHAR2(240);
77446
77447 --
77448 -- Upgrade strategy
77449 --
77450 l_actual_upg_option VARCHAR2(1);
77451 l_enc_upg_option VARCHAR2(1);
77452
77453 --
77454 BEGIN
77455 --
77456 IF g_log_enabled THEN
77457 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_142';
77458 END IF;
77459 --
77460 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
77461
77462 trace
77463 (p_msg => 'BEGIN of AcctLineType_142'
77464 ,p_level => C_LEVEL_PROCEDURE
77465 ,p_module => l_log_module);
77466
77467 END IF;
77468 --
77469 l_component_type := 'AMB_JLT';
77470 l_component_code := 'INVENTORY_VALUATION';
77471 l_component_type_code := 'S';
77472 l_component_appl_id := 707;
77473 l_amb_context_code := 'DEFAULT';
77474 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
77475 l_event_class_code := 'USER_DEFINE';
77476 l_event_type_code := 'UFOB_RCPT_SENDER_SHIP';
77477 l_line_definition_owner_code := 'S';
77478 l_line_definition_code := 'USER_FOB_RCPT_SENDER_SHIP';
77479 --
77480 l_balance_type_code := 'A';
77481 l_segment := NULL;
77482 l_ccid := NULL;
77483 l_adr_transaction_coa_id := NULL;
77484 l_adr_accounting_coa_id := NULL;
77485 l_adr_flexfield_segment_code := NULL;
77486 l_adr_flex_value_set_id := NULL;
77487 l_adr_value_type_code := NULL;
77488 l_adr_value_combination_id := NULL;
77489 l_adr_value_segment_code := NULL;
77490
77491 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
77492 l_bflow_class_code := ''; -- 4219869 Business Flow
77493 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
77494 l_budgetary_control_flag := 'N';
77495
77496 l_bflow_applied_to_amt_idx := NULL; -- 5132302
77497 l_bflow_applied_to_amt := NULL; -- 5132302
77498 l_entered_amt_idx := NULL; -- 4262811
77499 l_accted_amt_idx := NULL; -- 4262811
77500 l_acc_rev_flag := NULL; -- 4262811
77501 l_accrual_line_num := NULL; -- 4262811
77502 l_tmp_amt := NULL; -- 4262811
77503 --
77504
77505 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
77506 l_balance_type_code <> 'B' THEN
77507 IF NVL(p_source_24,9E125) = 1
77508 THEN
77509
77510 --
77511 XLA_AE_LINES_PKG.SetNewLine;
77512
77513 p_balance_type_code := l_balance_type_code;
77514 -- set the flag so later we will know whether the gain loss line needs to be created
77515
77516 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
77517 p_actual_flag :='A';
77518 END IF;
77519
77520 --
77521 -- bulk performance
77522 --
77523 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
77524 p_header_num => 0); -- 4262811
77525 --
77526 -- set accounting line options
77527 --
77528 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
77529 p_natural_side_code => 'D'
77530 , p_gain_or_loss_flag => 'N'
77531 , p_gl_transfer_mode_code => 'S'
77532 , p_acct_entry_type_code => 'A'
77533 , p_switch_side_flag => 'Y'
77534 , p_merge_duplicate_code => 'N'
77535 );
77536 --
77537 l_acc_rev_natural_side_code := 'C'; -- 4262811
77538 --
77539 --
77540 -- set accounting line type info
77541 --
77542 xla_ae_lines_pkg.SetAcctLineType
77543 (p_component_type => l_component_type
77544 ,p_event_type_code => l_event_type_code
77545 ,p_line_definition_owner_code => l_line_definition_owner_code
77546 ,p_line_definition_code => l_line_definition_code
77547 ,p_accounting_line_code => l_component_code
77548 ,p_accounting_line_type_code => l_component_type_code
77549 ,p_accounting_line_appl_id => l_component_appl_id
77550 ,p_amb_context_code => l_amb_context_code
77551 ,p_entity_code => l_entity_code
77552 ,p_event_class_code => l_event_class_code);
77553 --
77554 -- set accounting class
77555 --
77556 xla_ae_lines_pkg.SetAcctClass(
77557 p_accounting_class_code => 'INVENTORY_VALUATION'
77558 , p_ae_header_id => l_ae_header_id
77559 );
77560
77561 --
77562 -- set rounding class
77563 --
77564 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
77565 'INVENTORY_VALUATION';
77566
77567 --
77568 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
77569 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
77570 --
77571 -- bulk performance
77572 --
77573 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
77574
77575 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
77576 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
77577
77578 -- 4955764
77579 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
77580 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
77581
77582 -- 4458381 Public Sector Enh
77583
77584 --
77585 -- set accounting attributes for the line type
77586 --
77587 l_entered_amt_idx := 3;
77588 l_accted_amt_idx := 8;
77589 l_bflow_applied_to_amt_idx := NULL; -- 5132302
77590 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
77591 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
77592 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
77593 l_rec_acct_attrs.array_char_value(2) := p_source_12;
77594 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
77595 l_rec_acct_attrs.array_num_value(3) := p_source_18;
77596 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
77597 l_rec_acct_attrs.array_char_value(4) := p_source_15;
77598 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
77599 l_rec_acct_attrs.array_date_value(5) := p_source_19;
77600 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
77601 l_rec_acct_attrs.array_num_value(6) := p_source_20;
77602 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
77603 l_rec_acct_attrs.array_char_value(7) := p_source_21;
77604 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
77605 l_rec_acct_attrs.array_num_value(8) := p_source_22;
77606
77607 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
77608 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
77609
77610 ---------------------------------------------------------------------------------------------------------------
77611 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
77612 ---------------------------------------------------------------------------------------------------------------
77613 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
77614
77615 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
77616 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
77617
77618 IF xla_accounting_cache_pkg.GetValueChar
77619 (p_source_code => 'LEDGER_CATEGORY_CODE'
77620 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
77621 AND l_bflow_method_code = 'PRIOR_ENTRY'
77622 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
77623 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
77624 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
77625 )
77626 THEN
77627 xla_ae_lines_pkg.BflowUpgEntry
77628 (p_business_method_code => l_bflow_method_code
77629 ,p_business_class_code => l_bflow_class_code
77630 ,p_balance_type => l_balance_type_code);
77631 ELSE
77632 NULL;
77633 -- No business flow processing for business flow method of NONE.
77634 END IF;
77635
77636 --
77637 -- call analytical criteria
77638 --
77639
77640 --
77641 -- call description
77642 --
77643 -- No description or it is inherited.
77644 --
77645 -- call ADRs
77646 -- Bug 4922099
77647 --
77648 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
77649 (NVL(l_actual_upg_option, 'N') = 'O') OR
77650 (NVL(l_enc_upg_option, 'N') = 'O')
77651 )
77652 THEN
77653 NULL;
77654 --
77655 --
77656
77657 l_ccid := AcctDerRule_4(
77658 p_application_id => p_application_id
77659 , p_ae_header_id => l_ae_header_id
77660 , p_source_4 => p_source_4
77661 , x_transaction_coa_id => l_adr_transaction_coa_id
77662 , x_accounting_coa_id => l_adr_accounting_coa_id
77663 , x_value_type_code => l_adr_value_type_code
77664 , p_side => 'NA'
77665 );
77666
77667 xla_ae_lines_pkg.set_ccid(
77668 p_code_combination_id => l_ccid
77669 , p_value_type_code => l_adr_value_type_code
77670 , p_transaction_coa_id => l_adr_transaction_coa_id
77671 , p_accounting_coa_id => l_adr_accounting_coa_id
77672 , p_adr_code => 'CST_DEFAULT'
77673 , p_adr_type_code => 'S'
77674 , p_component_type => l_component_type
77675 , p_component_code => l_component_code
77676 , p_component_type_code => l_component_type_code
77677 , p_component_appl_id => l_component_appl_id
77678 , p_amb_context_code => l_amb_context_code
77679 , p_side => 'NA'
77680 );
77681
77682
77683 --
77684 --
77685 END IF;
77686 --
77687 -- Bug 4922099
77688 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
77689 (NVL(l_enc_upg_option, 'N') = 'O')
77690 ) AND
77691 (l_bflow_method_code = 'PRIOR_ENTRY')
77692 )
77693 THEN
77694 IF
77695 --
77696 1 = 2
77697 --
77698 THEN
77699 xla_accounting_err_pkg.build_message
77700 (p_appli_s_name => 'XLA'
77701 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
77702 ,p_token_1 => 'LINE_NUMBER'
77703 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
77704 ,p_token_2 => 'LINE_TYPE_NAME'
77705 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
77706 l_component_type
77707 ,l_component_code
77708 ,l_component_type_code
77709 ,l_component_appl_id
77710 ,l_amb_context_code
77711 ,l_entity_code
77712 ,l_event_class_code
77713 )
77714 ,p_token_3 => 'OWNER'
77715 ,p_value_3 => xla_lookups_pkg.get_meaning(
77716 p_lookup_type => 'XLA_OWNER_TYPE'
77717 ,p_lookup_code => l_component_type_code
77718 )
77719 ,p_token_4 => 'PRODUCT_NAME'
77720 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
77721 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
77722 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
77723 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
77724 ,p_ae_header_id => NULL
77725 );
77726
77727 IF (C_LEVEL_ERROR>= g_log_level) THEN
77728 trace
77729 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
77730 ,p_level => C_LEVEL_ERROR
77731 ,p_module => l_log_module);
77732 END IF;
77733 END IF;
77734 END IF;
77735 --
77736 --
77737 ------------------------------------------------------------------------------------------------
77738 -- 4219869 Business Flow
77739 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
77740 -- Prior Entry. Currently, the following code is always generated.
77741 ------------------------------------------------------------------------------------------------
77742 XLA_AE_LINES_PKG.ValidateCurrentLine;
77743
77744 ------------------------------------------------------------------------------------
77745 -- 4219869 Business Flow
77746 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
77747 ------------------------------------------------------------------------------------
77748 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
77749
77750 ----------------------------------------------------------------------------------
77751 -- 4219869 Business Flow
77752 -- Update journal entry status -- Need to generate this within IF <condition>
77753 ----------------------------------------------------------------------------------
77754 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
77755 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
77756 ,p_balance_type_code => l_balance_type_code
77757 );
77758
77759 -------------------------------------------------------------------------------------------
77760 -- 4262811 - Generate the Accrual Reversal lines
77761 -------------------------------------------------------------------------------------------
77762 BEGIN
77763 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
77764 (g_array_event(p_event_id).array_value_num('header_index'));
77765 IF l_acc_rev_flag IS NULL THEN
77766 l_acc_rev_flag := 'N';
77767 END IF;
77768 EXCEPTION
77769 WHEN OTHERS THEN
77770 l_acc_rev_flag := 'N';
77771 END;
77772 --
77773 IF (l_acc_rev_flag = 'Y') THEN
77774
77775 -- 4645092 ------------------------------------------------------------------------------
77776 -- To allow MPA report to determine if it should generate report process
77777 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
77778 ------------------------------------------------------------------------------------------
77779
77780 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
77781 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
77782 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
77783 -- call ADRs
77784 -- Bug 4922099
77785 --
77786 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
77787 (NVL(l_actual_upg_option, 'N') = 'O') OR
77788 (NVL(l_enc_upg_option, 'N') = 'O')
77789 )
77790 THEN
77791 NULL;
77792 --
77793 --
77794
77795 l_ccid := AcctDerRule_4(
77796 p_application_id => p_application_id
77797 , p_ae_header_id => l_ae_header_id
77798 , p_source_4 => p_source_4
77799 , x_transaction_coa_id => l_adr_transaction_coa_id
77800 , x_accounting_coa_id => l_adr_accounting_coa_id
77801 , x_value_type_code => l_adr_value_type_code
77802 , p_side => 'NA'
77803 );
77804
77805 xla_ae_lines_pkg.set_ccid(
77806 p_code_combination_id => l_ccid
77807 , p_value_type_code => l_adr_value_type_code
77808 , p_transaction_coa_id => l_adr_transaction_coa_id
77809 , p_accounting_coa_id => l_adr_accounting_coa_id
77810 , p_adr_code => 'CST_DEFAULT'
77811 , p_adr_type_code => 'S'
77812 , p_component_type => l_component_type
77813 , p_component_code => l_component_code
77814 , p_component_type_code => l_component_type_code
77815 , p_component_appl_id => l_component_appl_id
77816 , p_amb_context_code => l_amb_context_code
77817 , p_side => 'NA'
77818 );
77819
77820
77821 --
77822 --
77823 END IF;
77824
77825 --
77826 -- Update the line information that should be overwritten
77827 --
77828 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
77829 p_header_num => 1);
77830 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
77831
77832 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
77833
77834 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
77835 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
77836 END IF;
77837
77838 --
77839 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
77840 --
77841 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
77842 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
77843 ELSE
77844 ---------------------------------------------------------------------------------------------------
77845 -- 4262811a Switch Sign
77846 ---------------------------------------------------------------------------------------------------
77847 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
77848 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
77849 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
77850 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
77851 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
77852 -- 5132302
77853 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
77854 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
77855
77856 END IF;
77857
77858 -- 4955764
77859 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
77860 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
77861
77862
77863 XLA_AE_LINES_PKG.ValidateCurrentLine;
77864 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
77865
77866 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
77867 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
77868 ,p_balance_type_code => l_balance_type_code);
77869
77870 END IF;
77871
77872 -----------------------------------------------------------------------------------------
77873 -- 4262811 Multiperiod Accounting
77874 -----------------------------------------------------------------------------------------
77875 -- No MPA option is assigned.
77876
77877
77878 END IF;
77879 END IF;
77880 --
77881
77882 --
77883 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
77884 trace
77885 (p_msg => 'END of AcctLineType_142'
77886 ,p_level => C_LEVEL_PROCEDURE
77887 ,p_module => l_log_module);
77888 END IF;
77889 --
77890 EXCEPTION
77891 WHEN xla_exceptions_pkg.application_exception THEN
77892 RAISE;
77893 WHEN OTHERS THEN
77894 xla_exceptions_pkg.raise_message
77895 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_142');
77896 END AcctLineType_142;
77897 --
77898
77899 ---------------------------------------
77900 --
77901 -- PRIVATE FUNCTION
77902 -- AcctLineType_143
77903 --
77904 ---------------------------------------
77905 PROCEDURE AcctLineType_143 (
77906 p_application_id IN NUMBER
77907 ,p_event_id IN NUMBER
77908 ,p_calculate_acctd_flag IN VARCHAR2
77909 ,p_calculate_g_l_flag IN VARCHAR2
77910 ,p_actual_flag IN OUT VARCHAR2
77911 ,p_balance_type_code OUT VARCHAR2
77912 ,p_gain_or_loss_ref OUT VARCHAR2
77913
77914 --Cost Management Default Account
77915 , p_source_4 IN NUMBER
77916 --DISTRIBUTION_IDENTIFIER
77917 , p_source_11 IN NUMBER
77918 --Distribution Type
77919 , p_source_12 IN VARCHAR2
77920 , p_source_12_meaning IN VARCHAR2
77921 --Entered Currency Code
77922 , p_source_15 IN VARCHAR2
77923 --Entered Amount
77924 , p_source_18 IN NUMBER
77925 --Currency Conversion Date
77926 , p_source_19 IN DATE
77927 --Currency Conversion Rate
77928 , p_source_20 IN NUMBER
77929 --Currency Conversion Type
77930 , p_source_21 IN VARCHAR2
77931 --Accounted Amount
77932 , p_source_22 IN NUMBER
77933 --Accounting Line Type
77934 , p_source_24 IN NUMBER
77935 )
77936 IS
77937
77938 l_component_type VARCHAR2(80);
77939 l_component_code VARCHAR2(30);
77940 l_component_type_code VARCHAR2(1);
77941 l_component_appl_id INTEGER;
77942 l_amb_context_code VARCHAR2(30);
77943 l_entity_code VARCHAR2(30);
77944 l_event_class_code VARCHAR2(30);
77945 l_ae_header_id NUMBER;
77946 l_event_type_code VARCHAR2(30);
77947 l_line_definition_code VARCHAR2(30);
77948 l_line_definition_owner_code VARCHAR2(1);
77949 --
77950 -- adr variables
77951 l_segment VARCHAR2(30);
77952 l_ccid NUMBER;
77953 l_adr_transaction_coa_id NUMBER;
77954 l_adr_accounting_coa_id NUMBER;
77955 l_adr_flexfield_segment_code VARCHAR2(30);
77956 l_adr_flex_value_set_id NUMBER;
77957 l_adr_value_type_code VARCHAR2(30);
77958 l_adr_value_combination_id NUMBER;
77959 l_adr_value_segment_code VARCHAR2(30);
77960
77961 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
77962 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
77963 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
77964 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
77965
77966 -- 4262811 Variables ------------------------------------------------------------------------------------------
77967 l_entered_amt_idx NUMBER;
77968 l_accted_amt_idx NUMBER;
77969 l_acc_rev_flag VARCHAR2(1);
77970 l_accrual_line_num NUMBER;
77971 l_tmp_amt NUMBER;
77972 l_acc_rev_natural_side_code VARCHAR2(1);
77973
77974 l_num_entries NUMBER;
77975 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
77976 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
77977 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
77978 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
77979 l_recog_line_1 NUMBER;
77980 l_recog_line_2 NUMBER;
77981
77982 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
77983 l_bflow_applied_to_amt NUMBER; -- 5132302
77984 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
77985
77986 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
77987
77988 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
77989 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
77990
77991 ---------------------------------------------------------------------------------------------------------------
77992
77993
77994 --
77995 -- bulk performance
77996 --
77997 l_balance_type_code VARCHAR2(1);
77998 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
77999 l_log_module VARCHAR2(240);
78000
78001 --
78002 -- Upgrade strategy
78003 --
78004 l_actual_upg_option VARCHAR2(1);
78005 l_enc_upg_option VARCHAR2(1);
78006
78007 --
78008 BEGIN
78009 --
78010 IF g_log_enabled THEN
78011 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_143';
78012 END IF;
78013 --
78014 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
78015
78016 trace
78017 (p_msg => 'BEGIN of AcctLineType_143'
78018 ,p_level => C_LEVEL_PROCEDURE
78019 ,p_module => l_log_module);
78020
78021 END IF;
78022 --
78023 l_component_type := 'AMB_JLT';
78024 l_component_code := 'INVENTORY_VALUATION';
78025 l_component_type_code := 'S';
78026 l_component_appl_id := 707;
78027 l_amb_context_code := 'DEFAULT';
78028 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
78029 l_event_class_code := 'USER_DEFINE';
78030 l_event_type_code := 'UIPV_TXFR';
78031 l_line_definition_owner_code := 'S';
78032 l_line_definition_code := 'USER_IPV_TXFR';
78033 --
78034 l_balance_type_code := 'A';
78035 l_segment := NULL;
78036 l_ccid := NULL;
78037 l_adr_transaction_coa_id := NULL;
78038 l_adr_accounting_coa_id := NULL;
78039 l_adr_flexfield_segment_code := NULL;
78040 l_adr_flex_value_set_id := NULL;
78041 l_adr_value_type_code := NULL;
78042 l_adr_value_combination_id := NULL;
78043 l_adr_value_segment_code := NULL;
78044
78045 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
78046 l_bflow_class_code := ''; -- 4219869 Business Flow
78047 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
78048 l_budgetary_control_flag := 'N';
78049
78050 l_bflow_applied_to_amt_idx := NULL; -- 5132302
78051 l_bflow_applied_to_amt := NULL; -- 5132302
78052 l_entered_amt_idx := NULL; -- 4262811
78053 l_accted_amt_idx := NULL; -- 4262811
78054 l_acc_rev_flag := NULL; -- 4262811
78055 l_accrual_line_num := NULL; -- 4262811
78056 l_tmp_amt := NULL; -- 4262811
78057 --
78058
78059 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
78060 l_balance_type_code <> 'B' THEN
78061 IF NVL(p_source_24,9E125) = 1
78062 THEN
78063
78064 --
78065 XLA_AE_LINES_PKG.SetNewLine;
78066
78067 p_balance_type_code := l_balance_type_code;
78068 -- set the flag so later we will know whether the gain loss line needs to be created
78069
78070 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
78071 p_actual_flag :='A';
78072 END IF;
78073
78074 --
78075 -- bulk performance
78076 --
78077 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
78078 p_header_num => 0); -- 4262811
78079 --
78080 -- set accounting line options
78081 --
78082 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
78083 p_natural_side_code => 'D'
78084 , p_gain_or_loss_flag => 'N'
78085 , p_gl_transfer_mode_code => 'S'
78086 , p_acct_entry_type_code => 'A'
78087 , p_switch_side_flag => 'Y'
78088 , p_merge_duplicate_code => 'N'
78089 );
78090 --
78091 l_acc_rev_natural_side_code := 'C'; -- 4262811
78092 --
78093 --
78094 -- set accounting line type info
78095 --
78096 xla_ae_lines_pkg.SetAcctLineType
78097 (p_component_type => l_component_type
78098 ,p_event_type_code => l_event_type_code
78099 ,p_line_definition_owner_code => l_line_definition_owner_code
78100 ,p_line_definition_code => l_line_definition_code
78101 ,p_accounting_line_code => l_component_code
78102 ,p_accounting_line_type_code => l_component_type_code
78103 ,p_accounting_line_appl_id => l_component_appl_id
78104 ,p_amb_context_code => l_amb_context_code
78105 ,p_entity_code => l_entity_code
78106 ,p_event_class_code => l_event_class_code);
78107 --
78108 -- set accounting class
78109 --
78110 xla_ae_lines_pkg.SetAcctClass(
78111 p_accounting_class_code => 'INVENTORY_VALUATION'
78112 , p_ae_header_id => l_ae_header_id
78113 );
78114
78115 --
78116 -- set rounding class
78117 --
78118 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
78119 'INVENTORY_VALUATION';
78120
78121 --
78122 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
78123 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
78124 --
78125 -- bulk performance
78126 --
78127 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
78128
78129 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
78130 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
78131
78132 -- 4955764
78133 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
78134 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
78135
78136 -- 4458381 Public Sector Enh
78137
78138 --
78139 -- set accounting attributes for the line type
78140 --
78141 l_entered_amt_idx := 3;
78142 l_accted_amt_idx := 8;
78143 l_bflow_applied_to_amt_idx := NULL; -- 5132302
78144 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
78145 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
78146 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
78147 l_rec_acct_attrs.array_char_value(2) := p_source_12;
78148 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
78149 l_rec_acct_attrs.array_num_value(3) := p_source_18;
78150 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
78151 l_rec_acct_attrs.array_char_value(4) := p_source_15;
78152 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
78153 l_rec_acct_attrs.array_date_value(5) := p_source_19;
78154 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
78155 l_rec_acct_attrs.array_num_value(6) := p_source_20;
78156 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
78157 l_rec_acct_attrs.array_char_value(7) := p_source_21;
78158 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
78159 l_rec_acct_attrs.array_num_value(8) := p_source_22;
78160
78161 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
78162 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
78163
78164 ---------------------------------------------------------------------------------------------------------------
78165 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
78166 ---------------------------------------------------------------------------------------------------------------
78167 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
78168
78169 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
78170 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
78171
78172 IF xla_accounting_cache_pkg.GetValueChar
78173 (p_source_code => 'LEDGER_CATEGORY_CODE'
78174 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
78175 AND l_bflow_method_code = 'PRIOR_ENTRY'
78176 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
78177 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
78178 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
78179 )
78180 THEN
78181 xla_ae_lines_pkg.BflowUpgEntry
78182 (p_business_method_code => l_bflow_method_code
78183 ,p_business_class_code => l_bflow_class_code
78184 ,p_balance_type => l_balance_type_code);
78185 ELSE
78186 NULL;
78187 -- No business flow processing for business flow method of NONE.
78188 END IF;
78189
78190 --
78191 -- call analytical criteria
78192 --
78193
78194 --
78195 -- call description
78196 --
78197 -- No description or it is inherited.
78198 --
78199 -- call ADRs
78200 -- Bug 4922099
78201 --
78202 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
78203 (NVL(l_actual_upg_option, 'N') = 'O') OR
78204 (NVL(l_enc_upg_option, 'N') = 'O')
78205 )
78206 THEN
78207 NULL;
78208 --
78209 --
78210
78211 l_ccid := AcctDerRule_4(
78212 p_application_id => p_application_id
78213 , p_ae_header_id => l_ae_header_id
78214 , p_source_4 => p_source_4
78215 , x_transaction_coa_id => l_adr_transaction_coa_id
78216 , x_accounting_coa_id => l_adr_accounting_coa_id
78217 , x_value_type_code => l_adr_value_type_code
78218 , p_side => 'NA'
78219 );
78220
78221 xla_ae_lines_pkg.set_ccid(
78222 p_code_combination_id => l_ccid
78223 , p_value_type_code => l_adr_value_type_code
78224 , p_transaction_coa_id => l_adr_transaction_coa_id
78225 , p_accounting_coa_id => l_adr_accounting_coa_id
78226 , p_adr_code => 'CST_DEFAULT'
78227 , p_adr_type_code => 'S'
78228 , p_component_type => l_component_type
78229 , p_component_code => l_component_code
78230 , p_component_type_code => l_component_type_code
78231 , p_component_appl_id => l_component_appl_id
78232 , p_amb_context_code => l_amb_context_code
78233 , p_side => 'NA'
78234 );
78235
78236
78237 --
78238 --
78239 END IF;
78240 --
78241 -- Bug 4922099
78242 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
78243 (NVL(l_enc_upg_option, 'N') = 'O')
78244 ) AND
78245 (l_bflow_method_code = 'PRIOR_ENTRY')
78246 )
78247 THEN
78248 IF
78249 --
78250 1 = 2
78251 --
78252 THEN
78253 xla_accounting_err_pkg.build_message
78254 (p_appli_s_name => 'XLA'
78255 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
78256 ,p_token_1 => 'LINE_NUMBER'
78257 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
78258 ,p_token_2 => 'LINE_TYPE_NAME'
78259 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
78260 l_component_type
78261 ,l_component_code
78262 ,l_component_type_code
78263 ,l_component_appl_id
78264 ,l_amb_context_code
78265 ,l_entity_code
78266 ,l_event_class_code
78267 )
78268 ,p_token_3 => 'OWNER'
78269 ,p_value_3 => xla_lookups_pkg.get_meaning(
78270 p_lookup_type => 'XLA_OWNER_TYPE'
78271 ,p_lookup_code => l_component_type_code
78272 )
78273 ,p_token_4 => 'PRODUCT_NAME'
78274 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
78275 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
78276 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
78277 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
78278 ,p_ae_header_id => NULL
78279 );
78280
78281 IF (C_LEVEL_ERROR>= g_log_level) THEN
78282 trace
78283 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
78284 ,p_level => C_LEVEL_ERROR
78285 ,p_module => l_log_module);
78286 END IF;
78287 END IF;
78288 END IF;
78289 --
78290 --
78291 ------------------------------------------------------------------------------------------------
78292 -- 4219869 Business Flow
78293 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
78294 -- Prior Entry. Currently, the following code is always generated.
78295 ------------------------------------------------------------------------------------------------
78296 XLA_AE_LINES_PKG.ValidateCurrentLine;
78297
78298 ------------------------------------------------------------------------------------
78299 -- 4219869 Business Flow
78300 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
78301 ------------------------------------------------------------------------------------
78302 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
78303
78304 ----------------------------------------------------------------------------------
78305 -- 4219869 Business Flow
78306 -- Update journal entry status -- Need to generate this within IF <condition>
78307 ----------------------------------------------------------------------------------
78308 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
78309 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
78310 ,p_balance_type_code => l_balance_type_code
78311 );
78312
78313 -------------------------------------------------------------------------------------------
78314 -- 4262811 - Generate the Accrual Reversal lines
78315 -------------------------------------------------------------------------------------------
78316 BEGIN
78317 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
78318 (g_array_event(p_event_id).array_value_num('header_index'));
78319 IF l_acc_rev_flag IS NULL THEN
78320 l_acc_rev_flag := 'N';
78321 END IF;
78322 EXCEPTION
78323 WHEN OTHERS THEN
78324 l_acc_rev_flag := 'N';
78325 END;
78326 --
78327 IF (l_acc_rev_flag = 'Y') THEN
78328
78329 -- 4645092 ------------------------------------------------------------------------------
78330 -- To allow MPA report to determine if it should generate report process
78331 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
78332 ------------------------------------------------------------------------------------------
78333
78334 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
78335 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
78336 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
78337 -- call ADRs
78338 -- Bug 4922099
78339 --
78340 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
78341 (NVL(l_actual_upg_option, 'N') = 'O') OR
78342 (NVL(l_enc_upg_option, 'N') = 'O')
78343 )
78344 THEN
78345 NULL;
78346 --
78347 --
78348
78349 l_ccid := AcctDerRule_4(
78350 p_application_id => p_application_id
78351 , p_ae_header_id => l_ae_header_id
78352 , p_source_4 => p_source_4
78353 , x_transaction_coa_id => l_adr_transaction_coa_id
78354 , x_accounting_coa_id => l_adr_accounting_coa_id
78355 , x_value_type_code => l_adr_value_type_code
78356 , p_side => 'NA'
78357 );
78358
78359 xla_ae_lines_pkg.set_ccid(
78360 p_code_combination_id => l_ccid
78361 , p_value_type_code => l_adr_value_type_code
78362 , p_transaction_coa_id => l_adr_transaction_coa_id
78363 , p_accounting_coa_id => l_adr_accounting_coa_id
78364 , p_adr_code => 'CST_DEFAULT'
78365 , p_adr_type_code => 'S'
78366 , p_component_type => l_component_type
78367 , p_component_code => l_component_code
78368 , p_component_type_code => l_component_type_code
78369 , p_component_appl_id => l_component_appl_id
78370 , p_amb_context_code => l_amb_context_code
78371 , p_side => 'NA'
78372 );
78373
78374
78375 --
78376 --
78377 END IF;
78378
78379 --
78380 -- Update the line information that should be overwritten
78381 --
78382 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
78383 p_header_num => 1);
78384 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
78385
78386 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
78387
78388 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
78389 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
78390 END IF;
78391
78392 --
78393 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
78394 --
78395 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
78396 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
78397 ELSE
78398 ---------------------------------------------------------------------------------------------------
78399 -- 4262811a Switch Sign
78400 ---------------------------------------------------------------------------------------------------
78401 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
78402 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
78403 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
78404 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
78405 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
78406 -- 5132302
78407 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
78408 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
78409
78410 END IF;
78411
78412 -- 4955764
78413 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
78414 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
78415
78416
78417 XLA_AE_LINES_PKG.ValidateCurrentLine;
78418 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
78419
78420 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
78421 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
78422 ,p_balance_type_code => l_balance_type_code);
78423
78424 END IF;
78425
78426 -----------------------------------------------------------------------------------------
78427 -- 4262811 Multiperiod Accounting
78428 -----------------------------------------------------------------------------------------
78429 -- No MPA option is assigned.
78430
78431
78432 END IF;
78433 END IF;
78434 --
78435
78436 --
78437 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
78438 trace
78439 (p_msg => 'END of AcctLineType_143'
78440 ,p_level => C_LEVEL_PROCEDURE
78441 ,p_module => l_log_module);
78442 END IF;
78443 --
78444 EXCEPTION
78445 WHEN xla_exceptions_pkg.application_exception THEN
78446 RAISE;
78447 WHEN OTHERS THEN
78448 xla_exceptions_pkg.raise_message
78449 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_143');
78450 END AcctLineType_143;
78451 --
78452
78453 ---------------------------------------
78454 --
78455 -- PRIVATE FUNCTION
78456 -- AcctLineType_144
78457 --
78458 ---------------------------------------
78459 PROCEDURE AcctLineType_144 (
78460 p_application_id IN NUMBER
78461 ,p_event_id IN NUMBER
78462 ,p_calculate_acctd_flag IN VARCHAR2
78463 ,p_calculate_g_l_flag IN VARCHAR2
78464 ,p_actual_flag IN OUT VARCHAR2
78465 ,p_balance_type_code OUT VARCHAR2
78466 ,p_gain_or_loss_ref OUT VARCHAR2
78467
78468 --Cost Management Default Account
78469 , p_source_4 IN NUMBER
78470 --DISTRIBUTION_IDENTIFIER
78471 , p_source_11 IN NUMBER
78472 --Distribution Type
78473 , p_source_12 IN VARCHAR2
78474 , p_source_12_meaning IN VARCHAR2
78475 --Entered Currency Code
78476 , p_source_15 IN VARCHAR2
78477 --Entered Amount
78478 , p_source_18 IN NUMBER
78479 --Currency Conversion Date
78480 , p_source_19 IN DATE
78481 --Currency Conversion Rate
78482 , p_source_20 IN NUMBER
78483 --Currency Conversion Type
78484 , p_source_21 IN VARCHAR2
78485 --Accounted Amount
78486 , p_source_22 IN NUMBER
78487 --Accounting Line Type
78488 , p_source_24 IN NUMBER
78489 )
78490 IS
78491
78492 l_component_type VARCHAR2(80);
78493 l_component_code VARCHAR2(30);
78494 l_component_type_code VARCHAR2(1);
78495 l_component_appl_id INTEGER;
78496 l_amb_context_code VARCHAR2(30);
78497 l_entity_code VARCHAR2(30);
78498 l_event_class_code VARCHAR2(30);
78499 l_ae_header_id NUMBER;
78500 l_event_type_code VARCHAR2(30);
78501 l_line_definition_code VARCHAR2(30);
78502 l_line_definition_owner_code VARCHAR2(1);
78503 --
78504 -- adr variables
78505 l_segment VARCHAR2(30);
78506 l_ccid NUMBER;
78507 l_adr_transaction_coa_id NUMBER;
78508 l_adr_accounting_coa_id NUMBER;
78509 l_adr_flexfield_segment_code VARCHAR2(30);
78510 l_adr_flex_value_set_id NUMBER;
78511 l_adr_value_type_code VARCHAR2(30);
78512 l_adr_value_combination_id NUMBER;
78513 l_adr_value_segment_code VARCHAR2(30);
78514
78515 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
78516 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
78517 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
78518 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
78519
78520 -- 4262811 Variables ------------------------------------------------------------------------------------------
78521 l_entered_amt_idx NUMBER;
78522 l_accted_amt_idx NUMBER;
78523 l_acc_rev_flag VARCHAR2(1);
78524 l_accrual_line_num NUMBER;
78525 l_tmp_amt NUMBER;
78526 l_acc_rev_natural_side_code VARCHAR2(1);
78527
78528 l_num_entries NUMBER;
78529 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
78530 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
78531 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
78532 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
78533 l_recog_line_1 NUMBER;
78534 l_recog_line_2 NUMBER;
78535
78536 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
78537 l_bflow_applied_to_amt NUMBER; -- 5132302
78538 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
78539
78540 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
78541
78542 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
78543 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
78544
78545 ---------------------------------------------------------------------------------------------------------------
78546
78547
78548 --
78549 -- bulk performance
78550 --
78551 l_balance_type_code VARCHAR2(1);
78552 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
78553 l_log_module VARCHAR2(240);
78554
78555 --
78556 -- Upgrade strategy
78557 --
78558 l_actual_upg_option VARCHAR2(1);
78559 l_enc_upg_option VARCHAR2(1);
78560
78561 --
78562 BEGIN
78563 --
78564 IF g_log_enabled THEN
78565 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_144';
78566 END IF;
78567 --
78568 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
78569
78570 trace
78571 (p_msg => 'BEGIN of AcctLineType_144'
78572 ,p_level => C_LEVEL_PROCEDURE
78573 ,p_module => l_log_module);
78574
78575 END IF;
78576 --
78577 l_component_type := 'AMB_JLT';
78578 l_component_code := 'INVENTORY_VALUATION';
78579 l_component_type_code := 'S';
78580 l_component_appl_id := 707;
78581 l_amb_context_code := 'DEFAULT';
78582 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
78583 l_event_class_code := 'USER_DEFINE';
78584 l_event_type_code := 'USUB_TXFR';
78585 l_line_definition_owner_code := 'S';
78586 l_line_definition_code := 'USER_SUB_TXFR';
78587 --
78588 l_balance_type_code := 'A';
78589 l_segment := NULL;
78590 l_ccid := NULL;
78591 l_adr_transaction_coa_id := NULL;
78592 l_adr_accounting_coa_id := NULL;
78593 l_adr_flexfield_segment_code := NULL;
78594 l_adr_flex_value_set_id := NULL;
78595 l_adr_value_type_code := NULL;
78596 l_adr_value_combination_id := NULL;
78597 l_adr_value_segment_code := NULL;
78598
78599 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
78600 l_bflow_class_code := ''; -- 4219869 Business Flow
78601 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
78602 l_budgetary_control_flag := 'N';
78603
78604 l_bflow_applied_to_amt_idx := NULL; -- 5132302
78605 l_bflow_applied_to_amt := NULL; -- 5132302
78606 l_entered_amt_idx := NULL; -- 4262811
78607 l_accted_amt_idx := NULL; -- 4262811
78608 l_acc_rev_flag := NULL; -- 4262811
78609 l_accrual_line_num := NULL; -- 4262811
78610 l_tmp_amt := NULL; -- 4262811
78611 --
78612
78613 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
78614 l_balance_type_code <> 'B' THEN
78615 IF NVL(p_source_24,9E125) = 1
78616 THEN
78617
78618 --
78619 XLA_AE_LINES_PKG.SetNewLine;
78620
78621 p_balance_type_code := l_balance_type_code;
78622 -- set the flag so later we will know whether the gain loss line needs to be created
78623
78624 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
78625 p_actual_flag :='A';
78626 END IF;
78627
78628 --
78629 -- bulk performance
78630 --
78631 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
78632 p_header_num => 0); -- 4262811
78633 --
78634 -- set accounting line options
78635 --
78636 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
78637 p_natural_side_code => 'D'
78638 , p_gain_or_loss_flag => 'N'
78639 , p_gl_transfer_mode_code => 'S'
78640 , p_acct_entry_type_code => 'A'
78641 , p_switch_side_flag => 'Y'
78642 , p_merge_duplicate_code => 'N'
78643 );
78644 --
78645 l_acc_rev_natural_side_code := 'C'; -- 4262811
78646 --
78647 --
78648 -- set accounting line type info
78649 --
78650 xla_ae_lines_pkg.SetAcctLineType
78651 (p_component_type => l_component_type
78652 ,p_event_type_code => l_event_type_code
78653 ,p_line_definition_owner_code => l_line_definition_owner_code
78654 ,p_line_definition_code => l_line_definition_code
78655 ,p_accounting_line_code => l_component_code
78656 ,p_accounting_line_type_code => l_component_type_code
78657 ,p_accounting_line_appl_id => l_component_appl_id
78658 ,p_amb_context_code => l_amb_context_code
78659 ,p_entity_code => l_entity_code
78660 ,p_event_class_code => l_event_class_code);
78661 --
78662 -- set accounting class
78663 --
78664 xla_ae_lines_pkg.SetAcctClass(
78665 p_accounting_class_code => 'INVENTORY_VALUATION'
78666 , p_ae_header_id => l_ae_header_id
78667 );
78668
78669 --
78670 -- set rounding class
78671 --
78672 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
78673 'INVENTORY_VALUATION';
78674
78675 --
78676 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
78677 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
78678 --
78679 -- bulk performance
78680 --
78681 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
78682
78683 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
78684 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
78685
78686 -- 4955764
78687 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
78688 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
78689
78690 -- 4458381 Public Sector Enh
78691
78692 --
78693 -- set accounting attributes for the line type
78694 --
78695 l_entered_amt_idx := 3;
78696 l_accted_amt_idx := 8;
78697 l_bflow_applied_to_amt_idx := NULL; -- 5132302
78698 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
78699 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
78700 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
78701 l_rec_acct_attrs.array_char_value(2) := p_source_12;
78702 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
78703 l_rec_acct_attrs.array_num_value(3) := p_source_18;
78704 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
78705 l_rec_acct_attrs.array_char_value(4) := p_source_15;
78706 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
78707 l_rec_acct_attrs.array_date_value(5) := p_source_19;
78708 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
78709 l_rec_acct_attrs.array_num_value(6) := p_source_20;
78710 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
78711 l_rec_acct_attrs.array_char_value(7) := p_source_21;
78712 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
78713 l_rec_acct_attrs.array_num_value(8) := p_source_22;
78714
78715 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
78716 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
78717
78718 ---------------------------------------------------------------------------------------------------------------
78719 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
78720 ---------------------------------------------------------------------------------------------------------------
78721 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
78722
78723 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
78724 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
78725
78726 IF xla_accounting_cache_pkg.GetValueChar
78727 (p_source_code => 'LEDGER_CATEGORY_CODE'
78728 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
78729 AND l_bflow_method_code = 'PRIOR_ENTRY'
78730 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
78731 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
78732 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
78733 )
78734 THEN
78735 xla_ae_lines_pkg.BflowUpgEntry
78736 (p_business_method_code => l_bflow_method_code
78737 ,p_business_class_code => l_bflow_class_code
78738 ,p_balance_type => l_balance_type_code);
78739 ELSE
78740 NULL;
78741 -- No business flow processing for business flow method of NONE.
78742 END IF;
78743
78744 --
78745 -- call analytical criteria
78746 --
78747
78748 --
78749 -- call description
78750 --
78751 -- No description or it is inherited.
78752 --
78753 -- call ADRs
78754 -- Bug 4922099
78755 --
78756 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
78757 (NVL(l_actual_upg_option, 'N') = 'O') OR
78758 (NVL(l_enc_upg_option, 'N') = 'O')
78759 )
78760 THEN
78761 NULL;
78762 --
78763 --
78764
78765 l_ccid := AcctDerRule_4(
78766 p_application_id => p_application_id
78767 , p_ae_header_id => l_ae_header_id
78768 , p_source_4 => p_source_4
78769 , x_transaction_coa_id => l_adr_transaction_coa_id
78770 , x_accounting_coa_id => l_adr_accounting_coa_id
78771 , x_value_type_code => l_adr_value_type_code
78772 , p_side => 'NA'
78773 );
78774
78775 xla_ae_lines_pkg.set_ccid(
78776 p_code_combination_id => l_ccid
78777 , p_value_type_code => l_adr_value_type_code
78778 , p_transaction_coa_id => l_adr_transaction_coa_id
78779 , p_accounting_coa_id => l_adr_accounting_coa_id
78780 , p_adr_code => 'CST_DEFAULT'
78781 , p_adr_type_code => 'S'
78782 , p_component_type => l_component_type
78783 , p_component_code => l_component_code
78784 , p_component_type_code => l_component_type_code
78785 , p_component_appl_id => l_component_appl_id
78786 , p_amb_context_code => l_amb_context_code
78787 , p_side => 'NA'
78788 );
78789
78790
78791 --
78792 --
78793 END IF;
78794 --
78795 -- Bug 4922099
78796 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
78797 (NVL(l_enc_upg_option, 'N') = 'O')
78798 ) AND
78799 (l_bflow_method_code = 'PRIOR_ENTRY')
78800 )
78801 THEN
78802 IF
78803 --
78804 1 = 2
78805 --
78806 THEN
78807 xla_accounting_err_pkg.build_message
78808 (p_appli_s_name => 'XLA'
78809 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
78810 ,p_token_1 => 'LINE_NUMBER'
78811 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
78812 ,p_token_2 => 'LINE_TYPE_NAME'
78813 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
78814 l_component_type
78815 ,l_component_code
78816 ,l_component_type_code
78817 ,l_component_appl_id
78818 ,l_amb_context_code
78819 ,l_entity_code
78820 ,l_event_class_code
78821 )
78822 ,p_token_3 => 'OWNER'
78823 ,p_value_3 => xla_lookups_pkg.get_meaning(
78824 p_lookup_type => 'XLA_OWNER_TYPE'
78825 ,p_lookup_code => l_component_type_code
78826 )
78827 ,p_token_4 => 'PRODUCT_NAME'
78828 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
78829 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
78830 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
78831 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
78832 ,p_ae_header_id => NULL
78833 );
78834
78835 IF (C_LEVEL_ERROR>= g_log_level) THEN
78836 trace
78837 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
78838 ,p_level => C_LEVEL_ERROR
78839 ,p_module => l_log_module);
78840 END IF;
78841 END IF;
78842 END IF;
78843 --
78844 --
78845 ------------------------------------------------------------------------------------------------
78846 -- 4219869 Business Flow
78847 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
78848 -- Prior Entry. Currently, the following code is always generated.
78849 ------------------------------------------------------------------------------------------------
78850 XLA_AE_LINES_PKG.ValidateCurrentLine;
78851
78852 ------------------------------------------------------------------------------------
78853 -- 4219869 Business Flow
78854 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
78855 ------------------------------------------------------------------------------------
78856 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
78857
78858 ----------------------------------------------------------------------------------
78859 -- 4219869 Business Flow
78860 -- Update journal entry status -- Need to generate this within IF <condition>
78861 ----------------------------------------------------------------------------------
78862 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
78863 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
78864 ,p_balance_type_code => l_balance_type_code
78865 );
78866
78867 -------------------------------------------------------------------------------------------
78868 -- 4262811 - Generate the Accrual Reversal lines
78869 -------------------------------------------------------------------------------------------
78870 BEGIN
78871 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
78872 (g_array_event(p_event_id).array_value_num('header_index'));
78873 IF l_acc_rev_flag IS NULL THEN
78874 l_acc_rev_flag := 'N';
78875 END IF;
78876 EXCEPTION
78877 WHEN OTHERS THEN
78878 l_acc_rev_flag := 'N';
78879 END;
78880 --
78881 IF (l_acc_rev_flag = 'Y') THEN
78882
78883 -- 4645092 ------------------------------------------------------------------------------
78884 -- To allow MPA report to determine if it should generate report process
78885 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
78886 ------------------------------------------------------------------------------------------
78887
78888 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
78889 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
78890 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
78891 -- call ADRs
78892 -- Bug 4922099
78893 --
78894 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
78895 (NVL(l_actual_upg_option, 'N') = 'O') OR
78896 (NVL(l_enc_upg_option, 'N') = 'O')
78897 )
78898 THEN
78899 NULL;
78900 --
78901 --
78902
78903 l_ccid := AcctDerRule_4(
78904 p_application_id => p_application_id
78905 , p_ae_header_id => l_ae_header_id
78906 , p_source_4 => p_source_4
78907 , x_transaction_coa_id => l_adr_transaction_coa_id
78908 , x_accounting_coa_id => l_adr_accounting_coa_id
78909 , x_value_type_code => l_adr_value_type_code
78910 , p_side => 'NA'
78911 );
78912
78913 xla_ae_lines_pkg.set_ccid(
78914 p_code_combination_id => l_ccid
78915 , p_value_type_code => l_adr_value_type_code
78916 , p_transaction_coa_id => l_adr_transaction_coa_id
78917 , p_accounting_coa_id => l_adr_accounting_coa_id
78918 , p_adr_code => 'CST_DEFAULT'
78919 , p_adr_type_code => 'S'
78920 , p_component_type => l_component_type
78921 , p_component_code => l_component_code
78922 , p_component_type_code => l_component_type_code
78923 , p_component_appl_id => l_component_appl_id
78924 , p_amb_context_code => l_amb_context_code
78925 , p_side => 'NA'
78926 );
78927
78928
78929 --
78930 --
78931 END IF;
78932
78933 --
78934 -- Update the line information that should be overwritten
78935 --
78936 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
78937 p_header_num => 1);
78938 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
78939
78940 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
78941
78942 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
78943 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
78944 END IF;
78945
78946 --
78947 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
78948 --
78949 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
78950 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
78951 ELSE
78952 ---------------------------------------------------------------------------------------------------
78953 -- 4262811a Switch Sign
78954 ---------------------------------------------------------------------------------------------------
78955 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
78956 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
78957 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
78958 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
78959 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
78960 -- 5132302
78961 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
78962 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
78963
78964 END IF;
78965
78966 -- 4955764
78967 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
78968 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
78969
78970
78971 XLA_AE_LINES_PKG.ValidateCurrentLine;
78972 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
78973
78974 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
78975 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
78976 ,p_balance_type_code => l_balance_type_code);
78977
78978 END IF;
78979
78980 -----------------------------------------------------------------------------------------
78981 -- 4262811 Multiperiod Accounting
78982 -----------------------------------------------------------------------------------------
78983 -- No MPA option is assigned.
78984
78985
78986 END IF;
78987 END IF;
78988 --
78989
78990 --
78991 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
78992 trace
78993 (p_msg => 'END of AcctLineType_144'
78994 ,p_level => C_LEVEL_PROCEDURE
78995 ,p_module => l_log_module);
78996 END IF;
78997 --
78998 EXCEPTION
78999 WHEN xla_exceptions_pkg.application_exception THEN
79000 RAISE;
79001 WHEN OTHERS THEN
79002 xla_exceptions_pkg.raise_message
79003 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_144');
79004 END AcctLineType_144;
79005 --
79006
79007 ---------------------------------------
79008 --
79009 -- PRIVATE FUNCTION
79010 -- AcctLineType_145
79011 --
79012 ---------------------------------------
79013 PROCEDURE AcctLineType_145 (
79014 p_application_id IN NUMBER
79015 ,p_event_id IN NUMBER
79016 ,p_calculate_acctd_flag IN VARCHAR2
79017 ,p_calculate_g_l_flag IN VARCHAR2
79018 ,p_actual_flag IN OUT VARCHAR2
79019 ,p_balance_type_code OUT VARCHAR2
79020 ,p_gain_or_loss_ref OUT VARCHAR2
79021
79022 --Cost Management Default Account
79023 , p_source_4 IN NUMBER
79024 --Applied to Application ID
79025 , p_source_6 IN NUMBER
79026 --Applied to Distribution Link Type
79027 , p_source_7 IN VARCHAR2
79028 --Applied to Entity Code
79029 , p_source_8 IN VARCHAR2
79030 --DISTRIBUTION_IDENTIFIER
79031 , p_source_11 IN NUMBER
79032 --Distribution Type
79033 , p_source_12 IN VARCHAR2
79034 , p_source_12_meaning IN VARCHAR2
79035 --Encumbrance Reversal Amount Entered
79036 , p_source_14 IN NUMBER
79037 --Entered Currency Code
79038 , p_source_15 IN VARCHAR2
79039 --Transaction Encumbrance Reversal Amount
79040 , p_source_16 IN NUMBER
79041 --Entered Amount
79042 , p_source_18 IN NUMBER
79043 --Currency Conversion Date
79044 , p_source_19 IN DATE
79045 --Currency Conversion Rate
79046 , p_source_20 IN NUMBER
79047 --Currency Conversion Type
79048 , p_source_21 IN VARCHAR2
79049 --Accounted Amount
79050 , p_source_22 IN NUMBER
79051 --Accounting Line Type
79052 , p_source_24 IN NUMBER
79053 --Costing Encumbrance Upgrade Option
79054 , p_source_27 IN VARCHAR2
79055 --TXN_PO_DISTRIBUTION_ID
79056 , p_source_28 IN NUMBER
79057 --TXN_PO_HEADER_ID
79058 , p_source_29 IN NUMBER
79059 --Requisition Budget Account
79060 , p_source_30 IN NUMBER
79061 --Requisition Encumbrance Type Identifier
79062 , p_source_31 IN NUMBER
79063 )
79064 IS
79065
79066 l_component_type VARCHAR2(80);
79067 l_component_code VARCHAR2(30);
79068 l_component_type_code VARCHAR2(1);
79069 l_component_appl_id INTEGER;
79070 l_amb_context_code VARCHAR2(30);
79071 l_entity_code VARCHAR2(30);
79072 l_event_class_code VARCHAR2(30);
79073 l_ae_header_id NUMBER;
79074 l_event_type_code VARCHAR2(30);
79075 l_line_definition_code VARCHAR2(30);
79076 l_line_definition_owner_code VARCHAR2(1);
79077 --
79078 -- adr variables
79079 l_segment VARCHAR2(30);
79080 l_ccid NUMBER;
79081 l_adr_transaction_coa_id NUMBER;
79082 l_adr_accounting_coa_id NUMBER;
79083 l_adr_flexfield_segment_code VARCHAR2(30);
79084 l_adr_flex_value_set_id NUMBER;
79085 l_adr_value_type_code VARCHAR2(30);
79086 l_adr_value_combination_id NUMBER;
79087 l_adr_value_segment_code VARCHAR2(30);
79088
79089 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
79090 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
79091 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
79092 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
79093
79094 -- 4262811 Variables ------------------------------------------------------------------------------------------
79095 l_entered_amt_idx NUMBER;
79096 l_accted_amt_idx NUMBER;
79097 l_acc_rev_flag VARCHAR2(1);
79098 l_accrual_line_num NUMBER;
79099 l_tmp_amt NUMBER;
79100 l_acc_rev_natural_side_code VARCHAR2(1);
79101
79102 l_num_entries NUMBER;
79103 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
79104 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
79105 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
79106 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
79107 l_recog_line_1 NUMBER;
79108 l_recog_line_2 NUMBER;
79109
79110 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
79111 l_bflow_applied_to_amt NUMBER; -- 5132302
79112 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
79113
79114 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
79115
79116 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
79117 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
79118
79119 ---------------------------------------------------------------------------------------------------------------
79120
79121
79122 --
79123 -- bulk performance
79124 --
79125 l_balance_type_code VARCHAR2(1);
79126 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
79127 l_log_module VARCHAR2(240);
79128
79129 --
79130 -- Upgrade strategy
79131 --
79132 l_actual_upg_option VARCHAR2(1);
79133 l_enc_upg_option VARCHAR2(1);
79134
79135 --
79136 BEGIN
79137 --
79138 IF g_log_enabled THEN
79139 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_145';
79140 END IF;
79141 --
79142 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
79143
79144 trace
79145 (p_msg => 'BEGIN of AcctLineType_145'
79146 ,p_level => C_LEVEL_PROCEDURE
79147 ,p_module => l_log_module);
79148
79149 END IF;
79150 --
79151 l_component_type := 'AMB_JLT';
79152 l_component_code := 'INVENTORY_VALUATION';
79153 l_component_type_code := 'S';
79154 l_component_appl_id := 707;
79155 l_amb_context_code := 'DEFAULT';
79156 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
79157 l_event_class_code := 'FOB_SHIP_RECIPIENT_RCPT';
79158 l_event_type_code := 'FOB_SHIP_RECIPIENT_RCPT_ALL';
79159 l_line_definition_owner_code := 'S';
79160 l_line_definition_code := 'FOB_SHIP_RECIPIENT_RCPT';
79161 --
79162 l_balance_type_code := 'A';
79163 l_segment := NULL;
79164 l_ccid := NULL;
79165 l_adr_transaction_coa_id := NULL;
79166 l_adr_accounting_coa_id := NULL;
79167 l_adr_flexfield_segment_code := NULL;
79168 l_adr_flex_value_set_id := NULL;
79169 l_adr_value_type_code := NULL;
79170 l_adr_value_combination_id := NULL;
79171 l_adr_value_segment_code := NULL;
79172
79173 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
79174 l_bflow_class_code := ''; -- 4219869 Business Flow
79175 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
79176 l_budgetary_control_flag := 'N';
79177
79178 l_bflow_applied_to_amt_idx := NULL; -- 5132302
79179 l_bflow_applied_to_amt := NULL; -- 5132302
79180 l_entered_amt_idx := NULL; -- 4262811
79181 l_accted_amt_idx := NULL; -- 4262811
79182 l_acc_rev_flag := NULL; -- 4262811
79183 l_accrual_line_num := NULL; -- 4262811
79184 l_tmp_amt := NULL; -- 4262811
79185 --
79186
79187 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
79188 l_balance_type_code <> 'B' THEN
79189 IF NVL(p_source_24,9E125) = 1
79190 THEN
79191
79192 --
79193 XLA_AE_LINES_PKG.SetNewLine;
79194
79195 p_balance_type_code := l_balance_type_code;
79196 -- set the flag so later we will know whether the gain loss line needs to be created
79197
79198 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
79199 p_actual_flag :='A';
79200 END IF;
79201
79202 --
79203 -- bulk performance
79204 --
79205 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
79206 p_header_num => 0); -- 4262811
79207 --
79208 -- set accounting line options
79209 --
79210 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
79211 p_natural_side_code => 'D'
79212 , p_gain_or_loss_flag => 'N'
79213 , p_gl_transfer_mode_code => 'S'
79214 , p_acct_entry_type_code => 'A'
79215 , p_switch_side_flag => 'Y'
79216 , p_merge_duplicate_code => 'N'
79217 );
79218 --
79219 l_acc_rev_natural_side_code := 'C'; -- 4262811
79220 --
79221 --
79222 -- set accounting line type info
79223 --
79224 xla_ae_lines_pkg.SetAcctLineType
79225 (p_component_type => l_component_type
79226 ,p_event_type_code => l_event_type_code
79227 ,p_line_definition_owner_code => l_line_definition_owner_code
79228 ,p_line_definition_code => l_line_definition_code
79229 ,p_accounting_line_code => l_component_code
79230 ,p_accounting_line_type_code => l_component_type_code
79231 ,p_accounting_line_appl_id => l_component_appl_id
79232 ,p_amb_context_code => l_amb_context_code
79233 ,p_entity_code => l_entity_code
79234 ,p_event_class_code => l_event_class_code);
79235 --
79236 -- set accounting class
79237 --
79238 xla_ae_lines_pkg.SetAcctClass(
79239 p_accounting_class_code => 'INVENTORY_VALUATION'
79240 , p_ae_header_id => l_ae_header_id
79241 );
79242
79243 --
79244 -- set rounding class
79245 --
79246 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
79247 'INVENTORY_VALUATION';
79248
79249 --
79250 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
79251 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
79252 --
79253 -- bulk performance
79254 --
79255 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
79256
79257 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
79258 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
79259
79260 -- 4955764
79261 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
79262 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
79263
79264 -- 4458381 Public Sector Enh
79265
79266 --
79267 -- set accounting attributes for the line type
79268 --
79269 l_entered_amt_idx := 17;
79270 l_accted_amt_idx := 22;
79271 l_bflow_applied_to_amt_idx := NULL; -- 5132302
79272 l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
79273 l_rec_acct_attrs.array_num_value(1) := p_source_6;
79274 l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
79275 l_rec_acct_attrs.array_char_value(2) := p_source_7;
79276 l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
79277 l_rec_acct_attrs.array_char_value(3) := p_source_8;
79278 l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
79279 l_rec_acct_attrs.array_num_value(4) := to_char(p_source_28);
79280 l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
79281 l_rec_acct_attrs.array_num_value(5) := to_char(p_source_29);
79282 l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
79283 l_rec_acct_attrs.array_num_value(6) := to_char(p_source_11);
79284 l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
79285 l_rec_acct_attrs.array_char_value(7) := p_source_12;
79286 l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
79287 l_rec_acct_attrs.array_num_value(8) := TO_NUMBER(p_source_30);
79288 l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
79289 l_rec_acct_attrs.array_num_value(9) := p_source_14;
79290 l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
79291 l_rec_acct_attrs.array_char_value(10) := p_source_15;
79292 l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
79293 l_rec_acct_attrs.array_num_value(11) := p_source_16;
79294 l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
79295 l_rec_acct_attrs.array_num_value(12) := TO_NUMBER(p_source_30);
79296 l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
79297 l_rec_acct_attrs.array_num_value(13) := p_source_14;
79298 l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
79299 l_rec_acct_attrs.array_char_value(14) := p_source_15;
79300 l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
79301 l_rec_acct_attrs.array_num_value(15) := p_source_16;
79302 l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
79303 l_rec_acct_attrs.array_char_value(16) := p_source_27;
79304 l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
79305 l_rec_acct_attrs.array_num_value(17) := p_source_18;
79306 l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
79307 l_rec_acct_attrs.array_char_value(18) := p_source_15;
79308 l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
79309 l_rec_acct_attrs.array_date_value(19) := p_source_19;
79310 l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
79311 l_rec_acct_attrs.array_num_value(20) := p_source_20;
79312 l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
79313 l_rec_acct_attrs.array_char_value(21) := p_source_21;
79314 l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
79315 l_rec_acct_attrs.array_num_value(22) := p_source_22;
79316 l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
79317 l_rec_acct_attrs.array_num_value(23) := p_source_31;
79318 l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
79319 l_rec_acct_attrs.array_num_value(24) := p_source_31;
79320
79321 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
79322 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
79323
79324 ---------------------------------------------------------------------------------------------------------------
79325 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
79326 ---------------------------------------------------------------------------------------------------------------
79327 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
79328
79329 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
79330 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
79331
79332 IF xla_accounting_cache_pkg.GetValueChar
79333 (p_source_code => 'LEDGER_CATEGORY_CODE'
79334 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
79335 AND l_bflow_method_code = 'PRIOR_ENTRY'
79336 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
79337 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
79338 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
79339 )
79340 THEN
79341 xla_ae_lines_pkg.BflowUpgEntry
79342 (p_business_method_code => l_bflow_method_code
79343 ,p_business_class_code => l_bflow_class_code
79344 ,p_balance_type => l_balance_type_code);
79345 ELSE
79346 NULL;
79347 -- No business flow processing for business flow method of NONE.
79348 END IF;
79349
79350 --
79351 -- call analytical criteria
79352 --
79353
79354 --
79355 -- call description
79356 --
79357 -- No description or it is inherited.
79358 --
79359 -- call ADRs
79360 -- Bug 4922099
79361 --
79362 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
79363 (NVL(l_actual_upg_option, 'N') = 'O') OR
79364 (NVL(l_enc_upg_option, 'N') = 'O')
79365 )
79366 THEN
79367 NULL;
79368 --
79369 --
79370
79371 l_ccid := AcctDerRule_4(
79372 p_application_id => p_application_id
79373 , p_ae_header_id => l_ae_header_id
79374 , p_source_4 => p_source_4
79375 , x_transaction_coa_id => l_adr_transaction_coa_id
79376 , x_accounting_coa_id => l_adr_accounting_coa_id
79377 , x_value_type_code => l_adr_value_type_code
79378 , p_side => 'NA'
79379 );
79380
79381 xla_ae_lines_pkg.set_ccid(
79382 p_code_combination_id => l_ccid
79383 , p_value_type_code => l_adr_value_type_code
79384 , p_transaction_coa_id => l_adr_transaction_coa_id
79385 , p_accounting_coa_id => l_adr_accounting_coa_id
79386 , p_adr_code => 'CST_DEFAULT'
79387 , p_adr_type_code => 'S'
79388 , p_component_type => l_component_type
79389 , p_component_code => l_component_code
79390 , p_component_type_code => l_component_type_code
79391 , p_component_appl_id => l_component_appl_id
79392 , p_amb_context_code => l_amb_context_code
79393 , p_side => 'NA'
79394 );
79395
79396
79397 --
79398 --
79399 END IF;
79400 --
79401 -- Bug 4922099
79402 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
79403 (NVL(l_enc_upg_option, 'N') = 'O')
79404 ) AND
79405 (l_bflow_method_code = 'PRIOR_ENTRY')
79406 )
79407 THEN
79408 IF
79409 --
79410 1 = 2
79411 --
79412 THEN
79413 xla_accounting_err_pkg.build_message
79414 (p_appli_s_name => 'XLA'
79415 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
79416 ,p_token_1 => 'LINE_NUMBER'
79417 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
79418 ,p_token_2 => 'LINE_TYPE_NAME'
79419 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
79420 l_component_type
79421 ,l_component_code
79422 ,l_component_type_code
79423 ,l_component_appl_id
79424 ,l_amb_context_code
79425 ,l_entity_code
79426 ,l_event_class_code
79427 )
79428 ,p_token_3 => 'OWNER'
79429 ,p_value_3 => xla_lookups_pkg.get_meaning(
79430 p_lookup_type => 'XLA_OWNER_TYPE'
79431 ,p_lookup_code => l_component_type_code
79432 )
79433 ,p_token_4 => 'PRODUCT_NAME'
79434 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
79435 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
79436 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
79437 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
79438 ,p_ae_header_id => NULL
79439 );
79440
79441 IF (C_LEVEL_ERROR>= g_log_level) THEN
79442 trace
79443 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
79444 ,p_level => C_LEVEL_ERROR
79445 ,p_module => l_log_module);
79446 END IF;
79447 END IF;
79448 END IF;
79449 --
79450 --
79451 ------------------------------------------------------------------------------------------------
79452 -- 4219869 Business Flow
79453 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
79454 -- Prior Entry. Currently, the following code is always generated.
79455 ------------------------------------------------------------------------------------------------
79456 XLA_AE_LINES_PKG.ValidateCurrentLine;
79457
79458 ------------------------------------------------------------------------------------
79459 -- 4219869 Business Flow
79460 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
79461 ------------------------------------------------------------------------------------
79462 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
79463
79464 ----------------------------------------------------------------------------------
79465 -- 4219869 Business Flow
79466 -- Update journal entry status -- Need to generate this within IF <condition>
79467 ----------------------------------------------------------------------------------
79468 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
79469 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
79470 ,p_balance_type_code => l_balance_type_code
79471 );
79472
79473 -------------------------------------------------------------------------------------------
79474 -- 4262811 - Generate the Accrual Reversal lines
79475 -------------------------------------------------------------------------------------------
79476 BEGIN
79477 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
79478 (g_array_event(p_event_id).array_value_num('header_index'));
79479 IF l_acc_rev_flag IS NULL THEN
79480 l_acc_rev_flag := 'N';
79481 END IF;
79482 EXCEPTION
79483 WHEN OTHERS THEN
79484 l_acc_rev_flag := 'N';
79485 END;
79486 --
79487 IF (l_acc_rev_flag = 'Y') THEN
79488
79489 -- 4645092 ------------------------------------------------------------------------------
79490 -- To allow MPA report to determine if it should generate report process
79491 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
79492 ------------------------------------------------------------------------------------------
79493
79494 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
79495 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
79496 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
79497 -- call ADRs
79498 -- Bug 4922099
79499 --
79500 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
79501 (NVL(l_actual_upg_option, 'N') = 'O') OR
79502 (NVL(l_enc_upg_option, 'N') = 'O')
79503 )
79504 THEN
79505 NULL;
79506 --
79507 --
79508
79509 l_ccid := AcctDerRule_4(
79510 p_application_id => p_application_id
79511 , p_ae_header_id => l_ae_header_id
79512 , p_source_4 => p_source_4
79513 , x_transaction_coa_id => l_adr_transaction_coa_id
79514 , x_accounting_coa_id => l_adr_accounting_coa_id
79515 , x_value_type_code => l_adr_value_type_code
79516 , p_side => 'NA'
79517 );
79518
79519 xla_ae_lines_pkg.set_ccid(
79520 p_code_combination_id => l_ccid
79521 , p_value_type_code => l_adr_value_type_code
79522 , p_transaction_coa_id => l_adr_transaction_coa_id
79523 , p_accounting_coa_id => l_adr_accounting_coa_id
79524 , p_adr_code => 'CST_DEFAULT'
79525 , p_adr_type_code => 'S'
79526 , p_component_type => l_component_type
79527 , p_component_code => l_component_code
79528 , p_component_type_code => l_component_type_code
79529 , p_component_appl_id => l_component_appl_id
79530 , p_amb_context_code => l_amb_context_code
79531 , p_side => 'NA'
79532 );
79533
79534
79535 --
79536 --
79537 END IF;
79538
79539 --
79540 -- Update the line information that should be overwritten
79541 --
79542 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
79543 p_header_num => 1);
79544 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
79545
79546 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
79547
79548 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
79549 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
79550 END IF;
79551
79552 --
79553 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
79554 --
79555 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
79556 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
79557 ELSE
79558 ---------------------------------------------------------------------------------------------------
79559 -- 4262811a Switch Sign
79560 ---------------------------------------------------------------------------------------------------
79561 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
79562 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
79563 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
79564 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
79565 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
79566 -- 5132302
79567 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
79568 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
79569
79570 END IF;
79571
79572 -- 4955764
79573 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
79574 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
79575
79576
79577 XLA_AE_LINES_PKG.ValidateCurrentLine;
79578 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
79579
79580 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
79581 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
79582 ,p_balance_type_code => l_balance_type_code);
79583
79584 END IF;
79585
79586 -----------------------------------------------------------------------------------------
79587 -- 4262811 Multiperiod Accounting
79588 -----------------------------------------------------------------------------------------
79589 -- No MPA option is assigned.
79590
79591
79592 END IF;
79593 END IF;
79594 --
79595
79596 --
79597 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
79598 trace
79599 (p_msg => 'END of AcctLineType_145'
79600 ,p_level => C_LEVEL_PROCEDURE
79601 ,p_module => l_log_module);
79602 END IF;
79603 --
79604 EXCEPTION
79605 WHEN xla_exceptions_pkg.application_exception THEN
79606 RAISE;
79607 WHEN OTHERS THEN
79608 xla_exceptions_pkg.raise_message
79609 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_145');
79610 END AcctLineType_145;
79611 --
79612
79613 ---------------------------------------
79614 --
79615 -- PRIVATE FUNCTION
79616 -- AcctLineType_146
79617 --
79618 ---------------------------------------
79619 PROCEDURE AcctLineType_146 (
79620 p_application_id IN NUMBER
79621 ,p_event_id IN NUMBER
79622 ,p_calculate_acctd_flag IN VARCHAR2
79623 ,p_calculate_g_l_flag IN VARCHAR2
79624 ,p_actual_flag IN OUT VARCHAR2
79625 ,p_balance_type_code OUT VARCHAR2
79626 ,p_gain_or_loss_ref OUT VARCHAR2
79627
79628 --Cost Management Default Account
79629 , p_source_4 IN NUMBER
79630 --DISTRIBUTION_IDENTIFIER
79631 , p_source_11 IN NUMBER
79632 --Distribution Type
79633 , p_source_12 IN VARCHAR2
79634 , p_source_12_meaning IN VARCHAR2
79635 --Entered Currency Code
79636 , p_source_15 IN VARCHAR2
79637 --Entered Amount
79638 , p_source_18 IN NUMBER
79639 --Currency Conversion Date
79640 , p_source_19 IN DATE
79641 --Currency Conversion Rate
79642 , p_source_20 IN NUMBER
79643 --Currency Conversion Type
79644 , p_source_21 IN VARCHAR2
79645 --Accounted Amount
79646 , p_source_22 IN NUMBER
79647 --Accounting Line Type
79648 , p_source_24 IN NUMBER
79649 )
79650 IS
79651
79652 l_component_type VARCHAR2(80);
79653 l_component_code VARCHAR2(30);
79654 l_component_type_code VARCHAR2(1);
79655 l_component_appl_id INTEGER;
79656 l_amb_context_code VARCHAR2(30);
79657 l_entity_code VARCHAR2(30);
79658 l_event_class_code VARCHAR2(30);
79659 l_ae_header_id NUMBER;
79660 l_event_type_code VARCHAR2(30);
79661 l_line_definition_code VARCHAR2(30);
79662 l_line_definition_owner_code VARCHAR2(1);
79663 --
79664 -- adr variables
79665 l_segment VARCHAR2(30);
79666 l_ccid NUMBER;
79667 l_adr_transaction_coa_id NUMBER;
79668 l_adr_accounting_coa_id NUMBER;
79669 l_adr_flexfield_segment_code VARCHAR2(30);
79670 l_adr_flex_value_set_id NUMBER;
79671 l_adr_value_type_code VARCHAR2(30);
79672 l_adr_value_combination_id NUMBER;
79673 l_adr_value_segment_code VARCHAR2(30);
79674
79675 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
79676 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
79677 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
79678 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
79679
79680 -- 4262811 Variables ------------------------------------------------------------------------------------------
79681 l_entered_amt_idx NUMBER;
79682 l_accted_amt_idx NUMBER;
79683 l_acc_rev_flag VARCHAR2(1);
79684 l_accrual_line_num NUMBER;
79685 l_tmp_amt NUMBER;
79686 l_acc_rev_natural_side_code VARCHAR2(1);
79687
79688 l_num_entries NUMBER;
79689 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
79690 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
79691 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
79692 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
79693 l_recog_line_1 NUMBER;
79694 l_recog_line_2 NUMBER;
79695
79696 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
79697 l_bflow_applied_to_amt NUMBER; -- 5132302
79698 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
79699
79700 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
79701
79702 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
79703 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
79704
79705 ---------------------------------------------------------------------------------------------------------------
79706
79707
79708 --
79709 -- bulk performance
79710 --
79711 l_balance_type_code VARCHAR2(1);
79712 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
79713 l_log_module VARCHAR2(240);
79714
79715 --
79716 -- Upgrade strategy
79717 --
79718 l_actual_upg_option VARCHAR2(1);
79719 l_enc_upg_option VARCHAR2(1);
79720
79721 --
79722 BEGIN
79723 --
79724 IF g_log_enabled THEN
79725 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_146';
79726 END IF;
79727 --
79728 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
79729
79730 trace
79731 (p_msg => 'BEGIN of AcctLineType_146'
79732 ,p_level => C_LEVEL_PROCEDURE
79733 ,p_module => l_log_module);
79734
79735 END IF;
79736 --
79737 l_component_type := 'AMB_JLT';
79738 l_component_code := 'INVENTORY_VALUATION';
79739 l_component_type_code := 'S';
79740 l_component_appl_id := 707;
79741 l_amb_context_code := 'DEFAULT';
79742 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
79743 l_event_class_code := 'INTRAORG_TXFR';
79744 l_event_type_code := 'INTRAORG_TXFR_ALL';
79745 l_line_definition_owner_code := 'S';
79746 l_line_definition_code := 'INTRAORG_TXFR';
79747 --
79748 l_balance_type_code := 'A';
79749 l_segment := NULL;
79750 l_ccid := NULL;
79751 l_adr_transaction_coa_id := NULL;
79752 l_adr_accounting_coa_id := NULL;
79753 l_adr_flexfield_segment_code := NULL;
79754 l_adr_flex_value_set_id := NULL;
79755 l_adr_value_type_code := NULL;
79756 l_adr_value_combination_id := NULL;
79757 l_adr_value_segment_code := NULL;
79758
79759 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
79760 l_bflow_class_code := ''; -- 4219869 Business Flow
79761 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
79762 l_budgetary_control_flag := 'N';
79763
79764 l_bflow_applied_to_amt_idx := NULL; -- 5132302
79765 l_bflow_applied_to_amt := NULL; -- 5132302
79766 l_entered_amt_idx := NULL; -- 4262811
79767 l_accted_amt_idx := NULL; -- 4262811
79768 l_acc_rev_flag := NULL; -- 4262811
79769 l_accrual_line_num := NULL; -- 4262811
79770 l_tmp_amt := NULL; -- 4262811
79771 --
79772
79773 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
79774 l_balance_type_code <> 'B' THEN
79775 IF NVL(p_source_24,9E125) = 1
79776 THEN
79777
79778 --
79779 XLA_AE_LINES_PKG.SetNewLine;
79780
79781 p_balance_type_code := l_balance_type_code;
79782 -- set the flag so later we will know whether the gain loss line needs to be created
79783
79784 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
79785 p_actual_flag :='A';
79786 END IF;
79787
79788 --
79789 -- bulk performance
79790 --
79791 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
79792 p_header_num => 0); -- 4262811
79793 --
79794 -- set accounting line options
79795 --
79796 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
79797 p_natural_side_code => 'D'
79798 , p_gain_or_loss_flag => 'N'
79799 , p_gl_transfer_mode_code => 'S'
79800 , p_acct_entry_type_code => 'A'
79801 , p_switch_side_flag => 'Y'
79802 , p_merge_duplicate_code => 'N'
79803 );
79804 --
79805 l_acc_rev_natural_side_code := 'C'; -- 4262811
79806 --
79807 --
79808 -- set accounting line type info
79809 --
79810 xla_ae_lines_pkg.SetAcctLineType
79811 (p_component_type => l_component_type
79812 ,p_event_type_code => l_event_type_code
79813 ,p_line_definition_owner_code => l_line_definition_owner_code
79814 ,p_line_definition_code => l_line_definition_code
79815 ,p_accounting_line_code => l_component_code
79816 ,p_accounting_line_type_code => l_component_type_code
79817 ,p_accounting_line_appl_id => l_component_appl_id
79818 ,p_amb_context_code => l_amb_context_code
79819 ,p_entity_code => l_entity_code
79820 ,p_event_class_code => l_event_class_code);
79821 --
79822 -- set accounting class
79823 --
79824 xla_ae_lines_pkg.SetAcctClass(
79825 p_accounting_class_code => 'INVENTORY_VALUATION'
79826 , p_ae_header_id => l_ae_header_id
79827 );
79828
79829 --
79830 -- set rounding class
79831 --
79832 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
79833 'INVENTORY_VALUATION';
79834
79835 --
79836 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
79837 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
79838 --
79839 -- bulk performance
79840 --
79841 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
79842
79843 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
79844 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
79845
79846 -- 4955764
79847 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
79848 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
79849
79850 -- 4458381 Public Sector Enh
79851
79852 --
79853 -- set accounting attributes for the line type
79854 --
79855 l_entered_amt_idx := 3;
79856 l_accted_amt_idx := 8;
79857 l_bflow_applied_to_amt_idx := NULL; -- 5132302
79858 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
79859 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
79860 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
79861 l_rec_acct_attrs.array_char_value(2) := p_source_12;
79862 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
79863 l_rec_acct_attrs.array_num_value(3) := p_source_18;
79864 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
79865 l_rec_acct_attrs.array_char_value(4) := p_source_15;
79866 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
79867 l_rec_acct_attrs.array_date_value(5) := p_source_19;
79868 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
79869 l_rec_acct_attrs.array_num_value(6) := p_source_20;
79870 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
79871 l_rec_acct_attrs.array_char_value(7) := p_source_21;
79872 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
79873 l_rec_acct_attrs.array_num_value(8) := p_source_22;
79874
79875 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
79876 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
79877
79878 ---------------------------------------------------------------------------------------------------------------
79879 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
79880 ---------------------------------------------------------------------------------------------------------------
79881 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
79882
79883 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
79884 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
79885
79886 IF xla_accounting_cache_pkg.GetValueChar
79887 (p_source_code => 'LEDGER_CATEGORY_CODE'
79888 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
79889 AND l_bflow_method_code = 'PRIOR_ENTRY'
79890 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
79891 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
79892 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
79893 )
79894 THEN
79895 xla_ae_lines_pkg.BflowUpgEntry
79896 (p_business_method_code => l_bflow_method_code
79897 ,p_business_class_code => l_bflow_class_code
79898 ,p_balance_type => l_balance_type_code);
79899 ELSE
79900 NULL;
79901 -- No business flow processing for business flow method of NONE.
79902 END IF;
79903
79904 --
79905 -- call analytical criteria
79906 --
79907
79908 --
79909 -- call description
79910 --
79911 -- No description or it is inherited.
79912 --
79913 -- call ADRs
79914 -- Bug 4922099
79915 --
79916 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
79917 (NVL(l_actual_upg_option, 'N') = 'O') OR
79918 (NVL(l_enc_upg_option, 'N') = 'O')
79919 )
79920 THEN
79921 NULL;
79922 --
79923 --
79924
79925 l_ccid := AcctDerRule_4(
79926 p_application_id => p_application_id
79927 , p_ae_header_id => l_ae_header_id
79928 , p_source_4 => p_source_4
79929 , x_transaction_coa_id => l_adr_transaction_coa_id
79930 , x_accounting_coa_id => l_adr_accounting_coa_id
79931 , x_value_type_code => l_adr_value_type_code
79932 , p_side => 'NA'
79933 );
79934
79935 xla_ae_lines_pkg.set_ccid(
79936 p_code_combination_id => l_ccid
79937 , p_value_type_code => l_adr_value_type_code
79938 , p_transaction_coa_id => l_adr_transaction_coa_id
79939 , p_accounting_coa_id => l_adr_accounting_coa_id
79940 , p_adr_code => 'CST_DEFAULT'
79941 , p_adr_type_code => 'S'
79942 , p_component_type => l_component_type
79943 , p_component_code => l_component_code
79944 , p_component_type_code => l_component_type_code
79945 , p_component_appl_id => l_component_appl_id
79946 , p_amb_context_code => l_amb_context_code
79947 , p_side => 'NA'
79948 );
79949
79950
79951 --
79952 --
79953 END IF;
79954 --
79955 -- Bug 4922099
79956 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
79957 (NVL(l_enc_upg_option, 'N') = 'O')
79958 ) AND
79959 (l_bflow_method_code = 'PRIOR_ENTRY')
79960 )
79961 THEN
79962 IF
79963 --
79964 1 = 2
79965 --
79966 THEN
79967 xla_accounting_err_pkg.build_message
79968 (p_appli_s_name => 'XLA'
79969 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
79970 ,p_token_1 => 'LINE_NUMBER'
79971 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
79972 ,p_token_2 => 'LINE_TYPE_NAME'
79973 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
79974 l_component_type
79975 ,l_component_code
79976 ,l_component_type_code
79977 ,l_component_appl_id
79978 ,l_amb_context_code
79979 ,l_entity_code
79980 ,l_event_class_code
79981 )
79982 ,p_token_3 => 'OWNER'
79983 ,p_value_3 => xla_lookups_pkg.get_meaning(
79984 p_lookup_type => 'XLA_OWNER_TYPE'
79985 ,p_lookup_code => l_component_type_code
79986 )
79987 ,p_token_4 => 'PRODUCT_NAME'
79988 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
79989 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
79990 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
79991 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
79992 ,p_ae_header_id => NULL
79993 );
79994
79995 IF (C_LEVEL_ERROR>= g_log_level) THEN
79996 trace
79997 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
79998 ,p_level => C_LEVEL_ERROR
79999 ,p_module => l_log_module);
80000 END IF;
80001 END IF;
80002 END IF;
80003 --
80004 --
80005 ------------------------------------------------------------------------------------------------
80006 -- 4219869 Business Flow
80007 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
80008 -- Prior Entry. Currently, the following code is always generated.
80009 ------------------------------------------------------------------------------------------------
80010 XLA_AE_LINES_PKG.ValidateCurrentLine;
80011
80012 ------------------------------------------------------------------------------------
80013 -- 4219869 Business Flow
80014 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
80015 ------------------------------------------------------------------------------------
80016 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
80017
80018 ----------------------------------------------------------------------------------
80019 -- 4219869 Business Flow
80020 -- Update journal entry status -- Need to generate this within IF <condition>
80021 ----------------------------------------------------------------------------------
80022 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
80023 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
80024 ,p_balance_type_code => l_balance_type_code
80025 );
80026
80027 -------------------------------------------------------------------------------------------
80028 -- 4262811 - Generate the Accrual Reversal lines
80029 -------------------------------------------------------------------------------------------
80030 BEGIN
80031 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
80032 (g_array_event(p_event_id).array_value_num('header_index'));
80033 IF l_acc_rev_flag IS NULL THEN
80034 l_acc_rev_flag := 'N';
80035 END IF;
80036 EXCEPTION
80037 WHEN OTHERS THEN
80038 l_acc_rev_flag := 'N';
80039 END;
80040 --
80041 IF (l_acc_rev_flag = 'Y') THEN
80042
80043 -- 4645092 ------------------------------------------------------------------------------
80044 -- To allow MPA report to determine if it should generate report process
80045 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
80046 ------------------------------------------------------------------------------------------
80047
80048 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
80049 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
80050 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
80051 -- call ADRs
80052 -- Bug 4922099
80053 --
80054 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
80055 (NVL(l_actual_upg_option, 'N') = 'O') OR
80056 (NVL(l_enc_upg_option, 'N') = 'O')
80057 )
80058 THEN
80059 NULL;
80060 --
80061 --
80062
80063 l_ccid := AcctDerRule_4(
80064 p_application_id => p_application_id
80065 , p_ae_header_id => l_ae_header_id
80066 , p_source_4 => p_source_4
80067 , x_transaction_coa_id => l_adr_transaction_coa_id
80068 , x_accounting_coa_id => l_adr_accounting_coa_id
80069 , x_value_type_code => l_adr_value_type_code
80070 , p_side => 'NA'
80071 );
80072
80073 xla_ae_lines_pkg.set_ccid(
80074 p_code_combination_id => l_ccid
80075 , p_value_type_code => l_adr_value_type_code
80076 , p_transaction_coa_id => l_adr_transaction_coa_id
80077 , p_accounting_coa_id => l_adr_accounting_coa_id
80078 , p_adr_code => 'CST_DEFAULT'
80079 , p_adr_type_code => 'S'
80080 , p_component_type => l_component_type
80081 , p_component_code => l_component_code
80082 , p_component_type_code => l_component_type_code
80083 , p_component_appl_id => l_component_appl_id
80084 , p_amb_context_code => l_amb_context_code
80085 , p_side => 'NA'
80086 );
80087
80088
80089 --
80090 --
80091 END IF;
80092
80093 --
80094 -- Update the line information that should be overwritten
80095 --
80096 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
80097 p_header_num => 1);
80098 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
80099
80100 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
80101
80102 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
80103 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
80104 END IF;
80105
80106 --
80107 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
80108 --
80109 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
80110 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
80111 ELSE
80112 ---------------------------------------------------------------------------------------------------
80113 -- 4262811a Switch Sign
80114 ---------------------------------------------------------------------------------------------------
80115 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
80116 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
80117 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
80118 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
80119 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
80120 -- 5132302
80121 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
80122 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
80123
80124 END IF;
80125
80126 -- 4955764
80127 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
80128 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
80129
80130
80131 XLA_AE_LINES_PKG.ValidateCurrentLine;
80132 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
80133
80134 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
80135 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
80136 ,p_balance_type_code => l_balance_type_code);
80137
80138 END IF;
80139
80140 -----------------------------------------------------------------------------------------
80141 -- 4262811 Multiperiod Accounting
80142 -----------------------------------------------------------------------------------------
80143 -- No MPA option is assigned.
80144
80145
80146 END IF;
80147 END IF;
80148 --
80149
80150 --
80151 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
80152 trace
80153 (p_msg => 'END of AcctLineType_146'
80154 ,p_level => C_LEVEL_PROCEDURE
80155 ,p_module => l_log_module);
80156 END IF;
80157 --
80158 EXCEPTION
80159 WHEN xla_exceptions_pkg.application_exception THEN
80160 RAISE;
80161 WHEN OTHERS THEN
80162 xla_exceptions_pkg.raise_message
80163 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_146');
80164 END AcctLineType_146;
80165 --
80166
80167 ---------------------------------------
80168 --
80169 -- PRIVATE FUNCTION
80170 -- AcctLineType_147
80171 --
80172 ---------------------------------------
80173 PROCEDURE AcctLineType_147 (
80174 p_application_id IN NUMBER
80175 ,p_event_id IN NUMBER
80176 ,p_calculate_acctd_flag IN VARCHAR2
80177 ,p_calculate_g_l_flag IN VARCHAR2
80178 ,p_actual_flag IN OUT VARCHAR2
80179 ,p_balance_type_code OUT VARCHAR2
80180 ,p_gain_or_loss_ref OUT VARCHAR2
80181
80182 --Cost Management Default Account
80183 , p_source_4 IN NUMBER
80184 --DISTRIBUTION_IDENTIFIER
80185 , p_source_11 IN NUMBER
80186 --Distribution Type
80187 , p_source_12 IN VARCHAR2
80188 , p_source_12_meaning IN VARCHAR2
80189 --Entered Currency Code
80190 , p_source_15 IN VARCHAR2
80191 --Entered Amount
80192 , p_source_18 IN NUMBER
80193 --Currency Conversion Date
80194 , p_source_19 IN DATE
80195 --Currency Conversion Rate
80196 , p_source_20 IN NUMBER
80197 --Currency Conversion Type
80198 , p_source_21 IN VARCHAR2
80199 --Accounted Amount
80200 , p_source_22 IN NUMBER
80201 --Accounting Line Type
80202 , p_source_24 IN NUMBER
80203 )
80204 IS
80205
80206 l_component_type VARCHAR2(80);
80207 l_component_code VARCHAR2(30);
80208 l_component_type_code VARCHAR2(1);
80209 l_component_appl_id INTEGER;
80210 l_amb_context_code VARCHAR2(30);
80211 l_entity_code VARCHAR2(30);
80212 l_event_class_code VARCHAR2(30);
80213 l_ae_header_id NUMBER;
80214 l_event_type_code VARCHAR2(30);
80215 l_line_definition_code VARCHAR2(30);
80216 l_line_definition_owner_code VARCHAR2(1);
80217 --
80218 -- adr variables
80219 l_segment VARCHAR2(30);
80220 l_ccid NUMBER;
80221 l_adr_transaction_coa_id NUMBER;
80222 l_adr_accounting_coa_id NUMBER;
80223 l_adr_flexfield_segment_code VARCHAR2(30);
80224 l_adr_flex_value_set_id NUMBER;
80225 l_adr_value_type_code VARCHAR2(30);
80226 l_adr_value_combination_id NUMBER;
80227 l_adr_value_segment_code VARCHAR2(30);
80228
80229 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
80230 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
80231 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
80232 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
80233
80234 -- 4262811 Variables ------------------------------------------------------------------------------------------
80235 l_entered_amt_idx NUMBER;
80236 l_accted_amt_idx NUMBER;
80237 l_acc_rev_flag VARCHAR2(1);
80238 l_accrual_line_num NUMBER;
80239 l_tmp_amt NUMBER;
80240 l_acc_rev_natural_side_code VARCHAR2(1);
80241
80242 l_num_entries NUMBER;
80243 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
80244 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
80245 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
80246 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
80247 l_recog_line_1 NUMBER;
80248 l_recog_line_2 NUMBER;
80249
80250 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
80251 l_bflow_applied_to_amt NUMBER; -- 5132302
80252 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
80253
80254 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
80255
80256 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
80257 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
80258
80259 ---------------------------------------------------------------------------------------------------------------
80260
80261
80262 --
80263 -- bulk performance
80264 --
80265 l_balance_type_code VARCHAR2(1);
80266 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
80267 l_log_module VARCHAR2(240);
80268
80269 --
80270 -- Upgrade strategy
80271 --
80272 l_actual_upg_option VARCHAR2(1);
80273 l_enc_upg_option VARCHAR2(1);
80274
80275 --
80276 BEGIN
80277 --
80278 IF g_log_enabled THEN
80279 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_147';
80280 END IF;
80281 --
80282 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
80283
80284 trace
80285 (p_msg => 'BEGIN of AcctLineType_147'
80286 ,p_level => C_LEVEL_PROCEDURE
80287 ,p_module => l_log_module);
80288
80289 END IF;
80290 --
80291 l_component_type := 'AMB_JLT';
80292 l_component_code := 'INVENTORY_VALUATION';
80293 l_component_type_code := 'S';
80294 l_component_appl_id := 707;
80295 l_amb_context_code := 'DEFAULT';
80296 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
80297 l_event_class_code := 'MISC_ISSUE_RCPT';
80298 l_event_type_code := 'MISC_ISSUE_RCPT_ALL';
80299 l_line_definition_owner_code := 'S';
80300 l_line_definition_code := 'MISC_ISSUE_RCPT';
80301 --
80302 l_balance_type_code := 'A';
80303 l_segment := NULL;
80304 l_ccid := NULL;
80305 l_adr_transaction_coa_id := NULL;
80306 l_adr_accounting_coa_id := NULL;
80307 l_adr_flexfield_segment_code := NULL;
80308 l_adr_flex_value_set_id := NULL;
80309 l_adr_value_type_code := NULL;
80310 l_adr_value_combination_id := NULL;
80311 l_adr_value_segment_code := NULL;
80312
80313 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
80314 l_bflow_class_code := ''; -- 4219869 Business Flow
80315 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
80316 l_budgetary_control_flag := 'N';
80317
80318 l_bflow_applied_to_amt_idx := NULL; -- 5132302
80319 l_bflow_applied_to_amt := NULL; -- 5132302
80320 l_entered_amt_idx := NULL; -- 4262811
80321 l_accted_amt_idx := NULL; -- 4262811
80322 l_acc_rev_flag := NULL; -- 4262811
80323 l_accrual_line_num := NULL; -- 4262811
80324 l_tmp_amt := NULL; -- 4262811
80325 --
80326
80327 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
80328 l_balance_type_code <> 'B' THEN
80329 IF NVL(p_source_24,9E125) = 1
80330 THEN
80331
80332 --
80333 XLA_AE_LINES_PKG.SetNewLine;
80334
80335 p_balance_type_code := l_balance_type_code;
80336 -- set the flag so later we will know whether the gain loss line needs to be created
80337
80338 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
80339 p_actual_flag :='A';
80340 END IF;
80341
80342 --
80343 -- bulk performance
80344 --
80345 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
80346 p_header_num => 0); -- 4262811
80347 --
80348 -- set accounting line options
80349 --
80350 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
80351 p_natural_side_code => 'D'
80352 , p_gain_or_loss_flag => 'N'
80353 , p_gl_transfer_mode_code => 'S'
80354 , p_acct_entry_type_code => 'A'
80355 , p_switch_side_flag => 'Y'
80356 , p_merge_duplicate_code => 'N'
80357 );
80358 --
80359 l_acc_rev_natural_side_code := 'C'; -- 4262811
80360 --
80361 --
80362 -- set accounting line type info
80363 --
80364 xla_ae_lines_pkg.SetAcctLineType
80365 (p_component_type => l_component_type
80366 ,p_event_type_code => l_event_type_code
80367 ,p_line_definition_owner_code => l_line_definition_owner_code
80368 ,p_line_definition_code => l_line_definition_code
80369 ,p_accounting_line_code => l_component_code
80370 ,p_accounting_line_type_code => l_component_type_code
80371 ,p_accounting_line_appl_id => l_component_appl_id
80372 ,p_amb_context_code => l_amb_context_code
80373 ,p_entity_code => l_entity_code
80374 ,p_event_class_code => l_event_class_code);
80375 --
80376 -- set accounting class
80377 --
80378 xla_ae_lines_pkg.SetAcctClass(
80379 p_accounting_class_code => 'INVENTORY_VALUATION'
80380 , p_ae_header_id => l_ae_header_id
80381 );
80382
80383 --
80384 -- set rounding class
80385 --
80386 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
80387 'INVENTORY_VALUATION';
80388
80389 --
80390 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
80391 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
80392 --
80393 -- bulk performance
80394 --
80395 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
80396
80397 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
80398 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
80399
80400 -- 4955764
80401 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
80402 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
80403
80404 -- 4458381 Public Sector Enh
80405
80406 --
80407 -- set accounting attributes for the line type
80408 --
80409 l_entered_amt_idx := 3;
80410 l_accted_amt_idx := 8;
80411 l_bflow_applied_to_amt_idx := NULL; -- 5132302
80412 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
80413 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
80414 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
80415 l_rec_acct_attrs.array_char_value(2) := p_source_12;
80416 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
80417 l_rec_acct_attrs.array_num_value(3) := p_source_18;
80418 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
80419 l_rec_acct_attrs.array_char_value(4) := p_source_15;
80420 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
80421 l_rec_acct_attrs.array_date_value(5) := p_source_19;
80422 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
80423 l_rec_acct_attrs.array_num_value(6) := p_source_20;
80424 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
80425 l_rec_acct_attrs.array_char_value(7) := p_source_21;
80426 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
80427 l_rec_acct_attrs.array_num_value(8) := p_source_22;
80428
80429 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
80430 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
80431
80432 ---------------------------------------------------------------------------------------------------------------
80433 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
80434 ---------------------------------------------------------------------------------------------------------------
80435 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
80436
80437 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
80438 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
80439
80440 IF xla_accounting_cache_pkg.GetValueChar
80441 (p_source_code => 'LEDGER_CATEGORY_CODE'
80442 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
80443 AND l_bflow_method_code = 'PRIOR_ENTRY'
80444 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
80445 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
80446 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
80447 )
80448 THEN
80449 xla_ae_lines_pkg.BflowUpgEntry
80450 (p_business_method_code => l_bflow_method_code
80451 ,p_business_class_code => l_bflow_class_code
80452 ,p_balance_type => l_balance_type_code);
80453 ELSE
80454 NULL;
80455 -- No business flow processing for business flow method of NONE.
80456 END IF;
80457
80458 --
80459 -- call analytical criteria
80460 --
80461
80462 --
80463 -- call description
80464 --
80465 -- No description or it is inherited.
80466 --
80467 -- call ADRs
80468 -- Bug 4922099
80469 --
80470 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
80471 (NVL(l_actual_upg_option, 'N') = 'O') OR
80472 (NVL(l_enc_upg_option, 'N') = 'O')
80473 )
80474 THEN
80475 NULL;
80476 --
80477 --
80478
80479 l_ccid := AcctDerRule_4(
80480 p_application_id => p_application_id
80481 , p_ae_header_id => l_ae_header_id
80482 , p_source_4 => p_source_4
80483 , x_transaction_coa_id => l_adr_transaction_coa_id
80484 , x_accounting_coa_id => l_adr_accounting_coa_id
80485 , x_value_type_code => l_adr_value_type_code
80486 , p_side => 'NA'
80487 );
80488
80489 xla_ae_lines_pkg.set_ccid(
80490 p_code_combination_id => l_ccid
80491 , p_value_type_code => l_adr_value_type_code
80492 , p_transaction_coa_id => l_adr_transaction_coa_id
80493 , p_accounting_coa_id => l_adr_accounting_coa_id
80494 , p_adr_code => 'CST_DEFAULT'
80495 , p_adr_type_code => 'S'
80496 , p_component_type => l_component_type
80497 , p_component_code => l_component_code
80498 , p_component_type_code => l_component_type_code
80499 , p_component_appl_id => l_component_appl_id
80500 , p_amb_context_code => l_amb_context_code
80501 , p_side => 'NA'
80502 );
80503
80504
80505 --
80506 --
80507 END IF;
80508 --
80509 -- Bug 4922099
80510 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
80511 (NVL(l_enc_upg_option, 'N') = 'O')
80512 ) AND
80513 (l_bflow_method_code = 'PRIOR_ENTRY')
80514 )
80515 THEN
80516 IF
80517 --
80518 1 = 2
80519 --
80520 THEN
80521 xla_accounting_err_pkg.build_message
80522 (p_appli_s_name => 'XLA'
80523 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
80524 ,p_token_1 => 'LINE_NUMBER'
80525 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
80526 ,p_token_2 => 'LINE_TYPE_NAME'
80527 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
80528 l_component_type
80529 ,l_component_code
80530 ,l_component_type_code
80531 ,l_component_appl_id
80532 ,l_amb_context_code
80533 ,l_entity_code
80534 ,l_event_class_code
80535 )
80536 ,p_token_3 => 'OWNER'
80537 ,p_value_3 => xla_lookups_pkg.get_meaning(
80538 p_lookup_type => 'XLA_OWNER_TYPE'
80539 ,p_lookup_code => l_component_type_code
80540 )
80541 ,p_token_4 => 'PRODUCT_NAME'
80542 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
80543 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
80544 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
80545 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
80546 ,p_ae_header_id => NULL
80547 );
80548
80549 IF (C_LEVEL_ERROR>= g_log_level) THEN
80550 trace
80551 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
80552 ,p_level => C_LEVEL_ERROR
80553 ,p_module => l_log_module);
80554 END IF;
80555 END IF;
80556 END IF;
80557 --
80558 --
80559 ------------------------------------------------------------------------------------------------
80560 -- 4219869 Business Flow
80561 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
80562 -- Prior Entry. Currently, the following code is always generated.
80563 ------------------------------------------------------------------------------------------------
80564 XLA_AE_LINES_PKG.ValidateCurrentLine;
80565
80566 ------------------------------------------------------------------------------------
80567 -- 4219869 Business Flow
80568 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
80569 ------------------------------------------------------------------------------------
80570 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
80571
80572 ----------------------------------------------------------------------------------
80573 -- 4219869 Business Flow
80574 -- Update journal entry status -- Need to generate this within IF <condition>
80575 ----------------------------------------------------------------------------------
80576 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
80577 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
80578 ,p_balance_type_code => l_balance_type_code
80579 );
80580
80581 -------------------------------------------------------------------------------------------
80582 -- 4262811 - Generate the Accrual Reversal lines
80583 -------------------------------------------------------------------------------------------
80584 BEGIN
80585 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
80586 (g_array_event(p_event_id).array_value_num('header_index'));
80587 IF l_acc_rev_flag IS NULL THEN
80588 l_acc_rev_flag := 'N';
80589 END IF;
80590 EXCEPTION
80591 WHEN OTHERS THEN
80592 l_acc_rev_flag := 'N';
80593 END;
80594 --
80595 IF (l_acc_rev_flag = 'Y') THEN
80596
80597 -- 4645092 ------------------------------------------------------------------------------
80598 -- To allow MPA report to determine if it should generate report process
80599 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
80600 ------------------------------------------------------------------------------------------
80601
80602 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
80603 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
80604 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
80605 -- call ADRs
80606 -- Bug 4922099
80607 --
80608 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
80609 (NVL(l_actual_upg_option, 'N') = 'O') OR
80610 (NVL(l_enc_upg_option, 'N') = 'O')
80611 )
80612 THEN
80613 NULL;
80614 --
80615 --
80616
80617 l_ccid := AcctDerRule_4(
80618 p_application_id => p_application_id
80619 , p_ae_header_id => l_ae_header_id
80620 , p_source_4 => p_source_4
80621 , x_transaction_coa_id => l_adr_transaction_coa_id
80622 , x_accounting_coa_id => l_adr_accounting_coa_id
80623 , x_value_type_code => l_adr_value_type_code
80624 , p_side => 'NA'
80625 );
80626
80627 xla_ae_lines_pkg.set_ccid(
80628 p_code_combination_id => l_ccid
80629 , p_value_type_code => l_adr_value_type_code
80630 , p_transaction_coa_id => l_adr_transaction_coa_id
80631 , p_accounting_coa_id => l_adr_accounting_coa_id
80632 , p_adr_code => 'CST_DEFAULT'
80633 , p_adr_type_code => 'S'
80634 , p_component_type => l_component_type
80635 , p_component_code => l_component_code
80636 , p_component_type_code => l_component_type_code
80637 , p_component_appl_id => l_component_appl_id
80638 , p_amb_context_code => l_amb_context_code
80639 , p_side => 'NA'
80640 );
80641
80642
80643 --
80644 --
80645 END IF;
80646
80647 --
80648 -- Update the line information that should be overwritten
80649 --
80650 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
80651 p_header_num => 1);
80652 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
80653
80654 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
80655
80656 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
80657 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
80658 END IF;
80659
80660 --
80661 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
80662 --
80663 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
80664 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
80665 ELSE
80666 ---------------------------------------------------------------------------------------------------
80667 -- 4262811a Switch Sign
80668 ---------------------------------------------------------------------------------------------------
80669 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
80670 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
80671 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
80672 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
80673 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
80674 -- 5132302
80675 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
80676 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
80677
80678 END IF;
80679
80680 -- 4955764
80681 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
80682 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
80683
80684
80685 XLA_AE_LINES_PKG.ValidateCurrentLine;
80686 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
80687
80688 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
80689 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
80690 ,p_balance_type_code => l_balance_type_code);
80691
80692 END IF;
80693
80694 -----------------------------------------------------------------------------------------
80695 -- 4262811 Multiperiod Accounting
80696 -----------------------------------------------------------------------------------------
80697 -- No MPA option is assigned.
80698
80699
80700 END IF;
80701 END IF;
80702 --
80703
80704 --
80705 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
80706 trace
80707 (p_msg => 'END of AcctLineType_147'
80708 ,p_level => C_LEVEL_PROCEDURE
80709 ,p_module => l_log_module);
80710 END IF;
80711 --
80712 EXCEPTION
80713 WHEN xla_exceptions_pkg.application_exception THEN
80714 RAISE;
80715 WHEN OTHERS THEN
80716 xla_exceptions_pkg.raise_message
80717 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_147');
80718 END AcctLineType_147;
80719 --
80720
80721 ---------------------------------------
80722 --
80723 -- PRIVATE FUNCTION
80724 -- AcctLineType_148
80725 --
80726 ---------------------------------------
80727 PROCEDURE AcctLineType_148 (
80728 p_application_id IN NUMBER
80729 ,p_event_id IN NUMBER
80730 ,p_calculate_acctd_flag IN VARCHAR2
80731 ,p_calculate_g_l_flag IN VARCHAR2
80732 ,p_actual_flag IN OUT VARCHAR2
80733 ,p_balance_type_code OUT VARCHAR2
80734 ,p_gain_or_loss_ref OUT VARCHAR2
80735
80736 --Cost Management Default Account
80737 , p_source_4 IN NUMBER
80738 --DISTRIBUTION_IDENTIFIER
80739 , p_source_11 IN NUMBER
80740 --Distribution Type
80741 , p_source_12 IN VARCHAR2
80742 , p_source_12_meaning IN VARCHAR2
80743 --Entered Currency Code
80744 , p_source_15 IN VARCHAR2
80745 --Entered Amount
80746 , p_source_18 IN NUMBER
80747 --Currency Conversion Date
80748 , p_source_19 IN DATE
80749 --Currency Conversion Rate
80750 , p_source_20 IN NUMBER
80751 --Currency Conversion Type
80752 , p_source_21 IN VARCHAR2
80753 --Accounted Amount
80754 , p_source_22 IN NUMBER
80755 --Accounting Line Type
80756 , p_source_24 IN NUMBER
80757 )
80758 IS
80759
80760 l_component_type VARCHAR2(80);
80761 l_component_code VARCHAR2(30);
80762 l_component_type_code VARCHAR2(1);
80763 l_component_appl_id INTEGER;
80764 l_amb_context_code VARCHAR2(30);
80765 l_entity_code VARCHAR2(30);
80766 l_event_class_code VARCHAR2(30);
80767 l_ae_header_id NUMBER;
80768 l_event_type_code VARCHAR2(30);
80769 l_line_definition_code VARCHAR2(30);
80770 l_line_definition_owner_code VARCHAR2(1);
80771 --
80772 -- adr variables
80773 l_segment VARCHAR2(30);
80774 l_ccid NUMBER;
80775 l_adr_transaction_coa_id NUMBER;
80776 l_adr_accounting_coa_id NUMBER;
80777 l_adr_flexfield_segment_code VARCHAR2(30);
80778 l_adr_flex_value_set_id NUMBER;
80779 l_adr_value_type_code VARCHAR2(30);
80780 l_adr_value_combination_id NUMBER;
80781 l_adr_value_segment_code VARCHAR2(30);
80782
80783 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
80784 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
80785 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
80786 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
80787
80788 -- 4262811 Variables ------------------------------------------------------------------------------------------
80789 l_entered_amt_idx NUMBER;
80790 l_accted_amt_idx NUMBER;
80791 l_acc_rev_flag VARCHAR2(1);
80792 l_accrual_line_num NUMBER;
80793 l_tmp_amt NUMBER;
80794 l_acc_rev_natural_side_code VARCHAR2(1);
80795
80796 l_num_entries NUMBER;
80797 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
80798 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
80799 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
80800 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
80801 l_recog_line_1 NUMBER;
80802 l_recog_line_2 NUMBER;
80803
80804 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
80805 l_bflow_applied_to_amt NUMBER; -- 5132302
80806 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
80807
80808 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
80809
80810 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
80811 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
80812
80813 ---------------------------------------------------------------------------------------------------------------
80814
80815
80816 --
80817 -- bulk performance
80818 --
80819 l_balance_type_code VARCHAR2(1);
80820 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
80821 l_log_module VARCHAR2(240);
80822
80823 --
80824 -- Upgrade strategy
80825 --
80826 l_actual_upg_option VARCHAR2(1);
80827 l_enc_upg_option VARCHAR2(1);
80828
80829 --
80830 BEGIN
80831 --
80832 IF g_log_enabled THEN
80833 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_148';
80834 END IF;
80835 --
80836 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
80837
80838 trace
80839 (p_msg => 'BEGIN of AcctLineType_148'
80840 ,p_level => C_LEVEL_PROCEDURE
80841 ,p_module => l_log_module);
80842
80843 END IF;
80844 --
80845 l_component_type := 'AMB_JLT';
80846 l_component_code := 'INVENTORY_VALUATION';
80847 l_component_type_code := 'S';
80848 l_component_appl_id := 707;
80849 l_amb_context_code := 'DEFAULT';
80850 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
80851 l_event_class_code := 'USER_DEFINE';
80852 l_event_type_code := 'UDIR_INTERORG_SHIP_NO_TP';
80853 l_line_definition_owner_code := 'S';
80854 l_line_definition_code := 'USER_DIR_INTERORG_SHIP_NO_TP';
80855 --
80856 l_balance_type_code := 'A';
80857 l_segment := NULL;
80858 l_ccid := NULL;
80859 l_adr_transaction_coa_id := NULL;
80860 l_adr_accounting_coa_id := NULL;
80861 l_adr_flexfield_segment_code := NULL;
80862 l_adr_flex_value_set_id := NULL;
80863 l_adr_value_type_code := NULL;
80864 l_adr_value_combination_id := NULL;
80865 l_adr_value_segment_code := NULL;
80866
80867 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
80868 l_bflow_class_code := ''; -- 4219869 Business Flow
80869 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
80870 l_budgetary_control_flag := 'N';
80871
80872 l_bflow_applied_to_amt_idx := NULL; -- 5132302
80873 l_bflow_applied_to_amt := NULL; -- 5132302
80874 l_entered_amt_idx := NULL; -- 4262811
80875 l_accted_amt_idx := NULL; -- 4262811
80876 l_acc_rev_flag := NULL; -- 4262811
80877 l_accrual_line_num := NULL; -- 4262811
80878 l_tmp_amt := NULL; -- 4262811
80879 --
80880
80881 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
80882 l_balance_type_code <> 'B' THEN
80883 IF NVL(p_source_24,9E125) = 1
80884 THEN
80885
80886 --
80887 XLA_AE_LINES_PKG.SetNewLine;
80888
80889 p_balance_type_code := l_balance_type_code;
80890 -- set the flag so later we will know whether the gain loss line needs to be created
80891
80892 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
80893 p_actual_flag :='A';
80894 END IF;
80895
80896 --
80897 -- bulk performance
80898 --
80899 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
80900 p_header_num => 0); -- 4262811
80901 --
80902 -- set accounting line options
80903 --
80904 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
80905 p_natural_side_code => 'D'
80906 , p_gain_or_loss_flag => 'N'
80907 , p_gl_transfer_mode_code => 'S'
80908 , p_acct_entry_type_code => 'A'
80909 , p_switch_side_flag => 'Y'
80910 , p_merge_duplicate_code => 'N'
80911 );
80912 --
80913 l_acc_rev_natural_side_code := 'C'; -- 4262811
80914 --
80915 --
80916 -- set accounting line type info
80917 --
80918 xla_ae_lines_pkg.SetAcctLineType
80919 (p_component_type => l_component_type
80920 ,p_event_type_code => l_event_type_code
80921 ,p_line_definition_owner_code => l_line_definition_owner_code
80922 ,p_line_definition_code => l_line_definition_code
80923 ,p_accounting_line_code => l_component_code
80924 ,p_accounting_line_type_code => l_component_type_code
80925 ,p_accounting_line_appl_id => l_component_appl_id
80926 ,p_amb_context_code => l_amb_context_code
80927 ,p_entity_code => l_entity_code
80928 ,p_event_class_code => l_event_class_code);
80929 --
80930 -- set accounting class
80931 --
80932 xla_ae_lines_pkg.SetAcctClass(
80933 p_accounting_class_code => 'INVENTORY_VALUATION'
80934 , p_ae_header_id => l_ae_header_id
80935 );
80936
80937 --
80938 -- set rounding class
80939 --
80940 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
80941 'INVENTORY_VALUATION';
80942
80943 --
80944 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
80945 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
80946 --
80947 -- bulk performance
80948 --
80949 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
80950
80951 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
80952 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
80953
80954 -- 4955764
80955 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
80956 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
80957
80958 -- 4458381 Public Sector Enh
80959
80960 --
80961 -- set accounting attributes for the line type
80962 --
80963 l_entered_amt_idx := 3;
80964 l_accted_amt_idx := 8;
80965 l_bflow_applied_to_amt_idx := NULL; -- 5132302
80966 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
80967 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
80968 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
80969 l_rec_acct_attrs.array_char_value(2) := p_source_12;
80970 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
80971 l_rec_acct_attrs.array_num_value(3) := p_source_18;
80972 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
80973 l_rec_acct_attrs.array_char_value(4) := p_source_15;
80974 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
80975 l_rec_acct_attrs.array_date_value(5) := p_source_19;
80976 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
80977 l_rec_acct_attrs.array_num_value(6) := p_source_20;
80978 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
80979 l_rec_acct_attrs.array_char_value(7) := p_source_21;
80980 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
80981 l_rec_acct_attrs.array_num_value(8) := p_source_22;
80982
80983 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
80984 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
80985
80986 ---------------------------------------------------------------------------------------------------------------
80987 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
80988 ---------------------------------------------------------------------------------------------------------------
80989 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
80990
80991 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
80992 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
80993
80994 IF xla_accounting_cache_pkg.GetValueChar
80995 (p_source_code => 'LEDGER_CATEGORY_CODE'
80996 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
80997 AND l_bflow_method_code = 'PRIOR_ENTRY'
80998 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
80999 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
81000 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
81001 )
81002 THEN
81003 xla_ae_lines_pkg.BflowUpgEntry
81004 (p_business_method_code => l_bflow_method_code
81005 ,p_business_class_code => l_bflow_class_code
81006 ,p_balance_type => l_balance_type_code);
81007 ELSE
81008 NULL;
81009 -- No business flow processing for business flow method of NONE.
81010 END IF;
81011
81012 --
81013 -- call analytical criteria
81014 --
81015
81016 --
81017 -- call description
81018 --
81019 -- No description or it is inherited.
81020 --
81021 -- call ADRs
81022 -- Bug 4922099
81023 --
81024 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
81025 (NVL(l_actual_upg_option, 'N') = 'O') OR
81026 (NVL(l_enc_upg_option, 'N') = 'O')
81027 )
81028 THEN
81029 NULL;
81030 --
81031 --
81032
81033 l_ccid := AcctDerRule_4(
81034 p_application_id => p_application_id
81035 , p_ae_header_id => l_ae_header_id
81036 , p_source_4 => p_source_4
81037 , x_transaction_coa_id => l_adr_transaction_coa_id
81038 , x_accounting_coa_id => l_adr_accounting_coa_id
81039 , x_value_type_code => l_adr_value_type_code
81040 , p_side => 'NA'
81041 );
81042
81043 xla_ae_lines_pkg.set_ccid(
81044 p_code_combination_id => l_ccid
81045 , p_value_type_code => l_adr_value_type_code
81046 , p_transaction_coa_id => l_adr_transaction_coa_id
81047 , p_accounting_coa_id => l_adr_accounting_coa_id
81048 , p_adr_code => 'CST_DEFAULT'
81049 , p_adr_type_code => 'S'
81050 , p_component_type => l_component_type
81051 , p_component_code => l_component_code
81052 , p_component_type_code => l_component_type_code
81053 , p_component_appl_id => l_component_appl_id
81054 , p_amb_context_code => l_amb_context_code
81055 , p_side => 'NA'
81056 );
81057
81058
81059 --
81060 --
81061 END IF;
81062 --
81063 -- Bug 4922099
81064 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
81065 (NVL(l_enc_upg_option, 'N') = 'O')
81066 ) AND
81067 (l_bflow_method_code = 'PRIOR_ENTRY')
81068 )
81069 THEN
81070 IF
81071 --
81072 1 = 2
81073 --
81074 THEN
81075 xla_accounting_err_pkg.build_message
81076 (p_appli_s_name => 'XLA'
81077 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
81078 ,p_token_1 => 'LINE_NUMBER'
81079 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
81080 ,p_token_2 => 'LINE_TYPE_NAME'
81081 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
81082 l_component_type
81083 ,l_component_code
81084 ,l_component_type_code
81085 ,l_component_appl_id
81086 ,l_amb_context_code
81087 ,l_entity_code
81088 ,l_event_class_code
81089 )
81090 ,p_token_3 => 'OWNER'
81091 ,p_value_3 => xla_lookups_pkg.get_meaning(
81092 p_lookup_type => 'XLA_OWNER_TYPE'
81093 ,p_lookup_code => l_component_type_code
81094 )
81095 ,p_token_4 => 'PRODUCT_NAME'
81096 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
81097 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
81098 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
81099 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
81100 ,p_ae_header_id => NULL
81101 );
81102
81103 IF (C_LEVEL_ERROR>= g_log_level) THEN
81104 trace
81105 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
81106 ,p_level => C_LEVEL_ERROR
81107 ,p_module => l_log_module);
81108 END IF;
81109 END IF;
81110 END IF;
81111 --
81112 --
81113 ------------------------------------------------------------------------------------------------
81114 -- 4219869 Business Flow
81115 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
81116 -- Prior Entry. Currently, the following code is always generated.
81117 ------------------------------------------------------------------------------------------------
81118 XLA_AE_LINES_PKG.ValidateCurrentLine;
81119
81120 ------------------------------------------------------------------------------------
81121 -- 4219869 Business Flow
81122 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
81123 ------------------------------------------------------------------------------------
81124 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
81125
81126 ----------------------------------------------------------------------------------
81127 -- 4219869 Business Flow
81128 -- Update journal entry status -- Need to generate this within IF <condition>
81129 ----------------------------------------------------------------------------------
81130 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
81131 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
81132 ,p_balance_type_code => l_balance_type_code
81133 );
81134
81135 -------------------------------------------------------------------------------------------
81136 -- 4262811 - Generate the Accrual Reversal lines
81137 -------------------------------------------------------------------------------------------
81138 BEGIN
81139 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
81140 (g_array_event(p_event_id).array_value_num('header_index'));
81141 IF l_acc_rev_flag IS NULL THEN
81142 l_acc_rev_flag := 'N';
81143 END IF;
81144 EXCEPTION
81145 WHEN OTHERS THEN
81146 l_acc_rev_flag := 'N';
81147 END;
81148 --
81149 IF (l_acc_rev_flag = 'Y') THEN
81150
81151 -- 4645092 ------------------------------------------------------------------------------
81152 -- To allow MPA report to determine if it should generate report process
81153 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
81154 ------------------------------------------------------------------------------------------
81155
81156 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
81157 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
81158 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
81159 -- call ADRs
81160 -- Bug 4922099
81161 --
81162 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
81163 (NVL(l_actual_upg_option, 'N') = 'O') OR
81164 (NVL(l_enc_upg_option, 'N') = 'O')
81165 )
81166 THEN
81167 NULL;
81168 --
81169 --
81170
81171 l_ccid := AcctDerRule_4(
81172 p_application_id => p_application_id
81173 , p_ae_header_id => l_ae_header_id
81174 , p_source_4 => p_source_4
81175 , x_transaction_coa_id => l_adr_transaction_coa_id
81176 , x_accounting_coa_id => l_adr_accounting_coa_id
81177 , x_value_type_code => l_adr_value_type_code
81178 , p_side => 'NA'
81179 );
81180
81181 xla_ae_lines_pkg.set_ccid(
81182 p_code_combination_id => l_ccid
81183 , p_value_type_code => l_adr_value_type_code
81184 , p_transaction_coa_id => l_adr_transaction_coa_id
81185 , p_accounting_coa_id => l_adr_accounting_coa_id
81186 , p_adr_code => 'CST_DEFAULT'
81187 , p_adr_type_code => 'S'
81188 , p_component_type => l_component_type
81189 , p_component_code => l_component_code
81190 , p_component_type_code => l_component_type_code
81191 , p_component_appl_id => l_component_appl_id
81192 , p_amb_context_code => l_amb_context_code
81193 , p_side => 'NA'
81194 );
81195
81196
81197 --
81198 --
81199 END IF;
81200
81201 --
81202 -- Update the line information that should be overwritten
81203 --
81204 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
81205 p_header_num => 1);
81206 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
81207
81208 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
81209
81210 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
81211 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
81212 END IF;
81213
81214 --
81215 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
81216 --
81217 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
81218 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
81219 ELSE
81220 ---------------------------------------------------------------------------------------------------
81221 -- 4262811a Switch Sign
81222 ---------------------------------------------------------------------------------------------------
81223 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
81224 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
81225 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
81226 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
81227 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
81228 -- 5132302
81229 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
81230 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
81231
81232 END IF;
81233
81234 -- 4955764
81235 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
81236 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
81237
81238
81239 XLA_AE_LINES_PKG.ValidateCurrentLine;
81240 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
81241
81242 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
81243 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
81244 ,p_balance_type_code => l_balance_type_code);
81245
81246 END IF;
81247
81248 -----------------------------------------------------------------------------------------
81249 -- 4262811 Multiperiod Accounting
81250 -----------------------------------------------------------------------------------------
81251 -- No MPA option is assigned.
81252
81253
81254 END IF;
81255 END IF;
81256 --
81257
81258 --
81259 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
81260 trace
81261 (p_msg => 'END of AcctLineType_148'
81262 ,p_level => C_LEVEL_PROCEDURE
81263 ,p_module => l_log_module);
81264 END IF;
81265 --
81266 EXCEPTION
81267 WHEN xla_exceptions_pkg.application_exception THEN
81268 RAISE;
81269 WHEN OTHERS THEN
81270 xla_exceptions_pkg.raise_message
81271 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_148');
81272 END AcctLineType_148;
81273 --
81274
81275 ---------------------------------------
81276 --
81277 -- PRIVATE FUNCTION
81278 -- AcctLineType_149
81279 --
81280 ---------------------------------------
81281 PROCEDURE AcctLineType_149 (
81282 p_application_id IN NUMBER
81283 ,p_event_id IN NUMBER
81284 ,p_calculate_acctd_flag IN VARCHAR2
81285 ,p_calculate_g_l_flag IN VARCHAR2
81286 ,p_actual_flag IN OUT VARCHAR2
81287 ,p_balance_type_code OUT VARCHAR2
81288 ,p_gain_or_loss_ref OUT VARCHAR2
81289
81290 --Cost Management Default Account
81291 , p_source_4 IN NUMBER
81292 --DISTRIBUTION_IDENTIFIER
81293 , p_source_11 IN NUMBER
81294 --Distribution Type
81295 , p_source_12 IN VARCHAR2
81296 , p_source_12_meaning IN VARCHAR2
81297 --Entered Currency Code
81298 , p_source_15 IN VARCHAR2
81299 --Entered Amount
81300 , p_source_18 IN NUMBER
81301 --Currency Conversion Date
81302 , p_source_19 IN DATE
81303 --Currency Conversion Rate
81304 , p_source_20 IN NUMBER
81305 --Currency Conversion Type
81306 , p_source_21 IN VARCHAR2
81307 --Accounted Amount
81308 , p_source_22 IN NUMBER
81309 --Accounting Line Type
81310 , p_source_24 IN NUMBER
81311 )
81312 IS
81313
81314 l_component_type VARCHAR2(80);
81315 l_component_code VARCHAR2(30);
81316 l_component_type_code VARCHAR2(1);
81317 l_component_appl_id INTEGER;
81318 l_amb_context_code VARCHAR2(30);
81319 l_entity_code VARCHAR2(30);
81320 l_event_class_code VARCHAR2(30);
81321 l_ae_header_id NUMBER;
81322 l_event_type_code VARCHAR2(30);
81323 l_line_definition_code VARCHAR2(30);
81324 l_line_definition_owner_code VARCHAR2(1);
81325 --
81326 -- adr variables
81327 l_segment VARCHAR2(30);
81328 l_ccid NUMBER;
81329 l_adr_transaction_coa_id NUMBER;
81330 l_adr_accounting_coa_id NUMBER;
81331 l_adr_flexfield_segment_code VARCHAR2(30);
81332 l_adr_flex_value_set_id NUMBER;
81333 l_adr_value_type_code VARCHAR2(30);
81334 l_adr_value_combination_id NUMBER;
81335 l_adr_value_segment_code VARCHAR2(30);
81336
81337 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
81338 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
81339 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
81340 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
81341
81342 -- 4262811 Variables ------------------------------------------------------------------------------------------
81343 l_entered_amt_idx NUMBER;
81344 l_accted_amt_idx NUMBER;
81345 l_acc_rev_flag VARCHAR2(1);
81346 l_accrual_line_num NUMBER;
81347 l_tmp_amt NUMBER;
81348 l_acc_rev_natural_side_code VARCHAR2(1);
81349
81350 l_num_entries NUMBER;
81351 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
81352 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
81353 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
81354 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
81355 l_recog_line_1 NUMBER;
81356 l_recog_line_2 NUMBER;
81357
81358 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
81359 l_bflow_applied_to_amt NUMBER; -- 5132302
81360 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
81361
81362 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
81363
81364 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
81365 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
81366
81367 ---------------------------------------------------------------------------------------------------------------
81368
81369
81370 --
81371 -- bulk performance
81372 --
81373 l_balance_type_code VARCHAR2(1);
81374 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
81375 l_log_module VARCHAR2(240);
81376
81377 --
81378 -- Upgrade strategy
81379 --
81380 l_actual_upg_option VARCHAR2(1);
81381 l_enc_upg_option VARCHAR2(1);
81382
81383 --
81384 BEGIN
81385 --
81386 IF g_log_enabled THEN
81387 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_149';
81388 END IF;
81389 --
81390 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
81391
81392 trace
81393 (p_msg => 'BEGIN of AcctLineType_149'
81394 ,p_level => C_LEVEL_PROCEDURE
81395 ,p_module => l_log_module);
81396
81397 END IF;
81398 --
81399 l_component_type := 'AMB_JLT';
81400 l_component_code := 'INVENTORY_VALUATION';
81401 l_component_type_code := 'S';
81402 l_component_appl_id := 707;
81403 l_amb_context_code := 'DEFAULT';
81404 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
81405 l_event_class_code := 'USER_DEFINE';
81406 l_event_type_code := 'UDIR_INTERORG_SHIP_TP';
81407 l_line_definition_owner_code := 'S';
81408 l_line_definition_code := 'USER_DIR_INTERORG_SHIP_TP';
81409 --
81410 l_balance_type_code := 'A';
81411 l_segment := NULL;
81412 l_ccid := NULL;
81413 l_adr_transaction_coa_id := NULL;
81414 l_adr_accounting_coa_id := NULL;
81415 l_adr_flexfield_segment_code := NULL;
81416 l_adr_flex_value_set_id := NULL;
81417 l_adr_value_type_code := NULL;
81418 l_adr_value_combination_id := NULL;
81419 l_adr_value_segment_code := NULL;
81420
81421 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
81422 l_bflow_class_code := ''; -- 4219869 Business Flow
81423 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
81424 l_budgetary_control_flag := 'N';
81425
81426 l_bflow_applied_to_amt_idx := NULL; -- 5132302
81427 l_bflow_applied_to_amt := NULL; -- 5132302
81428 l_entered_amt_idx := NULL; -- 4262811
81429 l_accted_amt_idx := NULL; -- 4262811
81430 l_acc_rev_flag := NULL; -- 4262811
81431 l_accrual_line_num := NULL; -- 4262811
81432 l_tmp_amt := NULL; -- 4262811
81433 --
81434
81435 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
81436 l_balance_type_code <> 'B' THEN
81437 IF NVL(p_source_24,9E125) = 1
81438 THEN
81439
81440 --
81441 XLA_AE_LINES_PKG.SetNewLine;
81442
81443 p_balance_type_code := l_balance_type_code;
81444 -- set the flag so later we will know whether the gain loss line needs to be created
81445
81446 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
81447 p_actual_flag :='A';
81448 END IF;
81449
81450 --
81451 -- bulk performance
81452 --
81453 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
81454 p_header_num => 0); -- 4262811
81455 --
81456 -- set accounting line options
81457 --
81458 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
81459 p_natural_side_code => 'D'
81460 , p_gain_or_loss_flag => 'N'
81461 , p_gl_transfer_mode_code => 'S'
81462 , p_acct_entry_type_code => 'A'
81463 , p_switch_side_flag => 'Y'
81464 , p_merge_duplicate_code => 'N'
81465 );
81466 --
81467 l_acc_rev_natural_side_code := 'C'; -- 4262811
81468 --
81469 --
81470 -- set accounting line type info
81471 --
81472 xla_ae_lines_pkg.SetAcctLineType
81473 (p_component_type => l_component_type
81474 ,p_event_type_code => l_event_type_code
81475 ,p_line_definition_owner_code => l_line_definition_owner_code
81476 ,p_line_definition_code => l_line_definition_code
81477 ,p_accounting_line_code => l_component_code
81478 ,p_accounting_line_type_code => l_component_type_code
81479 ,p_accounting_line_appl_id => l_component_appl_id
81480 ,p_amb_context_code => l_amb_context_code
81481 ,p_entity_code => l_entity_code
81482 ,p_event_class_code => l_event_class_code);
81483 --
81484 -- set accounting class
81485 --
81486 xla_ae_lines_pkg.SetAcctClass(
81487 p_accounting_class_code => 'INVENTORY_VALUATION'
81488 , p_ae_header_id => l_ae_header_id
81489 );
81490
81491 --
81492 -- set rounding class
81493 --
81494 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
81495 'INVENTORY_VALUATION';
81496
81497 --
81498 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
81499 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
81500 --
81501 -- bulk performance
81502 --
81503 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
81504
81505 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
81506 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
81507
81508 -- 4955764
81509 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
81510 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
81511
81512 -- 4458381 Public Sector Enh
81513
81514 --
81515 -- set accounting attributes for the line type
81516 --
81517 l_entered_amt_idx := 3;
81518 l_accted_amt_idx := 8;
81519 l_bflow_applied_to_amt_idx := NULL; -- 5132302
81520 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
81521 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
81522 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
81523 l_rec_acct_attrs.array_char_value(2) := p_source_12;
81524 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
81525 l_rec_acct_attrs.array_num_value(3) := p_source_18;
81526 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
81527 l_rec_acct_attrs.array_char_value(4) := p_source_15;
81528 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
81529 l_rec_acct_attrs.array_date_value(5) := p_source_19;
81530 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
81531 l_rec_acct_attrs.array_num_value(6) := p_source_20;
81532 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
81533 l_rec_acct_attrs.array_char_value(7) := p_source_21;
81534 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
81535 l_rec_acct_attrs.array_num_value(8) := p_source_22;
81536
81537 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
81538 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
81539
81540 ---------------------------------------------------------------------------------------------------------------
81541 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
81542 ---------------------------------------------------------------------------------------------------------------
81543 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
81544
81545 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
81546 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
81547
81548 IF xla_accounting_cache_pkg.GetValueChar
81549 (p_source_code => 'LEDGER_CATEGORY_CODE'
81550 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
81551 AND l_bflow_method_code = 'PRIOR_ENTRY'
81552 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
81553 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
81554 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
81555 )
81556 THEN
81557 xla_ae_lines_pkg.BflowUpgEntry
81558 (p_business_method_code => l_bflow_method_code
81559 ,p_business_class_code => l_bflow_class_code
81560 ,p_balance_type => l_balance_type_code);
81561 ELSE
81562 NULL;
81563 -- No business flow processing for business flow method of NONE.
81564 END IF;
81565
81566 --
81567 -- call analytical criteria
81568 --
81569
81570 --
81571 -- call description
81572 --
81573 -- No description or it is inherited.
81574 --
81575 -- call ADRs
81576 -- Bug 4922099
81577 --
81578 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
81579 (NVL(l_actual_upg_option, 'N') = 'O') OR
81580 (NVL(l_enc_upg_option, 'N') = 'O')
81581 )
81582 THEN
81583 NULL;
81584 --
81585 --
81586
81587 l_ccid := AcctDerRule_4(
81588 p_application_id => p_application_id
81589 , p_ae_header_id => l_ae_header_id
81590 , p_source_4 => p_source_4
81591 , x_transaction_coa_id => l_adr_transaction_coa_id
81592 , x_accounting_coa_id => l_adr_accounting_coa_id
81593 , x_value_type_code => l_adr_value_type_code
81594 , p_side => 'NA'
81595 );
81596
81597 xla_ae_lines_pkg.set_ccid(
81598 p_code_combination_id => l_ccid
81599 , p_value_type_code => l_adr_value_type_code
81600 , p_transaction_coa_id => l_adr_transaction_coa_id
81601 , p_accounting_coa_id => l_adr_accounting_coa_id
81602 , p_adr_code => 'CST_DEFAULT'
81603 , p_adr_type_code => 'S'
81604 , p_component_type => l_component_type
81605 , p_component_code => l_component_code
81606 , p_component_type_code => l_component_type_code
81607 , p_component_appl_id => l_component_appl_id
81608 , p_amb_context_code => l_amb_context_code
81609 , p_side => 'NA'
81610 );
81611
81612
81613 --
81614 --
81615 END IF;
81616 --
81617 -- Bug 4922099
81618 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
81619 (NVL(l_enc_upg_option, 'N') = 'O')
81620 ) AND
81621 (l_bflow_method_code = 'PRIOR_ENTRY')
81622 )
81623 THEN
81624 IF
81625 --
81626 1 = 2
81627 --
81628 THEN
81629 xla_accounting_err_pkg.build_message
81630 (p_appli_s_name => 'XLA'
81631 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
81632 ,p_token_1 => 'LINE_NUMBER'
81633 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
81634 ,p_token_2 => 'LINE_TYPE_NAME'
81635 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
81636 l_component_type
81637 ,l_component_code
81638 ,l_component_type_code
81639 ,l_component_appl_id
81640 ,l_amb_context_code
81641 ,l_entity_code
81642 ,l_event_class_code
81643 )
81644 ,p_token_3 => 'OWNER'
81645 ,p_value_3 => xla_lookups_pkg.get_meaning(
81646 p_lookup_type => 'XLA_OWNER_TYPE'
81647 ,p_lookup_code => l_component_type_code
81648 )
81649 ,p_token_4 => 'PRODUCT_NAME'
81650 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
81651 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
81652 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
81653 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
81654 ,p_ae_header_id => NULL
81655 );
81656
81657 IF (C_LEVEL_ERROR>= g_log_level) THEN
81658 trace
81659 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
81660 ,p_level => C_LEVEL_ERROR
81661 ,p_module => l_log_module);
81662 END IF;
81663 END IF;
81664 END IF;
81665 --
81666 --
81667 ------------------------------------------------------------------------------------------------
81668 -- 4219869 Business Flow
81669 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
81670 -- Prior Entry. Currently, the following code is always generated.
81671 ------------------------------------------------------------------------------------------------
81672 XLA_AE_LINES_PKG.ValidateCurrentLine;
81673
81674 ------------------------------------------------------------------------------------
81675 -- 4219869 Business Flow
81676 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
81677 ------------------------------------------------------------------------------------
81678 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
81679
81680 ----------------------------------------------------------------------------------
81681 -- 4219869 Business Flow
81682 -- Update journal entry status -- Need to generate this within IF <condition>
81683 ----------------------------------------------------------------------------------
81684 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
81685 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
81686 ,p_balance_type_code => l_balance_type_code
81687 );
81688
81689 -------------------------------------------------------------------------------------------
81690 -- 4262811 - Generate the Accrual Reversal lines
81691 -------------------------------------------------------------------------------------------
81692 BEGIN
81693 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
81694 (g_array_event(p_event_id).array_value_num('header_index'));
81695 IF l_acc_rev_flag IS NULL THEN
81696 l_acc_rev_flag := 'N';
81697 END IF;
81698 EXCEPTION
81699 WHEN OTHERS THEN
81700 l_acc_rev_flag := 'N';
81701 END;
81702 --
81703 IF (l_acc_rev_flag = 'Y') THEN
81704
81705 -- 4645092 ------------------------------------------------------------------------------
81706 -- To allow MPA report to determine if it should generate report process
81707 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
81708 ------------------------------------------------------------------------------------------
81709
81710 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
81711 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
81712 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
81713 -- call ADRs
81714 -- Bug 4922099
81715 --
81716 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
81717 (NVL(l_actual_upg_option, 'N') = 'O') OR
81718 (NVL(l_enc_upg_option, 'N') = 'O')
81719 )
81720 THEN
81721 NULL;
81722 --
81723 --
81724
81725 l_ccid := AcctDerRule_4(
81726 p_application_id => p_application_id
81727 , p_ae_header_id => l_ae_header_id
81728 , p_source_4 => p_source_4
81729 , x_transaction_coa_id => l_adr_transaction_coa_id
81730 , x_accounting_coa_id => l_adr_accounting_coa_id
81731 , x_value_type_code => l_adr_value_type_code
81732 , p_side => 'NA'
81733 );
81734
81735 xla_ae_lines_pkg.set_ccid(
81736 p_code_combination_id => l_ccid
81737 , p_value_type_code => l_adr_value_type_code
81738 , p_transaction_coa_id => l_adr_transaction_coa_id
81739 , p_accounting_coa_id => l_adr_accounting_coa_id
81740 , p_adr_code => 'CST_DEFAULT'
81741 , p_adr_type_code => 'S'
81742 , p_component_type => l_component_type
81743 , p_component_code => l_component_code
81744 , p_component_type_code => l_component_type_code
81745 , p_component_appl_id => l_component_appl_id
81746 , p_amb_context_code => l_amb_context_code
81747 , p_side => 'NA'
81748 );
81749
81750
81751 --
81752 --
81753 END IF;
81754
81755 --
81756 -- Update the line information that should be overwritten
81757 --
81758 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
81759 p_header_num => 1);
81760 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
81761
81762 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
81763
81764 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
81765 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
81766 END IF;
81767
81768 --
81769 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
81770 --
81771 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
81772 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
81773 ELSE
81774 ---------------------------------------------------------------------------------------------------
81775 -- 4262811a Switch Sign
81776 ---------------------------------------------------------------------------------------------------
81777 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
81778 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
81779 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
81780 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
81781 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
81782 -- 5132302
81783 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
81784 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
81785
81786 END IF;
81787
81788 -- 4955764
81789 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
81790 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
81791
81792
81793 XLA_AE_LINES_PKG.ValidateCurrentLine;
81794 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
81795
81796 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
81797 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
81798 ,p_balance_type_code => l_balance_type_code);
81799
81800 END IF;
81801
81802 -----------------------------------------------------------------------------------------
81803 -- 4262811 Multiperiod Accounting
81804 -----------------------------------------------------------------------------------------
81805 -- No MPA option is assigned.
81806
81807
81808 END IF;
81809 END IF;
81810 --
81811
81812 --
81813 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
81814 trace
81815 (p_msg => 'END of AcctLineType_149'
81816 ,p_level => C_LEVEL_PROCEDURE
81817 ,p_module => l_log_module);
81818 END IF;
81819 --
81820 EXCEPTION
81821 WHEN xla_exceptions_pkg.application_exception THEN
81822 RAISE;
81823 WHEN OTHERS THEN
81824 xla_exceptions_pkg.raise_message
81825 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_149');
81826 END AcctLineType_149;
81827 --
81828
81829 ---------------------------------------
81830 --
81831 -- PRIVATE FUNCTION
81832 -- AcctLineType_150
81833 --
81834 ---------------------------------------
81835 PROCEDURE AcctLineType_150 (
81836 p_application_id IN NUMBER
81837 ,p_event_id IN NUMBER
81838 ,p_calculate_acctd_flag IN VARCHAR2
81839 ,p_calculate_g_l_flag IN VARCHAR2
81840 ,p_actual_flag IN OUT VARCHAR2
81841 ,p_balance_type_code OUT VARCHAR2
81842 ,p_gain_or_loss_ref OUT VARCHAR2
81843
81844 --Cost Management Default Account
81845 , p_source_4 IN NUMBER
81846 --DISTRIBUTION_IDENTIFIER
81847 , p_source_11 IN NUMBER
81848 --Distribution Type
81849 , p_source_12 IN VARCHAR2
81850 , p_source_12_meaning IN VARCHAR2
81851 --Entered Currency Code
81852 , p_source_15 IN VARCHAR2
81853 --Entered Amount
81854 , p_source_18 IN NUMBER
81855 --Currency Conversion Date
81856 , p_source_19 IN DATE
81857 --Currency Conversion Rate
81858 , p_source_20 IN NUMBER
81859 --Currency Conversion Type
81860 , p_source_21 IN VARCHAR2
81861 --Accounted Amount
81862 , p_source_22 IN NUMBER
81863 --Accounting Line Type
81864 , p_source_24 IN NUMBER
81865 )
81866 IS
81867
81868 l_component_type VARCHAR2(80);
81869 l_component_code VARCHAR2(30);
81870 l_component_type_code VARCHAR2(1);
81871 l_component_appl_id INTEGER;
81872 l_amb_context_code VARCHAR2(30);
81873 l_entity_code VARCHAR2(30);
81874 l_event_class_code VARCHAR2(30);
81875 l_ae_header_id NUMBER;
81876 l_event_type_code VARCHAR2(30);
81877 l_line_definition_code VARCHAR2(30);
81878 l_line_definition_owner_code VARCHAR2(1);
81879 --
81880 -- adr variables
81881 l_segment VARCHAR2(30);
81882 l_ccid NUMBER;
81883 l_adr_transaction_coa_id NUMBER;
81884 l_adr_accounting_coa_id NUMBER;
81885 l_adr_flexfield_segment_code VARCHAR2(30);
81886 l_adr_flex_value_set_id NUMBER;
81887 l_adr_value_type_code VARCHAR2(30);
81888 l_adr_value_combination_id NUMBER;
81889 l_adr_value_segment_code VARCHAR2(30);
81890
81891 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
81892 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
81893 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
81894 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
81895
81896 -- 4262811 Variables ------------------------------------------------------------------------------------------
81897 l_entered_amt_idx NUMBER;
81898 l_accted_amt_idx NUMBER;
81899 l_acc_rev_flag VARCHAR2(1);
81900 l_accrual_line_num NUMBER;
81901 l_tmp_amt NUMBER;
81902 l_acc_rev_natural_side_code VARCHAR2(1);
81903
81904 l_num_entries NUMBER;
81905 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
81906 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
81907 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
81908 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
81909 l_recog_line_1 NUMBER;
81910 l_recog_line_2 NUMBER;
81911
81912 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
81913 l_bflow_applied_to_amt NUMBER; -- 5132302
81914 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
81915
81916 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
81917
81918 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
81919 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
81920
81921 ---------------------------------------------------------------------------------------------------------------
81922
81923
81924 --
81925 -- bulk performance
81926 --
81927 l_balance_type_code VARCHAR2(1);
81928 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
81929 l_log_module VARCHAR2(240);
81930
81931 --
81932 -- Upgrade strategy
81933 --
81934 l_actual_upg_option VARCHAR2(1);
81935 l_enc_upg_option VARCHAR2(1);
81936
81937 --
81938 BEGIN
81939 --
81940 IF g_log_enabled THEN
81941 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_150';
81942 END IF;
81943 --
81944 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
81945
81946 trace
81947 (p_msg => 'BEGIN of AcctLineType_150'
81948 ,p_level => C_LEVEL_PROCEDURE
81949 ,p_module => l_log_module);
81950
81951 END IF;
81952 --
81953 l_component_type := 'AMB_JLT';
81954 l_component_code := 'INVENTORY_VALUATION';
81955 l_component_type_code := 'S';
81956 l_component_appl_id := 707;
81957 l_amb_context_code := 'DEFAULT';
81958 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
81959 l_event_class_code := 'USER_DEFINE';
81960 l_event_type_code := 'UMISC_ISSUE';
81961 l_line_definition_owner_code := 'S';
81962 l_line_definition_code := 'USER_ISSUE';
81963 --
81964 l_balance_type_code := 'A';
81965 l_segment := NULL;
81966 l_ccid := NULL;
81967 l_adr_transaction_coa_id := NULL;
81968 l_adr_accounting_coa_id := NULL;
81969 l_adr_flexfield_segment_code := NULL;
81970 l_adr_flex_value_set_id := NULL;
81971 l_adr_value_type_code := NULL;
81972 l_adr_value_combination_id := NULL;
81973 l_adr_value_segment_code := NULL;
81974
81975 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
81976 l_bflow_class_code := ''; -- 4219869 Business Flow
81977 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
81978 l_budgetary_control_flag := 'N';
81979
81980 l_bflow_applied_to_amt_idx := NULL; -- 5132302
81981 l_bflow_applied_to_amt := NULL; -- 5132302
81982 l_entered_amt_idx := NULL; -- 4262811
81983 l_accted_amt_idx := NULL; -- 4262811
81984 l_acc_rev_flag := NULL; -- 4262811
81985 l_accrual_line_num := NULL; -- 4262811
81986 l_tmp_amt := NULL; -- 4262811
81987 --
81988
81989 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
81990 l_balance_type_code <> 'B' THEN
81991 IF NVL(p_source_24,9E125) = 1
81992 THEN
81993
81994 --
81995 XLA_AE_LINES_PKG.SetNewLine;
81996
81997 p_balance_type_code := l_balance_type_code;
81998 -- set the flag so later we will know whether the gain loss line needs to be created
81999
82000 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
82001 p_actual_flag :='A';
82002 END IF;
82003
82004 --
82005 -- bulk performance
82006 --
82007 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
82008 p_header_num => 0); -- 4262811
82009 --
82010 -- set accounting line options
82011 --
82012 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
82013 p_natural_side_code => 'D'
82014 , p_gain_or_loss_flag => 'N'
82015 , p_gl_transfer_mode_code => 'S'
82016 , p_acct_entry_type_code => 'A'
82017 , p_switch_side_flag => 'Y'
82018 , p_merge_duplicate_code => 'N'
82019 );
82020 --
82021 l_acc_rev_natural_side_code := 'C'; -- 4262811
82022 --
82023 --
82024 -- set accounting line type info
82025 --
82026 xla_ae_lines_pkg.SetAcctLineType
82027 (p_component_type => l_component_type
82028 ,p_event_type_code => l_event_type_code
82029 ,p_line_definition_owner_code => l_line_definition_owner_code
82030 ,p_line_definition_code => l_line_definition_code
82031 ,p_accounting_line_code => l_component_code
82032 ,p_accounting_line_type_code => l_component_type_code
82033 ,p_accounting_line_appl_id => l_component_appl_id
82034 ,p_amb_context_code => l_amb_context_code
82035 ,p_entity_code => l_entity_code
82036 ,p_event_class_code => l_event_class_code);
82037 --
82038 -- set accounting class
82039 --
82040 xla_ae_lines_pkg.SetAcctClass(
82041 p_accounting_class_code => 'INVENTORY_VALUATION'
82042 , p_ae_header_id => l_ae_header_id
82043 );
82044
82045 --
82046 -- set rounding class
82047 --
82048 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
82049 'INVENTORY_VALUATION';
82050
82051 --
82052 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
82053 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
82054 --
82055 -- bulk performance
82056 --
82057 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
82058
82059 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
82060 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
82061
82062 -- 4955764
82063 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
82064 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
82065
82066 -- 4458381 Public Sector Enh
82067
82068 --
82069 -- set accounting attributes for the line type
82070 --
82071 l_entered_amt_idx := 3;
82072 l_accted_amt_idx := 8;
82073 l_bflow_applied_to_amt_idx := NULL; -- 5132302
82074 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
82075 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
82076 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
82077 l_rec_acct_attrs.array_char_value(2) := p_source_12;
82078 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
82079 l_rec_acct_attrs.array_num_value(3) := p_source_18;
82080 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
82081 l_rec_acct_attrs.array_char_value(4) := p_source_15;
82082 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
82083 l_rec_acct_attrs.array_date_value(5) := p_source_19;
82084 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
82085 l_rec_acct_attrs.array_num_value(6) := p_source_20;
82086 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
82087 l_rec_acct_attrs.array_char_value(7) := p_source_21;
82088 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
82089 l_rec_acct_attrs.array_num_value(8) := p_source_22;
82090
82091 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
82092 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
82093
82094 ---------------------------------------------------------------------------------------------------------------
82095 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
82096 ---------------------------------------------------------------------------------------------------------------
82097 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
82098
82099 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
82100 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
82101
82102 IF xla_accounting_cache_pkg.GetValueChar
82103 (p_source_code => 'LEDGER_CATEGORY_CODE'
82104 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
82105 AND l_bflow_method_code = 'PRIOR_ENTRY'
82106 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
82107 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
82108 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
82109 )
82110 THEN
82111 xla_ae_lines_pkg.BflowUpgEntry
82112 (p_business_method_code => l_bflow_method_code
82113 ,p_business_class_code => l_bflow_class_code
82114 ,p_balance_type => l_balance_type_code);
82115 ELSE
82116 NULL;
82117 -- No business flow processing for business flow method of NONE.
82118 END IF;
82119
82120 --
82121 -- call analytical criteria
82122 --
82123
82124 --
82125 -- call description
82126 --
82127 -- No description or it is inherited.
82128 --
82129 -- call ADRs
82130 -- Bug 4922099
82131 --
82132 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
82133 (NVL(l_actual_upg_option, 'N') = 'O') OR
82134 (NVL(l_enc_upg_option, 'N') = 'O')
82135 )
82136 THEN
82137 NULL;
82138 --
82139 --
82140
82141 l_ccid := AcctDerRule_4(
82142 p_application_id => p_application_id
82143 , p_ae_header_id => l_ae_header_id
82144 , p_source_4 => p_source_4
82145 , x_transaction_coa_id => l_adr_transaction_coa_id
82146 , x_accounting_coa_id => l_adr_accounting_coa_id
82147 , x_value_type_code => l_adr_value_type_code
82148 , p_side => 'NA'
82149 );
82150
82151 xla_ae_lines_pkg.set_ccid(
82152 p_code_combination_id => l_ccid
82153 , p_value_type_code => l_adr_value_type_code
82154 , p_transaction_coa_id => l_adr_transaction_coa_id
82155 , p_accounting_coa_id => l_adr_accounting_coa_id
82156 , p_adr_code => 'CST_DEFAULT'
82157 , p_adr_type_code => 'S'
82158 , p_component_type => l_component_type
82159 , p_component_code => l_component_code
82160 , p_component_type_code => l_component_type_code
82161 , p_component_appl_id => l_component_appl_id
82162 , p_amb_context_code => l_amb_context_code
82163 , p_side => 'NA'
82164 );
82165
82166
82167 --
82168 --
82169 END IF;
82170 --
82171 -- Bug 4922099
82172 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
82173 (NVL(l_enc_upg_option, 'N') = 'O')
82174 ) AND
82175 (l_bflow_method_code = 'PRIOR_ENTRY')
82176 )
82177 THEN
82178 IF
82179 --
82180 1 = 2
82181 --
82182 THEN
82183 xla_accounting_err_pkg.build_message
82184 (p_appli_s_name => 'XLA'
82185 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
82186 ,p_token_1 => 'LINE_NUMBER'
82187 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
82188 ,p_token_2 => 'LINE_TYPE_NAME'
82189 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
82190 l_component_type
82191 ,l_component_code
82192 ,l_component_type_code
82193 ,l_component_appl_id
82194 ,l_amb_context_code
82195 ,l_entity_code
82196 ,l_event_class_code
82197 )
82198 ,p_token_3 => 'OWNER'
82199 ,p_value_3 => xla_lookups_pkg.get_meaning(
82200 p_lookup_type => 'XLA_OWNER_TYPE'
82201 ,p_lookup_code => l_component_type_code
82202 )
82203 ,p_token_4 => 'PRODUCT_NAME'
82204 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
82205 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
82206 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
82207 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
82208 ,p_ae_header_id => NULL
82209 );
82210
82211 IF (C_LEVEL_ERROR>= g_log_level) THEN
82212 trace
82213 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
82214 ,p_level => C_LEVEL_ERROR
82215 ,p_module => l_log_module);
82216 END IF;
82217 END IF;
82218 END IF;
82219 --
82220 --
82221 ------------------------------------------------------------------------------------------------
82222 -- 4219869 Business Flow
82223 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
82224 -- Prior Entry. Currently, the following code is always generated.
82225 ------------------------------------------------------------------------------------------------
82226 XLA_AE_LINES_PKG.ValidateCurrentLine;
82227
82228 ------------------------------------------------------------------------------------
82229 -- 4219869 Business Flow
82230 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
82231 ------------------------------------------------------------------------------------
82232 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
82233
82234 ----------------------------------------------------------------------------------
82235 -- 4219869 Business Flow
82236 -- Update journal entry status -- Need to generate this within IF <condition>
82237 ----------------------------------------------------------------------------------
82238 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
82239 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
82240 ,p_balance_type_code => l_balance_type_code
82241 );
82242
82243 -------------------------------------------------------------------------------------------
82244 -- 4262811 - Generate the Accrual Reversal lines
82245 -------------------------------------------------------------------------------------------
82246 BEGIN
82247 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
82248 (g_array_event(p_event_id).array_value_num('header_index'));
82249 IF l_acc_rev_flag IS NULL THEN
82250 l_acc_rev_flag := 'N';
82251 END IF;
82252 EXCEPTION
82253 WHEN OTHERS THEN
82254 l_acc_rev_flag := 'N';
82255 END;
82256 --
82257 IF (l_acc_rev_flag = 'Y') THEN
82258
82259 -- 4645092 ------------------------------------------------------------------------------
82260 -- To allow MPA report to determine if it should generate report process
82261 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
82262 ------------------------------------------------------------------------------------------
82263
82264 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
82265 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
82266 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
82267 -- call ADRs
82268 -- Bug 4922099
82269 --
82270 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
82271 (NVL(l_actual_upg_option, 'N') = 'O') OR
82272 (NVL(l_enc_upg_option, 'N') = 'O')
82273 )
82274 THEN
82275 NULL;
82276 --
82277 --
82278
82279 l_ccid := AcctDerRule_4(
82280 p_application_id => p_application_id
82281 , p_ae_header_id => l_ae_header_id
82282 , p_source_4 => p_source_4
82283 , x_transaction_coa_id => l_adr_transaction_coa_id
82284 , x_accounting_coa_id => l_adr_accounting_coa_id
82285 , x_value_type_code => l_adr_value_type_code
82286 , p_side => 'NA'
82287 );
82288
82289 xla_ae_lines_pkg.set_ccid(
82290 p_code_combination_id => l_ccid
82291 , p_value_type_code => l_adr_value_type_code
82292 , p_transaction_coa_id => l_adr_transaction_coa_id
82293 , p_accounting_coa_id => l_adr_accounting_coa_id
82294 , p_adr_code => 'CST_DEFAULT'
82295 , p_adr_type_code => 'S'
82296 , p_component_type => l_component_type
82297 , p_component_code => l_component_code
82298 , p_component_type_code => l_component_type_code
82299 , p_component_appl_id => l_component_appl_id
82300 , p_amb_context_code => l_amb_context_code
82301 , p_side => 'NA'
82302 );
82303
82304
82305 --
82306 --
82307 END IF;
82308
82309 --
82310 -- Update the line information that should be overwritten
82311 --
82312 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
82313 p_header_num => 1);
82314 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
82315
82316 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
82317
82318 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
82319 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
82320 END IF;
82321
82322 --
82323 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
82324 --
82325 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
82326 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
82327 ELSE
82328 ---------------------------------------------------------------------------------------------------
82329 -- 4262811a Switch Sign
82330 ---------------------------------------------------------------------------------------------------
82331 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
82332 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
82333 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
82334 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
82335 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
82336 -- 5132302
82337 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
82338 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
82339
82340 END IF;
82341
82342 -- 4955764
82343 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
82344 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
82345
82346
82347 XLA_AE_LINES_PKG.ValidateCurrentLine;
82348 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
82349
82350 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
82351 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
82352 ,p_balance_type_code => l_balance_type_code);
82353
82354 END IF;
82355
82356 -----------------------------------------------------------------------------------------
82357 -- 4262811 Multiperiod Accounting
82358 -----------------------------------------------------------------------------------------
82359 -- No MPA option is assigned.
82360
82361
82362 END IF;
82363 END IF;
82364 --
82365
82366 --
82367 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
82368 trace
82369 (p_msg => 'END of AcctLineType_150'
82370 ,p_level => C_LEVEL_PROCEDURE
82371 ,p_module => l_log_module);
82372 END IF;
82373 --
82374 EXCEPTION
82375 WHEN xla_exceptions_pkg.application_exception THEN
82376 RAISE;
82377 WHEN OTHERS THEN
82378 xla_exceptions_pkg.raise_message
82379 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_150');
82380 END AcctLineType_150;
82381 --
82382
82383 ---------------------------------------
82384 --
82385 -- PRIVATE FUNCTION
82386 -- AcctLineType_151
82387 --
82388 ---------------------------------------
82389 PROCEDURE AcctLineType_151 (
82390 p_application_id IN NUMBER
82391 ,p_event_id IN NUMBER
82392 ,p_calculate_acctd_flag IN VARCHAR2
82393 ,p_calculate_g_l_flag IN VARCHAR2
82394 ,p_actual_flag IN OUT VARCHAR2
82395 ,p_balance_type_code OUT VARCHAR2
82396 ,p_gain_or_loss_ref OUT VARCHAR2
82397
82398 --Cost Management Default Account
82399 , p_source_4 IN NUMBER
82400 --Applied to Application ID
82401 , p_source_6 IN NUMBER
82402 --Applied to Distribution Link Type
82403 , p_source_7 IN VARCHAR2
82404 --Applied to Entity Code
82405 , p_source_8 IN VARCHAR2
82406 --DISTRIBUTION_IDENTIFIER
82407 , p_source_11 IN NUMBER
82408 --Distribution Type
82409 , p_source_12 IN VARCHAR2
82410 , p_source_12_meaning IN VARCHAR2
82411 --Encumbrance Reversal Amount Entered
82412 , p_source_14 IN NUMBER
82413 --Entered Currency Code
82414 , p_source_15 IN VARCHAR2
82415 --Transaction Encumbrance Reversal Amount
82416 , p_source_16 IN NUMBER
82417 --Entered Amount
82418 , p_source_18 IN NUMBER
82419 --Currency Conversion Date
82420 , p_source_19 IN DATE
82421 --Currency Conversion Rate
82422 , p_source_20 IN NUMBER
82423 --Currency Conversion Type
82424 , p_source_21 IN VARCHAR2
82425 --Accounted Amount
82426 , p_source_22 IN NUMBER
82427 --Accounting Line Type
82428 , p_source_24 IN NUMBER
82429 --Costing Encumbrance Upgrade Option
82430 , p_source_27 IN VARCHAR2
82431 --TXN_PO_DISTRIBUTION_ID
82432 , p_source_28 IN NUMBER
82433 --TXN_PO_HEADER_ID
82434 , p_source_29 IN NUMBER
82435 --Requisition Budget Account
82436 , p_source_30 IN NUMBER
82437 --Requisition Encumbrance Type Identifier
82438 , p_source_31 IN NUMBER
82439 )
82440 IS
82441
82442 l_component_type VARCHAR2(80);
82443 l_component_code VARCHAR2(30);
82444 l_component_type_code VARCHAR2(1);
82445 l_component_appl_id INTEGER;
82446 l_amb_context_code VARCHAR2(30);
82447 l_entity_code VARCHAR2(30);
82448 l_event_class_code VARCHAR2(30);
82449 l_ae_header_id NUMBER;
82450 l_event_type_code VARCHAR2(30);
82451 l_line_definition_code VARCHAR2(30);
82452 l_line_definition_owner_code VARCHAR2(1);
82453 --
82454 -- adr variables
82455 l_segment VARCHAR2(30);
82456 l_ccid NUMBER;
82457 l_adr_transaction_coa_id NUMBER;
82458 l_adr_accounting_coa_id NUMBER;
82459 l_adr_flexfield_segment_code VARCHAR2(30);
82460 l_adr_flex_value_set_id NUMBER;
82461 l_adr_value_type_code VARCHAR2(30);
82462 l_adr_value_combination_id NUMBER;
82463 l_adr_value_segment_code VARCHAR2(30);
82464
82465 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
82466 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
82467 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
82468 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
82469
82470 -- 4262811 Variables ------------------------------------------------------------------------------------------
82471 l_entered_amt_idx NUMBER;
82472 l_accted_amt_idx NUMBER;
82473 l_acc_rev_flag VARCHAR2(1);
82474 l_accrual_line_num NUMBER;
82475 l_tmp_amt NUMBER;
82476 l_acc_rev_natural_side_code VARCHAR2(1);
82477
82478 l_num_entries NUMBER;
82479 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
82480 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
82481 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
82482 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
82483 l_recog_line_1 NUMBER;
82484 l_recog_line_2 NUMBER;
82485
82486 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
82487 l_bflow_applied_to_amt NUMBER; -- 5132302
82488 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
82489
82490 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
82491
82492 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
82493 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
82494
82495 ---------------------------------------------------------------------------------------------------------------
82496
82497
82498 --
82499 -- bulk performance
82500 --
82501 l_balance_type_code VARCHAR2(1);
82502 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
82503 l_log_module VARCHAR2(240);
82504
82505 --
82506 -- Upgrade strategy
82507 --
82508 l_actual_upg_option VARCHAR2(1);
82509 l_enc_upg_option VARCHAR2(1);
82510
82511 --
82512 BEGIN
82513 --
82514 IF g_log_enabled THEN
82515 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_151';
82516 END IF;
82517 --
82518 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
82519
82520 trace
82521 (p_msg => 'BEGIN of AcctLineType_151'
82522 ,p_level => C_LEVEL_PROCEDURE
82523 ,p_module => l_log_module);
82524
82525 END IF;
82526 --
82527 l_component_type := 'AMB_JLT';
82528 l_component_code := 'INVENTORY_VALUATION';
82529 l_component_type_code := 'S';
82530 l_component_appl_id := 707;
82531 l_amb_context_code := 'DEFAULT';
82532 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
82533 l_event_class_code := 'DIR_INTERORG_RCPT';
82534 l_event_type_code := 'DIR_INTERORG_RCPT_ALL';
82535 l_line_definition_owner_code := 'S';
82536 l_line_definition_code := 'DIRECT_INTERORG_RCPT';
82537 --
82538 l_balance_type_code := 'A';
82539 l_segment := NULL;
82540 l_ccid := NULL;
82541 l_adr_transaction_coa_id := NULL;
82542 l_adr_accounting_coa_id := NULL;
82543 l_adr_flexfield_segment_code := NULL;
82544 l_adr_flex_value_set_id := NULL;
82545 l_adr_value_type_code := NULL;
82546 l_adr_value_combination_id := NULL;
82547 l_adr_value_segment_code := NULL;
82548
82549 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
82550 l_bflow_class_code := ''; -- 4219869 Business Flow
82551 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
82552 l_budgetary_control_flag := 'N';
82553
82554 l_bflow_applied_to_amt_idx := NULL; -- 5132302
82555 l_bflow_applied_to_amt := NULL; -- 5132302
82556 l_entered_amt_idx := NULL; -- 4262811
82557 l_accted_amt_idx := NULL; -- 4262811
82558 l_acc_rev_flag := NULL; -- 4262811
82559 l_accrual_line_num := NULL; -- 4262811
82560 l_tmp_amt := NULL; -- 4262811
82561 --
82562
82563 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
82564 l_balance_type_code <> 'B' THEN
82565 IF NVL(p_source_24,9E125) = 1
82566 THEN
82567
82568 --
82569 XLA_AE_LINES_PKG.SetNewLine;
82570
82571 p_balance_type_code := l_balance_type_code;
82572 -- set the flag so later we will know whether the gain loss line needs to be created
82573
82574 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
82575 p_actual_flag :='A';
82576 END IF;
82577
82578 --
82579 -- bulk performance
82580 --
82581 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
82582 p_header_num => 0); -- 4262811
82583 --
82584 -- set accounting line options
82585 --
82586 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
82587 p_natural_side_code => 'D'
82588 , p_gain_or_loss_flag => 'N'
82589 , p_gl_transfer_mode_code => 'S'
82590 , p_acct_entry_type_code => 'A'
82591 , p_switch_side_flag => 'Y'
82592 , p_merge_duplicate_code => 'N'
82593 );
82594 --
82595 l_acc_rev_natural_side_code := 'C'; -- 4262811
82596 --
82597 --
82598 -- set accounting line type info
82599 --
82600 xla_ae_lines_pkg.SetAcctLineType
82601 (p_component_type => l_component_type
82602 ,p_event_type_code => l_event_type_code
82603 ,p_line_definition_owner_code => l_line_definition_owner_code
82604 ,p_line_definition_code => l_line_definition_code
82605 ,p_accounting_line_code => l_component_code
82606 ,p_accounting_line_type_code => l_component_type_code
82607 ,p_accounting_line_appl_id => l_component_appl_id
82608 ,p_amb_context_code => l_amb_context_code
82609 ,p_entity_code => l_entity_code
82610 ,p_event_class_code => l_event_class_code);
82611 --
82612 -- set accounting class
82613 --
82614 xla_ae_lines_pkg.SetAcctClass(
82615 p_accounting_class_code => 'INVENTORY_VALUATION'
82616 , p_ae_header_id => l_ae_header_id
82617 );
82618
82619 --
82620 -- set rounding class
82621 --
82622 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
82623 'INVENTORY_VALUATION';
82624
82625 --
82626 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
82627 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
82628 --
82629 -- bulk performance
82630 --
82631 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
82632
82633 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
82634 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
82635
82636 -- 4955764
82637 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
82638 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
82639
82640 -- 4458381 Public Sector Enh
82641
82642 --
82643 -- set accounting attributes for the line type
82644 --
82645 l_entered_amt_idx := 17;
82646 l_accted_amt_idx := 22;
82647 l_bflow_applied_to_amt_idx := NULL; -- 5132302
82648 l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
82649 l_rec_acct_attrs.array_num_value(1) := p_source_6;
82650 l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
82651 l_rec_acct_attrs.array_char_value(2) := p_source_7;
82652 l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
82653 l_rec_acct_attrs.array_char_value(3) := p_source_8;
82654 l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
82655 l_rec_acct_attrs.array_num_value(4) := to_char(p_source_28);
82656 l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
82657 l_rec_acct_attrs.array_num_value(5) := to_char(p_source_29);
82658 l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
82659 l_rec_acct_attrs.array_num_value(6) := to_char(p_source_11);
82660 l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
82661 l_rec_acct_attrs.array_char_value(7) := p_source_12;
82662 l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
82663 l_rec_acct_attrs.array_num_value(8) := TO_NUMBER(p_source_30);
82664 l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
82665 l_rec_acct_attrs.array_num_value(9) := p_source_14;
82666 l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
82667 l_rec_acct_attrs.array_char_value(10) := p_source_15;
82668 l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
82669 l_rec_acct_attrs.array_num_value(11) := p_source_16;
82670 l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
82671 l_rec_acct_attrs.array_num_value(12) := TO_NUMBER(p_source_30);
82672 l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
82673 l_rec_acct_attrs.array_num_value(13) := p_source_14;
82674 l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
82675 l_rec_acct_attrs.array_char_value(14) := p_source_15;
82676 l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
82677 l_rec_acct_attrs.array_num_value(15) := p_source_16;
82678 l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
82679 l_rec_acct_attrs.array_char_value(16) := p_source_27;
82680 l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
82681 l_rec_acct_attrs.array_num_value(17) := p_source_18;
82682 l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
82683 l_rec_acct_attrs.array_char_value(18) := p_source_15;
82684 l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
82685 l_rec_acct_attrs.array_date_value(19) := p_source_19;
82686 l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
82687 l_rec_acct_attrs.array_num_value(20) := p_source_20;
82688 l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
82689 l_rec_acct_attrs.array_char_value(21) := p_source_21;
82690 l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
82691 l_rec_acct_attrs.array_num_value(22) := p_source_22;
82692 l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
82693 l_rec_acct_attrs.array_num_value(23) := p_source_31;
82694 l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
82695 l_rec_acct_attrs.array_num_value(24) := p_source_31;
82696
82697 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
82698 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
82699
82700 ---------------------------------------------------------------------------------------------------------------
82701 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
82702 ---------------------------------------------------------------------------------------------------------------
82703 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
82704
82705 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
82706 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
82707
82708 IF xla_accounting_cache_pkg.GetValueChar
82709 (p_source_code => 'LEDGER_CATEGORY_CODE'
82710 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
82711 AND l_bflow_method_code = 'PRIOR_ENTRY'
82712 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
82713 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
82714 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
82715 )
82716 THEN
82717 xla_ae_lines_pkg.BflowUpgEntry
82718 (p_business_method_code => l_bflow_method_code
82719 ,p_business_class_code => l_bflow_class_code
82720 ,p_balance_type => l_balance_type_code);
82721 ELSE
82722 NULL;
82723 -- No business flow processing for business flow method of NONE.
82724 END IF;
82725
82726 --
82727 -- call analytical criteria
82728 --
82729
82730 --
82731 -- call description
82732 --
82733 -- No description or it is inherited.
82734 --
82735 -- call ADRs
82736 -- Bug 4922099
82737 --
82738 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
82739 (NVL(l_actual_upg_option, 'N') = 'O') OR
82740 (NVL(l_enc_upg_option, 'N') = 'O')
82741 )
82742 THEN
82743 NULL;
82744 --
82745 --
82746
82747 l_ccid := AcctDerRule_4(
82748 p_application_id => p_application_id
82749 , p_ae_header_id => l_ae_header_id
82750 , p_source_4 => p_source_4
82751 , x_transaction_coa_id => l_adr_transaction_coa_id
82752 , x_accounting_coa_id => l_adr_accounting_coa_id
82753 , x_value_type_code => l_adr_value_type_code
82754 , p_side => 'NA'
82755 );
82756
82757 xla_ae_lines_pkg.set_ccid(
82758 p_code_combination_id => l_ccid
82759 , p_value_type_code => l_adr_value_type_code
82760 , p_transaction_coa_id => l_adr_transaction_coa_id
82761 , p_accounting_coa_id => l_adr_accounting_coa_id
82762 , p_adr_code => 'CST_DEFAULT'
82763 , p_adr_type_code => 'S'
82764 , p_component_type => l_component_type
82765 , p_component_code => l_component_code
82766 , p_component_type_code => l_component_type_code
82767 , p_component_appl_id => l_component_appl_id
82768 , p_amb_context_code => l_amb_context_code
82769 , p_side => 'NA'
82770 );
82771
82772
82773 --
82774 --
82775 END IF;
82776 --
82777 -- Bug 4922099
82778 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
82779 (NVL(l_enc_upg_option, 'N') = 'O')
82780 ) AND
82781 (l_bflow_method_code = 'PRIOR_ENTRY')
82782 )
82783 THEN
82784 IF
82785 --
82786 1 = 2
82787 --
82788 THEN
82789 xla_accounting_err_pkg.build_message
82790 (p_appli_s_name => 'XLA'
82791 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
82792 ,p_token_1 => 'LINE_NUMBER'
82793 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
82794 ,p_token_2 => 'LINE_TYPE_NAME'
82795 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
82796 l_component_type
82797 ,l_component_code
82798 ,l_component_type_code
82799 ,l_component_appl_id
82800 ,l_amb_context_code
82801 ,l_entity_code
82802 ,l_event_class_code
82803 )
82804 ,p_token_3 => 'OWNER'
82805 ,p_value_3 => xla_lookups_pkg.get_meaning(
82806 p_lookup_type => 'XLA_OWNER_TYPE'
82807 ,p_lookup_code => l_component_type_code
82808 )
82809 ,p_token_4 => 'PRODUCT_NAME'
82810 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
82811 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
82812 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
82813 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
82814 ,p_ae_header_id => NULL
82815 );
82816
82817 IF (C_LEVEL_ERROR>= g_log_level) THEN
82818 trace
82819 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
82820 ,p_level => C_LEVEL_ERROR
82821 ,p_module => l_log_module);
82822 END IF;
82823 END IF;
82824 END IF;
82825 --
82826 --
82827 ------------------------------------------------------------------------------------------------
82828 -- 4219869 Business Flow
82829 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
82830 -- Prior Entry. Currently, the following code is always generated.
82831 ------------------------------------------------------------------------------------------------
82832 XLA_AE_LINES_PKG.ValidateCurrentLine;
82833
82834 ------------------------------------------------------------------------------------
82835 -- 4219869 Business Flow
82836 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
82837 ------------------------------------------------------------------------------------
82838 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
82839
82840 ----------------------------------------------------------------------------------
82841 -- 4219869 Business Flow
82842 -- Update journal entry status -- Need to generate this within IF <condition>
82843 ----------------------------------------------------------------------------------
82844 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
82845 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
82846 ,p_balance_type_code => l_balance_type_code
82847 );
82848
82849 -------------------------------------------------------------------------------------------
82850 -- 4262811 - Generate the Accrual Reversal lines
82851 -------------------------------------------------------------------------------------------
82852 BEGIN
82853 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
82854 (g_array_event(p_event_id).array_value_num('header_index'));
82855 IF l_acc_rev_flag IS NULL THEN
82856 l_acc_rev_flag := 'N';
82857 END IF;
82858 EXCEPTION
82859 WHEN OTHERS THEN
82860 l_acc_rev_flag := 'N';
82861 END;
82862 --
82863 IF (l_acc_rev_flag = 'Y') THEN
82864
82865 -- 4645092 ------------------------------------------------------------------------------
82866 -- To allow MPA report to determine if it should generate report process
82867 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
82868 ------------------------------------------------------------------------------------------
82869
82870 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
82871 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
82872 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
82873 -- call ADRs
82874 -- Bug 4922099
82875 --
82876 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
82877 (NVL(l_actual_upg_option, 'N') = 'O') OR
82878 (NVL(l_enc_upg_option, 'N') = 'O')
82879 )
82880 THEN
82881 NULL;
82882 --
82883 --
82884
82885 l_ccid := AcctDerRule_4(
82886 p_application_id => p_application_id
82887 , p_ae_header_id => l_ae_header_id
82888 , p_source_4 => p_source_4
82889 , x_transaction_coa_id => l_adr_transaction_coa_id
82890 , x_accounting_coa_id => l_adr_accounting_coa_id
82891 , x_value_type_code => l_adr_value_type_code
82892 , p_side => 'NA'
82893 );
82894
82895 xla_ae_lines_pkg.set_ccid(
82896 p_code_combination_id => l_ccid
82897 , p_value_type_code => l_adr_value_type_code
82898 , p_transaction_coa_id => l_adr_transaction_coa_id
82899 , p_accounting_coa_id => l_adr_accounting_coa_id
82900 , p_adr_code => 'CST_DEFAULT'
82901 , p_adr_type_code => 'S'
82902 , p_component_type => l_component_type
82903 , p_component_code => l_component_code
82904 , p_component_type_code => l_component_type_code
82905 , p_component_appl_id => l_component_appl_id
82906 , p_amb_context_code => l_amb_context_code
82907 , p_side => 'NA'
82908 );
82909
82910
82911 --
82912 --
82913 END IF;
82914
82915 --
82916 -- Update the line information that should be overwritten
82917 --
82918 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
82919 p_header_num => 1);
82920 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
82921
82922 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
82923
82924 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
82925 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
82926 END IF;
82927
82928 --
82929 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
82930 --
82931 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
82932 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
82933 ELSE
82934 ---------------------------------------------------------------------------------------------------
82935 -- 4262811a Switch Sign
82936 ---------------------------------------------------------------------------------------------------
82937 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
82938 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
82939 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
82940 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
82941 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
82942 -- 5132302
82943 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
82944 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
82945
82946 END IF;
82947
82948 -- 4955764
82949 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
82950 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
82951
82952
82953 XLA_AE_LINES_PKG.ValidateCurrentLine;
82954 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
82955
82956 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
82957 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
82958 ,p_balance_type_code => l_balance_type_code);
82959
82960 END IF;
82961
82962 -----------------------------------------------------------------------------------------
82963 -- 4262811 Multiperiod Accounting
82964 -----------------------------------------------------------------------------------------
82965 -- No MPA option is assigned.
82966
82967
82968 END IF;
82969 END IF;
82970 --
82971
82972 --
82973 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
82974 trace
82975 (p_msg => 'END of AcctLineType_151'
82976 ,p_level => C_LEVEL_PROCEDURE
82977 ,p_module => l_log_module);
82978 END IF;
82979 --
82980 EXCEPTION
82981 WHEN xla_exceptions_pkg.application_exception THEN
82982 RAISE;
82983 WHEN OTHERS THEN
82984 xla_exceptions_pkg.raise_message
82985 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_151');
82986 END AcctLineType_151;
82987 --
82988
82989 ---------------------------------------
82990 --
82991 -- PRIVATE FUNCTION
82992 -- AcctLineType_152
82993 --
82994 ---------------------------------------
82995 PROCEDURE AcctLineType_152 (
82996 p_application_id IN NUMBER
82997 ,p_event_id IN NUMBER
82998 ,p_calculate_acctd_flag IN VARCHAR2
82999 ,p_calculate_g_l_flag IN VARCHAR2
83000 ,p_actual_flag IN OUT VARCHAR2
83001 ,p_balance_type_code OUT VARCHAR2
83002 ,p_gain_or_loss_ref OUT VARCHAR2
83003
83004 --Cost Management Default Account
83005 , p_source_4 IN NUMBER
83006 --Applied to Application ID
83007 , p_source_6 IN NUMBER
83008 --Applied to Distribution Link Type
83009 , p_source_7 IN VARCHAR2
83010 --Applied to Entity Code
83011 , p_source_8 IN VARCHAR2
83012 --DISTRIBUTION_IDENTIFIER
83013 , p_source_11 IN NUMBER
83014 --Distribution Type
83015 , p_source_12 IN VARCHAR2
83016 , p_source_12_meaning IN VARCHAR2
83017 --Encumbrance Reversal Amount Entered
83018 , p_source_14 IN NUMBER
83019 --Entered Currency Code
83020 , p_source_15 IN VARCHAR2
83021 --Transaction Encumbrance Reversal Amount
83022 , p_source_16 IN NUMBER
83023 --Entered Amount
83024 , p_source_18 IN NUMBER
83025 --Currency Conversion Date
83026 , p_source_19 IN DATE
83027 --Currency Conversion Rate
83028 , p_source_20 IN NUMBER
83029 --Currency Conversion Type
83030 , p_source_21 IN VARCHAR2
83031 --Accounted Amount
83032 , p_source_22 IN NUMBER
83033 --Accounting Line Type
83034 , p_source_24 IN NUMBER
83035 --Costing Encumbrance Upgrade Option
83036 , p_source_27 IN VARCHAR2
83037 --TXN_PO_DISTRIBUTION_ID
83038 , p_source_28 IN NUMBER
83039 --TXN_PO_HEADER_ID
83040 , p_source_29 IN NUMBER
83041 --Requisition Budget Account
83042 , p_source_30 IN NUMBER
83043 --Requisition Encumbrance Type Identifier
83044 , p_source_31 IN NUMBER
83045 )
83046 IS
83047
83048 l_component_type VARCHAR2(80);
83049 l_component_code VARCHAR2(30);
83050 l_component_type_code VARCHAR2(1);
83051 l_component_appl_id INTEGER;
83052 l_amb_context_code VARCHAR2(30);
83053 l_entity_code VARCHAR2(30);
83054 l_event_class_code VARCHAR2(30);
83055 l_ae_header_id NUMBER;
83056 l_event_type_code VARCHAR2(30);
83057 l_line_definition_code VARCHAR2(30);
83058 l_line_definition_owner_code VARCHAR2(1);
83059 --
83060 -- adr variables
83061 l_segment VARCHAR2(30);
83062 l_ccid NUMBER;
83063 l_adr_transaction_coa_id NUMBER;
83064 l_adr_accounting_coa_id NUMBER;
83065 l_adr_flexfield_segment_code VARCHAR2(30);
83066 l_adr_flex_value_set_id NUMBER;
83067 l_adr_value_type_code VARCHAR2(30);
83068 l_adr_value_combination_id NUMBER;
83069 l_adr_value_segment_code VARCHAR2(30);
83070
83071 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
83072 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
83073 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
83074 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
83075
83076 -- 4262811 Variables ------------------------------------------------------------------------------------------
83077 l_entered_amt_idx NUMBER;
83078 l_accted_amt_idx NUMBER;
83079 l_acc_rev_flag VARCHAR2(1);
83080 l_accrual_line_num NUMBER;
83081 l_tmp_amt NUMBER;
83082 l_acc_rev_natural_side_code VARCHAR2(1);
83083
83084 l_num_entries NUMBER;
83085 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
83086 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
83087 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
83088 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
83089 l_recog_line_1 NUMBER;
83090 l_recog_line_2 NUMBER;
83091
83092 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
83093 l_bflow_applied_to_amt NUMBER; -- 5132302
83094 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
83095
83096 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
83097
83098 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
83099 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
83100
83101 ---------------------------------------------------------------------------------------------------------------
83102
83103
83104 --
83105 -- bulk performance
83106 --
83107 l_balance_type_code VARCHAR2(1);
83108 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
83109 l_log_module VARCHAR2(240);
83110
83111 --
83112 -- Upgrade strategy
83113 --
83114 l_actual_upg_option VARCHAR2(1);
83115 l_enc_upg_option VARCHAR2(1);
83116
83117 --
83118 BEGIN
83119 --
83120 IF g_log_enabled THEN
83121 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_152';
83122 END IF;
83123 --
83124 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
83125
83126 trace
83127 (p_msg => 'BEGIN of AcctLineType_152'
83128 ,p_level => C_LEVEL_PROCEDURE
83129 ,p_module => l_log_module);
83130
83131 END IF;
83132 --
83133 l_component_type := 'AMB_JLT';
83134 l_component_code := 'INVENTORY_VALUATION';
83135 l_component_type_code := 'S';
83136 l_component_appl_id := 707;
83137 l_amb_context_code := 'DEFAULT';
83138 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
83139 l_event_class_code := 'FOB_RCPT_RECIPIENT_RCPT';
83140 l_event_type_code := 'FOB_RCPT_RECIPIENT_RCPT_ALL';
83141 l_line_definition_owner_code := 'S';
83142 l_line_definition_code := 'FOB_RCPT_RECIPIENT_RCPT';
83143 --
83144 l_balance_type_code := 'A';
83145 l_segment := NULL;
83146 l_ccid := NULL;
83147 l_adr_transaction_coa_id := NULL;
83148 l_adr_accounting_coa_id := NULL;
83149 l_adr_flexfield_segment_code := NULL;
83150 l_adr_flex_value_set_id := NULL;
83151 l_adr_value_type_code := NULL;
83152 l_adr_value_combination_id := NULL;
83153 l_adr_value_segment_code := NULL;
83154
83155 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
83156 l_bflow_class_code := ''; -- 4219869 Business Flow
83157 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
83158 l_budgetary_control_flag := 'N';
83159
83160 l_bflow_applied_to_amt_idx := NULL; -- 5132302
83161 l_bflow_applied_to_amt := NULL; -- 5132302
83162 l_entered_amt_idx := NULL; -- 4262811
83163 l_accted_amt_idx := NULL; -- 4262811
83164 l_acc_rev_flag := NULL; -- 4262811
83165 l_accrual_line_num := NULL; -- 4262811
83166 l_tmp_amt := NULL; -- 4262811
83167 --
83168
83169 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
83170 l_balance_type_code <> 'B' THEN
83171 IF NVL(p_source_24,9E125) = 1
83172 THEN
83173
83174 --
83175 XLA_AE_LINES_PKG.SetNewLine;
83176
83177 p_balance_type_code := l_balance_type_code;
83178 -- set the flag so later we will know whether the gain loss line needs to be created
83179
83180 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
83181 p_actual_flag :='A';
83182 END IF;
83183
83184 --
83185 -- bulk performance
83186 --
83187 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
83188 p_header_num => 0); -- 4262811
83189 --
83190 -- set accounting line options
83191 --
83192 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
83193 p_natural_side_code => 'D'
83194 , p_gain_or_loss_flag => 'N'
83195 , p_gl_transfer_mode_code => 'S'
83196 , p_acct_entry_type_code => 'A'
83197 , p_switch_side_flag => 'Y'
83198 , p_merge_duplicate_code => 'N'
83199 );
83200 --
83201 l_acc_rev_natural_side_code := 'C'; -- 4262811
83202 --
83203 --
83204 -- set accounting line type info
83205 --
83206 xla_ae_lines_pkg.SetAcctLineType
83207 (p_component_type => l_component_type
83208 ,p_event_type_code => l_event_type_code
83209 ,p_line_definition_owner_code => l_line_definition_owner_code
83210 ,p_line_definition_code => l_line_definition_code
83211 ,p_accounting_line_code => l_component_code
83212 ,p_accounting_line_type_code => l_component_type_code
83213 ,p_accounting_line_appl_id => l_component_appl_id
83214 ,p_amb_context_code => l_amb_context_code
83215 ,p_entity_code => l_entity_code
83216 ,p_event_class_code => l_event_class_code);
83217 --
83218 -- set accounting class
83219 --
83220 xla_ae_lines_pkg.SetAcctClass(
83221 p_accounting_class_code => 'INVENTORY_VALUATION'
83222 , p_ae_header_id => l_ae_header_id
83223 );
83224
83225 --
83226 -- set rounding class
83227 --
83228 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
83229 'INVENTORY_VALUATION';
83230
83231 --
83232 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
83233 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
83234 --
83235 -- bulk performance
83236 --
83237 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
83238
83239 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
83240 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
83241
83242 -- 4955764
83243 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
83244 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
83245
83246 -- 4458381 Public Sector Enh
83247
83248 --
83249 -- set accounting attributes for the line type
83250 --
83251 l_entered_amt_idx := 17;
83252 l_accted_amt_idx := 22;
83253 l_bflow_applied_to_amt_idx := NULL; -- 5132302
83254 l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
83255 l_rec_acct_attrs.array_num_value(1) := p_source_6;
83256 l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
83257 l_rec_acct_attrs.array_char_value(2) := p_source_7;
83258 l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
83259 l_rec_acct_attrs.array_char_value(3) := p_source_8;
83260 l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
83261 l_rec_acct_attrs.array_num_value(4) := to_char(p_source_28);
83262 l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
83263 l_rec_acct_attrs.array_num_value(5) := to_char(p_source_29);
83264 l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
83265 l_rec_acct_attrs.array_num_value(6) := to_char(p_source_11);
83266 l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
83267 l_rec_acct_attrs.array_char_value(7) := p_source_12;
83268 l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
83269 l_rec_acct_attrs.array_num_value(8) := TO_NUMBER(p_source_30);
83270 l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
83271 l_rec_acct_attrs.array_num_value(9) := p_source_14;
83272 l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
83273 l_rec_acct_attrs.array_char_value(10) := p_source_15;
83274 l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
83275 l_rec_acct_attrs.array_num_value(11) := p_source_16;
83276 l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
83277 l_rec_acct_attrs.array_num_value(12) := TO_NUMBER(p_source_30);
83278 l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
83279 l_rec_acct_attrs.array_num_value(13) := p_source_14;
83280 l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
83281 l_rec_acct_attrs.array_char_value(14) := p_source_15;
83282 l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
83283 l_rec_acct_attrs.array_num_value(15) := p_source_16;
83284 l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
83285 l_rec_acct_attrs.array_char_value(16) := p_source_27;
83286 l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
83287 l_rec_acct_attrs.array_num_value(17) := p_source_18;
83288 l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
83289 l_rec_acct_attrs.array_char_value(18) := p_source_15;
83290 l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
83291 l_rec_acct_attrs.array_date_value(19) := p_source_19;
83292 l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
83293 l_rec_acct_attrs.array_num_value(20) := p_source_20;
83294 l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
83295 l_rec_acct_attrs.array_char_value(21) := p_source_21;
83296 l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
83297 l_rec_acct_attrs.array_num_value(22) := p_source_22;
83298 l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
83299 l_rec_acct_attrs.array_num_value(23) := p_source_31;
83300 l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
83301 l_rec_acct_attrs.array_num_value(24) := p_source_31;
83302
83303 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
83304 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
83305
83306 ---------------------------------------------------------------------------------------------------------------
83307 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
83308 ---------------------------------------------------------------------------------------------------------------
83309 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
83310
83311 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
83312 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
83313
83314 IF xla_accounting_cache_pkg.GetValueChar
83315 (p_source_code => 'LEDGER_CATEGORY_CODE'
83316 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
83317 AND l_bflow_method_code = 'PRIOR_ENTRY'
83318 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
83319 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
83320 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
83321 )
83322 THEN
83323 xla_ae_lines_pkg.BflowUpgEntry
83324 (p_business_method_code => l_bflow_method_code
83325 ,p_business_class_code => l_bflow_class_code
83326 ,p_balance_type => l_balance_type_code);
83327 ELSE
83328 NULL;
83329 -- No business flow processing for business flow method of NONE.
83330 END IF;
83331
83332 --
83333 -- call analytical criteria
83334 --
83335
83336 --
83337 -- call description
83338 --
83339 -- No description or it is inherited.
83340 --
83341 -- call ADRs
83342 -- Bug 4922099
83343 --
83344 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
83345 (NVL(l_actual_upg_option, 'N') = 'O') OR
83346 (NVL(l_enc_upg_option, 'N') = 'O')
83347 )
83348 THEN
83349 NULL;
83350 --
83351 --
83352
83353 l_ccid := AcctDerRule_4(
83354 p_application_id => p_application_id
83355 , p_ae_header_id => l_ae_header_id
83356 , p_source_4 => p_source_4
83357 , x_transaction_coa_id => l_adr_transaction_coa_id
83358 , x_accounting_coa_id => l_adr_accounting_coa_id
83359 , x_value_type_code => l_adr_value_type_code
83360 , p_side => 'NA'
83361 );
83362
83363 xla_ae_lines_pkg.set_ccid(
83364 p_code_combination_id => l_ccid
83365 , p_value_type_code => l_adr_value_type_code
83366 , p_transaction_coa_id => l_adr_transaction_coa_id
83367 , p_accounting_coa_id => l_adr_accounting_coa_id
83368 , p_adr_code => 'CST_DEFAULT'
83369 , p_adr_type_code => 'S'
83370 , p_component_type => l_component_type
83371 , p_component_code => l_component_code
83372 , p_component_type_code => l_component_type_code
83373 , p_component_appl_id => l_component_appl_id
83374 , p_amb_context_code => l_amb_context_code
83375 , p_side => 'NA'
83376 );
83377
83378
83379 --
83380 --
83381 END IF;
83382 --
83383 -- Bug 4922099
83384 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
83385 (NVL(l_enc_upg_option, 'N') = 'O')
83386 ) AND
83387 (l_bflow_method_code = 'PRIOR_ENTRY')
83388 )
83389 THEN
83390 IF
83391 --
83392 1 = 2
83393 --
83394 THEN
83395 xla_accounting_err_pkg.build_message
83396 (p_appli_s_name => 'XLA'
83397 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
83398 ,p_token_1 => 'LINE_NUMBER'
83399 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
83400 ,p_token_2 => 'LINE_TYPE_NAME'
83401 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
83402 l_component_type
83403 ,l_component_code
83404 ,l_component_type_code
83405 ,l_component_appl_id
83406 ,l_amb_context_code
83407 ,l_entity_code
83408 ,l_event_class_code
83409 )
83410 ,p_token_3 => 'OWNER'
83411 ,p_value_3 => xla_lookups_pkg.get_meaning(
83412 p_lookup_type => 'XLA_OWNER_TYPE'
83413 ,p_lookup_code => l_component_type_code
83414 )
83415 ,p_token_4 => 'PRODUCT_NAME'
83416 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
83417 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
83418 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
83419 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
83420 ,p_ae_header_id => NULL
83421 );
83422
83423 IF (C_LEVEL_ERROR>= g_log_level) THEN
83424 trace
83425 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
83426 ,p_level => C_LEVEL_ERROR
83427 ,p_module => l_log_module);
83428 END IF;
83429 END IF;
83430 END IF;
83431 --
83432 --
83433 ------------------------------------------------------------------------------------------------
83434 -- 4219869 Business Flow
83435 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
83436 -- Prior Entry. Currently, the following code is always generated.
83437 ------------------------------------------------------------------------------------------------
83438 XLA_AE_LINES_PKG.ValidateCurrentLine;
83439
83440 ------------------------------------------------------------------------------------
83441 -- 4219869 Business Flow
83442 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
83443 ------------------------------------------------------------------------------------
83444 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
83445
83446 ----------------------------------------------------------------------------------
83447 -- 4219869 Business Flow
83448 -- Update journal entry status -- Need to generate this within IF <condition>
83449 ----------------------------------------------------------------------------------
83450 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
83451 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
83452 ,p_balance_type_code => l_balance_type_code
83453 );
83454
83455 -------------------------------------------------------------------------------------------
83456 -- 4262811 - Generate the Accrual Reversal lines
83457 -------------------------------------------------------------------------------------------
83458 BEGIN
83459 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
83460 (g_array_event(p_event_id).array_value_num('header_index'));
83461 IF l_acc_rev_flag IS NULL THEN
83462 l_acc_rev_flag := 'N';
83463 END IF;
83464 EXCEPTION
83465 WHEN OTHERS THEN
83466 l_acc_rev_flag := 'N';
83467 END;
83468 --
83469 IF (l_acc_rev_flag = 'Y') THEN
83470
83471 -- 4645092 ------------------------------------------------------------------------------
83472 -- To allow MPA report to determine if it should generate report process
83473 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
83474 ------------------------------------------------------------------------------------------
83475
83476 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
83477 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
83478 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
83479 -- call ADRs
83480 -- Bug 4922099
83481 --
83482 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
83483 (NVL(l_actual_upg_option, 'N') = 'O') OR
83484 (NVL(l_enc_upg_option, 'N') = 'O')
83485 )
83486 THEN
83487 NULL;
83488 --
83489 --
83490
83491 l_ccid := AcctDerRule_4(
83492 p_application_id => p_application_id
83493 , p_ae_header_id => l_ae_header_id
83494 , p_source_4 => p_source_4
83495 , x_transaction_coa_id => l_adr_transaction_coa_id
83496 , x_accounting_coa_id => l_adr_accounting_coa_id
83497 , x_value_type_code => l_adr_value_type_code
83498 , p_side => 'NA'
83499 );
83500
83501 xla_ae_lines_pkg.set_ccid(
83502 p_code_combination_id => l_ccid
83503 , p_value_type_code => l_adr_value_type_code
83504 , p_transaction_coa_id => l_adr_transaction_coa_id
83505 , p_accounting_coa_id => l_adr_accounting_coa_id
83506 , p_adr_code => 'CST_DEFAULT'
83507 , p_adr_type_code => 'S'
83508 , p_component_type => l_component_type
83509 , p_component_code => l_component_code
83510 , p_component_type_code => l_component_type_code
83511 , p_component_appl_id => l_component_appl_id
83512 , p_amb_context_code => l_amb_context_code
83513 , p_side => 'NA'
83514 );
83515
83516
83517 --
83518 --
83519 END IF;
83520
83521 --
83522 -- Update the line information that should be overwritten
83523 --
83524 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
83525 p_header_num => 1);
83526 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
83527
83528 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
83529
83530 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
83531 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
83532 END IF;
83533
83534 --
83535 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
83536 --
83537 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
83538 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
83539 ELSE
83540 ---------------------------------------------------------------------------------------------------
83541 -- 4262811a Switch Sign
83542 ---------------------------------------------------------------------------------------------------
83543 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
83544 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
83545 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
83546 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
83547 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
83548 -- 5132302
83549 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
83550 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
83551
83552 END IF;
83553
83554 -- 4955764
83555 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
83556 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
83557
83558
83559 XLA_AE_LINES_PKG.ValidateCurrentLine;
83560 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
83561
83562 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
83563 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
83564 ,p_balance_type_code => l_balance_type_code);
83565
83566 END IF;
83567
83568 -----------------------------------------------------------------------------------------
83569 -- 4262811 Multiperiod Accounting
83570 -----------------------------------------------------------------------------------------
83571 -- No MPA option is assigned.
83572
83573
83574 END IF;
83575 END IF;
83576 --
83577
83578 --
83579 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
83580 trace
83581 (p_msg => 'END of AcctLineType_152'
83582 ,p_level => C_LEVEL_PROCEDURE
83583 ,p_module => l_log_module);
83584 END IF;
83585 --
83586 EXCEPTION
83587 WHEN xla_exceptions_pkg.application_exception THEN
83588 RAISE;
83589 WHEN OTHERS THEN
83590 xla_exceptions_pkg.raise_message
83591 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_152');
83592 END AcctLineType_152;
83593 --
83594
83595 ---------------------------------------
83596 --
83597 -- PRIVATE FUNCTION
83598 -- AcctLineType_153
83599 --
83600 ---------------------------------------
83601 PROCEDURE AcctLineType_153 (
83602 p_application_id IN NUMBER
83603 ,p_event_id IN NUMBER
83604 ,p_calculate_acctd_flag IN VARCHAR2
83605 ,p_calculate_g_l_flag IN VARCHAR2
83606 ,p_actual_flag IN OUT VARCHAR2
83607 ,p_balance_type_code OUT VARCHAR2
83608 ,p_gain_or_loss_ref OUT VARCHAR2
83609
83610 --Cost Management Default Account
83611 , p_source_4 IN NUMBER
83612 --DISTRIBUTION_IDENTIFIER
83613 , p_source_11 IN NUMBER
83614 --Distribution Type
83615 , p_source_12 IN VARCHAR2
83616 , p_source_12_meaning IN VARCHAR2
83617 --Entered Currency Code
83618 , p_source_15 IN VARCHAR2
83619 --Entered Amount
83620 , p_source_18 IN NUMBER
83621 --Currency Conversion Date
83622 , p_source_19 IN DATE
83623 --Currency Conversion Rate
83624 , p_source_20 IN NUMBER
83625 --Currency Conversion Type
83626 , p_source_21 IN VARCHAR2
83627 --Accounted Amount
83628 , p_source_22 IN NUMBER
83629 --Accounting Line Type
83630 , p_source_24 IN NUMBER
83631 )
83632 IS
83633
83634 l_component_type VARCHAR2(80);
83635 l_component_code VARCHAR2(30);
83636 l_component_type_code VARCHAR2(1);
83637 l_component_appl_id INTEGER;
83638 l_amb_context_code VARCHAR2(30);
83639 l_entity_code VARCHAR2(30);
83640 l_event_class_code VARCHAR2(30);
83641 l_ae_header_id NUMBER;
83642 l_event_type_code VARCHAR2(30);
83643 l_line_definition_code VARCHAR2(30);
83644 l_line_definition_owner_code VARCHAR2(1);
83645 --
83646 -- adr variables
83647 l_segment VARCHAR2(30);
83648 l_ccid NUMBER;
83649 l_adr_transaction_coa_id NUMBER;
83650 l_adr_accounting_coa_id NUMBER;
83651 l_adr_flexfield_segment_code VARCHAR2(30);
83652 l_adr_flex_value_set_id NUMBER;
83653 l_adr_value_type_code VARCHAR2(30);
83654 l_adr_value_combination_id NUMBER;
83655 l_adr_value_segment_code VARCHAR2(30);
83656
83657 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
83658 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
83659 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
83660 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
83661
83662 -- 4262811 Variables ------------------------------------------------------------------------------------------
83663 l_entered_amt_idx NUMBER;
83664 l_accted_amt_idx NUMBER;
83665 l_acc_rev_flag VARCHAR2(1);
83666 l_accrual_line_num NUMBER;
83667 l_tmp_amt NUMBER;
83668 l_acc_rev_natural_side_code VARCHAR2(1);
83669
83670 l_num_entries NUMBER;
83671 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
83672 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
83673 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
83674 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
83675 l_recog_line_1 NUMBER;
83676 l_recog_line_2 NUMBER;
83677
83678 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
83679 l_bflow_applied_to_amt NUMBER; -- 5132302
83680 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
83681
83682 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
83683
83684 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
83685 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
83686
83687 ---------------------------------------------------------------------------------------------------------------
83688
83689
83690 --
83691 -- bulk performance
83692 --
83693 l_balance_type_code VARCHAR2(1);
83694 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
83695 l_log_module VARCHAR2(240);
83696
83697 --
83698 -- Upgrade strategy
83699 --
83700 l_actual_upg_option VARCHAR2(1);
83701 l_enc_upg_option VARCHAR2(1);
83702
83703 --
83704 BEGIN
83705 --
83706 IF g_log_enabled THEN
83707 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_153';
83708 END IF;
83709 --
83710 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
83711
83712 trace
83713 (p_msg => 'BEGIN of AcctLineType_153'
83714 ,p_level => C_LEVEL_PROCEDURE
83715 ,p_module => l_log_module);
83716
83717 END IF;
83718 --
83719 l_component_type := 'AMB_JLT';
83720 l_component_code := 'INVENTORY_VALUATION';
83721 l_component_type_code := 'S';
83722 l_component_appl_id := 707;
83723 l_amb_context_code := 'DEFAULT';
83724 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
83725 l_event_class_code := 'FOB_RCPT_SENDER_SHIP';
83726 l_event_type_code := 'FOB_RCPT_SENDER_SHIP_ALL';
83727 l_line_definition_owner_code := 'S';
83728 l_line_definition_code := 'FOB_RCPT_SEND_SHIP';
83729 --
83730 l_balance_type_code := 'A';
83731 l_segment := NULL;
83732 l_ccid := NULL;
83733 l_adr_transaction_coa_id := NULL;
83734 l_adr_accounting_coa_id := NULL;
83735 l_adr_flexfield_segment_code := NULL;
83736 l_adr_flex_value_set_id := NULL;
83737 l_adr_value_type_code := NULL;
83738 l_adr_value_combination_id := NULL;
83739 l_adr_value_segment_code := NULL;
83740
83741 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
83742 l_bflow_class_code := ''; -- 4219869 Business Flow
83743 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
83744 l_budgetary_control_flag := 'N';
83745
83746 l_bflow_applied_to_amt_idx := NULL; -- 5132302
83747 l_bflow_applied_to_amt := NULL; -- 5132302
83748 l_entered_amt_idx := NULL; -- 4262811
83749 l_accted_amt_idx := NULL; -- 4262811
83750 l_acc_rev_flag := NULL; -- 4262811
83751 l_accrual_line_num := NULL; -- 4262811
83752 l_tmp_amt := NULL; -- 4262811
83753 --
83754
83755 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
83756 l_balance_type_code <> 'B' THEN
83757 IF NVL(p_source_24,9E125) = 1
83758 THEN
83759
83760 --
83761 XLA_AE_LINES_PKG.SetNewLine;
83762
83763 p_balance_type_code := l_balance_type_code;
83764 -- set the flag so later we will know whether the gain loss line needs to be created
83765
83766 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
83767 p_actual_flag :='A';
83768 END IF;
83769
83770 --
83771 -- bulk performance
83772 --
83773 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
83774 p_header_num => 0); -- 4262811
83775 --
83776 -- set accounting line options
83777 --
83778 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
83779 p_natural_side_code => 'D'
83780 , p_gain_or_loss_flag => 'N'
83781 , p_gl_transfer_mode_code => 'S'
83782 , p_acct_entry_type_code => 'A'
83783 , p_switch_side_flag => 'Y'
83784 , p_merge_duplicate_code => 'N'
83785 );
83786 --
83787 l_acc_rev_natural_side_code := 'C'; -- 4262811
83788 --
83789 --
83790 -- set accounting line type info
83791 --
83792 xla_ae_lines_pkg.SetAcctLineType
83793 (p_component_type => l_component_type
83794 ,p_event_type_code => l_event_type_code
83795 ,p_line_definition_owner_code => l_line_definition_owner_code
83796 ,p_line_definition_code => l_line_definition_code
83797 ,p_accounting_line_code => l_component_code
83798 ,p_accounting_line_type_code => l_component_type_code
83799 ,p_accounting_line_appl_id => l_component_appl_id
83800 ,p_amb_context_code => l_amb_context_code
83801 ,p_entity_code => l_entity_code
83802 ,p_event_class_code => l_event_class_code);
83803 --
83804 -- set accounting class
83805 --
83806 xla_ae_lines_pkg.SetAcctClass(
83807 p_accounting_class_code => 'INVENTORY_VALUATION'
83808 , p_ae_header_id => l_ae_header_id
83809 );
83810
83811 --
83812 -- set rounding class
83813 --
83814 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
83815 'INVENTORY_VALUATION';
83816
83817 --
83818 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
83819 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
83820 --
83821 -- bulk performance
83822 --
83823 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
83824
83825 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
83826 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
83827
83828 -- 4955764
83829 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
83830 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
83831
83832 -- 4458381 Public Sector Enh
83833
83834 --
83835 -- set accounting attributes for the line type
83836 --
83837 l_entered_amt_idx := 3;
83838 l_accted_amt_idx := 8;
83839 l_bflow_applied_to_amt_idx := NULL; -- 5132302
83840 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
83841 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
83842 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
83843 l_rec_acct_attrs.array_char_value(2) := p_source_12;
83844 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
83845 l_rec_acct_attrs.array_num_value(3) := p_source_18;
83846 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
83847 l_rec_acct_attrs.array_char_value(4) := p_source_15;
83848 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
83849 l_rec_acct_attrs.array_date_value(5) := p_source_19;
83850 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
83851 l_rec_acct_attrs.array_num_value(6) := p_source_20;
83852 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
83853 l_rec_acct_attrs.array_char_value(7) := p_source_21;
83854 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
83855 l_rec_acct_attrs.array_num_value(8) := p_source_22;
83856
83857 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
83858 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
83859
83860 ---------------------------------------------------------------------------------------------------------------
83861 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
83862 ---------------------------------------------------------------------------------------------------------------
83863 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
83864
83865 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
83866 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
83867
83868 IF xla_accounting_cache_pkg.GetValueChar
83869 (p_source_code => 'LEDGER_CATEGORY_CODE'
83870 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
83871 AND l_bflow_method_code = 'PRIOR_ENTRY'
83872 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
83873 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
83874 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
83875 )
83876 THEN
83877 xla_ae_lines_pkg.BflowUpgEntry
83878 (p_business_method_code => l_bflow_method_code
83879 ,p_business_class_code => l_bflow_class_code
83880 ,p_balance_type => l_balance_type_code);
83881 ELSE
83882 NULL;
83883 -- No business flow processing for business flow method of NONE.
83884 END IF;
83885
83886 --
83887 -- call analytical criteria
83888 --
83889
83890 --
83891 -- call description
83892 --
83893 -- No description or it is inherited.
83894 --
83895 -- call ADRs
83896 -- Bug 4922099
83897 --
83898 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
83899 (NVL(l_actual_upg_option, 'N') = 'O') OR
83900 (NVL(l_enc_upg_option, 'N') = 'O')
83901 )
83902 THEN
83903 NULL;
83904 --
83905 --
83906
83907 l_ccid := AcctDerRule_4(
83908 p_application_id => p_application_id
83909 , p_ae_header_id => l_ae_header_id
83910 , p_source_4 => p_source_4
83911 , x_transaction_coa_id => l_adr_transaction_coa_id
83912 , x_accounting_coa_id => l_adr_accounting_coa_id
83913 , x_value_type_code => l_adr_value_type_code
83914 , p_side => 'NA'
83915 );
83916
83917 xla_ae_lines_pkg.set_ccid(
83918 p_code_combination_id => l_ccid
83919 , p_value_type_code => l_adr_value_type_code
83920 , p_transaction_coa_id => l_adr_transaction_coa_id
83921 , p_accounting_coa_id => l_adr_accounting_coa_id
83922 , p_adr_code => 'CST_DEFAULT'
83923 , p_adr_type_code => 'S'
83924 , p_component_type => l_component_type
83925 , p_component_code => l_component_code
83926 , p_component_type_code => l_component_type_code
83927 , p_component_appl_id => l_component_appl_id
83928 , p_amb_context_code => l_amb_context_code
83929 , p_side => 'NA'
83930 );
83931
83932
83933 --
83934 --
83935 END IF;
83936 --
83937 -- Bug 4922099
83938 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
83939 (NVL(l_enc_upg_option, 'N') = 'O')
83940 ) AND
83941 (l_bflow_method_code = 'PRIOR_ENTRY')
83942 )
83943 THEN
83944 IF
83945 --
83946 1 = 2
83947 --
83948 THEN
83949 xla_accounting_err_pkg.build_message
83950 (p_appli_s_name => 'XLA'
83951 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
83952 ,p_token_1 => 'LINE_NUMBER'
83953 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
83954 ,p_token_2 => 'LINE_TYPE_NAME'
83955 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
83956 l_component_type
83957 ,l_component_code
83958 ,l_component_type_code
83959 ,l_component_appl_id
83960 ,l_amb_context_code
83961 ,l_entity_code
83962 ,l_event_class_code
83963 )
83964 ,p_token_3 => 'OWNER'
83965 ,p_value_3 => xla_lookups_pkg.get_meaning(
83966 p_lookup_type => 'XLA_OWNER_TYPE'
83967 ,p_lookup_code => l_component_type_code
83968 )
83969 ,p_token_4 => 'PRODUCT_NAME'
83970 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
83971 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
83972 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
83973 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
83974 ,p_ae_header_id => NULL
83975 );
83976
83977 IF (C_LEVEL_ERROR>= g_log_level) THEN
83978 trace
83979 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
83980 ,p_level => C_LEVEL_ERROR
83981 ,p_module => l_log_module);
83982 END IF;
83983 END IF;
83984 END IF;
83985 --
83986 --
83987 ------------------------------------------------------------------------------------------------
83988 -- 4219869 Business Flow
83989 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
83990 -- Prior Entry. Currently, the following code is always generated.
83991 ------------------------------------------------------------------------------------------------
83992 XLA_AE_LINES_PKG.ValidateCurrentLine;
83993
83994 ------------------------------------------------------------------------------------
83995 -- 4219869 Business Flow
83996 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
83997 ------------------------------------------------------------------------------------
83998 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
83999
84000 ----------------------------------------------------------------------------------
84001 -- 4219869 Business Flow
84002 -- Update journal entry status -- Need to generate this within IF <condition>
84003 ----------------------------------------------------------------------------------
84004 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
84005 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
84006 ,p_balance_type_code => l_balance_type_code
84007 );
84008
84009 -------------------------------------------------------------------------------------------
84010 -- 4262811 - Generate the Accrual Reversal lines
84011 -------------------------------------------------------------------------------------------
84012 BEGIN
84013 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
84014 (g_array_event(p_event_id).array_value_num('header_index'));
84015 IF l_acc_rev_flag IS NULL THEN
84016 l_acc_rev_flag := 'N';
84017 END IF;
84018 EXCEPTION
84019 WHEN OTHERS THEN
84020 l_acc_rev_flag := 'N';
84021 END;
84022 --
84023 IF (l_acc_rev_flag = 'Y') THEN
84024
84025 -- 4645092 ------------------------------------------------------------------------------
84026 -- To allow MPA report to determine if it should generate report process
84027 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
84028 ------------------------------------------------------------------------------------------
84029
84030 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
84031 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
84032 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
84033 -- call ADRs
84034 -- Bug 4922099
84035 --
84036 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
84037 (NVL(l_actual_upg_option, 'N') = 'O') OR
84038 (NVL(l_enc_upg_option, 'N') = 'O')
84039 )
84040 THEN
84041 NULL;
84042 --
84043 --
84044
84045 l_ccid := AcctDerRule_4(
84046 p_application_id => p_application_id
84047 , p_ae_header_id => l_ae_header_id
84048 , p_source_4 => p_source_4
84049 , x_transaction_coa_id => l_adr_transaction_coa_id
84050 , x_accounting_coa_id => l_adr_accounting_coa_id
84051 , x_value_type_code => l_adr_value_type_code
84052 , p_side => 'NA'
84053 );
84054
84055 xla_ae_lines_pkg.set_ccid(
84056 p_code_combination_id => l_ccid
84057 , p_value_type_code => l_adr_value_type_code
84058 , p_transaction_coa_id => l_adr_transaction_coa_id
84059 , p_accounting_coa_id => l_adr_accounting_coa_id
84060 , p_adr_code => 'CST_DEFAULT'
84061 , p_adr_type_code => 'S'
84062 , p_component_type => l_component_type
84063 , p_component_code => l_component_code
84064 , p_component_type_code => l_component_type_code
84065 , p_component_appl_id => l_component_appl_id
84066 , p_amb_context_code => l_amb_context_code
84067 , p_side => 'NA'
84068 );
84069
84070
84071 --
84072 --
84073 END IF;
84074
84075 --
84076 -- Update the line information that should be overwritten
84077 --
84078 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
84079 p_header_num => 1);
84080 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
84081
84082 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
84083
84084 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
84085 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
84086 END IF;
84087
84088 --
84089 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
84090 --
84091 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
84092 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
84093 ELSE
84094 ---------------------------------------------------------------------------------------------------
84095 -- 4262811a Switch Sign
84096 ---------------------------------------------------------------------------------------------------
84097 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
84098 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
84099 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
84100 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
84101 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
84102 -- 5132302
84103 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
84104 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
84105
84106 END IF;
84107
84108 -- 4955764
84109 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
84110 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
84111
84112
84113 XLA_AE_LINES_PKG.ValidateCurrentLine;
84114 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
84115
84116 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
84117 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
84118 ,p_balance_type_code => l_balance_type_code);
84119
84120 END IF;
84121
84122 -----------------------------------------------------------------------------------------
84123 -- 4262811 Multiperiod Accounting
84124 -----------------------------------------------------------------------------------------
84125 -- No MPA option is assigned.
84126
84127
84128 END IF;
84129 END IF;
84130 --
84131
84132 --
84133 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
84134 trace
84135 (p_msg => 'END of AcctLineType_153'
84136 ,p_level => C_LEVEL_PROCEDURE
84137 ,p_module => l_log_module);
84138 END IF;
84139 --
84140 EXCEPTION
84141 WHEN xla_exceptions_pkg.application_exception THEN
84142 RAISE;
84143 WHEN OTHERS THEN
84144 xla_exceptions_pkg.raise_message
84145 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_153');
84146 END AcctLineType_153;
84147 --
84148
84149 ---------------------------------------
84150 --
84151 -- PRIVATE FUNCTION
84152 -- AcctLineType_154
84153 --
84154 ---------------------------------------
84155 PROCEDURE AcctLineType_154 (
84156 p_application_id IN NUMBER
84157 ,p_event_id IN NUMBER
84158 ,p_calculate_acctd_flag IN VARCHAR2
84159 ,p_calculate_g_l_flag IN VARCHAR2
84160 ,p_actual_flag IN OUT VARCHAR2
84161 ,p_balance_type_code OUT VARCHAR2
84162 ,p_gain_or_loss_ref OUT VARCHAR2
84163
84164 --Cost Management Default Account
84165 , p_source_4 IN NUMBER
84166 --DISTRIBUTION_IDENTIFIER
84167 , p_source_11 IN NUMBER
84168 --Distribution Type
84169 , p_source_12 IN VARCHAR2
84170 , p_source_12_meaning IN VARCHAR2
84171 --Entered Currency Code
84172 , p_source_15 IN VARCHAR2
84173 --Entered Amount
84174 , p_source_18 IN NUMBER
84175 --Currency Conversion Date
84176 , p_source_19 IN DATE
84177 --Currency Conversion Rate
84178 , p_source_20 IN NUMBER
84179 --Currency Conversion Type
84180 , p_source_21 IN VARCHAR2
84181 --Accounted Amount
84182 , p_source_22 IN NUMBER
84183 --Accounting Line Type
84184 , p_source_24 IN NUMBER
84185 )
84186 IS
84187
84188 l_component_type VARCHAR2(80);
84189 l_component_code VARCHAR2(30);
84190 l_component_type_code VARCHAR2(1);
84191 l_component_appl_id INTEGER;
84192 l_amb_context_code VARCHAR2(30);
84193 l_entity_code VARCHAR2(30);
84194 l_event_class_code VARCHAR2(30);
84195 l_ae_header_id NUMBER;
84196 l_event_type_code VARCHAR2(30);
84197 l_line_definition_code VARCHAR2(30);
84198 l_line_definition_owner_code VARCHAR2(1);
84199 --
84200 -- adr variables
84201 l_segment VARCHAR2(30);
84202 l_ccid NUMBER;
84203 l_adr_transaction_coa_id NUMBER;
84204 l_adr_accounting_coa_id NUMBER;
84205 l_adr_flexfield_segment_code VARCHAR2(30);
84206 l_adr_flex_value_set_id NUMBER;
84207 l_adr_value_type_code VARCHAR2(30);
84208 l_adr_value_combination_id NUMBER;
84209 l_adr_value_segment_code VARCHAR2(30);
84210
84211 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
84212 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
84213 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
84214 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
84215
84216 -- 4262811 Variables ------------------------------------------------------------------------------------------
84217 l_entered_amt_idx NUMBER;
84218 l_accted_amt_idx NUMBER;
84219 l_acc_rev_flag VARCHAR2(1);
84220 l_accrual_line_num NUMBER;
84221 l_tmp_amt NUMBER;
84222 l_acc_rev_natural_side_code VARCHAR2(1);
84223
84224 l_num_entries NUMBER;
84225 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
84226 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
84227 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
84228 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
84229 l_recog_line_1 NUMBER;
84230 l_recog_line_2 NUMBER;
84231
84232 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
84233 l_bflow_applied_to_amt NUMBER; -- 5132302
84234 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
84235
84236 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
84237
84238 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
84239 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
84240
84241 ---------------------------------------------------------------------------------------------------------------
84242
84243
84244 --
84245 -- bulk performance
84246 --
84247 l_balance_type_code VARCHAR2(1);
84248 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
84249 l_log_module VARCHAR2(240);
84250
84251 --
84252 -- Upgrade strategy
84253 --
84254 l_actual_upg_option VARCHAR2(1);
84255 l_enc_upg_option VARCHAR2(1);
84256
84257 --
84258 BEGIN
84259 --
84260 IF g_log_enabled THEN
84261 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_154';
84262 END IF;
84263 --
84264 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
84265
84266 trace
84267 (p_msg => 'BEGIN of AcctLineType_154'
84268 ,p_level => C_LEVEL_PROCEDURE
84269 ,p_module => l_log_module);
84270
84271 END IF;
84272 --
84273 l_component_type := 'AMB_JLT';
84274 l_component_code := 'INVENTORY_VALUATION';
84275 l_component_type_code := 'S';
84276 l_component_appl_id := 707;
84277 l_amb_context_code := 'DEFAULT';
84278 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
84279 l_event_class_code := 'FOB_SHIP_SENDER_SHIP';
84280 l_event_type_code := 'FOB_SHIP_SENDER_SHIP_ALL';
84281 l_line_definition_owner_code := 'S';
84282 l_line_definition_code := 'FOB_SHIP_SENDER_SHIP';
84283 --
84284 l_balance_type_code := 'A';
84285 l_segment := NULL;
84286 l_ccid := NULL;
84287 l_adr_transaction_coa_id := NULL;
84288 l_adr_accounting_coa_id := NULL;
84289 l_adr_flexfield_segment_code := NULL;
84290 l_adr_flex_value_set_id := NULL;
84291 l_adr_value_type_code := NULL;
84292 l_adr_value_combination_id := NULL;
84293 l_adr_value_segment_code := NULL;
84294
84295 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
84296 l_bflow_class_code := ''; -- 4219869 Business Flow
84297 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
84298 l_budgetary_control_flag := 'N';
84299
84300 l_bflow_applied_to_amt_idx := NULL; -- 5132302
84301 l_bflow_applied_to_amt := NULL; -- 5132302
84302 l_entered_amt_idx := NULL; -- 4262811
84303 l_accted_amt_idx := NULL; -- 4262811
84304 l_acc_rev_flag := NULL; -- 4262811
84305 l_accrual_line_num := NULL; -- 4262811
84306 l_tmp_amt := NULL; -- 4262811
84307 --
84308
84309 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
84310 l_balance_type_code <> 'B' THEN
84311 IF NVL(p_source_24,9E125) = 1
84312 THEN
84313
84314 --
84315 XLA_AE_LINES_PKG.SetNewLine;
84316
84317 p_balance_type_code := l_balance_type_code;
84318 -- set the flag so later we will know whether the gain loss line needs to be created
84319
84320 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
84321 p_actual_flag :='A';
84322 END IF;
84323
84324 --
84325 -- bulk performance
84326 --
84327 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
84328 p_header_num => 0); -- 4262811
84329 --
84330 -- set accounting line options
84331 --
84332 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
84333 p_natural_side_code => 'D'
84334 , p_gain_or_loss_flag => 'N'
84335 , p_gl_transfer_mode_code => 'S'
84336 , p_acct_entry_type_code => 'A'
84337 , p_switch_side_flag => 'Y'
84338 , p_merge_duplicate_code => 'N'
84339 );
84340 --
84341 l_acc_rev_natural_side_code := 'C'; -- 4262811
84342 --
84343 --
84344 -- set accounting line type info
84345 --
84346 xla_ae_lines_pkg.SetAcctLineType
84347 (p_component_type => l_component_type
84348 ,p_event_type_code => l_event_type_code
84349 ,p_line_definition_owner_code => l_line_definition_owner_code
84350 ,p_line_definition_code => l_line_definition_code
84351 ,p_accounting_line_code => l_component_code
84352 ,p_accounting_line_type_code => l_component_type_code
84353 ,p_accounting_line_appl_id => l_component_appl_id
84354 ,p_amb_context_code => l_amb_context_code
84355 ,p_entity_code => l_entity_code
84356 ,p_event_class_code => l_event_class_code);
84357 --
84358 -- set accounting class
84359 --
84360 xla_ae_lines_pkg.SetAcctClass(
84361 p_accounting_class_code => 'INVENTORY_VALUATION'
84362 , p_ae_header_id => l_ae_header_id
84363 );
84364
84365 --
84366 -- set rounding class
84367 --
84368 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
84369 'INVENTORY_VALUATION';
84370
84371 --
84372 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
84373 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
84374 --
84375 -- bulk performance
84376 --
84377 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
84378
84379 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
84380 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
84381
84382 -- 4955764
84383 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
84384 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
84385
84386 -- 4458381 Public Sector Enh
84387
84388 --
84389 -- set accounting attributes for the line type
84390 --
84391 l_entered_amt_idx := 3;
84392 l_accted_amt_idx := 8;
84393 l_bflow_applied_to_amt_idx := NULL; -- 5132302
84394 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
84395 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
84396 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
84397 l_rec_acct_attrs.array_char_value(2) := p_source_12;
84398 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
84399 l_rec_acct_attrs.array_num_value(3) := p_source_18;
84400 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
84401 l_rec_acct_attrs.array_char_value(4) := p_source_15;
84402 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
84403 l_rec_acct_attrs.array_date_value(5) := p_source_19;
84404 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
84405 l_rec_acct_attrs.array_num_value(6) := p_source_20;
84406 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
84407 l_rec_acct_attrs.array_char_value(7) := p_source_21;
84408 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
84409 l_rec_acct_attrs.array_num_value(8) := p_source_22;
84410
84411 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
84412 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
84413
84414 ---------------------------------------------------------------------------------------------------------------
84415 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
84416 ---------------------------------------------------------------------------------------------------------------
84417 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
84418
84419 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
84420 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
84421
84422 IF xla_accounting_cache_pkg.GetValueChar
84423 (p_source_code => 'LEDGER_CATEGORY_CODE'
84424 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
84425 AND l_bflow_method_code = 'PRIOR_ENTRY'
84426 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
84427 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
84428 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
84429 )
84430 THEN
84431 xla_ae_lines_pkg.BflowUpgEntry
84432 (p_business_method_code => l_bflow_method_code
84433 ,p_business_class_code => l_bflow_class_code
84434 ,p_balance_type => l_balance_type_code);
84435 ELSE
84436 NULL;
84437 -- No business flow processing for business flow method of NONE.
84438 END IF;
84439
84440 --
84441 -- call analytical criteria
84442 --
84443
84444 --
84445 -- call description
84446 --
84447 -- No description or it is inherited.
84448 --
84449 -- call ADRs
84450 -- Bug 4922099
84451 --
84452 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
84453 (NVL(l_actual_upg_option, 'N') = 'O') OR
84454 (NVL(l_enc_upg_option, 'N') = 'O')
84455 )
84456 THEN
84457 NULL;
84458 --
84459 --
84460
84461 l_ccid := AcctDerRule_4(
84462 p_application_id => p_application_id
84463 , p_ae_header_id => l_ae_header_id
84464 , p_source_4 => p_source_4
84465 , x_transaction_coa_id => l_adr_transaction_coa_id
84466 , x_accounting_coa_id => l_adr_accounting_coa_id
84467 , x_value_type_code => l_adr_value_type_code
84468 , p_side => 'NA'
84469 );
84470
84471 xla_ae_lines_pkg.set_ccid(
84472 p_code_combination_id => l_ccid
84473 , p_value_type_code => l_adr_value_type_code
84474 , p_transaction_coa_id => l_adr_transaction_coa_id
84475 , p_accounting_coa_id => l_adr_accounting_coa_id
84476 , p_adr_code => 'CST_DEFAULT'
84477 , p_adr_type_code => 'S'
84478 , p_component_type => l_component_type
84479 , p_component_code => l_component_code
84480 , p_component_type_code => l_component_type_code
84481 , p_component_appl_id => l_component_appl_id
84482 , p_amb_context_code => l_amb_context_code
84483 , p_side => 'NA'
84484 );
84485
84486
84487 --
84488 --
84489 END IF;
84490 --
84491 -- Bug 4922099
84492 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
84493 (NVL(l_enc_upg_option, 'N') = 'O')
84494 ) AND
84495 (l_bflow_method_code = 'PRIOR_ENTRY')
84496 )
84497 THEN
84498 IF
84499 --
84500 1 = 2
84501 --
84502 THEN
84503 xla_accounting_err_pkg.build_message
84504 (p_appli_s_name => 'XLA'
84505 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
84506 ,p_token_1 => 'LINE_NUMBER'
84507 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
84508 ,p_token_2 => 'LINE_TYPE_NAME'
84509 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
84510 l_component_type
84511 ,l_component_code
84512 ,l_component_type_code
84513 ,l_component_appl_id
84514 ,l_amb_context_code
84515 ,l_entity_code
84516 ,l_event_class_code
84517 )
84518 ,p_token_3 => 'OWNER'
84519 ,p_value_3 => xla_lookups_pkg.get_meaning(
84520 p_lookup_type => 'XLA_OWNER_TYPE'
84521 ,p_lookup_code => l_component_type_code
84522 )
84523 ,p_token_4 => 'PRODUCT_NAME'
84524 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
84525 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
84526 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
84527 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
84528 ,p_ae_header_id => NULL
84529 );
84530
84531 IF (C_LEVEL_ERROR>= g_log_level) THEN
84532 trace
84533 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
84534 ,p_level => C_LEVEL_ERROR
84535 ,p_module => l_log_module);
84536 END IF;
84537 END IF;
84538 END IF;
84539 --
84540 --
84541 ------------------------------------------------------------------------------------------------
84542 -- 4219869 Business Flow
84543 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
84544 -- Prior Entry. Currently, the following code is always generated.
84545 ------------------------------------------------------------------------------------------------
84546 XLA_AE_LINES_PKG.ValidateCurrentLine;
84547
84548 ------------------------------------------------------------------------------------
84549 -- 4219869 Business Flow
84550 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
84551 ------------------------------------------------------------------------------------
84552 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
84553
84554 ----------------------------------------------------------------------------------
84555 -- 4219869 Business Flow
84556 -- Update journal entry status -- Need to generate this within IF <condition>
84557 ----------------------------------------------------------------------------------
84558 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
84559 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
84560 ,p_balance_type_code => l_balance_type_code
84561 );
84562
84563 -------------------------------------------------------------------------------------------
84564 -- 4262811 - Generate the Accrual Reversal lines
84565 -------------------------------------------------------------------------------------------
84566 BEGIN
84567 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
84568 (g_array_event(p_event_id).array_value_num('header_index'));
84569 IF l_acc_rev_flag IS NULL THEN
84570 l_acc_rev_flag := 'N';
84571 END IF;
84572 EXCEPTION
84573 WHEN OTHERS THEN
84574 l_acc_rev_flag := 'N';
84575 END;
84576 --
84577 IF (l_acc_rev_flag = 'Y') THEN
84578
84579 -- 4645092 ------------------------------------------------------------------------------
84580 -- To allow MPA report to determine if it should generate report process
84581 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
84582 ------------------------------------------------------------------------------------------
84583
84584 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
84585 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
84586 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
84587 -- call ADRs
84588 -- Bug 4922099
84589 --
84590 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
84591 (NVL(l_actual_upg_option, 'N') = 'O') OR
84592 (NVL(l_enc_upg_option, 'N') = 'O')
84593 )
84594 THEN
84595 NULL;
84596 --
84597 --
84598
84599 l_ccid := AcctDerRule_4(
84600 p_application_id => p_application_id
84601 , p_ae_header_id => l_ae_header_id
84602 , p_source_4 => p_source_4
84603 , x_transaction_coa_id => l_adr_transaction_coa_id
84604 , x_accounting_coa_id => l_adr_accounting_coa_id
84605 , x_value_type_code => l_adr_value_type_code
84606 , p_side => 'NA'
84607 );
84608
84609 xla_ae_lines_pkg.set_ccid(
84610 p_code_combination_id => l_ccid
84611 , p_value_type_code => l_adr_value_type_code
84612 , p_transaction_coa_id => l_adr_transaction_coa_id
84613 , p_accounting_coa_id => l_adr_accounting_coa_id
84614 , p_adr_code => 'CST_DEFAULT'
84615 , p_adr_type_code => 'S'
84616 , p_component_type => l_component_type
84617 , p_component_code => l_component_code
84618 , p_component_type_code => l_component_type_code
84619 , p_component_appl_id => l_component_appl_id
84620 , p_amb_context_code => l_amb_context_code
84621 , p_side => 'NA'
84622 );
84623
84624
84625 --
84626 --
84627 END IF;
84628
84629 --
84630 -- Update the line information that should be overwritten
84631 --
84632 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
84633 p_header_num => 1);
84634 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
84635
84636 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
84637
84638 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
84639 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
84640 END IF;
84641
84642 --
84643 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
84644 --
84645 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
84646 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
84647 ELSE
84648 ---------------------------------------------------------------------------------------------------
84649 -- 4262811a Switch Sign
84650 ---------------------------------------------------------------------------------------------------
84651 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
84652 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
84653 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
84654 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
84655 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
84656 -- 5132302
84657 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
84658 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
84659
84660 END IF;
84661
84662 -- 4955764
84663 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
84664 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
84665
84666
84667 XLA_AE_LINES_PKG.ValidateCurrentLine;
84668 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
84669
84670 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
84671 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
84672 ,p_balance_type_code => l_balance_type_code);
84673
84674 END IF;
84675
84676 -----------------------------------------------------------------------------------------
84677 -- 4262811 Multiperiod Accounting
84678 -----------------------------------------------------------------------------------------
84679 -- No MPA option is assigned.
84680
84681
84682 END IF;
84683 END IF;
84684 --
84685
84686 --
84687 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
84688 trace
84689 (p_msg => 'END of AcctLineType_154'
84690 ,p_level => C_LEVEL_PROCEDURE
84691 ,p_module => l_log_module);
84692 END IF;
84693 --
84694 EXCEPTION
84695 WHEN xla_exceptions_pkg.application_exception THEN
84696 RAISE;
84697 WHEN OTHERS THEN
84698 xla_exceptions_pkg.raise_message
84699 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_154');
84700 END AcctLineType_154;
84701 --
84702
84703 ---------------------------------------
84704 --
84705 -- PRIVATE FUNCTION
84706 -- AcctLineType_155
84707 --
84708 ---------------------------------------
84709 PROCEDURE AcctLineType_155 (
84710 p_application_id IN NUMBER
84711 ,p_event_id IN NUMBER
84712 ,p_calculate_acctd_flag IN VARCHAR2
84713 ,p_calculate_g_l_flag IN VARCHAR2
84714 ,p_actual_flag IN OUT VARCHAR2
84715 ,p_balance_type_code OUT VARCHAR2
84716 ,p_gain_or_loss_ref OUT VARCHAR2
84717
84718 --Cost Management Default Account
84719 , p_source_4 IN NUMBER
84720 --Receiving Accounting Line Type
84721 , p_source_5 IN VARCHAR2
84722 --DISTRIBUTION_IDENTIFIER
84723 , p_source_11 IN NUMBER
84724 --Distribution Type
84725 , p_source_12 IN VARCHAR2
84726 , p_source_12_meaning IN VARCHAR2
84727 --Entered Amount
84728 , p_source_18 IN NUMBER
84729 --Accounted Amount
84730 , p_source_22 IN NUMBER
84731 --Entered Currency Code
84732 , p_source_32 IN VARCHAR2
84733 --Currency Conversion Date
84734 , p_source_33 IN DATE
84735 --Currency Conversion Rate
84736 , p_source_34 IN NUMBER
84737 --Currency Conversion Type
84738 , p_source_36 IN VARCHAR2
84739 )
84740 IS
84741
84742 l_component_type VARCHAR2(80);
84743 l_component_code VARCHAR2(30);
84744 l_component_type_code VARCHAR2(1);
84745 l_component_appl_id INTEGER;
84746 l_amb_context_code VARCHAR2(30);
84747 l_entity_code VARCHAR2(30);
84748 l_event_class_code VARCHAR2(30);
84749 l_ae_header_id NUMBER;
84750 l_event_type_code VARCHAR2(30);
84751 l_line_definition_code VARCHAR2(30);
84752 l_line_definition_owner_code VARCHAR2(1);
84753 --
84754 -- adr variables
84755 l_segment VARCHAR2(30);
84756 l_ccid NUMBER;
84757 l_adr_transaction_coa_id NUMBER;
84758 l_adr_accounting_coa_id NUMBER;
84759 l_adr_flexfield_segment_code VARCHAR2(30);
84760 l_adr_flex_value_set_id NUMBER;
84761 l_adr_value_type_code VARCHAR2(30);
84762 l_adr_value_combination_id NUMBER;
84763 l_adr_value_segment_code VARCHAR2(30);
84764
84765 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
84766 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
84767 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
84768 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
84769
84770 -- 4262811 Variables ------------------------------------------------------------------------------------------
84771 l_entered_amt_idx NUMBER;
84772 l_accted_amt_idx NUMBER;
84773 l_acc_rev_flag VARCHAR2(1);
84774 l_accrual_line_num NUMBER;
84775 l_tmp_amt NUMBER;
84776 l_acc_rev_natural_side_code VARCHAR2(1);
84777
84778 l_num_entries NUMBER;
84779 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
84780 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
84781 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
84782 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
84783 l_recog_line_1 NUMBER;
84784 l_recog_line_2 NUMBER;
84785
84786 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
84787 l_bflow_applied_to_amt NUMBER; -- 5132302
84788 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
84789
84790 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
84791
84792 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
84793 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
84794
84795 ---------------------------------------------------------------------------------------------------------------
84796
84797
84798 --
84799 -- bulk performance
84800 --
84801 l_balance_type_code VARCHAR2(1);
84802 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
84803 l_log_module VARCHAR2(240);
84804
84805 --
84806 -- Upgrade strategy
84807 --
84808 l_actual_upg_option VARCHAR2(1);
84809 l_enc_upg_option VARCHAR2(1);
84810
84811 --
84812 BEGIN
84813 --
84814 IF g_log_enabled THEN
84815 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_155';
84816 END IF;
84817 --
84818 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
84819
84820 trace
84821 (p_msg => 'BEGIN of AcctLineType_155'
84822 ,p_level => C_LEVEL_PROCEDURE
84823 ,p_module => l_log_module);
84824
84825 END IF;
84826 --
84827 l_component_type := 'AMB_JLT';
84828 l_component_code := 'LANDED_COST_ABSORPTION';
84829 l_component_type_code := 'S';
84830 l_component_appl_id := 707;
84831 l_amb_context_code := 'DEFAULT';
84832 l_entity_code := 'RCV_ACCOUNTING_EVENTS';
84833 l_event_class_code := 'LDD_COST_ADJ_RCV';
84834 l_event_type_code := 'LDD_COST_ADJ_RCV_ALL';
84835 l_line_definition_owner_code := 'S';
84836 l_line_definition_code := 'LDD_COST_ADJ_RCV';
84837 --
84838 l_balance_type_code := 'A';
84839 l_segment := NULL;
84840 l_ccid := NULL;
84841 l_adr_transaction_coa_id := NULL;
84842 l_adr_accounting_coa_id := NULL;
84843 l_adr_flexfield_segment_code := NULL;
84844 l_adr_flex_value_set_id := NULL;
84845 l_adr_value_type_code := NULL;
84846 l_adr_value_combination_id := NULL;
84847 l_adr_value_segment_code := NULL;
84848
84849 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
84850 l_bflow_class_code := ''; -- 4219869 Business Flow
84851 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
84852 l_budgetary_control_flag := 'N';
84853
84854 l_bflow_applied_to_amt_idx := NULL; -- 5132302
84855 l_bflow_applied_to_amt := NULL; -- 5132302
84856 l_entered_amt_idx := NULL; -- 4262811
84857 l_accted_amt_idx := NULL; -- 4262811
84858 l_acc_rev_flag := NULL; -- 4262811
84859 l_accrual_line_num := NULL; -- 4262811
84860 l_tmp_amt := NULL; -- 4262811
84861 --
84862
84863 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
84864 l_balance_type_code <> 'B' THEN
84865 IF NVL(p_source_5,'
84866 ') = 'Landed Cost Absorption'
84867 THEN
84868
84869 --
84870 XLA_AE_LINES_PKG.SetNewLine;
84871
84872 p_balance_type_code := l_balance_type_code;
84873 -- set the flag so later we will know whether the gain loss line needs to be created
84874
84875 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
84876 p_actual_flag :='A';
84877 END IF;
84878
84879 --
84880 -- bulk performance
84881 --
84882 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
84883 p_header_num => 0); -- 4262811
84884 --
84885 -- set accounting line options
84886 --
84887 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
84888 p_natural_side_code => 'D'
84889 , p_gain_or_loss_flag => 'N'
84890 , p_gl_transfer_mode_code => 'S'
84891 , p_acct_entry_type_code => 'A'
84892 , p_switch_side_flag => 'Y'
84893 , p_merge_duplicate_code => 'N'
84894 );
84895 --
84896 l_acc_rev_natural_side_code := 'C'; -- 4262811
84897 --
84898 --
84899 -- set accounting line type info
84900 --
84901 xla_ae_lines_pkg.SetAcctLineType
84902 (p_component_type => l_component_type
84903 ,p_event_type_code => l_event_type_code
84904 ,p_line_definition_owner_code => l_line_definition_owner_code
84905 ,p_line_definition_code => l_line_definition_code
84906 ,p_accounting_line_code => l_component_code
84907 ,p_accounting_line_type_code => l_component_type_code
84908 ,p_accounting_line_appl_id => l_component_appl_id
84909 ,p_amb_context_code => l_amb_context_code
84910 ,p_entity_code => l_entity_code
84911 ,p_event_class_code => l_event_class_code);
84912 --
84913 -- set accounting class
84914 --
84915 xla_ae_lines_pkg.SetAcctClass(
84916 p_accounting_class_code => 'LANDED_COST_ABSORPTION'
84917 , p_ae_header_id => l_ae_header_id
84918 );
84919
84920 --
84921 -- set rounding class
84922 --
84923 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
84924 'LANDED_COST_ABSORPTION';
84925
84926 --
84927 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
84928 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
84929 --
84930 -- bulk performance
84931 --
84932 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
84933
84934 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
84935 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
84936
84937 -- 4955764
84938 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
84939 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
84940
84941 -- 4458381 Public Sector Enh
84942
84943 --
84944 -- set accounting attributes for the line type
84945 --
84946 l_entered_amt_idx := 3;
84947 l_accted_amt_idx := 8;
84948 l_bflow_applied_to_amt_idx := NULL; -- 5132302
84949 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
84950 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
84951 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
84952 l_rec_acct_attrs.array_char_value(2) := p_source_12;
84953 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
84954 l_rec_acct_attrs.array_num_value(3) := p_source_18;
84955 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
84956 l_rec_acct_attrs.array_char_value(4) := p_source_32;
84957 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
84958 l_rec_acct_attrs.array_date_value(5) := p_source_33;
84959 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
84960 l_rec_acct_attrs.array_num_value(6) := p_source_34;
84961 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
84962 l_rec_acct_attrs.array_char_value(7) := p_source_36;
84963 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
84964 l_rec_acct_attrs.array_num_value(8) := p_source_22;
84965
84966 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
84967 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
84968
84969 ---------------------------------------------------------------------------------------------------------------
84970 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
84971 ---------------------------------------------------------------------------------------------------------------
84972 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
84973
84974 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
84975 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
84976
84977 IF xla_accounting_cache_pkg.GetValueChar
84978 (p_source_code => 'LEDGER_CATEGORY_CODE'
84979 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
84980 AND l_bflow_method_code = 'PRIOR_ENTRY'
84981 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
84982 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
84983 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
84984 )
84985 THEN
84986 xla_ae_lines_pkg.BflowUpgEntry
84987 (p_business_method_code => l_bflow_method_code
84988 ,p_business_class_code => l_bflow_class_code
84989 ,p_balance_type => l_balance_type_code);
84990 ELSE
84991 NULL;
84992 -- No business flow processing for business flow method of NONE.
84993 END IF;
84994
84995 --
84996 -- call analytical criteria
84997 --
84998
84999 --
85000 -- call description
85001 --
85002 -- No description or it is inherited.
85003 --
85004 -- call ADRs
85005 -- Bug 4922099
85006 --
85007 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
85008 (NVL(l_actual_upg_option, 'N') = 'O') OR
85009 (NVL(l_enc_upg_option, 'N') = 'O')
85010 )
85011 THEN
85012 NULL;
85013 --
85014 --
85015
85016 l_ccid := AcctDerRule_4(
85017 p_application_id => p_application_id
85018 , p_ae_header_id => l_ae_header_id
85019 , p_source_4 => p_source_4
85020 , x_transaction_coa_id => l_adr_transaction_coa_id
85021 , x_accounting_coa_id => l_adr_accounting_coa_id
85022 , x_value_type_code => l_adr_value_type_code
85023 , p_side => 'NA'
85024 );
85025
85026 xla_ae_lines_pkg.set_ccid(
85027 p_code_combination_id => l_ccid
85028 , p_value_type_code => l_adr_value_type_code
85029 , p_transaction_coa_id => l_adr_transaction_coa_id
85030 , p_accounting_coa_id => l_adr_accounting_coa_id
85031 , p_adr_code => 'CST_DEFAULT'
85032 , p_adr_type_code => 'S'
85033 , p_component_type => l_component_type
85034 , p_component_code => l_component_code
85035 , p_component_type_code => l_component_type_code
85036 , p_component_appl_id => l_component_appl_id
85037 , p_amb_context_code => l_amb_context_code
85038 , p_side => 'NA'
85039 );
85040
85041
85042 --
85043 --
85044 END IF;
85045 --
85046 -- Bug 4922099
85047 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
85048 (NVL(l_enc_upg_option, 'N') = 'O')
85049 ) AND
85050 (l_bflow_method_code = 'PRIOR_ENTRY')
85051 )
85052 THEN
85053 IF
85054 --
85055 1 = 2
85056 --
85057 THEN
85058 xla_accounting_err_pkg.build_message
85059 (p_appli_s_name => 'XLA'
85060 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
85061 ,p_token_1 => 'LINE_NUMBER'
85062 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
85063 ,p_token_2 => 'LINE_TYPE_NAME'
85064 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
85065 l_component_type
85066 ,l_component_code
85067 ,l_component_type_code
85068 ,l_component_appl_id
85069 ,l_amb_context_code
85070 ,l_entity_code
85071 ,l_event_class_code
85072 )
85073 ,p_token_3 => 'OWNER'
85074 ,p_value_3 => xla_lookups_pkg.get_meaning(
85075 p_lookup_type => 'XLA_OWNER_TYPE'
85076 ,p_lookup_code => l_component_type_code
85077 )
85078 ,p_token_4 => 'PRODUCT_NAME'
85079 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
85080 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
85081 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
85082 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
85083 ,p_ae_header_id => NULL
85084 );
85085
85086 IF (C_LEVEL_ERROR>= g_log_level) THEN
85087 trace
85088 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
85089 ,p_level => C_LEVEL_ERROR
85090 ,p_module => l_log_module);
85091 END IF;
85092 END IF;
85093 END IF;
85094 --
85095 --
85096 ------------------------------------------------------------------------------------------------
85097 -- 4219869 Business Flow
85098 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
85099 -- Prior Entry. Currently, the following code is always generated.
85100 ------------------------------------------------------------------------------------------------
85101 XLA_AE_LINES_PKG.ValidateCurrentLine;
85102
85103 ------------------------------------------------------------------------------------
85104 -- 4219869 Business Flow
85105 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
85106 ------------------------------------------------------------------------------------
85107 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
85108
85109 ----------------------------------------------------------------------------------
85110 -- 4219869 Business Flow
85111 -- Update journal entry status -- Need to generate this within IF <condition>
85112 ----------------------------------------------------------------------------------
85113 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
85114 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
85115 ,p_balance_type_code => l_balance_type_code
85116 );
85117
85118 -------------------------------------------------------------------------------------------
85119 -- 4262811 - Generate the Accrual Reversal lines
85120 -------------------------------------------------------------------------------------------
85121 BEGIN
85122 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
85123 (g_array_event(p_event_id).array_value_num('header_index'));
85124 IF l_acc_rev_flag IS NULL THEN
85125 l_acc_rev_flag := 'N';
85126 END IF;
85127 EXCEPTION
85128 WHEN OTHERS THEN
85129 l_acc_rev_flag := 'N';
85130 END;
85131 --
85132 IF (l_acc_rev_flag = 'Y') THEN
85133
85134 -- 4645092 ------------------------------------------------------------------------------
85135 -- To allow MPA report to determine if it should generate report process
85136 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
85137 ------------------------------------------------------------------------------------------
85138
85139 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
85140 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
85141 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
85142 -- call ADRs
85143 -- Bug 4922099
85144 --
85145 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
85146 (NVL(l_actual_upg_option, 'N') = 'O') OR
85147 (NVL(l_enc_upg_option, 'N') = 'O')
85148 )
85149 THEN
85150 NULL;
85151 --
85152 --
85153
85154 l_ccid := AcctDerRule_4(
85155 p_application_id => p_application_id
85156 , p_ae_header_id => l_ae_header_id
85157 , p_source_4 => p_source_4
85158 , x_transaction_coa_id => l_adr_transaction_coa_id
85159 , x_accounting_coa_id => l_adr_accounting_coa_id
85160 , x_value_type_code => l_adr_value_type_code
85161 , p_side => 'NA'
85162 );
85163
85164 xla_ae_lines_pkg.set_ccid(
85165 p_code_combination_id => l_ccid
85166 , p_value_type_code => l_adr_value_type_code
85167 , p_transaction_coa_id => l_adr_transaction_coa_id
85168 , p_accounting_coa_id => l_adr_accounting_coa_id
85169 , p_adr_code => 'CST_DEFAULT'
85170 , p_adr_type_code => 'S'
85171 , p_component_type => l_component_type
85172 , p_component_code => l_component_code
85173 , p_component_type_code => l_component_type_code
85174 , p_component_appl_id => l_component_appl_id
85175 , p_amb_context_code => l_amb_context_code
85176 , p_side => 'NA'
85177 );
85178
85179
85180 --
85181 --
85182 END IF;
85183
85184 --
85185 -- Update the line information that should be overwritten
85186 --
85187 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
85188 p_header_num => 1);
85189 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
85190
85191 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
85192
85193 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
85194 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
85195 END IF;
85196
85197 --
85198 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
85199 --
85200 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
85201 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
85202 ELSE
85203 ---------------------------------------------------------------------------------------------------
85204 -- 4262811a Switch Sign
85205 ---------------------------------------------------------------------------------------------------
85206 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
85207 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
85208 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
85209 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
85210 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
85211 -- 5132302
85212 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
85213 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
85214
85215 END IF;
85216
85217 -- 4955764
85218 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
85219 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
85220
85221
85222 XLA_AE_LINES_PKG.ValidateCurrentLine;
85223 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
85224
85225 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
85226 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
85227 ,p_balance_type_code => l_balance_type_code);
85228
85229 END IF;
85230
85231 -----------------------------------------------------------------------------------------
85232 -- 4262811 Multiperiod Accounting
85233 -----------------------------------------------------------------------------------------
85234 -- No MPA option is assigned.
85235
85236
85237 END IF;
85238 END IF;
85239 --
85240
85241 --
85242 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
85243 trace
85244 (p_msg => 'END of AcctLineType_155'
85245 ,p_level => C_LEVEL_PROCEDURE
85246 ,p_module => l_log_module);
85247 END IF;
85248 --
85249 EXCEPTION
85250 WHEN xla_exceptions_pkg.application_exception THEN
85251 RAISE;
85252 WHEN OTHERS THEN
85253 xla_exceptions_pkg.raise_message
85254 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_155');
85255 END AcctLineType_155;
85256 --
85257
85258 ---------------------------------------
85259 --
85260 -- PRIVATE FUNCTION
85261 -- AcctLineType_156
85262 --
85263 ---------------------------------------
85264 PROCEDURE AcctLineType_156 (
85265 p_application_id IN NUMBER
85266 ,p_event_id IN NUMBER
85267 ,p_calculate_acctd_flag IN VARCHAR2
85268 ,p_calculate_g_l_flag IN VARCHAR2
85269 ,p_actual_flag IN OUT VARCHAR2
85270 ,p_balance_type_code OUT VARCHAR2
85271 ,p_gain_or_loss_ref OUT VARCHAR2
85272
85273 --Cost Management Default Account
85274 , p_source_4 IN NUMBER
85275 --Receiving Accounting Line Type
85276 , p_source_5 IN VARCHAR2
85277 --DISTRIBUTION_IDENTIFIER
85278 , p_source_11 IN NUMBER
85279 --Distribution Type
85280 , p_source_12 IN VARCHAR2
85281 , p_source_12_meaning IN VARCHAR2
85282 --Entered Currency Code
85283 , p_source_15 IN VARCHAR2
85284 --Entered Amount
85285 , p_source_18 IN NUMBER
85286 --Currency Conversion Date
85287 , p_source_19 IN DATE
85288 --Currency Conversion Rate
85289 , p_source_20 IN NUMBER
85290 --Currency Conversion Type
85291 , p_source_21 IN VARCHAR2
85292 --Accounted Amount
85293 , p_source_22 IN NUMBER
85294 )
85295 IS
85296
85297 l_component_type VARCHAR2(80);
85298 l_component_code VARCHAR2(30);
85299 l_component_type_code VARCHAR2(1);
85300 l_component_appl_id INTEGER;
85301 l_amb_context_code VARCHAR2(30);
85302 l_entity_code VARCHAR2(30);
85303 l_event_class_code VARCHAR2(30);
85304 l_ae_header_id NUMBER;
85305 l_event_type_code VARCHAR2(30);
85306 l_line_definition_code VARCHAR2(30);
85307 l_line_definition_owner_code VARCHAR2(1);
85308 --
85309 -- adr variables
85310 l_segment VARCHAR2(30);
85311 l_ccid NUMBER;
85312 l_adr_transaction_coa_id NUMBER;
85313 l_adr_accounting_coa_id NUMBER;
85314 l_adr_flexfield_segment_code VARCHAR2(30);
85315 l_adr_flex_value_set_id NUMBER;
85316 l_adr_value_type_code VARCHAR2(30);
85317 l_adr_value_combination_id NUMBER;
85318 l_adr_value_segment_code VARCHAR2(30);
85319
85320 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
85321 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
85322 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
85323 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
85324
85325 -- 4262811 Variables ------------------------------------------------------------------------------------------
85326 l_entered_amt_idx NUMBER;
85327 l_accted_amt_idx NUMBER;
85328 l_acc_rev_flag VARCHAR2(1);
85329 l_accrual_line_num NUMBER;
85330 l_tmp_amt NUMBER;
85331 l_acc_rev_natural_side_code VARCHAR2(1);
85332
85333 l_num_entries NUMBER;
85334 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
85335 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
85336 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
85337 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
85338 l_recog_line_1 NUMBER;
85339 l_recog_line_2 NUMBER;
85340
85341 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
85342 l_bflow_applied_to_amt NUMBER; -- 5132302
85343 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
85344
85345 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
85346
85347 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
85348 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
85349
85350 ---------------------------------------------------------------------------------------------------------------
85351
85352
85353 --
85354 -- bulk performance
85355 --
85356 l_balance_type_code VARCHAR2(1);
85357 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
85358 l_log_module VARCHAR2(240);
85359
85360 --
85361 -- Upgrade strategy
85362 --
85363 l_actual_upg_option VARCHAR2(1);
85364 l_enc_upg_option VARCHAR2(1);
85365
85366 --
85367 BEGIN
85368 --
85369 IF g_log_enabled THEN
85370 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_156';
85371 END IF;
85372 --
85373 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
85374
85375 trace
85376 (p_msg => 'BEGIN of AcctLineType_156'
85377 ,p_level => C_LEVEL_PROCEDURE
85378 ,p_module => l_log_module);
85379
85380 END IF;
85381 --
85382 l_component_type := 'AMB_JLT';
85383 l_component_code := 'LANDED_COST_ABSORPTION';
85384 l_component_type_code := 'S';
85385 l_component_appl_id := 707;
85386 l_amb_context_code := 'DEFAULT';
85387 l_entity_code := 'RCV_ACCOUNTING_EVENTS';
85388 l_event_class_code := 'RCPT_REC_INSP';
85389 l_event_type_code := 'RCPT_REC_INSP_ALL';
85390 l_line_definition_owner_code := 'S';
85391 l_line_definition_code := 'RCPT_REC_INSP';
85392 --
85393 l_balance_type_code := 'A';
85394 l_segment := NULL;
85395 l_ccid := NULL;
85396 l_adr_transaction_coa_id := NULL;
85397 l_adr_accounting_coa_id := NULL;
85398 l_adr_flexfield_segment_code := NULL;
85399 l_adr_flex_value_set_id := NULL;
85400 l_adr_value_type_code := NULL;
85401 l_adr_value_combination_id := NULL;
85402 l_adr_value_segment_code := NULL;
85403
85404 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
85405 l_bflow_class_code := ''; -- 4219869 Business Flow
85406 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
85407 l_budgetary_control_flag := 'N';
85408
85409 l_bflow_applied_to_amt_idx := NULL; -- 5132302
85410 l_bflow_applied_to_amt := NULL; -- 5132302
85411 l_entered_amt_idx := NULL; -- 4262811
85412 l_accted_amt_idx := NULL; -- 4262811
85413 l_acc_rev_flag := NULL; -- 4262811
85414 l_accrual_line_num := NULL; -- 4262811
85415 l_tmp_amt := NULL; -- 4262811
85416 --
85417
85418 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
85419 l_balance_type_code <> 'B' THEN
85420 IF NVL(p_source_5,'
85421 ') = 'Landed Cost Absorption'
85422 THEN
85423
85424 --
85425 XLA_AE_LINES_PKG.SetNewLine;
85426
85427 p_balance_type_code := l_balance_type_code;
85428 -- set the flag so later we will know whether the gain loss line needs to be created
85429
85430 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
85431 p_actual_flag :='A';
85432 END IF;
85433
85434 --
85435 -- bulk performance
85436 --
85437 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
85438 p_header_num => 0); -- 4262811
85439 --
85440 -- set accounting line options
85441 --
85442 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
85443 p_natural_side_code => 'D'
85444 , p_gain_or_loss_flag => 'N'
85445 , p_gl_transfer_mode_code => 'S'
85446 , p_acct_entry_type_code => 'A'
85447 , p_switch_side_flag => 'Y'
85448 , p_merge_duplicate_code => 'N'
85449 );
85450 --
85451 l_acc_rev_natural_side_code := 'C'; -- 4262811
85452 --
85453 --
85454 -- set accounting line type info
85455 --
85456 xla_ae_lines_pkg.SetAcctLineType
85457 (p_component_type => l_component_type
85458 ,p_event_type_code => l_event_type_code
85459 ,p_line_definition_owner_code => l_line_definition_owner_code
85460 ,p_line_definition_code => l_line_definition_code
85461 ,p_accounting_line_code => l_component_code
85462 ,p_accounting_line_type_code => l_component_type_code
85463 ,p_accounting_line_appl_id => l_component_appl_id
85464 ,p_amb_context_code => l_amb_context_code
85465 ,p_entity_code => l_entity_code
85466 ,p_event_class_code => l_event_class_code);
85467 --
85468 -- set accounting class
85469 --
85470 xla_ae_lines_pkg.SetAcctClass(
85471 p_accounting_class_code => 'LANDED_COST_ABSORPTION'
85472 , p_ae_header_id => l_ae_header_id
85473 );
85474
85475 --
85476 -- set rounding class
85477 --
85478 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
85479 'LANDED_COST_ABSORPTION';
85480
85481 --
85482 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
85483 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
85484 --
85485 -- bulk performance
85486 --
85487 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
85488
85489 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
85490 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
85491
85492 -- 4955764
85493 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
85494 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
85495
85496 -- 4458381 Public Sector Enh
85497
85498 --
85499 -- set accounting attributes for the line type
85500 --
85501 l_entered_amt_idx := 3;
85502 l_accted_amt_idx := 8;
85503 l_bflow_applied_to_amt_idx := NULL; -- 5132302
85504 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
85505 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
85506 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
85507 l_rec_acct_attrs.array_char_value(2) := p_source_12;
85508 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
85509 l_rec_acct_attrs.array_num_value(3) := p_source_18;
85510 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
85511 l_rec_acct_attrs.array_char_value(4) := p_source_15;
85512 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
85513 l_rec_acct_attrs.array_date_value(5) := p_source_19;
85514 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
85515 l_rec_acct_attrs.array_num_value(6) := p_source_20;
85516 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
85517 l_rec_acct_attrs.array_char_value(7) := p_source_21;
85518 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
85519 l_rec_acct_attrs.array_num_value(8) := p_source_22;
85520
85521 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
85522 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
85523
85524 ---------------------------------------------------------------------------------------------------------------
85525 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
85526 ---------------------------------------------------------------------------------------------------------------
85527 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
85528
85529 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
85530 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
85531
85532 IF xla_accounting_cache_pkg.GetValueChar
85533 (p_source_code => 'LEDGER_CATEGORY_CODE'
85534 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
85535 AND l_bflow_method_code = 'PRIOR_ENTRY'
85536 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
85537 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
85538 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
85539 )
85540 THEN
85541 xla_ae_lines_pkg.BflowUpgEntry
85542 (p_business_method_code => l_bflow_method_code
85543 ,p_business_class_code => l_bflow_class_code
85544 ,p_balance_type => l_balance_type_code);
85545 ELSE
85546 NULL;
85547 -- No business flow processing for business flow method of NONE.
85548 END IF;
85549
85550 --
85551 -- call analytical criteria
85552 --
85553
85554 --
85555 -- call description
85556 --
85557 -- No description or it is inherited.
85558 --
85559 -- call ADRs
85560 -- Bug 4922099
85561 --
85562 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
85563 (NVL(l_actual_upg_option, 'N') = 'O') OR
85564 (NVL(l_enc_upg_option, 'N') = 'O')
85565 )
85566 THEN
85567 NULL;
85568 --
85569 --
85570
85571 l_ccid := AcctDerRule_4(
85572 p_application_id => p_application_id
85573 , p_ae_header_id => l_ae_header_id
85574 , p_source_4 => p_source_4
85575 , x_transaction_coa_id => l_adr_transaction_coa_id
85576 , x_accounting_coa_id => l_adr_accounting_coa_id
85577 , x_value_type_code => l_adr_value_type_code
85578 , p_side => 'NA'
85579 );
85580
85581 xla_ae_lines_pkg.set_ccid(
85582 p_code_combination_id => l_ccid
85583 , p_value_type_code => l_adr_value_type_code
85584 , p_transaction_coa_id => l_adr_transaction_coa_id
85585 , p_accounting_coa_id => l_adr_accounting_coa_id
85586 , p_adr_code => 'CST_DEFAULT'
85587 , p_adr_type_code => 'S'
85588 , p_component_type => l_component_type
85589 , p_component_code => l_component_code
85590 , p_component_type_code => l_component_type_code
85591 , p_component_appl_id => l_component_appl_id
85592 , p_amb_context_code => l_amb_context_code
85593 , p_side => 'NA'
85594 );
85595
85596
85597 --
85598 --
85599 END IF;
85600 --
85601 -- Bug 4922099
85602 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
85603 (NVL(l_enc_upg_option, 'N') = 'O')
85604 ) AND
85605 (l_bflow_method_code = 'PRIOR_ENTRY')
85606 )
85607 THEN
85608 IF
85609 --
85610 1 = 2
85611 --
85612 THEN
85613 xla_accounting_err_pkg.build_message
85614 (p_appli_s_name => 'XLA'
85615 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
85616 ,p_token_1 => 'LINE_NUMBER'
85617 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
85618 ,p_token_2 => 'LINE_TYPE_NAME'
85619 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
85620 l_component_type
85621 ,l_component_code
85622 ,l_component_type_code
85623 ,l_component_appl_id
85624 ,l_amb_context_code
85625 ,l_entity_code
85626 ,l_event_class_code
85627 )
85628 ,p_token_3 => 'OWNER'
85629 ,p_value_3 => xla_lookups_pkg.get_meaning(
85630 p_lookup_type => 'XLA_OWNER_TYPE'
85631 ,p_lookup_code => l_component_type_code
85632 )
85633 ,p_token_4 => 'PRODUCT_NAME'
85634 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
85635 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
85636 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
85637 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
85638 ,p_ae_header_id => NULL
85639 );
85640
85641 IF (C_LEVEL_ERROR>= g_log_level) THEN
85642 trace
85643 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
85644 ,p_level => C_LEVEL_ERROR
85645 ,p_module => l_log_module);
85646 END IF;
85647 END IF;
85648 END IF;
85649 --
85650 --
85651 ------------------------------------------------------------------------------------------------
85652 -- 4219869 Business Flow
85653 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
85654 -- Prior Entry. Currently, the following code is always generated.
85655 ------------------------------------------------------------------------------------------------
85656 XLA_AE_LINES_PKG.ValidateCurrentLine;
85657
85658 ------------------------------------------------------------------------------------
85659 -- 4219869 Business Flow
85660 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
85661 ------------------------------------------------------------------------------------
85662 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
85663
85664 ----------------------------------------------------------------------------------
85665 -- 4219869 Business Flow
85666 -- Update journal entry status -- Need to generate this within IF <condition>
85667 ----------------------------------------------------------------------------------
85668 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
85669 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
85670 ,p_balance_type_code => l_balance_type_code
85671 );
85672
85673 -------------------------------------------------------------------------------------------
85674 -- 4262811 - Generate the Accrual Reversal lines
85675 -------------------------------------------------------------------------------------------
85676 BEGIN
85677 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
85678 (g_array_event(p_event_id).array_value_num('header_index'));
85679 IF l_acc_rev_flag IS NULL THEN
85680 l_acc_rev_flag := 'N';
85681 END IF;
85682 EXCEPTION
85683 WHEN OTHERS THEN
85684 l_acc_rev_flag := 'N';
85685 END;
85686 --
85687 IF (l_acc_rev_flag = 'Y') THEN
85688
85689 -- 4645092 ------------------------------------------------------------------------------
85690 -- To allow MPA report to determine if it should generate report process
85691 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
85692 ------------------------------------------------------------------------------------------
85693
85694 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
85695 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
85696 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
85697 -- call ADRs
85698 -- Bug 4922099
85699 --
85700 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
85701 (NVL(l_actual_upg_option, 'N') = 'O') OR
85702 (NVL(l_enc_upg_option, 'N') = 'O')
85703 )
85704 THEN
85705 NULL;
85706 --
85707 --
85708
85709 l_ccid := AcctDerRule_4(
85710 p_application_id => p_application_id
85711 , p_ae_header_id => l_ae_header_id
85712 , p_source_4 => p_source_4
85713 , x_transaction_coa_id => l_adr_transaction_coa_id
85714 , x_accounting_coa_id => l_adr_accounting_coa_id
85715 , x_value_type_code => l_adr_value_type_code
85716 , p_side => 'NA'
85717 );
85718
85719 xla_ae_lines_pkg.set_ccid(
85720 p_code_combination_id => l_ccid
85721 , p_value_type_code => l_adr_value_type_code
85722 , p_transaction_coa_id => l_adr_transaction_coa_id
85723 , p_accounting_coa_id => l_adr_accounting_coa_id
85724 , p_adr_code => 'CST_DEFAULT'
85725 , p_adr_type_code => 'S'
85726 , p_component_type => l_component_type
85727 , p_component_code => l_component_code
85728 , p_component_type_code => l_component_type_code
85729 , p_component_appl_id => l_component_appl_id
85730 , p_amb_context_code => l_amb_context_code
85731 , p_side => 'NA'
85732 );
85733
85734
85735 --
85736 --
85737 END IF;
85738
85739 --
85740 -- Update the line information that should be overwritten
85741 --
85742 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
85743 p_header_num => 1);
85744 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
85745
85746 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
85747
85748 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
85749 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
85750 END IF;
85751
85752 --
85753 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
85754 --
85755 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
85756 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
85757 ELSE
85758 ---------------------------------------------------------------------------------------------------
85759 -- 4262811a Switch Sign
85760 ---------------------------------------------------------------------------------------------------
85761 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
85762 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
85763 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
85764 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
85765 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
85766 -- 5132302
85767 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
85768 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
85769
85770 END IF;
85771
85772 -- 4955764
85773 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
85774 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
85775
85776
85777 XLA_AE_LINES_PKG.ValidateCurrentLine;
85778 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
85779
85780 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
85781 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
85782 ,p_balance_type_code => l_balance_type_code);
85783
85784 END IF;
85785
85786 -----------------------------------------------------------------------------------------
85787 -- 4262811 Multiperiod Accounting
85788 -----------------------------------------------------------------------------------------
85789 -- No MPA option is assigned.
85790
85791
85792 END IF;
85793 END IF;
85794 --
85795
85796 --
85797 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
85798 trace
85799 (p_msg => 'END of AcctLineType_156'
85800 ,p_level => C_LEVEL_PROCEDURE
85801 ,p_module => l_log_module);
85802 END IF;
85803 --
85804 EXCEPTION
85805 WHEN xla_exceptions_pkg.application_exception THEN
85806 RAISE;
85807 WHEN OTHERS THEN
85808 xla_exceptions_pkg.raise_message
85809 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_156');
85810 END AcctLineType_156;
85811 --
85812
85813 ---------------------------------------
85814 --
85815 -- PRIVATE FUNCTION
85816 -- AcctLineType_157
85817 --
85818 ---------------------------------------
85819 PROCEDURE AcctLineType_157 (
85820 p_application_id IN NUMBER
85821 ,p_event_id IN NUMBER
85822 ,p_calculate_acctd_flag IN VARCHAR2
85823 ,p_calculate_g_l_flag IN VARCHAR2
85824 ,p_actual_flag IN OUT VARCHAR2
85825 ,p_balance_type_code OUT VARCHAR2
85826 ,p_gain_or_loss_ref OUT VARCHAR2
85827
85828 --Cost Management Default Account
85829 , p_source_4 IN NUMBER
85830 --Receiving Accounting Line Type
85831 , p_source_5 IN VARCHAR2
85832 --DISTRIBUTION_IDENTIFIER
85833 , p_source_11 IN NUMBER
85834 --Distribution Type
85835 , p_source_12 IN VARCHAR2
85836 , p_source_12_meaning IN VARCHAR2
85837 --Entered Amount
85838 , p_source_18 IN NUMBER
85839 --Accounted Amount
85840 , p_source_22 IN NUMBER
85841 --Entered Currency Code
85842 , p_source_32 IN VARCHAR2
85843 --Currency Conversion Date
85844 , p_source_33 IN DATE
85845 --Currency Conversion Rate
85846 , p_source_34 IN NUMBER
85847 )
85848 IS
85849
85850 l_component_type VARCHAR2(80);
85851 l_component_code VARCHAR2(30);
85852 l_component_type_code VARCHAR2(1);
85853 l_component_appl_id INTEGER;
85854 l_amb_context_code VARCHAR2(30);
85855 l_entity_code VARCHAR2(30);
85856 l_event_class_code VARCHAR2(30);
85857 l_ae_header_id NUMBER;
85858 l_event_type_code VARCHAR2(30);
85859 l_line_definition_code VARCHAR2(30);
85860 l_line_definition_owner_code VARCHAR2(1);
85861 --
85862 -- adr variables
85863 l_segment VARCHAR2(30);
85864 l_ccid NUMBER;
85865 l_adr_transaction_coa_id NUMBER;
85866 l_adr_accounting_coa_id NUMBER;
85867 l_adr_flexfield_segment_code VARCHAR2(30);
85868 l_adr_flex_value_set_id NUMBER;
85869 l_adr_value_type_code VARCHAR2(30);
85870 l_adr_value_combination_id NUMBER;
85871 l_adr_value_segment_code VARCHAR2(30);
85872
85873 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
85874 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
85875 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
85876 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
85877
85878 -- 4262811 Variables ------------------------------------------------------------------------------------------
85879 l_entered_amt_idx NUMBER;
85880 l_accted_amt_idx NUMBER;
85881 l_acc_rev_flag VARCHAR2(1);
85882 l_accrual_line_num NUMBER;
85883 l_tmp_amt NUMBER;
85884 l_acc_rev_natural_side_code VARCHAR2(1);
85885
85886 l_num_entries NUMBER;
85887 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
85888 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
85889 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
85890 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
85891 l_recog_line_1 NUMBER;
85892 l_recog_line_2 NUMBER;
85893
85894 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
85895 l_bflow_applied_to_amt NUMBER; -- 5132302
85896 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
85897
85898 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
85899
85900 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
85901 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
85902
85903 ---------------------------------------------------------------------------------------------------------------
85904
85905
85906 --
85907 -- bulk performance
85908 --
85909 l_balance_type_code VARCHAR2(1);
85910 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
85911 l_log_module VARCHAR2(240);
85912
85913 --
85914 -- Upgrade strategy
85915 --
85916 l_actual_upg_option VARCHAR2(1);
85917 l_enc_upg_option VARCHAR2(1);
85918
85919 --
85920 BEGIN
85921 --
85922 IF g_log_enabled THEN
85923 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_157';
85924 END IF;
85925 --
85926 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
85927
85928 trace
85929 (p_msg => 'BEGIN of AcctLineType_157'
85930 ,p_level => C_LEVEL_PROCEDURE
85931 ,p_module => l_log_module);
85932
85933 END IF;
85934 --
85935 l_component_type := 'AMB_JLT';
85936 l_component_code := 'LANDED_COST_ABSORPTION';
85937 l_component_type_code := 'S';
85938 l_component_appl_id := 707;
85939 l_amb_context_code := 'DEFAULT';
85940 l_entity_code := 'RCV_ACCOUNTING_EVENTS';
85941 l_event_class_code := 'LDD_COST_ADJ_DEL';
85942 l_event_type_code := 'LDD_COST_ADJ_DEL_ALL';
85943 l_line_definition_owner_code := 'S';
85944 l_line_definition_code := 'LDD_COST_ADJ_DEL';
85945 --
85946 l_balance_type_code := 'A';
85947 l_segment := NULL;
85948 l_ccid := NULL;
85949 l_adr_transaction_coa_id := NULL;
85950 l_adr_accounting_coa_id := NULL;
85951 l_adr_flexfield_segment_code := NULL;
85952 l_adr_flex_value_set_id := NULL;
85953 l_adr_value_type_code := NULL;
85954 l_adr_value_combination_id := NULL;
85955 l_adr_value_segment_code := NULL;
85956
85957 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
85958 l_bflow_class_code := ''; -- 4219869 Business Flow
85959 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
85960 l_budgetary_control_flag := 'N';
85961
85962 l_bflow_applied_to_amt_idx := NULL; -- 5132302
85963 l_bflow_applied_to_amt := NULL; -- 5132302
85964 l_entered_amt_idx := NULL; -- 4262811
85965 l_accted_amt_idx := NULL; -- 4262811
85966 l_acc_rev_flag := NULL; -- 4262811
85967 l_accrual_line_num := NULL; -- 4262811
85968 l_tmp_amt := NULL; -- 4262811
85969 --
85970
85971 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
85972 l_balance_type_code <> 'B' THEN
85973 IF NVL(p_source_5,'
85974 ') = 'Landed Cost Absorption'
85975 THEN
85976
85977 --
85978 XLA_AE_LINES_PKG.SetNewLine;
85979
85980 p_balance_type_code := l_balance_type_code;
85981 -- set the flag so later we will know whether the gain loss line needs to be created
85982
85983 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
85984 p_actual_flag :='A';
85985 END IF;
85986
85987 --
85988 -- bulk performance
85989 --
85990 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
85991 p_header_num => 0); -- 4262811
85992 --
85993 -- set accounting line options
85994 --
85995 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
85996 p_natural_side_code => 'D'
85997 , p_gain_or_loss_flag => 'N'
85998 , p_gl_transfer_mode_code => 'S'
85999 , p_acct_entry_type_code => 'A'
86000 , p_switch_side_flag => 'Y'
86001 , p_merge_duplicate_code => 'N'
86002 );
86003 --
86004 l_acc_rev_natural_side_code := 'C'; -- 4262811
86005 --
86006 --
86007 -- set accounting line type info
86008 --
86009 xla_ae_lines_pkg.SetAcctLineType
86010 (p_component_type => l_component_type
86011 ,p_event_type_code => l_event_type_code
86012 ,p_line_definition_owner_code => l_line_definition_owner_code
86013 ,p_line_definition_code => l_line_definition_code
86014 ,p_accounting_line_code => l_component_code
86015 ,p_accounting_line_type_code => l_component_type_code
86016 ,p_accounting_line_appl_id => l_component_appl_id
86017 ,p_amb_context_code => l_amb_context_code
86018 ,p_entity_code => l_entity_code
86019 ,p_event_class_code => l_event_class_code);
86020 --
86021 -- set accounting class
86022 --
86023 xla_ae_lines_pkg.SetAcctClass(
86024 p_accounting_class_code => 'LANDED_COST_ABSORPTION'
86025 , p_ae_header_id => l_ae_header_id
86026 );
86027
86028 --
86029 -- set rounding class
86030 --
86031 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
86032 'LANDED_COST_ABSORPTION';
86033
86034 --
86035 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
86036 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
86037 --
86038 -- bulk performance
86039 --
86040 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
86041
86042 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
86043 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
86044
86045 -- 4955764
86046 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
86047 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
86048
86049 -- 4458381 Public Sector Enh
86050
86051 --
86052 -- set accounting attributes for the line type
86053 --
86054 l_entered_amt_idx := 3;
86055 l_accted_amt_idx := 7;
86056 l_bflow_applied_to_amt_idx := NULL; -- 5132302
86057 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
86058 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
86059 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
86060 l_rec_acct_attrs.array_char_value(2) := p_source_12;
86061 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
86062 l_rec_acct_attrs.array_num_value(3) := p_source_18;
86063 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
86064 l_rec_acct_attrs.array_char_value(4) := p_source_32;
86065 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
86066 l_rec_acct_attrs.array_date_value(5) := p_source_33;
86067 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
86068 l_rec_acct_attrs.array_num_value(6) := p_source_34;
86069 l_rec_acct_attrs.array_acct_attr_code(7) := 'LEDGER_AMOUNT';
86070 l_rec_acct_attrs.array_num_value(7) := p_source_22;
86071
86072 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
86073 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
86074
86075 ---------------------------------------------------------------------------------------------------------------
86076 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
86077 ---------------------------------------------------------------------------------------------------------------
86078 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
86079
86080 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
86081 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
86082
86083 IF xla_accounting_cache_pkg.GetValueChar
86084 (p_source_code => 'LEDGER_CATEGORY_CODE'
86085 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
86086 AND l_bflow_method_code = 'PRIOR_ENTRY'
86087 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
86088 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
86089 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
86090 )
86091 THEN
86092 xla_ae_lines_pkg.BflowUpgEntry
86093 (p_business_method_code => l_bflow_method_code
86094 ,p_business_class_code => l_bflow_class_code
86095 ,p_balance_type => l_balance_type_code);
86096 ELSE
86097 NULL;
86098 -- No business flow processing for business flow method of NONE.
86099 END IF;
86100
86101 --
86102 -- call analytical criteria
86103 --
86104
86105 --
86106 -- call description
86107 --
86108 -- No description or it is inherited.
86109 --
86110 -- call ADRs
86111 -- Bug 4922099
86112 --
86113 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
86114 (NVL(l_actual_upg_option, 'N') = 'O') OR
86115 (NVL(l_enc_upg_option, 'N') = 'O')
86116 )
86117 THEN
86118 NULL;
86119 --
86120 --
86121
86122 l_ccid := AcctDerRule_4(
86123 p_application_id => p_application_id
86124 , p_ae_header_id => l_ae_header_id
86125 , p_source_4 => p_source_4
86126 , x_transaction_coa_id => l_adr_transaction_coa_id
86127 , x_accounting_coa_id => l_adr_accounting_coa_id
86128 , x_value_type_code => l_adr_value_type_code
86129 , p_side => 'NA'
86130 );
86131
86132 xla_ae_lines_pkg.set_ccid(
86133 p_code_combination_id => l_ccid
86134 , p_value_type_code => l_adr_value_type_code
86135 , p_transaction_coa_id => l_adr_transaction_coa_id
86136 , p_accounting_coa_id => l_adr_accounting_coa_id
86137 , p_adr_code => 'CST_DEFAULT'
86138 , p_adr_type_code => 'S'
86139 , p_component_type => l_component_type
86140 , p_component_code => l_component_code
86141 , p_component_type_code => l_component_type_code
86142 , p_component_appl_id => l_component_appl_id
86143 , p_amb_context_code => l_amb_context_code
86144 , p_side => 'NA'
86145 );
86146
86147
86148 --
86149 --
86150 END IF;
86151 --
86152 -- Bug 4922099
86153 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
86154 (NVL(l_enc_upg_option, 'N') = 'O')
86155 ) AND
86156 (l_bflow_method_code = 'PRIOR_ENTRY')
86157 )
86158 THEN
86159 IF
86160 --
86161 1 = 2
86162 --
86163 THEN
86164 xla_accounting_err_pkg.build_message
86165 (p_appli_s_name => 'XLA'
86166 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
86167 ,p_token_1 => 'LINE_NUMBER'
86168 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
86169 ,p_token_2 => 'LINE_TYPE_NAME'
86170 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
86171 l_component_type
86172 ,l_component_code
86173 ,l_component_type_code
86174 ,l_component_appl_id
86175 ,l_amb_context_code
86176 ,l_entity_code
86177 ,l_event_class_code
86178 )
86179 ,p_token_3 => 'OWNER'
86180 ,p_value_3 => xla_lookups_pkg.get_meaning(
86181 p_lookup_type => 'XLA_OWNER_TYPE'
86182 ,p_lookup_code => l_component_type_code
86183 )
86184 ,p_token_4 => 'PRODUCT_NAME'
86185 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
86186 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
86187 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
86188 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
86189 ,p_ae_header_id => NULL
86190 );
86191
86192 IF (C_LEVEL_ERROR>= g_log_level) THEN
86193 trace
86194 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
86195 ,p_level => C_LEVEL_ERROR
86196 ,p_module => l_log_module);
86197 END IF;
86198 END IF;
86199 END IF;
86200 --
86201 --
86202 ------------------------------------------------------------------------------------------------
86203 -- 4219869 Business Flow
86204 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
86205 -- Prior Entry. Currently, the following code is always generated.
86206 ------------------------------------------------------------------------------------------------
86207 XLA_AE_LINES_PKG.ValidateCurrentLine;
86208
86209 ------------------------------------------------------------------------------------
86210 -- 4219869 Business Flow
86211 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
86212 ------------------------------------------------------------------------------------
86213 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
86214
86215 ----------------------------------------------------------------------------------
86216 -- 4219869 Business Flow
86217 -- Update journal entry status -- Need to generate this within IF <condition>
86218 ----------------------------------------------------------------------------------
86219 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
86220 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
86221 ,p_balance_type_code => l_balance_type_code
86222 );
86223
86224 -------------------------------------------------------------------------------------------
86225 -- 4262811 - Generate the Accrual Reversal lines
86226 -------------------------------------------------------------------------------------------
86227 BEGIN
86228 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
86229 (g_array_event(p_event_id).array_value_num('header_index'));
86230 IF l_acc_rev_flag IS NULL THEN
86231 l_acc_rev_flag := 'N';
86232 END IF;
86233 EXCEPTION
86234 WHEN OTHERS THEN
86235 l_acc_rev_flag := 'N';
86236 END;
86237 --
86238 IF (l_acc_rev_flag = 'Y') THEN
86239
86240 -- 4645092 ------------------------------------------------------------------------------
86241 -- To allow MPA report to determine if it should generate report process
86242 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
86243 ------------------------------------------------------------------------------------------
86244
86245 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
86246 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
86247 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
86248 -- call ADRs
86249 -- Bug 4922099
86250 --
86251 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
86252 (NVL(l_actual_upg_option, 'N') = 'O') OR
86253 (NVL(l_enc_upg_option, 'N') = 'O')
86254 )
86255 THEN
86256 NULL;
86257 --
86258 --
86259
86260 l_ccid := AcctDerRule_4(
86261 p_application_id => p_application_id
86262 , p_ae_header_id => l_ae_header_id
86263 , p_source_4 => p_source_4
86264 , x_transaction_coa_id => l_adr_transaction_coa_id
86265 , x_accounting_coa_id => l_adr_accounting_coa_id
86266 , x_value_type_code => l_adr_value_type_code
86267 , p_side => 'NA'
86268 );
86269
86270 xla_ae_lines_pkg.set_ccid(
86271 p_code_combination_id => l_ccid
86272 , p_value_type_code => l_adr_value_type_code
86273 , p_transaction_coa_id => l_adr_transaction_coa_id
86274 , p_accounting_coa_id => l_adr_accounting_coa_id
86275 , p_adr_code => 'CST_DEFAULT'
86276 , p_adr_type_code => 'S'
86277 , p_component_type => l_component_type
86278 , p_component_code => l_component_code
86279 , p_component_type_code => l_component_type_code
86280 , p_component_appl_id => l_component_appl_id
86281 , p_amb_context_code => l_amb_context_code
86282 , p_side => 'NA'
86283 );
86284
86285
86286 --
86287 --
86288 END IF;
86289
86290 --
86291 -- Update the line information that should be overwritten
86292 --
86293 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
86294 p_header_num => 1);
86295 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
86296
86297 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
86298
86299 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
86300 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
86301 END IF;
86302
86303 --
86304 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
86305 --
86306 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
86307 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
86308 ELSE
86309 ---------------------------------------------------------------------------------------------------
86310 -- 4262811a Switch Sign
86311 ---------------------------------------------------------------------------------------------------
86312 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
86313 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
86314 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
86315 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
86316 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
86317 -- 5132302
86318 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
86319 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
86320
86321 END IF;
86322
86323 -- 4955764
86324 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
86325 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
86326
86327
86328 XLA_AE_LINES_PKG.ValidateCurrentLine;
86329 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
86330
86331 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
86332 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
86333 ,p_balance_type_code => l_balance_type_code);
86334
86335 END IF;
86336
86337 -----------------------------------------------------------------------------------------
86338 -- 4262811 Multiperiod Accounting
86339 -----------------------------------------------------------------------------------------
86340 -- No MPA option is assigned.
86341
86342
86343 END IF;
86344 END IF;
86345 --
86346
86347 --
86348 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
86349 trace
86350 (p_msg => 'END of AcctLineType_157'
86351 ,p_level => C_LEVEL_PROCEDURE
86352 ,p_module => l_log_module);
86353 END IF;
86354 --
86355 EXCEPTION
86356 WHEN xla_exceptions_pkg.application_exception THEN
86357 RAISE;
86358 WHEN OTHERS THEN
86359 xla_exceptions_pkg.raise_message
86360 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_157');
86361 END AcctLineType_157;
86362 --
86363
86364 ---------------------------------------
86365 --
86366 -- PRIVATE FUNCTION
86367 -- AcctLineType_158
86368 --
86369 ---------------------------------------
86370 PROCEDURE AcctLineType_158 (
86371 p_application_id IN NUMBER
86372 ,p_event_id IN NUMBER
86373 ,p_calculate_acctd_flag IN VARCHAR2
86374 ,p_calculate_g_l_flag IN VARCHAR2
86375 ,p_actual_flag IN OUT VARCHAR2
86376 ,p_balance_type_code OUT VARCHAR2
86377 ,p_gain_or_loss_ref OUT VARCHAR2
86378
86379 --Cost Management Default Account
86380 , p_source_4 IN NUMBER
86381 --DISTRIBUTION_IDENTIFIER
86382 , p_source_11 IN NUMBER
86383 --Distribution Type
86384 , p_source_12 IN VARCHAR2
86385 , p_source_12_meaning IN VARCHAR2
86386 --Entered Currency Code
86387 , p_source_15 IN VARCHAR2
86388 --Entered Amount
86389 , p_source_18 IN NUMBER
86390 --Currency Conversion Date
86391 , p_source_19 IN DATE
86392 --Currency Conversion Rate
86393 , p_source_20 IN NUMBER
86394 --Currency Conversion Type
86395 , p_source_21 IN VARCHAR2
86396 --Accounted Amount
86397 , p_source_22 IN NUMBER
86398 --Accounting Line Type
86399 , p_source_24 IN NUMBER
86400 )
86401 IS
86402
86403 l_component_type VARCHAR2(80);
86404 l_component_code VARCHAR2(30);
86405 l_component_type_code VARCHAR2(1);
86406 l_component_appl_id INTEGER;
86407 l_amb_context_code VARCHAR2(30);
86408 l_entity_code VARCHAR2(30);
86409 l_event_class_code VARCHAR2(30);
86410 l_ae_header_id NUMBER;
86411 l_event_type_code VARCHAR2(30);
86412 l_line_definition_code VARCHAR2(30);
86413 l_line_definition_owner_code VARCHAR2(1);
86414 --
86415 -- adr variables
86416 l_segment VARCHAR2(30);
86417 l_ccid NUMBER;
86418 l_adr_transaction_coa_id NUMBER;
86419 l_adr_accounting_coa_id NUMBER;
86420 l_adr_flexfield_segment_code VARCHAR2(30);
86421 l_adr_flex_value_set_id NUMBER;
86422 l_adr_value_type_code VARCHAR2(30);
86423 l_adr_value_combination_id NUMBER;
86424 l_adr_value_segment_code VARCHAR2(30);
86425
86426 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
86427 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
86428 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
86429 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
86430
86431 -- 4262811 Variables ------------------------------------------------------------------------------------------
86432 l_entered_amt_idx NUMBER;
86433 l_accted_amt_idx NUMBER;
86434 l_acc_rev_flag VARCHAR2(1);
86435 l_accrual_line_num NUMBER;
86436 l_tmp_amt NUMBER;
86437 l_acc_rev_natural_side_code VARCHAR2(1);
86438
86439 l_num_entries NUMBER;
86440 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
86441 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
86442 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
86443 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
86444 l_recog_line_1 NUMBER;
86445 l_recog_line_2 NUMBER;
86446
86447 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
86448 l_bflow_applied_to_amt NUMBER; -- 5132302
86449 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
86450
86451 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
86452
86453 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
86454 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
86455
86456 ---------------------------------------------------------------------------------------------------------------
86457
86458
86459 --
86460 -- bulk performance
86461 --
86462 l_balance_type_code VARCHAR2(1);
86463 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
86464 l_log_module VARCHAR2(240);
86465
86466 --
86467 -- Upgrade strategy
86468 --
86469 l_actual_upg_option VARCHAR2(1);
86470 l_enc_upg_option VARCHAR2(1);
86471
86472 --
86473 BEGIN
86474 --
86475 IF g_log_enabled THEN
86476 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_158';
86477 END IF;
86478 --
86479 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
86480
86481 trace
86482 (p_msg => 'BEGIN of AcctLineType_158'
86483 ,p_level => C_LEVEL_PROCEDURE
86484 ,p_module => l_log_module);
86485
86486 END IF;
86487 --
86488 l_component_type := 'AMB_JLT';
86489 l_component_code := 'MATERIAL_OVERHEAD_ABSORPTION';
86490 l_component_type_code := 'S';
86491 l_component_appl_id := 707;
86492 l_amb_context_code := 'DEFAULT';
86493 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
86494 l_event_class_code := 'CON_INV_OWNR_TXFR';
86495 l_event_type_code := 'CON_INV_OWNR_TXFR_ALL';
86496 l_line_definition_owner_code := 'S';
86497 l_line_definition_code := 'CON_INV_OWNR_TXFR';
86498 --
86499 l_balance_type_code := 'A';
86500 l_segment := NULL;
86501 l_ccid := NULL;
86502 l_adr_transaction_coa_id := NULL;
86503 l_adr_accounting_coa_id := NULL;
86504 l_adr_flexfield_segment_code := NULL;
86505 l_adr_flex_value_set_id := NULL;
86506 l_adr_value_type_code := NULL;
86507 l_adr_value_combination_id := NULL;
86508 l_adr_value_segment_code := NULL;
86509
86510 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
86511 l_bflow_class_code := ''; -- 4219869 Business Flow
86512 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
86513 l_budgetary_control_flag := 'N';
86514
86515 l_bflow_applied_to_amt_idx := NULL; -- 5132302
86516 l_bflow_applied_to_amt := NULL; -- 5132302
86517 l_entered_amt_idx := NULL; -- 4262811
86518 l_accted_amt_idx := NULL; -- 4262811
86519 l_acc_rev_flag := NULL; -- 4262811
86520 l_accrual_line_num := NULL; -- 4262811
86521 l_tmp_amt := NULL; -- 4262811
86522 --
86523
86524 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
86525 l_balance_type_code <> 'B' THEN
86526 IF NVL(p_source_24,9E125) = 3
86527 THEN
86528
86529 --
86530 XLA_AE_LINES_PKG.SetNewLine;
86531
86532 p_balance_type_code := l_balance_type_code;
86533 -- set the flag so later we will know whether the gain loss line needs to be created
86534
86535 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
86536 p_actual_flag :='A';
86537 END IF;
86538
86539 --
86540 -- bulk performance
86541 --
86542 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
86543 p_header_num => 0); -- 4262811
86544 --
86545 -- set accounting line options
86546 --
86547 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
86548 p_natural_side_code => 'D'
86549 , p_gain_or_loss_flag => 'N'
86550 , p_gl_transfer_mode_code => 'S'
86551 , p_acct_entry_type_code => 'A'
86552 , p_switch_side_flag => 'Y'
86553 , p_merge_duplicate_code => 'N'
86554 );
86555 --
86556 l_acc_rev_natural_side_code := 'C'; -- 4262811
86557 --
86558 --
86559 -- set accounting line type info
86560 --
86561 xla_ae_lines_pkg.SetAcctLineType
86562 (p_component_type => l_component_type
86563 ,p_event_type_code => l_event_type_code
86564 ,p_line_definition_owner_code => l_line_definition_owner_code
86565 ,p_line_definition_code => l_line_definition_code
86566 ,p_accounting_line_code => l_component_code
86567 ,p_accounting_line_type_code => l_component_type_code
86568 ,p_accounting_line_appl_id => l_component_appl_id
86569 ,p_amb_context_code => l_amb_context_code
86570 ,p_entity_code => l_entity_code
86571 ,p_event_class_code => l_event_class_code);
86572 --
86573 -- set accounting class
86574 --
86575 xla_ae_lines_pkg.SetAcctClass(
86576 p_accounting_class_code => 'MATERIAL_OVERHEAD_ABSORPTION'
86577 , p_ae_header_id => l_ae_header_id
86578 );
86579
86580 --
86581 -- set rounding class
86582 --
86583 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
86584 'MATERIAL_OVERHEAD_ABSORPTION';
86585
86586 --
86587 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
86588 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
86589 --
86590 -- bulk performance
86591 --
86592 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
86593
86594 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
86595 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
86596
86597 -- 4955764
86598 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
86599 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
86600
86601 -- 4458381 Public Sector Enh
86602
86603 --
86604 -- set accounting attributes for the line type
86605 --
86606 l_entered_amt_idx := 3;
86607 l_accted_amt_idx := 8;
86608 l_bflow_applied_to_amt_idx := NULL; -- 5132302
86609 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
86610 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
86611 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
86612 l_rec_acct_attrs.array_char_value(2) := p_source_12;
86613 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
86614 l_rec_acct_attrs.array_num_value(3) := p_source_18;
86615 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
86616 l_rec_acct_attrs.array_char_value(4) := p_source_15;
86617 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
86618 l_rec_acct_attrs.array_date_value(5) := p_source_19;
86619 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
86620 l_rec_acct_attrs.array_num_value(6) := p_source_20;
86621 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
86622 l_rec_acct_attrs.array_char_value(7) := p_source_21;
86623 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
86624 l_rec_acct_attrs.array_num_value(8) := p_source_22;
86625
86626 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
86627 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
86628
86629 ---------------------------------------------------------------------------------------------------------------
86630 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
86631 ---------------------------------------------------------------------------------------------------------------
86632 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
86633
86634 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
86635 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
86636
86637 IF xla_accounting_cache_pkg.GetValueChar
86638 (p_source_code => 'LEDGER_CATEGORY_CODE'
86639 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
86640 AND l_bflow_method_code = 'PRIOR_ENTRY'
86641 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
86642 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
86643 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
86644 )
86645 THEN
86646 xla_ae_lines_pkg.BflowUpgEntry
86647 (p_business_method_code => l_bflow_method_code
86648 ,p_business_class_code => l_bflow_class_code
86649 ,p_balance_type => l_balance_type_code);
86650 ELSE
86651 NULL;
86652 -- No business flow processing for business flow method of NONE.
86653 END IF;
86654
86655 --
86656 -- call analytical criteria
86657 --
86658
86659 --
86660 -- call description
86661 --
86662 -- No description or it is inherited.
86663 --
86664 -- call ADRs
86665 -- Bug 4922099
86666 --
86667 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
86668 (NVL(l_actual_upg_option, 'N') = 'O') OR
86669 (NVL(l_enc_upg_option, 'N') = 'O')
86670 )
86671 THEN
86672 NULL;
86673 --
86674 --
86675
86676 l_ccid := AcctDerRule_4(
86677 p_application_id => p_application_id
86678 , p_ae_header_id => l_ae_header_id
86679 , p_source_4 => p_source_4
86680 , x_transaction_coa_id => l_adr_transaction_coa_id
86681 , x_accounting_coa_id => l_adr_accounting_coa_id
86682 , x_value_type_code => l_adr_value_type_code
86683 , p_side => 'NA'
86684 );
86685
86686 xla_ae_lines_pkg.set_ccid(
86687 p_code_combination_id => l_ccid
86688 , p_value_type_code => l_adr_value_type_code
86689 , p_transaction_coa_id => l_adr_transaction_coa_id
86690 , p_accounting_coa_id => l_adr_accounting_coa_id
86691 , p_adr_code => 'CST_DEFAULT'
86692 , p_adr_type_code => 'S'
86693 , p_component_type => l_component_type
86694 , p_component_code => l_component_code
86695 , p_component_type_code => l_component_type_code
86696 , p_component_appl_id => l_component_appl_id
86697 , p_amb_context_code => l_amb_context_code
86698 , p_side => 'NA'
86699 );
86700
86701
86702 --
86703 --
86704 END IF;
86705 --
86706 -- Bug 4922099
86707 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
86708 (NVL(l_enc_upg_option, 'N') = 'O')
86709 ) AND
86710 (l_bflow_method_code = 'PRIOR_ENTRY')
86711 )
86712 THEN
86713 IF
86714 --
86715 1 = 2
86716 --
86717 THEN
86718 xla_accounting_err_pkg.build_message
86719 (p_appli_s_name => 'XLA'
86720 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
86721 ,p_token_1 => 'LINE_NUMBER'
86722 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
86723 ,p_token_2 => 'LINE_TYPE_NAME'
86724 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
86725 l_component_type
86726 ,l_component_code
86727 ,l_component_type_code
86728 ,l_component_appl_id
86729 ,l_amb_context_code
86730 ,l_entity_code
86731 ,l_event_class_code
86732 )
86733 ,p_token_3 => 'OWNER'
86734 ,p_value_3 => xla_lookups_pkg.get_meaning(
86735 p_lookup_type => 'XLA_OWNER_TYPE'
86736 ,p_lookup_code => l_component_type_code
86737 )
86738 ,p_token_4 => 'PRODUCT_NAME'
86739 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
86740 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
86741 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
86742 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
86743 ,p_ae_header_id => NULL
86744 );
86745
86746 IF (C_LEVEL_ERROR>= g_log_level) THEN
86747 trace
86748 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
86749 ,p_level => C_LEVEL_ERROR
86750 ,p_module => l_log_module);
86751 END IF;
86752 END IF;
86753 END IF;
86754 --
86755 --
86756 ------------------------------------------------------------------------------------------------
86757 -- 4219869 Business Flow
86758 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
86759 -- Prior Entry. Currently, the following code is always generated.
86760 ------------------------------------------------------------------------------------------------
86761 XLA_AE_LINES_PKG.ValidateCurrentLine;
86762
86763 ------------------------------------------------------------------------------------
86764 -- 4219869 Business Flow
86765 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
86766 ------------------------------------------------------------------------------------
86767 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
86768
86769 ----------------------------------------------------------------------------------
86770 -- 4219869 Business Flow
86771 -- Update journal entry status -- Need to generate this within IF <condition>
86772 ----------------------------------------------------------------------------------
86773 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
86774 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
86775 ,p_balance_type_code => l_balance_type_code
86776 );
86777
86778 -------------------------------------------------------------------------------------------
86779 -- 4262811 - Generate the Accrual Reversal lines
86780 -------------------------------------------------------------------------------------------
86781 BEGIN
86782 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
86783 (g_array_event(p_event_id).array_value_num('header_index'));
86784 IF l_acc_rev_flag IS NULL THEN
86785 l_acc_rev_flag := 'N';
86786 END IF;
86787 EXCEPTION
86788 WHEN OTHERS THEN
86789 l_acc_rev_flag := 'N';
86790 END;
86791 --
86792 IF (l_acc_rev_flag = 'Y') THEN
86793
86794 -- 4645092 ------------------------------------------------------------------------------
86795 -- To allow MPA report to determine if it should generate report process
86796 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
86797 ------------------------------------------------------------------------------------------
86798
86799 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
86800 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
86801 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
86802 -- call ADRs
86803 -- Bug 4922099
86804 --
86805 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
86806 (NVL(l_actual_upg_option, 'N') = 'O') OR
86807 (NVL(l_enc_upg_option, 'N') = 'O')
86808 )
86809 THEN
86810 NULL;
86811 --
86812 --
86813
86814 l_ccid := AcctDerRule_4(
86815 p_application_id => p_application_id
86816 , p_ae_header_id => l_ae_header_id
86817 , p_source_4 => p_source_4
86818 , x_transaction_coa_id => l_adr_transaction_coa_id
86819 , x_accounting_coa_id => l_adr_accounting_coa_id
86820 , x_value_type_code => l_adr_value_type_code
86821 , p_side => 'NA'
86822 );
86823
86824 xla_ae_lines_pkg.set_ccid(
86825 p_code_combination_id => l_ccid
86826 , p_value_type_code => l_adr_value_type_code
86827 , p_transaction_coa_id => l_adr_transaction_coa_id
86828 , p_accounting_coa_id => l_adr_accounting_coa_id
86829 , p_adr_code => 'CST_DEFAULT'
86830 , p_adr_type_code => 'S'
86831 , p_component_type => l_component_type
86832 , p_component_code => l_component_code
86833 , p_component_type_code => l_component_type_code
86834 , p_component_appl_id => l_component_appl_id
86835 , p_amb_context_code => l_amb_context_code
86836 , p_side => 'NA'
86837 );
86838
86839
86840 --
86841 --
86842 END IF;
86843
86844 --
86845 -- Update the line information that should be overwritten
86846 --
86847 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
86848 p_header_num => 1);
86849 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
86850
86851 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
86852
86853 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
86854 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
86855 END IF;
86856
86857 --
86858 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
86859 --
86860 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
86861 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
86862 ELSE
86863 ---------------------------------------------------------------------------------------------------
86864 -- 4262811a Switch Sign
86865 ---------------------------------------------------------------------------------------------------
86866 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
86867 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
86868 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
86869 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
86870 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
86871 -- 5132302
86872 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
86873 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
86874
86875 END IF;
86876
86877 -- 4955764
86878 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
86879 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
86880
86881
86882 XLA_AE_LINES_PKG.ValidateCurrentLine;
86883 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
86884
86885 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
86886 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
86887 ,p_balance_type_code => l_balance_type_code);
86888
86889 END IF;
86890
86891 -----------------------------------------------------------------------------------------
86892 -- 4262811 Multiperiod Accounting
86893 -----------------------------------------------------------------------------------------
86894 -- No MPA option is assigned.
86895
86896
86897 END IF;
86898 END IF;
86899 --
86900
86901 --
86902 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
86903 trace
86904 (p_msg => 'END of AcctLineType_158'
86905 ,p_level => C_LEVEL_PROCEDURE
86906 ,p_module => l_log_module);
86907 END IF;
86908 --
86909 EXCEPTION
86910 WHEN xla_exceptions_pkg.application_exception THEN
86911 RAISE;
86912 WHEN OTHERS THEN
86913 xla_exceptions_pkg.raise_message
86914 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_158');
86915 END AcctLineType_158;
86916 --
86917
86918 ---------------------------------------
86919 --
86920 -- PRIVATE FUNCTION
86921 -- AcctLineType_159
86922 --
86923 ---------------------------------------
86924 PROCEDURE AcctLineType_159 (
86925 p_application_id IN NUMBER
86926 ,p_event_id IN NUMBER
86927 ,p_calculate_acctd_flag IN VARCHAR2
86928 ,p_calculate_g_l_flag IN VARCHAR2
86929 ,p_actual_flag IN OUT VARCHAR2
86930 ,p_balance_type_code OUT VARCHAR2
86931 ,p_gain_or_loss_ref OUT VARCHAR2
86932
86933 --Cost Management Default Account
86934 , p_source_4 IN NUMBER
86935 --DISTRIBUTION_IDENTIFIER
86936 , p_source_11 IN NUMBER
86937 --Distribution Type
86938 , p_source_12 IN VARCHAR2
86939 , p_source_12_meaning IN VARCHAR2
86940 --Entered Currency Code
86941 , p_source_15 IN VARCHAR2
86942 --Entered Amount
86943 , p_source_18 IN NUMBER
86944 --Currency Conversion Date
86945 , p_source_19 IN DATE
86946 --Currency Conversion Rate
86947 , p_source_20 IN NUMBER
86948 --Currency Conversion Type
86949 , p_source_21 IN VARCHAR2
86950 --Accounted Amount
86951 , p_source_22 IN NUMBER
86952 --Accounting Line Type
86953 , p_source_24 IN NUMBER
86954 )
86955 IS
86956
86957 l_component_type VARCHAR2(80);
86958 l_component_code VARCHAR2(30);
86959 l_component_type_code VARCHAR2(1);
86960 l_component_appl_id INTEGER;
86961 l_amb_context_code VARCHAR2(30);
86962 l_entity_code VARCHAR2(30);
86963 l_event_class_code VARCHAR2(30);
86964 l_ae_header_id NUMBER;
86965 l_event_type_code VARCHAR2(30);
86966 l_line_definition_code VARCHAR2(30);
86967 l_line_definition_owner_code VARCHAR2(1);
86968 --
86969 -- adr variables
86970 l_segment VARCHAR2(30);
86971 l_ccid NUMBER;
86972 l_adr_transaction_coa_id NUMBER;
86973 l_adr_accounting_coa_id NUMBER;
86974 l_adr_flexfield_segment_code VARCHAR2(30);
86975 l_adr_flex_value_set_id NUMBER;
86976 l_adr_value_type_code VARCHAR2(30);
86977 l_adr_value_combination_id NUMBER;
86978 l_adr_value_segment_code VARCHAR2(30);
86979
86980 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
86981 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
86982 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
86983 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
86984
86985 -- 4262811 Variables ------------------------------------------------------------------------------------------
86986 l_entered_amt_idx NUMBER;
86987 l_accted_amt_idx NUMBER;
86988 l_acc_rev_flag VARCHAR2(1);
86989 l_accrual_line_num NUMBER;
86990 l_tmp_amt NUMBER;
86991 l_acc_rev_natural_side_code VARCHAR2(1);
86992
86993 l_num_entries NUMBER;
86994 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
86995 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
86996 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
86997 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
86998 l_recog_line_1 NUMBER;
86999 l_recog_line_2 NUMBER;
87000
87001 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
87002 l_bflow_applied_to_amt NUMBER; -- 5132302
87003 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
87004
87005 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
87006
87007 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
87008 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
87009
87010 ---------------------------------------------------------------------------------------------------------------
87011
87012
87013 --
87014 -- bulk performance
87015 --
87016 l_balance_type_code VARCHAR2(1);
87017 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
87018 l_log_module VARCHAR2(240);
87019
87020 --
87021 -- Upgrade strategy
87022 --
87023 l_actual_upg_option VARCHAR2(1);
87024 l_enc_upg_option VARCHAR2(1);
87025
87026 --
87027 BEGIN
87028 --
87029 IF g_log_enabled THEN
87030 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_159';
87031 END IF;
87032 --
87033 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
87034
87035 trace
87036 (p_msg => 'BEGIN of AcctLineType_159'
87037 ,p_level => C_LEVEL_PROCEDURE
87038 ,p_module => l_log_module);
87039
87040 END IF;
87041 --
87042 l_component_type := 'AMB_JLT';
87043 l_component_code := 'MATERIAL_OVERHEAD_ABSORPTION';
87044 l_component_type_code := 'S';
87045 l_component_appl_id := 707;
87046 l_amb_context_code := 'DEFAULT';
87047 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
87048 l_event_class_code := 'USER_DEFINE';
87049 l_event_type_code := 'UDIR_INTERORG_SHIP';
87050 l_line_definition_owner_code := 'S';
87051 l_line_definition_code := 'USER_DIR_INTERORG_SHIP';
87052 --
87053 l_balance_type_code := 'A';
87054 l_segment := NULL;
87055 l_ccid := NULL;
87056 l_adr_transaction_coa_id := NULL;
87057 l_adr_accounting_coa_id := NULL;
87058 l_adr_flexfield_segment_code := NULL;
87059 l_adr_flex_value_set_id := NULL;
87060 l_adr_value_type_code := NULL;
87061 l_adr_value_combination_id := NULL;
87062 l_adr_value_segment_code := NULL;
87063
87064 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
87065 l_bflow_class_code := ''; -- 4219869 Business Flow
87066 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
87067 l_budgetary_control_flag := 'N';
87068
87069 l_bflow_applied_to_amt_idx := NULL; -- 5132302
87070 l_bflow_applied_to_amt := NULL; -- 5132302
87071 l_entered_amt_idx := NULL; -- 4262811
87072 l_accted_amt_idx := NULL; -- 4262811
87073 l_acc_rev_flag := NULL; -- 4262811
87074 l_accrual_line_num := NULL; -- 4262811
87075 l_tmp_amt := NULL; -- 4262811
87076 --
87077
87078 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
87079 l_balance_type_code <> 'B' THEN
87080 IF NVL(p_source_24,9E125) = 3
87081 THEN
87082
87083 --
87084 XLA_AE_LINES_PKG.SetNewLine;
87085
87086 p_balance_type_code := l_balance_type_code;
87087 -- set the flag so later we will know whether the gain loss line needs to be created
87088
87089 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
87090 p_actual_flag :='A';
87091 END IF;
87092
87093 --
87094 -- bulk performance
87095 --
87096 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
87097 p_header_num => 0); -- 4262811
87098 --
87099 -- set accounting line options
87100 --
87101 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
87102 p_natural_side_code => 'D'
87103 , p_gain_or_loss_flag => 'N'
87104 , p_gl_transfer_mode_code => 'S'
87105 , p_acct_entry_type_code => 'A'
87106 , p_switch_side_flag => 'Y'
87107 , p_merge_duplicate_code => 'N'
87108 );
87109 --
87110 l_acc_rev_natural_side_code := 'C'; -- 4262811
87111 --
87112 --
87113 -- set accounting line type info
87114 --
87115 xla_ae_lines_pkg.SetAcctLineType
87116 (p_component_type => l_component_type
87117 ,p_event_type_code => l_event_type_code
87118 ,p_line_definition_owner_code => l_line_definition_owner_code
87119 ,p_line_definition_code => l_line_definition_code
87120 ,p_accounting_line_code => l_component_code
87121 ,p_accounting_line_type_code => l_component_type_code
87122 ,p_accounting_line_appl_id => l_component_appl_id
87123 ,p_amb_context_code => l_amb_context_code
87124 ,p_entity_code => l_entity_code
87125 ,p_event_class_code => l_event_class_code);
87126 --
87127 -- set accounting class
87128 --
87129 xla_ae_lines_pkg.SetAcctClass(
87130 p_accounting_class_code => 'MATERIAL_OVERHEAD_ABSORPTION'
87131 , p_ae_header_id => l_ae_header_id
87132 );
87133
87134 --
87135 -- set rounding class
87136 --
87137 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
87138 'MATERIAL_OVERHEAD_ABSORPTION';
87139
87140 --
87141 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
87142 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
87143 --
87144 -- bulk performance
87145 --
87146 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
87147
87148 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
87149 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
87150
87151 -- 4955764
87152 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
87153 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
87154
87155 -- 4458381 Public Sector Enh
87156
87157 --
87158 -- set accounting attributes for the line type
87159 --
87160 l_entered_amt_idx := 3;
87161 l_accted_amt_idx := 8;
87162 l_bflow_applied_to_amt_idx := NULL; -- 5132302
87163 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
87164 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
87165 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
87166 l_rec_acct_attrs.array_char_value(2) := p_source_12;
87167 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
87168 l_rec_acct_attrs.array_num_value(3) := p_source_18;
87169 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
87170 l_rec_acct_attrs.array_char_value(4) := p_source_15;
87171 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
87172 l_rec_acct_attrs.array_date_value(5) := p_source_19;
87173 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
87174 l_rec_acct_attrs.array_num_value(6) := p_source_20;
87175 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
87176 l_rec_acct_attrs.array_char_value(7) := p_source_21;
87177 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
87178 l_rec_acct_attrs.array_num_value(8) := p_source_22;
87179
87180 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
87181 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
87182
87183 ---------------------------------------------------------------------------------------------------------------
87184 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
87185 ---------------------------------------------------------------------------------------------------------------
87186 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
87187
87188 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
87189 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
87190
87191 IF xla_accounting_cache_pkg.GetValueChar
87192 (p_source_code => 'LEDGER_CATEGORY_CODE'
87193 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
87194 AND l_bflow_method_code = 'PRIOR_ENTRY'
87195 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
87196 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
87197 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
87198 )
87199 THEN
87200 xla_ae_lines_pkg.BflowUpgEntry
87201 (p_business_method_code => l_bflow_method_code
87202 ,p_business_class_code => l_bflow_class_code
87203 ,p_balance_type => l_balance_type_code);
87204 ELSE
87205 NULL;
87206 -- No business flow processing for business flow method of NONE.
87207 END IF;
87208
87209 --
87210 -- call analytical criteria
87211 --
87212
87213 --
87214 -- call description
87215 --
87216 -- No description or it is inherited.
87217 --
87218 -- call ADRs
87219 -- Bug 4922099
87220 --
87221 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
87222 (NVL(l_actual_upg_option, 'N') = 'O') OR
87223 (NVL(l_enc_upg_option, 'N') = 'O')
87224 )
87225 THEN
87226 NULL;
87227 --
87228 --
87229
87230 l_ccid := AcctDerRule_4(
87231 p_application_id => p_application_id
87232 , p_ae_header_id => l_ae_header_id
87233 , p_source_4 => p_source_4
87234 , x_transaction_coa_id => l_adr_transaction_coa_id
87235 , x_accounting_coa_id => l_adr_accounting_coa_id
87236 , x_value_type_code => l_adr_value_type_code
87237 , p_side => 'NA'
87238 );
87239
87240 xla_ae_lines_pkg.set_ccid(
87241 p_code_combination_id => l_ccid
87242 , p_value_type_code => l_adr_value_type_code
87243 , p_transaction_coa_id => l_adr_transaction_coa_id
87244 , p_accounting_coa_id => l_adr_accounting_coa_id
87245 , p_adr_code => 'CST_DEFAULT'
87246 , p_adr_type_code => 'S'
87247 , p_component_type => l_component_type
87248 , p_component_code => l_component_code
87249 , p_component_type_code => l_component_type_code
87250 , p_component_appl_id => l_component_appl_id
87251 , p_amb_context_code => l_amb_context_code
87252 , p_side => 'NA'
87253 );
87254
87255
87256 --
87257 --
87258 END IF;
87259 --
87260 -- Bug 4922099
87261 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
87262 (NVL(l_enc_upg_option, 'N') = 'O')
87263 ) AND
87264 (l_bflow_method_code = 'PRIOR_ENTRY')
87265 )
87266 THEN
87267 IF
87268 --
87269 1 = 2
87270 --
87271 THEN
87272 xla_accounting_err_pkg.build_message
87273 (p_appli_s_name => 'XLA'
87274 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
87275 ,p_token_1 => 'LINE_NUMBER'
87276 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
87277 ,p_token_2 => 'LINE_TYPE_NAME'
87278 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
87279 l_component_type
87280 ,l_component_code
87281 ,l_component_type_code
87282 ,l_component_appl_id
87283 ,l_amb_context_code
87284 ,l_entity_code
87285 ,l_event_class_code
87286 )
87287 ,p_token_3 => 'OWNER'
87288 ,p_value_3 => xla_lookups_pkg.get_meaning(
87289 p_lookup_type => 'XLA_OWNER_TYPE'
87290 ,p_lookup_code => l_component_type_code
87291 )
87292 ,p_token_4 => 'PRODUCT_NAME'
87293 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
87294 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
87295 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
87296 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
87297 ,p_ae_header_id => NULL
87298 );
87299
87300 IF (C_LEVEL_ERROR>= g_log_level) THEN
87301 trace
87302 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
87303 ,p_level => C_LEVEL_ERROR
87304 ,p_module => l_log_module);
87305 END IF;
87306 END IF;
87307 END IF;
87308 --
87309 --
87310 ------------------------------------------------------------------------------------------------
87311 -- 4219869 Business Flow
87312 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
87313 -- Prior Entry. Currently, the following code is always generated.
87314 ------------------------------------------------------------------------------------------------
87315 XLA_AE_LINES_PKG.ValidateCurrentLine;
87316
87317 ------------------------------------------------------------------------------------
87318 -- 4219869 Business Flow
87319 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
87320 ------------------------------------------------------------------------------------
87321 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
87322
87323 ----------------------------------------------------------------------------------
87324 -- 4219869 Business Flow
87325 -- Update journal entry status -- Need to generate this within IF <condition>
87326 ----------------------------------------------------------------------------------
87327 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
87328 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
87329 ,p_balance_type_code => l_balance_type_code
87330 );
87331
87332 -------------------------------------------------------------------------------------------
87333 -- 4262811 - Generate the Accrual Reversal lines
87334 -------------------------------------------------------------------------------------------
87335 BEGIN
87336 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
87337 (g_array_event(p_event_id).array_value_num('header_index'));
87338 IF l_acc_rev_flag IS NULL THEN
87339 l_acc_rev_flag := 'N';
87340 END IF;
87341 EXCEPTION
87342 WHEN OTHERS THEN
87343 l_acc_rev_flag := 'N';
87344 END;
87345 --
87346 IF (l_acc_rev_flag = 'Y') THEN
87347
87348 -- 4645092 ------------------------------------------------------------------------------
87349 -- To allow MPA report to determine if it should generate report process
87350 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
87351 ------------------------------------------------------------------------------------------
87352
87353 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
87354 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
87355 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
87356 -- call ADRs
87357 -- Bug 4922099
87358 --
87359 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
87360 (NVL(l_actual_upg_option, 'N') = 'O') OR
87361 (NVL(l_enc_upg_option, 'N') = 'O')
87362 )
87363 THEN
87364 NULL;
87365 --
87366 --
87367
87368 l_ccid := AcctDerRule_4(
87369 p_application_id => p_application_id
87370 , p_ae_header_id => l_ae_header_id
87371 , p_source_4 => p_source_4
87372 , x_transaction_coa_id => l_adr_transaction_coa_id
87373 , x_accounting_coa_id => l_adr_accounting_coa_id
87374 , x_value_type_code => l_adr_value_type_code
87375 , p_side => 'NA'
87376 );
87377
87378 xla_ae_lines_pkg.set_ccid(
87379 p_code_combination_id => l_ccid
87380 , p_value_type_code => l_adr_value_type_code
87381 , p_transaction_coa_id => l_adr_transaction_coa_id
87382 , p_accounting_coa_id => l_adr_accounting_coa_id
87383 , p_adr_code => 'CST_DEFAULT'
87384 , p_adr_type_code => 'S'
87385 , p_component_type => l_component_type
87386 , p_component_code => l_component_code
87387 , p_component_type_code => l_component_type_code
87388 , p_component_appl_id => l_component_appl_id
87389 , p_amb_context_code => l_amb_context_code
87390 , p_side => 'NA'
87391 );
87392
87393
87394 --
87395 --
87396 END IF;
87397
87398 --
87399 -- Update the line information that should be overwritten
87400 --
87401 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
87402 p_header_num => 1);
87403 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
87404
87405 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
87406
87407 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
87408 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
87409 END IF;
87410
87411 --
87412 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
87413 --
87414 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
87415 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
87416 ELSE
87417 ---------------------------------------------------------------------------------------------------
87418 -- 4262811a Switch Sign
87419 ---------------------------------------------------------------------------------------------------
87420 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
87421 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
87422 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
87423 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
87424 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
87425 -- 5132302
87426 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
87427 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
87428
87429 END IF;
87430
87431 -- 4955764
87432 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
87433 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
87434
87435
87436 XLA_AE_LINES_PKG.ValidateCurrentLine;
87437 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
87438
87439 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
87440 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
87441 ,p_balance_type_code => l_balance_type_code);
87442
87443 END IF;
87444
87445 -----------------------------------------------------------------------------------------
87446 -- 4262811 Multiperiod Accounting
87447 -----------------------------------------------------------------------------------------
87448 -- No MPA option is assigned.
87449
87450
87451 END IF;
87452 END IF;
87453 --
87454
87455 --
87456 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
87457 trace
87458 (p_msg => 'END of AcctLineType_159'
87459 ,p_level => C_LEVEL_PROCEDURE
87460 ,p_module => l_log_module);
87461 END IF;
87462 --
87463 EXCEPTION
87464 WHEN xla_exceptions_pkg.application_exception THEN
87465 RAISE;
87466 WHEN OTHERS THEN
87467 xla_exceptions_pkg.raise_message
87468 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_159');
87469 END AcctLineType_159;
87470 --
87471
87472 ---------------------------------------
87473 --
87474 -- PRIVATE FUNCTION
87475 -- AcctLineType_160
87476 --
87477 ---------------------------------------
87478 PROCEDURE AcctLineType_160 (
87479 p_application_id IN NUMBER
87480 ,p_event_id IN NUMBER
87481 ,p_calculate_acctd_flag IN VARCHAR2
87482 ,p_calculate_g_l_flag IN VARCHAR2
87483 ,p_actual_flag IN OUT VARCHAR2
87484 ,p_balance_type_code OUT VARCHAR2
87485 ,p_gain_or_loss_ref OUT VARCHAR2
87486
87487 --Cost Management Default Account
87488 , p_source_4 IN NUMBER
87489 --Applied to Application ID
87490 , p_source_6 IN NUMBER
87491 --Applied to Distribution Link Type
87492 , p_source_7 IN VARCHAR2
87493 --Applied to Entity Code
87494 , p_source_8 IN VARCHAR2
87495 --DISTRIBUTION_IDENTIFIER
87496 , p_source_11 IN NUMBER
87497 --Distribution Type
87498 , p_source_12 IN VARCHAR2
87499 , p_source_12_meaning IN VARCHAR2
87500 --Encumbrance Reversal Amount Entered
87501 , p_source_14 IN NUMBER
87502 --Entered Currency Code
87503 , p_source_15 IN VARCHAR2
87504 --Transaction Encumbrance Reversal Amount
87505 , p_source_16 IN NUMBER
87506 --Entered Amount
87507 , p_source_18 IN NUMBER
87508 --Currency Conversion Date
87509 , p_source_19 IN DATE
87510 --Currency Conversion Rate
87511 , p_source_20 IN NUMBER
87512 --Currency Conversion Type
87513 , p_source_21 IN VARCHAR2
87514 --Accounted Amount
87515 , p_source_22 IN NUMBER
87516 --Accounting Line Type
87517 , p_source_24 IN NUMBER
87518 --Costing Encumbrance Upgrade Option
87519 , p_source_27 IN VARCHAR2
87520 --TXN_PO_DISTRIBUTION_ID
87521 , p_source_28 IN NUMBER
87522 --TXN_PO_HEADER_ID
87523 , p_source_29 IN NUMBER
87524 --Requisition Budget Account
87525 , p_source_30 IN NUMBER
87526 --Requisition Encumbrance Type Identifier
87527 , p_source_31 IN NUMBER
87528 )
87529 IS
87530
87531 l_component_type VARCHAR2(80);
87532 l_component_code VARCHAR2(30);
87533 l_component_type_code VARCHAR2(1);
87534 l_component_appl_id INTEGER;
87535 l_amb_context_code VARCHAR2(30);
87536 l_entity_code VARCHAR2(30);
87537 l_event_class_code VARCHAR2(30);
87538 l_ae_header_id NUMBER;
87539 l_event_type_code VARCHAR2(30);
87540 l_line_definition_code VARCHAR2(30);
87541 l_line_definition_owner_code VARCHAR2(1);
87542 --
87543 -- adr variables
87544 l_segment VARCHAR2(30);
87545 l_ccid NUMBER;
87546 l_adr_transaction_coa_id NUMBER;
87547 l_adr_accounting_coa_id NUMBER;
87548 l_adr_flexfield_segment_code VARCHAR2(30);
87549 l_adr_flex_value_set_id NUMBER;
87550 l_adr_value_type_code VARCHAR2(30);
87551 l_adr_value_combination_id NUMBER;
87552 l_adr_value_segment_code VARCHAR2(30);
87553
87554 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
87555 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
87556 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
87557 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
87558
87559 -- 4262811 Variables ------------------------------------------------------------------------------------------
87560 l_entered_amt_idx NUMBER;
87561 l_accted_amt_idx NUMBER;
87562 l_acc_rev_flag VARCHAR2(1);
87563 l_accrual_line_num NUMBER;
87564 l_tmp_amt NUMBER;
87565 l_acc_rev_natural_side_code VARCHAR2(1);
87566
87567 l_num_entries NUMBER;
87568 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
87569 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
87570 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
87571 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
87572 l_recog_line_1 NUMBER;
87573 l_recog_line_2 NUMBER;
87574
87575 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
87576 l_bflow_applied_to_amt NUMBER; -- 5132302
87577 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
87578
87579 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
87580
87581 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
87582 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
87583
87584 ---------------------------------------------------------------------------------------------------------------
87585
87586
87587 --
87588 -- bulk performance
87589 --
87590 l_balance_type_code VARCHAR2(1);
87591 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
87592 l_log_module VARCHAR2(240);
87593
87594 --
87595 -- Upgrade strategy
87596 --
87597 l_actual_upg_option VARCHAR2(1);
87598 l_enc_upg_option VARCHAR2(1);
87599
87600 --
87601 BEGIN
87602 --
87603 IF g_log_enabled THEN
87604 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_160';
87605 END IF;
87606 --
87607 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
87608
87609 trace
87610 (p_msg => 'BEGIN of AcctLineType_160'
87611 ,p_level => C_LEVEL_PROCEDURE
87612 ,p_module => l_log_module);
87613
87614 END IF;
87615 --
87616 l_component_type := 'AMB_JLT';
87617 l_component_code := 'MATERIAL_OVERHEAD_ABSORPTION';
87618 l_component_type_code := 'S';
87619 l_component_appl_id := 707;
87620 l_amb_context_code := 'DEFAULT';
87621 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
87622 l_event_class_code := 'DIR_INTERORG_RCPT';
87623 l_event_type_code := 'DIR_INTERORG_RCPT_ALL';
87624 l_line_definition_owner_code := 'S';
87625 l_line_definition_code := 'DIRECT_INTERORG_RCPT';
87626 --
87627 l_balance_type_code := 'A';
87628 l_segment := NULL;
87629 l_ccid := NULL;
87630 l_adr_transaction_coa_id := NULL;
87631 l_adr_accounting_coa_id := NULL;
87632 l_adr_flexfield_segment_code := NULL;
87633 l_adr_flex_value_set_id := NULL;
87634 l_adr_value_type_code := NULL;
87635 l_adr_value_combination_id := NULL;
87636 l_adr_value_segment_code := NULL;
87637
87638 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
87639 l_bflow_class_code := ''; -- 4219869 Business Flow
87640 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
87641 l_budgetary_control_flag := 'N';
87642
87643 l_bflow_applied_to_amt_idx := NULL; -- 5132302
87644 l_bflow_applied_to_amt := NULL; -- 5132302
87645 l_entered_amt_idx := NULL; -- 4262811
87646 l_accted_amt_idx := NULL; -- 4262811
87647 l_acc_rev_flag := NULL; -- 4262811
87648 l_accrual_line_num := NULL; -- 4262811
87649 l_tmp_amt := NULL; -- 4262811
87650 --
87651
87652 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
87653 l_balance_type_code <> 'B' THEN
87654 IF NVL(p_source_24,9E125) = 3
87655 THEN
87656
87657 --
87658 XLA_AE_LINES_PKG.SetNewLine;
87659
87660 p_balance_type_code := l_balance_type_code;
87661 -- set the flag so later we will know whether the gain loss line needs to be created
87662
87663 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
87664 p_actual_flag :='A';
87665 END IF;
87666
87667 --
87668 -- bulk performance
87669 --
87670 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
87671 p_header_num => 0); -- 4262811
87672 --
87673 -- set accounting line options
87674 --
87675 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
87676 p_natural_side_code => 'D'
87677 , p_gain_or_loss_flag => 'N'
87678 , p_gl_transfer_mode_code => 'S'
87679 , p_acct_entry_type_code => 'A'
87680 , p_switch_side_flag => 'Y'
87681 , p_merge_duplicate_code => 'N'
87682 );
87683 --
87684 l_acc_rev_natural_side_code := 'C'; -- 4262811
87685 --
87686 --
87687 -- set accounting line type info
87688 --
87689 xla_ae_lines_pkg.SetAcctLineType
87690 (p_component_type => l_component_type
87691 ,p_event_type_code => l_event_type_code
87692 ,p_line_definition_owner_code => l_line_definition_owner_code
87693 ,p_line_definition_code => l_line_definition_code
87694 ,p_accounting_line_code => l_component_code
87695 ,p_accounting_line_type_code => l_component_type_code
87696 ,p_accounting_line_appl_id => l_component_appl_id
87697 ,p_amb_context_code => l_amb_context_code
87698 ,p_entity_code => l_entity_code
87699 ,p_event_class_code => l_event_class_code);
87700 --
87701 -- set accounting class
87702 --
87703 xla_ae_lines_pkg.SetAcctClass(
87704 p_accounting_class_code => 'MATERIAL_OVERHEAD_ABSORPTION'
87705 , p_ae_header_id => l_ae_header_id
87706 );
87707
87708 --
87709 -- set rounding class
87710 --
87711 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
87712 'MATERIAL_OVERHEAD_ABSORPTION';
87713
87714 --
87715 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
87716 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
87717 --
87718 -- bulk performance
87719 --
87720 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
87721
87722 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
87723 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
87724
87725 -- 4955764
87726 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
87727 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
87728
87729 -- 4458381 Public Sector Enh
87730
87731 --
87732 -- set accounting attributes for the line type
87733 --
87734 l_entered_amt_idx := 17;
87735 l_accted_amt_idx := 22;
87736 l_bflow_applied_to_amt_idx := NULL; -- 5132302
87737 l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
87738 l_rec_acct_attrs.array_num_value(1) := p_source_6;
87739 l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
87740 l_rec_acct_attrs.array_char_value(2) := p_source_7;
87741 l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
87742 l_rec_acct_attrs.array_char_value(3) := p_source_8;
87743 l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
87744 l_rec_acct_attrs.array_num_value(4) := to_char(p_source_28);
87745 l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
87746 l_rec_acct_attrs.array_num_value(5) := to_char(p_source_29);
87747 l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
87748 l_rec_acct_attrs.array_num_value(6) := to_char(p_source_11);
87749 l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
87750 l_rec_acct_attrs.array_char_value(7) := p_source_12;
87751 l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
87752 l_rec_acct_attrs.array_num_value(8) := TO_NUMBER(p_source_30);
87753 l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
87754 l_rec_acct_attrs.array_num_value(9) := p_source_14;
87755 l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
87756 l_rec_acct_attrs.array_char_value(10) := p_source_15;
87757 l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
87758 l_rec_acct_attrs.array_num_value(11) := p_source_16;
87759 l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
87760 l_rec_acct_attrs.array_num_value(12) := TO_NUMBER(p_source_30);
87761 l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
87762 l_rec_acct_attrs.array_num_value(13) := p_source_14;
87763 l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
87764 l_rec_acct_attrs.array_char_value(14) := p_source_15;
87765 l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
87766 l_rec_acct_attrs.array_num_value(15) := p_source_16;
87767 l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
87768 l_rec_acct_attrs.array_char_value(16) := p_source_27;
87769 l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
87770 l_rec_acct_attrs.array_num_value(17) := p_source_18;
87771 l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
87772 l_rec_acct_attrs.array_char_value(18) := p_source_15;
87773 l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
87774 l_rec_acct_attrs.array_date_value(19) := p_source_19;
87775 l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
87776 l_rec_acct_attrs.array_num_value(20) := p_source_20;
87777 l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
87778 l_rec_acct_attrs.array_char_value(21) := p_source_21;
87779 l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
87780 l_rec_acct_attrs.array_num_value(22) := p_source_22;
87781 l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
87782 l_rec_acct_attrs.array_num_value(23) := p_source_31;
87783 l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
87784 l_rec_acct_attrs.array_num_value(24) := p_source_31;
87785
87786 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
87787 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
87788
87789 ---------------------------------------------------------------------------------------------------------------
87790 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
87791 ---------------------------------------------------------------------------------------------------------------
87792 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
87793
87794 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
87795 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
87796
87797 IF xla_accounting_cache_pkg.GetValueChar
87798 (p_source_code => 'LEDGER_CATEGORY_CODE'
87799 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
87800 AND l_bflow_method_code = 'PRIOR_ENTRY'
87801 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
87802 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
87803 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
87804 )
87805 THEN
87806 xla_ae_lines_pkg.BflowUpgEntry
87807 (p_business_method_code => l_bflow_method_code
87808 ,p_business_class_code => l_bflow_class_code
87809 ,p_balance_type => l_balance_type_code);
87810 ELSE
87811 NULL;
87812 -- No business flow processing for business flow method of NONE.
87813 END IF;
87814
87815 --
87816 -- call analytical criteria
87817 --
87818
87819 --
87820 -- call description
87821 --
87822 -- No description or it is inherited.
87823 --
87824 -- call ADRs
87825 -- Bug 4922099
87826 --
87827 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
87828 (NVL(l_actual_upg_option, 'N') = 'O') OR
87829 (NVL(l_enc_upg_option, 'N') = 'O')
87830 )
87831 THEN
87832 NULL;
87833 --
87834 --
87835
87836 l_ccid := AcctDerRule_4(
87837 p_application_id => p_application_id
87838 , p_ae_header_id => l_ae_header_id
87839 , p_source_4 => p_source_4
87840 , x_transaction_coa_id => l_adr_transaction_coa_id
87841 , x_accounting_coa_id => l_adr_accounting_coa_id
87842 , x_value_type_code => l_adr_value_type_code
87843 , p_side => 'NA'
87844 );
87845
87846 xla_ae_lines_pkg.set_ccid(
87847 p_code_combination_id => l_ccid
87848 , p_value_type_code => l_adr_value_type_code
87849 , p_transaction_coa_id => l_adr_transaction_coa_id
87850 , p_accounting_coa_id => l_adr_accounting_coa_id
87851 , p_adr_code => 'CST_DEFAULT'
87852 , p_adr_type_code => 'S'
87853 , p_component_type => l_component_type
87854 , p_component_code => l_component_code
87855 , p_component_type_code => l_component_type_code
87856 , p_component_appl_id => l_component_appl_id
87857 , p_amb_context_code => l_amb_context_code
87858 , p_side => 'NA'
87859 );
87860
87861
87862 --
87863 --
87864 END IF;
87865 --
87866 -- Bug 4922099
87867 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
87868 (NVL(l_enc_upg_option, 'N') = 'O')
87869 ) AND
87870 (l_bflow_method_code = 'PRIOR_ENTRY')
87871 )
87872 THEN
87873 IF
87874 --
87875 1 = 2
87876 --
87877 THEN
87878 xla_accounting_err_pkg.build_message
87879 (p_appli_s_name => 'XLA'
87880 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
87881 ,p_token_1 => 'LINE_NUMBER'
87882 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
87883 ,p_token_2 => 'LINE_TYPE_NAME'
87884 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
87885 l_component_type
87886 ,l_component_code
87887 ,l_component_type_code
87888 ,l_component_appl_id
87889 ,l_amb_context_code
87890 ,l_entity_code
87891 ,l_event_class_code
87892 )
87893 ,p_token_3 => 'OWNER'
87894 ,p_value_3 => xla_lookups_pkg.get_meaning(
87895 p_lookup_type => 'XLA_OWNER_TYPE'
87896 ,p_lookup_code => l_component_type_code
87897 )
87898 ,p_token_4 => 'PRODUCT_NAME'
87899 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
87900 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
87901 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
87902 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
87903 ,p_ae_header_id => NULL
87904 );
87905
87906 IF (C_LEVEL_ERROR>= g_log_level) THEN
87907 trace
87908 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
87909 ,p_level => C_LEVEL_ERROR
87910 ,p_module => l_log_module);
87911 END IF;
87912 END IF;
87913 END IF;
87914 --
87915 --
87916 ------------------------------------------------------------------------------------------------
87917 -- 4219869 Business Flow
87918 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
87919 -- Prior Entry. Currently, the following code is always generated.
87920 ------------------------------------------------------------------------------------------------
87921 XLA_AE_LINES_PKG.ValidateCurrentLine;
87922
87923 ------------------------------------------------------------------------------------
87924 -- 4219869 Business Flow
87925 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
87926 ------------------------------------------------------------------------------------
87927 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
87928
87929 ----------------------------------------------------------------------------------
87930 -- 4219869 Business Flow
87931 -- Update journal entry status -- Need to generate this within IF <condition>
87932 ----------------------------------------------------------------------------------
87933 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
87934 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
87935 ,p_balance_type_code => l_balance_type_code
87936 );
87937
87938 -------------------------------------------------------------------------------------------
87939 -- 4262811 - Generate the Accrual Reversal lines
87940 -------------------------------------------------------------------------------------------
87941 BEGIN
87942 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
87943 (g_array_event(p_event_id).array_value_num('header_index'));
87944 IF l_acc_rev_flag IS NULL THEN
87945 l_acc_rev_flag := 'N';
87946 END IF;
87947 EXCEPTION
87948 WHEN OTHERS THEN
87949 l_acc_rev_flag := 'N';
87950 END;
87951 --
87952 IF (l_acc_rev_flag = 'Y') THEN
87953
87954 -- 4645092 ------------------------------------------------------------------------------
87955 -- To allow MPA report to determine if it should generate report process
87956 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
87957 ------------------------------------------------------------------------------------------
87958
87959 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
87960 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
87961 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
87962 -- call ADRs
87963 -- Bug 4922099
87964 --
87965 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
87966 (NVL(l_actual_upg_option, 'N') = 'O') OR
87967 (NVL(l_enc_upg_option, 'N') = 'O')
87968 )
87969 THEN
87970 NULL;
87971 --
87972 --
87973
87974 l_ccid := AcctDerRule_4(
87975 p_application_id => p_application_id
87976 , p_ae_header_id => l_ae_header_id
87977 , p_source_4 => p_source_4
87978 , x_transaction_coa_id => l_adr_transaction_coa_id
87979 , x_accounting_coa_id => l_adr_accounting_coa_id
87980 , x_value_type_code => l_adr_value_type_code
87981 , p_side => 'NA'
87982 );
87983
87984 xla_ae_lines_pkg.set_ccid(
87985 p_code_combination_id => l_ccid
87986 , p_value_type_code => l_adr_value_type_code
87987 , p_transaction_coa_id => l_adr_transaction_coa_id
87988 , p_accounting_coa_id => l_adr_accounting_coa_id
87989 , p_adr_code => 'CST_DEFAULT'
87990 , p_adr_type_code => 'S'
87991 , p_component_type => l_component_type
87992 , p_component_code => l_component_code
87993 , p_component_type_code => l_component_type_code
87994 , p_component_appl_id => l_component_appl_id
87995 , p_amb_context_code => l_amb_context_code
87996 , p_side => 'NA'
87997 );
87998
87999
88000 --
88001 --
88002 END IF;
88003
88004 --
88005 -- Update the line information that should be overwritten
88006 --
88007 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
88008 p_header_num => 1);
88009 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
88010
88011 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
88012
88013 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
88014 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
88015 END IF;
88016
88017 --
88018 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
88019 --
88020 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
88021 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
88022 ELSE
88023 ---------------------------------------------------------------------------------------------------
88024 -- 4262811a Switch Sign
88025 ---------------------------------------------------------------------------------------------------
88026 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
88027 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
88028 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
88029 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
88030 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
88031 -- 5132302
88032 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
88033 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
88034
88035 END IF;
88036
88037 -- 4955764
88038 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
88039 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
88040
88041
88042 XLA_AE_LINES_PKG.ValidateCurrentLine;
88043 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
88044
88045 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
88046 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
88047 ,p_balance_type_code => l_balance_type_code);
88048
88049 END IF;
88050
88051 -----------------------------------------------------------------------------------------
88052 -- 4262811 Multiperiod Accounting
88053 -----------------------------------------------------------------------------------------
88054 -- No MPA option is assigned.
88055
88056
88057 END IF;
88058 END IF;
88059 --
88060
88061 --
88062 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
88063 trace
88064 (p_msg => 'END of AcctLineType_160'
88065 ,p_level => C_LEVEL_PROCEDURE
88066 ,p_module => l_log_module);
88067 END IF;
88068 --
88069 EXCEPTION
88070 WHEN xla_exceptions_pkg.application_exception THEN
88071 RAISE;
88072 WHEN OTHERS THEN
88073 xla_exceptions_pkg.raise_message
88074 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_160');
88075 END AcctLineType_160;
88076 --
88077
88078 ---------------------------------------
88079 --
88080 -- PRIVATE FUNCTION
88081 -- AcctLineType_161
88082 --
88083 ---------------------------------------
88084 PROCEDURE AcctLineType_161 (
88085 p_application_id IN NUMBER
88086 ,p_event_id IN NUMBER
88087 ,p_calculate_acctd_flag IN VARCHAR2
88088 ,p_calculate_g_l_flag IN VARCHAR2
88089 ,p_actual_flag IN OUT VARCHAR2
88090 ,p_balance_type_code OUT VARCHAR2
88091 ,p_gain_or_loss_ref OUT VARCHAR2
88092
88093 --Cost Management Default Account
88094 , p_source_4 IN NUMBER
88095 --DISTRIBUTION_IDENTIFIER
88096 , p_source_11 IN NUMBER
88097 --Distribution Type
88098 , p_source_12 IN VARCHAR2
88099 , p_source_12_meaning IN VARCHAR2
88100 --Entered Currency Code
88101 , p_source_15 IN VARCHAR2
88102 --Entered Amount
88103 , p_source_18 IN NUMBER
88104 --Currency Conversion Date
88105 , p_source_19 IN DATE
88106 --Currency Conversion Rate
88107 , p_source_20 IN NUMBER
88108 --Currency Conversion Type
88109 , p_source_21 IN VARCHAR2
88110 --Accounted Amount
88111 , p_source_22 IN NUMBER
88112 --Accounting Line Type
88113 , p_source_24 IN NUMBER
88114 )
88115 IS
88116
88117 l_component_type VARCHAR2(80);
88118 l_component_code VARCHAR2(30);
88119 l_component_type_code VARCHAR2(1);
88120 l_component_appl_id INTEGER;
88121 l_amb_context_code VARCHAR2(30);
88122 l_entity_code VARCHAR2(30);
88123 l_event_class_code VARCHAR2(30);
88124 l_ae_header_id NUMBER;
88125 l_event_type_code VARCHAR2(30);
88126 l_line_definition_code VARCHAR2(30);
88127 l_line_definition_owner_code VARCHAR2(1);
88128 --
88129 -- adr variables
88130 l_segment VARCHAR2(30);
88131 l_ccid NUMBER;
88132 l_adr_transaction_coa_id NUMBER;
88133 l_adr_accounting_coa_id NUMBER;
88134 l_adr_flexfield_segment_code VARCHAR2(30);
88135 l_adr_flex_value_set_id NUMBER;
88136 l_adr_value_type_code VARCHAR2(30);
88137 l_adr_value_combination_id NUMBER;
88138 l_adr_value_segment_code VARCHAR2(30);
88139
88140 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
88141 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
88142 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
88143 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
88144
88145 -- 4262811 Variables ------------------------------------------------------------------------------------------
88146 l_entered_amt_idx NUMBER;
88147 l_accted_amt_idx NUMBER;
88148 l_acc_rev_flag VARCHAR2(1);
88149 l_accrual_line_num NUMBER;
88150 l_tmp_amt NUMBER;
88151 l_acc_rev_natural_side_code VARCHAR2(1);
88152
88153 l_num_entries NUMBER;
88154 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
88155 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
88156 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
88157 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
88158 l_recog_line_1 NUMBER;
88159 l_recog_line_2 NUMBER;
88160
88161 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
88162 l_bflow_applied_to_amt NUMBER; -- 5132302
88163 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
88164
88165 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
88166
88167 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
88168 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
88169
88170 ---------------------------------------------------------------------------------------------------------------
88171
88172
88173 --
88174 -- bulk performance
88175 --
88176 l_balance_type_code VARCHAR2(1);
88177 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
88178 l_log_module VARCHAR2(240);
88179
88180 --
88181 -- Upgrade strategy
88182 --
88183 l_actual_upg_option VARCHAR2(1);
88184 l_enc_upg_option VARCHAR2(1);
88185
88186 --
88187 BEGIN
88188 --
88189 IF g_log_enabled THEN
88190 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_161';
88191 END IF;
88192 --
88193 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
88194
88195 trace
88196 (p_msg => 'BEGIN of AcctLineType_161'
88197 ,p_level => C_LEVEL_PROCEDURE
88198 ,p_module => l_log_module);
88199
88200 END IF;
88201 --
88202 l_component_type := 'AMB_JLT';
88203 l_component_code := 'MATERIAL_OVERHEAD_ABSORPTION';
88204 l_component_type_code := 'S';
88205 l_component_appl_id := 707;
88206 l_amb_context_code := 'DEFAULT';
88207 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
88208 l_event_class_code := 'FOB_SHIP_RECIPIENT_SHIP';
88209 l_event_type_code := 'FOB_SHIP_RECIPIENT_SHIP_ALL';
88210 l_line_definition_owner_code := 'S';
88211 l_line_definition_code := 'FOB_SHIP_RECIPIENT_SHIP';
88212 --
88213 l_balance_type_code := 'A';
88214 l_segment := NULL;
88215 l_ccid := NULL;
88216 l_adr_transaction_coa_id := NULL;
88217 l_adr_accounting_coa_id := NULL;
88218 l_adr_flexfield_segment_code := NULL;
88219 l_adr_flex_value_set_id := NULL;
88220 l_adr_value_type_code := NULL;
88221 l_adr_value_combination_id := NULL;
88222 l_adr_value_segment_code := NULL;
88223
88224 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
88225 l_bflow_class_code := ''; -- 4219869 Business Flow
88226 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
88227 l_budgetary_control_flag := 'N';
88228
88229 l_bflow_applied_to_amt_idx := NULL; -- 5132302
88230 l_bflow_applied_to_amt := NULL; -- 5132302
88231 l_entered_amt_idx := NULL; -- 4262811
88232 l_accted_amt_idx := NULL; -- 4262811
88233 l_acc_rev_flag := NULL; -- 4262811
88234 l_accrual_line_num := NULL; -- 4262811
88235 l_tmp_amt := NULL; -- 4262811
88236 --
88237
88238 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
88239 l_balance_type_code <> 'B' THEN
88240 IF NVL(p_source_24,9E125) = 3
88241 THEN
88242
88243 --
88244 XLA_AE_LINES_PKG.SetNewLine;
88245
88246 p_balance_type_code := l_balance_type_code;
88247 -- set the flag so later we will know whether the gain loss line needs to be created
88248
88249 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
88250 p_actual_flag :='A';
88251 END IF;
88252
88253 --
88254 -- bulk performance
88255 --
88256 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
88257 p_header_num => 0); -- 4262811
88258 --
88259 -- set accounting line options
88260 --
88261 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
88262 p_natural_side_code => 'D'
88263 , p_gain_or_loss_flag => 'N'
88264 , p_gl_transfer_mode_code => 'S'
88265 , p_acct_entry_type_code => 'A'
88266 , p_switch_side_flag => 'Y'
88267 , p_merge_duplicate_code => 'N'
88268 );
88269 --
88270 l_acc_rev_natural_side_code := 'C'; -- 4262811
88271 --
88272 --
88273 -- set accounting line type info
88274 --
88275 xla_ae_lines_pkg.SetAcctLineType
88276 (p_component_type => l_component_type
88277 ,p_event_type_code => l_event_type_code
88278 ,p_line_definition_owner_code => l_line_definition_owner_code
88279 ,p_line_definition_code => l_line_definition_code
88280 ,p_accounting_line_code => l_component_code
88281 ,p_accounting_line_type_code => l_component_type_code
88282 ,p_accounting_line_appl_id => l_component_appl_id
88283 ,p_amb_context_code => l_amb_context_code
88284 ,p_entity_code => l_entity_code
88285 ,p_event_class_code => l_event_class_code);
88286 --
88287 -- set accounting class
88288 --
88289 xla_ae_lines_pkg.SetAcctClass(
88290 p_accounting_class_code => 'MATERIAL_OVERHEAD_ABSORPTION'
88291 , p_ae_header_id => l_ae_header_id
88292 );
88293
88294 --
88295 -- set rounding class
88296 --
88297 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
88298 'MATERIAL_OVERHEAD_ABSORPTION';
88299
88300 --
88301 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
88302 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
88303 --
88304 -- bulk performance
88305 --
88306 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
88307
88308 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
88309 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
88310
88311 -- 4955764
88312 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
88313 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
88314
88315 -- 4458381 Public Sector Enh
88316
88317 --
88318 -- set accounting attributes for the line type
88319 --
88320 l_entered_amt_idx := 3;
88321 l_accted_amt_idx := 8;
88322 l_bflow_applied_to_amt_idx := NULL; -- 5132302
88323 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
88324 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
88325 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
88326 l_rec_acct_attrs.array_char_value(2) := p_source_12;
88327 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
88328 l_rec_acct_attrs.array_num_value(3) := p_source_18;
88329 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
88330 l_rec_acct_attrs.array_char_value(4) := p_source_15;
88331 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
88332 l_rec_acct_attrs.array_date_value(5) := p_source_19;
88333 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
88334 l_rec_acct_attrs.array_num_value(6) := p_source_20;
88335 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
88336 l_rec_acct_attrs.array_char_value(7) := p_source_21;
88337 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
88338 l_rec_acct_attrs.array_num_value(8) := p_source_22;
88339
88340 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
88341 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
88342
88343 ---------------------------------------------------------------------------------------------------------------
88344 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
88345 ---------------------------------------------------------------------------------------------------------------
88346 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
88347
88348 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
88349 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
88350
88351 IF xla_accounting_cache_pkg.GetValueChar
88352 (p_source_code => 'LEDGER_CATEGORY_CODE'
88353 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
88354 AND l_bflow_method_code = 'PRIOR_ENTRY'
88355 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
88356 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
88357 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
88358 )
88359 THEN
88360 xla_ae_lines_pkg.BflowUpgEntry
88361 (p_business_method_code => l_bflow_method_code
88362 ,p_business_class_code => l_bflow_class_code
88363 ,p_balance_type => l_balance_type_code);
88364 ELSE
88365 NULL;
88366 -- No business flow processing for business flow method of NONE.
88367 END IF;
88368
88369 --
88370 -- call analytical criteria
88371 --
88372
88373 --
88374 -- call description
88375 --
88376 -- No description or it is inherited.
88377 --
88378 -- call ADRs
88379 -- Bug 4922099
88380 --
88381 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
88382 (NVL(l_actual_upg_option, 'N') = 'O') OR
88383 (NVL(l_enc_upg_option, 'N') = 'O')
88384 )
88385 THEN
88386 NULL;
88387 --
88388 --
88389
88390 l_ccid := AcctDerRule_4(
88391 p_application_id => p_application_id
88392 , p_ae_header_id => l_ae_header_id
88393 , p_source_4 => p_source_4
88394 , x_transaction_coa_id => l_adr_transaction_coa_id
88395 , x_accounting_coa_id => l_adr_accounting_coa_id
88396 , x_value_type_code => l_adr_value_type_code
88397 , p_side => 'NA'
88398 );
88399
88400 xla_ae_lines_pkg.set_ccid(
88401 p_code_combination_id => l_ccid
88402 , p_value_type_code => l_adr_value_type_code
88403 , p_transaction_coa_id => l_adr_transaction_coa_id
88404 , p_accounting_coa_id => l_adr_accounting_coa_id
88405 , p_adr_code => 'CST_DEFAULT'
88406 , p_adr_type_code => 'S'
88407 , p_component_type => l_component_type
88408 , p_component_code => l_component_code
88409 , p_component_type_code => l_component_type_code
88410 , p_component_appl_id => l_component_appl_id
88411 , p_amb_context_code => l_amb_context_code
88412 , p_side => 'NA'
88413 );
88414
88415
88416 --
88417 --
88418 END IF;
88419 --
88420 -- Bug 4922099
88421 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
88422 (NVL(l_enc_upg_option, 'N') = 'O')
88423 ) AND
88424 (l_bflow_method_code = 'PRIOR_ENTRY')
88425 )
88426 THEN
88427 IF
88428 --
88429 1 = 2
88430 --
88431 THEN
88432 xla_accounting_err_pkg.build_message
88433 (p_appli_s_name => 'XLA'
88434 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
88435 ,p_token_1 => 'LINE_NUMBER'
88436 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
88437 ,p_token_2 => 'LINE_TYPE_NAME'
88438 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
88439 l_component_type
88440 ,l_component_code
88441 ,l_component_type_code
88442 ,l_component_appl_id
88443 ,l_amb_context_code
88444 ,l_entity_code
88445 ,l_event_class_code
88446 )
88447 ,p_token_3 => 'OWNER'
88448 ,p_value_3 => xla_lookups_pkg.get_meaning(
88449 p_lookup_type => 'XLA_OWNER_TYPE'
88450 ,p_lookup_code => l_component_type_code
88451 )
88452 ,p_token_4 => 'PRODUCT_NAME'
88453 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
88454 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
88455 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
88456 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
88457 ,p_ae_header_id => NULL
88458 );
88459
88460 IF (C_LEVEL_ERROR>= g_log_level) THEN
88461 trace
88462 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
88463 ,p_level => C_LEVEL_ERROR
88464 ,p_module => l_log_module);
88465 END IF;
88466 END IF;
88467 END IF;
88468 --
88469 --
88470 ------------------------------------------------------------------------------------------------
88471 -- 4219869 Business Flow
88472 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
88473 -- Prior Entry. Currently, the following code is always generated.
88474 ------------------------------------------------------------------------------------------------
88475 XLA_AE_LINES_PKG.ValidateCurrentLine;
88476
88477 ------------------------------------------------------------------------------------
88478 -- 4219869 Business Flow
88479 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
88480 ------------------------------------------------------------------------------------
88481 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
88482
88483 ----------------------------------------------------------------------------------
88484 -- 4219869 Business Flow
88485 -- Update journal entry status -- Need to generate this within IF <condition>
88486 ----------------------------------------------------------------------------------
88487 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
88488 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
88489 ,p_balance_type_code => l_balance_type_code
88490 );
88491
88492 -------------------------------------------------------------------------------------------
88493 -- 4262811 - Generate the Accrual Reversal lines
88494 -------------------------------------------------------------------------------------------
88495 BEGIN
88496 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
88497 (g_array_event(p_event_id).array_value_num('header_index'));
88498 IF l_acc_rev_flag IS NULL THEN
88499 l_acc_rev_flag := 'N';
88500 END IF;
88501 EXCEPTION
88502 WHEN OTHERS THEN
88503 l_acc_rev_flag := 'N';
88504 END;
88505 --
88506 IF (l_acc_rev_flag = 'Y') THEN
88507
88508 -- 4645092 ------------------------------------------------------------------------------
88509 -- To allow MPA report to determine if it should generate report process
88510 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
88511 ------------------------------------------------------------------------------------------
88512
88513 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
88514 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
88515 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
88516 -- call ADRs
88517 -- Bug 4922099
88518 --
88519 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
88520 (NVL(l_actual_upg_option, 'N') = 'O') OR
88521 (NVL(l_enc_upg_option, 'N') = 'O')
88522 )
88523 THEN
88524 NULL;
88525 --
88526 --
88527
88528 l_ccid := AcctDerRule_4(
88529 p_application_id => p_application_id
88530 , p_ae_header_id => l_ae_header_id
88531 , p_source_4 => p_source_4
88532 , x_transaction_coa_id => l_adr_transaction_coa_id
88533 , x_accounting_coa_id => l_adr_accounting_coa_id
88534 , x_value_type_code => l_adr_value_type_code
88535 , p_side => 'NA'
88536 );
88537
88538 xla_ae_lines_pkg.set_ccid(
88539 p_code_combination_id => l_ccid
88540 , p_value_type_code => l_adr_value_type_code
88541 , p_transaction_coa_id => l_adr_transaction_coa_id
88542 , p_accounting_coa_id => l_adr_accounting_coa_id
88543 , p_adr_code => 'CST_DEFAULT'
88544 , p_adr_type_code => 'S'
88545 , p_component_type => l_component_type
88546 , p_component_code => l_component_code
88547 , p_component_type_code => l_component_type_code
88548 , p_component_appl_id => l_component_appl_id
88549 , p_amb_context_code => l_amb_context_code
88550 , p_side => 'NA'
88551 );
88552
88553
88554 --
88555 --
88556 END IF;
88557
88558 --
88559 -- Update the line information that should be overwritten
88560 --
88561 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
88562 p_header_num => 1);
88563 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
88564
88565 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
88566
88567 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
88568 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
88569 END IF;
88570
88571 --
88572 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
88573 --
88574 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
88575 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
88576 ELSE
88577 ---------------------------------------------------------------------------------------------------
88578 -- 4262811a Switch Sign
88579 ---------------------------------------------------------------------------------------------------
88580 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
88581 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
88582 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
88583 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
88584 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
88585 -- 5132302
88586 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
88587 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
88588
88589 END IF;
88590
88591 -- 4955764
88592 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
88593 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
88594
88595
88596 XLA_AE_LINES_PKG.ValidateCurrentLine;
88597 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
88598
88599 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
88600 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
88601 ,p_balance_type_code => l_balance_type_code);
88602
88603 END IF;
88604
88605 -----------------------------------------------------------------------------------------
88606 -- 4262811 Multiperiod Accounting
88607 -----------------------------------------------------------------------------------------
88608 -- No MPA option is assigned.
88609
88610
88611 END IF;
88612 END IF;
88613 --
88614
88615 --
88616 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
88617 trace
88618 (p_msg => 'END of AcctLineType_161'
88619 ,p_level => C_LEVEL_PROCEDURE
88620 ,p_module => l_log_module);
88621 END IF;
88622 --
88623 EXCEPTION
88624 WHEN xla_exceptions_pkg.application_exception THEN
88625 RAISE;
88626 WHEN OTHERS THEN
88627 xla_exceptions_pkg.raise_message
88628 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_161');
88629 END AcctLineType_161;
88630 --
88631
88632 ---------------------------------------
88633 --
88634 -- PRIVATE FUNCTION
88635 -- AcctLineType_162
88636 --
88637 ---------------------------------------
88638 PROCEDURE AcctLineType_162 (
88639 p_application_id IN NUMBER
88640 ,p_event_id IN NUMBER
88641 ,p_calculate_acctd_flag IN VARCHAR2
88642 ,p_calculate_g_l_flag IN VARCHAR2
88643 ,p_actual_flag IN OUT VARCHAR2
88644 ,p_balance_type_code OUT VARCHAR2
88645 ,p_gain_or_loss_ref OUT VARCHAR2
88646
88647 --Cost Management Default Account
88648 , p_source_4 IN NUMBER
88649 --DISTRIBUTION_IDENTIFIER
88650 , p_source_11 IN NUMBER
88651 --Distribution Type
88652 , p_source_12 IN VARCHAR2
88653 , p_source_12_meaning IN VARCHAR2
88654 --Entered Currency Code
88655 , p_source_15 IN VARCHAR2
88656 --Entered Amount
88657 , p_source_18 IN NUMBER
88658 --Currency Conversion Date
88659 , p_source_19 IN DATE
88660 --Currency Conversion Rate
88661 , p_source_20 IN NUMBER
88662 --Currency Conversion Type
88663 , p_source_21 IN VARCHAR2
88664 --Accounted Amount
88665 , p_source_22 IN NUMBER
88666 --Accounting Line Type
88667 , p_source_24 IN NUMBER
88668 )
88669 IS
88670
88671 l_component_type VARCHAR2(80);
88672 l_component_code VARCHAR2(30);
88673 l_component_type_code VARCHAR2(1);
88674 l_component_appl_id INTEGER;
88675 l_amb_context_code VARCHAR2(30);
88676 l_entity_code VARCHAR2(30);
88677 l_event_class_code VARCHAR2(30);
88678 l_ae_header_id NUMBER;
88679 l_event_type_code VARCHAR2(30);
88680 l_line_definition_code VARCHAR2(30);
88681 l_line_definition_owner_code VARCHAR2(1);
88682 --
88683 -- adr variables
88684 l_segment VARCHAR2(30);
88685 l_ccid NUMBER;
88686 l_adr_transaction_coa_id NUMBER;
88687 l_adr_accounting_coa_id NUMBER;
88688 l_adr_flexfield_segment_code VARCHAR2(30);
88689 l_adr_flex_value_set_id NUMBER;
88690 l_adr_value_type_code VARCHAR2(30);
88691 l_adr_value_combination_id NUMBER;
88692 l_adr_value_segment_code VARCHAR2(30);
88693
88694 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
88695 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
88696 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
88697 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
88698
88699 -- 4262811 Variables ------------------------------------------------------------------------------------------
88700 l_entered_amt_idx NUMBER;
88701 l_accted_amt_idx NUMBER;
88702 l_acc_rev_flag VARCHAR2(1);
88703 l_accrual_line_num NUMBER;
88704 l_tmp_amt NUMBER;
88705 l_acc_rev_natural_side_code VARCHAR2(1);
88706
88707 l_num_entries NUMBER;
88708 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
88709 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
88710 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
88711 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
88712 l_recog_line_1 NUMBER;
88713 l_recog_line_2 NUMBER;
88714
88715 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
88716 l_bflow_applied_to_amt NUMBER; -- 5132302
88717 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
88718
88719 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
88720
88721 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
88722 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
88723
88724 ---------------------------------------------------------------------------------------------------------------
88725
88726
88727 --
88728 -- bulk performance
88729 --
88730 l_balance_type_code VARCHAR2(1);
88731 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
88732 l_log_module VARCHAR2(240);
88733
88734 --
88735 -- Upgrade strategy
88736 --
88737 l_actual_upg_option VARCHAR2(1);
88738 l_enc_upg_option VARCHAR2(1);
88739
88740 --
88741 BEGIN
88742 --
88743 IF g_log_enabled THEN
88744 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_162';
88745 END IF;
88746 --
88747 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
88748
88749 trace
88750 (p_msg => 'BEGIN of AcctLineType_162'
88751 ,p_level => C_LEVEL_PROCEDURE
88752 ,p_module => l_log_module);
88753
88754 END IF;
88755 --
88756 l_component_type := 'AMB_JLT';
88757 l_component_code := 'MATERIAL_OVERHEAD_ABSORPTION';
88758 l_component_type_code := 'S';
88759 l_component_appl_id := 707;
88760 l_amb_context_code := 'DEFAULT';
88761 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
88762 l_event_class_code := 'USER_DEFINE';
88763 l_event_type_code := 'UDIR_INTERORG_RCPT';
88764 l_line_definition_owner_code := 'S';
88765 l_line_definition_code := 'USER_DIR_INTERORG_RCPT';
88766 --
88767 l_balance_type_code := 'A';
88768 l_segment := NULL;
88769 l_ccid := NULL;
88770 l_adr_transaction_coa_id := NULL;
88771 l_adr_accounting_coa_id := NULL;
88772 l_adr_flexfield_segment_code := NULL;
88773 l_adr_flex_value_set_id := NULL;
88774 l_adr_value_type_code := NULL;
88775 l_adr_value_combination_id := NULL;
88776 l_adr_value_segment_code := NULL;
88777
88778 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
88779 l_bflow_class_code := ''; -- 4219869 Business Flow
88780 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
88781 l_budgetary_control_flag := 'N';
88782
88783 l_bflow_applied_to_amt_idx := NULL; -- 5132302
88784 l_bflow_applied_to_amt := NULL; -- 5132302
88785 l_entered_amt_idx := NULL; -- 4262811
88786 l_accted_amt_idx := NULL; -- 4262811
88787 l_acc_rev_flag := NULL; -- 4262811
88788 l_accrual_line_num := NULL; -- 4262811
88789 l_tmp_amt := NULL; -- 4262811
88790 --
88791
88792 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
88793 l_balance_type_code <> 'B' THEN
88794 IF NVL(p_source_24,9E125) = 3
88795 THEN
88796
88797 --
88798 XLA_AE_LINES_PKG.SetNewLine;
88799
88800 p_balance_type_code := l_balance_type_code;
88801 -- set the flag so later we will know whether the gain loss line needs to be created
88802
88803 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
88804 p_actual_flag :='A';
88805 END IF;
88806
88807 --
88808 -- bulk performance
88809 --
88810 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
88811 p_header_num => 0); -- 4262811
88812 --
88813 -- set accounting line options
88814 --
88815 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
88816 p_natural_side_code => 'D'
88817 , p_gain_or_loss_flag => 'N'
88818 , p_gl_transfer_mode_code => 'S'
88819 , p_acct_entry_type_code => 'A'
88820 , p_switch_side_flag => 'Y'
88821 , p_merge_duplicate_code => 'N'
88822 );
88823 --
88824 l_acc_rev_natural_side_code := 'C'; -- 4262811
88825 --
88826 --
88827 -- set accounting line type info
88828 --
88829 xla_ae_lines_pkg.SetAcctLineType
88830 (p_component_type => l_component_type
88831 ,p_event_type_code => l_event_type_code
88832 ,p_line_definition_owner_code => l_line_definition_owner_code
88833 ,p_line_definition_code => l_line_definition_code
88834 ,p_accounting_line_code => l_component_code
88835 ,p_accounting_line_type_code => l_component_type_code
88836 ,p_accounting_line_appl_id => l_component_appl_id
88837 ,p_amb_context_code => l_amb_context_code
88838 ,p_entity_code => l_entity_code
88839 ,p_event_class_code => l_event_class_code);
88840 --
88841 -- set accounting class
88842 --
88843 xla_ae_lines_pkg.SetAcctClass(
88844 p_accounting_class_code => 'MATERIAL_OVERHEAD_ABSORPTION'
88845 , p_ae_header_id => l_ae_header_id
88846 );
88847
88848 --
88849 -- set rounding class
88850 --
88851 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
88852 'MATERIAL_OVERHEAD_ABSORPTION';
88853
88854 --
88855 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
88856 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
88857 --
88858 -- bulk performance
88859 --
88860 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
88861
88862 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
88863 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
88864
88865 -- 4955764
88866 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
88867 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
88868
88869 -- 4458381 Public Sector Enh
88870
88871 --
88872 -- set accounting attributes for the line type
88873 --
88874 l_entered_amt_idx := 3;
88875 l_accted_amt_idx := 8;
88876 l_bflow_applied_to_amt_idx := NULL; -- 5132302
88877 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
88878 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
88879 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
88880 l_rec_acct_attrs.array_char_value(2) := p_source_12;
88881 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
88882 l_rec_acct_attrs.array_num_value(3) := p_source_18;
88883 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
88884 l_rec_acct_attrs.array_char_value(4) := p_source_15;
88885 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
88886 l_rec_acct_attrs.array_date_value(5) := p_source_19;
88887 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
88888 l_rec_acct_attrs.array_num_value(6) := p_source_20;
88889 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
88890 l_rec_acct_attrs.array_char_value(7) := p_source_21;
88891 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
88892 l_rec_acct_attrs.array_num_value(8) := p_source_22;
88893
88894 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
88895 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
88896
88897 ---------------------------------------------------------------------------------------------------------------
88898 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
88899 ---------------------------------------------------------------------------------------------------------------
88900 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
88901
88902 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
88903 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
88904
88905 IF xla_accounting_cache_pkg.GetValueChar
88906 (p_source_code => 'LEDGER_CATEGORY_CODE'
88907 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
88908 AND l_bflow_method_code = 'PRIOR_ENTRY'
88909 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
88910 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
88911 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
88912 )
88913 THEN
88914 xla_ae_lines_pkg.BflowUpgEntry
88915 (p_business_method_code => l_bflow_method_code
88916 ,p_business_class_code => l_bflow_class_code
88917 ,p_balance_type => l_balance_type_code);
88918 ELSE
88919 NULL;
88920 -- No business flow processing for business flow method of NONE.
88921 END IF;
88922
88923 --
88924 -- call analytical criteria
88925 --
88926
88927 --
88928 -- call description
88929 --
88930 -- No description or it is inherited.
88931 --
88932 -- call ADRs
88933 -- Bug 4922099
88934 --
88935 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
88936 (NVL(l_actual_upg_option, 'N') = 'O') OR
88937 (NVL(l_enc_upg_option, 'N') = 'O')
88938 )
88939 THEN
88940 NULL;
88941 --
88942 --
88943
88944 l_ccid := AcctDerRule_4(
88945 p_application_id => p_application_id
88946 , p_ae_header_id => l_ae_header_id
88947 , p_source_4 => p_source_4
88948 , x_transaction_coa_id => l_adr_transaction_coa_id
88949 , x_accounting_coa_id => l_adr_accounting_coa_id
88950 , x_value_type_code => l_adr_value_type_code
88951 , p_side => 'NA'
88952 );
88953
88954 xla_ae_lines_pkg.set_ccid(
88955 p_code_combination_id => l_ccid
88956 , p_value_type_code => l_adr_value_type_code
88957 , p_transaction_coa_id => l_adr_transaction_coa_id
88958 , p_accounting_coa_id => l_adr_accounting_coa_id
88959 , p_adr_code => 'CST_DEFAULT'
88960 , p_adr_type_code => 'S'
88961 , p_component_type => l_component_type
88962 , p_component_code => l_component_code
88963 , p_component_type_code => l_component_type_code
88964 , p_component_appl_id => l_component_appl_id
88965 , p_amb_context_code => l_amb_context_code
88966 , p_side => 'NA'
88967 );
88968
88969
88970 --
88971 --
88972 END IF;
88973 --
88974 -- Bug 4922099
88975 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
88976 (NVL(l_enc_upg_option, 'N') = 'O')
88977 ) AND
88978 (l_bflow_method_code = 'PRIOR_ENTRY')
88979 )
88980 THEN
88981 IF
88982 --
88983 1 = 2
88984 --
88985 THEN
88986 xla_accounting_err_pkg.build_message
88987 (p_appli_s_name => 'XLA'
88988 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
88989 ,p_token_1 => 'LINE_NUMBER'
88990 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
88991 ,p_token_2 => 'LINE_TYPE_NAME'
88992 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
88993 l_component_type
88994 ,l_component_code
88995 ,l_component_type_code
88996 ,l_component_appl_id
88997 ,l_amb_context_code
88998 ,l_entity_code
88999 ,l_event_class_code
89000 )
89001 ,p_token_3 => 'OWNER'
89002 ,p_value_3 => xla_lookups_pkg.get_meaning(
89003 p_lookup_type => 'XLA_OWNER_TYPE'
89004 ,p_lookup_code => l_component_type_code
89005 )
89006 ,p_token_4 => 'PRODUCT_NAME'
89007 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
89008 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
89009 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
89010 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
89011 ,p_ae_header_id => NULL
89012 );
89013
89014 IF (C_LEVEL_ERROR>= g_log_level) THEN
89015 trace
89016 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
89017 ,p_level => C_LEVEL_ERROR
89018 ,p_module => l_log_module);
89019 END IF;
89020 END IF;
89021 END IF;
89022 --
89023 --
89024 ------------------------------------------------------------------------------------------------
89025 -- 4219869 Business Flow
89026 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
89027 -- Prior Entry. Currently, the following code is always generated.
89028 ------------------------------------------------------------------------------------------------
89029 XLA_AE_LINES_PKG.ValidateCurrentLine;
89030
89031 ------------------------------------------------------------------------------------
89032 -- 4219869 Business Flow
89033 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
89034 ------------------------------------------------------------------------------------
89035 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
89036
89037 ----------------------------------------------------------------------------------
89038 -- 4219869 Business Flow
89039 -- Update journal entry status -- Need to generate this within IF <condition>
89040 ----------------------------------------------------------------------------------
89041 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
89042 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
89043 ,p_balance_type_code => l_balance_type_code
89044 );
89045
89046 -------------------------------------------------------------------------------------------
89047 -- 4262811 - Generate the Accrual Reversal lines
89048 -------------------------------------------------------------------------------------------
89049 BEGIN
89050 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
89051 (g_array_event(p_event_id).array_value_num('header_index'));
89052 IF l_acc_rev_flag IS NULL THEN
89053 l_acc_rev_flag := 'N';
89054 END IF;
89055 EXCEPTION
89056 WHEN OTHERS THEN
89057 l_acc_rev_flag := 'N';
89058 END;
89059 --
89060 IF (l_acc_rev_flag = 'Y') THEN
89061
89062 -- 4645092 ------------------------------------------------------------------------------
89063 -- To allow MPA report to determine if it should generate report process
89064 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
89065 ------------------------------------------------------------------------------------------
89066
89067 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
89068 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
89069 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
89070 -- call ADRs
89071 -- Bug 4922099
89072 --
89073 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
89074 (NVL(l_actual_upg_option, 'N') = 'O') OR
89075 (NVL(l_enc_upg_option, 'N') = 'O')
89076 )
89077 THEN
89078 NULL;
89079 --
89080 --
89081
89082 l_ccid := AcctDerRule_4(
89083 p_application_id => p_application_id
89084 , p_ae_header_id => l_ae_header_id
89085 , p_source_4 => p_source_4
89086 , x_transaction_coa_id => l_adr_transaction_coa_id
89087 , x_accounting_coa_id => l_adr_accounting_coa_id
89088 , x_value_type_code => l_adr_value_type_code
89089 , p_side => 'NA'
89090 );
89091
89092 xla_ae_lines_pkg.set_ccid(
89093 p_code_combination_id => l_ccid
89094 , p_value_type_code => l_adr_value_type_code
89095 , p_transaction_coa_id => l_adr_transaction_coa_id
89096 , p_accounting_coa_id => l_adr_accounting_coa_id
89097 , p_adr_code => 'CST_DEFAULT'
89098 , p_adr_type_code => 'S'
89099 , p_component_type => l_component_type
89100 , p_component_code => l_component_code
89101 , p_component_type_code => l_component_type_code
89102 , p_component_appl_id => l_component_appl_id
89103 , p_amb_context_code => l_amb_context_code
89104 , p_side => 'NA'
89105 );
89106
89107
89108 --
89109 --
89110 END IF;
89111
89112 --
89113 -- Update the line information that should be overwritten
89114 --
89115 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
89116 p_header_num => 1);
89117 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
89118
89119 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
89120
89121 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
89122 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
89123 END IF;
89124
89125 --
89126 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
89127 --
89128 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
89129 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
89130 ELSE
89131 ---------------------------------------------------------------------------------------------------
89132 -- 4262811a Switch Sign
89133 ---------------------------------------------------------------------------------------------------
89134 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
89135 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
89136 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
89137 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
89138 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
89139 -- 5132302
89140 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
89141 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
89142
89143 END IF;
89144
89145 -- 4955764
89146 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
89147 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
89148
89149
89150 XLA_AE_LINES_PKG.ValidateCurrentLine;
89151 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
89152
89153 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
89154 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
89155 ,p_balance_type_code => l_balance_type_code);
89156
89157 END IF;
89158
89159 -----------------------------------------------------------------------------------------
89160 -- 4262811 Multiperiod Accounting
89161 -----------------------------------------------------------------------------------------
89162 -- No MPA option is assigned.
89163
89164
89165 END IF;
89166 END IF;
89167 --
89168
89169 --
89170 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
89171 trace
89172 (p_msg => 'END of AcctLineType_162'
89173 ,p_level => C_LEVEL_PROCEDURE
89174 ,p_module => l_log_module);
89175 END IF;
89176 --
89177 EXCEPTION
89178 WHEN xla_exceptions_pkg.application_exception THEN
89179 RAISE;
89180 WHEN OTHERS THEN
89181 xla_exceptions_pkg.raise_message
89182 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_162');
89183 END AcctLineType_162;
89184 --
89185
89186 ---------------------------------------
89187 --
89188 -- PRIVATE FUNCTION
89189 -- AcctLineType_163
89190 --
89191 ---------------------------------------
89192 PROCEDURE AcctLineType_163 (
89193 p_application_id IN NUMBER
89194 ,p_event_id IN NUMBER
89195 ,p_calculate_acctd_flag IN VARCHAR2
89196 ,p_calculate_g_l_flag IN VARCHAR2
89197 ,p_actual_flag IN OUT VARCHAR2
89198 ,p_balance_type_code OUT VARCHAR2
89199 ,p_gain_or_loss_ref OUT VARCHAR2
89200
89201 --Cost Management Default Account
89202 , p_source_4 IN NUMBER
89203 --DISTRIBUTION_IDENTIFIER
89204 , p_source_11 IN NUMBER
89205 --Distribution Type
89206 , p_source_12 IN VARCHAR2
89207 , p_source_12_meaning IN VARCHAR2
89208 --Entered Currency Code
89209 , p_source_15 IN VARCHAR2
89210 --Entered Amount
89211 , p_source_18 IN NUMBER
89212 --Currency Conversion Date
89213 , p_source_19 IN DATE
89214 --Currency Conversion Rate
89215 , p_source_20 IN NUMBER
89216 --Currency Conversion Type
89217 , p_source_21 IN VARCHAR2
89218 --Accounted Amount
89219 , p_source_22 IN NUMBER
89220 --Accounting Line Type
89221 , p_source_24 IN NUMBER
89222 )
89223 IS
89224
89225 l_component_type VARCHAR2(80);
89226 l_component_code VARCHAR2(30);
89227 l_component_type_code VARCHAR2(1);
89228 l_component_appl_id INTEGER;
89229 l_amb_context_code VARCHAR2(30);
89230 l_entity_code VARCHAR2(30);
89231 l_event_class_code VARCHAR2(30);
89232 l_ae_header_id NUMBER;
89233 l_event_type_code VARCHAR2(30);
89234 l_line_definition_code VARCHAR2(30);
89235 l_line_definition_owner_code VARCHAR2(1);
89236 --
89237 -- adr variables
89238 l_segment VARCHAR2(30);
89239 l_ccid NUMBER;
89240 l_adr_transaction_coa_id NUMBER;
89241 l_adr_accounting_coa_id NUMBER;
89242 l_adr_flexfield_segment_code VARCHAR2(30);
89243 l_adr_flex_value_set_id NUMBER;
89244 l_adr_value_type_code VARCHAR2(30);
89245 l_adr_value_combination_id NUMBER;
89246 l_adr_value_segment_code VARCHAR2(30);
89247
89248 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
89249 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
89250 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
89251 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
89252
89253 -- 4262811 Variables ------------------------------------------------------------------------------------------
89254 l_entered_amt_idx NUMBER;
89255 l_accted_amt_idx NUMBER;
89256 l_acc_rev_flag VARCHAR2(1);
89257 l_accrual_line_num NUMBER;
89258 l_tmp_amt NUMBER;
89259 l_acc_rev_natural_side_code VARCHAR2(1);
89260
89261 l_num_entries NUMBER;
89262 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
89263 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
89264 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
89265 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
89266 l_recog_line_1 NUMBER;
89267 l_recog_line_2 NUMBER;
89268
89269 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
89270 l_bflow_applied_to_amt NUMBER; -- 5132302
89271 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
89272
89273 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
89274
89275 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
89276 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
89277
89278 ---------------------------------------------------------------------------------------------------------------
89279
89280
89281 --
89282 -- bulk performance
89283 --
89284 l_balance_type_code VARCHAR2(1);
89285 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
89286 l_log_module VARCHAR2(240);
89287
89288 --
89289 -- Upgrade strategy
89290 --
89291 l_actual_upg_option VARCHAR2(1);
89292 l_enc_upg_option VARCHAR2(1);
89293
89294 --
89295 BEGIN
89296 --
89297 IF g_log_enabled THEN
89298 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_163';
89299 END IF;
89300 --
89301 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
89302
89303 trace
89304 (p_msg => 'BEGIN of AcctLineType_163'
89305 ,p_level => C_LEVEL_PROCEDURE
89306 ,p_module => l_log_module);
89307
89308 END IF;
89309 --
89310 l_component_type := 'AMB_JLT';
89311 l_component_code := 'MATERIAL_OVERHEAD_ABSORPTION';
89312 l_component_type_code := 'S';
89313 l_component_appl_id := 707;
89314 l_amb_context_code := 'DEFAULT';
89315 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
89316 l_event_class_code := 'WIP_MTL';
89317 l_event_type_code := 'WIP_MTL_ALL';
89318 l_line_definition_owner_code := 'S';
89319 l_line_definition_code := 'WIP_MTL';
89320 --
89321 l_balance_type_code := 'A';
89322 l_segment := NULL;
89323 l_ccid := NULL;
89324 l_adr_transaction_coa_id := NULL;
89325 l_adr_accounting_coa_id := NULL;
89326 l_adr_flexfield_segment_code := NULL;
89327 l_adr_flex_value_set_id := NULL;
89328 l_adr_value_type_code := NULL;
89329 l_adr_value_combination_id := NULL;
89330 l_adr_value_segment_code := NULL;
89331
89332 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
89333 l_bflow_class_code := ''; -- 4219869 Business Flow
89334 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
89335 l_budgetary_control_flag := 'N';
89336
89337 l_bflow_applied_to_amt_idx := NULL; -- 5132302
89338 l_bflow_applied_to_amt := NULL; -- 5132302
89339 l_entered_amt_idx := NULL; -- 4262811
89340 l_accted_amt_idx := NULL; -- 4262811
89341 l_acc_rev_flag := NULL; -- 4262811
89342 l_accrual_line_num := NULL; -- 4262811
89343 l_tmp_amt := NULL; -- 4262811
89344 --
89345
89346 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
89347 l_balance_type_code <> 'B' THEN
89348 IF NVL(p_source_24,9E125) = 3
89349 THEN
89350
89351 --
89352 XLA_AE_LINES_PKG.SetNewLine;
89353
89354 p_balance_type_code := l_balance_type_code;
89355 -- set the flag so later we will know whether the gain loss line needs to be created
89356
89357 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
89358 p_actual_flag :='A';
89359 END IF;
89360
89361 --
89362 -- bulk performance
89363 --
89364 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
89365 p_header_num => 0); -- 4262811
89366 --
89367 -- set accounting line options
89368 --
89369 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
89370 p_natural_side_code => 'D'
89371 , p_gain_or_loss_flag => 'N'
89372 , p_gl_transfer_mode_code => 'S'
89373 , p_acct_entry_type_code => 'A'
89374 , p_switch_side_flag => 'Y'
89375 , p_merge_duplicate_code => 'N'
89376 );
89377 --
89378 l_acc_rev_natural_side_code := 'C'; -- 4262811
89379 --
89380 --
89381 -- set accounting line type info
89382 --
89383 xla_ae_lines_pkg.SetAcctLineType
89384 (p_component_type => l_component_type
89385 ,p_event_type_code => l_event_type_code
89386 ,p_line_definition_owner_code => l_line_definition_owner_code
89387 ,p_line_definition_code => l_line_definition_code
89388 ,p_accounting_line_code => l_component_code
89389 ,p_accounting_line_type_code => l_component_type_code
89390 ,p_accounting_line_appl_id => l_component_appl_id
89391 ,p_amb_context_code => l_amb_context_code
89392 ,p_entity_code => l_entity_code
89393 ,p_event_class_code => l_event_class_code);
89394 --
89395 -- set accounting class
89396 --
89397 xla_ae_lines_pkg.SetAcctClass(
89398 p_accounting_class_code => 'MATERIAL_OVERHEAD_ABSORPTION'
89399 , p_ae_header_id => l_ae_header_id
89400 );
89401
89402 --
89403 -- set rounding class
89404 --
89405 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
89406 'MATERIAL_OVERHEAD_ABSORPTION';
89407
89408 --
89409 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
89410 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
89411 --
89412 -- bulk performance
89413 --
89414 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
89415
89416 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
89417 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
89418
89419 -- 4955764
89420 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
89421 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
89422
89423 -- 4458381 Public Sector Enh
89424
89425 --
89426 -- set accounting attributes for the line type
89427 --
89428 l_entered_amt_idx := 3;
89429 l_accted_amt_idx := 8;
89430 l_bflow_applied_to_amt_idx := NULL; -- 5132302
89431 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
89432 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
89433 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
89434 l_rec_acct_attrs.array_char_value(2) := p_source_12;
89435 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
89436 l_rec_acct_attrs.array_num_value(3) := p_source_18;
89437 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
89438 l_rec_acct_attrs.array_char_value(4) := p_source_15;
89439 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
89440 l_rec_acct_attrs.array_date_value(5) := p_source_19;
89441 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
89442 l_rec_acct_attrs.array_num_value(6) := p_source_20;
89443 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
89444 l_rec_acct_attrs.array_char_value(7) := p_source_21;
89445 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
89446 l_rec_acct_attrs.array_num_value(8) := p_source_22;
89447
89448 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
89449 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
89450
89451 ---------------------------------------------------------------------------------------------------------------
89452 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
89453 ---------------------------------------------------------------------------------------------------------------
89454 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
89455
89456 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
89457 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
89458
89459 IF xla_accounting_cache_pkg.GetValueChar
89460 (p_source_code => 'LEDGER_CATEGORY_CODE'
89461 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
89462 AND l_bflow_method_code = 'PRIOR_ENTRY'
89463 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
89464 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
89465 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
89466 )
89467 THEN
89468 xla_ae_lines_pkg.BflowUpgEntry
89469 (p_business_method_code => l_bflow_method_code
89470 ,p_business_class_code => l_bflow_class_code
89471 ,p_balance_type => l_balance_type_code);
89472 ELSE
89473 NULL;
89474 -- No business flow processing for business flow method of NONE.
89475 END IF;
89476
89477 --
89478 -- call analytical criteria
89479 --
89480
89481 --
89482 -- call description
89483 --
89484 -- No description or it is inherited.
89485 --
89486 -- call ADRs
89487 -- Bug 4922099
89488 --
89489 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
89490 (NVL(l_actual_upg_option, 'N') = 'O') OR
89491 (NVL(l_enc_upg_option, 'N') = 'O')
89492 )
89493 THEN
89494 NULL;
89495 --
89496 --
89497
89498 l_ccid := AcctDerRule_4(
89499 p_application_id => p_application_id
89500 , p_ae_header_id => l_ae_header_id
89501 , p_source_4 => p_source_4
89502 , x_transaction_coa_id => l_adr_transaction_coa_id
89503 , x_accounting_coa_id => l_adr_accounting_coa_id
89504 , x_value_type_code => l_adr_value_type_code
89505 , p_side => 'NA'
89506 );
89507
89508 xla_ae_lines_pkg.set_ccid(
89509 p_code_combination_id => l_ccid
89510 , p_value_type_code => l_adr_value_type_code
89511 , p_transaction_coa_id => l_adr_transaction_coa_id
89512 , p_accounting_coa_id => l_adr_accounting_coa_id
89513 , p_adr_code => 'CST_DEFAULT'
89514 , p_adr_type_code => 'S'
89515 , p_component_type => l_component_type
89516 , p_component_code => l_component_code
89517 , p_component_type_code => l_component_type_code
89518 , p_component_appl_id => l_component_appl_id
89519 , p_amb_context_code => l_amb_context_code
89520 , p_side => 'NA'
89521 );
89522
89523
89524 --
89525 --
89526 END IF;
89527 --
89528 -- Bug 4922099
89529 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
89530 (NVL(l_enc_upg_option, 'N') = 'O')
89531 ) AND
89532 (l_bflow_method_code = 'PRIOR_ENTRY')
89533 )
89534 THEN
89535 IF
89536 --
89537 1 = 2
89538 --
89539 THEN
89540 xla_accounting_err_pkg.build_message
89541 (p_appli_s_name => 'XLA'
89542 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
89543 ,p_token_1 => 'LINE_NUMBER'
89544 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
89545 ,p_token_2 => 'LINE_TYPE_NAME'
89546 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
89547 l_component_type
89548 ,l_component_code
89549 ,l_component_type_code
89550 ,l_component_appl_id
89551 ,l_amb_context_code
89552 ,l_entity_code
89553 ,l_event_class_code
89554 )
89555 ,p_token_3 => 'OWNER'
89556 ,p_value_3 => xla_lookups_pkg.get_meaning(
89557 p_lookup_type => 'XLA_OWNER_TYPE'
89558 ,p_lookup_code => l_component_type_code
89559 )
89560 ,p_token_4 => 'PRODUCT_NAME'
89561 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
89562 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
89563 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
89564 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
89565 ,p_ae_header_id => NULL
89566 );
89567
89568 IF (C_LEVEL_ERROR>= g_log_level) THEN
89569 trace
89570 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
89571 ,p_level => C_LEVEL_ERROR
89572 ,p_module => l_log_module);
89573 END IF;
89574 END IF;
89575 END IF;
89576 --
89577 --
89578 ------------------------------------------------------------------------------------------------
89579 -- 4219869 Business Flow
89580 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
89581 -- Prior Entry. Currently, the following code is always generated.
89582 ------------------------------------------------------------------------------------------------
89583 XLA_AE_LINES_PKG.ValidateCurrentLine;
89584
89585 ------------------------------------------------------------------------------------
89586 -- 4219869 Business Flow
89587 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
89588 ------------------------------------------------------------------------------------
89589 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
89590
89591 ----------------------------------------------------------------------------------
89592 -- 4219869 Business Flow
89593 -- Update journal entry status -- Need to generate this within IF <condition>
89594 ----------------------------------------------------------------------------------
89595 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
89596 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
89597 ,p_balance_type_code => l_balance_type_code
89598 );
89599
89600 -------------------------------------------------------------------------------------------
89601 -- 4262811 - Generate the Accrual Reversal lines
89602 -------------------------------------------------------------------------------------------
89603 BEGIN
89604 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
89605 (g_array_event(p_event_id).array_value_num('header_index'));
89606 IF l_acc_rev_flag IS NULL THEN
89607 l_acc_rev_flag := 'N';
89608 END IF;
89609 EXCEPTION
89610 WHEN OTHERS THEN
89611 l_acc_rev_flag := 'N';
89612 END;
89613 --
89614 IF (l_acc_rev_flag = 'Y') THEN
89615
89616 -- 4645092 ------------------------------------------------------------------------------
89617 -- To allow MPA report to determine if it should generate report process
89618 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
89619 ------------------------------------------------------------------------------------------
89620
89621 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
89622 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
89623 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
89624 -- call ADRs
89625 -- Bug 4922099
89626 --
89627 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
89628 (NVL(l_actual_upg_option, 'N') = 'O') OR
89629 (NVL(l_enc_upg_option, 'N') = 'O')
89630 )
89631 THEN
89632 NULL;
89633 --
89634 --
89635
89636 l_ccid := AcctDerRule_4(
89637 p_application_id => p_application_id
89638 , p_ae_header_id => l_ae_header_id
89639 , p_source_4 => p_source_4
89640 , x_transaction_coa_id => l_adr_transaction_coa_id
89641 , x_accounting_coa_id => l_adr_accounting_coa_id
89642 , x_value_type_code => l_adr_value_type_code
89643 , p_side => 'NA'
89644 );
89645
89646 xla_ae_lines_pkg.set_ccid(
89647 p_code_combination_id => l_ccid
89648 , p_value_type_code => l_adr_value_type_code
89649 , p_transaction_coa_id => l_adr_transaction_coa_id
89650 , p_accounting_coa_id => l_adr_accounting_coa_id
89651 , p_adr_code => 'CST_DEFAULT'
89652 , p_adr_type_code => 'S'
89653 , p_component_type => l_component_type
89654 , p_component_code => l_component_code
89655 , p_component_type_code => l_component_type_code
89656 , p_component_appl_id => l_component_appl_id
89657 , p_amb_context_code => l_amb_context_code
89658 , p_side => 'NA'
89659 );
89660
89661
89662 --
89663 --
89664 END IF;
89665
89666 --
89667 -- Update the line information that should be overwritten
89668 --
89669 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
89670 p_header_num => 1);
89671 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
89672
89673 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
89674
89675 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
89676 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
89677 END IF;
89678
89679 --
89680 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
89681 --
89682 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
89683 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
89684 ELSE
89685 ---------------------------------------------------------------------------------------------------
89686 -- 4262811a Switch Sign
89687 ---------------------------------------------------------------------------------------------------
89688 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
89689 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
89690 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
89691 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
89692 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
89693 -- 5132302
89694 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
89695 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
89696
89697 END IF;
89698
89699 -- 4955764
89700 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
89701 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
89702
89703
89704 XLA_AE_LINES_PKG.ValidateCurrentLine;
89705 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
89706
89707 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
89708 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
89709 ,p_balance_type_code => l_balance_type_code);
89710
89711 END IF;
89712
89713 -----------------------------------------------------------------------------------------
89714 -- 4262811 Multiperiod Accounting
89715 -----------------------------------------------------------------------------------------
89716 -- No MPA option is assigned.
89717
89718
89719 END IF;
89720 END IF;
89721 --
89722
89723 --
89724 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
89725 trace
89726 (p_msg => 'END of AcctLineType_163'
89727 ,p_level => C_LEVEL_PROCEDURE
89728 ,p_module => l_log_module);
89729 END IF;
89730 --
89731 EXCEPTION
89732 WHEN xla_exceptions_pkg.application_exception THEN
89733 RAISE;
89734 WHEN OTHERS THEN
89735 xla_exceptions_pkg.raise_message
89736 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_163');
89737 END AcctLineType_163;
89738 --
89739
89740 ---------------------------------------
89741 --
89742 -- PRIVATE FUNCTION
89743 -- AcctLineType_164
89744 --
89745 ---------------------------------------
89746 PROCEDURE AcctLineType_164 (
89747 p_application_id IN NUMBER
89748 ,p_event_id IN NUMBER
89749 ,p_calculate_acctd_flag IN VARCHAR2
89750 ,p_calculate_g_l_flag IN VARCHAR2
89751 ,p_actual_flag IN OUT VARCHAR2
89752 ,p_balance_type_code OUT VARCHAR2
89753 ,p_gain_or_loss_ref OUT VARCHAR2
89754
89755 --Cost Management Default Account
89756 , p_source_4 IN NUMBER
89757 --DISTRIBUTION_IDENTIFIER
89758 , p_source_11 IN NUMBER
89759 --Distribution Type
89760 , p_source_12 IN VARCHAR2
89761 , p_source_12_meaning IN VARCHAR2
89762 --Entered Currency Code
89763 , p_source_15 IN VARCHAR2
89764 --Entered Amount
89765 , p_source_18 IN NUMBER
89766 --Currency Conversion Date
89767 , p_source_19 IN DATE
89768 --Currency Conversion Rate
89769 , p_source_20 IN NUMBER
89770 --Currency Conversion Type
89771 , p_source_21 IN VARCHAR2
89772 --Accounted Amount
89773 , p_source_22 IN NUMBER
89774 --Accounting Line Type
89775 , p_source_24 IN NUMBER
89776 )
89777 IS
89778
89779 l_component_type VARCHAR2(80);
89780 l_component_code VARCHAR2(30);
89781 l_component_type_code VARCHAR2(1);
89782 l_component_appl_id INTEGER;
89783 l_amb_context_code VARCHAR2(30);
89784 l_entity_code VARCHAR2(30);
89785 l_event_class_code VARCHAR2(30);
89786 l_ae_header_id NUMBER;
89787 l_event_type_code VARCHAR2(30);
89788 l_line_definition_code VARCHAR2(30);
89789 l_line_definition_owner_code VARCHAR2(1);
89790 --
89791 -- adr variables
89792 l_segment VARCHAR2(30);
89793 l_ccid NUMBER;
89794 l_adr_transaction_coa_id NUMBER;
89795 l_adr_accounting_coa_id NUMBER;
89796 l_adr_flexfield_segment_code VARCHAR2(30);
89797 l_adr_flex_value_set_id NUMBER;
89798 l_adr_value_type_code VARCHAR2(30);
89799 l_adr_value_combination_id NUMBER;
89800 l_adr_value_segment_code VARCHAR2(30);
89801
89802 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
89803 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
89804 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
89805 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
89806
89807 -- 4262811 Variables ------------------------------------------------------------------------------------------
89808 l_entered_amt_idx NUMBER;
89809 l_accted_amt_idx NUMBER;
89810 l_acc_rev_flag VARCHAR2(1);
89811 l_accrual_line_num NUMBER;
89812 l_tmp_amt NUMBER;
89813 l_acc_rev_natural_side_code VARCHAR2(1);
89814
89815 l_num_entries NUMBER;
89816 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
89817 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
89818 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
89819 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
89820 l_recog_line_1 NUMBER;
89821 l_recog_line_2 NUMBER;
89822
89823 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
89824 l_bflow_applied_to_amt NUMBER; -- 5132302
89825 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
89826
89827 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
89828
89829 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
89830 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
89831
89832 ---------------------------------------------------------------------------------------------------------------
89833
89834
89835 --
89836 -- bulk performance
89837 --
89838 l_balance_type_code VARCHAR2(1);
89839 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
89840 l_log_module VARCHAR2(240);
89841
89842 --
89843 -- Upgrade strategy
89844 --
89845 l_actual_upg_option VARCHAR2(1);
89846 l_enc_upg_option VARCHAR2(1);
89847
89848 --
89849 BEGIN
89850 --
89851 IF g_log_enabled THEN
89852 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_164';
89853 END IF;
89854 --
89855 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
89856
89857 trace
89858 (p_msg => 'BEGIN of AcctLineType_164'
89859 ,p_level => C_LEVEL_PROCEDURE
89860 ,p_module => l_log_module);
89861
89862 END IF;
89863 --
89864 l_component_type := 'AMB_JLT';
89865 l_component_code := 'MATERIAL_OVERHEAD_ABSORPTION';
89866 l_component_type_code := 'S';
89867 l_component_appl_id := 707;
89868 l_amb_context_code := 'DEFAULT';
89869 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
89870 l_event_class_code := 'DIR_INTERORG_SHIP';
89871 l_event_type_code := 'DIR_INTERORG_SHIP_ALL';
89872 l_line_definition_owner_code := 'S';
89873 l_line_definition_code := 'DIRECT_INTERORG_SHIP';
89874 --
89875 l_balance_type_code := 'A';
89876 l_segment := NULL;
89877 l_ccid := NULL;
89878 l_adr_transaction_coa_id := NULL;
89879 l_adr_accounting_coa_id := NULL;
89880 l_adr_flexfield_segment_code := NULL;
89881 l_adr_flex_value_set_id := NULL;
89882 l_adr_value_type_code := NULL;
89883 l_adr_value_combination_id := NULL;
89884 l_adr_value_segment_code := NULL;
89885
89886 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
89887 l_bflow_class_code := ''; -- 4219869 Business Flow
89888 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
89889 l_budgetary_control_flag := 'N';
89890
89891 l_bflow_applied_to_amt_idx := NULL; -- 5132302
89892 l_bflow_applied_to_amt := NULL; -- 5132302
89893 l_entered_amt_idx := NULL; -- 4262811
89894 l_accted_amt_idx := NULL; -- 4262811
89895 l_acc_rev_flag := NULL; -- 4262811
89896 l_accrual_line_num := NULL; -- 4262811
89897 l_tmp_amt := NULL; -- 4262811
89898 --
89899
89900 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
89901 l_balance_type_code <> 'B' THEN
89902 IF NVL(p_source_24,9E125) = 3
89903 THEN
89904
89905 --
89906 XLA_AE_LINES_PKG.SetNewLine;
89907
89908 p_balance_type_code := l_balance_type_code;
89909 -- set the flag so later we will know whether the gain loss line needs to be created
89910
89911 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
89912 p_actual_flag :='A';
89913 END IF;
89914
89915 --
89916 -- bulk performance
89917 --
89918 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
89919 p_header_num => 0); -- 4262811
89920 --
89921 -- set accounting line options
89922 --
89923 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
89924 p_natural_side_code => 'D'
89925 , p_gain_or_loss_flag => 'N'
89926 , p_gl_transfer_mode_code => 'S'
89927 , p_acct_entry_type_code => 'A'
89928 , p_switch_side_flag => 'Y'
89929 , p_merge_duplicate_code => 'N'
89930 );
89931 --
89932 l_acc_rev_natural_side_code := 'C'; -- 4262811
89933 --
89934 --
89935 -- set accounting line type info
89936 --
89937 xla_ae_lines_pkg.SetAcctLineType
89938 (p_component_type => l_component_type
89939 ,p_event_type_code => l_event_type_code
89940 ,p_line_definition_owner_code => l_line_definition_owner_code
89941 ,p_line_definition_code => l_line_definition_code
89942 ,p_accounting_line_code => l_component_code
89943 ,p_accounting_line_type_code => l_component_type_code
89944 ,p_accounting_line_appl_id => l_component_appl_id
89945 ,p_amb_context_code => l_amb_context_code
89946 ,p_entity_code => l_entity_code
89947 ,p_event_class_code => l_event_class_code);
89948 --
89949 -- set accounting class
89950 --
89951 xla_ae_lines_pkg.SetAcctClass(
89952 p_accounting_class_code => 'MATERIAL_OVERHEAD_ABSORPTION'
89953 , p_ae_header_id => l_ae_header_id
89954 );
89955
89956 --
89957 -- set rounding class
89958 --
89959 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
89960 'MATERIAL_OVERHEAD_ABSORPTION';
89961
89962 --
89963 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
89964 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
89965 --
89966 -- bulk performance
89967 --
89968 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
89969
89970 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
89971 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
89972
89973 -- 4955764
89974 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
89975 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
89976
89977 -- 4458381 Public Sector Enh
89978
89979 --
89980 -- set accounting attributes for the line type
89981 --
89982 l_entered_amt_idx := 3;
89983 l_accted_amt_idx := 8;
89984 l_bflow_applied_to_amt_idx := NULL; -- 5132302
89985 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
89986 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
89987 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
89988 l_rec_acct_attrs.array_char_value(2) := p_source_12;
89989 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
89990 l_rec_acct_attrs.array_num_value(3) := p_source_18;
89991 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
89992 l_rec_acct_attrs.array_char_value(4) := p_source_15;
89993 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
89994 l_rec_acct_attrs.array_date_value(5) := p_source_19;
89995 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
89996 l_rec_acct_attrs.array_num_value(6) := p_source_20;
89997 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
89998 l_rec_acct_attrs.array_char_value(7) := p_source_21;
89999 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
90000 l_rec_acct_attrs.array_num_value(8) := p_source_22;
90001
90002 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
90003 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
90004
90005 ---------------------------------------------------------------------------------------------------------------
90006 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
90007 ---------------------------------------------------------------------------------------------------------------
90008 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
90009
90010 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
90011 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
90012
90013 IF xla_accounting_cache_pkg.GetValueChar
90014 (p_source_code => 'LEDGER_CATEGORY_CODE'
90015 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
90016 AND l_bflow_method_code = 'PRIOR_ENTRY'
90017 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
90018 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
90019 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
90020 )
90021 THEN
90022 xla_ae_lines_pkg.BflowUpgEntry
90023 (p_business_method_code => l_bflow_method_code
90024 ,p_business_class_code => l_bflow_class_code
90025 ,p_balance_type => l_balance_type_code);
90026 ELSE
90027 NULL;
90028 -- No business flow processing for business flow method of NONE.
90029 END IF;
90030
90031 --
90032 -- call analytical criteria
90033 --
90034
90035 --
90036 -- call description
90037 --
90038 -- No description or it is inherited.
90039 --
90040 -- call ADRs
90041 -- Bug 4922099
90042 --
90043 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
90044 (NVL(l_actual_upg_option, 'N') = 'O') OR
90045 (NVL(l_enc_upg_option, 'N') = 'O')
90046 )
90047 THEN
90048 NULL;
90049 --
90050 --
90051
90052 l_ccid := AcctDerRule_4(
90053 p_application_id => p_application_id
90054 , p_ae_header_id => l_ae_header_id
90055 , p_source_4 => p_source_4
90056 , x_transaction_coa_id => l_adr_transaction_coa_id
90057 , x_accounting_coa_id => l_adr_accounting_coa_id
90058 , x_value_type_code => l_adr_value_type_code
90059 , p_side => 'NA'
90060 );
90061
90062 xla_ae_lines_pkg.set_ccid(
90063 p_code_combination_id => l_ccid
90064 , p_value_type_code => l_adr_value_type_code
90065 , p_transaction_coa_id => l_adr_transaction_coa_id
90066 , p_accounting_coa_id => l_adr_accounting_coa_id
90067 , p_adr_code => 'CST_DEFAULT'
90068 , p_adr_type_code => 'S'
90069 , p_component_type => l_component_type
90070 , p_component_code => l_component_code
90071 , p_component_type_code => l_component_type_code
90072 , p_component_appl_id => l_component_appl_id
90073 , p_amb_context_code => l_amb_context_code
90074 , p_side => 'NA'
90075 );
90076
90077
90078 --
90079 --
90080 END IF;
90081 --
90082 -- Bug 4922099
90083 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
90084 (NVL(l_enc_upg_option, 'N') = 'O')
90085 ) AND
90086 (l_bflow_method_code = 'PRIOR_ENTRY')
90087 )
90088 THEN
90089 IF
90090 --
90091 1 = 2
90092 --
90093 THEN
90094 xla_accounting_err_pkg.build_message
90095 (p_appli_s_name => 'XLA'
90096 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
90097 ,p_token_1 => 'LINE_NUMBER'
90098 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
90099 ,p_token_2 => 'LINE_TYPE_NAME'
90100 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
90101 l_component_type
90102 ,l_component_code
90103 ,l_component_type_code
90104 ,l_component_appl_id
90105 ,l_amb_context_code
90106 ,l_entity_code
90107 ,l_event_class_code
90108 )
90109 ,p_token_3 => 'OWNER'
90110 ,p_value_3 => xla_lookups_pkg.get_meaning(
90111 p_lookup_type => 'XLA_OWNER_TYPE'
90112 ,p_lookup_code => l_component_type_code
90113 )
90114 ,p_token_4 => 'PRODUCT_NAME'
90115 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
90116 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
90117 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
90118 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
90119 ,p_ae_header_id => NULL
90120 );
90121
90122 IF (C_LEVEL_ERROR>= g_log_level) THEN
90123 trace
90124 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
90125 ,p_level => C_LEVEL_ERROR
90126 ,p_module => l_log_module);
90127 END IF;
90128 END IF;
90129 END IF;
90130 --
90131 --
90132 ------------------------------------------------------------------------------------------------
90133 -- 4219869 Business Flow
90134 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
90135 -- Prior Entry. Currently, the following code is always generated.
90136 ------------------------------------------------------------------------------------------------
90137 XLA_AE_LINES_PKG.ValidateCurrentLine;
90138
90139 ------------------------------------------------------------------------------------
90140 -- 4219869 Business Flow
90141 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
90142 ------------------------------------------------------------------------------------
90143 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
90144
90145 ----------------------------------------------------------------------------------
90146 -- 4219869 Business Flow
90147 -- Update journal entry status -- Need to generate this within IF <condition>
90148 ----------------------------------------------------------------------------------
90149 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
90150 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
90151 ,p_balance_type_code => l_balance_type_code
90152 );
90153
90154 -------------------------------------------------------------------------------------------
90155 -- 4262811 - Generate the Accrual Reversal lines
90156 -------------------------------------------------------------------------------------------
90157 BEGIN
90158 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
90159 (g_array_event(p_event_id).array_value_num('header_index'));
90160 IF l_acc_rev_flag IS NULL THEN
90161 l_acc_rev_flag := 'N';
90162 END IF;
90163 EXCEPTION
90164 WHEN OTHERS THEN
90165 l_acc_rev_flag := 'N';
90166 END;
90167 --
90168 IF (l_acc_rev_flag = 'Y') THEN
90169
90170 -- 4645092 ------------------------------------------------------------------------------
90171 -- To allow MPA report to determine if it should generate report process
90172 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
90173 ------------------------------------------------------------------------------------------
90174
90175 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
90176 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
90177 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
90178 -- call ADRs
90179 -- Bug 4922099
90180 --
90181 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
90182 (NVL(l_actual_upg_option, 'N') = 'O') OR
90183 (NVL(l_enc_upg_option, 'N') = 'O')
90184 )
90185 THEN
90186 NULL;
90187 --
90188 --
90189
90190 l_ccid := AcctDerRule_4(
90191 p_application_id => p_application_id
90192 , p_ae_header_id => l_ae_header_id
90193 , p_source_4 => p_source_4
90194 , x_transaction_coa_id => l_adr_transaction_coa_id
90195 , x_accounting_coa_id => l_adr_accounting_coa_id
90196 , x_value_type_code => l_adr_value_type_code
90197 , p_side => 'NA'
90198 );
90199
90200 xla_ae_lines_pkg.set_ccid(
90201 p_code_combination_id => l_ccid
90202 , p_value_type_code => l_adr_value_type_code
90203 , p_transaction_coa_id => l_adr_transaction_coa_id
90204 , p_accounting_coa_id => l_adr_accounting_coa_id
90205 , p_adr_code => 'CST_DEFAULT'
90206 , p_adr_type_code => 'S'
90207 , p_component_type => l_component_type
90208 , p_component_code => l_component_code
90209 , p_component_type_code => l_component_type_code
90210 , p_component_appl_id => l_component_appl_id
90211 , p_amb_context_code => l_amb_context_code
90212 , p_side => 'NA'
90213 );
90214
90215
90216 --
90217 --
90218 END IF;
90219
90220 --
90221 -- Update the line information that should be overwritten
90222 --
90223 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
90224 p_header_num => 1);
90225 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
90226
90227 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
90228
90229 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
90230 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
90231 END IF;
90232
90233 --
90234 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
90235 --
90236 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
90237 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
90238 ELSE
90239 ---------------------------------------------------------------------------------------------------
90240 -- 4262811a Switch Sign
90241 ---------------------------------------------------------------------------------------------------
90242 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
90243 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
90244 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
90245 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
90246 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
90247 -- 5132302
90248 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
90249 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
90250
90251 END IF;
90252
90253 -- 4955764
90254 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
90255 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
90256
90257
90258 XLA_AE_LINES_PKG.ValidateCurrentLine;
90259 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
90260
90261 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
90262 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
90263 ,p_balance_type_code => l_balance_type_code);
90264
90265 END IF;
90266
90267 -----------------------------------------------------------------------------------------
90268 -- 4262811 Multiperiod Accounting
90269 -----------------------------------------------------------------------------------------
90270 -- No MPA option is assigned.
90271
90272
90273 END IF;
90274 END IF;
90275 --
90276
90277 --
90278 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
90279 trace
90280 (p_msg => 'END of AcctLineType_164'
90281 ,p_level => C_LEVEL_PROCEDURE
90282 ,p_module => l_log_module);
90283 END IF;
90284 --
90285 EXCEPTION
90286 WHEN xla_exceptions_pkg.application_exception THEN
90287 RAISE;
90288 WHEN OTHERS THEN
90289 xla_exceptions_pkg.raise_message
90290 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_164');
90291 END AcctLineType_164;
90292 --
90293
90294 ---------------------------------------
90295 --
90296 -- PRIVATE FUNCTION
90297 -- AcctLineType_165
90298 --
90299 ---------------------------------------
90300 PROCEDURE AcctLineType_165 (
90301 p_application_id IN NUMBER
90302 ,p_event_id IN NUMBER
90303 ,p_calculate_acctd_flag IN VARCHAR2
90304 ,p_calculate_g_l_flag IN VARCHAR2
90305 ,p_actual_flag IN OUT VARCHAR2
90306 ,p_balance_type_code OUT VARCHAR2
90307 ,p_gain_or_loss_ref OUT VARCHAR2
90308
90309 --Cost Management Default Account
90310 , p_source_4 IN NUMBER
90311 --DISTRIBUTION_IDENTIFIER
90312 , p_source_11 IN NUMBER
90313 --Distribution Type
90314 , p_source_12 IN VARCHAR2
90315 , p_source_12_meaning IN VARCHAR2
90316 --Entered Currency Code
90317 , p_source_15 IN VARCHAR2
90318 --Entered Amount
90319 , p_source_18 IN NUMBER
90320 --Currency Conversion Date
90321 , p_source_19 IN DATE
90322 --Currency Conversion Rate
90323 , p_source_20 IN NUMBER
90324 --Currency Conversion Type
90325 , p_source_21 IN VARCHAR2
90326 --Accounted Amount
90327 , p_source_22 IN NUMBER
90328 --Accounting Line Type
90329 , p_source_24 IN NUMBER
90330 )
90331 IS
90332
90333 l_component_type VARCHAR2(80);
90334 l_component_code VARCHAR2(30);
90335 l_component_type_code VARCHAR2(1);
90336 l_component_appl_id INTEGER;
90337 l_amb_context_code VARCHAR2(30);
90338 l_entity_code VARCHAR2(30);
90339 l_event_class_code VARCHAR2(30);
90340 l_ae_header_id NUMBER;
90341 l_event_type_code VARCHAR2(30);
90342 l_line_definition_code VARCHAR2(30);
90343 l_line_definition_owner_code VARCHAR2(1);
90344 --
90345 -- adr variables
90346 l_segment VARCHAR2(30);
90347 l_ccid NUMBER;
90348 l_adr_transaction_coa_id NUMBER;
90349 l_adr_accounting_coa_id NUMBER;
90350 l_adr_flexfield_segment_code VARCHAR2(30);
90351 l_adr_flex_value_set_id NUMBER;
90352 l_adr_value_type_code VARCHAR2(30);
90353 l_adr_value_combination_id NUMBER;
90354 l_adr_value_segment_code VARCHAR2(30);
90355
90356 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
90357 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
90358 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
90359 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
90360
90361 -- 4262811 Variables ------------------------------------------------------------------------------------------
90362 l_entered_amt_idx NUMBER;
90363 l_accted_amt_idx NUMBER;
90364 l_acc_rev_flag VARCHAR2(1);
90365 l_accrual_line_num NUMBER;
90366 l_tmp_amt NUMBER;
90367 l_acc_rev_natural_side_code VARCHAR2(1);
90368
90369 l_num_entries NUMBER;
90370 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
90371 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
90372 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
90373 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
90374 l_recog_line_1 NUMBER;
90375 l_recog_line_2 NUMBER;
90376
90377 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
90378 l_bflow_applied_to_amt NUMBER; -- 5132302
90379 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
90380
90381 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
90382
90383 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
90384 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
90385
90386 ---------------------------------------------------------------------------------------------------------------
90387
90388
90389 --
90390 -- bulk performance
90391 --
90392 l_balance_type_code VARCHAR2(1);
90393 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
90394 l_log_module VARCHAR2(240);
90395
90396 --
90397 -- Upgrade strategy
90398 --
90399 l_actual_upg_option VARCHAR2(1);
90400 l_enc_upg_option VARCHAR2(1);
90401
90402 --
90403 BEGIN
90404 --
90405 IF g_log_enabled THEN
90406 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_165';
90407 END IF;
90408 --
90409 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
90410
90411 trace
90412 (p_msg => 'BEGIN of AcctLineType_165'
90413 ,p_level => C_LEVEL_PROCEDURE
90414 ,p_module => l_log_module);
90415
90416 END IF;
90417 --
90418 l_component_type := 'AMB_JLT';
90419 l_component_code := 'MATERIAL_OVERHEAD_ABSORPTION';
90420 l_component_type_code := 'S';
90421 l_component_appl_id := 707;
90422 l_amb_context_code := 'DEFAULT';
90423 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
90424 l_event_class_code := 'USER_DEFINE';
90425 l_event_type_code := 'UDIR_INTERORG_SHIP_NO_TP';
90426 l_line_definition_owner_code := 'S';
90427 l_line_definition_code := 'USER_DIR_INTERORG_SHIP_NO_TP';
90428 --
90429 l_balance_type_code := 'A';
90430 l_segment := NULL;
90431 l_ccid := NULL;
90432 l_adr_transaction_coa_id := NULL;
90433 l_adr_accounting_coa_id := NULL;
90434 l_adr_flexfield_segment_code := NULL;
90435 l_adr_flex_value_set_id := NULL;
90436 l_adr_value_type_code := NULL;
90437 l_adr_value_combination_id := NULL;
90438 l_adr_value_segment_code := NULL;
90439
90440 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
90441 l_bflow_class_code := ''; -- 4219869 Business Flow
90442 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
90443 l_budgetary_control_flag := 'N';
90444
90445 l_bflow_applied_to_amt_idx := NULL; -- 5132302
90446 l_bflow_applied_to_amt := NULL; -- 5132302
90447 l_entered_amt_idx := NULL; -- 4262811
90448 l_accted_amt_idx := NULL; -- 4262811
90449 l_acc_rev_flag := NULL; -- 4262811
90450 l_accrual_line_num := NULL; -- 4262811
90451 l_tmp_amt := NULL; -- 4262811
90452 --
90453
90454 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
90455 l_balance_type_code <> 'B' THEN
90456 IF NVL(p_source_24,9E125) = 3
90457 THEN
90458
90459 --
90460 XLA_AE_LINES_PKG.SetNewLine;
90461
90462 p_balance_type_code := l_balance_type_code;
90463 -- set the flag so later we will know whether the gain loss line needs to be created
90464
90465 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
90466 p_actual_flag :='A';
90467 END IF;
90468
90469 --
90470 -- bulk performance
90471 --
90472 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
90473 p_header_num => 0); -- 4262811
90474 --
90475 -- set accounting line options
90476 --
90477 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
90478 p_natural_side_code => 'D'
90479 , p_gain_or_loss_flag => 'N'
90480 , p_gl_transfer_mode_code => 'S'
90481 , p_acct_entry_type_code => 'A'
90482 , p_switch_side_flag => 'Y'
90483 , p_merge_duplicate_code => 'N'
90484 );
90485 --
90486 l_acc_rev_natural_side_code := 'C'; -- 4262811
90487 --
90488 --
90489 -- set accounting line type info
90490 --
90491 xla_ae_lines_pkg.SetAcctLineType
90492 (p_component_type => l_component_type
90493 ,p_event_type_code => l_event_type_code
90494 ,p_line_definition_owner_code => l_line_definition_owner_code
90495 ,p_line_definition_code => l_line_definition_code
90496 ,p_accounting_line_code => l_component_code
90497 ,p_accounting_line_type_code => l_component_type_code
90498 ,p_accounting_line_appl_id => l_component_appl_id
90499 ,p_amb_context_code => l_amb_context_code
90500 ,p_entity_code => l_entity_code
90501 ,p_event_class_code => l_event_class_code);
90502 --
90503 -- set accounting class
90504 --
90505 xla_ae_lines_pkg.SetAcctClass(
90506 p_accounting_class_code => 'MATERIAL_OVERHEAD_ABSORPTION'
90507 , p_ae_header_id => l_ae_header_id
90508 );
90509
90510 --
90511 -- set rounding class
90512 --
90513 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
90514 'MATERIAL_OVERHEAD_ABSORPTION';
90515
90516 --
90517 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
90518 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
90519 --
90520 -- bulk performance
90521 --
90522 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
90523
90524 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
90525 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
90526
90527 -- 4955764
90528 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
90529 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
90530
90531 -- 4458381 Public Sector Enh
90532
90533 --
90534 -- set accounting attributes for the line type
90535 --
90536 l_entered_amt_idx := 3;
90537 l_accted_amt_idx := 8;
90538 l_bflow_applied_to_amt_idx := NULL; -- 5132302
90539 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
90540 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
90541 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
90542 l_rec_acct_attrs.array_char_value(2) := p_source_12;
90543 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
90544 l_rec_acct_attrs.array_num_value(3) := p_source_18;
90545 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
90546 l_rec_acct_attrs.array_char_value(4) := p_source_15;
90547 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
90548 l_rec_acct_attrs.array_date_value(5) := p_source_19;
90549 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
90550 l_rec_acct_attrs.array_num_value(6) := p_source_20;
90551 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
90552 l_rec_acct_attrs.array_char_value(7) := p_source_21;
90553 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
90554 l_rec_acct_attrs.array_num_value(8) := p_source_22;
90555
90556 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
90557 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
90558
90559 ---------------------------------------------------------------------------------------------------------------
90560 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
90561 ---------------------------------------------------------------------------------------------------------------
90562 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
90563
90564 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
90565 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
90566
90567 IF xla_accounting_cache_pkg.GetValueChar
90568 (p_source_code => 'LEDGER_CATEGORY_CODE'
90569 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
90570 AND l_bflow_method_code = 'PRIOR_ENTRY'
90571 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
90572 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
90573 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
90574 )
90575 THEN
90576 xla_ae_lines_pkg.BflowUpgEntry
90577 (p_business_method_code => l_bflow_method_code
90578 ,p_business_class_code => l_bflow_class_code
90579 ,p_balance_type => l_balance_type_code);
90580 ELSE
90581 NULL;
90582 -- No business flow processing for business flow method of NONE.
90583 END IF;
90584
90585 --
90586 -- call analytical criteria
90587 --
90588
90589 --
90590 -- call description
90591 --
90592 -- No description or it is inherited.
90593 --
90594 -- call ADRs
90595 -- Bug 4922099
90596 --
90597 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
90598 (NVL(l_actual_upg_option, 'N') = 'O') OR
90599 (NVL(l_enc_upg_option, 'N') = 'O')
90600 )
90601 THEN
90602 NULL;
90603 --
90604 --
90605
90606 l_ccid := AcctDerRule_4(
90607 p_application_id => p_application_id
90608 , p_ae_header_id => l_ae_header_id
90609 , p_source_4 => p_source_4
90610 , x_transaction_coa_id => l_adr_transaction_coa_id
90611 , x_accounting_coa_id => l_adr_accounting_coa_id
90612 , x_value_type_code => l_adr_value_type_code
90613 , p_side => 'NA'
90614 );
90615
90616 xla_ae_lines_pkg.set_ccid(
90617 p_code_combination_id => l_ccid
90618 , p_value_type_code => l_adr_value_type_code
90619 , p_transaction_coa_id => l_adr_transaction_coa_id
90620 , p_accounting_coa_id => l_adr_accounting_coa_id
90621 , p_adr_code => 'CST_DEFAULT'
90622 , p_adr_type_code => 'S'
90623 , p_component_type => l_component_type
90624 , p_component_code => l_component_code
90625 , p_component_type_code => l_component_type_code
90626 , p_component_appl_id => l_component_appl_id
90627 , p_amb_context_code => l_amb_context_code
90628 , p_side => 'NA'
90629 );
90630
90631
90632 --
90633 --
90634 END IF;
90635 --
90636 -- Bug 4922099
90637 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
90638 (NVL(l_enc_upg_option, 'N') = 'O')
90639 ) AND
90640 (l_bflow_method_code = 'PRIOR_ENTRY')
90641 )
90642 THEN
90643 IF
90644 --
90645 1 = 2
90646 --
90647 THEN
90648 xla_accounting_err_pkg.build_message
90649 (p_appli_s_name => 'XLA'
90650 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
90651 ,p_token_1 => 'LINE_NUMBER'
90652 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
90653 ,p_token_2 => 'LINE_TYPE_NAME'
90654 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
90655 l_component_type
90656 ,l_component_code
90657 ,l_component_type_code
90658 ,l_component_appl_id
90659 ,l_amb_context_code
90660 ,l_entity_code
90661 ,l_event_class_code
90662 )
90663 ,p_token_3 => 'OWNER'
90664 ,p_value_3 => xla_lookups_pkg.get_meaning(
90665 p_lookup_type => 'XLA_OWNER_TYPE'
90666 ,p_lookup_code => l_component_type_code
90667 )
90668 ,p_token_4 => 'PRODUCT_NAME'
90669 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
90670 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
90671 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
90672 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
90673 ,p_ae_header_id => NULL
90674 );
90675
90676 IF (C_LEVEL_ERROR>= g_log_level) THEN
90677 trace
90678 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
90679 ,p_level => C_LEVEL_ERROR
90680 ,p_module => l_log_module);
90681 END IF;
90682 END IF;
90683 END IF;
90684 --
90685 --
90686 ------------------------------------------------------------------------------------------------
90687 -- 4219869 Business Flow
90688 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
90689 -- Prior Entry. Currently, the following code is always generated.
90690 ------------------------------------------------------------------------------------------------
90691 XLA_AE_LINES_PKG.ValidateCurrentLine;
90692
90693 ------------------------------------------------------------------------------------
90694 -- 4219869 Business Flow
90695 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
90696 ------------------------------------------------------------------------------------
90697 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
90698
90699 ----------------------------------------------------------------------------------
90700 -- 4219869 Business Flow
90701 -- Update journal entry status -- Need to generate this within IF <condition>
90702 ----------------------------------------------------------------------------------
90703 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
90704 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
90705 ,p_balance_type_code => l_balance_type_code
90706 );
90707
90708 -------------------------------------------------------------------------------------------
90709 -- 4262811 - Generate the Accrual Reversal lines
90710 -------------------------------------------------------------------------------------------
90711 BEGIN
90712 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
90713 (g_array_event(p_event_id).array_value_num('header_index'));
90714 IF l_acc_rev_flag IS NULL THEN
90715 l_acc_rev_flag := 'N';
90716 END IF;
90717 EXCEPTION
90718 WHEN OTHERS THEN
90719 l_acc_rev_flag := 'N';
90720 END;
90721 --
90722 IF (l_acc_rev_flag = 'Y') THEN
90723
90724 -- 4645092 ------------------------------------------------------------------------------
90725 -- To allow MPA report to determine if it should generate report process
90726 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
90727 ------------------------------------------------------------------------------------------
90728
90729 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
90730 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
90731 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
90732 -- call ADRs
90733 -- Bug 4922099
90734 --
90735 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
90736 (NVL(l_actual_upg_option, 'N') = 'O') OR
90737 (NVL(l_enc_upg_option, 'N') = 'O')
90738 )
90739 THEN
90740 NULL;
90741 --
90742 --
90743
90744 l_ccid := AcctDerRule_4(
90745 p_application_id => p_application_id
90746 , p_ae_header_id => l_ae_header_id
90747 , p_source_4 => p_source_4
90748 , x_transaction_coa_id => l_adr_transaction_coa_id
90749 , x_accounting_coa_id => l_adr_accounting_coa_id
90750 , x_value_type_code => l_adr_value_type_code
90751 , p_side => 'NA'
90752 );
90753
90754 xla_ae_lines_pkg.set_ccid(
90755 p_code_combination_id => l_ccid
90756 , p_value_type_code => l_adr_value_type_code
90757 , p_transaction_coa_id => l_adr_transaction_coa_id
90758 , p_accounting_coa_id => l_adr_accounting_coa_id
90759 , p_adr_code => 'CST_DEFAULT'
90760 , p_adr_type_code => 'S'
90761 , p_component_type => l_component_type
90762 , p_component_code => l_component_code
90763 , p_component_type_code => l_component_type_code
90764 , p_component_appl_id => l_component_appl_id
90765 , p_amb_context_code => l_amb_context_code
90766 , p_side => 'NA'
90767 );
90768
90769
90770 --
90771 --
90772 END IF;
90773
90774 --
90775 -- Update the line information that should be overwritten
90776 --
90777 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
90778 p_header_num => 1);
90779 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
90780
90781 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
90782
90783 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
90784 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
90785 END IF;
90786
90787 --
90788 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
90789 --
90790 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
90791 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
90792 ELSE
90793 ---------------------------------------------------------------------------------------------------
90794 -- 4262811a Switch Sign
90795 ---------------------------------------------------------------------------------------------------
90796 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
90797 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
90798 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
90799 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
90800 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
90801 -- 5132302
90802 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
90803 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
90804
90805 END IF;
90806
90807 -- 4955764
90808 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
90809 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
90810
90811
90812 XLA_AE_LINES_PKG.ValidateCurrentLine;
90813 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
90814
90815 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
90816 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
90817 ,p_balance_type_code => l_balance_type_code);
90818
90819 END IF;
90820
90821 -----------------------------------------------------------------------------------------
90822 -- 4262811 Multiperiod Accounting
90823 -----------------------------------------------------------------------------------------
90824 -- No MPA option is assigned.
90825
90826
90827 END IF;
90828 END IF;
90829 --
90830
90831 --
90832 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
90833 trace
90834 (p_msg => 'END of AcctLineType_165'
90835 ,p_level => C_LEVEL_PROCEDURE
90836 ,p_module => l_log_module);
90837 END IF;
90838 --
90839 EXCEPTION
90840 WHEN xla_exceptions_pkg.application_exception THEN
90841 RAISE;
90842 WHEN OTHERS THEN
90843 xla_exceptions_pkg.raise_message
90844 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_165');
90845 END AcctLineType_165;
90846 --
90847
90848 ---------------------------------------
90849 --
90850 -- PRIVATE FUNCTION
90851 -- AcctLineType_166
90852 --
90853 ---------------------------------------
90854 PROCEDURE AcctLineType_166 (
90855 p_application_id IN NUMBER
90856 ,p_event_id IN NUMBER
90857 ,p_calculate_acctd_flag IN VARCHAR2
90858 ,p_calculate_g_l_flag IN VARCHAR2
90859 ,p_actual_flag IN OUT VARCHAR2
90860 ,p_balance_type_code OUT VARCHAR2
90861 ,p_gain_or_loss_ref OUT VARCHAR2
90862
90863 --Cost Management Default Account
90864 , p_source_4 IN NUMBER
90865 --Applied to Application ID
90866 , p_source_6 IN NUMBER
90867 --Applied to Distribution Link Type
90868 , p_source_7 IN VARCHAR2
90869 --Applied to Entity Code
90870 , p_source_8 IN VARCHAR2
90871 --Applied To Purchase Document Identifier
90872 , p_source_10 IN NUMBER
90873 --DISTRIBUTION_IDENTIFIER
90874 , p_source_11 IN NUMBER
90875 --Distribution Type
90876 , p_source_12 IN VARCHAR2
90877 , p_source_12_meaning IN VARCHAR2
90878 --PO Budget Account
90879 , p_source_13 IN NUMBER
90880 --Encumbrance Reversal Amount Entered
90881 , p_source_14 IN NUMBER
90882 --Entered Currency Code
90883 , p_source_15 IN VARCHAR2
90884 --Transaction Encumbrance Reversal Amount
90885 , p_source_16 IN NUMBER
90886 --Entered Amount
90887 , p_source_18 IN NUMBER
90888 --Currency Conversion Date
90889 , p_source_19 IN DATE
90890 --Currency Conversion Rate
90891 , p_source_20 IN NUMBER
90892 --Currency Conversion Type
90893 , p_source_21 IN VARCHAR2
90894 --Accounted Amount
90895 , p_source_22 IN NUMBER
90896 --Purchasing Encumbrance Type Identifier
90897 , p_source_23 IN NUMBER
90898 --Accounting Line Type
90899 , p_source_24 IN NUMBER
90900 --Costing Encumbrance Upgrade Option
90901 , p_source_27 IN VARCHAR2
90902 --TXN_PO_DISTRIBUTION_ID
90903 , p_source_28 IN NUMBER
90904 )
90905 IS
90906
90907 l_component_type VARCHAR2(80);
90908 l_component_code VARCHAR2(30);
90909 l_component_type_code VARCHAR2(1);
90910 l_component_appl_id INTEGER;
90911 l_amb_context_code VARCHAR2(30);
90912 l_entity_code VARCHAR2(30);
90913 l_event_class_code VARCHAR2(30);
90914 l_ae_header_id NUMBER;
90915 l_event_type_code VARCHAR2(30);
90916 l_line_definition_code VARCHAR2(30);
90917 l_line_definition_owner_code VARCHAR2(1);
90918 --
90919 -- adr variables
90920 l_segment VARCHAR2(30);
90921 l_ccid NUMBER;
90922 l_adr_transaction_coa_id NUMBER;
90923 l_adr_accounting_coa_id NUMBER;
90924 l_adr_flexfield_segment_code VARCHAR2(30);
90925 l_adr_flex_value_set_id NUMBER;
90926 l_adr_value_type_code VARCHAR2(30);
90927 l_adr_value_combination_id NUMBER;
90928 l_adr_value_segment_code VARCHAR2(30);
90929
90930 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
90931 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
90932 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
90933 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
90934
90935 -- 4262811 Variables ------------------------------------------------------------------------------------------
90936 l_entered_amt_idx NUMBER;
90937 l_accted_amt_idx NUMBER;
90938 l_acc_rev_flag VARCHAR2(1);
90939 l_accrual_line_num NUMBER;
90940 l_tmp_amt NUMBER;
90941 l_acc_rev_natural_side_code VARCHAR2(1);
90942
90943 l_num_entries NUMBER;
90944 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
90945 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
90946 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
90947 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
90948 l_recog_line_1 NUMBER;
90949 l_recog_line_2 NUMBER;
90950
90951 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
90952 l_bflow_applied_to_amt NUMBER; -- 5132302
90953 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
90954
90955 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
90956
90957 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
90958 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
90959
90960 ---------------------------------------------------------------------------------------------------------------
90961
90962
90963 --
90964 -- bulk performance
90965 --
90966 l_balance_type_code VARCHAR2(1);
90967 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
90968 l_log_module VARCHAR2(240);
90969
90970 --
90971 -- Upgrade strategy
90972 --
90973 l_actual_upg_option VARCHAR2(1);
90974 l_enc_upg_option VARCHAR2(1);
90975
90976 --
90977 BEGIN
90978 --
90979 IF g_log_enabled THEN
90980 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_166';
90981 END IF;
90982 --
90983 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
90984
90985 trace
90986 (p_msg => 'BEGIN of AcctLineType_166'
90987 ,p_level => C_LEVEL_PROCEDURE
90988 ,p_module => l_log_module);
90989
90990 END IF;
90991 --
90992 l_component_type := 'AMB_JLT';
90993 l_component_code := 'MATERIAL_OVERHEAD_ABSORPTION';
90994 l_component_type_code := 'S';
90995 l_component_appl_id := 707;
90996 l_amb_context_code := 'DEFAULT';
90997 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
90998 l_event_class_code := 'PURCHASE_ORDER';
90999 l_event_type_code := 'PURCHASE_ORDER_ALL';
91000 l_line_definition_owner_code := 'S';
91001 l_line_definition_code := 'PURCHASE_ORDER';
91002 --
91003 l_balance_type_code := 'A';
91004 l_segment := NULL;
91005 l_ccid := NULL;
91006 l_adr_transaction_coa_id := NULL;
91007 l_adr_accounting_coa_id := NULL;
91008 l_adr_flexfield_segment_code := NULL;
91009 l_adr_flex_value_set_id := NULL;
91010 l_adr_value_type_code := NULL;
91011 l_adr_value_combination_id := NULL;
91012 l_adr_value_segment_code := NULL;
91013
91014 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
91015 l_bflow_class_code := ''; -- 4219869 Business Flow
91016 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
91017 l_budgetary_control_flag := 'N';
91018
91019 l_bflow_applied_to_amt_idx := NULL; -- 5132302
91020 l_bflow_applied_to_amt := NULL; -- 5132302
91021 l_entered_amt_idx := NULL; -- 4262811
91022 l_accted_amt_idx := NULL; -- 4262811
91023 l_acc_rev_flag := NULL; -- 4262811
91024 l_accrual_line_num := NULL; -- 4262811
91025 l_tmp_amt := NULL; -- 4262811
91026 --
91027
91028 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
91029 l_balance_type_code <> 'B' THEN
91030 IF NVL(p_source_24,9E125) = 3
91031 THEN
91032
91033 --
91034 XLA_AE_LINES_PKG.SetNewLine;
91035
91036 p_balance_type_code := l_balance_type_code;
91037 -- set the flag so later we will know whether the gain loss line needs to be created
91038
91039 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
91040 p_actual_flag :='A';
91041 END IF;
91042
91043 --
91044 -- bulk performance
91045 --
91046 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
91047 p_header_num => 0); -- 4262811
91048 --
91049 -- set accounting line options
91050 --
91051 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
91052 p_natural_side_code => 'D'
91053 , p_gain_or_loss_flag => 'N'
91054 , p_gl_transfer_mode_code => 'S'
91055 , p_acct_entry_type_code => 'A'
91056 , p_switch_side_flag => 'Y'
91057 , p_merge_duplicate_code => 'N'
91058 );
91059 --
91060 l_acc_rev_natural_side_code := 'C'; -- 4262811
91061 --
91062 --
91063 -- set accounting line type info
91064 --
91065 xla_ae_lines_pkg.SetAcctLineType
91066 (p_component_type => l_component_type
91067 ,p_event_type_code => l_event_type_code
91068 ,p_line_definition_owner_code => l_line_definition_owner_code
91069 ,p_line_definition_code => l_line_definition_code
91070 ,p_accounting_line_code => l_component_code
91071 ,p_accounting_line_type_code => l_component_type_code
91072 ,p_accounting_line_appl_id => l_component_appl_id
91073 ,p_amb_context_code => l_amb_context_code
91074 ,p_entity_code => l_entity_code
91075 ,p_event_class_code => l_event_class_code);
91076 --
91077 -- set accounting class
91078 --
91079 xla_ae_lines_pkg.SetAcctClass(
91080 p_accounting_class_code => 'MATERIAL_OVERHEAD_ABSORPTION'
91081 , p_ae_header_id => l_ae_header_id
91082 );
91083
91084 --
91085 -- set rounding class
91086 --
91087 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
91088 'MATERIAL_OVERHEAD_ABSORPTION';
91089
91090 --
91091 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
91092 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
91093 --
91094 -- bulk performance
91095 --
91096 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
91097
91098 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
91099 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
91100
91101 -- 4955764
91102 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
91103 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
91104
91105 -- 4458381 Public Sector Enh
91106
91107 --
91108 -- set accounting attributes for the line type
91109 --
91110 l_entered_amt_idx := 17;
91111 l_accted_amt_idx := 22;
91112 l_bflow_applied_to_amt_idx := NULL; -- 5132302
91113 l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
91114 l_rec_acct_attrs.array_num_value(1) := p_source_6;
91115 l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
91116 l_rec_acct_attrs.array_char_value(2) := p_source_7;
91117 l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
91118 l_rec_acct_attrs.array_char_value(3) := p_source_8;
91119 l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
91120 l_rec_acct_attrs.array_num_value(4) := to_char(p_source_28);
91121 l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
91122 l_rec_acct_attrs.array_num_value(5) := to_char(p_source_10);
91123 l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
91124 l_rec_acct_attrs.array_num_value(6) := to_char(p_source_11);
91125 l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
91126 l_rec_acct_attrs.array_char_value(7) := p_source_12;
91127 l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
91128 l_rec_acct_attrs.array_num_value(8) := TO_NUMBER(p_source_13);
91129 l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
91130 l_rec_acct_attrs.array_num_value(9) := p_source_14;
91131 l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
91132 l_rec_acct_attrs.array_char_value(10) := p_source_15;
91133 l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
91134 l_rec_acct_attrs.array_num_value(11) := p_source_16;
91135 l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
91136 l_rec_acct_attrs.array_num_value(12) := TO_NUMBER(p_source_13);
91137 l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
91138 l_rec_acct_attrs.array_num_value(13) := p_source_14;
91139 l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
91140 l_rec_acct_attrs.array_char_value(14) := p_source_15;
91141 l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
91142 l_rec_acct_attrs.array_num_value(15) := p_source_16;
91143 l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
91144 l_rec_acct_attrs.array_char_value(16) := p_source_27;
91145 l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
91146 l_rec_acct_attrs.array_num_value(17) := p_source_18;
91147 l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
91148 l_rec_acct_attrs.array_char_value(18) := p_source_15;
91149 l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
91150 l_rec_acct_attrs.array_date_value(19) := p_source_19;
91151 l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
91152 l_rec_acct_attrs.array_num_value(20) := p_source_20;
91153 l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
91154 l_rec_acct_attrs.array_char_value(21) := p_source_21;
91155 l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
91156 l_rec_acct_attrs.array_num_value(22) := p_source_22;
91157 l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
91158 l_rec_acct_attrs.array_num_value(23) := p_source_23;
91159 l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
91160 l_rec_acct_attrs.array_num_value(24) := p_source_23;
91161
91162 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
91163 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
91164
91165 ---------------------------------------------------------------------------------------------------------------
91166 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
91167 ---------------------------------------------------------------------------------------------------------------
91168 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
91169
91170 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
91171 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
91172
91173 IF xla_accounting_cache_pkg.GetValueChar
91174 (p_source_code => 'LEDGER_CATEGORY_CODE'
91175 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
91176 AND l_bflow_method_code = 'PRIOR_ENTRY'
91177 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
91178 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
91179 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
91180 )
91181 THEN
91182 xla_ae_lines_pkg.BflowUpgEntry
91183 (p_business_method_code => l_bflow_method_code
91184 ,p_business_class_code => l_bflow_class_code
91185 ,p_balance_type => l_balance_type_code);
91186 ELSE
91187 NULL;
91188 -- No business flow processing for business flow method of NONE.
91189 END IF;
91190
91191 --
91192 -- call analytical criteria
91193 --
91194
91195 --
91196 -- call description
91197 --
91198 -- No description or it is inherited.
91199 --
91200 -- call ADRs
91201 -- Bug 4922099
91202 --
91203 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
91204 (NVL(l_actual_upg_option, 'N') = 'O') OR
91205 (NVL(l_enc_upg_option, 'N') = 'O')
91206 )
91207 THEN
91208 NULL;
91209 --
91210 --
91211
91212 l_ccid := AcctDerRule_4(
91213 p_application_id => p_application_id
91214 , p_ae_header_id => l_ae_header_id
91215 , p_source_4 => p_source_4
91216 , x_transaction_coa_id => l_adr_transaction_coa_id
91217 , x_accounting_coa_id => l_adr_accounting_coa_id
91218 , x_value_type_code => l_adr_value_type_code
91219 , p_side => 'NA'
91220 );
91221
91222 xla_ae_lines_pkg.set_ccid(
91223 p_code_combination_id => l_ccid
91224 , p_value_type_code => l_adr_value_type_code
91225 , p_transaction_coa_id => l_adr_transaction_coa_id
91226 , p_accounting_coa_id => l_adr_accounting_coa_id
91227 , p_adr_code => 'CST_DEFAULT'
91228 , p_adr_type_code => 'S'
91229 , p_component_type => l_component_type
91230 , p_component_code => l_component_code
91231 , p_component_type_code => l_component_type_code
91232 , p_component_appl_id => l_component_appl_id
91233 , p_amb_context_code => l_amb_context_code
91234 , p_side => 'NA'
91235 );
91236
91237
91238 --
91239 --
91240 END IF;
91241 --
91242 -- Bug 4922099
91243 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
91244 (NVL(l_enc_upg_option, 'N') = 'O')
91245 ) AND
91246 (l_bflow_method_code = 'PRIOR_ENTRY')
91247 )
91248 THEN
91249 IF
91250 --
91251 1 = 2
91252 --
91253 THEN
91254 xla_accounting_err_pkg.build_message
91255 (p_appli_s_name => 'XLA'
91256 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
91257 ,p_token_1 => 'LINE_NUMBER'
91258 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
91259 ,p_token_2 => 'LINE_TYPE_NAME'
91260 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
91261 l_component_type
91262 ,l_component_code
91263 ,l_component_type_code
91264 ,l_component_appl_id
91265 ,l_amb_context_code
91266 ,l_entity_code
91267 ,l_event_class_code
91268 )
91269 ,p_token_3 => 'OWNER'
91270 ,p_value_3 => xla_lookups_pkg.get_meaning(
91271 p_lookup_type => 'XLA_OWNER_TYPE'
91272 ,p_lookup_code => l_component_type_code
91273 )
91274 ,p_token_4 => 'PRODUCT_NAME'
91275 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
91276 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
91277 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
91278 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
91279 ,p_ae_header_id => NULL
91280 );
91281
91282 IF (C_LEVEL_ERROR>= g_log_level) THEN
91283 trace
91284 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
91285 ,p_level => C_LEVEL_ERROR
91286 ,p_module => l_log_module);
91287 END IF;
91288 END IF;
91289 END IF;
91290 --
91291 --
91292 ------------------------------------------------------------------------------------------------
91293 -- 4219869 Business Flow
91294 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
91295 -- Prior Entry. Currently, the following code is always generated.
91296 ------------------------------------------------------------------------------------------------
91297 XLA_AE_LINES_PKG.ValidateCurrentLine;
91298
91299 ------------------------------------------------------------------------------------
91300 -- 4219869 Business Flow
91301 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
91302 ------------------------------------------------------------------------------------
91303 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
91304
91305 ----------------------------------------------------------------------------------
91306 -- 4219869 Business Flow
91307 -- Update journal entry status -- Need to generate this within IF <condition>
91308 ----------------------------------------------------------------------------------
91309 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
91310 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
91311 ,p_balance_type_code => l_balance_type_code
91312 );
91313
91314 -------------------------------------------------------------------------------------------
91315 -- 4262811 - Generate the Accrual Reversal lines
91316 -------------------------------------------------------------------------------------------
91317 BEGIN
91318 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
91319 (g_array_event(p_event_id).array_value_num('header_index'));
91320 IF l_acc_rev_flag IS NULL THEN
91321 l_acc_rev_flag := 'N';
91322 END IF;
91323 EXCEPTION
91324 WHEN OTHERS THEN
91325 l_acc_rev_flag := 'N';
91326 END;
91327 --
91328 IF (l_acc_rev_flag = 'Y') THEN
91329
91330 -- 4645092 ------------------------------------------------------------------------------
91331 -- To allow MPA report to determine if it should generate report process
91332 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
91333 ------------------------------------------------------------------------------------------
91334
91335 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
91336 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
91337 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
91338 -- call ADRs
91339 -- Bug 4922099
91340 --
91341 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
91342 (NVL(l_actual_upg_option, 'N') = 'O') OR
91343 (NVL(l_enc_upg_option, 'N') = 'O')
91344 )
91345 THEN
91346 NULL;
91347 --
91348 --
91349
91350 l_ccid := AcctDerRule_4(
91351 p_application_id => p_application_id
91352 , p_ae_header_id => l_ae_header_id
91353 , p_source_4 => p_source_4
91354 , x_transaction_coa_id => l_adr_transaction_coa_id
91355 , x_accounting_coa_id => l_adr_accounting_coa_id
91356 , x_value_type_code => l_adr_value_type_code
91357 , p_side => 'NA'
91358 );
91359
91360 xla_ae_lines_pkg.set_ccid(
91361 p_code_combination_id => l_ccid
91362 , p_value_type_code => l_adr_value_type_code
91363 , p_transaction_coa_id => l_adr_transaction_coa_id
91364 , p_accounting_coa_id => l_adr_accounting_coa_id
91365 , p_adr_code => 'CST_DEFAULT'
91366 , p_adr_type_code => 'S'
91367 , p_component_type => l_component_type
91368 , p_component_code => l_component_code
91369 , p_component_type_code => l_component_type_code
91370 , p_component_appl_id => l_component_appl_id
91371 , p_amb_context_code => l_amb_context_code
91372 , p_side => 'NA'
91373 );
91374
91375
91376 --
91377 --
91378 END IF;
91379
91380 --
91381 -- Update the line information that should be overwritten
91382 --
91383 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
91384 p_header_num => 1);
91385 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
91386
91387 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
91388
91389 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
91390 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
91391 END IF;
91392
91393 --
91394 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
91395 --
91396 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
91397 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
91398 ELSE
91399 ---------------------------------------------------------------------------------------------------
91400 -- 4262811a Switch Sign
91401 ---------------------------------------------------------------------------------------------------
91402 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
91403 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
91404 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
91405 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
91406 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
91407 -- 5132302
91408 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
91409 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
91410
91411 END IF;
91412
91413 -- 4955764
91414 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
91415 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
91416
91417
91418 XLA_AE_LINES_PKG.ValidateCurrentLine;
91419 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
91420
91421 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
91422 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
91423 ,p_balance_type_code => l_balance_type_code);
91424
91425 END IF;
91426
91427 -----------------------------------------------------------------------------------------
91428 -- 4262811 Multiperiod Accounting
91429 -----------------------------------------------------------------------------------------
91430 -- No MPA option is assigned.
91431
91432
91433 END IF;
91434 END IF;
91435 --
91436
91437 --
91438 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
91439 trace
91440 (p_msg => 'END of AcctLineType_166'
91441 ,p_level => C_LEVEL_PROCEDURE
91442 ,p_module => l_log_module);
91443 END IF;
91444 --
91445 EXCEPTION
91446 WHEN xla_exceptions_pkg.application_exception THEN
91447 RAISE;
91448 WHEN OTHERS THEN
91449 xla_exceptions_pkg.raise_message
91450 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_166');
91451 END AcctLineType_166;
91452 --
91453
91454 ---------------------------------------
91455 --
91456 -- PRIVATE FUNCTION
91457 -- AcctLineType_167
91458 --
91459 ---------------------------------------
91460 PROCEDURE AcctLineType_167 (
91461 p_application_id IN NUMBER
91462 ,p_event_id IN NUMBER
91463 ,p_calculate_acctd_flag IN VARCHAR2
91464 ,p_calculate_g_l_flag IN VARCHAR2
91465 ,p_actual_flag IN OUT VARCHAR2
91466 ,p_balance_type_code OUT VARCHAR2
91467 ,p_gain_or_loss_ref OUT VARCHAR2
91468
91469 --Cost Management Default Account
91470 , p_source_4 IN NUMBER
91471 --DISTRIBUTION_IDENTIFIER
91472 , p_source_11 IN NUMBER
91473 --Distribution Type
91474 , p_source_12 IN VARCHAR2
91475 , p_source_12_meaning IN VARCHAR2
91476 --Entered Currency Code
91477 , p_source_15 IN VARCHAR2
91478 --Entered Amount
91479 , p_source_18 IN NUMBER
91480 --Currency Conversion Date
91481 , p_source_19 IN DATE
91482 --Currency Conversion Rate
91483 , p_source_20 IN NUMBER
91484 --Currency Conversion Type
91485 , p_source_21 IN VARCHAR2
91486 --Accounted Amount
91487 , p_source_22 IN NUMBER
91488 --Accounting Line Type
91489 , p_source_24 IN NUMBER
91490 )
91491 IS
91492
91493 l_component_type VARCHAR2(80);
91494 l_component_code VARCHAR2(30);
91495 l_component_type_code VARCHAR2(1);
91496 l_component_appl_id INTEGER;
91497 l_amb_context_code VARCHAR2(30);
91498 l_entity_code VARCHAR2(30);
91499 l_event_class_code VARCHAR2(30);
91500 l_ae_header_id NUMBER;
91501 l_event_type_code VARCHAR2(30);
91502 l_line_definition_code VARCHAR2(30);
91503 l_line_definition_owner_code VARCHAR2(1);
91504 --
91505 -- adr variables
91506 l_segment VARCHAR2(30);
91507 l_ccid NUMBER;
91508 l_adr_transaction_coa_id NUMBER;
91509 l_adr_accounting_coa_id NUMBER;
91510 l_adr_flexfield_segment_code VARCHAR2(30);
91511 l_adr_flex_value_set_id NUMBER;
91512 l_adr_value_type_code VARCHAR2(30);
91513 l_adr_value_combination_id NUMBER;
91514 l_adr_value_segment_code VARCHAR2(30);
91515
91516 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
91517 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
91518 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
91519 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
91520
91521 -- 4262811 Variables ------------------------------------------------------------------------------------------
91522 l_entered_amt_idx NUMBER;
91523 l_accted_amt_idx NUMBER;
91524 l_acc_rev_flag VARCHAR2(1);
91525 l_accrual_line_num NUMBER;
91526 l_tmp_amt NUMBER;
91527 l_acc_rev_natural_side_code VARCHAR2(1);
91528
91529 l_num_entries NUMBER;
91530 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
91531 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
91532 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
91533 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
91534 l_recog_line_1 NUMBER;
91535 l_recog_line_2 NUMBER;
91536
91537 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
91538 l_bflow_applied_to_amt NUMBER; -- 5132302
91539 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
91540
91541 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
91542
91543 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
91544 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
91545
91546 ---------------------------------------------------------------------------------------------------------------
91547
91548
91549 --
91550 -- bulk performance
91551 --
91552 l_balance_type_code VARCHAR2(1);
91553 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
91554 l_log_module VARCHAR2(240);
91555
91556 --
91557 -- Upgrade strategy
91558 --
91559 l_actual_upg_option VARCHAR2(1);
91560 l_enc_upg_option VARCHAR2(1);
91561
91562 --
91563 BEGIN
91564 --
91565 IF g_log_enabled THEN
91566 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_167';
91567 END IF;
91568 --
91569 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
91570
91571 trace
91572 (p_msg => 'BEGIN of AcctLineType_167'
91573 ,p_level => C_LEVEL_PROCEDURE
91574 ,p_module => l_log_module);
91575
91576 END IF;
91577 --
91578 l_component_type := 'AMB_JLT';
91579 l_component_code := 'MATERIAL_OVERHEAD_ABSORPTION';
91580 l_component_type_code := 'S';
91581 l_component_appl_id := 707;
91582 l_amb_context_code := 'DEFAULT';
91583 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
91584 l_event_class_code := 'USER_DEFINE';
91585 l_event_type_code := 'UDIR_INTERORG_RCPT_NO_TP';
91586 l_line_definition_owner_code := 'S';
91587 l_line_definition_code := 'USER_DIR_INTERORG_RCPT_NO_TP';
91588 --
91589 l_balance_type_code := 'A';
91590 l_segment := NULL;
91591 l_ccid := NULL;
91592 l_adr_transaction_coa_id := NULL;
91593 l_adr_accounting_coa_id := NULL;
91594 l_adr_flexfield_segment_code := NULL;
91595 l_adr_flex_value_set_id := NULL;
91596 l_adr_value_type_code := NULL;
91597 l_adr_value_combination_id := NULL;
91598 l_adr_value_segment_code := NULL;
91599
91600 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
91601 l_bflow_class_code := ''; -- 4219869 Business Flow
91602 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
91603 l_budgetary_control_flag := 'N';
91604
91605 l_bflow_applied_to_amt_idx := NULL; -- 5132302
91606 l_bflow_applied_to_amt := NULL; -- 5132302
91607 l_entered_amt_idx := NULL; -- 4262811
91608 l_accted_amt_idx := NULL; -- 4262811
91609 l_acc_rev_flag := NULL; -- 4262811
91610 l_accrual_line_num := NULL; -- 4262811
91611 l_tmp_amt := NULL; -- 4262811
91612 --
91613
91614 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
91615 l_balance_type_code <> 'B' THEN
91616 IF NVL(p_source_24,9E125) = 3
91617 THEN
91618
91619 --
91620 XLA_AE_LINES_PKG.SetNewLine;
91621
91622 p_balance_type_code := l_balance_type_code;
91623 -- set the flag so later we will know whether the gain loss line needs to be created
91624
91625 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
91626 p_actual_flag :='A';
91627 END IF;
91628
91629 --
91630 -- bulk performance
91631 --
91632 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
91633 p_header_num => 0); -- 4262811
91634 --
91635 -- set accounting line options
91636 --
91637 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
91638 p_natural_side_code => 'D'
91639 , p_gain_or_loss_flag => 'N'
91640 , p_gl_transfer_mode_code => 'S'
91641 , p_acct_entry_type_code => 'A'
91642 , p_switch_side_flag => 'Y'
91643 , p_merge_duplicate_code => 'N'
91644 );
91645 --
91646 l_acc_rev_natural_side_code := 'C'; -- 4262811
91647 --
91648 --
91649 -- set accounting line type info
91650 --
91651 xla_ae_lines_pkg.SetAcctLineType
91652 (p_component_type => l_component_type
91653 ,p_event_type_code => l_event_type_code
91654 ,p_line_definition_owner_code => l_line_definition_owner_code
91655 ,p_line_definition_code => l_line_definition_code
91656 ,p_accounting_line_code => l_component_code
91657 ,p_accounting_line_type_code => l_component_type_code
91658 ,p_accounting_line_appl_id => l_component_appl_id
91659 ,p_amb_context_code => l_amb_context_code
91660 ,p_entity_code => l_entity_code
91661 ,p_event_class_code => l_event_class_code);
91662 --
91663 -- set accounting class
91664 --
91665 xla_ae_lines_pkg.SetAcctClass(
91666 p_accounting_class_code => 'MATERIAL_OVERHEAD_ABSORPTION'
91667 , p_ae_header_id => l_ae_header_id
91668 );
91669
91670 --
91671 -- set rounding class
91672 --
91673 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
91674 'MATERIAL_OVERHEAD_ABSORPTION';
91675
91676 --
91677 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
91678 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
91679 --
91680 -- bulk performance
91681 --
91682 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
91683
91684 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
91685 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
91686
91687 -- 4955764
91688 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
91689 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
91690
91691 -- 4458381 Public Sector Enh
91692
91693 --
91694 -- set accounting attributes for the line type
91695 --
91696 l_entered_amt_idx := 3;
91697 l_accted_amt_idx := 8;
91698 l_bflow_applied_to_amt_idx := NULL; -- 5132302
91699 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
91700 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
91701 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
91702 l_rec_acct_attrs.array_char_value(2) := p_source_12;
91703 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
91704 l_rec_acct_attrs.array_num_value(3) := p_source_18;
91705 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
91706 l_rec_acct_attrs.array_char_value(4) := p_source_15;
91707 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
91708 l_rec_acct_attrs.array_date_value(5) := p_source_19;
91709 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
91710 l_rec_acct_attrs.array_num_value(6) := p_source_20;
91711 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
91712 l_rec_acct_attrs.array_char_value(7) := p_source_21;
91713 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
91714 l_rec_acct_attrs.array_num_value(8) := p_source_22;
91715
91716 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
91717 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
91718
91719 ---------------------------------------------------------------------------------------------------------------
91720 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
91721 ---------------------------------------------------------------------------------------------------------------
91722 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
91723
91724 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
91725 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
91726
91727 IF xla_accounting_cache_pkg.GetValueChar
91728 (p_source_code => 'LEDGER_CATEGORY_CODE'
91729 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
91730 AND l_bflow_method_code = 'PRIOR_ENTRY'
91731 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
91732 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
91733 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
91734 )
91735 THEN
91736 xla_ae_lines_pkg.BflowUpgEntry
91737 (p_business_method_code => l_bflow_method_code
91738 ,p_business_class_code => l_bflow_class_code
91739 ,p_balance_type => l_balance_type_code);
91740 ELSE
91741 NULL;
91742 -- No business flow processing for business flow method of NONE.
91743 END IF;
91744
91745 --
91746 -- call analytical criteria
91747 --
91748
91749 --
91750 -- call description
91751 --
91752 -- No description or it is inherited.
91753 --
91754 -- call ADRs
91755 -- Bug 4922099
91756 --
91757 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
91758 (NVL(l_actual_upg_option, 'N') = 'O') OR
91759 (NVL(l_enc_upg_option, 'N') = 'O')
91760 )
91761 THEN
91762 NULL;
91763 --
91764 --
91765
91766 l_ccid := AcctDerRule_4(
91767 p_application_id => p_application_id
91768 , p_ae_header_id => l_ae_header_id
91769 , p_source_4 => p_source_4
91770 , x_transaction_coa_id => l_adr_transaction_coa_id
91771 , x_accounting_coa_id => l_adr_accounting_coa_id
91772 , x_value_type_code => l_adr_value_type_code
91773 , p_side => 'NA'
91774 );
91775
91776 xla_ae_lines_pkg.set_ccid(
91777 p_code_combination_id => l_ccid
91778 , p_value_type_code => l_adr_value_type_code
91779 , p_transaction_coa_id => l_adr_transaction_coa_id
91780 , p_accounting_coa_id => l_adr_accounting_coa_id
91781 , p_adr_code => 'CST_DEFAULT'
91782 , p_adr_type_code => 'S'
91783 , p_component_type => l_component_type
91784 , p_component_code => l_component_code
91785 , p_component_type_code => l_component_type_code
91786 , p_component_appl_id => l_component_appl_id
91787 , p_amb_context_code => l_amb_context_code
91788 , p_side => 'NA'
91789 );
91790
91791
91792 --
91793 --
91794 END IF;
91795 --
91796 -- Bug 4922099
91797 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
91798 (NVL(l_enc_upg_option, 'N') = 'O')
91799 ) AND
91800 (l_bflow_method_code = 'PRIOR_ENTRY')
91801 )
91802 THEN
91803 IF
91804 --
91805 1 = 2
91806 --
91807 THEN
91808 xla_accounting_err_pkg.build_message
91809 (p_appli_s_name => 'XLA'
91810 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
91811 ,p_token_1 => 'LINE_NUMBER'
91812 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
91813 ,p_token_2 => 'LINE_TYPE_NAME'
91814 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
91815 l_component_type
91816 ,l_component_code
91817 ,l_component_type_code
91818 ,l_component_appl_id
91819 ,l_amb_context_code
91820 ,l_entity_code
91821 ,l_event_class_code
91822 )
91823 ,p_token_3 => 'OWNER'
91824 ,p_value_3 => xla_lookups_pkg.get_meaning(
91825 p_lookup_type => 'XLA_OWNER_TYPE'
91826 ,p_lookup_code => l_component_type_code
91827 )
91828 ,p_token_4 => 'PRODUCT_NAME'
91829 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
91830 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
91831 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
91832 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
91833 ,p_ae_header_id => NULL
91834 );
91835
91836 IF (C_LEVEL_ERROR>= g_log_level) THEN
91837 trace
91838 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
91839 ,p_level => C_LEVEL_ERROR
91840 ,p_module => l_log_module);
91841 END IF;
91842 END IF;
91843 END IF;
91844 --
91845 --
91846 ------------------------------------------------------------------------------------------------
91847 -- 4219869 Business Flow
91848 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
91849 -- Prior Entry. Currently, the following code is always generated.
91850 ------------------------------------------------------------------------------------------------
91851 XLA_AE_LINES_PKG.ValidateCurrentLine;
91852
91853 ------------------------------------------------------------------------------------
91854 -- 4219869 Business Flow
91855 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
91856 ------------------------------------------------------------------------------------
91857 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
91858
91859 ----------------------------------------------------------------------------------
91860 -- 4219869 Business Flow
91861 -- Update journal entry status -- Need to generate this within IF <condition>
91862 ----------------------------------------------------------------------------------
91863 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
91864 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
91865 ,p_balance_type_code => l_balance_type_code
91866 );
91867
91868 -------------------------------------------------------------------------------------------
91869 -- 4262811 - Generate the Accrual Reversal lines
91870 -------------------------------------------------------------------------------------------
91871 BEGIN
91872 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
91873 (g_array_event(p_event_id).array_value_num('header_index'));
91874 IF l_acc_rev_flag IS NULL THEN
91875 l_acc_rev_flag := 'N';
91876 END IF;
91877 EXCEPTION
91878 WHEN OTHERS THEN
91879 l_acc_rev_flag := 'N';
91880 END;
91881 --
91882 IF (l_acc_rev_flag = 'Y') THEN
91883
91884 -- 4645092 ------------------------------------------------------------------------------
91885 -- To allow MPA report to determine if it should generate report process
91886 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
91887 ------------------------------------------------------------------------------------------
91888
91889 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
91890 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
91891 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
91892 -- call ADRs
91893 -- Bug 4922099
91894 --
91895 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
91896 (NVL(l_actual_upg_option, 'N') = 'O') OR
91897 (NVL(l_enc_upg_option, 'N') = 'O')
91898 )
91899 THEN
91900 NULL;
91901 --
91902 --
91903
91904 l_ccid := AcctDerRule_4(
91905 p_application_id => p_application_id
91906 , p_ae_header_id => l_ae_header_id
91907 , p_source_4 => p_source_4
91908 , x_transaction_coa_id => l_adr_transaction_coa_id
91909 , x_accounting_coa_id => l_adr_accounting_coa_id
91910 , x_value_type_code => l_adr_value_type_code
91911 , p_side => 'NA'
91912 );
91913
91914 xla_ae_lines_pkg.set_ccid(
91915 p_code_combination_id => l_ccid
91916 , p_value_type_code => l_adr_value_type_code
91917 , p_transaction_coa_id => l_adr_transaction_coa_id
91918 , p_accounting_coa_id => l_adr_accounting_coa_id
91919 , p_adr_code => 'CST_DEFAULT'
91920 , p_adr_type_code => 'S'
91921 , p_component_type => l_component_type
91922 , p_component_code => l_component_code
91923 , p_component_type_code => l_component_type_code
91924 , p_component_appl_id => l_component_appl_id
91925 , p_amb_context_code => l_amb_context_code
91926 , p_side => 'NA'
91927 );
91928
91929
91930 --
91931 --
91932 END IF;
91933
91934 --
91935 -- Update the line information that should be overwritten
91936 --
91937 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
91938 p_header_num => 1);
91939 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
91940
91941 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
91942
91943 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
91944 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
91945 END IF;
91946
91947 --
91948 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
91949 --
91950 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
91951 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
91952 ELSE
91953 ---------------------------------------------------------------------------------------------------
91954 -- 4262811a Switch Sign
91955 ---------------------------------------------------------------------------------------------------
91956 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
91957 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
91958 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
91959 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
91960 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
91961 -- 5132302
91962 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
91963 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
91964
91965 END IF;
91966
91967 -- 4955764
91968 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
91969 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
91970
91971
91972 XLA_AE_LINES_PKG.ValidateCurrentLine;
91973 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
91974
91975 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
91976 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
91977 ,p_balance_type_code => l_balance_type_code);
91978
91979 END IF;
91980
91981 -----------------------------------------------------------------------------------------
91982 -- 4262811 Multiperiod Accounting
91983 -----------------------------------------------------------------------------------------
91984 -- No MPA option is assigned.
91985
91986
91987 END IF;
91988 END IF;
91989 --
91990
91991 --
91992 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
91993 trace
91994 (p_msg => 'END of AcctLineType_167'
91995 ,p_level => C_LEVEL_PROCEDURE
91996 ,p_module => l_log_module);
91997 END IF;
91998 --
91999 EXCEPTION
92000 WHEN xla_exceptions_pkg.application_exception THEN
92001 RAISE;
92002 WHEN OTHERS THEN
92003 xla_exceptions_pkg.raise_message
92004 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_167');
92005 END AcctLineType_167;
92006 --
92007
92008 ---------------------------------------
92009 --
92010 -- PRIVATE FUNCTION
92011 -- AcctLineType_168
92012 --
92013 ---------------------------------------
92014 PROCEDURE AcctLineType_168 (
92015 p_application_id IN NUMBER
92016 ,p_event_id IN NUMBER
92017 ,p_calculate_acctd_flag IN VARCHAR2
92018 ,p_calculate_g_l_flag IN VARCHAR2
92019 ,p_actual_flag IN OUT VARCHAR2
92020 ,p_balance_type_code OUT VARCHAR2
92021 ,p_gain_or_loss_ref OUT VARCHAR2
92022
92023 --Cost Management Default Account
92024 , p_source_4 IN NUMBER
92025 --DISTRIBUTION_IDENTIFIER
92026 , p_source_11 IN NUMBER
92027 --Distribution Type
92028 , p_source_12 IN VARCHAR2
92029 , p_source_12_meaning IN VARCHAR2
92030 --Entered Currency Code
92031 , p_source_15 IN VARCHAR2
92032 --Entered Amount
92033 , p_source_18 IN NUMBER
92034 --Currency Conversion Date
92035 , p_source_19 IN DATE
92036 --Currency Conversion Rate
92037 , p_source_20 IN NUMBER
92038 --Currency Conversion Type
92039 , p_source_21 IN VARCHAR2
92040 --Accounted Amount
92041 , p_source_22 IN NUMBER
92042 --Accounting Line Type
92043 , p_source_24 IN NUMBER
92044 )
92045 IS
92046
92047 l_component_type VARCHAR2(80);
92048 l_component_code VARCHAR2(30);
92049 l_component_type_code VARCHAR2(1);
92050 l_component_appl_id INTEGER;
92051 l_amb_context_code VARCHAR2(30);
92052 l_entity_code VARCHAR2(30);
92053 l_event_class_code VARCHAR2(30);
92054 l_ae_header_id NUMBER;
92055 l_event_type_code VARCHAR2(30);
92056 l_line_definition_code VARCHAR2(30);
92057 l_line_definition_owner_code VARCHAR2(1);
92058 --
92059 -- adr variables
92060 l_segment VARCHAR2(30);
92061 l_ccid NUMBER;
92062 l_adr_transaction_coa_id NUMBER;
92063 l_adr_accounting_coa_id NUMBER;
92064 l_adr_flexfield_segment_code VARCHAR2(30);
92065 l_adr_flex_value_set_id NUMBER;
92066 l_adr_value_type_code VARCHAR2(30);
92067 l_adr_value_combination_id NUMBER;
92068 l_adr_value_segment_code VARCHAR2(30);
92069
92070 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
92071 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
92072 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
92073 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
92074
92075 -- 4262811 Variables ------------------------------------------------------------------------------------------
92076 l_entered_amt_idx NUMBER;
92077 l_accted_amt_idx NUMBER;
92078 l_acc_rev_flag VARCHAR2(1);
92079 l_accrual_line_num NUMBER;
92080 l_tmp_amt NUMBER;
92081 l_acc_rev_natural_side_code VARCHAR2(1);
92082
92083 l_num_entries NUMBER;
92084 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
92085 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
92086 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
92087 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
92088 l_recog_line_1 NUMBER;
92089 l_recog_line_2 NUMBER;
92090
92091 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
92092 l_bflow_applied_to_amt NUMBER; -- 5132302
92093 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
92094
92095 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
92096
92097 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
92098 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
92099
92100 ---------------------------------------------------------------------------------------------------------------
92101
92102
92103 --
92104 -- bulk performance
92105 --
92106 l_balance_type_code VARCHAR2(1);
92107 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
92108 l_log_module VARCHAR2(240);
92109
92110 --
92111 -- Upgrade strategy
92112 --
92113 l_actual_upg_option VARCHAR2(1);
92114 l_enc_upg_option VARCHAR2(1);
92115
92116 --
92117 BEGIN
92118 --
92119 IF g_log_enabled THEN
92120 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_168';
92121 END IF;
92122 --
92123 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
92124
92125 trace
92126 (p_msg => 'BEGIN of AcctLineType_168'
92127 ,p_level => C_LEVEL_PROCEDURE
92128 ,p_module => l_log_module);
92129
92130 END IF;
92131 --
92132 l_component_type := 'AMB_JLT';
92133 l_component_code := 'MATERIAL_OVERHEAD_ABSORPTION';
92134 l_component_type_code := 'S';
92135 l_component_appl_id := 707;
92136 l_amb_context_code := 'DEFAULT';
92137 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
92138 l_event_class_code := 'USER_DEFINE';
92139 l_event_type_code := 'UDIR_INTERORG_RCPT_TP';
92140 l_line_definition_owner_code := 'S';
92141 l_line_definition_code := 'USER_DIR_INTERORG_RCPT_TP';
92142 --
92143 l_balance_type_code := 'A';
92144 l_segment := NULL;
92145 l_ccid := NULL;
92146 l_adr_transaction_coa_id := NULL;
92147 l_adr_accounting_coa_id := NULL;
92148 l_adr_flexfield_segment_code := NULL;
92149 l_adr_flex_value_set_id := NULL;
92150 l_adr_value_type_code := NULL;
92151 l_adr_value_combination_id := NULL;
92152 l_adr_value_segment_code := NULL;
92153
92154 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
92155 l_bflow_class_code := ''; -- 4219869 Business Flow
92156 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
92157 l_budgetary_control_flag := 'N';
92158
92159 l_bflow_applied_to_amt_idx := NULL; -- 5132302
92160 l_bflow_applied_to_amt := NULL; -- 5132302
92161 l_entered_amt_idx := NULL; -- 4262811
92162 l_accted_amt_idx := NULL; -- 4262811
92163 l_acc_rev_flag := NULL; -- 4262811
92164 l_accrual_line_num := NULL; -- 4262811
92165 l_tmp_amt := NULL; -- 4262811
92166 --
92167
92168 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
92169 l_balance_type_code <> 'B' THEN
92170 IF NVL(p_source_24,9E125) = 3
92171 THEN
92172
92173 --
92174 XLA_AE_LINES_PKG.SetNewLine;
92175
92176 p_balance_type_code := l_balance_type_code;
92177 -- set the flag so later we will know whether the gain loss line needs to be created
92178
92179 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
92180 p_actual_flag :='A';
92181 END IF;
92182
92183 --
92184 -- bulk performance
92185 --
92186 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
92187 p_header_num => 0); -- 4262811
92188 --
92189 -- set accounting line options
92190 --
92191 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
92192 p_natural_side_code => 'D'
92193 , p_gain_or_loss_flag => 'N'
92194 , p_gl_transfer_mode_code => 'S'
92195 , p_acct_entry_type_code => 'A'
92196 , p_switch_side_flag => 'Y'
92197 , p_merge_duplicate_code => 'N'
92198 );
92199 --
92200 l_acc_rev_natural_side_code := 'C'; -- 4262811
92201 --
92202 --
92203 -- set accounting line type info
92204 --
92205 xla_ae_lines_pkg.SetAcctLineType
92206 (p_component_type => l_component_type
92207 ,p_event_type_code => l_event_type_code
92208 ,p_line_definition_owner_code => l_line_definition_owner_code
92209 ,p_line_definition_code => l_line_definition_code
92210 ,p_accounting_line_code => l_component_code
92211 ,p_accounting_line_type_code => l_component_type_code
92212 ,p_accounting_line_appl_id => l_component_appl_id
92213 ,p_amb_context_code => l_amb_context_code
92214 ,p_entity_code => l_entity_code
92215 ,p_event_class_code => l_event_class_code);
92216 --
92217 -- set accounting class
92218 --
92219 xla_ae_lines_pkg.SetAcctClass(
92220 p_accounting_class_code => 'MATERIAL_OVERHEAD_ABSORPTION'
92221 , p_ae_header_id => l_ae_header_id
92222 );
92223
92224 --
92225 -- set rounding class
92226 --
92227 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
92228 'MATERIAL_OVERHEAD_ABSORPTION';
92229
92230 --
92231 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
92232 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
92233 --
92234 -- bulk performance
92235 --
92236 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
92237
92238 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
92239 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
92240
92241 -- 4955764
92242 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
92243 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
92244
92245 -- 4458381 Public Sector Enh
92246
92247 --
92248 -- set accounting attributes for the line type
92249 --
92250 l_entered_amt_idx := 3;
92251 l_accted_amt_idx := 8;
92252 l_bflow_applied_to_amt_idx := NULL; -- 5132302
92253 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
92254 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
92255 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
92256 l_rec_acct_attrs.array_char_value(2) := p_source_12;
92257 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
92258 l_rec_acct_attrs.array_num_value(3) := p_source_18;
92259 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
92260 l_rec_acct_attrs.array_char_value(4) := p_source_15;
92261 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
92262 l_rec_acct_attrs.array_date_value(5) := p_source_19;
92263 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
92264 l_rec_acct_attrs.array_num_value(6) := p_source_20;
92265 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
92266 l_rec_acct_attrs.array_char_value(7) := p_source_21;
92267 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
92268 l_rec_acct_attrs.array_num_value(8) := p_source_22;
92269
92270 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
92271 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
92272
92273 ---------------------------------------------------------------------------------------------------------------
92274 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
92275 ---------------------------------------------------------------------------------------------------------------
92276 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
92277
92278 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
92279 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
92280
92281 IF xla_accounting_cache_pkg.GetValueChar
92282 (p_source_code => 'LEDGER_CATEGORY_CODE'
92283 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
92284 AND l_bflow_method_code = 'PRIOR_ENTRY'
92285 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
92286 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
92287 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
92288 )
92289 THEN
92290 xla_ae_lines_pkg.BflowUpgEntry
92291 (p_business_method_code => l_bflow_method_code
92292 ,p_business_class_code => l_bflow_class_code
92293 ,p_balance_type => l_balance_type_code);
92294 ELSE
92295 NULL;
92296 -- No business flow processing for business flow method of NONE.
92297 END IF;
92298
92299 --
92300 -- call analytical criteria
92301 --
92302
92303 --
92304 -- call description
92305 --
92306 -- No description or it is inherited.
92307 --
92308 -- call ADRs
92309 -- Bug 4922099
92310 --
92311 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
92312 (NVL(l_actual_upg_option, 'N') = 'O') OR
92313 (NVL(l_enc_upg_option, 'N') = 'O')
92314 )
92315 THEN
92316 NULL;
92317 --
92318 --
92319
92320 l_ccid := AcctDerRule_4(
92321 p_application_id => p_application_id
92322 , p_ae_header_id => l_ae_header_id
92323 , p_source_4 => p_source_4
92324 , x_transaction_coa_id => l_adr_transaction_coa_id
92325 , x_accounting_coa_id => l_adr_accounting_coa_id
92326 , x_value_type_code => l_adr_value_type_code
92327 , p_side => 'NA'
92328 );
92329
92330 xla_ae_lines_pkg.set_ccid(
92331 p_code_combination_id => l_ccid
92332 , p_value_type_code => l_adr_value_type_code
92333 , p_transaction_coa_id => l_adr_transaction_coa_id
92334 , p_accounting_coa_id => l_adr_accounting_coa_id
92335 , p_adr_code => 'CST_DEFAULT'
92336 , p_adr_type_code => 'S'
92337 , p_component_type => l_component_type
92338 , p_component_code => l_component_code
92339 , p_component_type_code => l_component_type_code
92340 , p_component_appl_id => l_component_appl_id
92341 , p_amb_context_code => l_amb_context_code
92342 , p_side => 'NA'
92343 );
92344
92345
92346 --
92347 --
92348 END IF;
92349 --
92350 -- Bug 4922099
92351 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
92352 (NVL(l_enc_upg_option, 'N') = 'O')
92353 ) AND
92354 (l_bflow_method_code = 'PRIOR_ENTRY')
92355 )
92356 THEN
92357 IF
92358 --
92359 1 = 2
92360 --
92361 THEN
92362 xla_accounting_err_pkg.build_message
92363 (p_appli_s_name => 'XLA'
92364 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
92365 ,p_token_1 => 'LINE_NUMBER'
92366 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
92367 ,p_token_2 => 'LINE_TYPE_NAME'
92368 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
92369 l_component_type
92370 ,l_component_code
92371 ,l_component_type_code
92372 ,l_component_appl_id
92373 ,l_amb_context_code
92374 ,l_entity_code
92375 ,l_event_class_code
92376 )
92377 ,p_token_3 => 'OWNER'
92378 ,p_value_3 => xla_lookups_pkg.get_meaning(
92379 p_lookup_type => 'XLA_OWNER_TYPE'
92380 ,p_lookup_code => l_component_type_code
92381 )
92382 ,p_token_4 => 'PRODUCT_NAME'
92383 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
92384 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
92385 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
92386 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
92387 ,p_ae_header_id => NULL
92388 );
92389
92390 IF (C_LEVEL_ERROR>= g_log_level) THEN
92391 trace
92392 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
92393 ,p_level => C_LEVEL_ERROR
92394 ,p_module => l_log_module);
92395 END IF;
92396 END IF;
92397 END IF;
92398 --
92399 --
92400 ------------------------------------------------------------------------------------------------
92401 -- 4219869 Business Flow
92402 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
92403 -- Prior Entry. Currently, the following code is always generated.
92404 ------------------------------------------------------------------------------------------------
92405 XLA_AE_LINES_PKG.ValidateCurrentLine;
92406
92407 ------------------------------------------------------------------------------------
92408 -- 4219869 Business Flow
92409 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
92410 ------------------------------------------------------------------------------------
92411 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
92412
92413 ----------------------------------------------------------------------------------
92414 -- 4219869 Business Flow
92415 -- Update journal entry status -- Need to generate this within IF <condition>
92416 ----------------------------------------------------------------------------------
92417 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
92418 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
92419 ,p_balance_type_code => l_balance_type_code
92420 );
92421
92422 -------------------------------------------------------------------------------------------
92423 -- 4262811 - Generate the Accrual Reversal lines
92424 -------------------------------------------------------------------------------------------
92425 BEGIN
92426 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
92427 (g_array_event(p_event_id).array_value_num('header_index'));
92428 IF l_acc_rev_flag IS NULL THEN
92429 l_acc_rev_flag := 'N';
92430 END IF;
92431 EXCEPTION
92432 WHEN OTHERS THEN
92433 l_acc_rev_flag := 'N';
92434 END;
92435 --
92436 IF (l_acc_rev_flag = 'Y') THEN
92437
92438 -- 4645092 ------------------------------------------------------------------------------
92439 -- To allow MPA report to determine if it should generate report process
92440 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
92441 ------------------------------------------------------------------------------------------
92442
92443 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
92444 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
92445 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
92446 -- call ADRs
92447 -- Bug 4922099
92448 --
92449 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
92450 (NVL(l_actual_upg_option, 'N') = 'O') OR
92451 (NVL(l_enc_upg_option, 'N') = 'O')
92452 )
92453 THEN
92454 NULL;
92455 --
92456 --
92457
92458 l_ccid := AcctDerRule_4(
92459 p_application_id => p_application_id
92460 , p_ae_header_id => l_ae_header_id
92461 , p_source_4 => p_source_4
92462 , x_transaction_coa_id => l_adr_transaction_coa_id
92463 , x_accounting_coa_id => l_adr_accounting_coa_id
92464 , x_value_type_code => l_adr_value_type_code
92465 , p_side => 'NA'
92466 );
92467
92468 xla_ae_lines_pkg.set_ccid(
92469 p_code_combination_id => l_ccid
92470 , p_value_type_code => l_adr_value_type_code
92471 , p_transaction_coa_id => l_adr_transaction_coa_id
92472 , p_accounting_coa_id => l_adr_accounting_coa_id
92473 , p_adr_code => 'CST_DEFAULT'
92474 , p_adr_type_code => 'S'
92475 , p_component_type => l_component_type
92476 , p_component_code => l_component_code
92477 , p_component_type_code => l_component_type_code
92478 , p_component_appl_id => l_component_appl_id
92479 , p_amb_context_code => l_amb_context_code
92480 , p_side => 'NA'
92481 );
92482
92483
92484 --
92485 --
92486 END IF;
92487
92488 --
92489 -- Update the line information that should be overwritten
92490 --
92491 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
92492 p_header_num => 1);
92493 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
92494
92495 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
92496
92497 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
92498 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
92499 END IF;
92500
92501 --
92502 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
92503 --
92504 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
92505 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
92506 ELSE
92507 ---------------------------------------------------------------------------------------------------
92508 -- 4262811a Switch Sign
92509 ---------------------------------------------------------------------------------------------------
92510 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
92511 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
92512 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
92513 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
92514 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
92515 -- 5132302
92516 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
92517 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
92518
92519 END IF;
92520
92521 -- 4955764
92522 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
92523 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
92524
92525
92526 XLA_AE_LINES_PKG.ValidateCurrentLine;
92527 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
92528
92529 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
92530 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
92531 ,p_balance_type_code => l_balance_type_code);
92532
92533 END IF;
92534
92535 -----------------------------------------------------------------------------------------
92536 -- 4262811 Multiperiod Accounting
92537 -----------------------------------------------------------------------------------------
92538 -- No MPA option is assigned.
92539
92540
92541 END IF;
92542 END IF;
92543 --
92544
92545 --
92546 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
92547 trace
92548 (p_msg => 'END of AcctLineType_168'
92549 ,p_level => C_LEVEL_PROCEDURE
92550 ,p_module => l_log_module);
92551 END IF;
92552 --
92553 EXCEPTION
92554 WHEN xla_exceptions_pkg.application_exception THEN
92555 RAISE;
92556 WHEN OTHERS THEN
92557 xla_exceptions_pkg.raise_message
92558 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_168');
92559 END AcctLineType_168;
92560 --
92561
92562 ---------------------------------------
92563 --
92564 -- PRIVATE FUNCTION
92565 -- AcctLineType_169
92566 --
92567 ---------------------------------------
92568 PROCEDURE AcctLineType_169 (
92569 p_application_id IN NUMBER
92570 ,p_event_id IN NUMBER
92571 ,p_calculate_acctd_flag IN VARCHAR2
92572 ,p_calculate_g_l_flag IN VARCHAR2
92573 ,p_actual_flag IN OUT VARCHAR2
92574 ,p_balance_type_code OUT VARCHAR2
92575 ,p_gain_or_loss_ref OUT VARCHAR2
92576
92577 --Cost Management Default Account
92578 , p_source_4 IN NUMBER
92579 --DISTRIBUTION_IDENTIFIER
92580 , p_source_11 IN NUMBER
92581 --Distribution Type
92582 , p_source_12 IN VARCHAR2
92583 , p_source_12_meaning IN VARCHAR2
92584 --Entered Currency Code
92585 , p_source_15 IN VARCHAR2
92586 --Entered Amount
92587 , p_source_18 IN NUMBER
92588 --Currency Conversion Date
92589 , p_source_19 IN DATE
92590 --Currency Conversion Rate
92591 , p_source_20 IN NUMBER
92592 --Currency Conversion Type
92593 , p_source_21 IN VARCHAR2
92594 --Accounted Amount
92595 , p_source_22 IN NUMBER
92596 --Accounting Line Type
92597 , p_source_24 IN NUMBER
92598 )
92599 IS
92600
92601 l_component_type VARCHAR2(80);
92602 l_component_code VARCHAR2(30);
92603 l_component_type_code VARCHAR2(1);
92604 l_component_appl_id INTEGER;
92605 l_amb_context_code VARCHAR2(30);
92606 l_entity_code VARCHAR2(30);
92607 l_event_class_code VARCHAR2(30);
92608 l_ae_header_id NUMBER;
92609 l_event_type_code VARCHAR2(30);
92610 l_line_definition_code VARCHAR2(30);
92611 l_line_definition_owner_code VARCHAR2(1);
92612 --
92613 -- adr variables
92614 l_segment VARCHAR2(30);
92615 l_ccid NUMBER;
92616 l_adr_transaction_coa_id NUMBER;
92617 l_adr_accounting_coa_id NUMBER;
92618 l_adr_flexfield_segment_code VARCHAR2(30);
92619 l_adr_flex_value_set_id NUMBER;
92620 l_adr_value_type_code VARCHAR2(30);
92621 l_adr_value_combination_id NUMBER;
92622 l_adr_value_segment_code VARCHAR2(30);
92623
92624 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
92625 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
92626 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
92627 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
92628
92629 -- 4262811 Variables ------------------------------------------------------------------------------------------
92630 l_entered_amt_idx NUMBER;
92631 l_accted_amt_idx NUMBER;
92632 l_acc_rev_flag VARCHAR2(1);
92633 l_accrual_line_num NUMBER;
92634 l_tmp_amt NUMBER;
92635 l_acc_rev_natural_side_code VARCHAR2(1);
92636
92637 l_num_entries NUMBER;
92638 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
92639 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
92640 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
92641 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
92642 l_recog_line_1 NUMBER;
92643 l_recog_line_2 NUMBER;
92644
92645 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
92646 l_bflow_applied_to_amt NUMBER; -- 5132302
92647 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
92648
92649 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
92650
92651 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
92652 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
92653
92654 ---------------------------------------------------------------------------------------------------------------
92655
92656
92657 --
92658 -- bulk performance
92659 --
92660 l_balance_type_code VARCHAR2(1);
92661 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
92662 l_log_module VARCHAR2(240);
92663
92664 --
92665 -- Upgrade strategy
92666 --
92667 l_actual_upg_option VARCHAR2(1);
92668 l_enc_upg_option VARCHAR2(1);
92669
92670 --
92671 BEGIN
92672 --
92673 IF g_log_enabled THEN
92674 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_169';
92675 END IF;
92676 --
92677 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
92678
92679 trace
92680 (p_msg => 'BEGIN of AcctLineType_169'
92681 ,p_level => C_LEVEL_PROCEDURE
92682 ,p_module => l_log_module);
92683
92684 END IF;
92685 --
92686 l_component_type := 'AMB_JLT';
92687 l_component_code := 'MATERIAL_OVERHEAD_ABSORPTION';
92688 l_component_type_code := 'S';
92689 l_component_appl_id := 707;
92690 l_amb_context_code := 'DEFAULT';
92691 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
92692 l_event_class_code := 'USER_DEFINE';
92693 l_event_type_code := 'UFOB_SHIP_RECIPIENT_SHIP_NO_TP';
92694 l_line_definition_owner_code := 'S';
92695 l_line_definition_code := 'USER_FOB_SHIP_RECP_SHIP_NO_TP';
92696 --
92697 l_balance_type_code := 'A';
92698 l_segment := NULL;
92699 l_ccid := NULL;
92700 l_adr_transaction_coa_id := NULL;
92701 l_adr_accounting_coa_id := NULL;
92702 l_adr_flexfield_segment_code := NULL;
92703 l_adr_flex_value_set_id := NULL;
92704 l_adr_value_type_code := NULL;
92705 l_adr_value_combination_id := NULL;
92706 l_adr_value_segment_code := NULL;
92707
92708 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
92709 l_bflow_class_code := ''; -- 4219869 Business Flow
92710 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
92711 l_budgetary_control_flag := 'N';
92712
92713 l_bflow_applied_to_amt_idx := NULL; -- 5132302
92714 l_bflow_applied_to_amt := NULL; -- 5132302
92715 l_entered_amt_idx := NULL; -- 4262811
92716 l_accted_amt_idx := NULL; -- 4262811
92717 l_acc_rev_flag := NULL; -- 4262811
92718 l_accrual_line_num := NULL; -- 4262811
92719 l_tmp_amt := NULL; -- 4262811
92720 --
92721
92722 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
92723 l_balance_type_code <> 'B' THEN
92724 IF NVL(p_source_24,9E125) = 3
92725 THEN
92726
92727 --
92728 XLA_AE_LINES_PKG.SetNewLine;
92729
92730 p_balance_type_code := l_balance_type_code;
92731 -- set the flag so later we will know whether the gain loss line needs to be created
92732
92733 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
92734 p_actual_flag :='A';
92735 END IF;
92736
92737 --
92738 -- bulk performance
92739 --
92740 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
92741 p_header_num => 0); -- 4262811
92742 --
92743 -- set accounting line options
92744 --
92745 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
92746 p_natural_side_code => 'D'
92747 , p_gain_or_loss_flag => 'N'
92748 , p_gl_transfer_mode_code => 'S'
92749 , p_acct_entry_type_code => 'A'
92750 , p_switch_side_flag => 'Y'
92751 , p_merge_duplicate_code => 'N'
92752 );
92753 --
92754 l_acc_rev_natural_side_code := 'C'; -- 4262811
92755 --
92756 --
92757 -- set accounting line type info
92758 --
92759 xla_ae_lines_pkg.SetAcctLineType
92760 (p_component_type => l_component_type
92761 ,p_event_type_code => l_event_type_code
92762 ,p_line_definition_owner_code => l_line_definition_owner_code
92763 ,p_line_definition_code => l_line_definition_code
92764 ,p_accounting_line_code => l_component_code
92765 ,p_accounting_line_type_code => l_component_type_code
92766 ,p_accounting_line_appl_id => l_component_appl_id
92767 ,p_amb_context_code => l_amb_context_code
92768 ,p_entity_code => l_entity_code
92769 ,p_event_class_code => l_event_class_code);
92770 --
92771 -- set accounting class
92772 --
92773 xla_ae_lines_pkg.SetAcctClass(
92774 p_accounting_class_code => 'MATERIAL_OVERHEAD_ABSORPTION'
92775 , p_ae_header_id => l_ae_header_id
92776 );
92777
92778 --
92779 -- set rounding class
92780 --
92781 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
92782 'MATERIAL_OVERHEAD_ABSORPTION';
92783
92784 --
92785 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
92786 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
92787 --
92788 -- bulk performance
92789 --
92790 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
92791
92792 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
92793 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
92794
92795 -- 4955764
92796 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
92797 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
92798
92799 -- 4458381 Public Sector Enh
92800
92801 --
92802 -- set accounting attributes for the line type
92803 --
92804 l_entered_amt_idx := 3;
92805 l_accted_amt_idx := 8;
92806 l_bflow_applied_to_amt_idx := NULL; -- 5132302
92807 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
92808 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
92809 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
92810 l_rec_acct_attrs.array_char_value(2) := p_source_12;
92811 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
92812 l_rec_acct_attrs.array_num_value(3) := p_source_18;
92813 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
92814 l_rec_acct_attrs.array_char_value(4) := p_source_15;
92815 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
92816 l_rec_acct_attrs.array_date_value(5) := p_source_19;
92817 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
92818 l_rec_acct_attrs.array_num_value(6) := p_source_20;
92819 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
92820 l_rec_acct_attrs.array_char_value(7) := p_source_21;
92821 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
92822 l_rec_acct_attrs.array_num_value(8) := p_source_22;
92823
92824 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
92825 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
92826
92827 ---------------------------------------------------------------------------------------------------------------
92828 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
92829 ---------------------------------------------------------------------------------------------------------------
92830 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
92831
92832 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
92833 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
92834
92835 IF xla_accounting_cache_pkg.GetValueChar
92836 (p_source_code => 'LEDGER_CATEGORY_CODE'
92837 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
92838 AND l_bflow_method_code = 'PRIOR_ENTRY'
92839 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
92840 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
92841 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
92842 )
92843 THEN
92844 xla_ae_lines_pkg.BflowUpgEntry
92845 (p_business_method_code => l_bflow_method_code
92846 ,p_business_class_code => l_bflow_class_code
92847 ,p_balance_type => l_balance_type_code);
92848 ELSE
92849 NULL;
92850 -- No business flow processing for business flow method of NONE.
92851 END IF;
92852
92853 --
92854 -- call analytical criteria
92855 --
92856
92857 --
92858 -- call description
92859 --
92860 -- No description or it is inherited.
92861 --
92862 -- call ADRs
92863 -- Bug 4922099
92864 --
92865 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
92866 (NVL(l_actual_upg_option, 'N') = 'O') OR
92867 (NVL(l_enc_upg_option, 'N') = 'O')
92868 )
92869 THEN
92870 NULL;
92871 --
92872 --
92873
92874 l_ccid := AcctDerRule_4(
92875 p_application_id => p_application_id
92876 , p_ae_header_id => l_ae_header_id
92877 , p_source_4 => p_source_4
92878 , x_transaction_coa_id => l_adr_transaction_coa_id
92879 , x_accounting_coa_id => l_adr_accounting_coa_id
92880 , x_value_type_code => l_adr_value_type_code
92881 , p_side => 'NA'
92882 );
92883
92884 xla_ae_lines_pkg.set_ccid(
92885 p_code_combination_id => l_ccid
92886 , p_value_type_code => l_adr_value_type_code
92887 , p_transaction_coa_id => l_adr_transaction_coa_id
92888 , p_accounting_coa_id => l_adr_accounting_coa_id
92889 , p_adr_code => 'CST_DEFAULT'
92890 , p_adr_type_code => 'S'
92891 , p_component_type => l_component_type
92892 , p_component_code => l_component_code
92893 , p_component_type_code => l_component_type_code
92894 , p_component_appl_id => l_component_appl_id
92895 , p_amb_context_code => l_amb_context_code
92896 , p_side => 'NA'
92897 );
92898
92899
92900 --
92901 --
92902 END IF;
92903 --
92904 -- Bug 4922099
92905 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
92906 (NVL(l_enc_upg_option, 'N') = 'O')
92907 ) AND
92908 (l_bflow_method_code = 'PRIOR_ENTRY')
92909 )
92910 THEN
92911 IF
92912 --
92913 1 = 2
92914 --
92915 THEN
92916 xla_accounting_err_pkg.build_message
92917 (p_appli_s_name => 'XLA'
92918 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
92919 ,p_token_1 => 'LINE_NUMBER'
92920 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
92921 ,p_token_2 => 'LINE_TYPE_NAME'
92922 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
92923 l_component_type
92924 ,l_component_code
92925 ,l_component_type_code
92926 ,l_component_appl_id
92927 ,l_amb_context_code
92928 ,l_entity_code
92929 ,l_event_class_code
92930 )
92931 ,p_token_3 => 'OWNER'
92932 ,p_value_3 => xla_lookups_pkg.get_meaning(
92933 p_lookup_type => 'XLA_OWNER_TYPE'
92934 ,p_lookup_code => l_component_type_code
92935 )
92936 ,p_token_4 => 'PRODUCT_NAME'
92937 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
92938 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
92939 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
92940 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
92941 ,p_ae_header_id => NULL
92942 );
92943
92944 IF (C_LEVEL_ERROR>= g_log_level) THEN
92945 trace
92946 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
92947 ,p_level => C_LEVEL_ERROR
92948 ,p_module => l_log_module);
92949 END IF;
92950 END IF;
92951 END IF;
92952 --
92953 --
92954 ------------------------------------------------------------------------------------------------
92955 -- 4219869 Business Flow
92956 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
92957 -- Prior Entry. Currently, the following code is always generated.
92958 ------------------------------------------------------------------------------------------------
92959 XLA_AE_LINES_PKG.ValidateCurrentLine;
92960
92961 ------------------------------------------------------------------------------------
92962 -- 4219869 Business Flow
92963 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
92964 ------------------------------------------------------------------------------------
92965 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
92966
92967 ----------------------------------------------------------------------------------
92968 -- 4219869 Business Flow
92969 -- Update journal entry status -- Need to generate this within IF <condition>
92970 ----------------------------------------------------------------------------------
92971 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
92972 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
92973 ,p_balance_type_code => l_balance_type_code
92974 );
92975
92976 -------------------------------------------------------------------------------------------
92977 -- 4262811 - Generate the Accrual Reversal lines
92978 -------------------------------------------------------------------------------------------
92979 BEGIN
92980 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
92981 (g_array_event(p_event_id).array_value_num('header_index'));
92982 IF l_acc_rev_flag IS NULL THEN
92983 l_acc_rev_flag := 'N';
92984 END IF;
92985 EXCEPTION
92986 WHEN OTHERS THEN
92987 l_acc_rev_flag := 'N';
92988 END;
92989 --
92990 IF (l_acc_rev_flag = 'Y') THEN
92991
92992 -- 4645092 ------------------------------------------------------------------------------
92993 -- To allow MPA report to determine if it should generate report process
92994 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
92995 ------------------------------------------------------------------------------------------
92996
92997 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
92998 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
92999 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
93000 -- call ADRs
93001 -- Bug 4922099
93002 --
93003 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
93004 (NVL(l_actual_upg_option, 'N') = 'O') OR
93005 (NVL(l_enc_upg_option, 'N') = 'O')
93006 )
93007 THEN
93008 NULL;
93009 --
93010 --
93011
93012 l_ccid := AcctDerRule_4(
93013 p_application_id => p_application_id
93014 , p_ae_header_id => l_ae_header_id
93015 , p_source_4 => p_source_4
93016 , x_transaction_coa_id => l_adr_transaction_coa_id
93017 , x_accounting_coa_id => l_adr_accounting_coa_id
93018 , x_value_type_code => l_adr_value_type_code
93019 , p_side => 'NA'
93020 );
93021
93022 xla_ae_lines_pkg.set_ccid(
93023 p_code_combination_id => l_ccid
93024 , p_value_type_code => l_adr_value_type_code
93025 , p_transaction_coa_id => l_adr_transaction_coa_id
93026 , p_accounting_coa_id => l_adr_accounting_coa_id
93027 , p_adr_code => 'CST_DEFAULT'
93028 , p_adr_type_code => 'S'
93029 , p_component_type => l_component_type
93030 , p_component_code => l_component_code
93031 , p_component_type_code => l_component_type_code
93032 , p_component_appl_id => l_component_appl_id
93033 , p_amb_context_code => l_amb_context_code
93034 , p_side => 'NA'
93035 );
93036
93037
93038 --
93039 --
93040 END IF;
93041
93042 --
93043 -- Update the line information that should be overwritten
93044 --
93045 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
93046 p_header_num => 1);
93047 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
93048
93049 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
93050
93051 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
93052 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
93053 END IF;
93054
93055 --
93056 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
93057 --
93058 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
93059 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
93060 ELSE
93061 ---------------------------------------------------------------------------------------------------
93062 -- 4262811a Switch Sign
93063 ---------------------------------------------------------------------------------------------------
93064 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
93065 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
93066 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
93067 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
93068 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
93069 -- 5132302
93070 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
93071 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
93072
93073 END IF;
93074
93075 -- 4955764
93076 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
93077 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
93078
93079
93080 XLA_AE_LINES_PKG.ValidateCurrentLine;
93081 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
93082
93083 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
93084 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
93085 ,p_balance_type_code => l_balance_type_code);
93086
93087 END IF;
93088
93089 -----------------------------------------------------------------------------------------
93090 -- 4262811 Multiperiod Accounting
93091 -----------------------------------------------------------------------------------------
93092 -- No MPA option is assigned.
93093
93094
93095 END IF;
93096 END IF;
93097 --
93098
93099 --
93100 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
93101 trace
93102 (p_msg => 'END of AcctLineType_169'
93103 ,p_level => C_LEVEL_PROCEDURE
93104 ,p_module => l_log_module);
93105 END IF;
93106 --
93107 EXCEPTION
93108 WHEN xla_exceptions_pkg.application_exception THEN
93109 RAISE;
93110 WHEN OTHERS THEN
93111 xla_exceptions_pkg.raise_message
93112 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_169');
93113 END AcctLineType_169;
93114 --
93115
93116 ---------------------------------------
93117 --
93118 -- PRIVATE FUNCTION
93119 -- AcctLineType_170
93120 --
93121 ---------------------------------------
93122 PROCEDURE AcctLineType_170 (
93123 p_application_id IN NUMBER
93124 ,p_event_id IN NUMBER
93125 ,p_calculate_acctd_flag IN VARCHAR2
93126 ,p_calculate_g_l_flag IN VARCHAR2
93127 ,p_actual_flag IN OUT VARCHAR2
93128 ,p_balance_type_code OUT VARCHAR2
93129 ,p_gain_or_loss_ref OUT VARCHAR2
93130
93131 --Cost Management Default Account
93132 , p_source_4 IN NUMBER
93133 --DISTRIBUTION_IDENTIFIER
93134 , p_source_11 IN NUMBER
93135 --Distribution Type
93136 , p_source_12 IN VARCHAR2
93137 , p_source_12_meaning IN VARCHAR2
93138 --Entered Currency Code
93139 , p_source_15 IN VARCHAR2
93140 --Entered Amount
93141 , p_source_18 IN NUMBER
93142 --Currency Conversion Date
93143 , p_source_19 IN DATE
93144 --Currency Conversion Rate
93145 , p_source_20 IN NUMBER
93146 --Currency Conversion Type
93147 , p_source_21 IN VARCHAR2
93148 --Accounted Amount
93149 , p_source_22 IN NUMBER
93150 --Accounting Line Type
93151 , p_source_24 IN NUMBER
93152 )
93153 IS
93154
93155 l_component_type VARCHAR2(80);
93156 l_component_code VARCHAR2(30);
93157 l_component_type_code VARCHAR2(1);
93158 l_component_appl_id INTEGER;
93159 l_amb_context_code VARCHAR2(30);
93160 l_entity_code VARCHAR2(30);
93161 l_event_class_code VARCHAR2(30);
93162 l_ae_header_id NUMBER;
93163 l_event_type_code VARCHAR2(30);
93164 l_line_definition_code VARCHAR2(30);
93165 l_line_definition_owner_code VARCHAR2(1);
93166 --
93167 -- adr variables
93168 l_segment VARCHAR2(30);
93169 l_ccid NUMBER;
93170 l_adr_transaction_coa_id NUMBER;
93171 l_adr_accounting_coa_id NUMBER;
93172 l_adr_flexfield_segment_code VARCHAR2(30);
93173 l_adr_flex_value_set_id NUMBER;
93174 l_adr_value_type_code VARCHAR2(30);
93175 l_adr_value_combination_id NUMBER;
93176 l_adr_value_segment_code VARCHAR2(30);
93177
93178 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
93179 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
93180 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
93181 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
93182
93183 -- 4262811 Variables ------------------------------------------------------------------------------------------
93184 l_entered_amt_idx NUMBER;
93185 l_accted_amt_idx NUMBER;
93186 l_acc_rev_flag VARCHAR2(1);
93187 l_accrual_line_num NUMBER;
93188 l_tmp_amt NUMBER;
93189 l_acc_rev_natural_side_code VARCHAR2(1);
93190
93191 l_num_entries NUMBER;
93192 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
93193 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
93194 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
93195 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
93196 l_recog_line_1 NUMBER;
93197 l_recog_line_2 NUMBER;
93198
93199 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
93200 l_bflow_applied_to_amt NUMBER; -- 5132302
93201 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
93202
93203 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
93204
93205 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
93206 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
93207
93208 ---------------------------------------------------------------------------------------------------------------
93209
93210
93211 --
93212 -- bulk performance
93213 --
93214 l_balance_type_code VARCHAR2(1);
93215 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
93216 l_log_module VARCHAR2(240);
93217
93218 --
93219 -- Upgrade strategy
93220 --
93221 l_actual_upg_option VARCHAR2(1);
93222 l_enc_upg_option VARCHAR2(1);
93223
93224 --
93225 BEGIN
93226 --
93227 IF g_log_enabled THEN
93228 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_170';
93229 END IF;
93230 --
93231 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
93232
93233 trace
93234 (p_msg => 'BEGIN of AcctLineType_170'
93235 ,p_level => C_LEVEL_PROCEDURE
93236 ,p_module => l_log_module);
93237
93238 END IF;
93239 --
93240 l_component_type := 'AMB_JLT';
93241 l_component_code := 'MATERIAL_OVERHEAD_ABSORPTION';
93242 l_component_type_code := 'S';
93243 l_component_appl_id := 707;
93244 l_amb_context_code := 'DEFAULT';
93245 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
93246 l_event_class_code := 'USER_DEFINE';
93247 l_event_type_code := 'UFOB_SHIP_RECIPIENT_SHIP_TP';
93248 l_line_definition_owner_code := 'S';
93249 l_line_definition_code := 'USER_FOB_SHIP_RECP_SHIP_TP';
93250 --
93251 l_balance_type_code := 'A';
93252 l_segment := NULL;
93253 l_ccid := NULL;
93254 l_adr_transaction_coa_id := NULL;
93255 l_adr_accounting_coa_id := NULL;
93256 l_adr_flexfield_segment_code := NULL;
93257 l_adr_flex_value_set_id := NULL;
93258 l_adr_value_type_code := NULL;
93259 l_adr_value_combination_id := NULL;
93260 l_adr_value_segment_code := NULL;
93261
93262 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
93263 l_bflow_class_code := ''; -- 4219869 Business Flow
93264 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
93265 l_budgetary_control_flag := 'N';
93266
93267 l_bflow_applied_to_amt_idx := NULL; -- 5132302
93268 l_bflow_applied_to_amt := NULL; -- 5132302
93269 l_entered_amt_idx := NULL; -- 4262811
93270 l_accted_amt_idx := NULL; -- 4262811
93271 l_acc_rev_flag := NULL; -- 4262811
93272 l_accrual_line_num := NULL; -- 4262811
93273 l_tmp_amt := NULL; -- 4262811
93274 --
93275
93276 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
93277 l_balance_type_code <> 'B' THEN
93278 IF NVL(p_source_24,9E125) = 3
93279 THEN
93280
93281 --
93282 XLA_AE_LINES_PKG.SetNewLine;
93283
93284 p_balance_type_code := l_balance_type_code;
93285 -- set the flag so later we will know whether the gain loss line needs to be created
93286
93287 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
93288 p_actual_flag :='A';
93289 END IF;
93290
93291 --
93292 -- bulk performance
93293 --
93294 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
93295 p_header_num => 0); -- 4262811
93296 --
93297 -- set accounting line options
93298 --
93299 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
93300 p_natural_side_code => 'D'
93301 , p_gain_or_loss_flag => 'N'
93302 , p_gl_transfer_mode_code => 'S'
93303 , p_acct_entry_type_code => 'A'
93304 , p_switch_side_flag => 'Y'
93305 , p_merge_duplicate_code => 'N'
93306 );
93307 --
93308 l_acc_rev_natural_side_code := 'C'; -- 4262811
93309 --
93310 --
93311 -- set accounting line type info
93312 --
93313 xla_ae_lines_pkg.SetAcctLineType
93314 (p_component_type => l_component_type
93315 ,p_event_type_code => l_event_type_code
93316 ,p_line_definition_owner_code => l_line_definition_owner_code
93317 ,p_line_definition_code => l_line_definition_code
93318 ,p_accounting_line_code => l_component_code
93319 ,p_accounting_line_type_code => l_component_type_code
93320 ,p_accounting_line_appl_id => l_component_appl_id
93321 ,p_amb_context_code => l_amb_context_code
93322 ,p_entity_code => l_entity_code
93323 ,p_event_class_code => l_event_class_code);
93324 --
93325 -- set accounting class
93326 --
93327 xla_ae_lines_pkg.SetAcctClass(
93328 p_accounting_class_code => 'MATERIAL_OVERHEAD_ABSORPTION'
93329 , p_ae_header_id => l_ae_header_id
93330 );
93331
93332 --
93333 -- set rounding class
93334 --
93335 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
93336 'MATERIAL_OVERHEAD_ABSORPTION';
93337
93338 --
93339 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
93340 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
93341 --
93342 -- bulk performance
93343 --
93344 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
93345
93346 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
93347 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
93348
93349 -- 4955764
93350 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
93351 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
93352
93353 -- 4458381 Public Sector Enh
93354
93355 --
93356 -- set accounting attributes for the line type
93357 --
93358 l_entered_amt_idx := 3;
93359 l_accted_amt_idx := 8;
93360 l_bflow_applied_to_amt_idx := NULL; -- 5132302
93361 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
93362 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
93363 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
93364 l_rec_acct_attrs.array_char_value(2) := p_source_12;
93365 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
93366 l_rec_acct_attrs.array_num_value(3) := p_source_18;
93367 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
93368 l_rec_acct_attrs.array_char_value(4) := p_source_15;
93369 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
93370 l_rec_acct_attrs.array_date_value(5) := p_source_19;
93371 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
93372 l_rec_acct_attrs.array_num_value(6) := p_source_20;
93373 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
93374 l_rec_acct_attrs.array_char_value(7) := p_source_21;
93375 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
93376 l_rec_acct_attrs.array_num_value(8) := p_source_22;
93377
93378 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
93379 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
93380
93381 ---------------------------------------------------------------------------------------------------------------
93382 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
93383 ---------------------------------------------------------------------------------------------------------------
93384 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
93385
93386 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
93387 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
93388
93389 IF xla_accounting_cache_pkg.GetValueChar
93390 (p_source_code => 'LEDGER_CATEGORY_CODE'
93391 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
93392 AND l_bflow_method_code = 'PRIOR_ENTRY'
93393 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
93394 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
93395 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
93396 )
93397 THEN
93398 xla_ae_lines_pkg.BflowUpgEntry
93399 (p_business_method_code => l_bflow_method_code
93400 ,p_business_class_code => l_bflow_class_code
93401 ,p_balance_type => l_balance_type_code);
93402 ELSE
93403 NULL;
93404 -- No business flow processing for business flow method of NONE.
93405 END IF;
93406
93407 --
93408 -- call analytical criteria
93409 --
93410
93411 --
93412 -- call description
93413 --
93414 -- No description or it is inherited.
93415 --
93416 -- call ADRs
93417 -- Bug 4922099
93418 --
93419 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
93420 (NVL(l_actual_upg_option, 'N') = 'O') OR
93421 (NVL(l_enc_upg_option, 'N') = 'O')
93422 )
93423 THEN
93424 NULL;
93425 --
93426 --
93427
93428 l_ccid := AcctDerRule_4(
93429 p_application_id => p_application_id
93430 , p_ae_header_id => l_ae_header_id
93431 , p_source_4 => p_source_4
93432 , x_transaction_coa_id => l_adr_transaction_coa_id
93433 , x_accounting_coa_id => l_adr_accounting_coa_id
93434 , x_value_type_code => l_adr_value_type_code
93435 , p_side => 'NA'
93436 );
93437
93438 xla_ae_lines_pkg.set_ccid(
93439 p_code_combination_id => l_ccid
93440 , p_value_type_code => l_adr_value_type_code
93441 , p_transaction_coa_id => l_adr_transaction_coa_id
93442 , p_accounting_coa_id => l_adr_accounting_coa_id
93443 , p_adr_code => 'CST_DEFAULT'
93444 , p_adr_type_code => 'S'
93445 , p_component_type => l_component_type
93446 , p_component_code => l_component_code
93447 , p_component_type_code => l_component_type_code
93448 , p_component_appl_id => l_component_appl_id
93449 , p_amb_context_code => l_amb_context_code
93450 , p_side => 'NA'
93451 );
93452
93453
93454 --
93455 --
93456 END IF;
93457 --
93458 -- Bug 4922099
93459 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
93460 (NVL(l_enc_upg_option, 'N') = 'O')
93461 ) AND
93462 (l_bflow_method_code = 'PRIOR_ENTRY')
93463 )
93464 THEN
93465 IF
93466 --
93467 1 = 2
93468 --
93469 THEN
93470 xla_accounting_err_pkg.build_message
93471 (p_appli_s_name => 'XLA'
93472 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
93473 ,p_token_1 => 'LINE_NUMBER'
93474 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
93475 ,p_token_2 => 'LINE_TYPE_NAME'
93476 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
93477 l_component_type
93478 ,l_component_code
93479 ,l_component_type_code
93480 ,l_component_appl_id
93481 ,l_amb_context_code
93482 ,l_entity_code
93483 ,l_event_class_code
93484 )
93485 ,p_token_3 => 'OWNER'
93486 ,p_value_3 => xla_lookups_pkg.get_meaning(
93487 p_lookup_type => 'XLA_OWNER_TYPE'
93488 ,p_lookup_code => l_component_type_code
93489 )
93490 ,p_token_4 => 'PRODUCT_NAME'
93491 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
93492 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
93493 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
93494 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
93495 ,p_ae_header_id => NULL
93496 );
93497
93498 IF (C_LEVEL_ERROR>= g_log_level) THEN
93499 trace
93500 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
93501 ,p_level => C_LEVEL_ERROR
93502 ,p_module => l_log_module);
93503 END IF;
93504 END IF;
93505 END IF;
93506 --
93507 --
93508 ------------------------------------------------------------------------------------------------
93509 -- 4219869 Business Flow
93510 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
93511 -- Prior Entry. Currently, the following code is always generated.
93512 ------------------------------------------------------------------------------------------------
93513 XLA_AE_LINES_PKG.ValidateCurrentLine;
93514
93515 ------------------------------------------------------------------------------------
93516 -- 4219869 Business Flow
93517 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
93518 ------------------------------------------------------------------------------------
93519 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
93520
93521 ----------------------------------------------------------------------------------
93522 -- 4219869 Business Flow
93523 -- Update journal entry status -- Need to generate this within IF <condition>
93524 ----------------------------------------------------------------------------------
93525 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
93526 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
93527 ,p_balance_type_code => l_balance_type_code
93528 );
93529
93530 -------------------------------------------------------------------------------------------
93531 -- 4262811 - Generate the Accrual Reversal lines
93532 -------------------------------------------------------------------------------------------
93533 BEGIN
93534 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
93535 (g_array_event(p_event_id).array_value_num('header_index'));
93536 IF l_acc_rev_flag IS NULL THEN
93537 l_acc_rev_flag := 'N';
93538 END IF;
93539 EXCEPTION
93540 WHEN OTHERS THEN
93541 l_acc_rev_flag := 'N';
93542 END;
93543 --
93544 IF (l_acc_rev_flag = 'Y') THEN
93545
93546 -- 4645092 ------------------------------------------------------------------------------
93547 -- To allow MPA report to determine if it should generate report process
93548 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
93549 ------------------------------------------------------------------------------------------
93550
93551 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
93552 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
93553 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
93554 -- call ADRs
93555 -- Bug 4922099
93556 --
93557 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
93558 (NVL(l_actual_upg_option, 'N') = 'O') OR
93559 (NVL(l_enc_upg_option, 'N') = 'O')
93560 )
93561 THEN
93562 NULL;
93563 --
93564 --
93565
93566 l_ccid := AcctDerRule_4(
93567 p_application_id => p_application_id
93568 , p_ae_header_id => l_ae_header_id
93569 , p_source_4 => p_source_4
93570 , x_transaction_coa_id => l_adr_transaction_coa_id
93571 , x_accounting_coa_id => l_adr_accounting_coa_id
93572 , x_value_type_code => l_adr_value_type_code
93573 , p_side => 'NA'
93574 );
93575
93576 xla_ae_lines_pkg.set_ccid(
93577 p_code_combination_id => l_ccid
93578 , p_value_type_code => l_adr_value_type_code
93579 , p_transaction_coa_id => l_adr_transaction_coa_id
93580 , p_accounting_coa_id => l_adr_accounting_coa_id
93581 , p_adr_code => 'CST_DEFAULT'
93582 , p_adr_type_code => 'S'
93583 , p_component_type => l_component_type
93584 , p_component_code => l_component_code
93585 , p_component_type_code => l_component_type_code
93586 , p_component_appl_id => l_component_appl_id
93587 , p_amb_context_code => l_amb_context_code
93588 , p_side => 'NA'
93589 );
93590
93591
93592 --
93593 --
93594 END IF;
93595
93596 --
93597 -- Update the line information that should be overwritten
93598 --
93599 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
93600 p_header_num => 1);
93601 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
93602
93603 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
93604
93605 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
93606 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
93607 END IF;
93608
93609 --
93610 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
93611 --
93612 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
93613 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
93614 ELSE
93615 ---------------------------------------------------------------------------------------------------
93616 -- 4262811a Switch Sign
93617 ---------------------------------------------------------------------------------------------------
93618 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
93619 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
93620 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
93621 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
93622 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
93623 -- 5132302
93624 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
93625 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
93626
93627 END IF;
93628
93629 -- 4955764
93630 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
93631 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
93632
93633
93634 XLA_AE_LINES_PKG.ValidateCurrentLine;
93635 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
93636
93637 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
93638 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
93639 ,p_balance_type_code => l_balance_type_code);
93640
93641 END IF;
93642
93643 -----------------------------------------------------------------------------------------
93644 -- 4262811 Multiperiod Accounting
93645 -----------------------------------------------------------------------------------------
93646 -- No MPA option is assigned.
93647
93648
93649 END IF;
93650 END IF;
93651 --
93652
93653 --
93654 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
93655 trace
93656 (p_msg => 'END of AcctLineType_170'
93657 ,p_level => C_LEVEL_PROCEDURE
93658 ,p_module => l_log_module);
93659 END IF;
93660 --
93661 EXCEPTION
93662 WHEN xla_exceptions_pkg.application_exception THEN
93663 RAISE;
93664 WHEN OTHERS THEN
93665 xla_exceptions_pkg.raise_message
93666 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_170');
93667 END AcctLineType_170;
93668 --
93669
93670 ---------------------------------------
93671 --
93672 -- PRIVATE FUNCTION
93673 -- AcctLineType_171
93674 --
93675 ---------------------------------------
93676 PROCEDURE AcctLineType_171 (
93677 p_application_id IN NUMBER
93678 ,p_event_id IN NUMBER
93679 ,p_calculate_acctd_flag IN VARCHAR2
93680 ,p_calculate_g_l_flag IN VARCHAR2
93681 ,p_actual_flag IN OUT VARCHAR2
93682 ,p_balance_type_code OUT VARCHAR2
93683 ,p_gain_or_loss_ref OUT VARCHAR2
93684
93685 --Cost Management Default Account
93686 , p_source_4 IN NUMBER
93687 --Applied to Application ID
93688 , p_source_6 IN NUMBER
93689 --Applied to Distribution Link Type
93690 , p_source_7 IN VARCHAR2
93691 --Applied to Entity Code
93692 , p_source_8 IN VARCHAR2
93693 --DISTRIBUTION_IDENTIFIER
93694 , p_source_11 IN NUMBER
93695 --Distribution Type
93696 , p_source_12 IN VARCHAR2
93697 , p_source_12_meaning IN VARCHAR2
93698 --Encumbrance Reversal Amount Entered
93699 , p_source_14 IN NUMBER
93700 --Entered Currency Code
93701 , p_source_15 IN VARCHAR2
93702 --Transaction Encumbrance Reversal Amount
93703 , p_source_16 IN NUMBER
93704 --Entered Amount
93705 , p_source_18 IN NUMBER
93706 --Currency Conversion Date
93707 , p_source_19 IN DATE
93708 --Currency Conversion Rate
93709 , p_source_20 IN NUMBER
93710 --Currency Conversion Type
93711 , p_source_21 IN VARCHAR2
93712 --Accounted Amount
93713 , p_source_22 IN NUMBER
93714 --Accounting Line Type
93715 , p_source_24 IN NUMBER
93716 --Costing Encumbrance Upgrade Option
93717 , p_source_27 IN VARCHAR2
93718 --TXN_PO_DISTRIBUTION_ID
93719 , p_source_28 IN NUMBER
93720 --TXN_PO_HEADER_ID
93721 , p_source_29 IN NUMBER
93722 --Requisition Budget Account
93723 , p_source_30 IN NUMBER
93724 --Requisition Encumbrance Type Identifier
93725 , p_source_31 IN NUMBER
93726 )
93727 IS
93728
93729 l_component_type VARCHAR2(80);
93730 l_component_code VARCHAR2(30);
93731 l_component_type_code VARCHAR2(1);
93732 l_component_appl_id INTEGER;
93733 l_amb_context_code VARCHAR2(30);
93734 l_entity_code VARCHAR2(30);
93735 l_event_class_code VARCHAR2(30);
93736 l_ae_header_id NUMBER;
93737 l_event_type_code VARCHAR2(30);
93738 l_line_definition_code VARCHAR2(30);
93739 l_line_definition_owner_code VARCHAR2(1);
93740 --
93741 -- adr variables
93742 l_segment VARCHAR2(30);
93743 l_ccid NUMBER;
93744 l_adr_transaction_coa_id NUMBER;
93745 l_adr_accounting_coa_id NUMBER;
93746 l_adr_flexfield_segment_code VARCHAR2(30);
93747 l_adr_flex_value_set_id NUMBER;
93748 l_adr_value_type_code VARCHAR2(30);
93749 l_adr_value_combination_id NUMBER;
93750 l_adr_value_segment_code VARCHAR2(30);
93751
93752 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
93753 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
93754 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
93755 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
93756
93757 -- 4262811 Variables ------------------------------------------------------------------------------------------
93758 l_entered_amt_idx NUMBER;
93759 l_accted_amt_idx NUMBER;
93760 l_acc_rev_flag VARCHAR2(1);
93761 l_accrual_line_num NUMBER;
93762 l_tmp_amt NUMBER;
93763 l_acc_rev_natural_side_code VARCHAR2(1);
93764
93765 l_num_entries NUMBER;
93766 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
93767 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
93768 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
93769 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
93770 l_recog_line_1 NUMBER;
93771 l_recog_line_2 NUMBER;
93772
93773 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
93774 l_bflow_applied_to_amt NUMBER; -- 5132302
93775 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
93776
93777 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
93778
93779 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
93780 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
93781
93782 ---------------------------------------------------------------------------------------------------------------
93783
93784
93785 --
93786 -- bulk performance
93787 --
93788 l_balance_type_code VARCHAR2(1);
93789 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
93790 l_log_module VARCHAR2(240);
93791
93792 --
93793 -- Upgrade strategy
93794 --
93795 l_actual_upg_option VARCHAR2(1);
93796 l_enc_upg_option VARCHAR2(1);
93797
93798 --
93799 BEGIN
93800 --
93801 IF g_log_enabled THEN
93802 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_171';
93803 END IF;
93804 --
93805 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
93806
93807 trace
93808 (p_msg => 'BEGIN of AcctLineType_171'
93809 ,p_level => C_LEVEL_PROCEDURE
93810 ,p_module => l_log_module);
93811
93812 END IF;
93813 --
93814 l_component_type := 'AMB_JLT';
93815 l_component_code := 'MATERIAL_OVERHEAD_ABSORPTION';
93816 l_component_type_code := 'S';
93817 l_component_appl_id := 707;
93818 l_amb_context_code := 'DEFAULT';
93819 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
93820 l_event_class_code := 'FOB_RCPT_RECIPIENT_RCPT';
93821 l_event_type_code := 'FOB_RCPT_RECIPIENT_RCPT_ALL';
93822 l_line_definition_owner_code := 'S';
93823 l_line_definition_code := 'FOB_RCPT_RECIPIENT_RCPT';
93824 --
93825 l_balance_type_code := 'A';
93826 l_segment := NULL;
93827 l_ccid := NULL;
93828 l_adr_transaction_coa_id := NULL;
93829 l_adr_accounting_coa_id := NULL;
93830 l_adr_flexfield_segment_code := NULL;
93831 l_adr_flex_value_set_id := NULL;
93832 l_adr_value_type_code := NULL;
93833 l_adr_value_combination_id := NULL;
93834 l_adr_value_segment_code := NULL;
93835
93836 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
93837 l_bflow_class_code := ''; -- 4219869 Business Flow
93838 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
93839 l_budgetary_control_flag := 'N';
93840
93841 l_bflow_applied_to_amt_idx := NULL; -- 5132302
93842 l_bflow_applied_to_amt := NULL; -- 5132302
93843 l_entered_amt_idx := NULL; -- 4262811
93844 l_accted_amt_idx := NULL; -- 4262811
93845 l_acc_rev_flag := NULL; -- 4262811
93846 l_accrual_line_num := NULL; -- 4262811
93847 l_tmp_amt := NULL; -- 4262811
93848 --
93849
93850 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
93851 l_balance_type_code <> 'B' THEN
93852 IF NVL(p_source_24,9E125) = 3
93853 THEN
93854
93855 --
93856 XLA_AE_LINES_PKG.SetNewLine;
93857
93858 p_balance_type_code := l_balance_type_code;
93859 -- set the flag so later we will know whether the gain loss line needs to be created
93860
93861 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
93862 p_actual_flag :='A';
93863 END IF;
93864
93865 --
93866 -- bulk performance
93867 --
93868 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
93869 p_header_num => 0); -- 4262811
93870 --
93871 -- set accounting line options
93872 --
93873 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
93874 p_natural_side_code => 'D'
93875 , p_gain_or_loss_flag => 'N'
93876 , p_gl_transfer_mode_code => 'S'
93877 , p_acct_entry_type_code => 'A'
93878 , p_switch_side_flag => 'Y'
93879 , p_merge_duplicate_code => 'N'
93880 );
93881 --
93882 l_acc_rev_natural_side_code := 'C'; -- 4262811
93883 --
93884 --
93885 -- set accounting line type info
93886 --
93887 xla_ae_lines_pkg.SetAcctLineType
93888 (p_component_type => l_component_type
93889 ,p_event_type_code => l_event_type_code
93890 ,p_line_definition_owner_code => l_line_definition_owner_code
93891 ,p_line_definition_code => l_line_definition_code
93892 ,p_accounting_line_code => l_component_code
93893 ,p_accounting_line_type_code => l_component_type_code
93894 ,p_accounting_line_appl_id => l_component_appl_id
93895 ,p_amb_context_code => l_amb_context_code
93896 ,p_entity_code => l_entity_code
93897 ,p_event_class_code => l_event_class_code);
93898 --
93899 -- set accounting class
93900 --
93901 xla_ae_lines_pkg.SetAcctClass(
93902 p_accounting_class_code => 'MATERIAL_OVERHEAD_ABSORPTION'
93903 , p_ae_header_id => l_ae_header_id
93904 );
93905
93906 --
93907 -- set rounding class
93908 --
93909 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
93910 'MATERIAL_OVERHEAD_ABSORPTION';
93911
93912 --
93913 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
93914 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
93915 --
93916 -- bulk performance
93917 --
93918 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
93919
93920 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
93921 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
93922
93923 -- 4955764
93924 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
93925 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
93926
93927 -- 4458381 Public Sector Enh
93928
93929 --
93930 -- set accounting attributes for the line type
93931 --
93932 l_entered_amt_idx := 17;
93933 l_accted_amt_idx := 22;
93934 l_bflow_applied_to_amt_idx := NULL; -- 5132302
93935 l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
93936 l_rec_acct_attrs.array_num_value(1) := p_source_6;
93937 l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
93938 l_rec_acct_attrs.array_char_value(2) := p_source_7;
93939 l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
93940 l_rec_acct_attrs.array_char_value(3) := p_source_8;
93941 l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
93942 l_rec_acct_attrs.array_num_value(4) := to_char(p_source_28);
93943 l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
93944 l_rec_acct_attrs.array_num_value(5) := to_char(p_source_29);
93945 l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
93946 l_rec_acct_attrs.array_num_value(6) := to_char(p_source_11);
93947 l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
93948 l_rec_acct_attrs.array_char_value(7) := p_source_12;
93949 l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
93950 l_rec_acct_attrs.array_num_value(8) := TO_NUMBER(p_source_30);
93951 l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
93952 l_rec_acct_attrs.array_num_value(9) := p_source_14;
93953 l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
93954 l_rec_acct_attrs.array_char_value(10) := p_source_15;
93955 l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
93956 l_rec_acct_attrs.array_num_value(11) := p_source_16;
93957 l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
93958 l_rec_acct_attrs.array_num_value(12) := TO_NUMBER(p_source_30);
93959 l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
93960 l_rec_acct_attrs.array_num_value(13) := p_source_14;
93961 l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
93962 l_rec_acct_attrs.array_char_value(14) := p_source_15;
93963 l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
93964 l_rec_acct_attrs.array_num_value(15) := p_source_16;
93965 l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
93966 l_rec_acct_attrs.array_char_value(16) := p_source_27;
93967 l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
93968 l_rec_acct_attrs.array_num_value(17) := p_source_18;
93969 l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
93970 l_rec_acct_attrs.array_char_value(18) := p_source_15;
93971 l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
93972 l_rec_acct_attrs.array_date_value(19) := p_source_19;
93973 l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
93974 l_rec_acct_attrs.array_num_value(20) := p_source_20;
93975 l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
93976 l_rec_acct_attrs.array_char_value(21) := p_source_21;
93977 l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
93978 l_rec_acct_attrs.array_num_value(22) := p_source_22;
93979 l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
93980 l_rec_acct_attrs.array_num_value(23) := p_source_31;
93981 l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
93982 l_rec_acct_attrs.array_num_value(24) := p_source_31;
93983
93984 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
93985 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
93986
93987 ---------------------------------------------------------------------------------------------------------------
93988 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
93989 ---------------------------------------------------------------------------------------------------------------
93990 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
93991
93992 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
93993 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
93994
93995 IF xla_accounting_cache_pkg.GetValueChar
93996 (p_source_code => 'LEDGER_CATEGORY_CODE'
93997 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
93998 AND l_bflow_method_code = 'PRIOR_ENTRY'
93999 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
94000 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
94001 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
94002 )
94003 THEN
94004 xla_ae_lines_pkg.BflowUpgEntry
94005 (p_business_method_code => l_bflow_method_code
94006 ,p_business_class_code => l_bflow_class_code
94007 ,p_balance_type => l_balance_type_code);
94008 ELSE
94009 NULL;
94010 -- No business flow processing for business flow method of NONE.
94011 END IF;
94012
94013 --
94014 -- call analytical criteria
94015 --
94016
94017 --
94018 -- call description
94019 --
94020 -- No description or it is inherited.
94021 --
94022 -- call ADRs
94023 -- Bug 4922099
94024 --
94025 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
94026 (NVL(l_actual_upg_option, 'N') = 'O') OR
94027 (NVL(l_enc_upg_option, 'N') = 'O')
94028 )
94029 THEN
94030 NULL;
94031 --
94032 --
94033
94034 l_ccid := AcctDerRule_4(
94035 p_application_id => p_application_id
94036 , p_ae_header_id => l_ae_header_id
94037 , p_source_4 => p_source_4
94038 , x_transaction_coa_id => l_adr_transaction_coa_id
94039 , x_accounting_coa_id => l_adr_accounting_coa_id
94040 , x_value_type_code => l_adr_value_type_code
94041 , p_side => 'NA'
94042 );
94043
94044 xla_ae_lines_pkg.set_ccid(
94045 p_code_combination_id => l_ccid
94046 , p_value_type_code => l_adr_value_type_code
94047 , p_transaction_coa_id => l_adr_transaction_coa_id
94048 , p_accounting_coa_id => l_adr_accounting_coa_id
94049 , p_adr_code => 'CST_DEFAULT'
94050 , p_adr_type_code => 'S'
94051 , p_component_type => l_component_type
94052 , p_component_code => l_component_code
94053 , p_component_type_code => l_component_type_code
94054 , p_component_appl_id => l_component_appl_id
94055 , p_amb_context_code => l_amb_context_code
94056 , p_side => 'NA'
94057 );
94058
94059
94060 --
94061 --
94062 END IF;
94063 --
94064 -- Bug 4922099
94065 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
94066 (NVL(l_enc_upg_option, 'N') = 'O')
94067 ) AND
94068 (l_bflow_method_code = 'PRIOR_ENTRY')
94069 )
94070 THEN
94071 IF
94072 --
94073 1 = 2
94074 --
94075 THEN
94076 xla_accounting_err_pkg.build_message
94077 (p_appli_s_name => 'XLA'
94078 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
94079 ,p_token_1 => 'LINE_NUMBER'
94080 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
94081 ,p_token_2 => 'LINE_TYPE_NAME'
94082 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
94083 l_component_type
94084 ,l_component_code
94085 ,l_component_type_code
94086 ,l_component_appl_id
94087 ,l_amb_context_code
94088 ,l_entity_code
94089 ,l_event_class_code
94090 )
94091 ,p_token_3 => 'OWNER'
94092 ,p_value_3 => xla_lookups_pkg.get_meaning(
94093 p_lookup_type => 'XLA_OWNER_TYPE'
94094 ,p_lookup_code => l_component_type_code
94095 )
94096 ,p_token_4 => 'PRODUCT_NAME'
94097 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
94098 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
94099 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
94100 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
94101 ,p_ae_header_id => NULL
94102 );
94103
94104 IF (C_LEVEL_ERROR>= g_log_level) THEN
94105 trace
94106 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
94107 ,p_level => C_LEVEL_ERROR
94108 ,p_module => l_log_module);
94109 END IF;
94110 END IF;
94111 END IF;
94112 --
94113 --
94114 ------------------------------------------------------------------------------------------------
94115 -- 4219869 Business Flow
94116 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
94117 -- Prior Entry. Currently, the following code is always generated.
94118 ------------------------------------------------------------------------------------------------
94119 XLA_AE_LINES_PKG.ValidateCurrentLine;
94120
94121 ------------------------------------------------------------------------------------
94122 -- 4219869 Business Flow
94123 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
94124 ------------------------------------------------------------------------------------
94125 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
94126
94127 ----------------------------------------------------------------------------------
94128 -- 4219869 Business Flow
94129 -- Update journal entry status -- Need to generate this within IF <condition>
94130 ----------------------------------------------------------------------------------
94131 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
94132 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
94133 ,p_balance_type_code => l_balance_type_code
94134 );
94135
94136 -------------------------------------------------------------------------------------------
94137 -- 4262811 - Generate the Accrual Reversal lines
94138 -------------------------------------------------------------------------------------------
94139 BEGIN
94140 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
94141 (g_array_event(p_event_id).array_value_num('header_index'));
94142 IF l_acc_rev_flag IS NULL THEN
94143 l_acc_rev_flag := 'N';
94144 END IF;
94145 EXCEPTION
94146 WHEN OTHERS THEN
94147 l_acc_rev_flag := 'N';
94148 END;
94149 --
94150 IF (l_acc_rev_flag = 'Y') THEN
94151
94152 -- 4645092 ------------------------------------------------------------------------------
94153 -- To allow MPA report to determine if it should generate report process
94154 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
94155 ------------------------------------------------------------------------------------------
94156
94157 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
94158 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
94159 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
94160 -- call ADRs
94161 -- Bug 4922099
94162 --
94163 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
94164 (NVL(l_actual_upg_option, 'N') = 'O') OR
94165 (NVL(l_enc_upg_option, 'N') = 'O')
94166 )
94167 THEN
94168 NULL;
94169 --
94170 --
94171
94172 l_ccid := AcctDerRule_4(
94173 p_application_id => p_application_id
94174 , p_ae_header_id => l_ae_header_id
94175 , p_source_4 => p_source_4
94176 , x_transaction_coa_id => l_adr_transaction_coa_id
94177 , x_accounting_coa_id => l_adr_accounting_coa_id
94178 , x_value_type_code => l_adr_value_type_code
94179 , p_side => 'NA'
94180 );
94181
94182 xla_ae_lines_pkg.set_ccid(
94183 p_code_combination_id => l_ccid
94184 , p_value_type_code => l_adr_value_type_code
94185 , p_transaction_coa_id => l_adr_transaction_coa_id
94186 , p_accounting_coa_id => l_adr_accounting_coa_id
94187 , p_adr_code => 'CST_DEFAULT'
94188 , p_adr_type_code => 'S'
94189 , p_component_type => l_component_type
94190 , p_component_code => l_component_code
94191 , p_component_type_code => l_component_type_code
94192 , p_component_appl_id => l_component_appl_id
94193 , p_amb_context_code => l_amb_context_code
94194 , p_side => 'NA'
94195 );
94196
94197
94198 --
94199 --
94200 END IF;
94201
94202 --
94203 -- Update the line information that should be overwritten
94204 --
94205 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
94206 p_header_num => 1);
94207 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
94208
94209 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
94210
94211 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
94212 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
94213 END IF;
94214
94215 --
94216 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
94217 --
94218 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
94219 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
94220 ELSE
94221 ---------------------------------------------------------------------------------------------------
94222 -- 4262811a Switch Sign
94223 ---------------------------------------------------------------------------------------------------
94224 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
94225 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
94226 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
94227 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
94228 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
94229 -- 5132302
94230 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
94231 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
94232
94233 END IF;
94234
94235 -- 4955764
94236 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
94237 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
94238
94239
94240 XLA_AE_LINES_PKG.ValidateCurrentLine;
94241 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
94242
94243 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
94244 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
94245 ,p_balance_type_code => l_balance_type_code);
94246
94247 END IF;
94248
94249 -----------------------------------------------------------------------------------------
94250 -- 4262811 Multiperiod Accounting
94251 -----------------------------------------------------------------------------------------
94252 -- No MPA option is assigned.
94253
94254
94255 END IF;
94256 END IF;
94257 --
94258
94259 --
94260 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
94261 trace
94262 (p_msg => 'END of AcctLineType_171'
94263 ,p_level => C_LEVEL_PROCEDURE
94264 ,p_module => l_log_module);
94265 END IF;
94266 --
94267 EXCEPTION
94268 WHEN xla_exceptions_pkg.application_exception THEN
94269 RAISE;
94270 WHEN OTHERS THEN
94271 xla_exceptions_pkg.raise_message
94272 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_171');
94273 END AcctLineType_171;
94274 --
94275
94276 ---------------------------------------
94277 --
94278 -- PRIVATE FUNCTION
94279 -- AcctLineType_172
94280 --
94281 ---------------------------------------
94282 PROCEDURE AcctLineType_172 (
94283 p_application_id IN NUMBER
94284 ,p_event_id IN NUMBER
94285 ,p_calculate_acctd_flag IN VARCHAR2
94286 ,p_calculate_g_l_flag IN VARCHAR2
94287 ,p_actual_flag IN OUT VARCHAR2
94288 ,p_balance_type_code OUT VARCHAR2
94289 ,p_gain_or_loss_ref OUT VARCHAR2
94290
94291 --Cost Management Default Account
94292 , p_source_4 IN NUMBER
94293 --DISTRIBUTION_IDENTIFIER
94294 , p_source_11 IN NUMBER
94295 --Distribution Type
94296 , p_source_12 IN VARCHAR2
94297 , p_source_12_meaning IN VARCHAR2
94298 --Entered Currency Code
94299 , p_source_15 IN VARCHAR2
94300 --Entered Amount
94301 , p_source_18 IN NUMBER
94302 --Currency Conversion Date
94303 , p_source_19 IN DATE
94304 --Currency Conversion Rate
94305 , p_source_20 IN NUMBER
94306 --Currency Conversion Type
94307 , p_source_21 IN VARCHAR2
94308 --Accounted Amount
94309 , p_source_22 IN NUMBER
94310 --Accounting Line Type
94311 , p_source_24 IN NUMBER
94312 )
94313 IS
94314
94315 l_component_type VARCHAR2(80);
94316 l_component_code VARCHAR2(30);
94317 l_component_type_code VARCHAR2(1);
94318 l_component_appl_id INTEGER;
94319 l_amb_context_code VARCHAR2(30);
94320 l_entity_code VARCHAR2(30);
94321 l_event_class_code VARCHAR2(30);
94322 l_ae_header_id NUMBER;
94323 l_event_type_code VARCHAR2(30);
94324 l_line_definition_code VARCHAR2(30);
94325 l_line_definition_owner_code VARCHAR2(1);
94326 --
94327 -- adr variables
94328 l_segment VARCHAR2(30);
94329 l_ccid NUMBER;
94330 l_adr_transaction_coa_id NUMBER;
94331 l_adr_accounting_coa_id NUMBER;
94332 l_adr_flexfield_segment_code VARCHAR2(30);
94333 l_adr_flex_value_set_id NUMBER;
94334 l_adr_value_type_code VARCHAR2(30);
94335 l_adr_value_combination_id NUMBER;
94336 l_adr_value_segment_code VARCHAR2(30);
94337
94338 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
94339 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
94340 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
94341 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
94342
94343 -- 4262811 Variables ------------------------------------------------------------------------------------------
94344 l_entered_amt_idx NUMBER;
94345 l_accted_amt_idx NUMBER;
94346 l_acc_rev_flag VARCHAR2(1);
94347 l_accrual_line_num NUMBER;
94348 l_tmp_amt NUMBER;
94349 l_acc_rev_natural_side_code VARCHAR2(1);
94350
94351 l_num_entries NUMBER;
94352 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
94353 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
94354 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
94355 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
94356 l_recog_line_1 NUMBER;
94357 l_recog_line_2 NUMBER;
94358
94359 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
94360 l_bflow_applied_to_amt NUMBER; -- 5132302
94361 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
94362
94363 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
94364
94365 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
94366 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
94367
94368 ---------------------------------------------------------------------------------------------------------------
94369
94370
94371 --
94372 -- bulk performance
94373 --
94374 l_balance_type_code VARCHAR2(1);
94375 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
94376 l_log_module VARCHAR2(240);
94377
94378 --
94379 -- Upgrade strategy
94380 --
94381 l_actual_upg_option VARCHAR2(1);
94382 l_enc_upg_option VARCHAR2(1);
94383
94384 --
94385 BEGIN
94386 --
94387 IF g_log_enabled THEN
94388 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_172';
94389 END IF;
94390 --
94391 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
94392
94393 trace
94394 (p_msg => 'BEGIN of AcctLineType_172'
94395 ,p_level => C_LEVEL_PROCEDURE
94396 ,p_module => l_log_module);
94397
94398 END IF;
94399 --
94400 l_component_type := 'AMB_JLT';
94401 l_component_code := 'MATERIAL_OVERHEAD_ABSORPTION';
94402 l_component_type_code := 'S';
94403 l_component_appl_id := 707;
94404 l_amb_context_code := 'DEFAULT';
94405 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
94406 l_event_class_code := 'USER_DEFINE';
94407 l_event_type_code := 'UDIR_INTERORG_SHIP_TP';
94408 l_line_definition_owner_code := 'S';
94409 l_line_definition_code := 'USER_DIR_INTERORG_SHIP_TP';
94410 --
94411 l_balance_type_code := 'A';
94412 l_segment := NULL;
94413 l_ccid := NULL;
94414 l_adr_transaction_coa_id := NULL;
94415 l_adr_accounting_coa_id := NULL;
94416 l_adr_flexfield_segment_code := NULL;
94417 l_adr_flex_value_set_id := NULL;
94418 l_adr_value_type_code := NULL;
94419 l_adr_value_combination_id := NULL;
94420 l_adr_value_segment_code := NULL;
94421
94422 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
94423 l_bflow_class_code := ''; -- 4219869 Business Flow
94424 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
94425 l_budgetary_control_flag := 'N';
94426
94427 l_bflow_applied_to_amt_idx := NULL; -- 5132302
94428 l_bflow_applied_to_amt := NULL; -- 5132302
94429 l_entered_amt_idx := NULL; -- 4262811
94430 l_accted_amt_idx := NULL; -- 4262811
94431 l_acc_rev_flag := NULL; -- 4262811
94432 l_accrual_line_num := NULL; -- 4262811
94433 l_tmp_amt := NULL; -- 4262811
94434 --
94435
94436 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
94437 l_balance_type_code <> 'B' THEN
94438 IF NVL(p_source_24,9E125) = 3
94439 THEN
94440
94441 --
94442 XLA_AE_LINES_PKG.SetNewLine;
94443
94444 p_balance_type_code := l_balance_type_code;
94445 -- set the flag so later we will know whether the gain loss line needs to be created
94446
94447 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
94448 p_actual_flag :='A';
94449 END IF;
94450
94451 --
94452 -- bulk performance
94453 --
94454 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
94455 p_header_num => 0); -- 4262811
94456 --
94457 -- set accounting line options
94458 --
94459 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
94460 p_natural_side_code => 'D'
94461 , p_gain_or_loss_flag => 'N'
94462 , p_gl_transfer_mode_code => 'S'
94463 , p_acct_entry_type_code => 'A'
94464 , p_switch_side_flag => 'Y'
94465 , p_merge_duplicate_code => 'N'
94466 );
94467 --
94468 l_acc_rev_natural_side_code := 'C'; -- 4262811
94469 --
94470 --
94471 -- set accounting line type info
94472 --
94473 xla_ae_lines_pkg.SetAcctLineType
94474 (p_component_type => l_component_type
94475 ,p_event_type_code => l_event_type_code
94476 ,p_line_definition_owner_code => l_line_definition_owner_code
94477 ,p_line_definition_code => l_line_definition_code
94478 ,p_accounting_line_code => l_component_code
94479 ,p_accounting_line_type_code => l_component_type_code
94480 ,p_accounting_line_appl_id => l_component_appl_id
94481 ,p_amb_context_code => l_amb_context_code
94482 ,p_entity_code => l_entity_code
94483 ,p_event_class_code => l_event_class_code);
94484 --
94485 -- set accounting class
94486 --
94487 xla_ae_lines_pkg.SetAcctClass(
94488 p_accounting_class_code => 'MATERIAL_OVERHEAD_ABSORPTION'
94489 , p_ae_header_id => l_ae_header_id
94490 );
94491
94492 --
94493 -- set rounding class
94494 --
94495 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
94496 'MATERIAL_OVERHEAD_ABSORPTION';
94497
94498 --
94499 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
94500 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
94501 --
94502 -- bulk performance
94503 --
94504 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
94505
94506 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
94507 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
94508
94509 -- 4955764
94510 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
94511 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
94512
94513 -- 4458381 Public Sector Enh
94514
94515 --
94516 -- set accounting attributes for the line type
94517 --
94518 l_entered_amt_idx := 3;
94519 l_accted_amt_idx := 8;
94520 l_bflow_applied_to_amt_idx := NULL; -- 5132302
94521 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
94522 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
94523 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
94524 l_rec_acct_attrs.array_char_value(2) := p_source_12;
94525 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
94526 l_rec_acct_attrs.array_num_value(3) := p_source_18;
94527 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
94528 l_rec_acct_attrs.array_char_value(4) := p_source_15;
94529 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
94530 l_rec_acct_attrs.array_date_value(5) := p_source_19;
94531 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
94532 l_rec_acct_attrs.array_num_value(6) := p_source_20;
94533 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
94534 l_rec_acct_attrs.array_char_value(7) := p_source_21;
94535 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
94536 l_rec_acct_attrs.array_num_value(8) := p_source_22;
94537
94538 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
94539 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
94540
94541 ---------------------------------------------------------------------------------------------------------------
94542 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
94543 ---------------------------------------------------------------------------------------------------------------
94544 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
94545
94546 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
94547 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
94548
94549 IF xla_accounting_cache_pkg.GetValueChar
94550 (p_source_code => 'LEDGER_CATEGORY_CODE'
94551 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
94552 AND l_bflow_method_code = 'PRIOR_ENTRY'
94553 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
94554 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
94555 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
94556 )
94557 THEN
94558 xla_ae_lines_pkg.BflowUpgEntry
94559 (p_business_method_code => l_bflow_method_code
94560 ,p_business_class_code => l_bflow_class_code
94561 ,p_balance_type => l_balance_type_code);
94562 ELSE
94563 NULL;
94564 -- No business flow processing for business flow method of NONE.
94565 END IF;
94566
94567 --
94568 -- call analytical criteria
94569 --
94570
94571 --
94572 -- call description
94573 --
94574 -- No description or it is inherited.
94575 --
94576 -- call ADRs
94577 -- Bug 4922099
94578 --
94579 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
94580 (NVL(l_actual_upg_option, 'N') = 'O') OR
94581 (NVL(l_enc_upg_option, 'N') = 'O')
94582 )
94583 THEN
94584 NULL;
94585 --
94586 --
94587
94588 l_ccid := AcctDerRule_4(
94589 p_application_id => p_application_id
94590 , p_ae_header_id => l_ae_header_id
94591 , p_source_4 => p_source_4
94592 , x_transaction_coa_id => l_adr_transaction_coa_id
94593 , x_accounting_coa_id => l_adr_accounting_coa_id
94594 , x_value_type_code => l_adr_value_type_code
94595 , p_side => 'NA'
94596 );
94597
94598 xla_ae_lines_pkg.set_ccid(
94599 p_code_combination_id => l_ccid
94600 , p_value_type_code => l_adr_value_type_code
94601 , p_transaction_coa_id => l_adr_transaction_coa_id
94602 , p_accounting_coa_id => l_adr_accounting_coa_id
94603 , p_adr_code => 'CST_DEFAULT'
94604 , p_adr_type_code => 'S'
94605 , p_component_type => l_component_type
94606 , p_component_code => l_component_code
94607 , p_component_type_code => l_component_type_code
94608 , p_component_appl_id => l_component_appl_id
94609 , p_amb_context_code => l_amb_context_code
94610 , p_side => 'NA'
94611 );
94612
94613
94614 --
94615 --
94616 END IF;
94617 --
94618 -- Bug 4922099
94619 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
94620 (NVL(l_enc_upg_option, 'N') = 'O')
94621 ) AND
94622 (l_bflow_method_code = 'PRIOR_ENTRY')
94623 )
94624 THEN
94625 IF
94626 --
94627 1 = 2
94628 --
94629 THEN
94630 xla_accounting_err_pkg.build_message
94631 (p_appli_s_name => 'XLA'
94632 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
94633 ,p_token_1 => 'LINE_NUMBER'
94634 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
94635 ,p_token_2 => 'LINE_TYPE_NAME'
94636 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
94637 l_component_type
94638 ,l_component_code
94639 ,l_component_type_code
94640 ,l_component_appl_id
94641 ,l_amb_context_code
94642 ,l_entity_code
94643 ,l_event_class_code
94644 )
94645 ,p_token_3 => 'OWNER'
94646 ,p_value_3 => xla_lookups_pkg.get_meaning(
94647 p_lookup_type => 'XLA_OWNER_TYPE'
94648 ,p_lookup_code => l_component_type_code
94649 )
94650 ,p_token_4 => 'PRODUCT_NAME'
94651 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
94652 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
94653 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
94654 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
94655 ,p_ae_header_id => NULL
94656 );
94657
94658 IF (C_LEVEL_ERROR>= g_log_level) THEN
94659 trace
94660 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
94661 ,p_level => C_LEVEL_ERROR
94662 ,p_module => l_log_module);
94663 END IF;
94664 END IF;
94665 END IF;
94666 --
94667 --
94668 ------------------------------------------------------------------------------------------------
94669 -- 4219869 Business Flow
94670 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
94671 -- Prior Entry. Currently, the following code is always generated.
94672 ------------------------------------------------------------------------------------------------
94673 XLA_AE_LINES_PKG.ValidateCurrentLine;
94674
94675 ------------------------------------------------------------------------------------
94676 -- 4219869 Business Flow
94677 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
94678 ------------------------------------------------------------------------------------
94679 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
94680
94681 ----------------------------------------------------------------------------------
94682 -- 4219869 Business Flow
94683 -- Update journal entry status -- Need to generate this within IF <condition>
94684 ----------------------------------------------------------------------------------
94685 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
94686 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
94687 ,p_balance_type_code => l_balance_type_code
94688 );
94689
94690 -------------------------------------------------------------------------------------------
94691 -- 4262811 - Generate the Accrual Reversal lines
94692 -------------------------------------------------------------------------------------------
94693 BEGIN
94694 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
94695 (g_array_event(p_event_id).array_value_num('header_index'));
94696 IF l_acc_rev_flag IS NULL THEN
94697 l_acc_rev_flag := 'N';
94698 END IF;
94699 EXCEPTION
94700 WHEN OTHERS THEN
94701 l_acc_rev_flag := 'N';
94702 END;
94703 --
94704 IF (l_acc_rev_flag = 'Y') THEN
94705
94706 -- 4645092 ------------------------------------------------------------------------------
94707 -- To allow MPA report to determine if it should generate report process
94708 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
94709 ------------------------------------------------------------------------------------------
94710
94711 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
94712 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
94713 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
94714 -- call ADRs
94715 -- Bug 4922099
94716 --
94717 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
94718 (NVL(l_actual_upg_option, 'N') = 'O') OR
94719 (NVL(l_enc_upg_option, 'N') = 'O')
94720 )
94721 THEN
94722 NULL;
94723 --
94724 --
94725
94726 l_ccid := AcctDerRule_4(
94727 p_application_id => p_application_id
94728 , p_ae_header_id => l_ae_header_id
94729 , p_source_4 => p_source_4
94730 , x_transaction_coa_id => l_adr_transaction_coa_id
94731 , x_accounting_coa_id => l_adr_accounting_coa_id
94732 , x_value_type_code => l_adr_value_type_code
94733 , p_side => 'NA'
94734 );
94735
94736 xla_ae_lines_pkg.set_ccid(
94737 p_code_combination_id => l_ccid
94738 , p_value_type_code => l_adr_value_type_code
94739 , p_transaction_coa_id => l_adr_transaction_coa_id
94740 , p_accounting_coa_id => l_adr_accounting_coa_id
94741 , p_adr_code => 'CST_DEFAULT'
94742 , p_adr_type_code => 'S'
94743 , p_component_type => l_component_type
94744 , p_component_code => l_component_code
94745 , p_component_type_code => l_component_type_code
94746 , p_component_appl_id => l_component_appl_id
94747 , p_amb_context_code => l_amb_context_code
94748 , p_side => 'NA'
94749 );
94750
94751
94752 --
94753 --
94754 END IF;
94755
94756 --
94757 -- Update the line information that should be overwritten
94758 --
94759 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
94760 p_header_num => 1);
94761 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
94762
94763 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
94764
94765 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
94766 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
94767 END IF;
94768
94769 --
94770 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
94771 --
94772 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
94773 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
94774 ELSE
94775 ---------------------------------------------------------------------------------------------------
94776 -- 4262811a Switch Sign
94777 ---------------------------------------------------------------------------------------------------
94778 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
94779 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
94780 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
94781 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
94782 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
94783 -- 5132302
94784 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
94785 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
94786
94787 END IF;
94788
94789 -- 4955764
94790 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
94791 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
94792
94793
94794 XLA_AE_LINES_PKG.ValidateCurrentLine;
94795 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
94796
94797 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
94798 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
94799 ,p_balance_type_code => l_balance_type_code);
94800
94801 END IF;
94802
94803 -----------------------------------------------------------------------------------------
94804 -- 4262811 Multiperiod Accounting
94805 -----------------------------------------------------------------------------------------
94806 -- No MPA option is assigned.
94807
94808
94809 END IF;
94810 END IF;
94811 --
94812
94813 --
94814 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
94815 trace
94816 (p_msg => 'END of AcctLineType_172'
94817 ,p_level => C_LEVEL_PROCEDURE
94818 ,p_module => l_log_module);
94819 END IF;
94820 --
94821 EXCEPTION
94822 WHEN xla_exceptions_pkg.application_exception THEN
94823 RAISE;
94824 WHEN OTHERS THEN
94825 xla_exceptions_pkg.raise_message
94826 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_172');
94827 END AcctLineType_172;
94828 --
94829
94830 ---------------------------------------
94831 --
94832 -- PRIVATE FUNCTION
94833 -- AcctLineType_173
94834 --
94835 ---------------------------------------
94836 PROCEDURE AcctLineType_173 (
94837 p_application_id IN NUMBER
94838 ,p_event_id IN NUMBER
94839 ,p_calculate_acctd_flag IN VARCHAR2
94840 ,p_calculate_g_l_flag IN VARCHAR2
94841 ,p_actual_flag IN OUT VARCHAR2
94842 ,p_balance_type_code OUT VARCHAR2
94843 ,p_gain_or_loss_ref OUT VARCHAR2
94844
94845 --Cost Management Default Account
94846 , p_source_4 IN NUMBER
94847 --DISTRIBUTION_IDENTIFIER
94848 , p_source_11 IN NUMBER
94849 --Distribution Type
94850 , p_source_12 IN VARCHAR2
94851 , p_source_12_meaning IN VARCHAR2
94852 --Entered Currency Code
94853 , p_source_15 IN VARCHAR2
94854 --Entered Amount
94855 , p_source_18 IN NUMBER
94856 --Currency Conversion Date
94857 , p_source_19 IN DATE
94858 --Currency Conversion Rate
94859 , p_source_20 IN NUMBER
94860 --Currency Conversion Type
94861 , p_source_21 IN VARCHAR2
94862 --Accounted Amount
94863 , p_source_22 IN NUMBER
94864 --Accounting Line Type
94865 , p_source_24 IN NUMBER
94866 )
94867 IS
94868
94869 l_component_type VARCHAR2(80);
94870 l_component_code VARCHAR2(30);
94871 l_component_type_code VARCHAR2(1);
94872 l_component_appl_id INTEGER;
94873 l_amb_context_code VARCHAR2(30);
94874 l_entity_code VARCHAR2(30);
94875 l_event_class_code VARCHAR2(30);
94876 l_ae_header_id NUMBER;
94877 l_event_type_code VARCHAR2(30);
94878 l_line_definition_code VARCHAR2(30);
94879 l_line_definition_owner_code VARCHAR2(1);
94880 --
94881 -- adr variables
94882 l_segment VARCHAR2(30);
94883 l_ccid NUMBER;
94884 l_adr_transaction_coa_id NUMBER;
94885 l_adr_accounting_coa_id NUMBER;
94886 l_adr_flexfield_segment_code VARCHAR2(30);
94887 l_adr_flex_value_set_id NUMBER;
94888 l_adr_value_type_code VARCHAR2(30);
94889 l_adr_value_combination_id NUMBER;
94890 l_adr_value_segment_code VARCHAR2(30);
94891
94892 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
94893 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
94894 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
94895 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
94896
94897 -- 4262811 Variables ------------------------------------------------------------------------------------------
94898 l_entered_amt_idx NUMBER;
94899 l_accted_amt_idx NUMBER;
94900 l_acc_rev_flag VARCHAR2(1);
94901 l_accrual_line_num NUMBER;
94902 l_tmp_amt NUMBER;
94903 l_acc_rev_natural_side_code VARCHAR2(1);
94904
94905 l_num_entries NUMBER;
94906 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
94907 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
94908 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
94909 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
94910 l_recog_line_1 NUMBER;
94911 l_recog_line_2 NUMBER;
94912
94913 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
94914 l_bflow_applied_to_amt NUMBER; -- 5132302
94915 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
94916
94917 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
94918
94919 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
94920 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
94921
94922 ---------------------------------------------------------------------------------------------------------------
94923
94924
94925 --
94926 -- bulk performance
94927 --
94928 l_balance_type_code VARCHAR2(1);
94929 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
94930 l_log_module VARCHAR2(240);
94931
94932 --
94933 -- Upgrade strategy
94934 --
94935 l_actual_upg_option VARCHAR2(1);
94936 l_enc_upg_option VARCHAR2(1);
94937
94938 --
94939 BEGIN
94940 --
94941 IF g_log_enabled THEN
94942 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_173';
94943 END IF;
94944 --
94945 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
94946
94947 trace
94948 (p_msg => 'BEGIN of AcctLineType_173'
94949 ,p_level => C_LEVEL_PROCEDURE
94950 ,p_module => l_log_module);
94951
94952 END IF;
94953 --
94954 l_component_type := 'AMB_JLT';
94955 l_component_code := 'OFFSET';
94956 l_component_type_code := 'S';
94957 l_component_appl_id := 707;
94958 l_amb_context_code := 'DEFAULT';
94959 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
94960 l_event_class_code := 'USER_DEFINE';
94961 l_event_type_code := 'UCG_TXFR';
94962 l_line_definition_owner_code := 'S';
94963 l_line_definition_code := 'USER_CG_TXFR';
94964 --
94965 l_balance_type_code := 'A';
94966 l_segment := NULL;
94967 l_ccid := NULL;
94968 l_adr_transaction_coa_id := NULL;
94969 l_adr_accounting_coa_id := NULL;
94970 l_adr_flexfield_segment_code := NULL;
94971 l_adr_flex_value_set_id := NULL;
94972 l_adr_value_type_code := NULL;
94973 l_adr_value_combination_id := NULL;
94974 l_adr_value_segment_code := NULL;
94975
94976 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
94977 l_bflow_class_code := ''; -- 4219869 Business Flow
94978 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
94979 l_budgetary_control_flag := 'N';
94980
94981 l_bflow_applied_to_amt_idx := NULL; -- 5132302
94982 l_bflow_applied_to_amt := NULL; -- 5132302
94983 l_entered_amt_idx := NULL; -- 4262811
94984 l_accted_amt_idx := NULL; -- 4262811
94985 l_acc_rev_flag := NULL; -- 4262811
94986 l_accrual_line_num := NULL; -- 4262811
94987 l_tmp_amt := NULL; -- 4262811
94988 --
94989
94990 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
94991 l_balance_type_code <> 'B' THEN
94992 IF NVL(p_source_24,9E125) = 2
94993 THEN
94994
94995 --
94996 XLA_AE_LINES_PKG.SetNewLine;
94997
94998 p_balance_type_code := l_balance_type_code;
94999 -- set the flag so later we will know whether the gain loss line needs to be created
95000
95001 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
95002 p_actual_flag :='A';
95003 END IF;
95004
95005 --
95006 -- bulk performance
95007 --
95008 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
95009 p_header_num => 0); -- 4262811
95010 --
95011 -- set accounting line options
95012 --
95013 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
95014 p_natural_side_code => 'D'
95015 , p_gain_or_loss_flag => 'N'
95016 , p_gl_transfer_mode_code => 'S'
95017 , p_acct_entry_type_code => 'A'
95018 , p_switch_side_flag => 'Y'
95019 , p_merge_duplicate_code => 'N'
95020 );
95021 --
95022 l_acc_rev_natural_side_code := 'C'; -- 4262811
95023 --
95024 --
95025 -- set accounting line type info
95026 --
95027 xla_ae_lines_pkg.SetAcctLineType
95028 (p_component_type => l_component_type
95029 ,p_event_type_code => l_event_type_code
95030 ,p_line_definition_owner_code => l_line_definition_owner_code
95031 ,p_line_definition_code => l_line_definition_code
95032 ,p_accounting_line_code => l_component_code
95033 ,p_accounting_line_type_code => l_component_type_code
95034 ,p_accounting_line_appl_id => l_component_appl_id
95035 ,p_amb_context_code => l_amb_context_code
95036 ,p_entity_code => l_entity_code
95037 ,p_event_class_code => l_event_class_code);
95038 --
95039 -- set accounting class
95040 --
95041 xla_ae_lines_pkg.SetAcctClass(
95042 p_accounting_class_code => 'OFFSET'
95043 , p_ae_header_id => l_ae_header_id
95044 );
95045
95046 --
95047 -- set rounding class
95048 --
95049 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
95050 'OFFSET';
95051
95052 --
95053 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
95054 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
95055 --
95056 -- bulk performance
95057 --
95058 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
95059
95060 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
95061 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
95062
95063 -- 4955764
95064 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
95065 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
95066
95067 -- 4458381 Public Sector Enh
95068
95069 --
95070 -- set accounting attributes for the line type
95071 --
95072 l_entered_amt_idx := 3;
95073 l_accted_amt_idx := 8;
95074 l_bflow_applied_to_amt_idx := NULL; -- 5132302
95075 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
95076 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
95077 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
95078 l_rec_acct_attrs.array_char_value(2) := p_source_12;
95079 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
95080 l_rec_acct_attrs.array_num_value(3) := p_source_18;
95081 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
95082 l_rec_acct_attrs.array_char_value(4) := p_source_15;
95083 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
95084 l_rec_acct_attrs.array_date_value(5) := p_source_19;
95085 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
95086 l_rec_acct_attrs.array_num_value(6) := p_source_20;
95087 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
95088 l_rec_acct_attrs.array_char_value(7) := p_source_21;
95089 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
95090 l_rec_acct_attrs.array_num_value(8) := p_source_22;
95091
95092 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
95093 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
95094
95095 ---------------------------------------------------------------------------------------------------------------
95096 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
95097 ---------------------------------------------------------------------------------------------------------------
95098 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
95099
95100 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
95101 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
95102
95103 IF xla_accounting_cache_pkg.GetValueChar
95104 (p_source_code => 'LEDGER_CATEGORY_CODE'
95105 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
95106 AND l_bflow_method_code = 'PRIOR_ENTRY'
95107 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
95108 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
95109 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
95110 )
95111 THEN
95112 xla_ae_lines_pkg.BflowUpgEntry
95113 (p_business_method_code => l_bflow_method_code
95114 ,p_business_class_code => l_bflow_class_code
95115 ,p_balance_type => l_balance_type_code);
95116 ELSE
95117 NULL;
95118 -- No business flow processing for business flow method of NONE.
95119 END IF;
95120
95121 --
95122 -- call analytical criteria
95123 --
95124
95125 --
95126 -- call description
95127 --
95128 -- No description or it is inherited.
95129 --
95130 -- call ADRs
95131 -- Bug 4922099
95132 --
95133 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
95134 (NVL(l_actual_upg_option, 'N') = 'O') OR
95135 (NVL(l_enc_upg_option, 'N') = 'O')
95136 )
95137 THEN
95138 NULL;
95139 --
95140 --
95141
95142 l_ccid := AcctDerRule_4(
95143 p_application_id => p_application_id
95144 , p_ae_header_id => l_ae_header_id
95145 , p_source_4 => p_source_4
95146 , x_transaction_coa_id => l_adr_transaction_coa_id
95147 , x_accounting_coa_id => l_adr_accounting_coa_id
95148 , x_value_type_code => l_adr_value_type_code
95149 , p_side => 'NA'
95150 );
95151
95152 xla_ae_lines_pkg.set_ccid(
95153 p_code_combination_id => l_ccid
95154 , p_value_type_code => l_adr_value_type_code
95155 , p_transaction_coa_id => l_adr_transaction_coa_id
95156 , p_accounting_coa_id => l_adr_accounting_coa_id
95157 , p_adr_code => 'CST_DEFAULT'
95158 , p_adr_type_code => 'S'
95159 , p_component_type => l_component_type
95160 , p_component_code => l_component_code
95161 , p_component_type_code => l_component_type_code
95162 , p_component_appl_id => l_component_appl_id
95163 , p_amb_context_code => l_amb_context_code
95164 , p_side => 'NA'
95165 );
95166
95167
95168 --
95169 --
95170 END IF;
95171 --
95172 -- Bug 4922099
95173 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
95174 (NVL(l_enc_upg_option, 'N') = 'O')
95175 ) AND
95176 (l_bflow_method_code = 'PRIOR_ENTRY')
95177 )
95178 THEN
95179 IF
95180 --
95181 1 = 2
95182 --
95183 THEN
95184 xla_accounting_err_pkg.build_message
95185 (p_appli_s_name => 'XLA'
95186 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
95187 ,p_token_1 => 'LINE_NUMBER'
95188 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
95189 ,p_token_2 => 'LINE_TYPE_NAME'
95190 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
95191 l_component_type
95192 ,l_component_code
95193 ,l_component_type_code
95194 ,l_component_appl_id
95195 ,l_amb_context_code
95196 ,l_entity_code
95197 ,l_event_class_code
95198 )
95199 ,p_token_3 => 'OWNER'
95200 ,p_value_3 => xla_lookups_pkg.get_meaning(
95201 p_lookup_type => 'XLA_OWNER_TYPE'
95202 ,p_lookup_code => l_component_type_code
95203 )
95204 ,p_token_4 => 'PRODUCT_NAME'
95205 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
95206 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
95207 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
95208 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
95209 ,p_ae_header_id => NULL
95210 );
95211
95212 IF (C_LEVEL_ERROR>= g_log_level) THEN
95213 trace
95214 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
95215 ,p_level => C_LEVEL_ERROR
95216 ,p_module => l_log_module);
95217 END IF;
95218 END IF;
95219 END IF;
95220 --
95221 --
95222 ------------------------------------------------------------------------------------------------
95223 -- 4219869 Business Flow
95224 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
95225 -- Prior Entry. Currently, the following code is always generated.
95226 ------------------------------------------------------------------------------------------------
95227 XLA_AE_LINES_PKG.ValidateCurrentLine;
95228
95229 ------------------------------------------------------------------------------------
95230 -- 4219869 Business Flow
95231 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
95232 ------------------------------------------------------------------------------------
95233 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
95234
95235 ----------------------------------------------------------------------------------
95236 -- 4219869 Business Flow
95237 -- Update journal entry status -- Need to generate this within IF <condition>
95238 ----------------------------------------------------------------------------------
95239 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
95240 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
95241 ,p_balance_type_code => l_balance_type_code
95242 );
95243
95244 -------------------------------------------------------------------------------------------
95245 -- 4262811 - Generate the Accrual Reversal lines
95246 -------------------------------------------------------------------------------------------
95247 BEGIN
95248 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
95249 (g_array_event(p_event_id).array_value_num('header_index'));
95250 IF l_acc_rev_flag IS NULL THEN
95251 l_acc_rev_flag := 'N';
95252 END IF;
95253 EXCEPTION
95254 WHEN OTHERS THEN
95255 l_acc_rev_flag := 'N';
95256 END;
95257 --
95258 IF (l_acc_rev_flag = 'Y') THEN
95259
95260 -- 4645092 ------------------------------------------------------------------------------
95261 -- To allow MPA report to determine if it should generate report process
95262 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
95263 ------------------------------------------------------------------------------------------
95264
95265 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
95266 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
95267 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
95268 -- call ADRs
95269 -- Bug 4922099
95270 --
95271 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
95272 (NVL(l_actual_upg_option, 'N') = 'O') OR
95273 (NVL(l_enc_upg_option, 'N') = 'O')
95274 )
95275 THEN
95276 NULL;
95277 --
95278 --
95279
95280 l_ccid := AcctDerRule_4(
95281 p_application_id => p_application_id
95282 , p_ae_header_id => l_ae_header_id
95283 , p_source_4 => p_source_4
95284 , x_transaction_coa_id => l_adr_transaction_coa_id
95285 , x_accounting_coa_id => l_adr_accounting_coa_id
95286 , x_value_type_code => l_adr_value_type_code
95287 , p_side => 'NA'
95288 );
95289
95290 xla_ae_lines_pkg.set_ccid(
95291 p_code_combination_id => l_ccid
95292 , p_value_type_code => l_adr_value_type_code
95293 , p_transaction_coa_id => l_adr_transaction_coa_id
95294 , p_accounting_coa_id => l_adr_accounting_coa_id
95295 , p_adr_code => 'CST_DEFAULT'
95296 , p_adr_type_code => 'S'
95297 , p_component_type => l_component_type
95298 , p_component_code => l_component_code
95299 , p_component_type_code => l_component_type_code
95300 , p_component_appl_id => l_component_appl_id
95301 , p_amb_context_code => l_amb_context_code
95302 , p_side => 'NA'
95303 );
95304
95305
95306 --
95307 --
95308 END IF;
95309
95310 --
95311 -- Update the line information that should be overwritten
95312 --
95313 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
95314 p_header_num => 1);
95315 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
95316
95317 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
95318
95319 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
95320 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
95321 END IF;
95322
95323 --
95324 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
95325 --
95326 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
95327 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
95328 ELSE
95329 ---------------------------------------------------------------------------------------------------
95330 -- 4262811a Switch Sign
95331 ---------------------------------------------------------------------------------------------------
95332 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
95333 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
95334 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
95335 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
95336 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
95337 -- 5132302
95338 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
95339 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
95340
95341 END IF;
95342
95343 -- 4955764
95344 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
95345 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
95346
95347
95348 XLA_AE_LINES_PKG.ValidateCurrentLine;
95349 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
95350
95351 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
95352 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
95353 ,p_balance_type_code => l_balance_type_code);
95354
95355 END IF;
95356
95357 -----------------------------------------------------------------------------------------
95358 -- 4262811 Multiperiod Accounting
95359 -----------------------------------------------------------------------------------------
95360 -- No MPA option is assigned.
95361
95362
95363 END IF;
95364 END IF;
95365 --
95366
95367 --
95368 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
95369 trace
95370 (p_msg => 'END of AcctLineType_173'
95371 ,p_level => C_LEVEL_PROCEDURE
95372 ,p_module => l_log_module);
95373 END IF;
95374 --
95375 EXCEPTION
95376 WHEN xla_exceptions_pkg.application_exception THEN
95377 RAISE;
95378 WHEN OTHERS THEN
95379 xla_exceptions_pkg.raise_message
95380 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_173');
95381 END AcctLineType_173;
95382 --
95383
95384 ---------------------------------------
95385 --
95386 -- PRIVATE FUNCTION
95387 -- AcctLineType_174
95388 --
95389 ---------------------------------------
95390 PROCEDURE AcctLineType_174 (
95391 p_application_id IN NUMBER
95392 ,p_event_id IN NUMBER
95393 ,p_calculate_acctd_flag IN VARCHAR2
95394 ,p_calculate_g_l_flag IN VARCHAR2
95395 ,p_actual_flag IN OUT VARCHAR2
95396 ,p_balance_type_code OUT VARCHAR2
95397 ,p_gain_or_loss_ref OUT VARCHAR2
95398
95399 --Cost Management Default Account
95400 , p_source_4 IN NUMBER
95401 --DISTRIBUTION_IDENTIFIER
95402 , p_source_11 IN NUMBER
95403 --Distribution Type
95404 , p_source_12 IN VARCHAR2
95405 , p_source_12_meaning IN VARCHAR2
95406 --Entered Currency Code
95407 , p_source_15 IN VARCHAR2
95408 --Entered Amount
95409 , p_source_18 IN NUMBER
95410 --Currency Conversion Date
95411 , p_source_19 IN DATE
95412 --Currency Conversion Rate
95413 , p_source_20 IN NUMBER
95414 --Currency Conversion Type
95415 , p_source_21 IN VARCHAR2
95416 --Accounted Amount
95417 , p_source_22 IN NUMBER
95418 --Accounting Line Type
95419 , p_source_24 IN NUMBER
95420 )
95421 IS
95422
95423 l_component_type VARCHAR2(80);
95424 l_component_code VARCHAR2(30);
95425 l_component_type_code VARCHAR2(1);
95426 l_component_appl_id INTEGER;
95427 l_amb_context_code VARCHAR2(30);
95428 l_entity_code VARCHAR2(30);
95429 l_event_class_code VARCHAR2(30);
95430 l_ae_header_id NUMBER;
95431 l_event_type_code VARCHAR2(30);
95432 l_line_definition_code VARCHAR2(30);
95433 l_line_definition_owner_code VARCHAR2(1);
95434 --
95435 -- adr variables
95436 l_segment VARCHAR2(30);
95437 l_ccid NUMBER;
95438 l_adr_transaction_coa_id NUMBER;
95439 l_adr_accounting_coa_id NUMBER;
95440 l_adr_flexfield_segment_code VARCHAR2(30);
95441 l_adr_flex_value_set_id NUMBER;
95442 l_adr_value_type_code VARCHAR2(30);
95443 l_adr_value_combination_id NUMBER;
95444 l_adr_value_segment_code VARCHAR2(30);
95445
95446 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
95447 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
95448 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
95449 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
95450
95451 -- 4262811 Variables ------------------------------------------------------------------------------------------
95452 l_entered_amt_idx NUMBER;
95453 l_accted_amt_idx NUMBER;
95454 l_acc_rev_flag VARCHAR2(1);
95455 l_accrual_line_num NUMBER;
95456 l_tmp_amt NUMBER;
95457 l_acc_rev_natural_side_code VARCHAR2(1);
95458
95459 l_num_entries NUMBER;
95460 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
95461 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
95462 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
95463 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
95464 l_recog_line_1 NUMBER;
95465 l_recog_line_2 NUMBER;
95466
95467 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
95468 l_bflow_applied_to_amt NUMBER; -- 5132302
95469 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
95470
95471 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
95472
95473 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
95474 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
95475
95476 ---------------------------------------------------------------------------------------------------------------
95477
95478
95479 --
95480 -- bulk performance
95481 --
95482 l_balance_type_code VARCHAR2(1);
95483 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
95484 l_log_module VARCHAR2(240);
95485
95486 --
95487 -- Upgrade strategy
95488 --
95489 l_actual_upg_option VARCHAR2(1);
95490 l_enc_upg_option VARCHAR2(1);
95491
95492 --
95493 BEGIN
95494 --
95495 IF g_log_enabled THEN
95496 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_174';
95497 END IF;
95498 --
95499 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
95500
95501 trace
95502 (p_msg => 'BEGIN of AcctLineType_174'
95503 ,p_level => C_LEVEL_PROCEDURE
95504 ,p_module => l_log_module);
95505
95506 END IF;
95507 --
95508 l_component_type := 'AMB_JLT';
95509 l_component_code := 'OFFSET';
95510 l_component_type_code := 'S';
95511 l_component_appl_id := 707;
95512 l_amb_context_code := 'DEFAULT';
95513 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
95514 l_event_class_code := 'USER_DEFINE';
95515 l_event_type_code := 'UMISC_ISSUE';
95516 l_line_definition_owner_code := 'S';
95517 l_line_definition_code := 'USER_ISSUE';
95518 --
95519 l_balance_type_code := 'A';
95520 l_segment := NULL;
95521 l_ccid := NULL;
95522 l_adr_transaction_coa_id := NULL;
95523 l_adr_accounting_coa_id := NULL;
95524 l_adr_flexfield_segment_code := NULL;
95525 l_adr_flex_value_set_id := NULL;
95526 l_adr_value_type_code := NULL;
95527 l_adr_value_combination_id := NULL;
95528 l_adr_value_segment_code := NULL;
95529
95530 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
95531 l_bflow_class_code := ''; -- 4219869 Business Flow
95532 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
95533 l_budgetary_control_flag := 'N';
95534
95535 l_bflow_applied_to_amt_idx := NULL; -- 5132302
95536 l_bflow_applied_to_amt := NULL; -- 5132302
95537 l_entered_amt_idx := NULL; -- 4262811
95538 l_accted_amt_idx := NULL; -- 4262811
95539 l_acc_rev_flag := NULL; -- 4262811
95540 l_accrual_line_num := NULL; -- 4262811
95541 l_tmp_amt := NULL; -- 4262811
95542 --
95543
95544 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
95545 l_balance_type_code <> 'B' THEN
95546 IF NVL(p_source_24,9E125) = 2
95547 THEN
95548
95549 --
95550 XLA_AE_LINES_PKG.SetNewLine;
95551
95552 p_balance_type_code := l_balance_type_code;
95553 -- set the flag so later we will know whether the gain loss line needs to be created
95554
95555 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
95556 p_actual_flag :='A';
95557 END IF;
95558
95559 --
95560 -- bulk performance
95561 --
95562 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
95563 p_header_num => 0); -- 4262811
95564 --
95565 -- set accounting line options
95566 --
95567 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
95568 p_natural_side_code => 'D'
95569 , p_gain_or_loss_flag => 'N'
95570 , p_gl_transfer_mode_code => 'S'
95571 , p_acct_entry_type_code => 'A'
95572 , p_switch_side_flag => 'Y'
95573 , p_merge_duplicate_code => 'N'
95574 );
95575 --
95576 l_acc_rev_natural_side_code := 'C'; -- 4262811
95577 --
95578 --
95579 -- set accounting line type info
95580 --
95581 xla_ae_lines_pkg.SetAcctLineType
95582 (p_component_type => l_component_type
95583 ,p_event_type_code => l_event_type_code
95584 ,p_line_definition_owner_code => l_line_definition_owner_code
95585 ,p_line_definition_code => l_line_definition_code
95586 ,p_accounting_line_code => l_component_code
95587 ,p_accounting_line_type_code => l_component_type_code
95588 ,p_accounting_line_appl_id => l_component_appl_id
95589 ,p_amb_context_code => l_amb_context_code
95590 ,p_entity_code => l_entity_code
95591 ,p_event_class_code => l_event_class_code);
95592 --
95593 -- set accounting class
95594 --
95595 xla_ae_lines_pkg.SetAcctClass(
95596 p_accounting_class_code => 'OFFSET'
95597 , p_ae_header_id => l_ae_header_id
95598 );
95599
95600 --
95601 -- set rounding class
95602 --
95603 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
95604 'OFFSET';
95605
95606 --
95607 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
95608 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
95609 --
95610 -- bulk performance
95611 --
95612 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
95613
95614 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
95615 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
95616
95617 -- 4955764
95618 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
95619 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
95620
95621 -- 4458381 Public Sector Enh
95622
95623 --
95624 -- set accounting attributes for the line type
95625 --
95626 l_entered_amt_idx := 3;
95627 l_accted_amt_idx := 8;
95628 l_bflow_applied_to_amt_idx := NULL; -- 5132302
95629 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
95630 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
95631 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
95632 l_rec_acct_attrs.array_char_value(2) := p_source_12;
95633 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
95634 l_rec_acct_attrs.array_num_value(3) := p_source_18;
95635 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
95636 l_rec_acct_attrs.array_char_value(4) := p_source_15;
95637 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
95638 l_rec_acct_attrs.array_date_value(5) := p_source_19;
95639 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
95640 l_rec_acct_attrs.array_num_value(6) := p_source_20;
95641 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
95642 l_rec_acct_attrs.array_char_value(7) := p_source_21;
95643 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
95644 l_rec_acct_attrs.array_num_value(8) := p_source_22;
95645
95646 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
95647 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
95648
95649 ---------------------------------------------------------------------------------------------------------------
95650 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
95651 ---------------------------------------------------------------------------------------------------------------
95652 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
95653
95654 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
95655 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
95656
95657 IF xla_accounting_cache_pkg.GetValueChar
95658 (p_source_code => 'LEDGER_CATEGORY_CODE'
95659 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
95660 AND l_bflow_method_code = 'PRIOR_ENTRY'
95661 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
95662 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
95663 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
95664 )
95665 THEN
95666 xla_ae_lines_pkg.BflowUpgEntry
95667 (p_business_method_code => l_bflow_method_code
95668 ,p_business_class_code => l_bflow_class_code
95669 ,p_balance_type => l_balance_type_code);
95670 ELSE
95671 NULL;
95672 -- No business flow processing for business flow method of NONE.
95673 END IF;
95674
95675 --
95676 -- call analytical criteria
95677 --
95678
95679 --
95680 -- call description
95681 --
95682 -- No description or it is inherited.
95683 --
95684 -- call ADRs
95685 -- Bug 4922099
95686 --
95687 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
95688 (NVL(l_actual_upg_option, 'N') = 'O') OR
95689 (NVL(l_enc_upg_option, 'N') = 'O')
95690 )
95691 THEN
95692 NULL;
95693 --
95694 --
95695
95696 l_ccid := AcctDerRule_4(
95697 p_application_id => p_application_id
95698 , p_ae_header_id => l_ae_header_id
95699 , p_source_4 => p_source_4
95700 , x_transaction_coa_id => l_adr_transaction_coa_id
95701 , x_accounting_coa_id => l_adr_accounting_coa_id
95702 , x_value_type_code => l_adr_value_type_code
95703 , p_side => 'NA'
95704 );
95705
95706 xla_ae_lines_pkg.set_ccid(
95707 p_code_combination_id => l_ccid
95708 , p_value_type_code => l_adr_value_type_code
95709 , p_transaction_coa_id => l_adr_transaction_coa_id
95710 , p_accounting_coa_id => l_adr_accounting_coa_id
95711 , p_adr_code => 'CST_DEFAULT'
95712 , p_adr_type_code => 'S'
95713 , p_component_type => l_component_type
95714 , p_component_code => l_component_code
95715 , p_component_type_code => l_component_type_code
95716 , p_component_appl_id => l_component_appl_id
95717 , p_amb_context_code => l_amb_context_code
95718 , p_side => 'NA'
95719 );
95720
95721
95722 --
95723 --
95724 END IF;
95725 --
95726 -- Bug 4922099
95727 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
95728 (NVL(l_enc_upg_option, 'N') = 'O')
95729 ) AND
95730 (l_bflow_method_code = 'PRIOR_ENTRY')
95731 )
95732 THEN
95733 IF
95734 --
95735 1 = 2
95736 --
95737 THEN
95738 xla_accounting_err_pkg.build_message
95739 (p_appli_s_name => 'XLA'
95740 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
95741 ,p_token_1 => 'LINE_NUMBER'
95742 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
95743 ,p_token_2 => 'LINE_TYPE_NAME'
95744 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
95745 l_component_type
95746 ,l_component_code
95747 ,l_component_type_code
95748 ,l_component_appl_id
95749 ,l_amb_context_code
95750 ,l_entity_code
95751 ,l_event_class_code
95752 )
95753 ,p_token_3 => 'OWNER'
95754 ,p_value_3 => xla_lookups_pkg.get_meaning(
95755 p_lookup_type => 'XLA_OWNER_TYPE'
95756 ,p_lookup_code => l_component_type_code
95757 )
95758 ,p_token_4 => 'PRODUCT_NAME'
95759 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
95760 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
95761 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
95762 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
95763 ,p_ae_header_id => NULL
95764 );
95765
95766 IF (C_LEVEL_ERROR>= g_log_level) THEN
95767 trace
95768 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
95769 ,p_level => C_LEVEL_ERROR
95770 ,p_module => l_log_module);
95771 END IF;
95772 END IF;
95773 END IF;
95774 --
95775 --
95776 ------------------------------------------------------------------------------------------------
95777 -- 4219869 Business Flow
95778 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
95779 -- Prior Entry. Currently, the following code is always generated.
95780 ------------------------------------------------------------------------------------------------
95781 XLA_AE_LINES_PKG.ValidateCurrentLine;
95782
95783 ------------------------------------------------------------------------------------
95784 -- 4219869 Business Flow
95785 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
95786 ------------------------------------------------------------------------------------
95787 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
95788
95789 ----------------------------------------------------------------------------------
95790 -- 4219869 Business Flow
95791 -- Update journal entry status -- Need to generate this within IF <condition>
95792 ----------------------------------------------------------------------------------
95793 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
95794 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
95795 ,p_balance_type_code => l_balance_type_code
95796 );
95797
95798 -------------------------------------------------------------------------------------------
95799 -- 4262811 - Generate the Accrual Reversal lines
95800 -------------------------------------------------------------------------------------------
95801 BEGIN
95802 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
95803 (g_array_event(p_event_id).array_value_num('header_index'));
95804 IF l_acc_rev_flag IS NULL THEN
95805 l_acc_rev_flag := 'N';
95806 END IF;
95807 EXCEPTION
95808 WHEN OTHERS THEN
95809 l_acc_rev_flag := 'N';
95810 END;
95811 --
95812 IF (l_acc_rev_flag = 'Y') THEN
95813
95814 -- 4645092 ------------------------------------------------------------------------------
95815 -- To allow MPA report to determine if it should generate report process
95816 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
95817 ------------------------------------------------------------------------------------------
95818
95819 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
95820 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
95821 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
95822 -- call ADRs
95823 -- Bug 4922099
95824 --
95825 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
95826 (NVL(l_actual_upg_option, 'N') = 'O') OR
95827 (NVL(l_enc_upg_option, 'N') = 'O')
95828 )
95829 THEN
95830 NULL;
95831 --
95832 --
95833
95834 l_ccid := AcctDerRule_4(
95835 p_application_id => p_application_id
95836 , p_ae_header_id => l_ae_header_id
95837 , p_source_4 => p_source_4
95838 , x_transaction_coa_id => l_adr_transaction_coa_id
95839 , x_accounting_coa_id => l_adr_accounting_coa_id
95840 , x_value_type_code => l_adr_value_type_code
95841 , p_side => 'NA'
95842 );
95843
95844 xla_ae_lines_pkg.set_ccid(
95845 p_code_combination_id => l_ccid
95846 , p_value_type_code => l_adr_value_type_code
95847 , p_transaction_coa_id => l_adr_transaction_coa_id
95848 , p_accounting_coa_id => l_adr_accounting_coa_id
95849 , p_adr_code => 'CST_DEFAULT'
95850 , p_adr_type_code => 'S'
95851 , p_component_type => l_component_type
95852 , p_component_code => l_component_code
95853 , p_component_type_code => l_component_type_code
95854 , p_component_appl_id => l_component_appl_id
95855 , p_amb_context_code => l_amb_context_code
95856 , p_side => 'NA'
95857 );
95858
95859
95860 --
95861 --
95862 END IF;
95863
95864 --
95865 -- Update the line information that should be overwritten
95866 --
95867 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
95868 p_header_num => 1);
95869 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
95870
95871 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
95872
95873 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
95874 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
95875 END IF;
95876
95877 --
95878 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
95879 --
95880 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
95881 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
95882 ELSE
95883 ---------------------------------------------------------------------------------------------------
95884 -- 4262811a Switch Sign
95885 ---------------------------------------------------------------------------------------------------
95886 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
95887 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
95888 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
95889 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
95890 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
95891 -- 5132302
95892 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
95893 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
95894
95895 END IF;
95896
95897 -- 4955764
95898 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
95899 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
95900
95901
95902 XLA_AE_LINES_PKG.ValidateCurrentLine;
95903 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
95904
95905 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
95906 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
95907 ,p_balance_type_code => l_balance_type_code);
95908
95909 END IF;
95910
95911 -----------------------------------------------------------------------------------------
95912 -- 4262811 Multiperiod Accounting
95913 -----------------------------------------------------------------------------------------
95914 -- No MPA option is assigned.
95915
95916
95917 END IF;
95918 END IF;
95919 --
95920
95921 --
95922 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
95923 trace
95924 (p_msg => 'END of AcctLineType_174'
95925 ,p_level => C_LEVEL_PROCEDURE
95926 ,p_module => l_log_module);
95927 END IF;
95928 --
95929 EXCEPTION
95930 WHEN xla_exceptions_pkg.application_exception THEN
95931 RAISE;
95932 WHEN OTHERS THEN
95933 xla_exceptions_pkg.raise_message
95934 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_174');
95935 END AcctLineType_174;
95936 --
95937
95938 ---------------------------------------
95939 --
95940 -- PRIVATE FUNCTION
95941 -- AcctLineType_175
95942 --
95943 ---------------------------------------
95944 PROCEDURE AcctLineType_175 (
95945 p_application_id IN NUMBER
95946 ,p_event_id IN NUMBER
95947 ,p_calculate_acctd_flag IN VARCHAR2
95948 ,p_calculate_g_l_flag IN VARCHAR2
95949 ,p_actual_flag IN OUT VARCHAR2
95950 ,p_balance_type_code OUT VARCHAR2
95951 ,p_gain_or_loss_ref OUT VARCHAR2
95952
95953 --Cost Management Default Account
95954 , p_source_4 IN NUMBER
95955 --DISTRIBUTION_IDENTIFIER
95956 , p_source_11 IN NUMBER
95957 --Distribution Type
95958 , p_source_12 IN VARCHAR2
95959 , p_source_12_meaning IN VARCHAR2
95960 --Entered Currency Code
95961 , p_source_15 IN VARCHAR2
95962 --Entered Amount
95963 , p_source_18 IN NUMBER
95964 --Currency Conversion Date
95965 , p_source_19 IN DATE
95966 --Currency Conversion Rate
95967 , p_source_20 IN NUMBER
95968 --Currency Conversion Type
95969 , p_source_21 IN VARCHAR2
95970 --Accounted Amount
95971 , p_source_22 IN NUMBER
95972 --Accounting Line Type
95973 , p_source_24 IN NUMBER
95974 )
95975 IS
95976
95977 l_component_type VARCHAR2(80);
95978 l_component_code VARCHAR2(30);
95979 l_component_type_code VARCHAR2(1);
95980 l_component_appl_id INTEGER;
95981 l_amb_context_code VARCHAR2(30);
95982 l_entity_code VARCHAR2(30);
95983 l_event_class_code VARCHAR2(30);
95984 l_ae_header_id NUMBER;
95985 l_event_type_code VARCHAR2(30);
95986 l_line_definition_code VARCHAR2(30);
95987 l_line_definition_owner_code VARCHAR2(1);
95988 --
95989 -- adr variables
95990 l_segment VARCHAR2(30);
95991 l_ccid NUMBER;
95992 l_adr_transaction_coa_id NUMBER;
95993 l_adr_accounting_coa_id NUMBER;
95994 l_adr_flexfield_segment_code VARCHAR2(30);
95995 l_adr_flex_value_set_id NUMBER;
95996 l_adr_value_type_code VARCHAR2(30);
95997 l_adr_value_combination_id NUMBER;
95998 l_adr_value_segment_code VARCHAR2(30);
95999
96000 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
96001 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
96002 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
96003 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
96004
96005 -- 4262811 Variables ------------------------------------------------------------------------------------------
96006 l_entered_amt_idx NUMBER;
96007 l_accted_amt_idx NUMBER;
96008 l_acc_rev_flag VARCHAR2(1);
96009 l_accrual_line_num NUMBER;
96010 l_tmp_amt NUMBER;
96011 l_acc_rev_natural_side_code VARCHAR2(1);
96012
96013 l_num_entries NUMBER;
96014 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
96015 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
96016 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
96017 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
96018 l_recog_line_1 NUMBER;
96019 l_recog_line_2 NUMBER;
96020
96021 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
96022 l_bflow_applied_to_amt NUMBER; -- 5132302
96023 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
96024
96025 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
96026
96027 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
96028 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
96029
96030 ---------------------------------------------------------------------------------------------------------------
96031
96032
96033 --
96034 -- bulk performance
96035 --
96036 l_balance_type_code VARCHAR2(1);
96037 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
96038 l_log_module VARCHAR2(240);
96039
96040 --
96041 -- Upgrade strategy
96042 --
96043 l_actual_upg_option VARCHAR2(1);
96044 l_enc_upg_option VARCHAR2(1);
96045
96046 --
96047 BEGIN
96048 --
96049 IF g_log_enabled THEN
96050 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_175';
96051 END IF;
96052 --
96053 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
96054
96055 trace
96056 (p_msg => 'BEGIN of AcctLineType_175'
96057 ,p_level => C_LEVEL_PROCEDURE
96058 ,p_module => l_log_module);
96059
96060 END IF;
96061 --
96062 l_component_type := 'AMB_JLT';
96063 l_component_code := 'OFFSET';
96064 l_component_type_code := 'S';
96065 l_component_appl_id := 707;
96066 l_amb_context_code := 'DEFAULT';
96067 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
96068 l_event_class_code := 'USER_DEFINE';
96069 l_event_type_code := 'UFOB_SHIP_RECIPIENT_SHIP_TP';
96070 l_line_definition_owner_code := 'S';
96071 l_line_definition_code := 'USER_FOB_SHIP_RECP_SHIP_TP';
96072 --
96073 l_balance_type_code := 'A';
96074 l_segment := NULL;
96075 l_ccid := NULL;
96076 l_adr_transaction_coa_id := NULL;
96077 l_adr_accounting_coa_id := NULL;
96078 l_adr_flexfield_segment_code := NULL;
96079 l_adr_flex_value_set_id := NULL;
96080 l_adr_value_type_code := NULL;
96081 l_adr_value_combination_id := NULL;
96082 l_adr_value_segment_code := NULL;
96083
96084 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
96085 l_bflow_class_code := ''; -- 4219869 Business Flow
96086 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
96087 l_budgetary_control_flag := 'N';
96088
96089 l_bflow_applied_to_amt_idx := NULL; -- 5132302
96090 l_bflow_applied_to_amt := NULL; -- 5132302
96091 l_entered_amt_idx := NULL; -- 4262811
96092 l_accted_amt_idx := NULL; -- 4262811
96093 l_acc_rev_flag := NULL; -- 4262811
96094 l_accrual_line_num := NULL; -- 4262811
96095 l_tmp_amt := NULL; -- 4262811
96096 --
96097
96098 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
96099 l_balance_type_code <> 'B' THEN
96100 IF NVL(p_source_24,9E125) = 2
96101 THEN
96102
96103 --
96104 XLA_AE_LINES_PKG.SetNewLine;
96105
96106 p_balance_type_code := l_balance_type_code;
96107 -- set the flag so later we will know whether the gain loss line needs to be created
96108
96109 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
96110 p_actual_flag :='A';
96111 END IF;
96112
96113 --
96114 -- bulk performance
96115 --
96116 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
96117 p_header_num => 0); -- 4262811
96118 --
96119 -- set accounting line options
96120 --
96121 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
96122 p_natural_side_code => 'D'
96123 , p_gain_or_loss_flag => 'N'
96124 , p_gl_transfer_mode_code => 'S'
96125 , p_acct_entry_type_code => 'A'
96126 , p_switch_side_flag => 'Y'
96127 , p_merge_duplicate_code => 'N'
96128 );
96129 --
96130 l_acc_rev_natural_side_code := 'C'; -- 4262811
96131 --
96132 --
96133 -- set accounting line type info
96134 --
96135 xla_ae_lines_pkg.SetAcctLineType
96136 (p_component_type => l_component_type
96137 ,p_event_type_code => l_event_type_code
96138 ,p_line_definition_owner_code => l_line_definition_owner_code
96139 ,p_line_definition_code => l_line_definition_code
96140 ,p_accounting_line_code => l_component_code
96141 ,p_accounting_line_type_code => l_component_type_code
96142 ,p_accounting_line_appl_id => l_component_appl_id
96143 ,p_amb_context_code => l_amb_context_code
96144 ,p_entity_code => l_entity_code
96145 ,p_event_class_code => l_event_class_code);
96146 --
96147 -- set accounting class
96148 --
96149 xla_ae_lines_pkg.SetAcctClass(
96150 p_accounting_class_code => 'OFFSET'
96151 , p_ae_header_id => l_ae_header_id
96152 );
96153
96154 --
96155 -- set rounding class
96156 --
96157 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
96158 'OFFSET';
96159
96160 --
96161 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
96162 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
96163 --
96164 -- bulk performance
96165 --
96166 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
96167
96168 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
96169 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
96170
96171 -- 4955764
96172 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
96173 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
96174
96175 -- 4458381 Public Sector Enh
96176
96177 --
96178 -- set accounting attributes for the line type
96179 --
96180 l_entered_amt_idx := 3;
96181 l_accted_amt_idx := 8;
96182 l_bflow_applied_to_amt_idx := NULL; -- 5132302
96183 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
96184 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
96185 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
96186 l_rec_acct_attrs.array_char_value(2) := p_source_12;
96187 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
96188 l_rec_acct_attrs.array_num_value(3) := p_source_18;
96189 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
96190 l_rec_acct_attrs.array_char_value(4) := p_source_15;
96191 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
96192 l_rec_acct_attrs.array_date_value(5) := p_source_19;
96193 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
96194 l_rec_acct_attrs.array_num_value(6) := p_source_20;
96195 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
96196 l_rec_acct_attrs.array_char_value(7) := p_source_21;
96197 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
96198 l_rec_acct_attrs.array_num_value(8) := p_source_22;
96199
96200 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
96201 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
96202
96203 ---------------------------------------------------------------------------------------------------------------
96204 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
96205 ---------------------------------------------------------------------------------------------------------------
96206 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
96207
96208 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
96209 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
96210
96211 IF xla_accounting_cache_pkg.GetValueChar
96212 (p_source_code => 'LEDGER_CATEGORY_CODE'
96213 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
96214 AND l_bflow_method_code = 'PRIOR_ENTRY'
96215 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
96216 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
96217 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
96218 )
96219 THEN
96220 xla_ae_lines_pkg.BflowUpgEntry
96221 (p_business_method_code => l_bflow_method_code
96222 ,p_business_class_code => l_bflow_class_code
96223 ,p_balance_type => l_balance_type_code);
96224 ELSE
96225 NULL;
96226 -- No business flow processing for business flow method of NONE.
96227 END IF;
96228
96229 --
96230 -- call analytical criteria
96231 --
96232
96233 --
96234 -- call description
96235 --
96236 -- No description or it is inherited.
96237 --
96238 -- call ADRs
96239 -- Bug 4922099
96240 --
96241 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
96242 (NVL(l_actual_upg_option, 'N') = 'O') OR
96243 (NVL(l_enc_upg_option, 'N') = 'O')
96244 )
96245 THEN
96246 NULL;
96247 --
96248 --
96249
96250 l_ccid := AcctDerRule_4(
96251 p_application_id => p_application_id
96252 , p_ae_header_id => l_ae_header_id
96253 , p_source_4 => p_source_4
96254 , x_transaction_coa_id => l_adr_transaction_coa_id
96255 , x_accounting_coa_id => l_adr_accounting_coa_id
96256 , x_value_type_code => l_adr_value_type_code
96257 , p_side => 'NA'
96258 );
96259
96260 xla_ae_lines_pkg.set_ccid(
96261 p_code_combination_id => l_ccid
96262 , p_value_type_code => l_adr_value_type_code
96263 , p_transaction_coa_id => l_adr_transaction_coa_id
96264 , p_accounting_coa_id => l_adr_accounting_coa_id
96265 , p_adr_code => 'CST_DEFAULT'
96266 , p_adr_type_code => 'S'
96267 , p_component_type => l_component_type
96268 , p_component_code => l_component_code
96269 , p_component_type_code => l_component_type_code
96270 , p_component_appl_id => l_component_appl_id
96271 , p_amb_context_code => l_amb_context_code
96272 , p_side => 'NA'
96273 );
96274
96275
96276 --
96277 --
96278 END IF;
96279 --
96280 -- Bug 4922099
96281 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
96282 (NVL(l_enc_upg_option, 'N') = 'O')
96283 ) AND
96284 (l_bflow_method_code = 'PRIOR_ENTRY')
96285 )
96286 THEN
96287 IF
96288 --
96289 1 = 2
96290 --
96291 THEN
96292 xla_accounting_err_pkg.build_message
96293 (p_appli_s_name => 'XLA'
96294 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
96295 ,p_token_1 => 'LINE_NUMBER'
96296 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
96297 ,p_token_2 => 'LINE_TYPE_NAME'
96298 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
96299 l_component_type
96300 ,l_component_code
96301 ,l_component_type_code
96302 ,l_component_appl_id
96303 ,l_amb_context_code
96304 ,l_entity_code
96305 ,l_event_class_code
96306 )
96307 ,p_token_3 => 'OWNER'
96308 ,p_value_3 => xla_lookups_pkg.get_meaning(
96309 p_lookup_type => 'XLA_OWNER_TYPE'
96310 ,p_lookup_code => l_component_type_code
96311 )
96312 ,p_token_4 => 'PRODUCT_NAME'
96313 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
96314 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
96315 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
96316 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
96317 ,p_ae_header_id => NULL
96318 );
96319
96320 IF (C_LEVEL_ERROR>= g_log_level) THEN
96321 trace
96322 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
96323 ,p_level => C_LEVEL_ERROR
96324 ,p_module => l_log_module);
96325 END IF;
96326 END IF;
96327 END IF;
96328 --
96329 --
96330 ------------------------------------------------------------------------------------------------
96331 -- 4219869 Business Flow
96332 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
96333 -- Prior Entry. Currently, the following code is always generated.
96334 ------------------------------------------------------------------------------------------------
96335 XLA_AE_LINES_PKG.ValidateCurrentLine;
96336
96337 ------------------------------------------------------------------------------------
96338 -- 4219869 Business Flow
96339 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
96340 ------------------------------------------------------------------------------------
96341 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
96342
96343 ----------------------------------------------------------------------------------
96344 -- 4219869 Business Flow
96345 -- Update journal entry status -- Need to generate this within IF <condition>
96346 ----------------------------------------------------------------------------------
96347 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
96348 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
96349 ,p_balance_type_code => l_balance_type_code
96350 );
96351
96352 -------------------------------------------------------------------------------------------
96353 -- 4262811 - Generate the Accrual Reversal lines
96354 -------------------------------------------------------------------------------------------
96355 BEGIN
96356 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
96357 (g_array_event(p_event_id).array_value_num('header_index'));
96358 IF l_acc_rev_flag IS NULL THEN
96359 l_acc_rev_flag := 'N';
96360 END IF;
96361 EXCEPTION
96362 WHEN OTHERS THEN
96363 l_acc_rev_flag := 'N';
96364 END;
96365 --
96366 IF (l_acc_rev_flag = 'Y') THEN
96367
96368 -- 4645092 ------------------------------------------------------------------------------
96369 -- To allow MPA report to determine if it should generate report process
96370 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
96371 ------------------------------------------------------------------------------------------
96372
96373 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
96374 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
96375 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
96376 -- call ADRs
96377 -- Bug 4922099
96378 --
96379 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
96380 (NVL(l_actual_upg_option, 'N') = 'O') OR
96381 (NVL(l_enc_upg_option, 'N') = 'O')
96382 )
96383 THEN
96384 NULL;
96385 --
96386 --
96387
96388 l_ccid := AcctDerRule_4(
96389 p_application_id => p_application_id
96390 , p_ae_header_id => l_ae_header_id
96391 , p_source_4 => p_source_4
96392 , x_transaction_coa_id => l_adr_transaction_coa_id
96393 , x_accounting_coa_id => l_adr_accounting_coa_id
96394 , x_value_type_code => l_adr_value_type_code
96395 , p_side => 'NA'
96396 );
96397
96398 xla_ae_lines_pkg.set_ccid(
96399 p_code_combination_id => l_ccid
96400 , p_value_type_code => l_adr_value_type_code
96401 , p_transaction_coa_id => l_adr_transaction_coa_id
96402 , p_accounting_coa_id => l_adr_accounting_coa_id
96403 , p_adr_code => 'CST_DEFAULT'
96404 , p_adr_type_code => 'S'
96405 , p_component_type => l_component_type
96406 , p_component_code => l_component_code
96407 , p_component_type_code => l_component_type_code
96408 , p_component_appl_id => l_component_appl_id
96409 , p_amb_context_code => l_amb_context_code
96410 , p_side => 'NA'
96411 );
96412
96413
96414 --
96415 --
96416 END IF;
96417
96418 --
96419 -- Update the line information that should be overwritten
96420 --
96421 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
96422 p_header_num => 1);
96423 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
96424
96425 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
96426
96427 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
96428 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
96429 END IF;
96430
96431 --
96432 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
96433 --
96434 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
96435 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
96436 ELSE
96437 ---------------------------------------------------------------------------------------------------
96438 -- 4262811a Switch Sign
96439 ---------------------------------------------------------------------------------------------------
96440 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
96441 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
96442 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
96443 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
96444 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
96445 -- 5132302
96446 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
96447 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
96448
96449 END IF;
96450
96451 -- 4955764
96452 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
96453 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
96454
96455
96456 XLA_AE_LINES_PKG.ValidateCurrentLine;
96457 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
96458
96459 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
96460 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
96461 ,p_balance_type_code => l_balance_type_code);
96462
96463 END IF;
96464
96465 -----------------------------------------------------------------------------------------
96466 -- 4262811 Multiperiod Accounting
96467 -----------------------------------------------------------------------------------------
96468 -- No MPA option is assigned.
96469
96470
96471 END IF;
96472 END IF;
96473 --
96474
96475 --
96476 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
96477 trace
96478 (p_msg => 'END of AcctLineType_175'
96479 ,p_level => C_LEVEL_PROCEDURE
96480 ,p_module => l_log_module);
96481 END IF;
96482 --
96483 EXCEPTION
96484 WHEN xla_exceptions_pkg.application_exception THEN
96485 RAISE;
96486 WHEN OTHERS THEN
96487 xla_exceptions_pkg.raise_message
96488 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_175');
96489 END AcctLineType_175;
96490 --
96491
96492 ---------------------------------------
96493 --
96494 -- PRIVATE FUNCTION
96495 -- AcctLineType_176
96496 --
96497 ---------------------------------------
96498 PROCEDURE AcctLineType_176 (
96499 p_application_id IN NUMBER
96500 ,p_event_id IN NUMBER
96501 ,p_calculate_acctd_flag IN VARCHAR2
96502 ,p_calculate_g_l_flag IN VARCHAR2
96503 ,p_actual_flag IN OUT VARCHAR2
96504 ,p_balance_type_code OUT VARCHAR2
96505 ,p_gain_or_loss_ref OUT VARCHAR2
96506
96507 --Cost Management Default Account
96508 , p_source_4 IN NUMBER
96509 --DISTRIBUTION_IDENTIFIER
96510 , p_source_11 IN NUMBER
96511 --Distribution Type
96512 , p_source_12 IN VARCHAR2
96513 , p_source_12_meaning IN VARCHAR2
96514 --Entered Currency Code
96515 , p_source_15 IN VARCHAR2
96516 --Entered Amount
96517 , p_source_18 IN NUMBER
96518 --Currency Conversion Date
96519 , p_source_19 IN DATE
96520 --Currency Conversion Rate
96521 , p_source_20 IN NUMBER
96522 --Currency Conversion Type
96523 , p_source_21 IN VARCHAR2
96524 --Accounted Amount
96525 , p_source_22 IN NUMBER
96526 --Accounting Line Type
96527 , p_source_24 IN NUMBER
96528 )
96529 IS
96530
96531 l_component_type VARCHAR2(80);
96532 l_component_code VARCHAR2(30);
96533 l_component_type_code VARCHAR2(1);
96534 l_component_appl_id INTEGER;
96535 l_amb_context_code VARCHAR2(30);
96536 l_entity_code VARCHAR2(30);
96537 l_event_class_code VARCHAR2(30);
96538 l_ae_header_id NUMBER;
96539 l_event_type_code VARCHAR2(30);
96540 l_line_definition_code VARCHAR2(30);
96541 l_line_definition_owner_code VARCHAR2(1);
96542 --
96543 -- adr variables
96544 l_segment VARCHAR2(30);
96545 l_ccid NUMBER;
96546 l_adr_transaction_coa_id NUMBER;
96547 l_adr_accounting_coa_id NUMBER;
96548 l_adr_flexfield_segment_code VARCHAR2(30);
96549 l_adr_flex_value_set_id NUMBER;
96550 l_adr_value_type_code VARCHAR2(30);
96551 l_adr_value_combination_id NUMBER;
96552 l_adr_value_segment_code VARCHAR2(30);
96553
96554 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
96555 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
96556 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
96557 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
96558
96559 -- 4262811 Variables ------------------------------------------------------------------------------------------
96560 l_entered_amt_idx NUMBER;
96561 l_accted_amt_idx NUMBER;
96562 l_acc_rev_flag VARCHAR2(1);
96563 l_accrual_line_num NUMBER;
96564 l_tmp_amt NUMBER;
96565 l_acc_rev_natural_side_code VARCHAR2(1);
96566
96567 l_num_entries NUMBER;
96568 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
96569 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
96570 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
96571 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
96572 l_recog_line_1 NUMBER;
96573 l_recog_line_2 NUMBER;
96574
96575 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
96576 l_bflow_applied_to_amt NUMBER; -- 5132302
96577 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
96578
96579 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
96580
96581 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
96582 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
96583
96584 ---------------------------------------------------------------------------------------------------------------
96585
96586
96587 --
96588 -- bulk performance
96589 --
96590 l_balance_type_code VARCHAR2(1);
96591 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
96592 l_log_module VARCHAR2(240);
96593
96594 --
96595 -- Upgrade strategy
96596 --
96597 l_actual_upg_option VARCHAR2(1);
96598 l_enc_upg_option VARCHAR2(1);
96599
96600 --
96601 BEGIN
96602 --
96603 IF g_log_enabled THEN
96604 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_176';
96605 END IF;
96606 --
96607 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
96608
96609 trace
96610 (p_msg => 'BEGIN of AcctLineType_176'
96611 ,p_level => C_LEVEL_PROCEDURE
96612 ,p_module => l_log_module);
96613
96614 END IF;
96615 --
96616 l_component_type := 'AMB_JLT';
96617 l_component_code := 'OFFSET';
96618 l_component_type_code := 'S';
96619 l_component_appl_id := 707;
96620 l_amb_context_code := 'DEFAULT';
96621 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
96622 l_event_class_code := 'USER_DEFINE';
96623 l_event_type_code := 'USUB_TXFR';
96624 l_line_definition_owner_code := 'S';
96625 l_line_definition_code := 'USER_SUB_TXFR';
96626 --
96627 l_balance_type_code := 'A';
96628 l_segment := NULL;
96629 l_ccid := NULL;
96630 l_adr_transaction_coa_id := NULL;
96631 l_adr_accounting_coa_id := NULL;
96632 l_adr_flexfield_segment_code := NULL;
96633 l_adr_flex_value_set_id := NULL;
96634 l_adr_value_type_code := NULL;
96635 l_adr_value_combination_id := NULL;
96636 l_adr_value_segment_code := NULL;
96637
96638 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
96639 l_bflow_class_code := ''; -- 4219869 Business Flow
96640 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
96641 l_budgetary_control_flag := 'N';
96642
96643 l_bflow_applied_to_amt_idx := NULL; -- 5132302
96644 l_bflow_applied_to_amt := NULL; -- 5132302
96645 l_entered_amt_idx := NULL; -- 4262811
96646 l_accted_amt_idx := NULL; -- 4262811
96647 l_acc_rev_flag := NULL; -- 4262811
96648 l_accrual_line_num := NULL; -- 4262811
96649 l_tmp_amt := NULL; -- 4262811
96650 --
96651
96652 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
96653 l_balance_type_code <> 'B' THEN
96654 IF NVL(p_source_24,9E125) = 2
96655 THEN
96656
96657 --
96658 XLA_AE_LINES_PKG.SetNewLine;
96659
96660 p_balance_type_code := l_balance_type_code;
96661 -- set the flag so later we will know whether the gain loss line needs to be created
96662
96663 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
96664 p_actual_flag :='A';
96665 END IF;
96666
96667 --
96668 -- bulk performance
96669 --
96670 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
96671 p_header_num => 0); -- 4262811
96672 --
96673 -- set accounting line options
96674 --
96675 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
96676 p_natural_side_code => 'D'
96677 , p_gain_or_loss_flag => 'N'
96678 , p_gl_transfer_mode_code => 'S'
96679 , p_acct_entry_type_code => 'A'
96680 , p_switch_side_flag => 'Y'
96681 , p_merge_duplicate_code => 'N'
96682 );
96683 --
96684 l_acc_rev_natural_side_code := 'C'; -- 4262811
96685 --
96686 --
96687 -- set accounting line type info
96688 --
96689 xla_ae_lines_pkg.SetAcctLineType
96690 (p_component_type => l_component_type
96691 ,p_event_type_code => l_event_type_code
96692 ,p_line_definition_owner_code => l_line_definition_owner_code
96693 ,p_line_definition_code => l_line_definition_code
96694 ,p_accounting_line_code => l_component_code
96695 ,p_accounting_line_type_code => l_component_type_code
96696 ,p_accounting_line_appl_id => l_component_appl_id
96697 ,p_amb_context_code => l_amb_context_code
96698 ,p_entity_code => l_entity_code
96699 ,p_event_class_code => l_event_class_code);
96700 --
96701 -- set accounting class
96702 --
96703 xla_ae_lines_pkg.SetAcctClass(
96704 p_accounting_class_code => 'OFFSET'
96705 , p_ae_header_id => l_ae_header_id
96706 );
96707
96708 --
96709 -- set rounding class
96710 --
96711 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
96712 'OFFSET';
96713
96714 --
96715 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
96716 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
96717 --
96718 -- bulk performance
96719 --
96720 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
96721
96722 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
96723 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
96724
96725 -- 4955764
96726 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
96727 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
96728
96729 -- 4458381 Public Sector Enh
96730
96731 --
96732 -- set accounting attributes for the line type
96733 --
96734 l_entered_amt_idx := 3;
96735 l_accted_amt_idx := 8;
96736 l_bflow_applied_to_amt_idx := NULL; -- 5132302
96737 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
96738 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
96739 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
96740 l_rec_acct_attrs.array_char_value(2) := p_source_12;
96741 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
96742 l_rec_acct_attrs.array_num_value(3) := p_source_18;
96743 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
96744 l_rec_acct_attrs.array_char_value(4) := p_source_15;
96745 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
96746 l_rec_acct_attrs.array_date_value(5) := p_source_19;
96747 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
96748 l_rec_acct_attrs.array_num_value(6) := p_source_20;
96749 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
96750 l_rec_acct_attrs.array_char_value(7) := p_source_21;
96751 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
96752 l_rec_acct_attrs.array_num_value(8) := p_source_22;
96753
96754 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
96755 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
96756
96757 ---------------------------------------------------------------------------------------------------------------
96758 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
96759 ---------------------------------------------------------------------------------------------------------------
96760 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
96761
96762 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
96763 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
96764
96765 IF xla_accounting_cache_pkg.GetValueChar
96766 (p_source_code => 'LEDGER_CATEGORY_CODE'
96767 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
96768 AND l_bflow_method_code = 'PRIOR_ENTRY'
96769 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
96770 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
96771 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
96772 )
96773 THEN
96774 xla_ae_lines_pkg.BflowUpgEntry
96775 (p_business_method_code => l_bflow_method_code
96776 ,p_business_class_code => l_bflow_class_code
96777 ,p_balance_type => l_balance_type_code);
96778 ELSE
96779 NULL;
96780 -- No business flow processing for business flow method of NONE.
96781 END IF;
96782
96783 --
96784 -- call analytical criteria
96785 --
96786
96787 --
96788 -- call description
96789 --
96790 -- No description or it is inherited.
96791 --
96792 -- call ADRs
96793 -- Bug 4922099
96794 --
96795 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
96796 (NVL(l_actual_upg_option, 'N') = 'O') OR
96797 (NVL(l_enc_upg_option, 'N') = 'O')
96798 )
96799 THEN
96800 NULL;
96801 --
96802 --
96803
96804 l_ccid := AcctDerRule_4(
96805 p_application_id => p_application_id
96806 , p_ae_header_id => l_ae_header_id
96807 , p_source_4 => p_source_4
96808 , x_transaction_coa_id => l_adr_transaction_coa_id
96809 , x_accounting_coa_id => l_adr_accounting_coa_id
96810 , x_value_type_code => l_adr_value_type_code
96811 , p_side => 'NA'
96812 );
96813
96814 xla_ae_lines_pkg.set_ccid(
96815 p_code_combination_id => l_ccid
96816 , p_value_type_code => l_adr_value_type_code
96817 , p_transaction_coa_id => l_adr_transaction_coa_id
96818 , p_accounting_coa_id => l_adr_accounting_coa_id
96819 , p_adr_code => 'CST_DEFAULT'
96820 , p_adr_type_code => 'S'
96821 , p_component_type => l_component_type
96822 , p_component_code => l_component_code
96823 , p_component_type_code => l_component_type_code
96824 , p_component_appl_id => l_component_appl_id
96825 , p_amb_context_code => l_amb_context_code
96826 , p_side => 'NA'
96827 );
96828
96829
96830 --
96831 --
96832 END IF;
96833 --
96834 -- Bug 4922099
96835 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
96836 (NVL(l_enc_upg_option, 'N') = 'O')
96837 ) AND
96838 (l_bflow_method_code = 'PRIOR_ENTRY')
96839 )
96840 THEN
96841 IF
96842 --
96843 1 = 2
96844 --
96845 THEN
96846 xla_accounting_err_pkg.build_message
96847 (p_appli_s_name => 'XLA'
96848 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
96849 ,p_token_1 => 'LINE_NUMBER'
96850 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
96851 ,p_token_2 => 'LINE_TYPE_NAME'
96852 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
96853 l_component_type
96854 ,l_component_code
96855 ,l_component_type_code
96856 ,l_component_appl_id
96857 ,l_amb_context_code
96858 ,l_entity_code
96859 ,l_event_class_code
96860 )
96861 ,p_token_3 => 'OWNER'
96862 ,p_value_3 => xla_lookups_pkg.get_meaning(
96863 p_lookup_type => 'XLA_OWNER_TYPE'
96864 ,p_lookup_code => l_component_type_code
96865 )
96866 ,p_token_4 => 'PRODUCT_NAME'
96867 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
96868 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
96869 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
96870 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
96871 ,p_ae_header_id => NULL
96872 );
96873
96874 IF (C_LEVEL_ERROR>= g_log_level) THEN
96875 trace
96876 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
96877 ,p_level => C_LEVEL_ERROR
96878 ,p_module => l_log_module);
96879 END IF;
96880 END IF;
96881 END IF;
96882 --
96883 --
96884 ------------------------------------------------------------------------------------------------
96885 -- 4219869 Business Flow
96886 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
96887 -- Prior Entry. Currently, the following code is always generated.
96888 ------------------------------------------------------------------------------------------------
96889 XLA_AE_LINES_PKG.ValidateCurrentLine;
96890
96891 ------------------------------------------------------------------------------------
96892 -- 4219869 Business Flow
96893 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
96894 ------------------------------------------------------------------------------------
96895 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
96896
96897 ----------------------------------------------------------------------------------
96898 -- 4219869 Business Flow
96899 -- Update journal entry status -- Need to generate this within IF <condition>
96900 ----------------------------------------------------------------------------------
96901 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
96902 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
96903 ,p_balance_type_code => l_balance_type_code
96904 );
96905
96906 -------------------------------------------------------------------------------------------
96907 -- 4262811 - Generate the Accrual Reversal lines
96908 -------------------------------------------------------------------------------------------
96909 BEGIN
96910 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
96911 (g_array_event(p_event_id).array_value_num('header_index'));
96912 IF l_acc_rev_flag IS NULL THEN
96913 l_acc_rev_flag := 'N';
96914 END IF;
96915 EXCEPTION
96916 WHEN OTHERS THEN
96917 l_acc_rev_flag := 'N';
96918 END;
96919 --
96920 IF (l_acc_rev_flag = 'Y') THEN
96921
96922 -- 4645092 ------------------------------------------------------------------------------
96923 -- To allow MPA report to determine if it should generate report process
96924 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
96925 ------------------------------------------------------------------------------------------
96926
96927 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
96928 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
96929 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
96930 -- call ADRs
96931 -- Bug 4922099
96932 --
96933 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
96934 (NVL(l_actual_upg_option, 'N') = 'O') OR
96935 (NVL(l_enc_upg_option, 'N') = 'O')
96936 )
96937 THEN
96938 NULL;
96939 --
96940 --
96941
96942 l_ccid := AcctDerRule_4(
96943 p_application_id => p_application_id
96944 , p_ae_header_id => l_ae_header_id
96945 , p_source_4 => p_source_4
96946 , x_transaction_coa_id => l_adr_transaction_coa_id
96947 , x_accounting_coa_id => l_adr_accounting_coa_id
96948 , x_value_type_code => l_adr_value_type_code
96949 , p_side => 'NA'
96950 );
96951
96952 xla_ae_lines_pkg.set_ccid(
96953 p_code_combination_id => l_ccid
96954 , p_value_type_code => l_adr_value_type_code
96955 , p_transaction_coa_id => l_adr_transaction_coa_id
96956 , p_accounting_coa_id => l_adr_accounting_coa_id
96957 , p_adr_code => 'CST_DEFAULT'
96958 , p_adr_type_code => 'S'
96959 , p_component_type => l_component_type
96960 , p_component_code => l_component_code
96961 , p_component_type_code => l_component_type_code
96962 , p_component_appl_id => l_component_appl_id
96963 , p_amb_context_code => l_amb_context_code
96964 , p_side => 'NA'
96965 );
96966
96967
96968 --
96969 --
96970 END IF;
96971
96972 --
96973 -- Update the line information that should be overwritten
96974 --
96975 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
96976 p_header_num => 1);
96977 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
96978
96979 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
96980
96981 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
96982 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
96983 END IF;
96984
96985 --
96986 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
96987 --
96988 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
96989 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
96990 ELSE
96991 ---------------------------------------------------------------------------------------------------
96992 -- 4262811a Switch Sign
96993 ---------------------------------------------------------------------------------------------------
96994 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
96995 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
96996 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
96997 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
96998 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
96999 -- 5132302
97000 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
97001 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
97002
97003 END IF;
97004
97005 -- 4955764
97006 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
97007 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
97008
97009
97010 XLA_AE_LINES_PKG.ValidateCurrentLine;
97011 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
97012
97013 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
97014 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
97015 ,p_balance_type_code => l_balance_type_code);
97016
97017 END IF;
97018
97019 -----------------------------------------------------------------------------------------
97020 -- 4262811 Multiperiod Accounting
97021 -----------------------------------------------------------------------------------------
97022 -- No MPA option is assigned.
97023
97024
97025 END IF;
97026 END IF;
97027 --
97028
97029 --
97030 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
97031 trace
97032 (p_msg => 'END of AcctLineType_176'
97033 ,p_level => C_LEVEL_PROCEDURE
97034 ,p_module => l_log_module);
97035 END IF;
97036 --
97037 EXCEPTION
97038 WHEN xla_exceptions_pkg.application_exception THEN
97039 RAISE;
97040 WHEN OTHERS THEN
97041 xla_exceptions_pkg.raise_message
97042 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_176');
97043 END AcctLineType_176;
97044 --
97045
97046 ---------------------------------------
97047 --
97048 -- PRIVATE FUNCTION
97049 -- AcctLineType_177
97050 --
97051 ---------------------------------------
97052 PROCEDURE AcctLineType_177 (
97053 p_application_id IN NUMBER
97054 ,p_event_id IN NUMBER
97055 ,p_calculate_acctd_flag IN VARCHAR2
97056 ,p_calculate_g_l_flag IN VARCHAR2
97057 ,p_actual_flag IN OUT VARCHAR2
97058 ,p_balance_type_code OUT VARCHAR2
97059 ,p_gain_or_loss_ref OUT VARCHAR2
97060
97061 --Cost Management Default Account
97062 , p_source_4 IN NUMBER
97063 --DISTRIBUTION_IDENTIFIER
97064 , p_source_11 IN NUMBER
97065 --Distribution Type
97066 , p_source_12 IN VARCHAR2
97067 , p_source_12_meaning IN VARCHAR2
97068 --Entered Currency Code
97069 , p_source_15 IN VARCHAR2
97070 --Entered Amount
97071 , p_source_18 IN NUMBER
97072 --Currency Conversion Date
97073 , p_source_19 IN DATE
97074 --Currency Conversion Rate
97075 , p_source_20 IN NUMBER
97076 --Currency Conversion Type
97077 , p_source_21 IN VARCHAR2
97078 --Accounted Amount
97079 , p_source_22 IN NUMBER
97080 --Accounting Line Type
97081 , p_source_24 IN NUMBER
97082 )
97083 IS
97084
97085 l_component_type VARCHAR2(80);
97086 l_component_code VARCHAR2(30);
97087 l_component_type_code VARCHAR2(1);
97088 l_component_appl_id INTEGER;
97089 l_amb_context_code VARCHAR2(30);
97090 l_entity_code VARCHAR2(30);
97091 l_event_class_code VARCHAR2(30);
97092 l_ae_header_id NUMBER;
97093 l_event_type_code VARCHAR2(30);
97094 l_line_definition_code VARCHAR2(30);
97095 l_line_definition_owner_code VARCHAR2(1);
97096 --
97097 -- adr variables
97098 l_segment VARCHAR2(30);
97099 l_ccid NUMBER;
97100 l_adr_transaction_coa_id NUMBER;
97101 l_adr_accounting_coa_id NUMBER;
97102 l_adr_flexfield_segment_code VARCHAR2(30);
97103 l_adr_flex_value_set_id NUMBER;
97104 l_adr_value_type_code VARCHAR2(30);
97105 l_adr_value_combination_id NUMBER;
97106 l_adr_value_segment_code VARCHAR2(30);
97107
97108 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
97109 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
97110 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
97111 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
97112
97113 -- 4262811 Variables ------------------------------------------------------------------------------------------
97114 l_entered_amt_idx NUMBER;
97115 l_accted_amt_idx NUMBER;
97116 l_acc_rev_flag VARCHAR2(1);
97117 l_accrual_line_num NUMBER;
97118 l_tmp_amt NUMBER;
97119 l_acc_rev_natural_side_code VARCHAR2(1);
97120
97121 l_num_entries NUMBER;
97122 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
97123 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
97124 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
97125 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
97126 l_recog_line_1 NUMBER;
97127 l_recog_line_2 NUMBER;
97128
97129 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
97130 l_bflow_applied_to_amt NUMBER; -- 5132302
97131 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
97132
97133 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
97134
97135 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
97136 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
97137
97138 ---------------------------------------------------------------------------------------------------------------
97139
97140
97141 --
97142 -- bulk performance
97143 --
97144 l_balance_type_code VARCHAR2(1);
97145 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
97146 l_log_module VARCHAR2(240);
97147
97148 --
97149 -- Upgrade strategy
97150 --
97151 l_actual_upg_option VARCHAR2(1);
97152 l_enc_upg_option VARCHAR2(1);
97153
97154 --
97155 BEGIN
97156 --
97157 IF g_log_enabled THEN
97158 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_177';
97159 END IF;
97160 --
97161 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
97162
97163 trace
97164 (p_msg => 'BEGIN of AcctLineType_177'
97165 ,p_level => C_LEVEL_PROCEDURE
97166 ,p_module => l_log_module);
97167
97168 END IF;
97169 --
97170 l_component_type := 'AMB_JLT';
97171 l_component_code := 'OFFSET';
97172 l_component_type_code := 'S';
97173 l_component_appl_id := 707;
97174 l_amb_context_code := 'DEFAULT';
97175 l_entity_code := 'WIP_ACCOUNTING_EVENTS';
97176 l_event_class_code := 'WIP_LOT';
97177 l_event_type_code := 'WIP_LOT_ALL';
97178 l_line_definition_owner_code := 'S';
97179 l_line_definition_code := 'WIP_LOT';
97180 --
97181 l_balance_type_code := 'A';
97182 l_segment := NULL;
97183 l_ccid := NULL;
97184 l_adr_transaction_coa_id := NULL;
97185 l_adr_accounting_coa_id := NULL;
97186 l_adr_flexfield_segment_code := NULL;
97187 l_adr_flex_value_set_id := NULL;
97188 l_adr_value_type_code := NULL;
97189 l_adr_value_combination_id := NULL;
97190 l_adr_value_segment_code := NULL;
97191
97192 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
97193 l_bflow_class_code := ''; -- 4219869 Business Flow
97194 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
97195 l_budgetary_control_flag := 'N';
97196
97197 l_bflow_applied_to_amt_idx := NULL; -- 5132302
97198 l_bflow_applied_to_amt := NULL; -- 5132302
97199 l_entered_amt_idx := NULL; -- 4262811
97200 l_accted_amt_idx := NULL; -- 4262811
97201 l_acc_rev_flag := NULL; -- 4262811
97202 l_accrual_line_num := NULL; -- 4262811
97203 l_tmp_amt := NULL; -- 4262811
97204 --
97205
97206 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
97207 l_balance_type_code <> 'B' THEN
97208 IF NVL(p_source_24,9E125) = 25 OR
97209 NVL(p_source_24,9E125) = 27
97210 THEN
97211
97212 --
97213 XLA_AE_LINES_PKG.SetNewLine;
97214
97215 p_balance_type_code := l_balance_type_code;
97216 -- set the flag so later we will know whether the gain loss line needs to be created
97217
97218 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
97219 p_actual_flag :='A';
97220 END IF;
97221
97222 --
97223 -- bulk performance
97224 --
97225 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
97226 p_header_num => 0); -- 4262811
97227 --
97228 -- set accounting line options
97229 --
97230 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
97231 p_natural_side_code => 'D'
97232 , p_gain_or_loss_flag => 'N'
97233 , p_gl_transfer_mode_code => 'S'
97234 , p_acct_entry_type_code => 'A'
97235 , p_switch_side_flag => 'Y'
97236 , p_merge_duplicate_code => 'N'
97237 );
97238 --
97239 l_acc_rev_natural_side_code := 'C'; -- 4262811
97240 --
97241 --
97242 -- set accounting line type info
97243 --
97244 xla_ae_lines_pkg.SetAcctLineType
97245 (p_component_type => l_component_type
97246 ,p_event_type_code => l_event_type_code
97247 ,p_line_definition_owner_code => l_line_definition_owner_code
97248 ,p_line_definition_code => l_line_definition_code
97249 ,p_accounting_line_code => l_component_code
97250 ,p_accounting_line_type_code => l_component_type_code
97251 ,p_accounting_line_appl_id => l_component_appl_id
97252 ,p_amb_context_code => l_amb_context_code
97253 ,p_entity_code => l_entity_code
97254 ,p_event_class_code => l_event_class_code);
97255 --
97256 -- set accounting class
97257 --
97258 xla_ae_lines_pkg.SetAcctClass(
97259 p_accounting_class_code => 'OFFSET'
97260 , p_ae_header_id => l_ae_header_id
97261 );
97262
97263 --
97264 -- set rounding class
97265 --
97266 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
97267 'OFFSET';
97268
97269 --
97270 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
97271 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
97272 --
97273 -- bulk performance
97274 --
97275 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
97276
97277 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
97278 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
97279
97280 -- 4955764
97281 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
97282 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
97283
97284 -- 4458381 Public Sector Enh
97285
97286 --
97287 -- set accounting attributes for the line type
97288 --
97289 l_entered_amt_idx := 3;
97290 l_accted_amt_idx := 8;
97291 l_bflow_applied_to_amt_idx := NULL; -- 5132302
97292 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
97293 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
97294 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
97295 l_rec_acct_attrs.array_char_value(2) := p_source_12;
97296 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
97297 l_rec_acct_attrs.array_num_value(3) := p_source_18;
97298 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
97299 l_rec_acct_attrs.array_char_value(4) := p_source_15;
97300 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
97301 l_rec_acct_attrs.array_date_value(5) := p_source_19;
97302 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
97303 l_rec_acct_attrs.array_num_value(6) := p_source_20;
97304 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
97305 l_rec_acct_attrs.array_char_value(7) := p_source_21;
97306 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
97307 l_rec_acct_attrs.array_num_value(8) := p_source_22;
97308
97309 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
97310 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
97311
97312 ---------------------------------------------------------------------------------------------------------------
97313 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
97314 ---------------------------------------------------------------------------------------------------------------
97315 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
97316
97317 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
97318 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
97319
97320 IF xla_accounting_cache_pkg.GetValueChar
97321 (p_source_code => 'LEDGER_CATEGORY_CODE'
97322 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
97323 AND l_bflow_method_code = 'PRIOR_ENTRY'
97324 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
97325 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
97326 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
97327 )
97328 THEN
97329 xla_ae_lines_pkg.BflowUpgEntry
97330 (p_business_method_code => l_bflow_method_code
97331 ,p_business_class_code => l_bflow_class_code
97332 ,p_balance_type => l_balance_type_code);
97333 ELSE
97334 NULL;
97335 -- No business flow processing for business flow method of NONE.
97336 END IF;
97337
97338 --
97339 -- call analytical criteria
97340 --
97341
97342 --
97343 -- call description
97344 --
97345 -- No description or it is inherited.
97346 --
97347 -- call ADRs
97348 -- Bug 4922099
97349 --
97350 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
97351 (NVL(l_actual_upg_option, 'N') = 'O') OR
97352 (NVL(l_enc_upg_option, 'N') = 'O')
97353 )
97354 THEN
97355 NULL;
97356 --
97357 --
97358
97359 l_ccid := AcctDerRule_4(
97360 p_application_id => p_application_id
97361 , p_ae_header_id => l_ae_header_id
97362 , p_source_4 => p_source_4
97363 , x_transaction_coa_id => l_adr_transaction_coa_id
97364 , x_accounting_coa_id => l_adr_accounting_coa_id
97365 , x_value_type_code => l_adr_value_type_code
97366 , p_side => 'NA'
97367 );
97368
97369 xla_ae_lines_pkg.set_ccid(
97370 p_code_combination_id => l_ccid
97371 , p_value_type_code => l_adr_value_type_code
97372 , p_transaction_coa_id => l_adr_transaction_coa_id
97373 , p_accounting_coa_id => l_adr_accounting_coa_id
97374 , p_adr_code => 'CST_DEFAULT'
97375 , p_adr_type_code => 'S'
97376 , p_component_type => l_component_type
97377 , p_component_code => l_component_code
97378 , p_component_type_code => l_component_type_code
97379 , p_component_appl_id => l_component_appl_id
97380 , p_amb_context_code => l_amb_context_code
97381 , p_side => 'NA'
97382 );
97383
97384
97385 --
97386 --
97387 END IF;
97388 --
97389 -- Bug 4922099
97390 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
97391 (NVL(l_enc_upg_option, 'N') = 'O')
97392 ) AND
97393 (l_bflow_method_code = 'PRIOR_ENTRY')
97394 )
97395 THEN
97396 IF
97397 --
97398 1 = 2
97399 --
97400 THEN
97401 xla_accounting_err_pkg.build_message
97402 (p_appli_s_name => 'XLA'
97403 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
97404 ,p_token_1 => 'LINE_NUMBER'
97405 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
97406 ,p_token_2 => 'LINE_TYPE_NAME'
97407 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
97408 l_component_type
97409 ,l_component_code
97410 ,l_component_type_code
97411 ,l_component_appl_id
97412 ,l_amb_context_code
97413 ,l_entity_code
97414 ,l_event_class_code
97415 )
97416 ,p_token_3 => 'OWNER'
97417 ,p_value_3 => xla_lookups_pkg.get_meaning(
97418 p_lookup_type => 'XLA_OWNER_TYPE'
97419 ,p_lookup_code => l_component_type_code
97420 )
97421 ,p_token_4 => 'PRODUCT_NAME'
97422 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
97423 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
97424 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
97425 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
97426 ,p_ae_header_id => NULL
97427 );
97428
97429 IF (C_LEVEL_ERROR>= g_log_level) THEN
97430 trace
97431 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
97432 ,p_level => C_LEVEL_ERROR
97433 ,p_module => l_log_module);
97434 END IF;
97435 END IF;
97436 END IF;
97437 --
97438 --
97439 ------------------------------------------------------------------------------------------------
97440 -- 4219869 Business Flow
97441 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
97442 -- Prior Entry. Currently, the following code is always generated.
97443 ------------------------------------------------------------------------------------------------
97444 XLA_AE_LINES_PKG.ValidateCurrentLine;
97445
97446 ------------------------------------------------------------------------------------
97447 -- 4219869 Business Flow
97448 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
97449 ------------------------------------------------------------------------------------
97450 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
97451
97452 ----------------------------------------------------------------------------------
97453 -- 4219869 Business Flow
97454 -- Update journal entry status -- Need to generate this within IF <condition>
97455 ----------------------------------------------------------------------------------
97456 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
97457 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
97458 ,p_balance_type_code => l_balance_type_code
97459 );
97460
97461 -------------------------------------------------------------------------------------------
97462 -- 4262811 - Generate the Accrual Reversal lines
97463 -------------------------------------------------------------------------------------------
97464 BEGIN
97465 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
97466 (g_array_event(p_event_id).array_value_num('header_index'));
97467 IF l_acc_rev_flag IS NULL THEN
97468 l_acc_rev_flag := 'N';
97469 END IF;
97470 EXCEPTION
97471 WHEN OTHERS THEN
97472 l_acc_rev_flag := 'N';
97473 END;
97474 --
97475 IF (l_acc_rev_flag = 'Y') THEN
97476
97477 -- 4645092 ------------------------------------------------------------------------------
97478 -- To allow MPA report to determine if it should generate report process
97479 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
97480 ------------------------------------------------------------------------------------------
97481
97482 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
97483 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
97484 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
97485 -- call ADRs
97486 -- Bug 4922099
97487 --
97488 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
97489 (NVL(l_actual_upg_option, 'N') = 'O') OR
97490 (NVL(l_enc_upg_option, 'N') = 'O')
97491 )
97492 THEN
97493 NULL;
97494 --
97495 --
97496
97497 l_ccid := AcctDerRule_4(
97498 p_application_id => p_application_id
97499 , p_ae_header_id => l_ae_header_id
97500 , p_source_4 => p_source_4
97501 , x_transaction_coa_id => l_adr_transaction_coa_id
97502 , x_accounting_coa_id => l_adr_accounting_coa_id
97503 , x_value_type_code => l_adr_value_type_code
97504 , p_side => 'NA'
97505 );
97506
97507 xla_ae_lines_pkg.set_ccid(
97508 p_code_combination_id => l_ccid
97509 , p_value_type_code => l_adr_value_type_code
97510 , p_transaction_coa_id => l_adr_transaction_coa_id
97511 , p_accounting_coa_id => l_adr_accounting_coa_id
97512 , p_adr_code => 'CST_DEFAULT'
97513 , p_adr_type_code => 'S'
97514 , p_component_type => l_component_type
97515 , p_component_code => l_component_code
97516 , p_component_type_code => l_component_type_code
97517 , p_component_appl_id => l_component_appl_id
97518 , p_amb_context_code => l_amb_context_code
97519 , p_side => 'NA'
97520 );
97521
97522
97523 --
97524 --
97525 END IF;
97526
97527 --
97528 -- Update the line information that should be overwritten
97529 --
97530 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
97531 p_header_num => 1);
97532 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
97533
97534 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
97535
97536 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
97537 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
97538 END IF;
97539
97540 --
97541 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
97542 --
97543 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
97544 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
97545 ELSE
97546 ---------------------------------------------------------------------------------------------------
97547 -- 4262811a Switch Sign
97548 ---------------------------------------------------------------------------------------------------
97549 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
97550 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
97551 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
97552 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
97553 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
97554 -- 5132302
97555 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
97556 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
97557
97558 END IF;
97559
97560 -- 4955764
97561 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
97562 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
97563
97564
97565 XLA_AE_LINES_PKG.ValidateCurrentLine;
97566 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
97567
97568 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
97569 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
97570 ,p_balance_type_code => l_balance_type_code);
97571
97572 END IF;
97573
97574 -----------------------------------------------------------------------------------------
97575 -- 4262811 Multiperiod Accounting
97576 -----------------------------------------------------------------------------------------
97577 -- No MPA option is assigned.
97578
97579
97580 END IF;
97581 END IF;
97582 --
97583
97584 --
97585 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
97586 trace
97587 (p_msg => 'END of AcctLineType_177'
97588 ,p_level => C_LEVEL_PROCEDURE
97589 ,p_module => l_log_module);
97590 END IF;
97591 --
97592 EXCEPTION
97593 WHEN xla_exceptions_pkg.application_exception THEN
97594 RAISE;
97595 WHEN OTHERS THEN
97596 xla_exceptions_pkg.raise_message
97597 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_177');
97598 END AcctLineType_177;
97599 --
97600
97601 ---------------------------------------
97602 --
97603 -- PRIVATE FUNCTION
97604 -- AcctLineType_178
97605 --
97606 ---------------------------------------
97607 PROCEDURE AcctLineType_178 (
97608 p_application_id IN NUMBER
97609 ,p_event_id IN NUMBER
97610 ,p_calculate_acctd_flag IN VARCHAR2
97611 ,p_calculate_g_l_flag IN VARCHAR2
97612 ,p_actual_flag IN OUT VARCHAR2
97613 ,p_balance_type_code OUT VARCHAR2
97614 ,p_gain_or_loss_ref OUT VARCHAR2
97615
97616 --Cost Management Default Account
97617 , p_source_4 IN NUMBER
97618 --DISTRIBUTION_IDENTIFIER
97619 , p_source_11 IN NUMBER
97620 --Distribution Type
97621 , p_source_12 IN VARCHAR2
97622 , p_source_12_meaning IN VARCHAR2
97623 --Entered Currency Code
97624 , p_source_15 IN VARCHAR2
97625 --Entered Amount
97626 , p_source_18 IN NUMBER
97627 --Currency Conversion Date
97628 , p_source_19 IN DATE
97629 --Currency Conversion Rate
97630 , p_source_20 IN NUMBER
97631 --Currency Conversion Type
97632 , p_source_21 IN VARCHAR2
97633 --Accounted Amount
97634 , p_source_22 IN NUMBER
97635 --Accounting Line Type
97636 , p_source_24 IN NUMBER
97637 )
97638 IS
97639
97640 l_component_type VARCHAR2(80);
97641 l_component_code VARCHAR2(30);
97642 l_component_type_code VARCHAR2(1);
97643 l_component_appl_id INTEGER;
97644 l_amb_context_code VARCHAR2(30);
97645 l_entity_code VARCHAR2(30);
97646 l_event_class_code VARCHAR2(30);
97647 l_ae_header_id NUMBER;
97648 l_event_type_code VARCHAR2(30);
97649 l_line_definition_code VARCHAR2(30);
97650 l_line_definition_owner_code VARCHAR2(1);
97651 --
97652 -- adr variables
97653 l_segment VARCHAR2(30);
97654 l_ccid NUMBER;
97655 l_adr_transaction_coa_id NUMBER;
97656 l_adr_accounting_coa_id NUMBER;
97657 l_adr_flexfield_segment_code VARCHAR2(30);
97658 l_adr_flex_value_set_id NUMBER;
97659 l_adr_value_type_code VARCHAR2(30);
97660 l_adr_value_combination_id NUMBER;
97661 l_adr_value_segment_code VARCHAR2(30);
97662
97663 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
97664 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
97665 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
97666 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
97667
97668 -- 4262811 Variables ------------------------------------------------------------------------------------------
97669 l_entered_amt_idx NUMBER;
97670 l_accted_amt_idx NUMBER;
97671 l_acc_rev_flag VARCHAR2(1);
97672 l_accrual_line_num NUMBER;
97673 l_tmp_amt NUMBER;
97674 l_acc_rev_natural_side_code VARCHAR2(1);
97675
97676 l_num_entries NUMBER;
97677 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
97678 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
97679 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
97680 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
97681 l_recog_line_1 NUMBER;
97682 l_recog_line_2 NUMBER;
97683
97684 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
97685 l_bflow_applied_to_amt NUMBER; -- 5132302
97686 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
97687
97688 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
97689
97690 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
97691 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
97692
97693 ---------------------------------------------------------------------------------------------------------------
97694
97695
97696 --
97697 -- bulk performance
97698 --
97699 l_balance_type_code VARCHAR2(1);
97700 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
97701 l_log_module VARCHAR2(240);
97702
97703 --
97704 -- Upgrade strategy
97705 --
97706 l_actual_upg_option VARCHAR2(1);
97707 l_enc_upg_option VARCHAR2(1);
97708
97709 --
97710 BEGIN
97711 --
97712 IF g_log_enabled THEN
97713 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_178';
97714 END IF;
97715 --
97716 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
97717
97718 trace
97719 (p_msg => 'BEGIN of AcctLineType_178'
97720 ,p_level => C_LEVEL_PROCEDURE
97721 ,p_module => l_log_module);
97722
97723 END IF;
97724 --
97725 l_component_type := 'AMB_JLT';
97726 l_component_code := 'OFFSET';
97727 l_component_type_code := 'S';
97728 l_component_appl_id := 707;
97729 l_amb_context_code := 'DEFAULT';
97730 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
97731 l_event_class_code := 'DIR_INTERORG_SHIP';
97732 l_event_type_code := 'DIR_INTERORG_SHIP_ALL';
97733 l_line_definition_owner_code := 'S';
97734 l_line_definition_code := 'DIRECT_INTERORG_SHIP';
97735 --
97736 l_balance_type_code := 'A';
97737 l_segment := NULL;
97738 l_ccid := NULL;
97739 l_adr_transaction_coa_id := NULL;
97740 l_adr_accounting_coa_id := NULL;
97741 l_adr_flexfield_segment_code := NULL;
97742 l_adr_flex_value_set_id := NULL;
97743 l_adr_value_type_code := NULL;
97744 l_adr_value_combination_id := NULL;
97745 l_adr_value_segment_code := NULL;
97746
97747 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
97748 l_bflow_class_code := ''; -- 4219869 Business Flow
97749 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
97750 l_budgetary_control_flag := 'N';
97751
97752 l_bflow_applied_to_amt_idx := NULL; -- 5132302
97753 l_bflow_applied_to_amt := NULL; -- 5132302
97754 l_entered_amt_idx := NULL; -- 4262811
97755 l_accted_amt_idx := NULL; -- 4262811
97756 l_acc_rev_flag := NULL; -- 4262811
97757 l_accrual_line_num := NULL; -- 4262811
97758 l_tmp_amt := NULL; -- 4262811
97759 --
97760
97761 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
97762 l_balance_type_code <> 'B' THEN
97763 IF NVL(p_source_24,9E125) = 2
97764 THEN
97765
97766 --
97767 XLA_AE_LINES_PKG.SetNewLine;
97768
97769 p_balance_type_code := l_balance_type_code;
97770 -- set the flag so later we will know whether the gain loss line needs to be created
97771
97772 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
97773 p_actual_flag :='A';
97774 END IF;
97775
97776 --
97777 -- bulk performance
97778 --
97779 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
97780 p_header_num => 0); -- 4262811
97781 --
97782 -- set accounting line options
97783 --
97784 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
97785 p_natural_side_code => 'D'
97786 , p_gain_or_loss_flag => 'N'
97787 , p_gl_transfer_mode_code => 'S'
97788 , p_acct_entry_type_code => 'A'
97789 , p_switch_side_flag => 'Y'
97790 , p_merge_duplicate_code => 'N'
97791 );
97792 --
97793 l_acc_rev_natural_side_code := 'C'; -- 4262811
97794 --
97795 --
97796 -- set accounting line type info
97797 --
97798 xla_ae_lines_pkg.SetAcctLineType
97799 (p_component_type => l_component_type
97800 ,p_event_type_code => l_event_type_code
97801 ,p_line_definition_owner_code => l_line_definition_owner_code
97802 ,p_line_definition_code => l_line_definition_code
97803 ,p_accounting_line_code => l_component_code
97804 ,p_accounting_line_type_code => l_component_type_code
97805 ,p_accounting_line_appl_id => l_component_appl_id
97806 ,p_amb_context_code => l_amb_context_code
97807 ,p_entity_code => l_entity_code
97808 ,p_event_class_code => l_event_class_code);
97809 --
97810 -- set accounting class
97811 --
97812 xla_ae_lines_pkg.SetAcctClass(
97813 p_accounting_class_code => 'OFFSET'
97814 , p_ae_header_id => l_ae_header_id
97815 );
97816
97817 --
97818 -- set rounding class
97819 --
97820 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
97821 'OFFSET';
97822
97823 --
97824 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
97825 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
97826 --
97827 -- bulk performance
97828 --
97829 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
97830
97831 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
97832 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
97833
97834 -- 4955764
97835 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
97836 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
97837
97838 -- 4458381 Public Sector Enh
97839
97840 --
97841 -- set accounting attributes for the line type
97842 --
97843 l_entered_amt_idx := 3;
97844 l_accted_amt_idx := 8;
97845 l_bflow_applied_to_amt_idx := NULL; -- 5132302
97846 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
97847 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
97848 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
97849 l_rec_acct_attrs.array_char_value(2) := p_source_12;
97850 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
97851 l_rec_acct_attrs.array_num_value(3) := p_source_18;
97852 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
97853 l_rec_acct_attrs.array_char_value(4) := p_source_15;
97854 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
97855 l_rec_acct_attrs.array_date_value(5) := p_source_19;
97856 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
97857 l_rec_acct_attrs.array_num_value(6) := p_source_20;
97858 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
97859 l_rec_acct_attrs.array_char_value(7) := p_source_21;
97860 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
97861 l_rec_acct_attrs.array_num_value(8) := p_source_22;
97862
97863 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
97864 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
97865
97866 ---------------------------------------------------------------------------------------------------------------
97867 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
97868 ---------------------------------------------------------------------------------------------------------------
97869 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
97870
97871 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
97872 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
97873
97874 IF xla_accounting_cache_pkg.GetValueChar
97875 (p_source_code => 'LEDGER_CATEGORY_CODE'
97876 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
97877 AND l_bflow_method_code = 'PRIOR_ENTRY'
97878 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
97879 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
97880 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
97881 )
97882 THEN
97883 xla_ae_lines_pkg.BflowUpgEntry
97884 (p_business_method_code => l_bflow_method_code
97885 ,p_business_class_code => l_bflow_class_code
97886 ,p_balance_type => l_balance_type_code);
97887 ELSE
97888 NULL;
97889 -- No business flow processing for business flow method of NONE.
97890 END IF;
97891
97892 --
97893 -- call analytical criteria
97894 --
97895
97896 --
97897 -- call description
97898 --
97899 -- No description or it is inherited.
97900 --
97901 -- call ADRs
97902 -- Bug 4922099
97903 --
97904 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
97905 (NVL(l_actual_upg_option, 'N') = 'O') OR
97906 (NVL(l_enc_upg_option, 'N') = 'O')
97907 )
97908 THEN
97909 NULL;
97910 --
97911 --
97912
97913 l_ccid := AcctDerRule_4(
97914 p_application_id => p_application_id
97915 , p_ae_header_id => l_ae_header_id
97916 , p_source_4 => p_source_4
97917 , x_transaction_coa_id => l_adr_transaction_coa_id
97918 , x_accounting_coa_id => l_adr_accounting_coa_id
97919 , x_value_type_code => l_adr_value_type_code
97920 , p_side => 'NA'
97921 );
97922
97923 xla_ae_lines_pkg.set_ccid(
97924 p_code_combination_id => l_ccid
97925 , p_value_type_code => l_adr_value_type_code
97926 , p_transaction_coa_id => l_adr_transaction_coa_id
97927 , p_accounting_coa_id => l_adr_accounting_coa_id
97928 , p_adr_code => 'CST_DEFAULT'
97929 , p_adr_type_code => 'S'
97930 , p_component_type => l_component_type
97931 , p_component_code => l_component_code
97932 , p_component_type_code => l_component_type_code
97933 , p_component_appl_id => l_component_appl_id
97934 , p_amb_context_code => l_amb_context_code
97935 , p_side => 'NA'
97936 );
97937
97938
97939 --
97940 --
97941 END IF;
97942 --
97943 -- Bug 4922099
97944 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
97945 (NVL(l_enc_upg_option, 'N') = 'O')
97946 ) AND
97947 (l_bflow_method_code = 'PRIOR_ENTRY')
97948 )
97949 THEN
97950 IF
97951 --
97952 1 = 2
97953 --
97954 THEN
97955 xla_accounting_err_pkg.build_message
97956 (p_appli_s_name => 'XLA'
97957 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
97958 ,p_token_1 => 'LINE_NUMBER'
97959 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
97960 ,p_token_2 => 'LINE_TYPE_NAME'
97961 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
97962 l_component_type
97963 ,l_component_code
97964 ,l_component_type_code
97965 ,l_component_appl_id
97966 ,l_amb_context_code
97967 ,l_entity_code
97968 ,l_event_class_code
97969 )
97970 ,p_token_3 => 'OWNER'
97971 ,p_value_3 => xla_lookups_pkg.get_meaning(
97972 p_lookup_type => 'XLA_OWNER_TYPE'
97973 ,p_lookup_code => l_component_type_code
97974 )
97975 ,p_token_4 => 'PRODUCT_NAME'
97976 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
97977 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
97978 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
97979 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
97980 ,p_ae_header_id => NULL
97981 );
97982
97983 IF (C_LEVEL_ERROR>= g_log_level) THEN
97984 trace
97985 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
97986 ,p_level => C_LEVEL_ERROR
97987 ,p_module => l_log_module);
97988 END IF;
97989 END IF;
97990 END IF;
97991 --
97992 --
97993 ------------------------------------------------------------------------------------------------
97994 -- 4219869 Business Flow
97995 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
97996 -- Prior Entry. Currently, the following code is always generated.
97997 ------------------------------------------------------------------------------------------------
97998 XLA_AE_LINES_PKG.ValidateCurrentLine;
97999
98000 ------------------------------------------------------------------------------------
98001 -- 4219869 Business Flow
98002 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
98003 ------------------------------------------------------------------------------------
98004 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
98005
98006 ----------------------------------------------------------------------------------
98007 -- 4219869 Business Flow
98008 -- Update journal entry status -- Need to generate this within IF <condition>
98009 ----------------------------------------------------------------------------------
98010 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
98011 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
98012 ,p_balance_type_code => l_balance_type_code
98013 );
98014
98015 -------------------------------------------------------------------------------------------
98016 -- 4262811 - Generate the Accrual Reversal lines
98017 -------------------------------------------------------------------------------------------
98018 BEGIN
98019 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
98020 (g_array_event(p_event_id).array_value_num('header_index'));
98021 IF l_acc_rev_flag IS NULL THEN
98022 l_acc_rev_flag := 'N';
98023 END IF;
98024 EXCEPTION
98025 WHEN OTHERS THEN
98026 l_acc_rev_flag := 'N';
98027 END;
98028 --
98029 IF (l_acc_rev_flag = 'Y') THEN
98030
98031 -- 4645092 ------------------------------------------------------------------------------
98032 -- To allow MPA report to determine if it should generate report process
98033 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
98034 ------------------------------------------------------------------------------------------
98035
98036 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
98037 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
98038 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
98039 -- call ADRs
98040 -- Bug 4922099
98041 --
98042 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
98043 (NVL(l_actual_upg_option, 'N') = 'O') OR
98044 (NVL(l_enc_upg_option, 'N') = 'O')
98045 )
98046 THEN
98047 NULL;
98048 --
98049 --
98050
98051 l_ccid := AcctDerRule_4(
98052 p_application_id => p_application_id
98053 , p_ae_header_id => l_ae_header_id
98054 , p_source_4 => p_source_4
98055 , x_transaction_coa_id => l_adr_transaction_coa_id
98056 , x_accounting_coa_id => l_adr_accounting_coa_id
98057 , x_value_type_code => l_adr_value_type_code
98058 , p_side => 'NA'
98059 );
98060
98061 xla_ae_lines_pkg.set_ccid(
98062 p_code_combination_id => l_ccid
98063 , p_value_type_code => l_adr_value_type_code
98064 , p_transaction_coa_id => l_adr_transaction_coa_id
98065 , p_accounting_coa_id => l_adr_accounting_coa_id
98066 , p_adr_code => 'CST_DEFAULT'
98067 , p_adr_type_code => 'S'
98068 , p_component_type => l_component_type
98069 , p_component_code => l_component_code
98070 , p_component_type_code => l_component_type_code
98071 , p_component_appl_id => l_component_appl_id
98072 , p_amb_context_code => l_amb_context_code
98073 , p_side => 'NA'
98074 );
98075
98076
98077 --
98078 --
98079 END IF;
98080
98081 --
98082 -- Update the line information that should be overwritten
98083 --
98084 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
98085 p_header_num => 1);
98086 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
98087
98088 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
98089
98090 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
98091 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
98092 END IF;
98093
98094 --
98095 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
98096 --
98097 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
98098 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
98099 ELSE
98100 ---------------------------------------------------------------------------------------------------
98101 -- 4262811a Switch Sign
98102 ---------------------------------------------------------------------------------------------------
98103 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
98104 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
98105 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
98106 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
98107 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
98108 -- 5132302
98109 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
98110 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
98111
98112 END IF;
98113
98114 -- 4955764
98115 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
98116 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
98117
98118
98119 XLA_AE_LINES_PKG.ValidateCurrentLine;
98120 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
98121
98122 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
98123 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
98124 ,p_balance_type_code => l_balance_type_code);
98125
98126 END IF;
98127
98128 -----------------------------------------------------------------------------------------
98129 -- 4262811 Multiperiod Accounting
98130 -----------------------------------------------------------------------------------------
98131 -- No MPA option is assigned.
98132
98133
98134 END IF;
98135 END IF;
98136 --
98137
98138 --
98139 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
98140 trace
98141 (p_msg => 'END of AcctLineType_178'
98142 ,p_level => C_LEVEL_PROCEDURE
98143 ,p_module => l_log_module);
98144 END IF;
98145 --
98146 EXCEPTION
98147 WHEN xla_exceptions_pkg.application_exception THEN
98148 RAISE;
98149 WHEN OTHERS THEN
98150 xla_exceptions_pkg.raise_message
98151 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_178');
98152 END AcctLineType_178;
98153 --
98154
98155 ---------------------------------------
98156 --
98157 -- PRIVATE FUNCTION
98158 -- AcctLineType_179
98159 --
98160 ---------------------------------------
98161 PROCEDURE AcctLineType_179 (
98162 p_application_id IN NUMBER
98163 ,p_event_id IN NUMBER
98164 ,p_calculate_acctd_flag IN VARCHAR2
98165 ,p_calculate_g_l_flag IN VARCHAR2
98166 ,p_actual_flag IN OUT VARCHAR2
98167 ,p_balance_type_code OUT VARCHAR2
98168 ,p_gain_or_loss_ref OUT VARCHAR2
98169
98170 --Cost Management Default Account
98171 , p_source_4 IN NUMBER
98172 --DISTRIBUTION_IDENTIFIER
98173 , p_source_11 IN NUMBER
98174 --Distribution Type
98175 , p_source_12 IN VARCHAR2
98176 , p_source_12_meaning IN VARCHAR2
98177 --Entered Currency Code
98178 , p_source_15 IN VARCHAR2
98179 --Entered Amount
98180 , p_source_18 IN NUMBER
98181 --Currency Conversion Date
98182 , p_source_19 IN DATE
98183 --Currency Conversion Rate
98184 , p_source_20 IN NUMBER
98185 --Currency Conversion Type
98186 , p_source_21 IN VARCHAR2
98187 --Accounted Amount
98188 , p_source_22 IN NUMBER
98189 --Accounting Line Type
98190 , p_source_24 IN NUMBER
98191 )
98192 IS
98193
98194 l_component_type VARCHAR2(80);
98195 l_component_code VARCHAR2(30);
98196 l_component_type_code VARCHAR2(1);
98197 l_component_appl_id INTEGER;
98198 l_amb_context_code VARCHAR2(30);
98199 l_entity_code VARCHAR2(30);
98200 l_event_class_code VARCHAR2(30);
98201 l_ae_header_id NUMBER;
98202 l_event_type_code VARCHAR2(30);
98203 l_line_definition_code VARCHAR2(30);
98204 l_line_definition_owner_code VARCHAR2(1);
98205 --
98206 -- adr variables
98207 l_segment VARCHAR2(30);
98208 l_ccid NUMBER;
98209 l_adr_transaction_coa_id NUMBER;
98210 l_adr_accounting_coa_id NUMBER;
98211 l_adr_flexfield_segment_code VARCHAR2(30);
98212 l_adr_flex_value_set_id NUMBER;
98213 l_adr_value_type_code VARCHAR2(30);
98214 l_adr_value_combination_id NUMBER;
98215 l_adr_value_segment_code VARCHAR2(30);
98216
98217 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
98218 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
98219 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
98220 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
98221
98222 -- 4262811 Variables ------------------------------------------------------------------------------------------
98223 l_entered_amt_idx NUMBER;
98224 l_accted_amt_idx NUMBER;
98225 l_acc_rev_flag VARCHAR2(1);
98226 l_accrual_line_num NUMBER;
98227 l_tmp_amt NUMBER;
98228 l_acc_rev_natural_side_code VARCHAR2(1);
98229
98230 l_num_entries NUMBER;
98231 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
98232 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
98233 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
98234 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
98235 l_recog_line_1 NUMBER;
98236 l_recog_line_2 NUMBER;
98237
98238 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
98239 l_bflow_applied_to_amt NUMBER; -- 5132302
98240 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
98241
98242 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
98243
98244 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
98245 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
98246
98247 ---------------------------------------------------------------------------------------------------------------
98248
98249
98250 --
98251 -- bulk performance
98252 --
98253 l_balance_type_code VARCHAR2(1);
98254 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
98255 l_log_module VARCHAR2(240);
98256
98257 --
98258 -- Upgrade strategy
98259 --
98260 l_actual_upg_option VARCHAR2(1);
98261 l_enc_upg_option VARCHAR2(1);
98262
98263 --
98264 BEGIN
98265 --
98266 IF g_log_enabled THEN
98267 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_179';
98268 END IF;
98269 --
98270 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
98271
98272 trace
98273 (p_msg => 'BEGIN of AcctLineType_179'
98274 ,p_level => C_LEVEL_PROCEDURE
98275 ,p_module => l_log_module);
98276
98277 END IF;
98278 --
98279 l_component_type := 'AMB_JLT';
98280 l_component_code := 'OFFSET';
98281 l_component_type_code := 'S';
98282 l_component_appl_id := 707;
98283 l_amb_context_code := 'DEFAULT';
98284 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
98285 l_event_class_code := 'FOB_SHIP_SENDER_SHIP';
98286 l_event_type_code := 'FOB_SHIP_SENDER_SHIP_ALL';
98287 l_line_definition_owner_code := 'S';
98288 l_line_definition_code := 'FOB_SHIP_SENDER_SHIP';
98289 --
98290 l_balance_type_code := 'A';
98291 l_segment := NULL;
98292 l_ccid := NULL;
98293 l_adr_transaction_coa_id := NULL;
98294 l_adr_accounting_coa_id := NULL;
98295 l_adr_flexfield_segment_code := NULL;
98296 l_adr_flex_value_set_id := NULL;
98297 l_adr_value_type_code := NULL;
98298 l_adr_value_combination_id := NULL;
98299 l_adr_value_segment_code := NULL;
98300
98301 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
98302 l_bflow_class_code := ''; -- 4219869 Business Flow
98303 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
98304 l_budgetary_control_flag := 'N';
98305
98306 l_bflow_applied_to_amt_idx := NULL; -- 5132302
98307 l_bflow_applied_to_amt := NULL; -- 5132302
98308 l_entered_amt_idx := NULL; -- 4262811
98309 l_accted_amt_idx := NULL; -- 4262811
98310 l_acc_rev_flag := NULL; -- 4262811
98311 l_accrual_line_num := NULL; -- 4262811
98312 l_tmp_amt := NULL; -- 4262811
98313 --
98314
98315 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
98316 l_balance_type_code <> 'B' THEN
98317 IF NVL(p_source_24,9E125) = 2 AND
98318 p_source_22 <= 0
98319 THEN
98320
98321 --
98322 XLA_AE_LINES_PKG.SetNewLine;
98323
98324 p_balance_type_code := l_balance_type_code;
98325 -- set the flag so later we will know whether the gain loss line needs to be created
98326
98327 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
98328 p_actual_flag :='A';
98329 END IF;
98330
98331 --
98332 -- bulk performance
98333 --
98334 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
98335 p_header_num => 0); -- 4262811
98336 --
98337 -- set accounting line options
98338 --
98339 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
98340 p_natural_side_code => 'D'
98341 , p_gain_or_loss_flag => 'N'
98342 , p_gl_transfer_mode_code => 'S'
98343 , p_acct_entry_type_code => 'A'
98344 , p_switch_side_flag => 'Y'
98345 , p_merge_duplicate_code => 'N'
98346 );
98347 --
98348 l_acc_rev_natural_side_code := 'C'; -- 4262811
98349 --
98350 --
98351 -- set accounting line type info
98352 --
98353 xla_ae_lines_pkg.SetAcctLineType
98354 (p_component_type => l_component_type
98355 ,p_event_type_code => l_event_type_code
98356 ,p_line_definition_owner_code => l_line_definition_owner_code
98357 ,p_line_definition_code => l_line_definition_code
98358 ,p_accounting_line_code => l_component_code
98359 ,p_accounting_line_type_code => l_component_type_code
98360 ,p_accounting_line_appl_id => l_component_appl_id
98361 ,p_amb_context_code => l_amb_context_code
98362 ,p_entity_code => l_entity_code
98363 ,p_event_class_code => l_event_class_code);
98364 --
98365 -- set accounting class
98366 --
98367 xla_ae_lines_pkg.SetAcctClass(
98368 p_accounting_class_code => 'OFFSET'
98369 , p_ae_header_id => l_ae_header_id
98370 );
98371
98372 --
98373 -- set rounding class
98374 --
98375 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
98376 'OFFSET';
98377
98378 --
98379 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
98380 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
98381 --
98382 -- bulk performance
98383 --
98384 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
98385
98386 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
98387 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
98388
98389 -- 4955764
98390 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
98391 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
98392
98393 -- 4458381 Public Sector Enh
98394
98395 --
98396 -- set accounting attributes for the line type
98397 --
98398 l_entered_amt_idx := 3;
98399 l_accted_amt_idx := 8;
98400 l_bflow_applied_to_amt_idx := NULL; -- 5132302
98401 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
98402 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
98403 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
98404 l_rec_acct_attrs.array_char_value(2) := p_source_12;
98405 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
98406 l_rec_acct_attrs.array_num_value(3) := p_source_18;
98407 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
98408 l_rec_acct_attrs.array_char_value(4) := p_source_15;
98409 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
98410 l_rec_acct_attrs.array_date_value(5) := p_source_19;
98411 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
98412 l_rec_acct_attrs.array_num_value(6) := p_source_20;
98413 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
98414 l_rec_acct_attrs.array_char_value(7) := p_source_21;
98415 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
98416 l_rec_acct_attrs.array_num_value(8) := p_source_22;
98417
98418 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
98419 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
98420
98421 ---------------------------------------------------------------------------------------------------------------
98422 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
98423 ---------------------------------------------------------------------------------------------------------------
98424 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
98425
98426 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
98427 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
98428
98429 IF xla_accounting_cache_pkg.GetValueChar
98430 (p_source_code => 'LEDGER_CATEGORY_CODE'
98431 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
98432 AND l_bflow_method_code = 'PRIOR_ENTRY'
98433 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
98434 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
98435 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
98436 )
98437 THEN
98438 xla_ae_lines_pkg.BflowUpgEntry
98439 (p_business_method_code => l_bflow_method_code
98440 ,p_business_class_code => l_bflow_class_code
98441 ,p_balance_type => l_balance_type_code);
98442 ELSE
98443 NULL;
98444 -- No business flow processing for business flow method of NONE.
98445 END IF;
98446
98447 --
98448 -- call analytical criteria
98449 --
98450
98451 --
98452 -- call description
98453 --
98454 -- No description or it is inherited.
98455 --
98456 -- call ADRs
98457 -- Bug 4922099
98458 --
98459 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
98460 (NVL(l_actual_upg_option, 'N') = 'O') OR
98461 (NVL(l_enc_upg_option, 'N') = 'O')
98462 )
98463 THEN
98464 NULL;
98465 --
98466 --
98467
98468 l_ccid := AcctDerRule_4(
98469 p_application_id => p_application_id
98470 , p_ae_header_id => l_ae_header_id
98471 , p_source_4 => p_source_4
98472 , x_transaction_coa_id => l_adr_transaction_coa_id
98473 , x_accounting_coa_id => l_adr_accounting_coa_id
98474 , x_value_type_code => l_adr_value_type_code
98475 , p_side => 'NA'
98476 );
98477
98478 xla_ae_lines_pkg.set_ccid(
98479 p_code_combination_id => l_ccid
98480 , p_value_type_code => l_adr_value_type_code
98481 , p_transaction_coa_id => l_adr_transaction_coa_id
98482 , p_accounting_coa_id => l_adr_accounting_coa_id
98483 , p_adr_code => 'CST_DEFAULT'
98484 , p_adr_type_code => 'S'
98485 , p_component_type => l_component_type
98486 , p_component_code => l_component_code
98487 , p_component_type_code => l_component_type_code
98488 , p_component_appl_id => l_component_appl_id
98489 , p_amb_context_code => l_amb_context_code
98490 , p_side => 'NA'
98491 );
98492
98493
98494 --
98495 --
98496 END IF;
98497 --
98498 -- Bug 4922099
98499 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
98500 (NVL(l_enc_upg_option, 'N') = 'O')
98501 ) AND
98502 (l_bflow_method_code = 'PRIOR_ENTRY')
98503 )
98504 THEN
98505 IF
98506 --
98507 1 = 2
98508 --
98509 THEN
98510 xla_accounting_err_pkg.build_message
98511 (p_appli_s_name => 'XLA'
98512 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
98513 ,p_token_1 => 'LINE_NUMBER'
98514 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
98515 ,p_token_2 => 'LINE_TYPE_NAME'
98516 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
98517 l_component_type
98518 ,l_component_code
98519 ,l_component_type_code
98520 ,l_component_appl_id
98521 ,l_amb_context_code
98522 ,l_entity_code
98523 ,l_event_class_code
98524 )
98525 ,p_token_3 => 'OWNER'
98526 ,p_value_3 => xla_lookups_pkg.get_meaning(
98527 p_lookup_type => 'XLA_OWNER_TYPE'
98528 ,p_lookup_code => l_component_type_code
98529 )
98530 ,p_token_4 => 'PRODUCT_NAME'
98531 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
98532 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
98533 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
98534 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
98535 ,p_ae_header_id => NULL
98536 );
98537
98538 IF (C_LEVEL_ERROR>= g_log_level) THEN
98539 trace
98540 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
98541 ,p_level => C_LEVEL_ERROR
98542 ,p_module => l_log_module);
98543 END IF;
98544 END IF;
98545 END IF;
98546 --
98547 --
98548 ------------------------------------------------------------------------------------------------
98549 -- 4219869 Business Flow
98550 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
98551 -- Prior Entry. Currently, the following code is always generated.
98552 ------------------------------------------------------------------------------------------------
98553 XLA_AE_LINES_PKG.ValidateCurrentLine;
98554
98555 ------------------------------------------------------------------------------------
98556 -- 4219869 Business Flow
98557 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
98558 ------------------------------------------------------------------------------------
98559 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
98560
98561 ----------------------------------------------------------------------------------
98562 -- 4219869 Business Flow
98563 -- Update journal entry status -- Need to generate this within IF <condition>
98564 ----------------------------------------------------------------------------------
98565 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
98566 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
98567 ,p_balance_type_code => l_balance_type_code
98568 );
98569
98570 -------------------------------------------------------------------------------------------
98571 -- 4262811 - Generate the Accrual Reversal lines
98572 -------------------------------------------------------------------------------------------
98573 BEGIN
98574 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
98575 (g_array_event(p_event_id).array_value_num('header_index'));
98576 IF l_acc_rev_flag IS NULL THEN
98577 l_acc_rev_flag := 'N';
98578 END IF;
98579 EXCEPTION
98580 WHEN OTHERS THEN
98581 l_acc_rev_flag := 'N';
98582 END;
98583 --
98584 IF (l_acc_rev_flag = 'Y') THEN
98585
98586 -- 4645092 ------------------------------------------------------------------------------
98587 -- To allow MPA report to determine if it should generate report process
98588 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
98589 ------------------------------------------------------------------------------------------
98590
98591 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
98592 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
98593 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
98594 -- call ADRs
98595 -- Bug 4922099
98596 --
98597 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
98598 (NVL(l_actual_upg_option, 'N') = 'O') OR
98599 (NVL(l_enc_upg_option, 'N') = 'O')
98600 )
98601 THEN
98602 NULL;
98603 --
98604 --
98605
98606 l_ccid := AcctDerRule_4(
98607 p_application_id => p_application_id
98608 , p_ae_header_id => l_ae_header_id
98609 , p_source_4 => p_source_4
98610 , x_transaction_coa_id => l_adr_transaction_coa_id
98611 , x_accounting_coa_id => l_adr_accounting_coa_id
98612 , x_value_type_code => l_adr_value_type_code
98613 , p_side => 'NA'
98614 );
98615
98616 xla_ae_lines_pkg.set_ccid(
98617 p_code_combination_id => l_ccid
98618 , p_value_type_code => l_adr_value_type_code
98619 , p_transaction_coa_id => l_adr_transaction_coa_id
98620 , p_accounting_coa_id => l_adr_accounting_coa_id
98621 , p_adr_code => 'CST_DEFAULT'
98622 , p_adr_type_code => 'S'
98623 , p_component_type => l_component_type
98624 , p_component_code => l_component_code
98625 , p_component_type_code => l_component_type_code
98626 , p_component_appl_id => l_component_appl_id
98627 , p_amb_context_code => l_amb_context_code
98628 , p_side => 'NA'
98629 );
98630
98631
98632 --
98633 --
98634 END IF;
98635
98636 --
98637 -- Update the line information that should be overwritten
98638 --
98639 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
98640 p_header_num => 1);
98641 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
98642
98643 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
98644
98645 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
98646 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
98647 END IF;
98648
98649 --
98650 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
98651 --
98652 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
98653 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
98654 ELSE
98655 ---------------------------------------------------------------------------------------------------
98656 -- 4262811a Switch Sign
98657 ---------------------------------------------------------------------------------------------------
98658 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
98659 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
98660 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
98661 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
98662 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
98663 -- 5132302
98664 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
98665 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
98666
98667 END IF;
98668
98669 -- 4955764
98670 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
98671 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
98672
98673
98674 XLA_AE_LINES_PKG.ValidateCurrentLine;
98675 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
98676
98677 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
98678 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
98679 ,p_balance_type_code => l_balance_type_code);
98680
98681 END IF;
98682
98683 -----------------------------------------------------------------------------------------
98684 -- 4262811 Multiperiod Accounting
98685 -----------------------------------------------------------------------------------------
98686 -- No MPA option is assigned.
98687
98688
98689 END IF;
98690 END IF;
98691 --
98692
98693 --
98694 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
98695 trace
98696 (p_msg => 'END of AcctLineType_179'
98697 ,p_level => C_LEVEL_PROCEDURE
98698 ,p_module => l_log_module);
98699 END IF;
98700 --
98701 EXCEPTION
98702 WHEN xla_exceptions_pkg.application_exception THEN
98703 RAISE;
98704 WHEN OTHERS THEN
98705 xla_exceptions_pkg.raise_message
98706 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_179');
98707 END AcctLineType_179;
98708 --
98709
98710 ---------------------------------------
98711 --
98712 -- PRIVATE FUNCTION
98713 -- AcctLineType_180
98714 --
98715 ---------------------------------------
98716 PROCEDURE AcctLineType_180 (
98717 p_application_id IN NUMBER
98718 ,p_event_id IN NUMBER
98719 ,p_calculate_acctd_flag IN VARCHAR2
98720 ,p_calculate_g_l_flag IN VARCHAR2
98721 ,p_actual_flag IN OUT VARCHAR2
98722 ,p_balance_type_code OUT VARCHAR2
98723 ,p_gain_or_loss_ref OUT VARCHAR2
98724
98725 --Cost Management Default Account
98726 , p_source_4 IN NUMBER
98727 --DISTRIBUTION_IDENTIFIER
98728 , p_source_11 IN NUMBER
98729 --Distribution Type
98730 , p_source_12 IN VARCHAR2
98731 , p_source_12_meaning IN VARCHAR2
98732 --Entered Currency Code
98733 , p_source_15 IN VARCHAR2
98734 --Entered Amount
98735 , p_source_18 IN NUMBER
98736 --Currency Conversion Date
98737 , p_source_19 IN DATE
98738 --Currency Conversion Rate
98739 , p_source_20 IN NUMBER
98740 --Currency Conversion Type
98741 , p_source_21 IN VARCHAR2
98742 --Accounted Amount
98743 , p_source_22 IN NUMBER
98744 --Accounting Line Type
98745 , p_source_24 IN NUMBER
98746 --Transaction Action Name
98747 , p_source_35 IN NUMBER
98748 , p_source_35_meaning IN VARCHAR2
98749 )
98750 IS
98751
98752 l_component_type VARCHAR2(80);
98753 l_component_code VARCHAR2(30);
98754 l_component_type_code VARCHAR2(1);
98755 l_component_appl_id INTEGER;
98756 l_amb_context_code VARCHAR2(30);
98757 l_entity_code VARCHAR2(30);
98758 l_event_class_code VARCHAR2(30);
98759 l_ae_header_id NUMBER;
98760 l_event_type_code VARCHAR2(30);
98761 l_line_definition_code VARCHAR2(30);
98762 l_line_definition_owner_code VARCHAR2(1);
98763 --
98764 -- adr variables
98765 l_segment VARCHAR2(30);
98766 l_ccid NUMBER;
98767 l_adr_transaction_coa_id NUMBER;
98768 l_adr_accounting_coa_id NUMBER;
98769 l_adr_flexfield_segment_code VARCHAR2(30);
98770 l_adr_flex_value_set_id NUMBER;
98771 l_adr_value_type_code VARCHAR2(30);
98772 l_adr_value_combination_id NUMBER;
98773 l_adr_value_segment_code VARCHAR2(30);
98774
98775 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
98776 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
98777 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
98778 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
98779
98780 -- 4262811 Variables ------------------------------------------------------------------------------------------
98781 l_entered_amt_idx NUMBER;
98782 l_accted_amt_idx NUMBER;
98783 l_acc_rev_flag VARCHAR2(1);
98784 l_accrual_line_num NUMBER;
98785 l_tmp_amt NUMBER;
98786 l_acc_rev_natural_side_code VARCHAR2(1);
98787
98788 l_num_entries NUMBER;
98789 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
98790 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
98791 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
98792 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
98793 l_recog_line_1 NUMBER;
98794 l_recog_line_2 NUMBER;
98795
98796 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
98797 l_bflow_applied_to_amt NUMBER; -- 5132302
98798 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
98799
98800 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
98801
98802 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
98803 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
98804
98805 ---------------------------------------------------------------------------------------------------------------
98806
98807
98808 --
98809 -- bulk performance
98810 --
98811 l_balance_type_code VARCHAR2(1);
98812 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
98813 l_log_module VARCHAR2(240);
98814
98815 --
98816 -- Upgrade strategy
98817 --
98818 l_actual_upg_option VARCHAR2(1);
98819 l_enc_upg_option VARCHAR2(1);
98820
98821 --
98822 BEGIN
98823 --
98824 IF g_log_enabled THEN
98825 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_180';
98826 END IF;
98827 --
98828 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
98829
98830 trace
98831 (p_msg => 'BEGIN of AcctLineType_180'
98832 ,p_level => C_LEVEL_PROCEDURE
98833 ,p_module => l_log_module);
98834
98835 END IF;
98836 --
98837 l_component_type := 'AMB_JLT';
98838 l_component_code := 'OFFSET';
98839 l_component_type_code := 'S';
98840 l_component_appl_id := 707;
98841 l_amb_context_code := 'DEFAULT';
98842 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
98843 l_event_class_code := 'LOG_INTERCOMPANY';
98844 l_event_type_code := 'LOG_INTERCOMPANY_ALL';
98845 l_line_definition_owner_code := 'S';
98846 l_line_definition_code := 'LOG_INTERCOMPANY';
98847 --
98848 l_balance_type_code := 'A';
98849 l_segment := NULL;
98850 l_ccid := NULL;
98851 l_adr_transaction_coa_id := NULL;
98852 l_adr_accounting_coa_id := NULL;
98853 l_adr_flexfield_segment_code := NULL;
98854 l_adr_flex_value_set_id := NULL;
98855 l_adr_value_type_code := NULL;
98856 l_adr_value_combination_id := NULL;
98857 l_adr_value_segment_code := NULL;
98858
98859 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
98860 l_bflow_class_code := ''; -- 4219869 Business Flow
98861 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
98862 l_budgetary_control_flag := 'N';
98863
98864 l_bflow_applied_to_amt_idx := NULL; -- 5132302
98865 l_bflow_applied_to_amt := NULL; -- 5132302
98866 l_entered_amt_idx := NULL; -- 4262811
98867 l_accted_amt_idx := NULL; -- 4262811
98868 l_acc_rev_flag := NULL; -- 4262811
98869 l_accrual_line_num := NULL; -- 4262811
98870 l_tmp_amt := NULL; -- 4262811
98871 --
98872
98873 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
98874 l_balance_type_code <> 'B' THEN
98875 IF NVL(p_source_24,9E125) = 2 AND
98876 ((p_source_22 <= 0 AND
98877 NVL(p_source_35,9E125) = 13) OR
98878 (p_source_22 <= 0 AND
98879 NVL(p_source_35,9E125) = 9) OR
98880 (p_source_22 >= 0 AND
98881 NVL(p_source_35,9E125) = 10) OR
98882 NVL(p_source_35,9E125) = 10 OR
98883 NVL(p_source_35,9E125) = 13)
98884 THEN
98885
98886 --
98887 XLA_AE_LINES_PKG.SetNewLine;
98888
98889 p_balance_type_code := l_balance_type_code;
98890 -- set the flag so later we will know whether the gain loss line needs to be created
98891
98892 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
98893 p_actual_flag :='A';
98894 END IF;
98895
98896 --
98897 -- bulk performance
98898 --
98899 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
98900 p_header_num => 0); -- 4262811
98901 --
98902 -- set accounting line options
98903 --
98904 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
98905 p_natural_side_code => 'D'
98906 , p_gain_or_loss_flag => 'N'
98907 , p_gl_transfer_mode_code => 'S'
98908 , p_acct_entry_type_code => 'A'
98909 , p_switch_side_flag => 'Y'
98910 , p_merge_duplicate_code => 'N'
98911 );
98912 --
98913 l_acc_rev_natural_side_code := 'C'; -- 4262811
98914 --
98915 --
98916 -- set accounting line type info
98917 --
98918 xla_ae_lines_pkg.SetAcctLineType
98919 (p_component_type => l_component_type
98920 ,p_event_type_code => l_event_type_code
98921 ,p_line_definition_owner_code => l_line_definition_owner_code
98922 ,p_line_definition_code => l_line_definition_code
98923 ,p_accounting_line_code => l_component_code
98924 ,p_accounting_line_type_code => l_component_type_code
98925 ,p_accounting_line_appl_id => l_component_appl_id
98926 ,p_amb_context_code => l_amb_context_code
98927 ,p_entity_code => l_entity_code
98928 ,p_event_class_code => l_event_class_code);
98929 --
98930 -- set accounting class
98931 --
98932 xla_ae_lines_pkg.SetAcctClass(
98933 p_accounting_class_code => 'OFFSET'
98934 , p_ae_header_id => l_ae_header_id
98935 );
98936
98937 --
98938 -- set rounding class
98939 --
98940 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
98941 'OFFSET';
98942
98943 --
98944 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
98945 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
98946 --
98947 -- bulk performance
98948 --
98949 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
98950
98951 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
98952 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
98953
98954 -- 4955764
98955 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
98956 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
98957
98958 -- 4458381 Public Sector Enh
98959
98960 --
98961 -- set accounting attributes for the line type
98962 --
98963 l_entered_amt_idx := 3;
98964 l_accted_amt_idx := 8;
98965 l_bflow_applied_to_amt_idx := NULL; -- 5132302
98966 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
98967 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
98968 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
98969 l_rec_acct_attrs.array_char_value(2) := p_source_12;
98970 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
98971 l_rec_acct_attrs.array_num_value(3) := p_source_18;
98972 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
98973 l_rec_acct_attrs.array_char_value(4) := p_source_15;
98974 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
98975 l_rec_acct_attrs.array_date_value(5) := p_source_19;
98976 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
98977 l_rec_acct_attrs.array_num_value(6) := p_source_20;
98978 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
98979 l_rec_acct_attrs.array_char_value(7) := p_source_21;
98980 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
98981 l_rec_acct_attrs.array_num_value(8) := p_source_22;
98982
98983 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
98984 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
98985
98986 ---------------------------------------------------------------------------------------------------------------
98987 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
98988 ---------------------------------------------------------------------------------------------------------------
98989 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
98990
98991 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
98992 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
98993
98994 IF xla_accounting_cache_pkg.GetValueChar
98995 (p_source_code => 'LEDGER_CATEGORY_CODE'
98996 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
98997 AND l_bflow_method_code = 'PRIOR_ENTRY'
98998 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
98999 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
99000 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
99001 )
99002 THEN
99003 xla_ae_lines_pkg.BflowUpgEntry
99004 (p_business_method_code => l_bflow_method_code
99005 ,p_business_class_code => l_bflow_class_code
99006 ,p_balance_type => l_balance_type_code);
99007 ELSE
99008 NULL;
99009 -- No business flow processing for business flow method of NONE.
99010 END IF;
99011
99012 --
99013 -- call analytical criteria
99014 --
99015
99016 --
99017 -- call description
99018 --
99019 -- No description or it is inherited.
99020 --
99021 -- call ADRs
99022 -- Bug 4922099
99023 --
99024 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
99025 (NVL(l_actual_upg_option, 'N') = 'O') OR
99026 (NVL(l_enc_upg_option, 'N') = 'O')
99027 )
99028 THEN
99029 NULL;
99030 --
99031 --
99032
99033 l_ccid := AcctDerRule_4(
99034 p_application_id => p_application_id
99035 , p_ae_header_id => l_ae_header_id
99036 , p_source_4 => p_source_4
99037 , x_transaction_coa_id => l_adr_transaction_coa_id
99038 , x_accounting_coa_id => l_adr_accounting_coa_id
99039 , x_value_type_code => l_adr_value_type_code
99040 , p_side => 'NA'
99041 );
99042
99043 xla_ae_lines_pkg.set_ccid(
99044 p_code_combination_id => l_ccid
99045 , p_value_type_code => l_adr_value_type_code
99046 , p_transaction_coa_id => l_adr_transaction_coa_id
99047 , p_accounting_coa_id => l_adr_accounting_coa_id
99048 , p_adr_code => 'CST_DEFAULT'
99049 , p_adr_type_code => 'S'
99050 , p_component_type => l_component_type
99051 , p_component_code => l_component_code
99052 , p_component_type_code => l_component_type_code
99053 , p_component_appl_id => l_component_appl_id
99054 , p_amb_context_code => l_amb_context_code
99055 , p_side => 'NA'
99056 );
99057
99058
99059 --
99060 --
99061 END IF;
99062 --
99063 -- Bug 4922099
99064 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
99065 (NVL(l_enc_upg_option, 'N') = 'O')
99066 ) AND
99067 (l_bflow_method_code = 'PRIOR_ENTRY')
99068 )
99069 THEN
99070 IF
99071 --
99072 1 = 2
99073 --
99074 THEN
99075 xla_accounting_err_pkg.build_message
99076 (p_appli_s_name => 'XLA'
99077 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
99078 ,p_token_1 => 'LINE_NUMBER'
99079 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
99080 ,p_token_2 => 'LINE_TYPE_NAME'
99081 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
99082 l_component_type
99083 ,l_component_code
99084 ,l_component_type_code
99085 ,l_component_appl_id
99086 ,l_amb_context_code
99087 ,l_entity_code
99088 ,l_event_class_code
99089 )
99090 ,p_token_3 => 'OWNER'
99091 ,p_value_3 => xla_lookups_pkg.get_meaning(
99092 p_lookup_type => 'XLA_OWNER_TYPE'
99093 ,p_lookup_code => l_component_type_code
99094 )
99095 ,p_token_4 => 'PRODUCT_NAME'
99096 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
99097 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
99098 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
99099 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
99100 ,p_ae_header_id => NULL
99101 );
99102
99103 IF (C_LEVEL_ERROR>= g_log_level) THEN
99104 trace
99105 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
99106 ,p_level => C_LEVEL_ERROR
99107 ,p_module => l_log_module);
99108 END IF;
99109 END IF;
99110 END IF;
99111 --
99112 --
99113 ------------------------------------------------------------------------------------------------
99114 -- 4219869 Business Flow
99115 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
99116 -- Prior Entry. Currently, the following code is always generated.
99117 ------------------------------------------------------------------------------------------------
99118 XLA_AE_LINES_PKG.ValidateCurrentLine;
99119
99120 ------------------------------------------------------------------------------------
99121 -- 4219869 Business Flow
99122 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
99123 ------------------------------------------------------------------------------------
99124 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
99125
99126 ----------------------------------------------------------------------------------
99127 -- 4219869 Business Flow
99128 -- Update journal entry status -- Need to generate this within IF <condition>
99129 ----------------------------------------------------------------------------------
99130 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
99131 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
99132 ,p_balance_type_code => l_balance_type_code
99133 );
99134
99135 -------------------------------------------------------------------------------------------
99136 -- 4262811 - Generate the Accrual Reversal lines
99137 -------------------------------------------------------------------------------------------
99138 BEGIN
99139 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
99140 (g_array_event(p_event_id).array_value_num('header_index'));
99141 IF l_acc_rev_flag IS NULL THEN
99142 l_acc_rev_flag := 'N';
99143 END IF;
99144 EXCEPTION
99145 WHEN OTHERS THEN
99146 l_acc_rev_flag := 'N';
99147 END;
99148 --
99149 IF (l_acc_rev_flag = 'Y') THEN
99150
99151 -- 4645092 ------------------------------------------------------------------------------
99152 -- To allow MPA report to determine if it should generate report process
99153 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
99154 ------------------------------------------------------------------------------------------
99155
99156 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
99157 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
99158 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
99159 -- call ADRs
99160 -- Bug 4922099
99161 --
99162 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
99163 (NVL(l_actual_upg_option, 'N') = 'O') OR
99164 (NVL(l_enc_upg_option, 'N') = 'O')
99165 )
99166 THEN
99167 NULL;
99168 --
99169 --
99170
99171 l_ccid := AcctDerRule_4(
99172 p_application_id => p_application_id
99173 , p_ae_header_id => l_ae_header_id
99174 , p_source_4 => p_source_4
99175 , x_transaction_coa_id => l_adr_transaction_coa_id
99176 , x_accounting_coa_id => l_adr_accounting_coa_id
99177 , x_value_type_code => l_adr_value_type_code
99178 , p_side => 'NA'
99179 );
99180
99181 xla_ae_lines_pkg.set_ccid(
99182 p_code_combination_id => l_ccid
99183 , p_value_type_code => l_adr_value_type_code
99184 , p_transaction_coa_id => l_adr_transaction_coa_id
99185 , p_accounting_coa_id => l_adr_accounting_coa_id
99186 , p_adr_code => 'CST_DEFAULT'
99187 , p_adr_type_code => 'S'
99188 , p_component_type => l_component_type
99189 , p_component_code => l_component_code
99190 , p_component_type_code => l_component_type_code
99191 , p_component_appl_id => l_component_appl_id
99192 , p_amb_context_code => l_amb_context_code
99193 , p_side => 'NA'
99194 );
99195
99196
99197 --
99198 --
99199 END IF;
99200
99201 --
99202 -- Update the line information that should be overwritten
99203 --
99204 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
99205 p_header_num => 1);
99206 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
99207
99208 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
99209
99210 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
99211 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
99212 END IF;
99213
99214 --
99215 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
99216 --
99217 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
99218 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
99219 ELSE
99220 ---------------------------------------------------------------------------------------------------
99221 -- 4262811a Switch Sign
99222 ---------------------------------------------------------------------------------------------------
99223 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
99224 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
99225 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
99226 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
99227 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
99228 -- 5132302
99229 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
99230 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
99231
99232 END IF;
99233
99234 -- 4955764
99235 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
99236 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
99237
99238
99239 XLA_AE_LINES_PKG.ValidateCurrentLine;
99240 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
99241
99242 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
99243 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
99244 ,p_balance_type_code => l_balance_type_code);
99245
99246 END IF;
99247
99248 -----------------------------------------------------------------------------------------
99249 -- 4262811 Multiperiod Accounting
99250 -----------------------------------------------------------------------------------------
99251 -- No MPA option is assigned.
99252
99253
99254 END IF;
99255 END IF;
99256 --
99257
99258 --
99259 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
99260 trace
99261 (p_msg => 'END of AcctLineType_180'
99262 ,p_level => C_LEVEL_PROCEDURE
99263 ,p_module => l_log_module);
99264 END IF;
99265 --
99266 EXCEPTION
99267 WHEN xla_exceptions_pkg.application_exception THEN
99268 RAISE;
99269 WHEN OTHERS THEN
99270 xla_exceptions_pkg.raise_message
99271 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_180');
99272 END AcctLineType_180;
99273 --
99274
99275 ---------------------------------------
99276 --
99277 -- PRIVATE FUNCTION
99278 -- AcctLineType_181
99279 --
99280 ---------------------------------------
99281 PROCEDURE AcctLineType_181 (
99282 p_application_id IN NUMBER
99283 ,p_event_id IN NUMBER
99284 ,p_calculate_acctd_flag IN VARCHAR2
99285 ,p_calculate_g_l_flag IN VARCHAR2
99286 ,p_actual_flag IN OUT VARCHAR2
99287 ,p_balance_type_code OUT VARCHAR2
99288 ,p_gain_or_loss_ref OUT VARCHAR2
99289
99290 --Cost Management Default Account
99291 , p_source_4 IN NUMBER
99292 --DISTRIBUTION_IDENTIFIER
99293 , p_source_11 IN NUMBER
99294 --Distribution Type
99295 , p_source_12 IN VARCHAR2
99296 , p_source_12_meaning IN VARCHAR2
99297 --Entered Currency Code
99298 , p_source_15 IN VARCHAR2
99299 --Entered Amount
99300 , p_source_18 IN NUMBER
99301 --Currency Conversion Date
99302 , p_source_19 IN DATE
99303 --Currency Conversion Rate
99304 , p_source_20 IN NUMBER
99305 --Currency Conversion Type
99306 , p_source_21 IN VARCHAR2
99307 --Accounted Amount
99308 , p_source_22 IN NUMBER
99309 --Accounting Line Type
99310 , p_source_24 IN NUMBER
99311 )
99312 IS
99313
99314 l_component_type VARCHAR2(80);
99315 l_component_code VARCHAR2(30);
99316 l_component_type_code VARCHAR2(1);
99317 l_component_appl_id INTEGER;
99318 l_amb_context_code VARCHAR2(30);
99319 l_entity_code VARCHAR2(30);
99320 l_event_class_code VARCHAR2(30);
99321 l_ae_header_id NUMBER;
99322 l_event_type_code VARCHAR2(30);
99323 l_line_definition_code VARCHAR2(30);
99324 l_line_definition_owner_code VARCHAR2(1);
99325 --
99326 -- adr variables
99327 l_segment VARCHAR2(30);
99328 l_ccid NUMBER;
99329 l_adr_transaction_coa_id NUMBER;
99330 l_adr_accounting_coa_id NUMBER;
99331 l_adr_flexfield_segment_code VARCHAR2(30);
99332 l_adr_flex_value_set_id NUMBER;
99333 l_adr_value_type_code VARCHAR2(30);
99334 l_adr_value_combination_id NUMBER;
99335 l_adr_value_segment_code VARCHAR2(30);
99336
99337 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
99338 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
99339 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
99340 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
99341
99342 -- 4262811 Variables ------------------------------------------------------------------------------------------
99343 l_entered_amt_idx NUMBER;
99344 l_accted_amt_idx NUMBER;
99345 l_acc_rev_flag VARCHAR2(1);
99346 l_accrual_line_num NUMBER;
99347 l_tmp_amt NUMBER;
99348 l_acc_rev_natural_side_code VARCHAR2(1);
99349
99350 l_num_entries NUMBER;
99351 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
99352 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
99353 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
99354 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
99355 l_recog_line_1 NUMBER;
99356 l_recog_line_2 NUMBER;
99357
99358 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
99359 l_bflow_applied_to_amt NUMBER; -- 5132302
99360 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
99361
99362 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
99363
99364 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
99365 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
99366
99367 ---------------------------------------------------------------------------------------------------------------
99368
99369
99370 --
99371 -- bulk performance
99372 --
99373 l_balance_type_code VARCHAR2(1);
99374 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
99375 l_log_module VARCHAR2(240);
99376
99377 --
99378 -- Upgrade strategy
99379 --
99380 l_actual_upg_option VARCHAR2(1);
99381 l_enc_upg_option VARCHAR2(1);
99382
99383 --
99384 BEGIN
99385 --
99386 IF g_log_enabled THEN
99387 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_181';
99388 END IF;
99389 --
99390 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
99391
99392 trace
99393 (p_msg => 'BEGIN of AcctLineType_181'
99394 ,p_level => C_LEVEL_PROCEDURE
99395 ,p_module => l_log_module);
99396
99397 END IF;
99398 --
99399 l_component_type := 'AMB_JLT';
99400 l_component_code := 'OFFSET';
99401 l_component_type_code := 'S';
99402 l_component_appl_id := 707;
99403 l_amb_context_code := 'DEFAULT';
99404 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
99405 l_event_class_code := 'USER_DEFINE';
99406 l_event_type_code := 'UDIR_INTERORG_SHIP_TP';
99407 l_line_definition_owner_code := 'S';
99408 l_line_definition_code := 'USER_DIR_INTERORG_SHIP_TP';
99409 --
99410 l_balance_type_code := 'A';
99411 l_segment := NULL;
99412 l_ccid := NULL;
99413 l_adr_transaction_coa_id := NULL;
99414 l_adr_accounting_coa_id := NULL;
99415 l_adr_flexfield_segment_code := NULL;
99416 l_adr_flex_value_set_id := NULL;
99417 l_adr_value_type_code := NULL;
99418 l_adr_value_combination_id := NULL;
99419 l_adr_value_segment_code := NULL;
99420
99421 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
99422 l_bflow_class_code := ''; -- 4219869 Business Flow
99423 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
99424 l_budgetary_control_flag := 'N';
99425
99426 l_bflow_applied_to_amt_idx := NULL; -- 5132302
99427 l_bflow_applied_to_amt := NULL; -- 5132302
99428 l_entered_amt_idx := NULL; -- 4262811
99429 l_accted_amt_idx := NULL; -- 4262811
99430 l_acc_rev_flag := NULL; -- 4262811
99431 l_accrual_line_num := NULL; -- 4262811
99432 l_tmp_amt := NULL; -- 4262811
99433 --
99434
99435 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
99436 l_balance_type_code <> 'B' THEN
99437 IF NVL(p_source_24,9E125) = 2
99438 THEN
99439
99440 --
99441 XLA_AE_LINES_PKG.SetNewLine;
99442
99443 p_balance_type_code := l_balance_type_code;
99444 -- set the flag so later we will know whether the gain loss line needs to be created
99445
99446 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
99447 p_actual_flag :='A';
99448 END IF;
99449
99450 --
99451 -- bulk performance
99452 --
99453 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
99454 p_header_num => 0); -- 4262811
99455 --
99456 -- set accounting line options
99457 --
99458 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
99459 p_natural_side_code => 'D'
99460 , p_gain_or_loss_flag => 'N'
99461 , p_gl_transfer_mode_code => 'S'
99462 , p_acct_entry_type_code => 'A'
99463 , p_switch_side_flag => 'Y'
99464 , p_merge_duplicate_code => 'N'
99465 );
99466 --
99467 l_acc_rev_natural_side_code := 'C'; -- 4262811
99468 --
99469 --
99470 -- set accounting line type info
99471 --
99472 xla_ae_lines_pkg.SetAcctLineType
99473 (p_component_type => l_component_type
99474 ,p_event_type_code => l_event_type_code
99475 ,p_line_definition_owner_code => l_line_definition_owner_code
99476 ,p_line_definition_code => l_line_definition_code
99477 ,p_accounting_line_code => l_component_code
99478 ,p_accounting_line_type_code => l_component_type_code
99479 ,p_accounting_line_appl_id => l_component_appl_id
99480 ,p_amb_context_code => l_amb_context_code
99481 ,p_entity_code => l_entity_code
99482 ,p_event_class_code => l_event_class_code);
99483 --
99484 -- set accounting class
99485 --
99486 xla_ae_lines_pkg.SetAcctClass(
99487 p_accounting_class_code => 'OFFSET'
99488 , p_ae_header_id => l_ae_header_id
99489 );
99490
99491 --
99492 -- set rounding class
99493 --
99494 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
99495 'OFFSET';
99496
99497 --
99498 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
99499 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
99500 --
99501 -- bulk performance
99502 --
99503 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
99504
99505 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
99506 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
99507
99508 -- 4955764
99509 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
99510 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
99511
99512 -- 4458381 Public Sector Enh
99513
99514 --
99515 -- set accounting attributes for the line type
99516 --
99517 l_entered_amt_idx := 3;
99518 l_accted_amt_idx := 8;
99519 l_bflow_applied_to_amt_idx := NULL; -- 5132302
99520 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
99521 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
99522 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
99523 l_rec_acct_attrs.array_char_value(2) := p_source_12;
99524 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
99525 l_rec_acct_attrs.array_num_value(3) := p_source_18;
99526 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
99527 l_rec_acct_attrs.array_char_value(4) := p_source_15;
99528 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
99529 l_rec_acct_attrs.array_date_value(5) := p_source_19;
99530 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
99531 l_rec_acct_attrs.array_num_value(6) := p_source_20;
99532 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
99533 l_rec_acct_attrs.array_char_value(7) := p_source_21;
99534 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
99535 l_rec_acct_attrs.array_num_value(8) := p_source_22;
99536
99537 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
99538 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
99539
99540 ---------------------------------------------------------------------------------------------------------------
99541 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
99542 ---------------------------------------------------------------------------------------------------------------
99543 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
99544
99545 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
99546 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
99547
99548 IF xla_accounting_cache_pkg.GetValueChar
99549 (p_source_code => 'LEDGER_CATEGORY_CODE'
99550 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
99551 AND l_bflow_method_code = 'PRIOR_ENTRY'
99552 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
99553 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
99554 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
99555 )
99556 THEN
99557 xla_ae_lines_pkg.BflowUpgEntry
99558 (p_business_method_code => l_bflow_method_code
99559 ,p_business_class_code => l_bflow_class_code
99560 ,p_balance_type => l_balance_type_code);
99561 ELSE
99562 NULL;
99563 -- No business flow processing for business flow method of NONE.
99564 END IF;
99565
99566 --
99567 -- call analytical criteria
99568 --
99569
99570 --
99571 -- call description
99572 --
99573 -- No description or it is inherited.
99574 --
99575 -- call ADRs
99576 -- Bug 4922099
99577 --
99578 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
99579 (NVL(l_actual_upg_option, 'N') = 'O') OR
99580 (NVL(l_enc_upg_option, 'N') = 'O')
99581 )
99582 THEN
99583 NULL;
99584 --
99585 --
99586
99587 l_ccid := AcctDerRule_4(
99588 p_application_id => p_application_id
99589 , p_ae_header_id => l_ae_header_id
99590 , p_source_4 => p_source_4
99591 , x_transaction_coa_id => l_adr_transaction_coa_id
99592 , x_accounting_coa_id => l_adr_accounting_coa_id
99593 , x_value_type_code => l_adr_value_type_code
99594 , p_side => 'NA'
99595 );
99596
99597 xla_ae_lines_pkg.set_ccid(
99598 p_code_combination_id => l_ccid
99599 , p_value_type_code => l_adr_value_type_code
99600 , p_transaction_coa_id => l_adr_transaction_coa_id
99601 , p_accounting_coa_id => l_adr_accounting_coa_id
99602 , p_adr_code => 'CST_DEFAULT'
99603 , p_adr_type_code => 'S'
99604 , p_component_type => l_component_type
99605 , p_component_code => l_component_code
99606 , p_component_type_code => l_component_type_code
99607 , p_component_appl_id => l_component_appl_id
99608 , p_amb_context_code => l_amb_context_code
99609 , p_side => 'NA'
99610 );
99611
99612
99613 --
99614 --
99615 END IF;
99616 --
99617 -- Bug 4922099
99618 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
99619 (NVL(l_enc_upg_option, 'N') = 'O')
99620 ) AND
99621 (l_bflow_method_code = 'PRIOR_ENTRY')
99622 )
99623 THEN
99624 IF
99625 --
99626 1 = 2
99627 --
99628 THEN
99629 xla_accounting_err_pkg.build_message
99630 (p_appli_s_name => 'XLA'
99631 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
99632 ,p_token_1 => 'LINE_NUMBER'
99633 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
99634 ,p_token_2 => 'LINE_TYPE_NAME'
99635 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
99636 l_component_type
99637 ,l_component_code
99638 ,l_component_type_code
99639 ,l_component_appl_id
99640 ,l_amb_context_code
99641 ,l_entity_code
99642 ,l_event_class_code
99643 )
99644 ,p_token_3 => 'OWNER'
99645 ,p_value_3 => xla_lookups_pkg.get_meaning(
99646 p_lookup_type => 'XLA_OWNER_TYPE'
99647 ,p_lookup_code => l_component_type_code
99648 )
99649 ,p_token_4 => 'PRODUCT_NAME'
99650 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
99651 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
99652 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
99653 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
99654 ,p_ae_header_id => NULL
99655 );
99656
99657 IF (C_LEVEL_ERROR>= g_log_level) THEN
99658 trace
99659 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
99660 ,p_level => C_LEVEL_ERROR
99661 ,p_module => l_log_module);
99662 END IF;
99663 END IF;
99664 END IF;
99665 --
99666 --
99667 ------------------------------------------------------------------------------------------------
99668 -- 4219869 Business Flow
99669 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
99670 -- Prior Entry. Currently, the following code is always generated.
99671 ------------------------------------------------------------------------------------------------
99672 XLA_AE_LINES_PKG.ValidateCurrentLine;
99673
99674 ------------------------------------------------------------------------------------
99675 -- 4219869 Business Flow
99676 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
99677 ------------------------------------------------------------------------------------
99678 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
99679
99680 ----------------------------------------------------------------------------------
99681 -- 4219869 Business Flow
99682 -- Update journal entry status -- Need to generate this within IF <condition>
99683 ----------------------------------------------------------------------------------
99684 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
99685 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
99686 ,p_balance_type_code => l_balance_type_code
99687 );
99688
99689 -------------------------------------------------------------------------------------------
99690 -- 4262811 - Generate the Accrual Reversal lines
99691 -------------------------------------------------------------------------------------------
99692 BEGIN
99693 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
99694 (g_array_event(p_event_id).array_value_num('header_index'));
99695 IF l_acc_rev_flag IS NULL THEN
99696 l_acc_rev_flag := 'N';
99697 END IF;
99698 EXCEPTION
99699 WHEN OTHERS THEN
99700 l_acc_rev_flag := 'N';
99701 END;
99702 --
99703 IF (l_acc_rev_flag = 'Y') THEN
99704
99705 -- 4645092 ------------------------------------------------------------------------------
99706 -- To allow MPA report to determine if it should generate report process
99707 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
99708 ------------------------------------------------------------------------------------------
99709
99710 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
99711 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
99712 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
99713 -- call ADRs
99714 -- Bug 4922099
99715 --
99716 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
99717 (NVL(l_actual_upg_option, 'N') = 'O') OR
99718 (NVL(l_enc_upg_option, 'N') = 'O')
99719 )
99720 THEN
99721 NULL;
99722 --
99723 --
99724
99725 l_ccid := AcctDerRule_4(
99726 p_application_id => p_application_id
99727 , p_ae_header_id => l_ae_header_id
99728 , p_source_4 => p_source_4
99729 , x_transaction_coa_id => l_adr_transaction_coa_id
99730 , x_accounting_coa_id => l_adr_accounting_coa_id
99731 , x_value_type_code => l_adr_value_type_code
99732 , p_side => 'NA'
99733 );
99734
99735 xla_ae_lines_pkg.set_ccid(
99736 p_code_combination_id => l_ccid
99737 , p_value_type_code => l_adr_value_type_code
99738 , p_transaction_coa_id => l_adr_transaction_coa_id
99739 , p_accounting_coa_id => l_adr_accounting_coa_id
99740 , p_adr_code => 'CST_DEFAULT'
99741 , p_adr_type_code => 'S'
99742 , p_component_type => l_component_type
99743 , p_component_code => l_component_code
99744 , p_component_type_code => l_component_type_code
99745 , p_component_appl_id => l_component_appl_id
99746 , p_amb_context_code => l_amb_context_code
99747 , p_side => 'NA'
99748 );
99749
99750
99751 --
99752 --
99753 END IF;
99754
99755 --
99756 -- Update the line information that should be overwritten
99757 --
99758 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
99759 p_header_num => 1);
99760 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
99761
99762 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
99763
99764 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
99765 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
99766 END IF;
99767
99768 --
99769 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
99770 --
99771 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
99772 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
99773 ELSE
99774 ---------------------------------------------------------------------------------------------------
99775 -- 4262811a Switch Sign
99776 ---------------------------------------------------------------------------------------------------
99777 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
99778 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
99779 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
99780 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
99781 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
99782 -- 5132302
99783 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
99784 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
99785
99786 END IF;
99787
99788 -- 4955764
99789 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
99790 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
99791
99792
99793 XLA_AE_LINES_PKG.ValidateCurrentLine;
99794 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
99795
99796 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
99797 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
99798 ,p_balance_type_code => l_balance_type_code);
99799
99800 END IF;
99801
99802 -----------------------------------------------------------------------------------------
99803 -- 4262811 Multiperiod Accounting
99804 -----------------------------------------------------------------------------------------
99805 -- No MPA option is assigned.
99806
99807
99808 END IF;
99809 END IF;
99810 --
99811
99812 --
99813 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
99814 trace
99815 (p_msg => 'END of AcctLineType_181'
99816 ,p_level => C_LEVEL_PROCEDURE
99817 ,p_module => l_log_module);
99818 END IF;
99819 --
99820 EXCEPTION
99821 WHEN xla_exceptions_pkg.application_exception THEN
99822 RAISE;
99823 WHEN OTHERS THEN
99824 xla_exceptions_pkg.raise_message
99825 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_181');
99826 END AcctLineType_181;
99827 --
99828
99829 ---------------------------------------
99830 --
99831 -- PRIVATE FUNCTION
99832 -- AcctLineType_182
99833 --
99834 ---------------------------------------
99835 PROCEDURE AcctLineType_182 (
99836 p_application_id IN NUMBER
99837 ,p_event_id IN NUMBER
99838 ,p_calculate_acctd_flag IN VARCHAR2
99839 ,p_calculate_g_l_flag IN VARCHAR2
99840 ,p_actual_flag IN OUT VARCHAR2
99841 ,p_balance_type_code OUT VARCHAR2
99842 ,p_gain_or_loss_ref OUT VARCHAR2
99843
99844 --Cost Management Default Account
99845 , p_source_4 IN NUMBER
99846 --DISTRIBUTION_IDENTIFIER
99847 , p_source_11 IN NUMBER
99848 --Distribution Type
99849 , p_source_12 IN VARCHAR2
99850 , p_source_12_meaning IN VARCHAR2
99851 --Entered Currency Code
99852 , p_source_15 IN VARCHAR2
99853 --Entered Amount
99854 , p_source_18 IN NUMBER
99855 --Currency Conversion Date
99856 , p_source_19 IN DATE
99857 --Currency Conversion Rate
99858 , p_source_20 IN NUMBER
99859 --Currency Conversion Type
99860 , p_source_21 IN VARCHAR2
99861 --Accounted Amount
99862 , p_source_22 IN NUMBER
99863 --Accounting Line Type
99864 , p_source_24 IN NUMBER
99865 )
99866 IS
99867
99868 l_component_type VARCHAR2(80);
99869 l_component_code VARCHAR2(30);
99870 l_component_type_code VARCHAR2(1);
99871 l_component_appl_id INTEGER;
99872 l_amb_context_code VARCHAR2(30);
99873 l_entity_code VARCHAR2(30);
99874 l_event_class_code VARCHAR2(30);
99875 l_ae_header_id NUMBER;
99876 l_event_type_code VARCHAR2(30);
99877 l_line_definition_code VARCHAR2(30);
99878 l_line_definition_owner_code VARCHAR2(1);
99879 --
99880 -- adr variables
99881 l_segment VARCHAR2(30);
99882 l_ccid NUMBER;
99883 l_adr_transaction_coa_id NUMBER;
99884 l_adr_accounting_coa_id NUMBER;
99885 l_adr_flexfield_segment_code VARCHAR2(30);
99886 l_adr_flex_value_set_id NUMBER;
99887 l_adr_value_type_code VARCHAR2(30);
99888 l_adr_value_combination_id NUMBER;
99889 l_adr_value_segment_code VARCHAR2(30);
99890
99891 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
99892 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
99893 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
99894 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
99895
99896 -- 4262811 Variables ------------------------------------------------------------------------------------------
99897 l_entered_amt_idx NUMBER;
99898 l_accted_amt_idx NUMBER;
99899 l_acc_rev_flag VARCHAR2(1);
99900 l_accrual_line_num NUMBER;
99901 l_tmp_amt NUMBER;
99902 l_acc_rev_natural_side_code VARCHAR2(1);
99903
99904 l_num_entries NUMBER;
99905 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
99906 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
99907 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
99908 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
99909 l_recog_line_1 NUMBER;
99910 l_recog_line_2 NUMBER;
99911
99912 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
99913 l_bflow_applied_to_amt NUMBER; -- 5132302
99914 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
99915
99916 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
99917
99918 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
99919 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
99920
99921 ---------------------------------------------------------------------------------------------------------------
99922
99923
99924 --
99925 -- bulk performance
99926 --
99927 l_balance_type_code VARCHAR2(1);
99928 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
99929 l_log_module VARCHAR2(240);
99930
99931 --
99932 -- Upgrade strategy
99933 --
99934 l_actual_upg_option VARCHAR2(1);
99935 l_enc_upg_option VARCHAR2(1);
99936
99937 --
99938 BEGIN
99939 --
99940 IF g_log_enabled THEN
99941 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_182';
99942 END IF;
99943 --
99944 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
99945
99946 trace
99947 (p_msg => 'BEGIN of AcctLineType_182'
99948 ,p_level => C_LEVEL_PROCEDURE
99949 ,p_module => l_log_module);
99950
99951 END IF;
99952 --
99953 l_component_type := 'AMB_JLT';
99954 l_component_code := 'OFFSET';
99955 l_component_type_code := 'S';
99956 l_component_appl_id := 707;
99957 l_amb_context_code := 'DEFAULT';
99958 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
99959 l_event_class_code := 'USER_DEFINE';
99960 l_event_type_code := 'UFOB_SHIP_RECIPIENT_SHIP_NO_TP';
99961 l_line_definition_owner_code := 'S';
99962 l_line_definition_code := 'USER_FOB_SHIP_RECP_SHIP_NO_TP';
99963 --
99964 l_balance_type_code := 'A';
99965 l_segment := NULL;
99966 l_ccid := NULL;
99967 l_adr_transaction_coa_id := NULL;
99968 l_adr_accounting_coa_id := NULL;
99969 l_adr_flexfield_segment_code := NULL;
99970 l_adr_flex_value_set_id := NULL;
99971 l_adr_value_type_code := NULL;
99972 l_adr_value_combination_id := NULL;
99973 l_adr_value_segment_code := NULL;
99974
99975 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
99976 l_bflow_class_code := ''; -- 4219869 Business Flow
99977 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
99978 l_budgetary_control_flag := 'N';
99979
99980 l_bflow_applied_to_amt_idx := NULL; -- 5132302
99981 l_bflow_applied_to_amt := NULL; -- 5132302
99982 l_entered_amt_idx := NULL; -- 4262811
99983 l_accted_amt_idx := NULL; -- 4262811
99984 l_acc_rev_flag := NULL; -- 4262811
99985 l_accrual_line_num := NULL; -- 4262811
99986 l_tmp_amt := NULL; -- 4262811
99987 --
99988
99989 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
99990 l_balance_type_code <> 'B' THEN
99991 IF NVL(p_source_24,9E125) = 2
99992 THEN
99993
99994 --
99995 XLA_AE_LINES_PKG.SetNewLine;
99996
99997 p_balance_type_code := l_balance_type_code;
99998 -- set the flag so later we will know whether the gain loss line needs to be created
99999
100000 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
100001 p_actual_flag :='A';
100002 END IF;
100003
100004 --
100005 -- bulk performance
100006 --
100007 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
100008 p_header_num => 0); -- 4262811
100009 --
100010 -- set accounting line options
100011 --
100012 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
100013 p_natural_side_code => 'D'
100014 , p_gain_or_loss_flag => 'N'
100015 , p_gl_transfer_mode_code => 'S'
100016 , p_acct_entry_type_code => 'A'
100017 , p_switch_side_flag => 'Y'
100018 , p_merge_duplicate_code => 'N'
100019 );
100020 --
100021 l_acc_rev_natural_side_code := 'C'; -- 4262811
100022 --
100023 --
100024 -- set accounting line type info
100025 --
100026 xla_ae_lines_pkg.SetAcctLineType
100027 (p_component_type => l_component_type
100028 ,p_event_type_code => l_event_type_code
100029 ,p_line_definition_owner_code => l_line_definition_owner_code
100030 ,p_line_definition_code => l_line_definition_code
100031 ,p_accounting_line_code => l_component_code
100032 ,p_accounting_line_type_code => l_component_type_code
100033 ,p_accounting_line_appl_id => l_component_appl_id
100034 ,p_amb_context_code => l_amb_context_code
100035 ,p_entity_code => l_entity_code
100036 ,p_event_class_code => l_event_class_code);
100037 --
100038 -- set accounting class
100039 --
100040 xla_ae_lines_pkg.SetAcctClass(
100041 p_accounting_class_code => 'OFFSET'
100042 , p_ae_header_id => l_ae_header_id
100043 );
100044
100045 --
100046 -- set rounding class
100047 --
100048 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
100049 'OFFSET';
100050
100051 --
100052 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
100053 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
100054 --
100055 -- bulk performance
100056 --
100057 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
100058
100059 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
100060 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
100061
100062 -- 4955764
100063 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
100064 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
100065
100066 -- 4458381 Public Sector Enh
100067
100068 --
100069 -- set accounting attributes for the line type
100070 --
100071 l_entered_amt_idx := 3;
100072 l_accted_amt_idx := 8;
100073 l_bflow_applied_to_amt_idx := NULL; -- 5132302
100074 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
100075 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
100076 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
100077 l_rec_acct_attrs.array_char_value(2) := p_source_12;
100078 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
100079 l_rec_acct_attrs.array_num_value(3) := p_source_18;
100080 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
100081 l_rec_acct_attrs.array_char_value(4) := p_source_15;
100082 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
100083 l_rec_acct_attrs.array_date_value(5) := p_source_19;
100084 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
100085 l_rec_acct_attrs.array_num_value(6) := p_source_20;
100086 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
100087 l_rec_acct_attrs.array_char_value(7) := p_source_21;
100088 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
100089 l_rec_acct_attrs.array_num_value(8) := p_source_22;
100090
100091 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
100092 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
100093
100094 ---------------------------------------------------------------------------------------------------------------
100095 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
100096 ---------------------------------------------------------------------------------------------------------------
100097 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
100098
100099 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
100100 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
100101
100102 IF xla_accounting_cache_pkg.GetValueChar
100103 (p_source_code => 'LEDGER_CATEGORY_CODE'
100104 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
100105 AND l_bflow_method_code = 'PRIOR_ENTRY'
100106 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
100107 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
100108 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
100109 )
100110 THEN
100111 xla_ae_lines_pkg.BflowUpgEntry
100112 (p_business_method_code => l_bflow_method_code
100113 ,p_business_class_code => l_bflow_class_code
100114 ,p_balance_type => l_balance_type_code);
100115 ELSE
100116 NULL;
100117 -- No business flow processing for business flow method of NONE.
100118 END IF;
100119
100120 --
100121 -- call analytical criteria
100122 --
100123
100124 --
100125 -- call description
100126 --
100127 -- No description or it is inherited.
100128 --
100129 -- call ADRs
100130 -- Bug 4922099
100131 --
100132 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
100133 (NVL(l_actual_upg_option, 'N') = 'O') OR
100134 (NVL(l_enc_upg_option, 'N') = 'O')
100135 )
100136 THEN
100137 NULL;
100138 --
100139 --
100140
100141 l_ccid := AcctDerRule_4(
100142 p_application_id => p_application_id
100143 , p_ae_header_id => l_ae_header_id
100144 , p_source_4 => p_source_4
100145 , x_transaction_coa_id => l_adr_transaction_coa_id
100146 , x_accounting_coa_id => l_adr_accounting_coa_id
100147 , x_value_type_code => l_adr_value_type_code
100148 , p_side => 'NA'
100149 );
100150
100151 xla_ae_lines_pkg.set_ccid(
100152 p_code_combination_id => l_ccid
100153 , p_value_type_code => l_adr_value_type_code
100154 , p_transaction_coa_id => l_adr_transaction_coa_id
100155 , p_accounting_coa_id => l_adr_accounting_coa_id
100156 , p_adr_code => 'CST_DEFAULT'
100157 , p_adr_type_code => 'S'
100158 , p_component_type => l_component_type
100159 , p_component_code => l_component_code
100160 , p_component_type_code => l_component_type_code
100161 , p_component_appl_id => l_component_appl_id
100162 , p_amb_context_code => l_amb_context_code
100163 , p_side => 'NA'
100164 );
100165
100166
100167 --
100168 --
100169 END IF;
100170 --
100171 -- Bug 4922099
100172 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
100173 (NVL(l_enc_upg_option, 'N') = 'O')
100174 ) AND
100175 (l_bflow_method_code = 'PRIOR_ENTRY')
100176 )
100177 THEN
100178 IF
100179 --
100180 1 = 2
100181 --
100182 THEN
100183 xla_accounting_err_pkg.build_message
100184 (p_appli_s_name => 'XLA'
100185 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
100186 ,p_token_1 => 'LINE_NUMBER'
100187 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
100188 ,p_token_2 => 'LINE_TYPE_NAME'
100189 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
100190 l_component_type
100191 ,l_component_code
100192 ,l_component_type_code
100193 ,l_component_appl_id
100194 ,l_amb_context_code
100195 ,l_entity_code
100196 ,l_event_class_code
100197 )
100198 ,p_token_3 => 'OWNER'
100199 ,p_value_3 => xla_lookups_pkg.get_meaning(
100200 p_lookup_type => 'XLA_OWNER_TYPE'
100201 ,p_lookup_code => l_component_type_code
100202 )
100203 ,p_token_4 => 'PRODUCT_NAME'
100204 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
100205 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
100206 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
100207 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
100208 ,p_ae_header_id => NULL
100209 );
100210
100211 IF (C_LEVEL_ERROR>= g_log_level) THEN
100212 trace
100213 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
100214 ,p_level => C_LEVEL_ERROR
100215 ,p_module => l_log_module);
100216 END IF;
100217 END IF;
100218 END IF;
100219 --
100220 --
100221 ------------------------------------------------------------------------------------------------
100222 -- 4219869 Business Flow
100223 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
100224 -- Prior Entry. Currently, the following code is always generated.
100225 ------------------------------------------------------------------------------------------------
100226 XLA_AE_LINES_PKG.ValidateCurrentLine;
100227
100228 ------------------------------------------------------------------------------------
100229 -- 4219869 Business Flow
100230 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
100231 ------------------------------------------------------------------------------------
100232 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
100233
100234 ----------------------------------------------------------------------------------
100235 -- 4219869 Business Flow
100236 -- Update journal entry status -- Need to generate this within IF <condition>
100237 ----------------------------------------------------------------------------------
100238 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
100239 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
100240 ,p_balance_type_code => l_balance_type_code
100241 );
100242
100243 -------------------------------------------------------------------------------------------
100244 -- 4262811 - Generate the Accrual Reversal lines
100245 -------------------------------------------------------------------------------------------
100246 BEGIN
100247 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
100248 (g_array_event(p_event_id).array_value_num('header_index'));
100249 IF l_acc_rev_flag IS NULL THEN
100250 l_acc_rev_flag := 'N';
100251 END IF;
100252 EXCEPTION
100253 WHEN OTHERS THEN
100254 l_acc_rev_flag := 'N';
100255 END;
100256 --
100257 IF (l_acc_rev_flag = 'Y') THEN
100258
100259 -- 4645092 ------------------------------------------------------------------------------
100260 -- To allow MPA report to determine if it should generate report process
100261 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
100262 ------------------------------------------------------------------------------------------
100263
100264 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
100265 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
100266 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
100267 -- call ADRs
100268 -- Bug 4922099
100269 --
100270 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
100271 (NVL(l_actual_upg_option, 'N') = 'O') OR
100272 (NVL(l_enc_upg_option, 'N') = 'O')
100273 )
100274 THEN
100275 NULL;
100276 --
100277 --
100278
100279 l_ccid := AcctDerRule_4(
100280 p_application_id => p_application_id
100281 , p_ae_header_id => l_ae_header_id
100282 , p_source_4 => p_source_4
100283 , x_transaction_coa_id => l_adr_transaction_coa_id
100284 , x_accounting_coa_id => l_adr_accounting_coa_id
100285 , x_value_type_code => l_adr_value_type_code
100286 , p_side => 'NA'
100287 );
100288
100289 xla_ae_lines_pkg.set_ccid(
100290 p_code_combination_id => l_ccid
100291 , p_value_type_code => l_adr_value_type_code
100292 , p_transaction_coa_id => l_adr_transaction_coa_id
100293 , p_accounting_coa_id => l_adr_accounting_coa_id
100294 , p_adr_code => 'CST_DEFAULT'
100295 , p_adr_type_code => 'S'
100296 , p_component_type => l_component_type
100297 , p_component_code => l_component_code
100298 , p_component_type_code => l_component_type_code
100299 , p_component_appl_id => l_component_appl_id
100300 , p_amb_context_code => l_amb_context_code
100301 , p_side => 'NA'
100302 );
100303
100304
100305 --
100306 --
100307 END IF;
100308
100309 --
100310 -- Update the line information that should be overwritten
100311 --
100312 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
100313 p_header_num => 1);
100314 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
100315
100316 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
100317
100318 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
100319 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
100320 END IF;
100321
100322 --
100323 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
100324 --
100325 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
100326 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
100327 ELSE
100328 ---------------------------------------------------------------------------------------------------
100329 -- 4262811a Switch Sign
100330 ---------------------------------------------------------------------------------------------------
100331 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
100332 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
100333 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
100334 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
100335 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
100336 -- 5132302
100337 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
100338 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
100339
100340 END IF;
100341
100342 -- 4955764
100343 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
100344 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
100345
100346
100347 XLA_AE_LINES_PKG.ValidateCurrentLine;
100348 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
100349
100350 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
100351 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
100352 ,p_balance_type_code => l_balance_type_code);
100353
100354 END IF;
100355
100356 -----------------------------------------------------------------------------------------
100357 -- 4262811 Multiperiod Accounting
100358 -----------------------------------------------------------------------------------------
100359 -- No MPA option is assigned.
100360
100361
100362 END IF;
100363 END IF;
100364 --
100365
100366 --
100367 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
100368 trace
100369 (p_msg => 'END of AcctLineType_182'
100370 ,p_level => C_LEVEL_PROCEDURE
100371 ,p_module => l_log_module);
100372 END IF;
100373 --
100374 EXCEPTION
100375 WHEN xla_exceptions_pkg.application_exception THEN
100376 RAISE;
100377 WHEN OTHERS THEN
100378 xla_exceptions_pkg.raise_message
100379 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_182');
100380 END AcctLineType_182;
100381 --
100382
100383 ---------------------------------------
100384 --
100385 -- PRIVATE FUNCTION
100386 -- AcctLineType_183
100387 --
100388 ---------------------------------------
100389 PROCEDURE AcctLineType_183 (
100390 p_application_id IN NUMBER
100391 ,p_event_id IN NUMBER
100392 ,p_calculate_acctd_flag IN VARCHAR2
100393 ,p_calculate_g_l_flag IN VARCHAR2
100394 ,p_actual_flag IN OUT VARCHAR2
100395 ,p_balance_type_code OUT VARCHAR2
100396 ,p_gain_or_loss_ref OUT VARCHAR2
100397
100398 --Cost Management Default Account
100399 , p_source_4 IN NUMBER
100400 --DISTRIBUTION_IDENTIFIER
100401 , p_source_11 IN NUMBER
100402 --Distribution Type
100403 , p_source_12 IN VARCHAR2
100404 , p_source_12_meaning IN VARCHAR2
100405 --Entered Currency Code
100406 , p_source_15 IN VARCHAR2
100407 --Entered Amount
100408 , p_source_18 IN NUMBER
100409 --Currency Conversion Date
100410 , p_source_19 IN DATE
100411 --Currency Conversion Rate
100412 , p_source_20 IN NUMBER
100413 --Currency Conversion Type
100414 , p_source_21 IN VARCHAR2
100415 --Accounted Amount
100416 , p_source_22 IN NUMBER
100417 --Accounting Line Type
100418 , p_source_24 IN NUMBER
100419 )
100420 IS
100421
100422 l_component_type VARCHAR2(80);
100423 l_component_code VARCHAR2(30);
100424 l_component_type_code VARCHAR2(1);
100425 l_component_appl_id INTEGER;
100426 l_amb_context_code VARCHAR2(30);
100427 l_entity_code VARCHAR2(30);
100428 l_event_class_code VARCHAR2(30);
100429 l_ae_header_id NUMBER;
100430 l_event_type_code VARCHAR2(30);
100431 l_line_definition_code VARCHAR2(30);
100432 l_line_definition_owner_code VARCHAR2(1);
100433 --
100434 -- adr variables
100435 l_segment VARCHAR2(30);
100436 l_ccid NUMBER;
100437 l_adr_transaction_coa_id NUMBER;
100438 l_adr_accounting_coa_id NUMBER;
100439 l_adr_flexfield_segment_code VARCHAR2(30);
100440 l_adr_flex_value_set_id NUMBER;
100441 l_adr_value_type_code VARCHAR2(30);
100442 l_adr_value_combination_id NUMBER;
100443 l_adr_value_segment_code VARCHAR2(30);
100444
100445 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
100446 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
100447 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
100448 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
100449
100450 -- 4262811 Variables ------------------------------------------------------------------------------------------
100451 l_entered_amt_idx NUMBER;
100452 l_accted_amt_idx NUMBER;
100453 l_acc_rev_flag VARCHAR2(1);
100454 l_accrual_line_num NUMBER;
100455 l_tmp_amt NUMBER;
100456 l_acc_rev_natural_side_code VARCHAR2(1);
100457
100458 l_num_entries NUMBER;
100459 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
100460 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
100461 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
100462 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
100463 l_recog_line_1 NUMBER;
100464 l_recog_line_2 NUMBER;
100465
100466 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
100467 l_bflow_applied_to_amt NUMBER; -- 5132302
100468 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
100469
100470 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
100471
100472 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
100473 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
100474
100475 ---------------------------------------------------------------------------------------------------------------
100476
100477
100478 --
100479 -- bulk performance
100480 --
100481 l_balance_type_code VARCHAR2(1);
100482 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
100483 l_log_module VARCHAR2(240);
100484
100485 --
100486 -- Upgrade strategy
100487 --
100488 l_actual_upg_option VARCHAR2(1);
100489 l_enc_upg_option VARCHAR2(1);
100490
100491 --
100492 BEGIN
100493 --
100494 IF g_log_enabled THEN
100495 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_183';
100496 END IF;
100497 --
100498 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
100499
100500 trace
100501 (p_msg => 'BEGIN of AcctLineType_183'
100502 ,p_level => C_LEVEL_PROCEDURE
100503 ,p_module => l_log_module);
100504
100505 END IF;
100506 --
100507 l_component_type := 'AMB_JLT';
100508 l_component_code := 'OFFSET';
100509 l_component_type_code := 'S';
100510 l_component_appl_id := 707;
100511 l_amb_context_code := 'DEFAULT';
100512 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
100513 l_event_class_code := 'USER_DEFINE';
100514 l_event_type_code := 'UFOB_SHIP_SENDER_SHIP_NO_TP';
100515 l_line_definition_owner_code := 'S';
100516 l_line_definition_code := 'USER_FOB_SHIP_SENDER_SHIP_NOTP';
100517 --
100518 l_balance_type_code := 'A';
100519 l_segment := NULL;
100520 l_ccid := NULL;
100521 l_adr_transaction_coa_id := NULL;
100522 l_adr_accounting_coa_id := NULL;
100523 l_adr_flexfield_segment_code := NULL;
100524 l_adr_flex_value_set_id := NULL;
100525 l_adr_value_type_code := NULL;
100526 l_adr_value_combination_id := NULL;
100527 l_adr_value_segment_code := NULL;
100528
100529 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
100530 l_bflow_class_code := ''; -- 4219869 Business Flow
100531 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
100532 l_budgetary_control_flag := 'N';
100533
100534 l_bflow_applied_to_amt_idx := NULL; -- 5132302
100535 l_bflow_applied_to_amt := NULL; -- 5132302
100536 l_entered_amt_idx := NULL; -- 4262811
100537 l_accted_amt_idx := NULL; -- 4262811
100538 l_acc_rev_flag := NULL; -- 4262811
100539 l_accrual_line_num := NULL; -- 4262811
100540 l_tmp_amt := NULL; -- 4262811
100541 --
100542
100543 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
100544 l_balance_type_code <> 'B' THEN
100545 IF NVL(p_source_24,9E125) = 2
100546 THEN
100547
100548 --
100549 XLA_AE_LINES_PKG.SetNewLine;
100550
100551 p_balance_type_code := l_balance_type_code;
100552 -- set the flag so later we will know whether the gain loss line needs to be created
100553
100554 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
100555 p_actual_flag :='A';
100556 END IF;
100557
100558 --
100559 -- bulk performance
100560 --
100561 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
100562 p_header_num => 0); -- 4262811
100563 --
100564 -- set accounting line options
100565 --
100566 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
100567 p_natural_side_code => 'D'
100568 , p_gain_or_loss_flag => 'N'
100569 , p_gl_transfer_mode_code => 'S'
100570 , p_acct_entry_type_code => 'A'
100571 , p_switch_side_flag => 'Y'
100572 , p_merge_duplicate_code => 'N'
100573 );
100574 --
100575 l_acc_rev_natural_side_code := 'C'; -- 4262811
100576 --
100577 --
100578 -- set accounting line type info
100579 --
100580 xla_ae_lines_pkg.SetAcctLineType
100581 (p_component_type => l_component_type
100582 ,p_event_type_code => l_event_type_code
100583 ,p_line_definition_owner_code => l_line_definition_owner_code
100584 ,p_line_definition_code => l_line_definition_code
100585 ,p_accounting_line_code => l_component_code
100586 ,p_accounting_line_type_code => l_component_type_code
100587 ,p_accounting_line_appl_id => l_component_appl_id
100588 ,p_amb_context_code => l_amb_context_code
100589 ,p_entity_code => l_entity_code
100590 ,p_event_class_code => l_event_class_code);
100591 --
100592 -- set accounting class
100593 --
100594 xla_ae_lines_pkg.SetAcctClass(
100595 p_accounting_class_code => 'OFFSET'
100596 , p_ae_header_id => l_ae_header_id
100597 );
100598
100599 --
100600 -- set rounding class
100601 --
100602 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
100603 'OFFSET';
100604
100605 --
100606 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
100607 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
100608 --
100609 -- bulk performance
100610 --
100611 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
100612
100613 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
100614 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
100615
100616 -- 4955764
100617 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
100618 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
100619
100620 -- 4458381 Public Sector Enh
100621
100622 --
100623 -- set accounting attributes for the line type
100624 --
100625 l_entered_amt_idx := 3;
100626 l_accted_amt_idx := 8;
100627 l_bflow_applied_to_amt_idx := NULL; -- 5132302
100628 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
100629 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
100630 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
100631 l_rec_acct_attrs.array_char_value(2) := p_source_12;
100632 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
100633 l_rec_acct_attrs.array_num_value(3) := p_source_18;
100634 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
100635 l_rec_acct_attrs.array_char_value(4) := p_source_15;
100636 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
100637 l_rec_acct_attrs.array_date_value(5) := p_source_19;
100638 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
100639 l_rec_acct_attrs.array_num_value(6) := p_source_20;
100640 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
100641 l_rec_acct_attrs.array_char_value(7) := p_source_21;
100642 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
100643 l_rec_acct_attrs.array_num_value(8) := p_source_22;
100644
100645 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
100646 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
100647
100648 ---------------------------------------------------------------------------------------------------------------
100649 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
100650 ---------------------------------------------------------------------------------------------------------------
100651 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
100652
100653 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
100654 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
100655
100656 IF xla_accounting_cache_pkg.GetValueChar
100657 (p_source_code => 'LEDGER_CATEGORY_CODE'
100658 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
100659 AND l_bflow_method_code = 'PRIOR_ENTRY'
100660 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
100661 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
100662 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
100663 )
100664 THEN
100665 xla_ae_lines_pkg.BflowUpgEntry
100666 (p_business_method_code => l_bflow_method_code
100667 ,p_business_class_code => l_bflow_class_code
100668 ,p_balance_type => l_balance_type_code);
100669 ELSE
100670 NULL;
100671 -- No business flow processing for business flow method of NONE.
100672 END IF;
100673
100674 --
100675 -- call analytical criteria
100676 --
100677
100678 --
100679 -- call description
100680 --
100681 -- No description or it is inherited.
100682 --
100683 -- call ADRs
100684 -- Bug 4922099
100685 --
100686 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
100687 (NVL(l_actual_upg_option, 'N') = 'O') OR
100688 (NVL(l_enc_upg_option, 'N') = 'O')
100689 )
100690 THEN
100691 NULL;
100692 --
100693 --
100694
100695 l_ccid := AcctDerRule_4(
100696 p_application_id => p_application_id
100697 , p_ae_header_id => l_ae_header_id
100698 , p_source_4 => p_source_4
100699 , x_transaction_coa_id => l_adr_transaction_coa_id
100700 , x_accounting_coa_id => l_adr_accounting_coa_id
100701 , x_value_type_code => l_adr_value_type_code
100702 , p_side => 'NA'
100703 );
100704
100705 xla_ae_lines_pkg.set_ccid(
100706 p_code_combination_id => l_ccid
100707 , p_value_type_code => l_adr_value_type_code
100708 , p_transaction_coa_id => l_adr_transaction_coa_id
100709 , p_accounting_coa_id => l_adr_accounting_coa_id
100710 , p_adr_code => 'CST_DEFAULT'
100711 , p_adr_type_code => 'S'
100712 , p_component_type => l_component_type
100713 , p_component_code => l_component_code
100714 , p_component_type_code => l_component_type_code
100715 , p_component_appl_id => l_component_appl_id
100716 , p_amb_context_code => l_amb_context_code
100717 , p_side => 'NA'
100718 );
100719
100720
100721 --
100722 --
100723 END IF;
100724 --
100725 -- Bug 4922099
100726 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
100727 (NVL(l_enc_upg_option, 'N') = 'O')
100728 ) AND
100729 (l_bflow_method_code = 'PRIOR_ENTRY')
100730 )
100731 THEN
100732 IF
100733 --
100734 1 = 2
100735 --
100736 THEN
100737 xla_accounting_err_pkg.build_message
100738 (p_appli_s_name => 'XLA'
100739 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
100740 ,p_token_1 => 'LINE_NUMBER'
100741 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
100742 ,p_token_2 => 'LINE_TYPE_NAME'
100743 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
100744 l_component_type
100745 ,l_component_code
100746 ,l_component_type_code
100747 ,l_component_appl_id
100748 ,l_amb_context_code
100749 ,l_entity_code
100750 ,l_event_class_code
100751 )
100752 ,p_token_3 => 'OWNER'
100753 ,p_value_3 => xla_lookups_pkg.get_meaning(
100754 p_lookup_type => 'XLA_OWNER_TYPE'
100755 ,p_lookup_code => l_component_type_code
100756 )
100757 ,p_token_4 => 'PRODUCT_NAME'
100758 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
100759 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
100760 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
100761 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
100762 ,p_ae_header_id => NULL
100763 );
100764
100765 IF (C_LEVEL_ERROR>= g_log_level) THEN
100766 trace
100767 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
100768 ,p_level => C_LEVEL_ERROR
100769 ,p_module => l_log_module);
100770 END IF;
100771 END IF;
100772 END IF;
100773 --
100774 --
100775 ------------------------------------------------------------------------------------------------
100776 -- 4219869 Business Flow
100777 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
100778 -- Prior Entry. Currently, the following code is always generated.
100779 ------------------------------------------------------------------------------------------------
100780 XLA_AE_LINES_PKG.ValidateCurrentLine;
100781
100782 ------------------------------------------------------------------------------------
100783 -- 4219869 Business Flow
100784 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
100785 ------------------------------------------------------------------------------------
100786 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
100787
100788 ----------------------------------------------------------------------------------
100789 -- 4219869 Business Flow
100790 -- Update journal entry status -- Need to generate this within IF <condition>
100791 ----------------------------------------------------------------------------------
100792 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
100793 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
100794 ,p_balance_type_code => l_balance_type_code
100795 );
100796
100797 -------------------------------------------------------------------------------------------
100798 -- 4262811 - Generate the Accrual Reversal lines
100799 -------------------------------------------------------------------------------------------
100800 BEGIN
100801 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
100802 (g_array_event(p_event_id).array_value_num('header_index'));
100803 IF l_acc_rev_flag IS NULL THEN
100804 l_acc_rev_flag := 'N';
100805 END IF;
100806 EXCEPTION
100807 WHEN OTHERS THEN
100808 l_acc_rev_flag := 'N';
100809 END;
100810 --
100811 IF (l_acc_rev_flag = 'Y') THEN
100812
100813 -- 4645092 ------------------------------------------------------------------------------
100814 -- To allow MPA report to determine if it should generate report process
100815 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
100816 ------------------------------------------------------------------------------------------
100817
100818 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
100819 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
100820 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
100821 -- call ADRs
100822 -- Bug 4922099
100823 --
100824 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
100825 (NVL(l_actual_upg_option, 'N') = 'O') OR
100826 (NVL(l_enc_upg_option, 'N') = 'O')
100827 )
100828 THEN
100829 NULL;
100830 --
100831 --
100832
100833 l_ccid := AcctDerRule_4(
100834 p_application_id => p_application_id
100835 , p_ae_header_id => l_ae_header_id
100836 , p_source_4 => p_source_4
100837 , x_transaction_coa_id => l_adr_transaction_coa_id
100838 , x_accounting_coa_id => l_adr_accounting_coa_id
100839 , x_value_type_code => l_adr_value_type_code
100840 , p_side => 'NA'
100841 );
100842
100843 xla_ae_lines_pkg.set_ccid(
100844 p_code_combination_id => l_ccid
100845 , p_value_type_code => l_adr_value_type_code
100846 , p_transaction_coa_id => l_adr_transaction_coa_id
100847 , p_accounting_coa_id => l_adr_accounting_coa_id
100848 , p_adr_code => 'CST_DEFAULT'
100849 , p_adr_type_code => 'S'
100850 , p_component_type => l_component_type
100851 , p_component_code => l_component_code
100852 , p_component_type_code => l_component_type_code
100853 , p_component_appl_id => l_component_appl_id
100854 , p_amb_context_code => l_amb_context_code
100855 , p_side => 'NA'
100856 );
100857
100858
100859 --
100860 --
100861 END IF;
100862
100863 --
100864 -- Update the line information that should be overwritten
100865 --
100866 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
100867 p_header_num => 1);
100868 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
100869
100870 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
100871
100872 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
100873 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
100874 END IF;
100875
100876 --
100877 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
100878 --
100879 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
100880 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
100881 ELSE
100882 ---------------------------------------------------------------------------------------------------
100883 -- 4262811a Switch Sign
100884 ---------------------------------------------------------------------------------------------------
100885 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
100886 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
100887 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
100888 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
100889 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
100890 -- 5132302
100891 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
100892 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
100893
100894 END IF;
100895
100896 -- 4955764
100897 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
100898 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
100899
100900
100901 XLA_AE_LINES_PKG.ValidateCurrentLine;
100902 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
100903
100904 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
100905 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
100906 ,p_balance_type_code => l_balance_type_code);
100907
100908 END IF;
100909
100910 -----------------------------------------------------------------------------------------
100911 -- 4262811 Multiperiod Accounting
100912 -----------------------------------------------------------------------------------------
100913 -- No MPA option is assigned.
100914
100915
100916 END IF;
100917 END IF;
100918 --
100919
100920 --
100921 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
100922 trace
100923 (p_msg => 'END of AcctLineType_183'
100924 ,p_level => C_LEVEL_PROCEDURE
100925 ,p_module => l_log_module);
100926 END IF;
100927 --
100928 EXCEPTION
100929 WHEN xla_exceptions_pkg.application_exception THEN
100930 RAISE;
100931 WHEN OTHERS THEN
100932 xla_exceptions_pkg.raise_message
100933 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_183');
100934 END AcctLineType_183;
100935 --
100936
100937 ---------------------------------------
100938 --
100939 -- PRIVATE FUNCTION
100940 -- AcctLineType_184
100941 --
100942 ---------------------------------------
100943 PROCEDURE AcctLineType_184 (
100944 p_application_id IN NUMBER
100945 ,p_event_id IN NUMBER
100946 ,p_calculate_acctd_flag IN VARCHAR2
100947 ,p_calculate_g_l_flag IN VARCHAR2
100948 ,p_actual_flag IN OUT VARCHAR2
100949 ,p_balance_type_code OUT VARCHAR2
100950 ,p_gain_or_loss_ref OUT VARCHAR2
100951
100952 --Cost Management Default Account
100953 , p_source_4 IN NUMBER
100954 --Applied to Application ID
100955 , p_source_6 IN NUMBER
100956 --Applied to Distribution Link Type
100957 , p_source_7 IN VARCHAR2
100958 --Applied to Entity Code
100959 , p_source_8 IN VARCHAR2
100960 --DISTRIBUTION_IDENTIFIER
100961 , p_source_11 IN NUMBER
100962 --Distribution Type
100963 , p_source_12 IN VARCHAR2
100964 , p_source_12_meaning IN VARCHAR2
100965 --Encumbrance Reversal Amount Entered
100966 , p_source_14 IN NUMBER
100967 --Entered Currency Code
100968 , p_source_15 IN VARCHAR2
100969 --Transaction Encumbrance Reversal Amount
100970 , p_source_16 IN NUMBER
100971 --Entered Amount
100972 , p_source_18 IN NUMBER
100973 --Currency Conversion Date
100974 , p_source_19 IN DATE
100975 --Currency Conversion Rate
100976 , p_source_20 IN NUMBER
100977 --Currency Conversion Type
100978 , p_source_21 IN VARCHAR2
100979 --Accounted Amount
100980 , p_source_22 IN NUMBER
100981 --Accounting Line Type
100982 , p_source_24 IN NUMBER
100983 --Costing Encumbrance Upgrade Option
100984 , p_source_27 IN VARCHAR2
100985 --TXN_PO_DISTRIBUTION_ID
100986 , p_source_28 IN NUMBER
100987 --TXN_PO_HEADER_ID
100988 , p_source_29 IN NUMBER
100989 --Requisition Budget Account
100990 , p_source_30 IN NUMBER
100991 --Requisition Encumbrance Type Identifier
100992 , p_source_31 IN NUMBER
100993 )
100994 IS
100995
100996 l_component_type VARCHAR2(80);
100997 l_component_code VARCHAR2(30);
100998 l_component_type_code VARCHAR2(1);
100999 l_component_appl_id INTEGER;
101000 l_amb_context_code VARCHAR2(30);
101001 l_entity_code VARCHAR2(30);
101002 l_event_class_code VARCHAR2(30);
101003 l_ae_header_id NUMBER;
101004 l_event_type_code VARCHAR2(30);
101005 l_line_definition_code VARCHAR2(30);
101006 l_line_definition_owner_code VARCHAR2(1);
101007 --
101008 -- adr variables
101009 l_segment VARCHAR2(30);
101010 l_ccid NUMBER;
101011 l_adr_transaction_coa_id NUMBER;
101012 l_adr_accounting_coa_id NUMBER;
101013 l_adr_flexfield_segment_code VARCHAR2(30);
101014 l_adr_flex_value_set_id NUMBER;
101015 l_adr_value_type_code VARCHAR2(30);
101016 l_adr_value_combination_id NUMBER;
101017 l_adr_value_segment_code VARCHAR2(30);
101018
101019 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
101020 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
101021 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
101022 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
101023
101024 -- 4262811 Variables ------------------------------------------------------------------------------------------
101025 l_entered_amt_idx NUMBER;
101026 l_accted_amt_idx NUMBER;
101027 l_acc_rev_flag VARCHAR2(1);
101028 l_accrual_line_num NUMBER;
101029 l_tmp_amt NUMBER;
101030 l_acc_rev_natural_side_code VARCHAR2(1);
101031
101032 l_num_entries NUMBER;
101033 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
101034 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
101035 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
101036 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
101037 l_recog_line_1 NUMBER;
101038 l_recog_line_2 NUMBER;
101039
101040 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
101041 l_bflow_applied_to_amt NUMBER; -- 5132302
101042 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
101043
101044 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
101045
101046 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
101047 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
101048
101049 ---------------------------------------------------------------------------------------------------------------
101050
101051
101052 --
101053 -- bulk performance
101054 --
101055 l_balance_type_code VARCHAR2(1);
101056 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
101057 l_log_module VARCHAR2(240);
101058
101059 --
101060 -- Upgrade strategy
101061 --
101062 l_actual_upg_option VARCHAR2(1);
101063 l_enc_upg_option VARCHAR2(1);
101064
101065 --
101066 BEGIN
101067 --
101068 IF g_log_enabled THEN
101069 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_184';
101070 END IF;
101071 --
101072 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
101073
101074 trace
101075 (p_msg => 'BEGIN of AcctLineType_184'
101076 ,p_level => C_LEVEL_PROCEDURE
101077 ,p_module => l_log_module);
101078
101079 END IF;
101080 --
101081 l_component_type := 'AMB_JLT';
101082 l_component_code := 'OFFSET';
101083 l_component_type_code := 'S';
101084 l_component_appl_id := 707;
101085 l_amb_context_code := 'DEFAULT';
101086 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
101087 l_event_class_code := 'FOB_RCPT_RECIPIENT_RCPT';
101088 l_event_type_code := 'FOB_RCPT_RECIPIENT_RCPT_ALL';
101089 l_line_definition_owner_code := 'S';
101090 l_line_definition_code := 'FOB_RCPT_RECIPIENT_RCPT';
101091 --
101092 l_balance_type_code := 'A';
101093 l_segment := NULL;
101094 l_ccid := NULL;
101095 l_adr_transaction_coa_id := NULL;
101096 l_adr_accounting_coa_id := NULL;
101097 l_adr_flexfield_segment_code := NULL;
101098 l_adr_flex_value_set_id := NULL;
101099 l_adr_value_type_code := NULL;
101100 l_adr_value_combination_id := NULL;
101101 l_adr_value_segment_code := NULL;
101102
101103 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
101104 l_bflow_class_code := ''; -- 4219869 Business Flow
101105 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
101106 l_budgetary_control_flag := 'N';
101107
101108 l_bflow_applied_to_amt_idx := NULL; -- 5132302
101109 l_bflow_applied_to_amt := NULL; -- 5132302
101110 l_entered_amt_idx := NULL; -- 4262811
101111 l_accted_amt_idx := NULL; -- 4262811
101112 l_acc_rev_flag := NULL; -- 4262811
101113 l_accrual_line_num := NULL; -- 4262811
101114 l_tmp_amt := NULL; -- 4262811
101115 --
101116
101117 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
101118 l_balance_type_code <> 'B' THEN
101119 IF NVL(p_source_24,9E125) = 2 AND
101120 p_source_22 >= 0
101121 THEN
101122
101123 --
101124 XLA_AE_LINES_PKG.SetNewLine;
101125
101126 p_balance_type_code := l_balance_type_code;
101127 -- set the flag so later we will know whether the gain loss line needs to be created
101128
101129 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
101130 p_actual_flag :='A';
101131 END IF;
101132
101133 --
101134 -- bulk performance
101135 --
101136 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
101137 p_header_num => 0); -- 4262811
101138 --
101139 -- set accounting line options
101140 --
101141 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
101142 p_natural_side_code => 'D'
101143 , p_gain_or_loss_flag => 'N'
101144 , p_gl_transfer_mode_code => 'S'
101145 , p_acct_entry_type_code => 'A'
101146 , p_switch_side_flag => 'Y'
101147 , p_merge_duplicate_code => 'N'
101148 );
101149 --
101150 l_acc_rev_natural_side_code := 'C'; -- 4262811
101151 --
101152 --
101153 -- set accounting line type info
101154 --
101155 xla_ae_lines_pkg.SetAcctLineType
101156 (p_component_type => l_component_type
101157 ,p_event_type_code => l_event_type_code
101158 ,p_line_definition_owner_code => l_line_definition_owner_code
101159 ,p_line_definition_code => l_line_definition_code
101160 ,p_accounting_line_code => l_component_code
101161 ,p_accounting_line_type_code => l_component_type_code
101162 ,p_accounting_line_appl_id => l_component_appl_id
101163 ,p_amb_context_code => l_amb_context_code
101164 ,p_entity_code => l_entity_code
101165 ,p_event_class_code => l_event_class_code);
101166 --
101167 -- set accounting class
101168 --
101169 xla_ae_lines_pkg.SetAcctClass(
101170 p_accounting_class_code => 'OFFSET'
101171 , p_ae_header_id => l_ae_header_id
101172 );
101173
101174 --
101175 -- set rounding class
101176 --
101177 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
101178 'OFFSET';
101179
101180 --
101181 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
101182 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
101183 --
101184 -- bulk performance
101185 --
101186 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
101187
101188 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
101189 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
101190
101191 -- 4955764
101192 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
101193 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
101194
101195 -- 4458381 Public Sector Enh
101196
101197 --
101198 -- set accounting attributes for the line type
101199 --
101200 l_entered_amt_idx := 17;
101201 l_accted_amt_idx := 22;
101202 l_bflow_applied_to_amt_idx := NULL; -- 5132302
101203 l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
101204 l_rec_acct_attrs.array_num_value(1) := p_source_6;
101205 l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
101206 l_rec_acct_attrs.array_char_value(2) := p_source_7;
101207 l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
101208 l_rec_acct_attrs.array_char_value(3) := p_source_8;
101209 l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
101210 l_rec_acct_attrs.array_num_value(4) := to_char(p_source_28);
101211 l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
101212 l_rec_acct_attrs.array_num_value(5) := to_char(p_source_29);
101213 l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
101214 l_rec_acct_attrs.array_num_value(6) := to_char(p_source_11);
101215 l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
101216 l_rec_acct_attrs.array_char_value(7) := p_source_12;
101217 l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
101218 l_rec_acct_attrs.array_num_value(8) := TO_NUMBER(p_source_30);
101219 l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
101220 l_rec_acct_attrs.array_num_value(9) := p_source_14;
101221 l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
101222 l_rec_acct_attrs.array_char_value(10) := p_source_15;
101223 l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
101224 l_rec_acct_attrs.array_num_value(11) := p_source_16;
101225 l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
101226 l_rec_acct_attrs.array_num_value(12) := TO_NUMBER(p_source_30);
101227 l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
101228 l_rec_acct_attrs.array_num_value(13) := p_source_14;
101229 l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
101230 l_rec_acct_attrs.array_char_value(14) := p_source_15;
101231 l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
101232 l_rec_acct_attrs.array_num_value(15) := p_source_16;
101233 l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
101234 l_rec_acct_attrs.array_char_value(16) := p_source_27;
101235 l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
101236 l_rec_acct_attrs.array_num_value(17) := p_source_18;
101237 l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
101238 l_rec_acct_attrs.array_char_value(18) := p_source_15;
101239 l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
101240 l_rec_acct_attrs.array_date_value(19) := p_source_19;
101241 l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
101242 l_rec_acct_attrs.array_num_value(20) := p_source_20;
101243 l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
101244 l_rec_acct_attrs.array_char_value(21) := p_source_21;
101245 l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
101246 l_rec_acct_attrs.array_num_value(22) := p_source_22;
101247 l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
101248 l_rec_acct_attrs.array_num_value(23) := p_source_31;
101249 l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
101250 l_rec_acct_attrs.array_num_value(24) := p_source_31;
101251
101252 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
101253 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
101254
101255 ---------------------------------------------------------------------------------------------------------------
101256 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
101257 ---------------------------------------------------------------------------------------------------------------
101258 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
101259
101260 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
101261 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
101262
101263 IF xla_accounting_cache_pkg.GetValueChar
101264 (p_source_code => 'LEDGER_CATEGORY_CODE'
101265 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
101266 AND l_bflow_method_code = 'PRIOR_ENTRY'
101267 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
101268 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
101269 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
101270 )
101271 THEN
101272 xla_ae_lines_pkg.BflowUpgEntry
101273 (p_business_method_code => l_bflow_method_code
101274 ,p_business_class_code => l_bflow_class_code
101275 ,p_balance_type => l_balance_type_code);
101276 ELSE
101277 NULL;
101278 -- No business flow processing for business flow method of NONE.
101279 END IF;
101280
101281 --
101282 -- call analytical criteria
101283 --
101284
101285 --
101286 -- call description
101287 --
101288 -- No description or it is inherited.
101289 --
101290 -- call ADRs
101291 -- Bug 4922099
101292 --
101293 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
101294 (NVL(l_actual_upg_option, 'N') = 'O') OR
101295 (NVL(l_enc_upg_option, 'N') = 'O')
101296 )
101297 THEN
101298 NULL;
101299 --
101300 --
101301
101302 l_ccid := AcctDerRule_4(
101303 p_application_id => p_application_id
101304 , p_ae_header_id => l_ae_header_id
101305 , p_source_4 => p_source_4
101306 , x_transaction_coa_id => l_adr_transaction_coa_id
101307 , x_accounting_coa_id => l_adr_accounting_coa_id
101308 , x_value_type_code => l_adr_value_type_code
101309 , p_side => 'NA'
101310 );
101311
101312 xla_ae_lines_pkg.set_ccid(
101313 p_code_combination_id => l_ccid
101314 , p_value_type_code => l_adr_value_type_code
101315 , p_transaction_coa_id => l_adr_transaction_coa_id
101316 , p_accounting_coa_id => l_adr_accounting_coa_id
101317 , p_adr_code => 'CST_DEFAULT'
101318 , p_adr_type_code => 'S'
101319 , p_component_type => l_component_type
101320 , p_component_code => l_component_code
101321 , p_component_type_code => l_component_type_code
101322 , p_component_appl_id => l_component_appl_id
101323 , p_amb_context_code => l_amb_context_code
101324 , p_side => 'NA'
101325 );
101326
101327
101328 --
101329 --
101330 END IF;
101331 --
101332 -- Bug 4922099
101333 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
101334 (NVL(l_enc_upg_option, 'N') = 'O')
101335 ) AND
101336 (l_bflow_method_code = 'PRIOR_ENTRY')
101337 )
101338 THEN
101339 IF
101340 --
101341 1 = 2
101342 --
101343 THEN
101344 xla_accounting_err_pkg.build_message
101345 (p_appli_s_name => 'XLA'
101346 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
101347 ,p_token_1 => 'LINE_NUMBER'
101348 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
101349 ,p_token_2 => 'LINE_TYPE_NAME'
101350 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
101351 l_component_type
101352 ,l_component_code
101353 ,l_component_type_code
101354 ,l_component_appl_id
101355 ,l_amb_context_code
101356 ,l_entity_code
101357 ,l_event_class_code
101358 )
101359 ,p_token_3 => 'OWNER'
101360 ,p_value_3 => xla_lookups_pkg.get_meaning(
101361 p_lookup_type => 'XLA_OWNER_TYPE'
101362 ,p_lookup_code => l_component_type_code
101363 )
101364 ,p_token_4 => 'PRODUCT_NAME'
101365 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
101366 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
101367 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
101368 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
101369 ,p_ae_header_id => NULL
101370 );
101371
101372 IF (C_LEVEL_ERROR>= g_log_level) THEN
101373 trace
101374 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
101375 ,p_level => C_LEVEL_ERROR
101376 ,p_module => l_log_module);
101377 END IF;
101378 END IF;
101379 END IF;
101380 --
101381 --
101382 ------------------------------------------------------------------------------------------------
101383 -- 4219869 Business Flow
101384 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
101385 -- Prior Entry. Currently, the following code is always generated.
101386 ------------------------------------------------------------------------------------------------
101387 XLA_AE_LINES_PKG.ValidateCurrentLine;
101388
101389 ------------------------------------------------------------------------------------
101390 -- 4219869 Business Flow
101391 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
101392 ------------------------------------------------------------------------------------
101393 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
101394
101395 ----------------------------------------------------------------------------------
101396 -- 4219869 Business Flow
101397 -- Update journal entry status -- Need to generate this within IF <condition>
101398 ----------------------------------------------------------------------------------
101399 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
101400 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
101401 ,p_balance_type_code => l_balance_type_code
101402 );
101403
101404 -------------------------------------------------------------------------------------------
101405 -- 4262811 - Generate the Accrual Reversal lines
101406 -------------------------------------------------------------------------------------------
101407 BEGIN
101408 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
101409 (g_array_event(p_event_id).array_value_num('header_index'));
101410 IF l_acc_rev_flag IS NULL THEN
101411 l_acc_rev_flag := 'N';
101412 END IF;
101413 EXCEPTION
101414 WHEN OTHERS THEN
101415 l_acc_rev_flag := 'N';
101416 END;
101417 --
101418 IF (l_acc_rev_flag = 'Y') THEN
101419
101420 -- 4645092 ------------------------------------------------------------------------------
101421 -- To allow MPA report to determine if it should generate report process
101422 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
101423 ------------------------------------------------------------------------------------------
101424
101425 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
101426 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
101427 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
101428 -- call ADRs
101429 -- Bug 4922099
101430 --
101431 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
101432 (NVL(l_actual_upg_option, 'N') = 'O') OR
101433 (NVL(l_enc_upg_option, 'N') = 'O')
101434 )
101435 THEN
101436 NULL;
101437 --
101438 --
101439
101440 l_ccid := AcctDerRule_4(
101441 p_application_id => p_application_id
101442 , p_ae_header_id => l_ae_header_id
101443 , p_source_4 => p_source_4
101444 , x_transaction_coa_id => l_adr_transaction_coa_id
101445 , x_accounting_coa_id => l_adr_accounting_coa_id
101446 , x_value_type_code => l_adr_value_type_code
101447 , p_side => 'NA'
101448 );
101449
101450 xla_ae_lines_pkg.set_ccid(
101451 p_code_combination_id => l_ccid
101452 , p_value_type_code => l_adr_value_type_code
101453 , p_transaction_coa_id => l_adr_transaction_coa_id
101454 , p_accounting_coa_id => l_adr_accounting_coa_id
101455 , p_adr_code => 'CST_DEFAULT'
101456 , p_adr_type_code => 'S'
101457 , p_component_type => l_component_type
101458 , p_component_code => l_component_code
101459 , p_component_type_code => l_component_type_code
101460 , p_component_appl_id => l_component_appl_id
101461 , p_amb_context_code => l_amb_context_code
101462 , p_side => 'NA'
101463 );
101464
101465
101466 --
101467 --
101468 END IF;
101469
101470 --
101471 -- Update the line information that should be overwritten
101472 --
101473 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
101474 p_header_num => 1);
101475 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
101476
101477 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
101478
101479 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
101480 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
101481 END IF;
101482
101483 --
101484 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
101485 --
101486 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
101487 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
101488 ELSE
101489 ---------------------------------------------------------------------------------------------------
101490 -- 4262811a Switch Sign
101491 ---------------------------------------------------------------------------------------------------
101492 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
101493 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
101494 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
101495 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
101496 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
101497 -- 5132302
101498 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
101499 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
101500
101501 END IF;
101502
101503 -- 4955764
101504 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
101505 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
101506
101507
101508 XLA_AE_LINES_PKG.ValidateCurrentLine;
101509 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
101510
101511 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
101512 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
101513 ,p_balance_type_code => l_balance_type_code);
101514
101515 END IF;
101516
101517 -----------------------------------------------------------------------------------------
101518 -- 4262811 Multiperiod Accounting
101519 -----------------------------------------------------------------------------------------
101520 -- No MPA option is assigned.
101521
101522
101523 END IF;
101524 END IF;
101525 --
101526
101527 --
101528 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
101529 trace
101530 (p_msg => 'END of AcctLineType_184'
101531 ,p_level => C_LEVEL_PROCEDURE
101532 ,p_module => l_log_module);
101533 END IF;
101534 --
101535 EXCEPTION
101536 WHEN xla_exceptions_pkg.application_exception THEN
101537 RAISE;
101538 WHEN OTHERS THEN
101539 xla_exceptions_pkg.raise_message
101540 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_184');
101541 END AcctLineType_184;
101542 --
101543
101544 ---------------------------------------
101545 --
101546 -- PRIVATE FUNCTION
101547 -- AcctLineType_185
101548 --
101549 ---------------------------------------
101550 PROCEDURE AcctLineType_185 (
101551 p_application_id IN NUMBER
101552 ,p_event_id IN NUMBER
101553 ,p_calculate_acctd_flag IN VARCHAR2
101554 ,p_calculate_g_l_flag IN VARCHAR2
101555 ,p_actual_flag IN OUT VARCHAR2
101556 ,p_balance_type_code OUT VARCHAR2
101557 ,p_gain_or_loss_ref OUT VARCHAR2
101558
101559 --Cost Management Default Account
101560 , p_source_4 IN NUMBER
101561 --Applied to Application ID
101562 , p_source_6 IN NUMBER
101563 --Applied to Distribution Link Type
101564 , p_source_7 IN VARCHAR2
101565 --Applied to Entity Code
101566 , p_source_8 IN VARCHAR2
101567 --Applied To Purchase Document Identifier
101568 , p_source_10 IN NUMBER
101569 --DISTRIBUTION_IDENTIFIER
101570 , p_source_11 IN NUMBER
101571 --Distribution Type
101572 , p_source_12 IN VARCHAR2
101573 , p_source_12_meaning IN VARCHAR2
101574 --PO Budget Account
101575 , p_source_13 IN NUMBER
101576 --Encumbrance Reversal Amount Entered
101577 , p_source_14 IN NUMBER
101578 --Entered Currency Code
101579 , p_source_15 IN VARCHAR2
101580 --Transaction Encumbrance Reversal Amount
101581 , p_source_16 IN NUMBER
101582 --Entered Amount
101583 , p_source_18 IN NUMBER
101584 --Currency Conversion Date
101585 , p_source_19 IN DATE
101586 --Currency Conversion Rate
101587 , p_source_20 IN NUMBER
101588 --Currency Conversion Type
101589 , p_source_21 IN VARCHAR2
101590 --Accounted Amount
101591 , p_source_22 IN NUMBER
101592 --Purchasing Encumbrance Type Identifier
101593 , p_source_23 IN NUMBER
101594 --Accounting Line Type
101595 , p_source_24 IN NUMBER
101596 --Costing Encumbrance Upgrade Option
101597 , p_source_27 IN VARCHAR2
101598 --TXN_PO_DISTRIBUTION_ID
101599 , p_source_28 IN NUMBER
101600 )
101601 IS
101602
101603 l_component_type VARCHAR2(80);
101604 l_component_code VARCHAR2(30);
101605 l_component_type_code VARCHAR2(1);
101606 l_component_appl_id INTEGER;
101607 l_amb_context_code VARCHAR2(30);
101608 l_entity_code VARCHAR2(30);
101609 l_event_class_code VARCHAR2(30);
101610 l_ae_header_id NUMBER;
101611 l_event_type_code VARCHAR2(30);
101612 l_line_definition_code VARCHAR2(30);
101613 l_line_definition_owner_code VARCHAR2(1);
101614 --
101615 -- adr variables
101616 l_segment VARCHAR2(30);
101617 l_ccid NUMBER;
101618 l_adr_transaction_coa_id NUMBER;
101619 l_adr_accounting_coa_id NUMBER;
101620 l_adr_flexfield_segment_code VARCHAR2(30);
101621 l_adr_flex_value_set_id NUMBER;
101622 l_adr_value_type_code VARCHAR2(30);
101623 l_adr_value_combination_id NUMBER;
101624 l_adr_value_segment_code VARCHAR2(30);
101625
101626 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
101627 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
101628 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
101629 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
101630
101631 -- 4262811 Variables ------------------------------------------------------------------------------------------
101632 l_entered_amt_idx NUMBER;
101633 l_accted_amt_idx NUMBER;
101634 l_acc_rev_flag VARCHAR2(1);
101635 l_accrual_line_num NUMBER;
101636 l_tmp_amt NUMBER;
101637 l_acc_rev_natural_side_code VARCHAR2(1);
101638
101639 l_num_entries NUMBER;
101640 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
101641 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
101642 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
101643 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
101644 l_recog_line_1 NUMBER;
101645 l_recog_line_2 NUMBER;
101646
101647 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
101648 l_bflow_applied_to_amt NUMBER; -- 5132302
101649 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
101650
101651 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
101652
101653 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
101654 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
101655
101656 ---------------------------------------------------------------------------------------------------------------
101657
101658
101659 --
101660 -- bulk performance
101661 --
101662 l_balance_type_code VARCHAR2(1);
101663 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
101664 l_log_module VARCHAR2(240);
101665
101666 --
101667 -- Upgrade strategy
101668 --
101669 l_actual_upg_option VARCHAR2(1);
101670 l_enc_upg_option VARCHAR2(1);
101671
101672 --
101673 BEGIN
101674 --
101675 IF g_log_enabled THEN
101676 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_185';
101677 END IF;
101678 --
101679 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
101680
101681 trace
101682 (p_msg => 'BEGIN of AcctLineType_185'
101683 ,p_level => C_LEVEL_PROCEDURE
101684 ,p_module => l_log_module);
101685
101686 END IF;
101687 --
101688 l_component_type := 'AMB_JLT';
101689 l_component_code := 'OFFSET';
101690 l_component_type_code := 'S';
101691 l_component_appl_id := 707;
101692 l_amb_context_code := 'DEFAULT';
101693 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
101694 l_event_class_code := 'PURCHASE_ORDER';
101695 l_event_type_code := 'PURCHASE_ORDER_ALL';
101696 l_line_definition_owner_code := 'S';
101697 l_line_definition_code := 'PURCHASE_ORDER';
101698 --
101699 l_balance_type_code := 'A';
101700 l_segment := NULL;
101701 l_ccid := NULL;
101702 l_adr_transaction_coa_id := NULL;
101703 l_adr_accounting_coa_id := NULL;
101704 l_adr_flexfield_segment_code := NULL;
101705 l_adr_flex_value_set_id := NULL;
101706 l_adr_value_type_code := NULL;
101707 l_adr_value_combination_id := NULL;
101708 l_adr_value_segment_code := NULL;
101709
101710 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
101711 l_bflow_class_code := ''; -- 4219869 Business Flow
101712 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
101713 l_budgetary_control_flag := 'N';
101714
101715 l_bflow_applied_to_amt_idx := NULL; -- 5132302
101716 l_bflow_applied_to_amt := NULL; -- 5132302
101717 l_entered_amt_idx := NULL; -- 4262811
101718 l_accted_amt_idx := NULL; -- 4262811
101719 l_acc_rev_flag := NULL; -- 4262811
101720 l_accrual_line_num := NULL; -- 4262811
101721 l_tmp_amt := NULL; -- 4262811
101722 --
101723
101724 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
101725 l_balance_type_code <> 'B' THEN
101726 IF NVL(p_source_24,9E125) = 2
101727 THEN
101728
101729 --
101730 XLA_AE_LINES_PKG.SetNewLine;
101731
101732 p_balance_type_code := l_balance_type_code;
101733 -- set the flag so later we will know whether the gain loss line needs to be created
101734
101735 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
101736 p_actual_flag :='A';
101737 END IF;
101738
101739 --
101740 -- bulk performance
101741 --
101742 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
101743 p_header_num => 0); -- 4262811
101744 --
101745 -- set accounting line options
101746 --
101747 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
101748 p_natural_side_code => 'D'
101749 , p_gain_or_loss_flag => 'N'
101750 , p_gl_transfer_mode_code => 'S'
101751 , p_acct_entry_type_code => 'A'
101752 , p_switch_side_flag => 'Y'
101753 , p_merge_duplicate_code => 'N'
101754 );
101755 --
101756 l_acc_rev_natural_side_code := 'C'; -- 4262811
101757 --
101758 --
101759 -- set accounting line type info
101760 --
101761 xla_ae_lines_pkg.SetAcctLineType
101762 (p_component_type => l_component_type
101763 ,p_event_type_code => l_event_type_code
101764 ,p_line_definition_owner_code => l_line_definition_owner_code
101765 ,p_line_definition_code => l_line_definition_code
101766 ,p_accounting_line_code => l_component_code
101767 ,p_accounting_line_type_code => l_component_type_code
101768 ,p_accounting_line_appl_id => l_component_appl_id
101769 ,p_amb_context_code => l_amb_context_code
101770 ,p_entity_code => l_entity_code
101771 ,p_event_class_code => l_event_class_code);
101772 --
101773 -- set accounting class
101774 --
101775 xla_ae_lines_pkg.SetAcctClass(
101776 p_accounting_class_code => 'OFFSET'
101777 , p_ae_header_id => l_ae_header_id
101778 );
101779
101780 --
101781 -- set rounding class
101782 --
101783 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
101784 'OFFSET';
101785
101786 --
101787 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
101788 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
101789 --
101790 -- bulk performance
101791 --
101792 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
101793
101794 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
101795 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
101796
101797 -- 4955764
101798 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
101799 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
101800
101801 -- 4458381 Public Sector Enh
101802
101803 --
101804 -- set accounting attributes for the line type
101805 --
101806 l_entered_amt_idx := 17;
101807 l_accted_amt_idx := 22;
101808 l_bflow_applied_to_amt_idx := NULL; -- 5132302
101809 l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
101810 l_rec_acct_attrs.array_num_value(1) := p_source_6;
101811 l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
101812 l_rec_acct_attrs.array_char_value(2) := p_source_7;
101813 l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
101814 l_rec_acct_attrs.array_char_value(3) := p_source_8;
101815 l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
101816 l_rec_acct_attrs.array_num_value(4) := to_char(p_source_28);
101817 l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
101818 l_rec_acct_attrs.array_num_value(5) := to_char(p_source_10);
101819 l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
101820 l_rec_acct_attrs.array_num_value(6) := to_char(p_source_11);
101821 l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
101822 l_rec_acct_attrs.array_char_value(7) := p_source_12;
101823 l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
101824 l_rec_acct_attrs.array_num_value(8) := TO_NUMBER(p_source_13);
101825 l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
101826 l_rec_acct_attrs.array_num_value(9) := p_source_14;
101827 l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
101828 l_rec_acct_attrs.array_char_value(10) := p_source_15;
101829 l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
101830 l_rec_acct_attrs.array_num_value(11) := p_source_16;
101831 l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
101832 l_rec_acct_attrs.array_num_value(12) := TO_NUMBER(p_source_13);
101833 l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
101834 l_rec_acct_attrs.array_num_value(13) := p_source_14;
101835 l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
101836 l_rec_acct_attrs.array_char_value(14) := p_source_15;
101837 l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
101838 l_rec_acct_attrs.array_num_value(15) := p_source_16;
101839 l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
101840 l_rec_acct_attrs.array_char_value(16) := p_source_27;
101841 l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
101842 l_rec_acct_attrs.array_num_value(17) := p_source_18;
101843 l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
101844 l_rec_acct_attrs.array_char_value(18) := p_source_15;
101845 l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
101846 l_rec_acct_attrs.array_date_value(19) := p_source_19;
101847 l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
101848 l_rec_acct_attrs.array_num_value(20) := p_source_20;
101849 l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
101850 l_rec_acct_attrs.array_char_value(21) := p_source_21;
101851 l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
101852 l_rec_acct_attrs.array_num_value(22) := p_source_22;
101853 l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
101854 l_rec_acct_attrs.array_num_value(23) := p_source_23;
101855 l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
101856 l_rec_acct_attrs.array_num_value(24) := p_source_23;
101857
101858 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
101859 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
101860
101861 ---------------------------------------------------------------------------------------------------------------
101862 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
101863 ---------------------------------------------------------------------------------------------------------------
101864 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
101865
101866 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
101867 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
101868
101869 IF xla_accounting_cache_pkg.GetValueChar
101870 (p_source_code => 'LEDGER_CATEGORY_CODE'
101871 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
101872 AND l_bflow_method_code = 'PRIOR_ENTRY'
101873 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
101874 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
101875 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
101876 )
101877 THEN
101878 xla_ae_lines_pkg.BflowUpgEntry
101879 (p_business_method_code => l_bflow_method_code
101880 ,p_business_class_code => l_bflow_class_code
101881 ,p_balance_type => l_balance_type_code);
101882 ELSE
101883 NULL;
101884 -- No business flow processing for business flow method of NONE.
101885 END IF;
101886
101887 --
101888 -- call analytical criteria
101889 --
101890
101891 --
101892 -- call description
101893 --
101894 -- No description or it is inherited.
101895 --
101896 -- call ADRs
101897 -- Bug 4922099
101898 --
101899 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
101900 (NVL(l_actual_upg_option, 'N') = 'O') OR
101901 (NVL(l_enc_upg_option, 'N') = 'O')
101902 )
101903 THEN
101904 NULL;
101905 --
101906 --
101907
101908 l_ccid := AcctDerRule_4(
101909 p_application_id => p_application_id
101910 , p_ae_header_id => l_ae_header_id
101911 , p_source_4 => p_source_4
101912 , x_transaction_coa_id => l_adr_transaction_coa_id
101913 , x_accounting_coa_id => l_adr_accounting_coa_id
101914 , x_value_type_code => l_adr_value_type_code
101915 , p_side => 'NA'
101916 );
101917
101918 xla_ae_lines_pkg.set_ccid(
101919 p_code_combination_id => l_ccid
101920 , p_value_type_code => l_adr_value_type_code
101921 , p_transaction_coa_id => l_adr_transaction_coa_id
101922 , p_accounting_coa_id => l_adr_accounting_coa_id
101923 , p_adr_code => 'CST_DEFAULT'
101924 , p_adr_type_code => 'S'
101925 , p_component_type => l_component_type
101926 , p_component_code => l_component_code
101927 , p_component_type_code => l_component_type_code
101928 , p_component_appl_id => l_component_appl_id
101929 , p_amb_context_code => l_amb_context_code
101930 , p_side => 'NA'
101931 );
101932
101933
101934 --
101935 --
101936 END IF;
101937 --
101938 -- Bug 4922099
101939 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
101940 (NVL(l_enc_upg_option, 'N') = 'O')
101941 ) AND
101942 (l_bflow_method_code = 'PRIOR_ENTRY')
101943 )
101944 THEN
101945 IF
101946 --
101947 1 = 2
101948 --
101949 THEN
101950 xla_accounting_err_pkg.build_message
101951 (p_appli_s_name => 'XLA'
101952 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
101953 ,p_token_1 => 'LINE_NUMBER'
101954 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
101955 ,p_token_2 => 'LINE_TYPE_NAME'
101956 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
101957 l_component_type
101958 ,l_component_code
101959 ,l_component_type_code
101960 ,l_component_appl_id
101961 ,l_amb_context_code
101962 ,l_entity_code
101963 ,l_event_class_code
101964 )
101965 ,p_token_3 => 'OWNER'
101966 ,p_value_3 => xla_lookups_pkg.get_meaning(
101967 p_lookup_type => 'XLA_OWNER_TYPE'
101968 ,p_lookup_code => l_component_type_code
101969 )
101970 ,p_token_4 => 'PRODUCT_NAME'
101971 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
101972 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
101973 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
101974 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
101975 ,p_ae_header_id => NULL
101976 );
101977
101978 IF (C_LEVEL_ERROR>= g_log_level) THEN
101979 trace
101980 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
101981 ,p_level => C_LEVEL_ERROR
101982 ,p_module => l_log_module);
101983 END IF;
101984 END IF;
101985 END IF;
101986 --
101987 --
101988 ------------------------------------------------------------------------------------------------
101989 -- 4219869 Business Flow
101990 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
101991 -- Prior Entry. Currently, the following code is always generated.
101992 ------------------------------------------------------------------------------------------------
101993 XLA_AE_LINES_PKG.ValidateCurrentLine;
101994
101995 ------------------------------------------------------------------------------------
101996 -- 4219869 Business Flow
101997 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
101998 ------------------------------------------------------------------------------------
101999 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
102000
102001 ----------------------------------------------------------------------------------
102002 -- 4219869 Business Flow
102003 -- Update journal entry status -- Need to generate this within IF <condition>
102004 ----------------------------------------------------------------------------------
102005 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
102006 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
102007 ,p_balance_type_code => l_balance_type_code
102008 );
102009
102010 -------------------------------------------------------------------------------------------
102011 -- 4262811 - Generate the Accrual Reversal lines
102012 -------------------------------------------------------------------------------------------
102013 BEGIN
102014 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
102015 (g_array_event(p_event_id).array_value_num('header_index'));
102016 IF l_acc_rev_flag IS NULL THEN
102017 l_acc_rev_flag := 'N';
102018 END IF;
102019 EXCEPTION
102020 WHEN OTHERS THEN
102021 l_acc_rev_flag := 'N';
102022 END;
102023 --
102024 IF (l_acc_rev_flag = 'Y') THEN
102025
102026 -- 4645092 ------------------------------------------------------------------------------
102027 -- To allow MPA report to determine if it should generate report process
102028 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
102029 ------------------------------------------------------------------------------------------
102030
102031 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
102032 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
102033 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
102034 -- call ADRs
102035 -- Bug 4922099
102036 --
102037 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
102038 (NVL(l_actual_upg_option, 'N') = 'O') OR
102039 (NVL(l_enc_upg_option, 'N') = 'O')
102040 )
102041 THEN
102042 NULL;
102043 --
102044 --
102045
102046 l_ccid := AcctDerRule_4(
102047 p_application_id => p_application_id
102048 , p_ae_header_id => l_ae_header_id
102049 , p_source_4 => p_source_4
102050 , x_transaction_coa_id => l_adr_transaction_coa_id
102051 , x_accounting_coa_id => l_adr_accounting_coa_id
102052 , x_value_type_code => l_adr_value_type_code
102053 , p_side => 'NA'
102054 );
102055
102056 xla_ae_lines_pkg.set_ccid(
102057 p_code_combination_id => l_ccid
102058 , p_value_type_code => l_adr_value_type_code
102059 , p_transaction_coa_id => l_adr_transaction_coa_id
102060 , p_accounting_coa_id => l_adr_accounting_coa_id
102061 , p_adr_code => 'CST_DEFAULT'
102062 , p_adr_type_code => 'S'
102063 , p_component_type => l_component_type
102064 , p_component_code => l_component_code
102065 , p_component_type_code => l_component_type_code
102066 , p_component_appl_id => l_component_appl_id
102067 , p_amb_context_code => l_amb_context_code
102068 , p_side => 'NA'
102069 );
102070
102071
102072 --
102073 --
102074 END IF;
102075
102076 --
102077 -- Update the line information that should be overwritten
102078 --
102079 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
102080 p_header_num => 1);
102081 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
102082
102083 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
102084
102085 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
102086 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
102087 END IF;
102088
102089 --
102090 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
102091 --
102092 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
102093 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
102094 ELSE
102095 ---------------------------------------------------------------------------------------------------
102096 -- 4262811a Switch Sign
102097 ---------------------------------------------------------------------------------------------------
102098 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
102099 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
102100 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
102101 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
102102 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
102103 -- 5132302
102104 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
102105 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
102106
102107 END IF;
102108
102109 -- 4955764
102110 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
102111 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
102112
102113
102114 XLA_AE_LINES_PKG.ValidateCurrentLine;
102115 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
102116
102117 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
102118 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
102119 ,p_balance_type_code => l_balance_type_code);
102120
102121 END IF;
102122
102123 -----------------------------------------------------------------------------------------
102124 -- 4262811 Multiperiod Accounting
102125 -----------------------------------------------------------------------------------------
102126 -- No MPA option is assigned.
102127
102128
102129 END IF;
102130 END IF;
102131 --
102132
102133 --
102134 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
102135 trace
102136 (p_msg => 'END of AcctLineType_185'
102137 ,p_level => C_LEVEL_PROCEDURE
102138 ,p_module => l_log_module);
102139 END IF;
102140 --
102141 EXCEPTION
102142 WHEN xla_exceptions_pkg.application_exception THEN
102143 RAISE;
102144 WHEN OTHERS THEN
102145 xla_exceptions_pkg.raise_message
102146 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_185');
102147 END AcctLineType_185;
102148 --
102149
102150 ---------------------------------------
102151 --
102152 -- PRIVATE FUNCTION
102153 -- AcctLineType_186
102154 --
102155 ---------------------------------------
102156 PROCEDURE AcctLineType_186 (
102157 p_application_id IN NUMBER
102158 ,p_event_id IN NUMBER
102159 ,p_calculate_acctd_flag IN VARCHAR2
102160 ,p_calculate_g_l_flag IN VARCHAR2
102161 ,p_actual_flag IN OUT VARCHAR2
102162 ,p_balance_type_code OUT VARCHAR2
102163 ,p_gain_or_loss_ref OUT VARCHAR2
102164
102165 --Cost Management Default Account
102166 , p_source_4 IN NUMBER
102167 --DISTRIBUTION_IDENTIFIER
102168 , p_source_11 IN NUMBER
102169 --Distribution Type
102170 , p_source_12 IN VARCHAR2
102171 , p_source_12_meaning IN VARCHAR2
102172 --Entered Currency Code
102173 , p_source_15 IN VARCHAR2
102174 --Entered Amount
102175 , p_source_18 IN NUMBER
102176 --Currency Conversion Date
102177 , p_source_19 IN DATE
102178 --Currency Conversion Rate
102179 , p_source_20 IN NUMBER
102180 --Currency Conversion Type
102181 , p_source_21 IN VARCHAR2
102182 --Accounted Amount
102183 , p_source_22 IN NUMBER
102184 --Accounting Line Type
102185 , p_source_24 IN NUMBER
102186 )
102187 IS
102188
102189 l_component_type VARCHAR2(80);
102190 l_component_code VARCHAR2(30);
102191 l_component_type_code VARCHAR2(1);
102192 l_component_appl_id INTEGER;
102193 l_amb_context_code VARCHAR2(30);
102194 l_entity_code VARCHAR2(30);
102195 l_event_class_code VARCHAR2(30);
102196 l_ae_header_id NUMBER;
102197 l_event_type_code VARCHAR2(30);
102198 l_line_definition_code VARCHAR2(30);
102199 l_line_definition_owner_code VARCHAR2(1);
102200 --
102201 -- adr variables
102202 l_segment VARCHAR2(30);
102203 l_ccid NUMBER;
102204 l_adr_transaction_coa_id NUMBER;
102205 l_adr_accounting_coa_id NUMBER;
102206 l_adr_flexfield_segment_code VARCHAR2(30);
102207 l_adr_flex_value_set_id NUMBER;
102208 l_adr_value_type_code VARCHAR2(30);
102209 l_adr_value_combination_id NUMBER;
102210 l_adr_value_segment_code VARCHAR2(30);
102211
102212 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
102213 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
102214 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
102215 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
102216
102217 -- 4262811 Variables ------------------------------------------------------------------------------------------
102218 l_entered_amt_idx NUMBER;
102219 l_accted_amt_idx NUMBER;
102220 l_acc_rev_flag VARCHAR2(1);
102221 l_accrual_line_num NUMBER;
102222 l_tmp_amt NUMBER;
102223 l_acc_rev_natural_side_code VARCHAR2(1);
102224
102225 l_num_entries NUMBER;
102226 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
102227 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
102228 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
102229 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
102230 l_recog_line_1 NUMBER;
102231 l_recog_line_2 NUMBER;
102232
102233 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
102234 l_bflow_applied_to_amt NUMBER; -- 5132302
102235 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
102236
102237 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
102238
102239 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
102240 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
102241
102242 ---------------------------------------------------------------------------------------------------------------
102243
102244
102245 --
102246 -- bulk performance
102247 --
102248 l_balance_type_code VARCHAR2(1);
102249 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
102250 l_log_module VARCHAR2(240);
102251
102252 --
102253 -- Upgrade strategy
102254 --
102255 l_actual_upg_option VARCHAR2(1);
102256 l_enc_upg_option VARCHAR2(1);
102257
102258 --
102259 BEGIN
102260 --
102261 IF g_log_enabled THEN
102262 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_186';
102263 END IF;
102264 --
102265 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
102266
102267 trace
102268 (p_msg => 'BEGIN of AcctLineType_186'
102269 ,p_level => C_LEVEL_PROCEDURE
102270 ,p_module => l_log_module);
102271
102272 END IF;
102273 --
102274 l_component_type := 'AMB_JLT';
102275 l_component_code := 'OFFSET';
102276 l_component_type_code := 'S';
102277 l_component_appl_id := 707;
102278 l_amb_context_code := 'DEFAULT';
102279 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
102280 l_event_class_code := 'USER_DEFINE';
102281 l_event_type_code := 'UDIR_INTERORG_RCPT';
102282 l_line_definition_owner_code := 'S';
102283 l_line_definition_code := 'USER_DIR_INTERORG_RCPT';
102284 --
102285 l_balance_type_code := 'A';
102286 l_segment := NULL;
102287 l_ccid := NULL;
102288 l_adr_transaction_coa_id := NULL;
102289 l_adr_accounting_coa_id := NULL;
102290 l_adr_flexfield_segment_code := NULL;
102291 l_adr_flex_value_set_id := NULL;
102292 l_adr_value_type_code := NULL;
102293 l_adr_value_combination_id := NULL;
102294 l_adr_value_segment_code := NULL;
102295
102296 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
102297 l_bflow_class_code := ''; -- 4219869 Business Flow
102298 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
102299 l_budgetary_control_flag := 'N';
102300
102301 l_bflow_applied_to_amt_idx := NULL; -- 5132302
102302 l_bflow_applied_to_amt := NULL; -- 5132302
102303 l_entered_amt_idx := NULL; -- 4262811
102304 l_accted_amt_idx := NULL; -- 4262811
102305 l_acc_rev_flag := NULL; -- 4262811
102306 l_accrual_line_num := NULL; -- 4262811
102307 l_tmp_amt := NULL; -- 4262811
102308 --
102309
102310 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
102311 l_balance_type_code <> 'B' THEN
102312 IF NVL(p_source_24,9E125) = 2
102313 THEN
102314
102315 --
102316 XLA_AE_LINES_PKG.SetNewLine;
102317
102318 p_balance_type_code := l_balance_type_code;
102319 -- set the flag so later we will know whether the gain loss line needs to be created
102320
102321 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
102322 p_actual_flag :='A';
102323 END IF;
102324
102325 --
102326 -- bulk performance
102327 --
102328 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
102329 p_header_num => 0); -- 4262811
102330 --
102331 -- set accounting line options
102332 --
102333 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
102334 p_natural_side_code => 'D'
102335 , p_gain_or_loss_flag => 'N'
102336 , p_gl_transfer_mode_code => 'S'
102337 , p_acct_entry_type_code => 'A'
102338 , p_switch_side_flag => 'Y'
102339 , p_merge_duplicate_code => 'N'
102340 );
102341 --
102342 l_acc_rev_natural_side_code := 'C'; -- 4262811
102343 --
102344 --
102345 -- set accounting line type info
102346 --
102347 xla_ae_lines_pkg.SetAcctLineType
102348 (p_component_type => l_component_type
102349 ,p_event_type_code => l_event_type_code
102350 ,p_line_definition_owner_code => l_line_definition_owner_code
102351 ,p_line_definition_code => l_line_definition_code
102352 ,p_accounting_line_code => l_component_code
102353 ,p_accounting_line_type_code => l_component_type_code
102354 ,p_accounting_line_appl_id => l_component_appl_id
102355 ,p_amb_context_code => l_amb_context_code
102356 ,p_entity_code => l_entity_code
102357 ,p_event_class_code => l_event_class_code);
102358 --
102359 -- set accounting class
102360 --
102361 xla_ae_lines_pkg.SetAcctClass(
102362 p_accounting_class_code => 'OFFSET'
102363 , p_ae_header_id => l_ae_header_id
102364 );
102365
102366 --
102367 -- set rounding class
102368 --
102369 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
102370 'OFFSET';
102371
102372 --
102373 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
102374 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
102375 --
102376 -- bulk performance
102377 --
102378 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
102379
102380 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
102381 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
102382
102383 -- 4955764
102384 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
102385 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
102386
102387 -- 4458381 Public Sector Enh
102388
102389 --
102390 -- set accounting attributes for the line type
102391 --
102392 l_entered_amt_idx := 3;
102393 l_accted_amt_idx := 8;
102394 l_bflow_applied_to_amt_idx := NULL; -- 5132302
102395 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
102396 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
102397 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
102398 l_rec_acct_attrs.array_char_value(2) := p_source_12;
102399 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
102400 l_rec_acct_attrs.array_num_value(3) := p_source_18;
102401 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
102402 l_rec_acct_attrs.array_char_value(4) := p_source_15;
102403 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
102404 l_rec_acct_attrs.array_date_value(5) := p_source_19;
102405 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
102406 l_rec_acct_attrs.array_num_value(6) := p_source_20;
102407 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
102408 l_rec_acct_attrs.array_char_value(7) := p_source_21;
102409 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
102410 l_rec_acct_attrs.array_num_value(8) := p_source_22;
102411
102412 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
102413 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
102414
102415 ---------------------------------------------------------------------------------------------------------------
102416 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
102417 ---------------------------------------------------------------------------------------------------------------
102418 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
102419
102420 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
102421 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
102422
102423 IF xla_accounting_cache_pkg.GetValueChar
102424 (p_source_code => 'LEDGER_CATEGORY_CODE'
102425 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
102426 AND l_bflow_method_code = 'PRIOR_ENTRY'
102427 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
102428 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
102429 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
102430 )
102431 THEN
102432 xla_ae_lines_pkg.BflowUpgEntry
102433 (p_business_method_code => l_bflow_method_code
102434 ,p_business_class_code => l_bflow_class_code
102435 ,p_balance_type => l_balance_type_code);
102436 ELSE
102437 NULL;
102438 -- No business flow processing for business flow method of NONE.
102439 END IF;
102440
102441 --
102442 -- call analytical criteria
102443 --
102444
102445 --
102446 -- call description
102447 --
102448 -- No description or it is inherited.
102449 --
102450 -- call ADRs
102451 -- Bug 4922099
102452 --
102453 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
102454 (NVL(l_actual_upg_option, 'N') = 'O') OR
102455 (NVL(l_enc_upg_option, 'N') = 'O')
102456 )
102457 THEN
102458 NULL;
102459 --
102460 --
102461
102462 l_ccid := AcctDerRule_4(
102463 p_application_id => p_application_id
102464 , p_ae_header_id => l_ae_header_id
102465 , p_source_4 => p_source_4
102466 , x_transaction_coa_id => l_adr_transaction_coa_id
102467 , x_accounting_coa_id => l_adr_accounting_coa_id
102468 , x_value_type_code => l_adr_value_type_code
102469 , p_side => 'NA'
102470 );
102471
102472 xla_ae_lines_pkg.set_ccid(
102473 p_code_combination_id => l_ccid
102474 , p_value_type_code => l_adr_value_type_code
102475 , p_transaction_coa_id => l_adr_transaction_coa_id
102476 , p_accounting_coa_id => l_adr_accounting_coa_id
102477 , p_adr_code => 'CST_DEFAULT'
102478 , p_adr_type_code => 'S'
102479 , p_component_type => l_component_type
102480 , p_component_code => l_component_code
102481 , p_component_type_code => l_component_type_code
102482 , p_component_appl_id => l_component_appl_id
102483 , p_amb_context_code => l_amb_context_code
102484 , p_side => 'NA'
102485 );
102486
102487
102488 --
102489 --
102490 END IF;
102491 --
102492 -- Bug 4922099
102493 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
102494 (NVL(l_enc_upg_option, 'N') = 'O')
102495 ) AND
102496 (l_bflow_method_code = 'PRIOR_ENTRY')
102497 )
102498 THEN
102499 IF
102500 --
102501 1 = 2
102502 --
102503 THEN
102504 xla_accounting_err_pkg.build_message
102505 (p_appli_s_name => 'XLA'
102506 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
102507 ,p_token_1 => 'LINE_NUMBER'
102508 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
102509 ,p_token_2 => 'LINE_TYPE_NAME'
102510 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
102511 l_component_type
102512 ,l_component_code
102513 ,l_component_type_code
102514 ,l_component_appl_id
102515 ,l_amb_context_code
102516 ,l_entity_code
102517 ,l_event_class_code
102518 )
102519 ,p_token_3 => 'OWNER'
102520 ,p_value_3 => xla_lookups_pkg.get_meaning(
102521 p_lookup_type => 'XLA_OWNER_TYPE'
102522 ,p_lookup_code => l_component_type_code
102523 )
102524 ,p_token_4 => 'PRODUCT_NAME'
102525 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
102526 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
102527 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
102528 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
102529 ,p_ae_header_id => NULL
102530 );
102531
102532 IF (C_LEVEL_ERROR>= g_log_level) THEN
102533 trace
102534 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
102535 ,p_level => C_LEVEL_ERROR
102536 ,p_module => l_log_module);
102537 END IF;
102538 END IF;
102539 END IF;
102540 --
102541 --
102542 ------------------------------------------------------------------------------------------------
102543 -- 4219869 Business Flow
102544 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
102545 -- Prior Entry. Currently, the following code is always generated.
102546 ------------------------------------------------------------------------------------------------
102547 XLA_AE_LINES_PKG.ValidateCurrentLine;
102548
102549 ------------------------------------------------------------------------------------
102550 -- 4219869 Business Flow
102551 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
102552 ------------------------------------------------------------------------------------
102553 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
102554
102555 ----------------------------------------------------------------------------------
102556 -- 4219869 Business Flow
102557 -- Update journal entry status -- Need to generate this within IF <condition>
102558 ----------------------------------------------------------------------------------
102559 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
102560 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
102561 ,p_balance_type_code => l_balance_type_code
102562 );
102563
102564 -------------------------------------------------------------------------------------------
102565 -- 4262811 - Generate the Accrual Reversal lines
102566 -------------------------------------------------------------------------------------------
102567 BEGIN
102568 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
102569 (g_array_event(p_event_id).array_value_num('header_index'));
102570 IF l_acc_rev_flag IS NULL THEN
102571 l_acc_rev_flag := 'N';
102572 END IF;
102573 EXCEPTION
102574 WHEN OTHERS THEN
102575 l_acc_rev_flag := 'N';
102576 END;
102577 --
102578 IF (l_acc_rev_flag = 'Y') THEN
102579
102580 -- 4645092 ------------------------------------------------------------------------------
102581 -- To allow MPA report to determine if it should generate report process
102582 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
102583 ------------------------------------------------------------------------------------------
102584
102585 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
102586 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
102587 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
102588 -- call ADRs
102589 -- Bug 4922099
102590 --
102591 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
102592 (NVL(l_actual_upg_option, 'N') = 'O') OR
102593 (NVL(l_enc_upg_option, 'N') = 'O')
102594 )
102595 THEN
102596 NULL;
102597 --
102598 --
102599
102600 l_ccid := AcctDerRule_4(
102601 p_application_id => p_application_id
102602 , p_ae_header_id => l_ae_header_id
102603 , p_source_4 => p_source_4
102604 , x_transaction_coa_id => l_adr_transaction_coa_id
102605 , x_accounting_coa_id => l_adr_accounting_coa_id
102606 , x_value_type_code => l_adr_value_type_code
102607 , p_side => 'NA'
102608 );
102609
102610 xla_ae_lines_pkg.set_ccid(
102611 p_code_combination_id => l_ccid
102612 , p_value_type_code => l_adr_value_type_code
102613 , p_transaction_coa_id => l_adr_transaction_coa_id
102614 , p_accounting_coa_id => l_adr_accounting_coa_id
102615 , p_adr_code => 'CST_DEFAULT'
102616 , p_adr_type_code => 'S'
102617 , p_component_type => l_component_type
102618 , p_component_code => l_component_code
102619 , p_component_type_code => l_component_type_code
102620 , p_component_appl_id => l_component_appl_id
102621 , p_amb_context_code => l_amb_context_code
102622 , p_side => 'NA'
102623 );
102624
102625
102626 --
102627 --
102628 END IF;
102629
102630 --
102631 -- Update the line information that should be overwritten
102632 --
102633 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
102634 p_header_num => 1);
102635 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
102636
102637 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
102638
102639 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
102640 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
102641 END IF;
102642
102643 --
102644 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
102645 --
102646 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
102647 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
102648 ELSE
102649 ---------------------------------------------------------------------------------------------------
102650 -- 4262811a Switch Sign
102651 ---------------------------------------------------------------------------------------------------
102652 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
102653 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
102654 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
102655 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
102656 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
102657 -- 5132302
102658 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
102659 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
102660
102661 END IF;
102662
102663 -- 4955764
102664 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
102665 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
102666
102667
102668 XLA_AE_LINES_PKG.ValidateCurrentLine;
102669 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
102670
102671 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
102672 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
102673 ,p_balance_type_code => l_balance_type_code);
102674
102675 END IF;
102676
102677 -----------------------------------------------------------------------------------------
102678 -- 4262811 Multiperiod Accounting
102679 -----------------------------------------------------------------------------------------
102680 -- No MPA option is assigned.
102681
102682
102683 END IF;
102684 END IF;
102685 --
102686
102687 --
102688 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
102689 trace
102690 (p_msg => 'END of AcctLineType_186'
102691 ,p_level => C_LEVEL_PROCEDURE
102692 ,p_module => l_log_module);
102693 END IF;
102694 --
102695 EXCEPTION
102696 WHEN xla_exceptions_pkg.application_exception THEN
102697 RAISE;
102698 WHEN OTHERS THEN
102699 xla_exceptions_pkg.raise_message
102700 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_186');
102701 END AcctLineType_186;
102702 --
102703
102704 ---------------------------------------
102705 --
102706 -- PRIVATE FUNCTION
102707 -- AcctLineType_187
102708 --
102709 ---------------------------------------
102710 PROCEDURE AcctLineType_187 (
102711 p_application_id IN NUMBER
102712 ,p_event_id IN NUMBER
102713 ,p_calculate_acctd_flag IN VARCHAR2
102714 ,p_calculate_g_l_flag IN VARCHAR2
102715 ,p_actual_flag IN OUT VARCHAR2
102716 ,p_balance_type_code OUT VARCHAR2
102717 ,p_gain_or_loss_ref OUT VARCHAR2
102718
102719 --Cost Management Default Account
102720 , p_source_4 IN NUMBER
102721 --DISTRIBUTION_IDENTIFIER
102722 , p_source_11 IN NUMBER
102723 --Distribution Type
102724 , p_source_12 IN VARCHAR2
102725 , p_source_12_meaning IN VARCHAR2
102726 --Entered Currency Code
102727 , p_source_15 IN VARCHAR2
102728 --Entered Amount
102729 , p_source_18 IN NUMBER
102730 --Currency Conversion Date
102731 , p_source_19 IN DATE
102732 --Currency Conversion Rate
102733 , p_source_20 IN NUMBER
102734 --Currency Conversion Type
102735 , p_source_21 IN VARCHAR2
102736 --Accounted Amount
102737 , p_source_22 IN NUMBER
102738 --Accounting Line Type
102739 , p_source_24 IN NUMBER
102740 )
102741 IS
102742
102743 l_component_type VARCHAR2(80);
102744 l_component_code VARCHAR2(30);
102745 l_component_type_code VARCHAR2(1);
102746 l_component_appl_id INTEGER;
102747 l_amb_context_code VARCHAR2(30);
102748 l_entity_code VARCHAR2(30);
102749 l_event_class_code VARCHAR2(30);
102750 l_ae_header_id NUMBER;
102751 l_event_type_code VARCHAR2(30);
102752 l_line_definition_code VARCHAR2(30);
102753 l_line_definition_owner_code VARCHAR2(1);
102754 --
102755 -- adr variables
102756 l_segment VARCHAR2(30);
102757 l_ccid NUMBER;
102758 l_adr_transaction_coa_id NUMBER;
102759 l_adr_accounting_coa_id NUMBER;
102760 l_adr_flexfield_segment_code VARCHAR2(30);
102761 l_adr_flex_value_set_id NUMBER;
102762 l_adr_value_type_code VARCHAR2(30);
102763 l_adr_value_combination_id NUMBER;
102764 l_adr_value_segment_code VARCHAR2(30);
102765
102766 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
102767 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
102768 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
102769 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
102770
102771 -- 4262811 Variables ------------------------------------------------------------------------------------------
102772 l_entered_amt_idx NUMBER;
102773 l_accted_amt_idx NUMBER;
102774 l_acc_rev_flag VARCHAR2(1);
102775 l_accrual_line_num NUMBER;
102776 l_tmp_amt NUMBER;
102777 l_acc_rev_natural_side_code VARCHAR2(1);
102778
102779 l_num_entries NUMBER;
102780 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
102781 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
102782 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
102783 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
102784 l_recog_line_1 NUMBER;
102785 l_recog_line_2 NUMBER;
102786
102787 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
102788 l_bflow_applied_to_amt NUMBER; -- 5132302
102789 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
102790
102791 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
102792
102793 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
102794 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
102795
102796 ---------------------------------------------------------------------------------------------------------------
102797
102798
102799 --
102800 -- bulk performance
102801 --
102802 l_balance_type_code VARCHAR2(1);
102803 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
102804 l_log_module VARCHAR2(240);
102805
102806 --
102807 -- Upgrade strategy
102808 --
102809 l_actual_upg_option VARCHAR2(1);
102810 l_enc_upg_option VARCHAR2(1);
102811
102812 --
102813 BEGIN
102814 --
102815 IF g_log_enabled THEN
102816 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_187';
102817 END IF;
102818 --
102819 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
102820
102821 trace
102822 (p_msg => 'BEGIN of AcctLineType_187'
102823 ,p_level => C_LEVEL_PROCEDURE
102824 ,p_module => l_log_module);
102825
102826 END IF;
102827 --
102828 l_component_type := 'AMB_JLT';
102829 l_component_code := 'OFFSET';
102830 l_component_type_code := 'S';
102831 l_component_appl_id := 707;
102832 l_amb_context_code := 'DEFAULT';
102833 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
102834 l_event_class_code := 'USER_DEFINE';
102835 l_event_type_code := 'UDIR_INTERORG_SHIP';
102836 l_line_definition_owner_code := 'S';
102837 l_line_definition_code := 'USER_DIR_INTERORG_SHIP';
102838 --
102839 l_balance_type_code := 'A';
102840 l_segment := NULL;
102841 l_ccid := NULL;
102842 l_adr_transaction_coa_id := NULL;
102843 l_adr_accounting_coa_id := NULL;
102844 l_adr_flexfield_segment_code := NULL;
102845 l_adr_flex_value_set_id := NULL;
102846 l_adr_value_type_code := NULL;
102847 l_adr_value_combination_id := NULL;
102848 l_adr_value_segment_code := NULL;
102849
102850 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
102851 l_bflow_class_code := ''; -- 4219869 Business Flow
102852 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
102853 l_budgetary_control_flag := 'N';
102854
102855 l_bflow_applied_to_amt_idx := NULL; -- 5132302
102856 l_bflow_applied_to_amt := NULL; -- 5132302
102857 l_entered_amt_idx := NULL; -- 4262811
102858 l_accted_amt_idx := NULL; -- 4262811
102859 l_acc_rev_flag := NULL; -- 4262811
102860 l_accrual_line_num := NULL; -- 4262811
102861 l_tmp_amt := NULL; -- 4262811
102862 --
102863
102864 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
102865 l_balance_type_code <> 'B' THEN
102866 IF NVL(p_source_24,9E125) = 2
102867 THEN
102868
102869 --
102870 XLA_AE_LINES_PKG.SetNewLine;
102871
102872 p_balance_type_code := l_balance_type_code;
102873 -- set the flag so later we will know whether the gain loss line needs to be created
102874
102875 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
102876 p_actual_flag :='A';
102877 END IF;
102878
102879 --
102880 -- bulk performance
102881 --
102882 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
102883 p_header_num => 0); -- 4262811
102884 --
102885 -- set accounting line options
102886 --
102887 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
102888 p_natural_side_code => 'D'
102889 , p_gain_or_loss_flag => 'N'
102890 , p_gl_transfer_mode_code => 'S'
102891 , p_acct_entry_type_code => 'A'
102892 , p_switch_side_flag => 'Y'
102893 , p_merge_duplicate_code => 'N'
102894 );
102895 --
102896 l_acc_rev_natural_side_code := 'C'; -- 4262811
102897 --
102898 --
102899 -- set accounting line type info
102900 --
102901 xla_ae_lines_pkg.SetAcctLineType
102902 (p_component_type => l_component_type
102903 ,p_event_type_code => l_event_type_code
102904 ,p_line_definition_owner_code => l_line_definition_owner_code
102905 ,p_line_definition_code => l_line_definition_code
102906 ,p_accounting_line_code => l_component_code
102907 ,p_accounting_line_type_code => l_component_type_code
102908 ,p_accounting_line_appl_id => l_component_appl_id
102909 ,p_amb_context_code => l_amb_context_code
102910 ,p_entity_code => l_entity_code
102911 ,p_event_class_code => l_event_class_code);
102912 --
102913 -- set accounting class
102914 --
102915 xla_ae_lines_pkg.SetAcctClass(
102916 p_accounting_class_code => 'OFFSET'
102917 , p_ae_header_id => l_ae_header_id
102918 );
102919
102920 --
102921 -- set rounding class
102922 --
102923 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
102924 'OFFSET';
102925
102926 --
102927 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
102928 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
102929 --
102930 -- bulk performance
102931 --
102932 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
102933
102934 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
102935 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
102936
102937 -- 4955764
102938 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
102939 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
102940
102941 -- 4458381 Public Sector Enh
102942
102943 --
102944 -- set accounting attributes for the line type
102945 --
102946 l_entered_amt_idx := 3;
102947 l_accted_amt_idx := 8;
102948 l_bflow_applied_to_amt_idx := NULL; -- 5132302
102949 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
102950 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
102951 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
102952 l_rec_acct_attrs.array_char_value(2) := p_source_12;
102953 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
102954 l_rec_acct_attrs.array_num_value(3) := p_source_18;
102955 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
102956 l_rec_acct_attrs.array_char_value(4) := p_source_15;
102957 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
102958 l_rec_acct_attrs.array_date_value(5) := p_source_19;
102959 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
102960 l_rec_acct_attrs.array_num_value(6) := p_source_20;
102961 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
102962 l_rec_acct_attrs.array_char_value(7) := p_source_21;
102963 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
102964 l_rec_acct_attrs.array_num_value(8) := p_source_22;
102965
102966 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
102967 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
102968
102969 ---------------------------------------------------------------------------------------------------------------
102970 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
102971 ---------------------------------------------------------------------------------------------------------------
102972 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
102973
102974 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
102975 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
102976
102977 IF xla_accounting_cache_pkg.GetValueChar
102978 (p_source_code => 'LEDGER_CATEGORY_CODE'
102979 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
102980 AND l_bflow_method_code = 'PRIOR_ENTRY'
102981 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
102982 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
102983 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
102984 )
102985 THEN
102986 xla_ae_lines_pkg.BflowUpgEntry
102987 (p_business_method_code => l_bflow_method_code
102988 ,p_business_class_code => l_bflow_class_code
102989 ,p_balance_type => l_balance_type_code);
102990 ELSE
102991 NULL;
102992 -- No business flow processing for business flow method of NONE.
102993 END IF;
102994
102995 --
102996 -- call analytical criteria
102997 --
102998
102999 --
103000 -- call description
103001 --
103002 -- No description or it is inherited.
103003 --
103004 -- call ADRs
103005 -- Bug 4922099
103006 --
103007 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
103008 (NVL(l_actual_upg_option, 'N') = 'O') OR
103009 (NVL(l_enc_upg_option, 'N') = 'O')
103010 )
103011 THEN
103012 NULL;
103013 --
103014 --
103015
103016 l_ccid := AcctDerRule_4(
103017 p_application_id => p_application_id
103018 , p_ae_header_id => l_ae_header_id
103019 , p_source_4 => p_source_4
103020 , x_transaction_coa_id => l_adr_transaction_coa_id
103021 , x_accounting_coa_id => l_adr_accounting_coa_id
103022 , x_value_type_code => l_adr_value_type_code
103023 , p_side => 'NA'
103024 );
103025
103026 xla_ae_lines_pkg.set_ccid(
103027 p_code_combination_id => l_ccid
103028 , p_value_type_code => l_adr_value_type_code
103029 , p_transaction_coa_id => l_adr_transaction_coa_id
103030 , p_accounting_coa_id => l_adr_accounting_coa_id
103031 , p_adr_code => 'CST_DEFAULT'
103032 , p_adr_type_code => 'S'
103033 , p_component_type => l_component_type
103034 , p_component_code => l_component_code
103035 , p_component_type_code => l_component_type_code
103036 , p_component_appl_id => l_component_appl_id
103037 , p_amb_context_code => l_amb_context_code
103038 , p_side => 'NA'
103039 );
103040
103041
103042 --
103043 --
103044 END IF;
103045 --
103046 -- Bug 4922099
103047 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
103048 (NVL(l_enc_upg_option, 'N') = 'O')
103049 ) AND
103050 (l_bflow_method_code = 'PRIOR_ENTRY')
103051 )
103052 THEN
103053 IF
103054 --
103055 1 = 2
103056 --
103057 THEN
103058 xla_accounting_err_pkg.build_message
103059 (p_appli_s_name => 'XLA'
103060 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
103061 ,p_token_1 => 'LINE_NUMBER'
103062 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
103063 ,p_token_2 => 'LINE_TYPE_NAME'
103064 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
103065 l_component_type
103066 ,l_component_code
103067 ,l_component_type_code
103068 ,l_component_appl_id
103069 ,l_amb_context_code
103070 ,l_entity_code
103071 ,l_event_class_code
103072 )
103073 ,p_token_3 => 'OWNER'
103074 ,p_value_3 => xla_lookups_pkg.get_meaning(
103075 p_lookup_type => 'XLA_OWNER_TYPE'
103076 ,p_lookup_code => l_component_type_code
103077 )
103078 ,p_token_4 => 'PRODUCT_NAME'
103079 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
103080 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
103081 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
103082 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
103083 ,p_ae_header_id => NULL
103084 );
103085
103086 IF (C_LEVEL_ERROR>= g_log_level) THEN
103087 trace
103088 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
103089 ,p_level => C_LEVEL_ERROR
103090 ,p_module => l_log_module);
103091 END IF;
103092 END IF;
103093 END IF;
103094 --
103095 --
103096 ------------------------------------------------------------------------------------------------
103097 -- 4219869 Business Flow
103098 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
103099 -- Prior Entry. Currently, the following code is always generated.
103100 ------------------------------------------------------------------------------------------------
103101 XLA_AE_LINES_PKG.ValidateCurrentLine;
103102
103103 ------------------------------------------------------------------------------------
103104 -- 4219869 Business Flow
103105 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
103106 ------------------------------------------------------------------------------------
103107 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
103108
103109 ----------------------------------------------------------------------------------
103110 -- 4219869 Business Flow
103111 -- Update journal entry status -- Need to generate this within IF <condition>
103112 ----------------------------------------------------------------------------------
103113 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
103114 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
103115 ,p_balance_type_code => l_balance_type_code
103116 );
103117
103118 -------------------------------------------------------------------------------------------
103119 -- 4262811 - Generate the Accrual Reversal lines
103120 -------------------------------------------------------------------------------------------
103121 BEGIN
103122 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
103123 (g_array_event(p_event_id).array_value_num('header_index'));
103124 IF l_acc_rev_flag IS NULL THEN
103125 l_acc_rev_flag := 'N';
103126 END IF;
103127 EXCEPTION
103128 WHEN OTHERS THEN
103129 l_acc_rev_flag := 'N';
103130 END;
103131 --
103132 IF (l_acc_rev_flag = 'Y') THEN
103133
103134 -- 4645092 ------------------------------------------------------------------------------
103135 -- To allow MPA report to determine if it should generate report process
103136 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
103137 ------------------------------------------------------------------------------------------
103138
103139 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
103140 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
103141 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
103142 -- call ADRs
103143 -- Bug 4922099
103144 --
103145 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
103146 (NVL(l_actual_upg_option, 'N') = 'O') OR
103147 (NVL(l_enc_upg_option, 'N') = 'O')
103148 )
103149 THEN
103150 NULL;
103151 --
103152 --
103153
103154 l_ccid := AcctDerRule_4(
103155 p_application_id => p_application_id
103156 , p_ae_header_id => l_ae_header_id
103157 , p_source_4 => p_source_4
103158 , x_transaction_coa_id => l_adr_transaction_coa_id
103159 , x_accounting_coa_id => l_adr_accounting_coa_id
103160 , x_value_type_code => l_adr_value_type_code
103161 , p_side => 'NA'
103162 );
103163
103164 xla_ae_lines_pkg.set_ccid(
103165 p_code_combination_id => l_ccid
103166 , p_value_type_code => l_adr_value_type_code
103167 , p_transaction_coa_id => l_adr_transaction_coa_id
103168 , p_accounting_coa_id => l_adr_accounting_coa_id
103169 , p_adr_code => 'CST_DEFAULT'
103170 , p_adr_type_code => 'S'
103171 , p_component_type => l_component_type
103172 , p_component_code => l_component_code
103173 , p_component_type_code => l_component_type_code
103174 , p_component_appl_id => l_component_appl_id
103175 , p_amb_context_code => l_amb_context_code
103176 , p_side => 'NA'
103177 );
103178
103179
103180 --
103181 --
103182 END IF;
103183
103184 --
103185 -- Update the line information that should be overwritten
103186 --
103187 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
103188 p_header_num => 1);
103189 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
103190
103191 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
103192
103193 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
103194 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
103195 END IF;
103196
103197 --
103198 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
103199 --
103200 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
103201 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
103202 ELSE
103203 ---------------------------------------------------------------------------------------------------
103204 -- 4262811a Switch Sign
103205 ---------------------------------------------------------------------------------------------------
103206 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
103207 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
103208 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
103209 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
103210 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
103211 -- 5132302
103212 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
103213 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
103214
103215 END IF;
103216
103217 -- 4955764
103218 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
103219 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
103220
103221
103222 XLA_AE_LINES_PKG.ValidateCurrentLine;
103223 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
103224
103225 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
103226 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
103227 ,p_balance_type_code => l_balance_type_code);
103228
103229 END IF;
103230
103231 -----------------------------------------------------------------------------------------
103232 -- 4262811 Multiperiod Accounting
103233 -----------------------------------------------------------------------------------------
103234 -- No MPA option is assigned.
103235
103236
103237 END IF;
103238 END IF;
103239 --
103240
103241 --
103242 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
103243 trace
103244 (p_msg => 'END of AcctLineType_187'
103245 ,p_level => C_LEVEL_PROCEDURE
103246 ,p_module => l_log_module);
103247 END IF;
103248 --
103249 EXCEPTION
103250 WHEN xla_exceptions_pkg.application_exception THEN
103251 RAISE;
103252 WHEN OTHERS THEN
103253 xla_exceptions_pkg.raise_message
103254 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_187');
103255 END AcctLineType_187;
103256 --
103257
103258 ---------------------------------------
103259 --
103260 -- PRIVATE FUNCTION
103261 -- AcctLineType_188
103262 --
103263 ---------------------------------------
103264 PROCEDURE AcctLineType_188 (
103265 p_application_id IN NUMBER
103266 ,p_event_id IN NUMBER
103267 ,p_calculate_acctd_flag IN VARCHAR2
103268 ,p_calculate_g_l_flag IN VARCHAR2
103269 ,p_actual_flag IN OUT VARCHAR2
103270 ,p_balance_type_code OUT VARCHAR2
103271 ,p_gain_or_loss_ref OUT VARCHAR2
103272
103273 --Cost Management Default Account
103274 , p_source_4 IN NUMBER
103275 --DISTRIBUTION_IDENTIFIER
103276 , p_source_11 IN NUMBER
103277 --Distribution Type
103278 , p_source_12 IN VARCHAR2
103279 , p_source_12_meaning IN VARCHAR2
103280 --Entered Currency Code
103281 , p_source_15 IN VARCHAR2
103282 --Entered Amount
103283 , p_source_18 IN NUMBER
103284 --Currency Conversion Date
103285 , p_source_19 IN DATE
103286 --Currency Conversion Rate
103287 , p_source_20 IN NUMBER
103288 --Accounted Amount
103289 , p_source_22 IN NUMBER
103290 --Accounting Line Type
103291 , p_source_24 IN NUMBER
103292 )
103293 IS
103294
103295 l_component_type VARCHAR2(80);
103296 l_component_code VARCHAR2(30);
103297 l_component_type_code VARCHAR2(1);
103298 l_component_appl_id INTEGER;
103299 l_amb_context_code VARCHAR2(30);
103300 l_entity_code VARCHAR2(30);
103301 l_event_class_code VARCHAR2(30);
103302 l_ae_header_id NUMBER;
103303 l_event_type_code VARCHAR2(30);
103304 l_line_definition_code VARCHAR2(30);
103305 l_line_definition_owner_code VARCHAR2(1);
103306 --
103307 -- adr variables
103308 l_segment VARCHAR2(30);
103309 l_ccid NUMBER;
103310 l_adr_transaction_coa_id NUMBER;
103311 l_adr_accounting_coa_id NUMBER;
103312 l_adr_flexfield_segment_code VARCHAR2(30);
103313 l_adr_flex_value_set_id NUMBER;
103314 l_adr_value_type_code VARCHAR2(30);
103315 l_adr_value_combination_id NUMBER;
103316 l_adr_value_segment_code VARCHAR2(30);
103317
103318 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
103319 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
103320 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
103321 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
103322
103323 -- 4262811 Variables ------------------------------------------------------------------------------------------
103324 l_entered_amt_idx NUMBER;
103325 l_accted_amt_idx NUMBER;
103326 l_acc_rev_flag VARCHAR2(1);
103327 l_accrual_line_num NUMBER;
103328 l_tmp_amt NUMBER;
103329 l_acc_rev_natural_side_code VARCHAR2(1);
103330
103331 l_num_entries NUMBER;
103332 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
103333 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
103334 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
103335 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
103336 l_recog_line_1 NUMBER;
103337 l_recog_line_2 NUMBER;
103338
103339 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
103340 l_bflow_applied_to_amt NUMBER; -- 5132302
103341 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
103342
103343 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
103344
103345 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
103346 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
103347
103348 ---------------------------------------------------------------------------------------------------------------
103349
103350
103351 --
103352 -- bulk performance
103353 --
103354 l_balance_type_code VARCHAR2(1);
103355 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
103356 l_log_module VARCHAR2(240);
103357
103358 --
103359 -- Upgrade strategy
103360 --
103361 l_actual_upg_option VARCHAR2(1);
103362 l_enc_upg_option VARCHAR2(1);
103363
103364 --
103365 BEGIN
103366 --
103367 IF g_log_enabled THEN
103368 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_188';
103369 END IF;
103370 --
103371 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
103372
103373 trace
103374 (p_msg => 'BEGIN of AcctLineType_188'
103375 ,p_level => C_LEVEL_PROCEDURE
103376 ,p_module => l_log_module);
103377
103378 END IF;
103379 --
103380 l_component_type := 'AMB_JLT';
103381 l_component_code := 'OFFSET';
103382 l_component_type_code := 'S';
103383 l_component_appl_id := 707;
103384 l_amb_context_code := 'DEFAULT';
103385 l_entity_code := 'WIP_ACCOUNTING_EVENTS';
103386 l_event_class_code := 'OSP';
103387 l_event_type_code := 'OSP_ALL';
103388 l_line_definition_owner_code := 'S';
103389 l_line_definition_code := 'OUTSIDE_PROCESSING';
103390 --
103391 l_balance_type_code := 'A';
103392 l_segment := NULL;
103393 l_ccid := NULL;
103394 l_adr_transaction_coa_id := NULL;
103395 l_adr_accounting_coa_id := NULL;
103396 l_adr_flexfield_segment_code := NULL;
103397 l_adr_flex_value_set_id := NULL;
103398 l_adr_value_type_code := NULL;
103399 l_adr_value_combination_id := NULL;
103400 l_adr_value_segment_code := NULL;
103401
103402 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
103403 l_bflow_class_code := ''; -- 4219869 Business Flow
103404 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
103405 l_budgetary_control_flag := 'N';
103406
103407 l_bflow_applied_to_amt_idx := NULL; -- 5132302
103408 l_bflow_applied_to_amt := NULL; -- 5132302
103409 l_entered_amt_idx := NULL; -- 4262811
103410 l_accted_amt_idx := NULL; -- 4262811
103411 l_acc_rev_flag := NULL; -- 4262811
103412 l_accrual_line_num := NULL; -- 4262811
103413 l_tmp_amt := NULL; -- 4262811
103414 --
103415
103416 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
103417 l_balance_type_code <> 'B' THEN
103418 IF NVL(p_source_24,9E125) = 2
103419 THEN
103420
103421 --
103422 XLA_AE_LINES_PKG.SetNewLine;
103423
103424 p_balance_type_code := l_balance_type_code;
103425 -- set the flag so later we will know whether the gain loss line needs to be created
103426
103427 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
103428 p_actual_flag :='A';
103429 END IF;
103430
103431 --
103432 -- bulk performance
103433 --
103434 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
103435 p_header_num => 0); -- 4262811
103436 --
103437 -- set accounting line options
103438 --
103439 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
103440 p_natural_side_code => 'D'
103441 , p_gain_or_loss_flag => 'N'
103442 , p_gl_transfer_mode_code => 'S'
103443 , p_acct_entry_type_code => 'A'
103444 , p_switch_side_flag => 'Y'
103445 , p_merge_duplicate_code => 'N'
103446 );
103447 --
103448 l_acc_rev_natural_side_code := 'C'; -- 4262811
103449 --
103450 --
103451 -- set accounting line type info
103452 --
103453 xla_ae_lines_pkg.SetAcctLineType
103454 (p_component_type => l_component_type
103455 ,p_event_type_code => l_event_type_code
103456 ,p_line_definition_owner_code => l_line_definition_owner_code
103457 ,p_line_definition_code => l_line_definition_code
103458 ,p_accounting_line_code => l_component_code
103459 ,p_accounting_line_type_code => l_component_type_code
103460 ,p_accounting_line_appl_id => l_component_appl_id
103461 ,p_amb_context_code => l_amb_context_code
103462 ,p_entity_code => l_entity_code
103463 ,p_event_class_code => l_event_class_code);
103464 --
103465 -- set accounting class
103466 --
103467 xla_ae_lines_pkg.SetAcctClass(
103468 p_accounting_class_code => 'OFFSET'
103469 , p_ae_header_id => l_ae_header_id
103470 );
103471
103472 --
103473 -- set rounding class
103474 --
103475 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
103476 'OFFSET';
103477
103478 --
103479 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
103480 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
103481 --
103482 -- bulk performance
103483 --
103484 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
103485
103486 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
103487 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
103488
103489 -- 4955764
103490 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
103491 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
103492
103493 -- 4458381 Public Sector Enh
103494
103495 --
103496 -- set accounting attributes for the line type
103497 --
103498 l_entered_amt_idx := 3;
103499 l_accted_amt_idx := 8;
103500 l_bflow_applied_to_amt_idx := NULL; -- 5132302
103501 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
103502 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
103503 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
103504 l_rec_acct_attrs.array_char_value(2) := p_source_12;
103505 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
103506 l_rec_acct_attrs.array_num_value(3) := p_source_18;
103507 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
103508 l_rec_acct_attrs.array_char_value(4) := p_source_15;
103509 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
103510 l_rec_acct_attrs.array_date_value(5) := p_source_19;
103511 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
103512 l_rec_acct_attrs.array_num_value(6) := p_source_20;
103513 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
103514 l_rec_acct_attrs.array_num_value(7) := to_char(p_source_20);
103515 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
103516 l_rec_acct_attrs.array_num_value(8) := p_source_22;
103517
103518 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
103519 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
103520
103521 ---------------------------------------------------------------------------------------------------------------
103522 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
103523 ---------------------------------------------------------------------------------------------------------------
103524 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
103525
103526 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
103527 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
103528
103529 IF xla_accounting_cache_pkg.GetValueChar
103530 (p_source_code => 'LEDGER_CATEGORY_CODE'
103531 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
103532 AND l_bflow_method_code = 'PRIOR_ENTRY'
103533 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
103534 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
103535 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
103536 )
103537 THEN
103538 xla_ae_lines_pkg.BflowUpgEntry
103539 (p_business_method_code => l_bflow_method_code
103540 ,p_business_class_code => l_bflow_class_code
103541 ,p_balance_type => l_balance_type_code);
103542 ELSE
103543 NULL;
103544 -- No business flow processing for business flow method of NONE.
103545 END IF;
103546
103547 --
103548 -- call analytical criteria
103549 --
103550
103551 --
103552 -- call description
103553 --
103554 -- No description or it is inherited.
103555 --
103556 -- call ADRs
103557 -- Bug 4922099
103558 --
103559 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
103560 (NVL(l_actual_upg_option, 'N') = 'O') OR
103561 (NVL(l_enc_upg_option, 'N') = 'O')
103562 )
103563 THEN
103564 NULL;
103565 --
103566 --
103567
103568 l_ccid := AcctDerRule_4(
103569 p_application_id => p_application_id
103570 , p_ae_header_id => l_ae_header_id
103571 , p_source_4 => p_source_4
103572 , x_transaction_coa_id => l_adr_transaction_coa_id
103573 , x_accounting_coa_id => l_adr_accounting_coa_id
103574 , x_value_type_code => l_adr_value_type_code
103575 , p_side => 'NA'
103576 );
103577
103578 xla_ae_lines_pkg.set_ccid(
103579 p_code_combination_id => l_ccid
103580 , p_value_type_code => l_adr_value_type_code
103581 , p_transaction_coa_id => l_adr_transaction_coa_id
103582 , p_accounting_coa_id => l_adr_accounting_coa_id
103583 , p_adr_code => 'CST_DEFAULT'
103584 , p_adr_type_code => 'S'
103585 , p_component_type => l_component_type
103586 , p_component_code => l_component_code
103587 , p_component_type_code => l_component_type_code
103588 , p_component_appl_id => l_component_appl_id
103589 , p_amb_context_code => l_amb_context_code
103590 , p_side => 'NA'
103591 );
103592
103593
103594 --
103595 --
103596 END IF;
103597 --
103598 -- Bug 4922099
103599 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
103600 (NVL(l_enc_upg_option, 'N') = 'O')
103601 ) AND
103602 (l_bflow_method_code = 'PRIOR_ENTRY')
103603 )
103604 THEN
103605 IF
103606 --
103607 1 = 2
103608 --
103609 THEN
103610 xla_accounting_err_pkg.build_message
103611 (p_appli_s_name => 'XLA'
103612 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
103613 ,p_token_1 => 'LINE_NUMBER'
103614 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
103615 ,p_token_2 => 'LINE_TYPE_NAME'
103616 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
103617 l_component_type
103618 ,l_component_code
103619 ,l_component_type_code
103620 ,l_component_appl_id
103621 ,l_amb_context_code
103622 ,l_entity_code
103623 ,l_event_class_code
103624 )
103625 ,p_token_3 => 'OWNER'
103626 ,p_value_3 => xla_lookups_pkg.get_meaning(
103627 p_lookup_type => 'XLA_OWNER_TYPE'
103628 ,p_lookup_code => l_component_type_code
103629 )
103630 ,p_token_4 => 'PRODUCT_NAME'
103631 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
103632 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
103633 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
103634 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
103635 ,p_ae_header_id => NULL
103636 );
103637
103638 IF (C_LEVEL_ERROR>= g_log_level) THEN
103639 trace
103640 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
103641 ,p_level => C_LEVEL_ERROR
103642 ,p_module => l_log_module);
103643 END IF;
103644 END IF;
103645 END IF;
103646 --
103647 --
103648 ------------------------------------------------------------------------------------------------
103649 -- 4219869 Business Flow
103650 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
103651 -- Prior Entry. Currently, the following code is always generated.
103652 ------------------------------------------------------------------------------------------------
103653 XLA_AE_LINES_PKG.ValidateCurrentLine;
103654
103655 ------------------------------------------------------------------------------------
103656 -- 4219869 Business Flow
103657 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
103658 ------------------------------------------------------------------------------------
103659 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
103660
103661 ----------------------------------------------------------------------------------
103662 -- 4219869 Business Flow
103663 -- Update journal entry status -- Need to generate this within IF <condition>
103664 ----------------------------------------------------------------------------------
103665 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
103666 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
103667 ,p_balance_type_code => l_balance_type_code
103668 );
103669
103670 -------------------------------------------------------------------------------------------
103671 -- 4262811 - Generate the Accrual Reversal lines
103672 -------------------------------------------------------------------------------------------
103673 BEGIN
103674 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
103675 (g_array_event(p_event_id).array_value_num('header_index'));
103676 IF l_acc_rev_flag IS NULL THEN
103677 l_acc_rev_flag := 'N';
103678 END IF;
103679 EXCEPTION
103680 WHEN OTHERS THEN
103681 l_acc_rev_flag := 'N';
103682 END;
103683 --
103684 IF (l_acc_rev_flag = 'Y') THEN
103685
103686 -- 4645092 ------------------------------------------------------------------------------
103687 -- To allow MPA report to determine if it should generate report process
103688 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
103689 ------------------------------------------------------------------------------------------
103690
103691 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
103692 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
103693 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
103694 -- call ADRs
103695 -- Bug 4922099
103696 --
103697 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
103698 (NVL(l_actual_upg_option, 'N') = 'O') OR
103699 (NVL(l_enc_upg_option, 'N') = 'O')
103700 )
103701 THEN
103702 NULL;
103703 --
103704 --
103705
103706 l_ccid := AcctDerRule_4(
103707 p_application_id => p_application_id
103708 , p_ae_header_id => l_ae_header_id
103709 , p_source_4 => p_source_4
103710 , x_transaction_coa_id => l_adr_transaction_coa_id
103711 , x_accounting_coa_id => l_adr_accounting_coa_id
103712 , x_value_type_code => l_adr_value_type_code
103713 , p_side => 'NA'
103714 );
103715
103716 xla_ae_lines_pkg.set_ccid(
103717 p_code_combination_id => l_ccid
103718 , p_value_type_code => l_adr_value_type_code
103719 , p_transaction_coa_id => l_adr_transaction_coa_id
103720 , p_accounting_coa_id => l_adr_accounting_coa_id
103721 , p_adr_code => 'CST_DEFAULT'
103722 , p_adr_type_code => 'S'
103723 , p_component_type => l_component_type
103724 , p_component_code => l_component_code
103725 , p_component_type_code => l_component_type_code
103726 , p_component_appl_id => l_component_appl_id
103727 , p_amb_context_code => l_amb_context_code
103728 , p_side => 'NA'
103729 );
103730
103731
103732 --
103733 --
103734 END IF;
103735
103736 --
103737 -- Update the line information that should be overwritten
103738 --
103739 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
103740 p_header_num => 1);
103741 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
103742
103743 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
103744
103745 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
103746 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
103747 END IF;
103748
103749 --
103750 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
103751 --
103752 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
103753 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
103754 ELSE
103755 ---------------------------------------------------------------------------------------------------
103756 -- 4262811a Switch Sign
103757 ---------------------------------------------------------------------------------------------------
103758 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
103759 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
103760 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
103761 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
103762 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
103763 -- 5132302
103764 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
103765 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
103766
103767 END IF;
103768
103769 -- 4955764
103770 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
103771 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
103772
103773
103774 XLA_AE_LINES_PKG.ValidateCurrentLine;
103775 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
103776
103777 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
103778 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
103779 ,p_balance_type_code => l_balance_type_code);
103780
103781 END IF;
103782
103783 -----------------------------------------------------------------------------------------
103784 -- 4262811 Multiperiod Accounting
103785 -----------------------------------------------------------------------------------------
103786 -- No MPA option is assigned.
103787
103788
103789 END IF;
103790 END IF;
103791 --
103792
103793 --
103794 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
103795 trace
103796 (p_msg => 'END of AcctLineType_188'
103797 ,p_level => C_LEVEL_PROCEDURE
103798 ,p_module => l_log_module);
103799 END IF;
103800 --
103801 EXCEPTION
103802 WHEN xla_exceptions_pkg.application_exception THEN
103803 RAISE;
103804 WHEN OTHERS THEN
103805 xla_exceptions_pkg.raise_message
103806 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_188');
103807 END AcctLineType_188;
103808 --
103809
103810 ---------------------------------------
103811 --
103812 -- PRIVATE FUNCTION
103813 -- AcctLineType_189
103814 --
103815 ---------------------------------------
103816 PROCEDURE AcctLineType_189 (
103817 p_application_id IN NUMBER
103818 ,p_event_id IN NUMBER
103819 ,p_calculate_acctd_flag IN VARCHAR2
103820 ,p_calculate_g_l_flag IN VARCHAR2
103821 ,p_actual_flag IN OUT VARCHAR2
103822 ,p_balance_type_code OUT VARCHAR2
103823 ,p_gain_or_loss_ref OUT VARCHAR2
103824
103825 --Cost Management Default Account
103826 , p_source_4 IN NUMBER
103827 --DISTRIBUTION_IDENTIFIER
103828 , p_source_11 IN NUMBER
103829 --Distribution Type
103830 , p_source_12 IN VARCHAR2
103831 , p_source_12_meaning IN VARCHAR2
103832 --Entered Currency Code
103833 , p_source_15 IN VARCHAR2
103834 --Entered Amount
103835 , p_source_18 IN NUMBER
103836 --Currency Conversion Date
103837 , p_source_19 IN DATE
103838 --Currency Conversion Rate
103839 , p_source_20 IN NUMBER
103840 --Currency Conversion Type
103841 , p_source_21 IN VARCHAR2
103842 --Accounted Amount
103843 , p_source_22 IN NUMBER
103844 --Accounting Line Type
103845 , p_source_24 IN NUMBER
103846 )
103847 IS
103848
103849 l_component_type VARCHAR2(80);
103850 l_component_code VARCHAR2(30);
103851 l_component_type_code VARCHAR2(1);
103852 l_component_appl_id INTEGER;
103853 l_amb_context_code VARCHAR2(30);
103854 l_entity_code VARCHAR2(30);
103855 l_event_class_code VARCHAR2(30);
103856 l_ae_header_id NUMBER;
103857 l_event_type_code VARCHAR2(30);
103858 l_line_definition_code VARCHAR2(30);
103859 l_line_definition_owner_code VARCHAR2(1);
103860 --
103861 -- adr variables
103862 l_segment VARCHAR2(30);
103863 l_ccid NUMBER;
103864 l_adr_transaction_coa_id NUMBER;
103865 l_adr_accounting_coa_id NUMBER;
103866 l_adr_flexfield_segment_code VARCHAR2(30);
103867 l_adr_flex_value_set_id NUMBER;
103868 l_adr_value_type_code VARCHAR2(30);
103869 l_adr_value_combination_id NUMBER;
103870 l_adr_value_segment_code VARCHAR2(30);
103871
103872 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
103873 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
103874 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
103875 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
103876
103877 -- 4262811 Variables ------------------------------------------------------------------------------------------
103878 l_entered_amt_idx NUMBER;
103879 l_accted_amt_idx NUMBER;
103880 l_acc_rev_flag VARCHAR2(1);
103881 l_accrual_line_num NUMBER;
103882 l_tmp_amt NUMBER;
103883 l_acc_rev_natural_side_code VARCHAR2(1);
103884
103885 l_num_entries NUMBER;
103886 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
103887 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
103888 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
103889 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
103890 l_recog_line_1 NUMBER;
103891 l_recog_line_2 NUMBER;
103892
103893 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
103894 l_bflow_applied_to_amt NUMBER; -- 5132302
103895 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
103896
103897 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
103898
103899 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
103900 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
103901
103902 ---------------------------------------------------------------------------------------------------------------
103903
103904
103905 --
103906 -- bulk performance
103907 --
103908 l_balance_type_code VARCHAR2(1);
103909 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
103910 l_log_module VARCHAR2(240);
103911
103912 --
103913 -- Upgrade strategy
103914 --
103915 l_actual_upg_option VARCHAR2(1);
103916 l_enc_upg_option VARCHAR2(1);
103917
103918 --
103919 BEGIN
103920 --
103921 IF g_log_enabled THEN
103922 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_189';
103923 END IF;
103924 --
103925 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
103926
103927 trace
103928 (p_msg => 'BEGIN of AcctLineType_189'
103929 ,p_level => C_LEVEL_PROCEDURE
103930 ,p_module => l_log_module);
103931
103932 END IF;
103933 --
103934 l_component_type := 'AMB_JLT';
103935 l_component_code := 'OFFSET';
103936 l_component_type_code := 'S';
103937 l_component_appl_id := 707;
103938 l_amb_context_code := 'DEFAULT';
103939 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
103940 l_event_class_code := 'FOB_RCPT_SENDER_RCPT';
103941 l_event_type_code := 'FOB_RCPT_SENDER_RCPT_ALL';
103942 l_line_definition_owner_code := 'S';
103943 l_line_definition_code := 'FOB_RCPT_SENDER_RCPT';
103944 --
103945 l_balance_type_code := 'A';
103946 l_segment := NULL;
103947 l_ccid := NULL;
103948 l_adr_transaction_coa_id := NULL;
103949 l_adr_accounting_coa_id := NULL;
103950 l_adr_flexfield_segment_code := NULL;
103951 l_adr_flex_value_set_id := NULL;
103952 l_adr_value_type_code := NULL;
103953 l_adr_value_combination_id := NULL;
103954 l_adr_value_segment_code := NULL;
103955
103956 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
103957 l_bflow_class_code := ''; -- 4219869 Business Flow
103958 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
103959 l_budgetary_control_flag := 'N';
103960
103961 l_bflow_applied_to_amt_idx := NULL; -- 5132302
103962 l_bflow_applied_to_amt := NULL; -- 5132302
103963 l_entered_amt_idx := NULL; -- 4262811
103964 l_accted_amt_idx := NULL; -- 4262811
103965 l_acc_rev_flag := NULL; -- 4262811
103966 l_accrual_line_num := NULL; -- 4262811
103967 l_tmp_amt := NULL; -- 4262811
103968 --
103969
103970 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
103971 l_balance_type_code <> 'B' THEN
103972 IF NVL(p_source_24,9E125) = 2 AND
103973 p_source_22 <= 0
103974 THEN
103975
103976 --
103977 XLA_AE_LINES_PKG.SetNewLine;
103978
103979 p_balance_type_code := l_balance_type_code;
103980 -- set the flag so later we will know whether the gain loss line needs to be created
103981
103982 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
103983 p_actual_flag :='A';
103984 END IF;
103985
103986 --
103987 -- bulk performance
103988 --
103989 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
103990 p_header_num => 0); -- 4262811
103991 --
103992 -- set accounting line options
103993 --
103994 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
103995 p_natural_side_code => 'D'
103996 , p_gain_or_loss_flag => 'N'
103997 , p_gl_transfer_mode_code => 'S'
103998 , p_acct_entry_type_code => 'A'
103999 , p_switch_side_flag => 'Y'
104000 , p_merge_duplicate_code => 'N'
104001 );
104002 --
104003 l_acc_rev_natural_side_code := 'C'; -- 4262811
104004 --
104005 --
104006 -- set accounting line type info
104007 --
104008 xla_ae_lines_pkg.SetAcctLineType
104009 (p_component_type => l_component_type
104010 ,p_event_type_code => l_event_type_code
104011 ,p_line_definition_owner_code => l_line_definition_owner_code
104012 ,p_line_definition_code => l_line_definition_code
104013 ,p_accounting_line_code => l_component_code
104014 ,p_accounting_line_type_code => l_component_type_code
104015 ,p_accounting_line_appl_id => l_component_appl_id
104016 ,p_amb_context_code => l_amb_context_code
104017 ,p_entity_code => l_entity_code
104018 ,p_event_class_code => l_event_class_code);
104019 --
104020 -- set accounting class
104021 --
104022 xla_ae_lines_pkg.SetAcctClass(
104023 p_accounting_class_code => 'OFFSET'
104024 , p_ae_header_id => l_ae_header_id
104025 );
104026
104027 --
104028 -- set rounding class
104029 --
104030 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
104031 'OFFSET';
104032
104033 --
104034 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
104035 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
104036 --
104037 -- bulk performance
104038 --
104039 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
104040
104041 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
104042 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
104043
104044 -- 4955764
104045 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
104046 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
104047
104048 -- 4458381 Public Sector Enh
104049
104050 --
104051 -- set accounting attributes for the line type
104052 --
104053 l_entered_amt_idx := 3;
104054 l_accted_amt_idx := 8;
104055 l_bflow_applied_to_amt_idx := NULL; -- 5132302
104056 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
104057 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
104058 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
104059 l_rec_acct_attrs.array_char_value(2) := p_source_12;
104060 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
104061 l_rec_acct_attrs.array_num_value(3) := p_source_18;
104062 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
104063 l_rec_acct_attrs.array_char_value(4) := p_source_15;
104064 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
104065 l_rec_acct_attrs.array_date_value(5) := p_source_19;
104066 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
104067 l_rec_acct_attrs.array_num_value(6) := p_source_20;
104068 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
104069 l_rec_acct_attrs.array_char_value(7) := p_source_21;
104070 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
104071 l_rec_acct_attrs.array_num_value(8) := p_source_22;
104072
104073 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
104074 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
104075
104076 ---------------------------------------------------------------------------------------------------------------
104077 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
104078 ---------------------------------------------------------------------------------------------------------------
104079 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
104080
104081 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
104082 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
104083
104084 IF xla_accounting_cache_pkg.GetValueChar
104085 (p_source_code => 'LEDGER_CATEGORY_CODE'
104086 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
104087 AND l_bflow_method_code = 'PRIOR_ENTRY'
104088 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
104089 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
104090 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
104091 )
104092 THEN
104093 xla_ae_lines_pkg.BflowUpgEntry
104094 (p_business_method_code => l_bflow_method_code
104095 ,p_business_class_code => l_bflow_class_code
104096 ,p_balance_type => l_balance_type_code);
104097 ELSE
104098 NULL;
104099 -- No business flow processing for business flow method of NONE.
104100 END IF;
104101
104102 --
104103 -- call analytical criteria
104104 --
104105
104106 --
104107 -- call description
104108 --
104109 -- No description or it is inherited.
104110 --
104111 -- call ADRs
104112 -- Bug 4922099
104113 --
104114 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
104115 (NVL(l_actual_upg_option, 'N') = 'O') OR
104116 (NVL(l_enc_upg_option, 'N') = 'O')
104117 )
104118 THEN
104119 NULL;
104120 --
104121 --
104122
104123 l_ccid := AcctDerRule_4(
104124 p_application_id => p_application_id
104125 , p_ae_header_id => l_ae_header_id
104126 , p_source_4 => p_source_4
104127 , x_transaction_coa_id => l_adr_transaction_coa_id
104128 , x_accounting_coa_id => l_adr_accounting_coa_id
104129 , x_value_type_code => l_adr_value_type_code
104130 , p_side => 'NA'
104131 );
104132
104133 xla_ae_lines_pkg.set_ccid(
104134 p_code_combination_id => l_ccid
104135 , p_value_type_code => l_adr_value_type_code
104136 , p_transaction_coa_id => l_adr_transaction_coa_id
104137 , p_accounting_coa_id => l_adr_accounting_coa_id
104138 , p_adr_code => 'CST_DEFAULT'
104139 , p_adr_type_code => 'S'
104140 , p_component_type => l_component_type
104141 , p_component_code => l_component_code
104142 , p_component_type_code => l_component_type_code
104143 , p_component_appl_id => l_component_appl_id
104144 , p_amb_context_code => l_amb_context_code
104145 , p_side => 'NA'
104146 );
104147
104148
104149 --
104150 --
104151 END IF;
104152 --
104153 -- Bug 4922099
104154 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
104155 (NVL(l_enc_upg_option, 'N') = 'O')
104156 ) AND
104157 (l_bflow_method_code = 'PRIOR_ENTRY')
104158 )
104159 THEN
104160 IF
104161 --
104162 1 = 2
104163 --
104164 THEN
104165 xla_accounting_err_pkg.build_message
104166 (p_appli_s_name => 'XLA'
104167 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
104168 ,p_token_1 => 'LINE_NUMBER'
104169 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
104170 ,p_token_2 => 'LINE_TYPE_NAME'
104171 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
104172 l_component_type
104173 ,l_component_code
104174 ,l_component_type_code
104175 ,l_component_appl_id
104176 ,l_amb_context_code
104177 ,l_entity_code
104178 ,l_event_class_code
104179 )
104180 ,p_token_3 => 'OWNER'
104181 ,p_value_3 => xla_lookups_pkg.get_meaning(
104182 p_lookup_type => 'XLA_OWNER_TYPE'
104183 ,p_lookup_code => l_component_type_code
104184 )
104185 ,p_token_4 => 'PRODUCT_NAME'
104186 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
104187 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
104188 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
104189 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
104190 ,p_ae_header_id => NULL
104191 );
104192
104193 IF (C_LEVEL_ERROR>= g_log_level) THEN
104194 trace
104195 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
104196 ,p_level => C_LEVEL_ERROR
104197 ,p_module => l_log_module);
104198 END IF;
104199 END IF;
104200 END IF;
104201 --
104202 --
104203 ------------------------------------------------------------------------------------------------
104204 -- 4219869 Business Flow
104205 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
104206 -- Prior Entry. Currently, the following code is always generated.
104207 ------------------------------------------------------------------------------------------------
104208 XLA_AE_LINES_PKG.ValidateCurrentLine;
104209
104210 ------------------------------------------------------------------------------------
104211 -- 4219869 Business Flow
104212 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
104213 ------------------------------------------------------------------------------------
104214 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
104215
104216 ----------------------------------------------------------------------------------
104217 -- 4219869 Business Flow
104218 -- Update journal entry status -- Need to generate this within IF <condition>
104219 ----------------------------------------------------------------------------------
104220 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
104221 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
104222 ,p_balance_type_code => l_balance_type_code
104223 );
104224
104225 -------------------------------------------------------------------------------------------
104226 -- 4262811 - Generate the Accrual Reversal lines
104227 -------------------------------------------------------------------------------------------
104228 BEGIN
104229 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
104230 (g_array_event(p_event_id).array_value_num('header_index'));
104231 IF l_acc_rev_flag IS NULL THEN
104232 l_acc_rev_flag := 'N';
104233 END IF;
104234 EXCEPTION
104235 WHEN OTHERS THEN
104236 l_acc_rev_flag := 'N';
104237 END;
104238 --
104239 IF (l_acc_rev_flag = 'Y') THEN
104240
104241 -- 4645092 ------------------------------------------------------------------------------
104242 -- To allow MPA report to determine if it should generate report process
104243 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
104244 ------------------------------------------------------------------------------------------
104245
104246 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
104247 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
104248 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
104249 -- call ADRs
104250 -- Bug 4922099
104251 --
104252 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
104253 (NVL(l_actual_upg_option, 'N') = 'O') OR
104254 (NVL(l_enc_upg_option, 'N') = 'O')
104255 )
104256 THEN
104257 NULL;
104258 --
104259 --
104260
104261 l_ccid := AcctDerRule_4(
104262 p_application_id => p_application_id
104263 , p_ae_header_id => l_ae_header_id
104264 , p_source_4 => p_source_4
104265 , x_transaction_coa_id => l_adr_transaction_coa_id
104266 , x_accounting_coa_id => l_adr_accounting_coa_id
104267 , x_value_type_code => l_adr_value_type_code
104268 , p_side => 'NA'
104269 );
104270
104271 xla_ae_lines_pkg.set_ccid(
104272 p_code_combination_id => l_ccid
104273 , p_value_type_code => l_adr_value_type_code
104274 , p_transaction_coa_id => l_adr_transaction_coa_id
104275 , p_accounting_coa_id => l_adr_accounting_coa_id
104276 , p_adr_code => 'CST_DEFAULT'
104277 , p_adr_type_code => 'S'
104278 , p_component_type => l_component_type
104279 , p_component_code => l_component_code
104280 , p_component_type_code => l_component_type_code
104281 , p_component_appl_id => l_component_appl_id
104282 , p_amb_context_code => l_amb_context_code
104283 , p_side => 'NA'
104284 );
104285
104286
104287 --
104288 --
104289 END IF;
104290
104291 --
104292 -- Update the line information that should be overwritten
104293 --
104294 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
104295 p_header_num => 1);
104296 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
104297
104298 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
104299
104300 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
104301 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
104302 END IF;
104303
104304 --
104305 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
104306 --
104307 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
104308 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
104309 ELSE
104310 ---------------------------------------------------------------------------------------------------
104311 -- 4262811a Switch Sign
104312 ---------------------------------------------------------------------------------------------------
104313 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
104314 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
104315 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
104316 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
104317 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
104318 -- 5132302
104319 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
104320 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
104321
104322 END IF;
104323
104324 -- 4955764
104325 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
104326 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
104327
104328
104329 XLA_AE_LINES_PKG.ValidateCurrentLine;
104330 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
104331
104332 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
104333 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
104334 ,p_balance_type_code => l_balance_type_code);
104335
104336 END IF;
104337
104338 -----------------------------------------------------------------------------------------
104339 -- 4262811 Multiperiod Accounting
104340 -----------------------------------------------------------------------------------------
104341 -- No MPA option is assigned.
104342
104343
104344 END IF;
104345 END IF;
104346 --
104347
104348 --
104349 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
104350 trace
104351 (p_msg => 'END of AcctLineType_189'
104352 ,p_level => C_LEVEL_PROCEDURE
104353 ,p_module => l_log_module);
104354 END IF;
104355 --
104356 EXCEPTION
104357 WHEN xla_exceptions_pkg.application_exception THEN
104358 RAISE;
104359 WHEN OTHERS THEN
104360 xla_exceptions_pkg.raise_message
104361 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_189');
104362 END AcctLineType_189;
104363 --
104364
104365 ---------------------------------------
104366 --
104367 -- PRIVATE FUNCTION
104368 -- AcctLineType_190
104369 --
104370 ---------------------------------------
104371 PROCEDURE AcctLineType_190 (
104372 p_application_id IN NUMBER
104373 ,p_event_id IN NUMBER
104374 ,p_calculate_acctd_flag IN VARCHAR2
104375 ,p_calculate_g_l_flag IN VARCHAR2
104376 ,p_actual_flag IN OUT VARCHAR2
104377 ,p_balance_type_code OUT VARCHAR2
104378 ,p_gain_or_loss_ref OUT VARCHAR2
104379
104380 --Cost Management Default Account
104381 , p_source_4 IN NUMBER
104382 --DISTRIBUTION_IDENTIFIER
104383 , p_source_11 IN NUMBER
104384 --Distribution Type
104385 , p_source_12 IN VARCHAR2
104386 , p_source_12_meaning IN VARCHAR2
104387 --Entered Currency Code
104388 , p_source_15 IN VARCHAR2
104389 --Entered Amount
104390 , p_source_18 IN NUMBER
104391 --Currency Conversion Date
104392 , p_source_19 IN DATE
104393 --Currency Conversion Rate
104394 , p_source_20 IN NUMBER
104395 --Currency Conversion Type
104396 , p_source_21 IN VARCHAR2
104397 --Accounted Amount
104398 , p_source_22 IN NUMBER
104399 --Accounting Line Type
104400 , p_source_24 IN NUMBER
104401 )
104402 IS
104403
104404 l_component_type VARCHAR2(80);
104405 l_component_code VARCHAR2(30);
104406 l_component_type_code VARCHAR2(1);
104407 l_component_appl_id INTEGER;
104408 l_amb_context_code VARCHAR2(30);
104409 l_entity_code VARCHAR2(30);
104410 l_event_class_code VARCHAR2(30);
104411 l_ae_header_id NUMBER;
104412 l_event_type_code VARCHAR2(30);
104413 l_line_definition_code VARCHAR2(30);
104414 l_line_definition_owner_code VARCHAR2(1);
104415 --
104416 -- adr variables
104417 l_segment VARCHAR2(30);
104418 l_ccid NUMBER;
104419 l_adr_transaction_coa_id NUMBER;
104420 l_adr_accounting_coa_id NUMBER;
104421 l_adr_flexfield_segment_code VARCHAR2(30);
104422 l_adr_flex_value_set_id NUMBER;
104423 l_adr_value_type_code VARCHAR2(30);
104424 l_adr_value_combination_id NUMBER;
104425 l_adr_value_segment_code VARCHAR2(30);
104426
104427 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
104428 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
104429 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
104430 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
104431
104432 -- 4262811 Variables ------------------------------------------------------------------------------------------
104433 l_entered_amt_idx NUMBER;
104434 l_accted_amt_idx NUMBER;
104435 l_acc_rev_flag VARCHAR2(1);
104436 l_accrual_line_num NUMBER;
104437 l_tmp_amt NUMBER;
104438 l_acc_rev_natural_side_code VARCHAR2(1);
104439
104440 l_num_entries NUMBER;
104441 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
104442 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
104443 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
104444 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
104445 l_recog_line_1 NUMBER;
104446 l_recog_line_2 NUMBER;
104447
104448 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
104449 l_bflow_applied_to_amt NUMBER; -- 5132302
104450 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
104451
104452 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
104453
104454 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
104455 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
104456
104457 ---------------------------------------------------------------------------------------------------------------
104458
104459
104460 --
104461 -- bulk performance
104462 --
104463 l_balance_type_code VARCHAR2(1);
104464 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
104465 l_log_module VARCHAR2(240);
104466
104467 --
104468 -- Upgrade strategy
104469 --
104470 l_actual_upg_option VARCHAR2(1);
104471 l_enc_upg_option VARCHAR2(1);
104472
104473 --
104474 BEGIN
104475 --
104476 IF g_log_enabled THEN
104477 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_190';
104478 END IF;
104479 --
104480 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
104481
104482 trace
104483 (p_msg => 'BEGIN of AcctLineType_190'
104484 ,p_level => C_LEVEL_PROCEDURE
104485 ,p_module => l_log_module);
104486
104487 END IF;
104488 --
104489 l_component_type := 'AMB_JLT';
104490 l_component_code := 'OFFSET';
104491 l_component_type_code := 'S';
104492 l_component_appl_id := 707;
104493 l_amb_context_code := 'DEFAULT';
104494 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
104495 l_event_class_code := 'FOB_RCPT_SENDER_SHIP';
104496 l_event_type_code := 'FOB_RCPT_SENDER_SHIP_ALL';
104497 l_line_definition_owner_code := 'S';
104498 l_line_definition_code := 'FOB_RCPT_SEND_SHIP';
104499 --
104500 l_balance_type_code := 'A';
104501 l_segment := NULL;
104502 l_ccid := NULL;
104503 l_adr_transaction_coa_id := NULL;
104504 l_adr_accounting_coa_id := NULL;
104505 l_adr_flexfield_segment_code := NULL;
104506 l_adr_flex_value_set_id := NULL;
104507 l_adr_value_type_code := NULL;
104508 l_adr_value_combination_id := NULL;
104509 l_adr_value_segment_code := NULL;
104510
104511 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
104512 l_bflow_class_code := ''; -- 4219869 Business Flow
104513 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
104514 l_budgetary_control_flag := 'N';
104515
104516 l_bflow_applied_to_amt_idx := NULL; -- 5132302
104517 l_bflow_applied_to_amt := NULL; -- 5132302
104518 l_entered_amt_idx := NULL; -- 4262811
104519 l_accted_amt_idx := NULL; -- 4262811
104520 l_acc_rev_flag := NULL; -- 4262811
104521 l_accrual_line_num := NULL; -- 4262811
104522 l_tmp_amt := NULL; -- 4262811
104523 --
104524
104525 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
104526 l_balance_type_code <> 'B' THEN
104527 IF NVL(p_source_24,9E125) = 2
104528 THEN
104529
104530 --
104531 XLA_AE_LINES_PKG.SetNewLine;
104532
104533 p_balance_type_code := l_balance_type_code;
104534 -- set the flag so later we will know whether the gain loss line needs to be created
104535
104536 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
104537 p_actual_flag :='A';
104538 END IF;
104539
104540 --
104541 -- bulk performance
104542 --
104543 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
104544 p_header_num => 0); -- 4262811
104545 --
104546 -- set accounting line options
104547 --
104548 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
104549 p_natural_side_code => 'D'
104550 , p_gain_or_loss_flag => 'N'
104551 , p_gl_transfer_mode_code => 'S'
104552 , p_acct_entry_type_code => 'A'
104553 , p_switch_side_flag => 'Y'
104554 , p_merge_duplicate_code => 'N'
104555 );
104556 --
104557 l_acc_rev_natural_side_code := 'C'; -- 4262811
104558 --
104559 --
104560 -- set accounting line type info
104561 --
104562 xla_ae_lines_pkg.SetAcctLineType
104563 (p_component_type => l_component_type
104564 ,p_event_type_code => l_event_type_code
104565 ,p_line_definition_owner_code => l_line_definition_owner_code
104566 ,p_line_definition_code => l_line_definition_code
104567 ,p_accounting_line_code => l_component_code
104568 ,p_accounting_line_type_code => l_component_type_code
104569 ,p_accounting_line_appl_id => l_component_appl_id
104570 ,p_amb_context_code => l_amb_context_code
104571 ,p_entity_code => l_entity_code
104572 ,p_event_class_code => l_event_class_code);
104573 --
104574 -- set accounting class
104575 --
104576 xla_ae_lines_pkg.SetAcctClass(
104577 p_accounting_class_code => 'OFFSET'
104578 , p_ae_header_id => l_ae_header_id
104579 );
104580
104581 --
104582 -- set rounding class
104583 --
104584 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
104585 'OFFSET';
104586
104587 --
104588 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
104589 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
104590 --
104591 -- bulk performance
104592 --
104593 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
104594
104595 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
104596 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
104597
104598 -- 4955764
104599 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
104600 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
104601
104602 -- 4458381 Public Sector Enh
104603
104604 --
104605 -- set accounting attributes for the line type
104606 --
104607 l_entered_amt_idx := 3;
104608 l_accted_amt_idx := 8;
104609 l_bflow_applied_to_amt_idx := NULL; -- 5132302
104610 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
104611 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
104612 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
104613 l_rec_acct_attrs.array_char_value(2) := p_source_12;
104614 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
104615 l_rec_acct_attrs.array_num_value(3) := p_source_18;
104616 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
104617 l_rec_acct_attrs.array_char_value(4) := p_source_15;
104618 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
104619 l_rec_acct_attrs.array_date_value(5) := p_source_19;
104620 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
104621 l_rec_acct_attrs.array_num_value(6) := p_source_20;
104622 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
104623 l_rec_acct_attrs.array_char_value(7) := p_source_21;
104624 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
104625 l_rec_acct_attrs.array_num_value(8) := p_source_22;
104626
104627 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
104628 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
104629
104630 ---------------------------------------------------------------------------------------------------------------
104631 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
104632 ---------------------------------------------------------------------------------------------------------------
104633 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
104634
104635 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
104636 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
104637
104638 IF xla_accounting_cache_pkg.GetValueChar
104639 (p_source_code => 'LEDGER_CATEGORY_CODE'
104640 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
104641 AND l_bflow_method_code = 'PRIOR_ENTRY'
104642 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
104643 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
104644 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
104645 )
104646 THEN
104647 xla_ae_lines_pkg.BflowUpgEntry
104648 (p_business_method_code => l_bflow_method_code
104649 ,p_business_class_code => l_bflow_class_code
104650 ,p_balance_type => l_balance_type_code);
104651 ELSE
104652 NULL;
104653 -- No business flow processing for business flow method of NONE.
104654 END IF;
104655
104656 --
104657 -- call analytical criteria
104658 --
104659
104660 --
104661 -- call description
104662 --
104663 -- No description or it is inherited.
104664 --
104665 -- call ADRs
104666 -- Bug 4922099
104667 --
104668 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
104669 (NVL(l_actual_upg_option, 'N') = 'O') OR
104670 (NVL(l_enc_upg_option, 'N') = 'O')
104671 )
104672 THEN
104673 NULL;
104674 --
104675 --
104676
104677 l_ccid := AcctDerRule_4(
104678 p_application_id => p_application_id
104679 , p_ae_header_id => l_ae_header_id
104680 , p_source_4 => p_source_4
104681 , x_transaction_coa_id => l_adr_transaction_coa_id
104682 , x_accounting_coa_id => l_adr_accounting_coa_id
104683 , x_value_type_code => l_adr_value_type_code
104684 , p_side => 'NA'
104685 );
104686
104687 xla_ae_lines_pkg.set_ccid(
104688 p_code_combination_id => l_ccid
104689 , p_value_type_code => l_adr_value_type_code
104690 , p_transaction_coa_id => l_adr_transaction_coa_id
104691 , p_accounting_coa_id => l_adr_accounting_coa_id
104692 , p_adr_code => 'CST_DEFAULT'
104693 , p_adr_type_code => 'S'
104694 , p_component_type => l_component_type
104695 , p_component_code => l_component_code
104696 , p_component_type_code => l_component_type_code
104697 , p_component_appl_id => l_component_appl_id
104698 , p_amb_context_code => l_amb_context_code
104699 , p_side => 'NA'
104700 );
104701
104702
104703 --
104704 --
104705 END IF;
104706 --
104707 -- Bug 4922099
104708 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
104709 (NVL(l_enc_upg_option, 'N') = 'O')
104710 ) AND
104711 (l_bflow_method_code = 'PRIOR_ENTRY')
104712 )
104713 THEN
104714 IF
104715 --
104716 1 = 2
104717 --
104718 THEN
104719 xla_accounting_err_pkg.build_message
104720 (p_appli_s_name => 'XLA'
104721 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
104722 ,p_token_1 => 'LINE_NUMBER'
104723 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
104724 ,p_token_2 => 'LINE_TYPE_NAME'
104725 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
104726 l_component_type
104727 ,l_component_code
104728 ,l_component_type_code
104729 ,l_component_appl_id
104730 ,l_amb_context_code
104731 ,l_entity_code
104732 ,l_event_class_code
104733 )
104734 ,p_token_3 => 'OWNER'
104735 ,p_value_3 => xla_lookups_pkg.get_meaning(
104736 p_lookup_type => 'XLA_OWNER_TYPE'
104737 ,p_lookup_code => l_component_type_code
104738 )
104739 ,p_token_4 => 'PRODUCT_NAME'
104740 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
104741 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
104742 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
104743 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
104744 ,p_ae_header_id => NULL
104745 );
104746
104747 IF (C_LEVEL_ERROR>= g_log_level) THEN
104748 trace
104749 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
104750 ,p_level => C_LEVEL_ERROR
104751 ,p_module => l_log_module);
104752 END IF;
104753 END IF;
104754 END IF;
104755 --
104756 --
104757 ------------------------------------------------------------------------------------------------
104758 -- 4219869 Business Flow
104759 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
104760 -- Prior Entry. Currently, the following code is always generated.
104761 ------------------------------------------------------------------------------------------------
104762 XLA_AE_LINES_PKG.ValidateCurrentLine;
104763
104764 ------------------------------------------------------------------------------------
104765 -- 4219869 Business Flow
104766 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
104767 ------------------------------------------------------------------------------------
104768 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
104769
104770 ----------------------------------------------------------------------------------
104771 -- 4219869 Business Flow
104772 -- Update journal entry status -- Need to generate this within IF <condition>
104773 ----------------------------------------------------------------------------------
104774 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
104775 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
104776 ,p_balance_type_code => l_balance_type_code
104777 );
104778
104779 -------------------------------------------------------------------------------------------
104780 -- 4262811 - Generate the Accrual Reversal lines
104781 -------------------------------------------------------------------------------------------
104782 BEGIN
104783 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
104784 (g_array_event(p_event_id).array_value_num('header_index'));
104785 IF l_acc_rev_flag IS NULL THEN
104786 l_acc_rev_flag := 'N';
104787 END IF;
104788 EXCEPTION
104789 WHEN OTHERS THEN
104790 l_acc_rev_flag := 'N';
104791 END;
104792 --
104793 IF (l_acc_rev_flag = 'Y') THEN
104794
104795 -- 4645092 ------------------------------------------------------------------------------
104796 -- To allow MPA report to determine if it should generate report process
104797 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
104798 ------------------------------------------------------------------------------------------
104799
104800 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
104801 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
104802 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
104803 -- call ADRs
104804 -- Bug 4922099
104805 --
104806 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
104807 (NVL(l_actual_upg_option, 'N') = 'O') OR
104808 (NVL(l_enc_upg_option, 'N') = 'O')
104809 )
104810 THEN
104811 NULL;
104812 --
104813 --
104814
104815 l_ccid := AcctDerRule_4(
104816 p_application_id => p_application_id
104817 , p_ae_header_id => l_ae_header_id
104818 , p_source_4 => p_source_4
104819 , x_transaction_coa_id => l_adr_transaction_coa_id
104820 , x_accounting_coa_id => l_adr_accounting_coa_id
104821 , x_value_type_code => l_adr_value_type_code
104822 , p_side => 'NA'
104823 );
104824
104825 xla_ae_lines_pkg.set_ccid(
104826 p_code_combination_id => l_ccid
104827 , p_value_type_code => l_adr_value_type_code
104828 , p_transaction_coa_id => l_adr_transaction_coa_id
104829 , p_accounting_coa_id => l_adr_accounting_coa_id
104830 , p_adr_code => 'CST_DEFAULT'
104831 , p_adr_type_code => 'S'
104832 , p_component_type => l_component_type
104833 , p_component_code => l_component_code
104834 , p_component_type_code => l_component_type_code
104835 , p_component_appl_id => l_component_appl_id
104836 , p_amb_context_code => l_amb_context_code
104837 , p_side => 'NA'
104838 );
104839
104840
104841 --
104842 --
104843 END IF;
104844
104845 --
104846 -- Update the line information that should be overwritten
104847 --
104848 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
104849 p_header_num => 1);
104850 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
104851
104852 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
104853
104854 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
104855 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
104856 END IF;
104857
104858 --
104859 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
104860 --
104861 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
104862 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
104863 ELSE
104864 ---------------------------------------------------------------------------------------------------
104865 -- 4262811a Switch Sign
104866 ---------------------------------------------------------------------------------------------------
104867 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
104868 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
104869 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
104870 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
104871 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
104872 -- 5132302
104873 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
104874 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
104875
104876 END IF;
104877
104878 -- 4955764
104879 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
104880 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
104881
104882
104883 XLA_AE_LINES_PKG.ValidateCurrentLine;
104884 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
104885
104886 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
104887 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
104888 ,p_balance_type_code => l_balance_type_code);
104889
104890 END IF;
104891
104892 -----------------------------------------------------------------------------------------
104893 -- 4262811 Multiperiod Accounting
104894 -----------------------------------------------------------------------------------------
104895 -- No MPA option is assigned.
104896
104897
104898 END IF;
104899 END IF;
104900 --
104901
104902 --
104903 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
104904 trace
104905 (p_msg => 'END of AcctLineType_190'
104906 ,p_level => C_LEVEL_PROCEDURE
104907 ,p_module => l_log_module);
104908 END IF;
104909 --
104910 EXCEPTION
104911 WHEN xla_exceptions_pkg.application_exception THEN
104912 RAISE;
104913 WHEN OTHERS THEN
104914 xla_exceptions_pkg.raise_message
104915 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_190');
104916 END AcctLineType_190;
104917 --
104918
104919 ---------------------------------------
104920 --
104921 -- PRIVATE FUNCTION
104922 -- AcctLineType_191
104923 --
104924 ---------------------------------------
104925 PROCEDURE AcctLineType_191 (
104926 p_application_id IN NUMBER
104927 ,p_event_id IN NUMBER
104928 ,p_calculate_acctd_flag IN VARCHAR2
104929 ,p_calculate_g_l_flag IN VARCHAR2
104930 ,p_actual_flag IN OUT VARCHAR2
104931 ,p_balance_type_code OUT VARCHAR2
104932 ,p_gain_or_loss_ref OUT VARCHAR2
104933
104934 --Cost Management Default Account
104935 , p_source_4 IN NUMBER
104936 --DISTRIBUTION_IDENTIFIER
104937 , p_source_11 IN NUMBER
104938 --Distribution Type
104939 , p_source_12 IN VARCHAR2
104940 , p_source_12_meaning IN VARCHAR2
104941 --Entered Currency Code
104942 , p_source_15 IN VARCHAR2
104943 --Entered Amount
104944 , p_source_18 IN NUMBER
104945 --Currency Conversion Date
104946 , p_source_19 IN DATE
104947 --Currency Conversion Rate
104948 , p_source_20 IN NUMBER
104949 --Currency Conversion Type
104950 , p_source_21 IN VARCHAR2
104951 --Accounted Amount
104952 , p_source_22 IN NUMBER
104953 --Accounting Line Type
104954 , p_source_24 IN NUMBER
104955 )
104956 IS
104957
104958 l_component_type VARCHAR2(80);
104959 l_component_code VARCHAR2(30);
104960 l_component_type_code VARCHAR2(1);
104961 l_component_appl_id INTEGER;
104962 l_amb_context_code VARCHAR2(30);
104963 l_entity_code VARCHAR2(30);
104964 l_event_class_code VARCHAR2(30);
104965 l_ae_header_id NUMBER;
104966 l_event_type_code VARCHAR2(30);
104967 l_line_definition_code VARCHAR2(30);
104968 l_line_definition_owner_code VARCHAR2(1);
104969 --
104970 -- adr variables
104971 l_segment VARCHAR2(30);
104972 l_ccid NUMBER;
104973 l_adr_transaction_coa_id NUMBER;
104974 l_adr_accounting_coa_id NUMBER;
104975 l_adr_flexfield_segment_code VARCHAR2(30);
104976 l_adr_flex_value_set_id NUMBER;
104977 l_adr_value_type_code VARCHAR2(30);
104978 l_adr_value_combination_id NUMBER;
104979 l_adr_value_segment_code VARCHAR2(30);
104980
104981 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
104982 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
104983 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
104984 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
104985
104986 -- 4262811 Variables ------------------------------------------------------------------------------------------
104987 l_entered_amt_idx NUMBER;
104988 l_accted_amt_idx NUMBER;
104989 l_acc_rev_flag VARCHAR2(1);
104990 l_accrual_line_num NUMBER;
104991 l_tmp_amt NUMBER;
104992 l_acc_rev_natural_side_code VARCHAR2(1);
104993
104994 l_num_entries NUMBER;
104995 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
104996 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
104997 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
104998 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
104999 l_recog_line_1 NUMBER;
105000 l_recog_line_2 NUMBER;
105001
105002 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
105003 l_bflow_applied_to_amt NUMBER; -- 5132302
105004 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
105005
105006 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
105007
105008 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
105009 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
105010
105011 ---------------------------------------------------------------------------------------------------------------
105012
105013
105014 --
105015 -- bulk performance
105016 --
105017 l_balance_type_code VARCHAR2(1);
105018 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
105019 l_log_module VARCHAR2(240);
105020
105021 --
105022 -- Upgrade strategy
105023 --
105024 l_actual_upg_option VARCHAR2(1);
105025 l_enc_upg_option VARCHAR2(1);
105026
105027 --
105028 BEGIN
105029 --
105030 IF g_log_enabled THEN
105031 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_191';
105032 END IF;
105033 --
105034 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
105035
105036 trace
105037 (p_msg => 'BEGIN of AcctLineType_191'
105038 ,p_level => C_LEVEL_PROCEDURE
105039 ,p_module => l_log_module);
105040
105041 END IF;
105042 --
105043 l_component_type := 'AMB_JLT';
105044 l_component_code := 'OFFSET';
105045 l_component_type_code := 'S';
105046 l_component_appl_id := 707;
105047 l_amb_context_code := 'DEFAULT';
105048 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
105049 l_event_class_code := 'INTRAORG_TXFR';
105050 l_event_type_code := 'INTRAORG_TXFR_ALL';
105051 l_line_definition_owner_code := 'S';
105052 l_line_definition_code := 'INTRAORG_TXFR';
105053 --
105054 l_balance_type_code := 'A';
105055 l_segment := NULL;
105056 l_ccid := NULL;
105057 l_adr_transaction_coa_id := NULL;
105058 l_adr_accounting_coa_id := NULL;
105059 l_adr_flexfield_segment_code := NULL;
105060 l_adr_flex_value_set_id := NULL;
105061 l_adr_value_type_code := NULL;
105062 l_adr_value_combination_id := NULL;
105063 l_adr_value_segment_code := NULL;
105064
105065 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
105066 l_bflow_class_code := ''; -- 4219869 Business Flow
105067 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
105068 l_budgetary_control_flag := 'N';
105069
105070 l_bflow_applied_to_amt_idx := NULL; -- 5132302
105071 l_bflow_applied_to_amt := NULL; -- 5132302
105072 l_entered_amt_idx := NULL; -- 4262811
105073 l_accted_amt_idx := NULL; -- 4262811
105074 l_acc_rev_flag := NULL; -- 4262811
105075 l_accrual_line_num := NULL; -- 4262811
105076 l_tmp_amt := NULL; -- 4262811
105077 --
105078
105079 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
105080 l_balance_type_code <> 'B' THEN
105081 IF NVL(p_source_24,9E125) = 2
105082 THEN
105083
105084 --
105085 XLA_AE_LINES_PKG.SetNewLine;
105086
105087 p_balance_type_code := l_balance_type_code;
105088 -- set the flag so later we will know whether the gain loss line needs to be created
105089
105090 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
105091 p_actual_flag :='A';
105092 END IF;
105093
105094 --
105095 -- bulk performance
105096 --
105097 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
105098 p_header_num => 0); -- 4262811
105099 --
105100 -- set accounting line options
105101 --
105102 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
105103 p_natural_side_code => 'D'
105104 , p_gain_or_loss_flag => 'N'
105105 , p_gl_transfer_mode_code => 'S'
105106 , p_acct_entry_type_code => 'A'
105107 , p_switch_side_flag => 'Y'
105108 , p_merge_duplicate_code => 'N'
105109 );
105110 --
105111 l_acc_rev_natural_side_code := 'C'; -- 4262811
105112 --
105113 --
105114 -- set accounting line type info
105115 --
105116 xla_ae_lines_pkg.SetAcctLineType
105117 (p_component_type => l_component_type
105118 ,p_event_type_code => l_event_type_code
105119 ,p_line_definition_owner_code => l_line_definition_owner_code
105120 ,p_line_definition_code => l_line_definition_code
105121 ,p_accounting_line_code => l_component_code
105122 ,p_accounting_line_type_code => l_component_type_code
105123 ,p_accounting_line_appl_id => l_component_appl_id
105124 ,p_amb_context_code => l_amb_context_code
105125 ,p_entity_code => l_entity_code
105126 ,p_event_class_code => l_event_class_code);
105127 --
105128 -- set accounting class
105129 --
105130 xla_ae_lines_pkg.SetAcctClass(
105131 p_accounting_class_code => 'OFFSET'
105132 , p_ae_header_id => l_ae_header_id
105133 );
105134
105135 --
105136 -- set rounding class
105137 --
105138 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
105139 'OFFSET';
105140
105141 --
105142 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
105143 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
105144 --
105145 -- bulk performance
105146 --
105147 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
105148
105149 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
105150 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
105151
105152 -- 4955764
105153 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
105154 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
105155
105156 -- 4458381 Public Sector Enh
105157
105158 --
105159 -- set accounting attributes for the line type
105160 --
105161 l_entered_amt_idx := 3;
105162 l_accted_amt_idx := 8;
105163 l_bflow_applied_to_amt_idx := NULL; -- 5132302
105164 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
105165 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
105166 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
105167 l_rec_acct_attrs.array_char_value(2) := p_source_12;
105168 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
105169 l_rec_acct_attrs.array_num_value(3) := p_source_18;
105170 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
105171 l_rec_acct_attrs.array_char_value(4) := p_source_15;
105172 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
105173 l_rec_acct_attrs.array_date_value(5) := p_source_19;
105174 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
105175 l_rec_acct_attrs.array_num_value(6) := p_source_20;
105176 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
105177 l_rec_acct_attrs.array_char_value(7) := p_source_21;
105178 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
105179 l_rec_acct_attrs.array_num_value(8) := p_source_22;
105180
105181 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
105182 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
105183
105184 ---------------------------------------------------------------------------------------------------------------
105185 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
105186 ---------------------------------------------------------------------------------------------------------------
105187 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
105188
105189 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
105190 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
105191
105192 IF xla_accounting_cache_pkg.GetValueChar
105193 (p_source_code => 'LEDGER_CATEGORY_CODE'
105194 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
105195 AND l_bflow_method_code = 'PRIOR_ENTRY'
105196 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
105197 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
105198 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
105199 )
105200 THEN
105201 xla_ae_lines_pkg.BflowUpgEntry
105202 (p_business_method_code => l_bflow_method_code
105203 ,p_business_class_code => l_bflow_class_code
105204 ,p_balance_type => l_balance_type_code);
105205 ELSE
105206 NULL;
105207 -- No business flow processing for business flow method of NONE.
105208 END IF;
105209
105210 --
105211 -- call analytical criteria
105212 --
105213
105214 --
105215 -- call description
105216 --
105217 -- No description or it is inherited.
105218 --
105219 -- call ADRs
105220 -- Bug 4922099
105221 --
105222 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
105223 (NVL(l_actual_upg_option, 'N') = 'O') OR
105224 (NVL(l_enc_upg_option, 'N') = 'O')
105225 )
105226 THEN
105227 NULL;
105228 --
105229 --
105230
105231 l_ccid := AcctDerRule_4(
105232 p_application_id => p_application_id
105233 , p_ae_header_id => l_ae_header_id
105234 , p_source_4 => p_source_4
105235 , x_transaction_coa_id => l_adr_transaction_coa_id
105236 , x_accounting_coa_id => l_adr_accounting_coa_id
105237 , x_value_type_code => l_adr_value_type_code
105238 , p_side => 'NA'
105239 );
105240
105241 xla_ae_lines_pkg.set_ccid(
105242 p_code_combination_id => l_ccid
105243 , p_value_type_code => l_adr_value_type_code
105244 , p_transaction_coa_id => l_adr_transaction_coa_id
105245 , p_accounting_coa_id => l_adr_accounting_coa_id
105246 , p_adr_code => 'CST_DEFAULT'
105247 , p_adr_type_code => 'S'
105248 , p_component_type => l_component_type
105249 , p_component_code => l_component_code
105250 , p_component_type_code => l_component_type_code
105251 , p_component_appl_id => l_component_appl_id
105252 , p_amb_context_code => l_amb_context_code
105253 , p_side => 'NA'
105254 );
105255
105256
105257 --
105258 --
105259 END IF;
105260 --
105261 -- Bug 4922099
105262 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
105263 (NVL(l_enc_upg_option, 'N') = 'O')
105264 ) AND
105265 (l_bflow_method_code = 'PRIOR_ENTRY')
105266 )
105267 THEN
105268 IF
105269 --
105270 1 = 2
105271 --
105272 THEN
105273 xla_accounting_err_pkg.build_message
105274 (p_appli_s_name => 'XLA'
105275 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
105276 ,p_token_1 => 'LINE_NUMBER'
105277 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
105278 ,p_token_2 => 'LINE_TYPE_NAME'
105279 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
105280 l_component_type
105281 ,l_component_code
105282 ,l_component_type_code
105283 ,l_component_appl_id
105284 ,l_amb_context_code
105285 ,l_entity_code
105286 ,l_event_class_code
105287 )
105288 ,p_token_3 => 'OWNER'
105289 ,p_value_3 => xla_lookups_pkg.get_meaning(
105290 p_lookup_type => 'XLA_OWNER_TYPE'
105291 ,p_lookup_code => l_component_type_code
105292 )
105293 ,p_token_4 => 'PRODUCT_NAME'
105294 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
105295 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
105296 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
105297 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
105298 ,p_ae_header_id => NULL
105299 );
105300
105301 IF (C_LEVEL_ERROR>= g_log_level) THEN
105302 trace
105303 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
105304 ,p_level => C_LEVEL_ERROR
105305 ,p_module => l_log_module);
105306 END IF;
105307 END IF;
105308 END IF;
105309 --
105310 --
105311 ------------------------------------------------------------------------------------------------
105312 -- 4219869 Business Flow
105313 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
105314 -- Prior Entry. Currently, the following code is always generated.
105315 ------------------------------------------------------------------------------------------------
105316 XLA_AE_LINES_PKG.ValidateCurrentLine;
105317
105318 ------------------------------------------------------------------------------------
105319 -- 4219869 Business Flow
105320 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
105321 ------------------------------------------------------------------------------------
105322 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
105323
105324 ----------------------------------------------------------------------------------
105325 -- 4219869 Business Flow
105326 -- Update journal entry status -- Need to generate this within IF <condition>
105327 ----------------------------------------------------------------------------------
105328 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
105329 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
105330 ,p_balance_type_code => l_balance_type_code
105331 );
105332
105333 -------------------------------------------------------------------------------------------
105334 -- 4262811 - Generate the Accrual Reversal lines
105335 -------------------------------------------------------------------------------------------
105336 BEGIN
105337 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
105338 (g_array_event(p_event_id).array_value_num('header_index'));
105339 IF l_acc_rev_flag IS NULL THEN
105340 l_acc_rev_flag := 'N';
105341 END IF;
105342 EXCEPTION
105343 WHEN OTHERS THEN
105344 l_acc_rev_flag := 'N';
105345 END;
105346 --
105347 IF (l_acc_rev_flag = 'Y') THEN
105348
105349 -- 4645092 ------------------------------------------------------------------------------
105350 -- To allow MPA report to determine if it should generate report process
105351 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
105352 ------------------------------------------------------------------------------------------
105353
105354 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
105355 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
105356 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
105357 -- call ADRs
105358 -- Bug 4922099
105359 --
105360 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
105361 (NVL(l_actual_upg_option, 'N') = 'O') OR
105362 (NVL(l_enc_upg_option, 'N') = 'O')
105363 )
105364 THEN
105365 NULL;
105366 --
105367 --
105368
105369 l_ccid := AcctDerRule_4(
105370 p_application_id => p_application_id
105371 , p_ae_header_id => l_ae_header_id
105372 , p_source_4 => p_source_4
105373 , x_transaction_coa_id => l_adr_transaction_coa_id
105374 , x_accounting_coa_id => l_adr_accounting_coa_id
105375 , x_value_type_code => l_adr_value_type_code
105376 , p_side => 'NA'
105377 );
105378
105379 xla_ae_lines_pkg.set_ccid(
105380 p_code_combination_id => l_ccid
105381 , p_value_type_code => l_adr_value_type_code
105382 , p_transaction_coa_id => l_adr_transaction_coa_id
105383 , p_accounting_coa_id => l_adr_accounting_coa_id
105384 , p_adr_code => 'CST_DEFAULT'
105385 , p_adr_type_code => 'S'
105386 , p_component_type => l_component_type
105387 , p_component_code => l_component_code
105388 , p_component_type_code => l_component_type_code
105389 , p_component_appl_id => l_component_appl_id
105390 , p_amb_context_code => l_amb_context_code
105391 , p_side => 'NA'
105392 );
105393
105394
105395 --
105396 --
105397 END IF;
105398
105399 --
105400 -- Update the line information that should be overwritten
105401 --
105402 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
105403 p_header_num => 1);
105404 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
105405
105406 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
105407
105408 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
105409 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
105410 END IF;
105411
105412 --
105413 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
105414 --
105415 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
105416 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
105417 ELSE
105418 ---------------------------------------------------------------------------------------------------
105419 -- 4262811a Switch Sign
105420 ---------------------------------------------------------------------------------------------------
105421 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
105422 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
105423 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
105424 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
105425 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
105426 -- 5132302
105427 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
105428 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
105429
105430 END IF;
105431
105432 -- 4955764
105433 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
105434 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
105435
105436
105437 XLA_AE_LINES_PKG.ValidateCurrentLine;
105438 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
105439
105440 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
105441 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
105442 ,p_balance_type_code => l_balance_type_code);
105443
105444 END IF;
105445
105446 -----------------------------------------------------------------------------------------
105447 -- 4262811 Multiperiod Accounting
105448 -----------------------------------------------------------------------------------------
105449 -- No MPA option is assigned.
105450
105451
105452 END IF;
105453 END IF;
105454 --
105455
105456 --
105457 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
105458 trace
105459 (p_msg => 'END of AcctLineType_191'
105460 ,p_level => C_LEVEL_PROCEDURE
105461 ,p_module => l_log_module);
105462 END IF;
105463 --
105464 EXCEPTION
105465 WHEN xla_exceptions_pkg.application_exception THEN
105466 RAISE;
105467 WHEN OTHERS THEN
105468 xla_exceptions_pkg.raise_message
105469 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_191');
105470 END AcctLineType_191;
105471 --
105472
105473 ---------------------------------------
105474 --
105475 -- PRIVATE FUNCTION
105476 -- AcctLineType_192
105477 --
105478 ---------------------------------------
105479 PROCEDURE AcctLineType_192 (
105480 p_application_id IN NUMBER
105481 ,p_event_id IN NUMBER
105482 ,p_calculate_acctd_flag IN VARCHAR2
105483 ,p_calculate_g_l_flag IN VARCHAR2
105484 ,p_actual_flag IN OUT VARCHAR2
105485 ,p_balance_type_code OUT VARCHAR2
105486 ,p_gain_or_loss_ref OUT VARCHAR2
105487
105488 --Cost Management Default Account
105489 , p_source_4 IN NUMBER
105490 --DISTRIBUTION_IDENTIFIER
105491 , p_source_11 IN NUMBER
105492 --Distribution Type
105493 , p_source_12 IN VARCHAR2
105494 , p_source_12_meaning IN VARCHAR2
105495 --Entered Currency Code
105496 , p_source_15 IN VARCHAR2
105497 --Entered Amount
105498 , p_source_18 IN NUMBER
105499 --Currency Conversion Date
105500 , p_source_19 IN DATE
105501 --Currency Conversion Rate
105502 , p_source_20 IN NUMBER
105503 --Currency Conversion Type
105504 , p_source_21 IN VARCHAR2
105505 --Accounted Amount
105506 , p_source_22 IN NUMBER
105507 --Accounting Line Type
105508 , p_source_24 IN NUMBER
105509 )
105510 IS
105511
105512 l_component_type VARCHAR2(80);
105513 l_component_code VARCHAR2(30);
105514 l_component_type_code VARCHAR2(1);
105515 l_component_appl_id INTEGER;
105516 l_amb_context_code VARCHAR2(30);
105517 l_entity_code VARCHAR2(30);
105518 l_event_class_code VARCHAR2(30);
105519 l_ae_header_id NUMBER;
105520 l_event_type_code VARCHAR2(30);
105521 l_line_definition_code VARCHAR2(30);
105522 l_line_definition_owner_code VARCHAR2(1);
105523 --
105524 -- adr variables
105525 l_segment VARCHAR2(30);
105526 l_ccid NUMBER;
105527 l_adr_transaction_coa_id NUMBER;
105528 l_adr_accounting_coa_id NUMBER;
105529 l_adr_flexfield_segment_code VARCHAR2(30);
105530 l_adr_flex_value_set_id NUMBER;
105531 l_adr_value_type_code VARCHAR2(30);
105532 l_adr_value_combination_id NUMBER;
105533 l_adr_value_segment_code VARCHAR2(30);
105534
105535 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
105536 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
105537 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
105538 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
105539
105540 -- 4262811 Variables ------------------------------------------------------------------------------------------
105541 l_entered_amt_idx NUMBER;
105542 l_accted_amt_idx NUMBER;
105543 l_acc_rev_flag VARCHAR2(1);
105544 l_accrual_line_num NUMBER;
105545 l_tmp_amt NUMBER;
105546 l_acc_rev_natural_side_code VARCHAR2(1);
105547
105548 l_num_entries NUMBER;
105549 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
105550 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
105551 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
105552 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
105553 l_recog_line_1 NUMBER;
105554 l_recog_line_2 NUMBER;
105555
105556 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
105557 l_bflow_applied_to_amt NUMBER; -- 5132302
105558 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
105559
105560 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
105561
105562 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
105563 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
105564
105565 ---------------------------------------------------------------------------------------------------------------
105566
105567
105568 --
105569 -- bulk performance
105570 --
105571 l_balance_type_code VARCHAR2(1);
105572 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
105573 l_log_module VARCHAR2(240);
105574
105575 --
105576 -- Upgrade strategy
105577 --
105578 l_actual_upg_option VARCHAR2(1);
105579 l_enc_upg_option VARCHAR2(1);
105580
105581 --
105582 BEGIN
105583 --
105584 IF g_log_enabled THEN
105585 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_192';
105586 END IF;
105587 --
105588 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
105589
105590 trace
105591 (p_msg => 'BEGIN of AcctLineType_192'
105592 ,p_level => C_LEVEL_PROCEDURE
105593 ,p_module => l_log_module);
105594
105595 END IF;
105596 --
105597 l_component_type := 'AMB_JLT';
105598 l_component_code := 'OFFSET';
105599 l_component_type_code := 'S';
105600 l_component_appl_id := 707;
105601 l_amb_context_code := 'DEFAULT';
105602 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
105603 l_event_class_code := 'INT_ORDER_TO_EXP';
105604 l_event_type_code := 'INT_ORDER_TO_EXP_ALL';
105605 l_line_definition_owner_code := 'S';
105606 l_line_definition_code := 'INT_ORDER_TO_EXP';
105607 --
105608 l_balance_type_code := 'A';
105609 l_segment := NULL;
105610 l_ccid := NULL;
105611 l_adr_transaction_coa_id := NULL;
105612 l_adr_accounting_coa_id := NULL;
105613 l_adr_flexfield_segment_code := NULL;
105614 l_adr_flex_value_set_id := NULL;
105615 l_adr_value_type_code := NULL;
105616 l_adr_value_combination_id := NULL;
105617 l_adr_value_segment_code := NULL;
105618
105619 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
105620 l_bflow_class_code := ''; -- 4219869 Business Flow
105621 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
105622 l_budgetary_control_flag := 'N';
105623
105624 l_bflow_applied_to_amt_idx := NULL; -- 5132302
105625 l_bflow_applied_to_amt := NULL; -- 5132302
105626 l_entered_amt_idx := NULL; -- 4262811
105627 l_accted_amt_idx := NULL; -- 4262811
105628 l_acc_rev_flag := NULL; -- 4262811
105629 l_accrual_line_num := NULL; -- 4262811
105630 l_tmp_amt := NULL; -- 4262811
105631 --
105632
105633 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
105634 l_balance_type_code <> 'B' THEN
105635 IF NVL(p_source_24,9E125) = 2
105636 THEN
105637
105638 --
105639 XLA_AE_LINES_PKG.SetNewLine;
105640
105641 p_balance_type_code := l_balance_type_code;
105642 -- set the flag so later we will know whether the gain loss line needs to be created
105643
105644 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
105645 p_actual_flag :='A';
105646 END IF;
105647
105648 --
105649 -- bulk performance
105650 --
105651 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
105652 p_header_num => 0); -- 4262811
105653 --
105654 -- set accounting line options
105655 --
105656 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
105657 p_natural_side_code => 'D'
105658 , p_gain_or_loss_flag => 'N'
105659 , p_gl_transfer_mode_code => 'S'
105660 , p_acct_entry_type_code => 'A'
105661 , p_switch_side_flag => 'Y'
105662 , p_merge_duplicate_code => 'N'
105663 );
105664 --
105665 l_acc_rev_natural_side_code := 'C'; -- 4262811
105666 --
105667 --
105668 -- set accounting line type info
105669 --
105670 xla_ae_lines_pkg.SetAcctLineType
105671 (p_component_type => l_component_type
105672 ,p_event_type_code => l_event_type_code
105673 ,p_line_definition_owner_code => l_line_definition_owner_code
105674 ,p_line_definition_code => l_line_definition_code
105675 ,p_accounting_line_code => l_component_code
105676 ,p_accounting_line_type_code => l_component_type_code
105677 ,p_accounting_line_appl_id => l_component_appl_id
105678 ,p_amb_context_code => l_amb_context_code
105679 ,p_entity_code => l_entity_code
105680 ,p_event_class_code => l_event_class_code);
105681 --
105682 -- set accounting class
105683 --
105684 xla_ae_lines_pkg.SetAcctClass(
105685 p_accounting_class_code => 'OFFSET'
105686 , p_ae_header_id => l_ae_header_id
105687 );
105688
105689 --
105690 -- set rounding class
105691 --
105692 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
105693 'OFFSET';
105694
105695 --
105696 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
105697 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
105698 --
105699 -- bulk performance
105700 --
105701 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
105702
105703 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
105704 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
105705
105706 -- 4955764
105707 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
105708 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
105709
105710 -- 4458381 Public Sector Enh
105711
105712 --
105713 -- set accounting attributes for the line type
105714 --
105715 l_entered_amt_idx := 3;
105716 l_accted_amt_idx := 8;
105717 l_bflow_applied_to_amt_idx := NULL; -- 5132302
105718 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
105719 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
105720 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
105721 l_rec_acct_attrs.array_char_value(2) := p_source_12;
105722 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
105723 l_rec_acct_attrs.array_num_value(3) := p_source_18;
105724 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
105725 l_rec_acct_attrs.array_char_value(4) := p_source_15;
105726 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
105727 l_rec_acct_attrs.array_date_value(5) := p_source_19;
105728 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
105729 l_rec_acct_attrs.array_num_value(6) := p_source_20;
105730 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
105731 l_rec_acct_attrs.array_char_value(7) := p_source_21;
105732 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
105733 l_rec_acct_attrs.array_num_value(8) := p_source_22;
105734
105735 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
105736 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
105737
105738 ---------------------------------------------------------------------------------------------------------------
105739 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
105740 ---------------------------------------------------------------------------------------------------------------
105741 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
105742
105743 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
105744 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
105745
105746 IF xla_accounting_cache_pkg.GetValueChar
105747 (p_source_code => 'LEDGER_CATEGORY_CODE'
105748 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
105749 AND l_bflow_method_code = 'PRIOR_ENTRY'
105750 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
105751 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
105752 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
105753 )
105754 THEN
105755 xla_ae_lines_pkg.BflowUpgEntry
105756 (p_business_method_code => l_bflow_method_code
105757 ,p_business_class_code => l_bflow_class_code
105758 ,p_balance_type => l_balance_type_code);
105759 ELSE
105760 NULL;
105761 -- No business flow processing for business flow method of NONE.
105762 END IF;
105763
105764 --
105765 -- call analytical criteria
105766 --
105767
105768 --
105769 -- call description
105770 --
105771 -- No description or it is inherited.
105772 --
105773 -- call ADRs
105774 -- Bug 4922099
105775 --
105776 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
105777 (NVL(l_actual_upg_option, 'N') = 'O') OR
105778 (NVL(l_enc_upg_option, 'N') = 'O')
105779 )
105780 THEN
105781 NULL;
105782 --
105783 --
105784
105785 l_ccid := AcctDerRule_4(
105786 p_application_id => p_application_id
105787 , p_ae_header_id => l_ae_header_id
105788 , p_source_4 => p_source_4
105789 , x_transaction_coa_id => l_adr_transaction_coa_id
105790 , x_accounting_coa_id => l_adr_accounting_coa_id
105791 , x_value_type_code => l_adr_value_type_code
105792 , p_side => 'NA'
105793 );
105794
105795 xla_ae_lines_pkg.set_ccid(
105796 p_code_combination_id => l_ccid
105797 , p_value_type_code => l_adr_value_type_code
105798 , p_transaction_coa_id => l_adr_transaction_coa_id
105799 , p_accounting_coa_id => l_adr_accounting_coa_id
105800 , p_adr_code => 'CST_DEFAULT'
105801 , p_adr_type_code => 'S'
105802 , p_component_type => l_component_type
105803 , p_component_code => l_component_code
105804 , p_component_type_code => l_component_type_code
105805 , p_component_appl_id => l_component_appl_id
105806 , p_amb_context_code => l_amb_context_code
105807 , p_side => 'NA'
105808 );
105809
105810
105811 --
105812 --
105813 END IF;
105814 --
105815 -- Bug 4922099
105816 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
105817 (NVL(l_enc_upg_option, 'N') = 'O')
105818 ) AND
105819 (l_bflow_method_code = 'PRIOR_ENTRY')
105820 )
105821 THEN
105822 IF
105823 --
105824 1 = 2
105825 --
105826 THEN
105827 xla_accounting_err_pkg.build_message
105828 (p_appli_s_name => 'XLA'
105829 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
105830 ,p_token_1 => 'LINE_NUMBER'
105831 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
105832 ,p_token_2 => 'LINE_TYPE_NAME'
105833 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
105834 l_component_type
105835 ,l_component_code
105836 ,l_component_type_code
105837 ,l_component_appl_id
105838 ,l_amb_context_code
105839 ,l_entity_code
105840 ,l_event_class_code
105841 )
105842 ,p_token_3 => 'OWNER'
105843 ,p_value_3 => xla_lookups_pkg.get_meaning(
105844 p_lookup_type => 'XLA_OWNER_TYPE'
105845 ,p_lookup_code => l_component_type_code
105846 )
105847 ,p_token_4 => 'PRODUCT_NAME'
105848 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
105849 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
105850 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
105851 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
105852 ,p_ae_header_id => NULL
105853 );
105854
105855 IF (C_LEVEL_ERROR>= g_log_level) THEN
105856 trace
105857 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
105858 ,p_level => C_LEVEL_ERROR
105859 ,p_module => l_log_module);
105860 END IF;
105861 END IF;
105862 END IF;
105863 --
105864 --
105865 ------------------------------------------------------------------------------------------------
105866 -- 4219869 Business Flow
105867 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
105868 -- Prior Entry. Currently, the following code is always generated.
105869 ------------------------------------------------------------------------------------------------
105870 XLA_AE_LINES_PKG.ValidateCurrentLine;
105871
105872 ------------------------------------------------------------------------------------
105873 -- 4219869 Business Flow
105874 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
105875 ------------------------------------------------------------------------------------
105876 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
105877
105878 ----------------------------------------------------------------------------------
105879 -- 4219869 Business Flow
105880 -- Update journal entry status -- Need to generate this within IF <condition>
105881 ----------------------------------------------------------------------------------
105882 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
105883 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
105884 ,p_balance_type_code => l_balance_type_code
105885 );
105886
105887 -------------------------------------------------------------------------------------------
105888 -- 4262811 - Generate the Accrual Reversal lines
105889 -------------------------------------------------------------------------------------------
105890 BEGIN
105891 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
105892 (g_array_event(p_event_id).array_value_num('header_index'));
105893 IF l_acc_rev_flag IS NULL THEN
105894 l_acc_rev_flag := 'N';
105895 END IF;
105896 EXCEPTION
105897 WHEN OTHERS THEN
105898 l_acc_rev_flag := 'N';
105899 END;
105900 --
105901 IF (l_acc_rev_flag = 'Y') THEN
105902
105903 -- 4645092 ------------------------------------------------------------------------------
105904 -- To allow MPA report to determine if it should generate report process
105905 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
105906 ------------------------------------------------------------------------------------------
105907
105908 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
105909 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
105910 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
105911 -- call ADRs
105912 -- Bug 4922099
105913 --
105914 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
105915 (NVL(l_actual_upg_option, 'N') = 'O') OR
105916 (NVL(l_enc_upg_option, 'N') = 'O')
105917 )
105918 THEN
105919 NULL;
105920 --
105921 --
105922
105923 l_ccid := AcctDerRule_4(
105924 p_application_id => p_application_id
105925 , p_ae_header_id => l_ae_header_id
105926 , p_source_4 => p_source_4
105927 , x_transaction_coa_id => l_adr_transaction_coa_id
105928 , x_accounting_coa_id => l_adr_accounting_coa_id
105929 , x_value_type_code => l_adr_value_type_code
105930 , p_side => 'NA'
105931 );
105932
105933 xla_ae_lines_pkg.set_ccid(
105934 p_code_combination_id => l_ccid
105935 , p_value_type_code => l_adr_value_type_code
105936 , p_transaction_coa_id => l_adr_transaction_coa_id
105937 , p_accounting_coa_id => l_adr_accounting_coa_id
105938 , p_adr_code => 'CST_DEFAULT'
105939 , p_adr_type_code => 'S'
105940 , p_component_type => l_component_type
105941 , p_component_code => l_component_code
105942 , p_component_type_code => l_component_type_code
105943 , p_component_appl_id => l_component_appl_id
105944 , p_amb_context_code => l_amb_context_code
105945 , p_side => 'NA'
105946 );
105947
105948
105949 --
105950 --
105951 END IF;
105952
105953 --
105954 -- Update the line information that should be overwritten
105955 --
105956 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
105957 p_header_num => 1);
105958 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
105959
105960 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
105961
105962 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
105963 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
105964 END IF;
105965
105966 --
105967 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
105968 --
105969 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
105970 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
105971 ELSE
105972 ---------------------------------------------------------------------------------------------------
105973 -- 4262811a Switch Sign
105974 ---------------------------------------------------------------------------------------------------
105975 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
105976 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
105977 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
105978 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
105979 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
105980 -- 5132302
105981 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
105982 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
105983
105984 END IF;
105985
105986 -- 4955764
105987 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
105988 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
105989
105990
105991 XLA_AE_LINES_PKG.ValidateCurrentLine;
105992 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
105993
105994 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
105995 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
105996 ,p_balance_type_code => l_balance_type_code);
105997
105998 END IF;
105999
106000 -----------------------------------------------------------------------------------------
106001 -- 4262811 Multiperiod Accounting
106002 -----------------------------------------------------------------------------------------
106003 -- No MPA option is assigned.
106004
106005
106006 END IF;
106007 END IF;
106008 --
106009
106010 --
106011 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
106012 trace
106013 (p_msg => 'END of AcctLineType_192'
106014 ,p_level => C_LEVEL_PROCEDURE
106015 ,p_module => l_log_module);
106016 END IF;
106017 --
106018 EXCEPTION
106019 WHEN xla_exceptions_pkg.application_exception THEN
106020 RAISE;
106021 WHEN OTHERS THEN
106022 xla_exceptions_pkg.raise_message
106023 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_192');
106024 END AcctLineType_192;
106025 --
106026
106027 ---------------------------------------
106028 --
106029 -- PRIVATE FUNCTION
106030 -- AcctLineType_193
106031 --
106032 ---------------------------------------
106033 PROCEDURE AcctLineType_193 (
106034 p_application_id IN NUMBER
106035 ,p_event_id IN NUMBER
106036 ,p_calculate_acctd_flag IN VARCHAR2
106037 ,p_calculate_g_l_flag IN VARCHAR2
106038 ,p_actual_flag IN OUT VARCHAR2
106039 ,p_balance_type_code OUT VARCHAR2
106040 ,p_gain_or_loss_ref OUT VARCHAR2
106041
106042 --Cost Management Default Account
106043 , p_source_4 IN NUMBER
106044 --DISTRIBUTION_IDENTIFIER
106045 , p_source_11 IN NUMBER
106046 --Distribution Type
106047 , p_source_12 IN VARCHAR2
106048 , p_source_12_meaning IN VARCHAR2
106049 --Entered Currency Code
106050 , p_source_15 IN VARCHAR2
106051 --Entered Amount
106052 , p_source_18 IN NUMBER
106053 --Currency Conversion Date
106054 , p_source_19 IN DATE
106055 --Currency Conversion Rate
106056 , p_source_20 IN NUMBER
106057 --Currency Conversion Type
106058 , p_source_21 IN VARCHAR2
106059 --Accounted Amount
106060 , p_source_22 IN NUMBER
106061 --Accounting Line Type
106062 , p_source_24 IN NUMBER
106063 )
106064 IS
106065
106066 l_component_type VARCHAR2(80);
106067 l_component_code VARCHAR2(30);
106068 l_component_type_code VARCHAR2(1);
106069 l_component_appl_id INTEGER;
106070 l_amb_context_code VARCHAR2(30);
106071 l_entity_code VARCHAR2(30);
106072 l_event_class_code VARCHAR2(30);
106073 l_ae_header_id NUMBER;
106074 l_event_type_code VARCHAR2(30);
106075 l_line_definition_code VARCHAR2(30);
106076 l_line_definition_owner_code VARCHAR2(1);
106077 --
106078 -- adr variables
106079 l_segment VARCHAR2(30);
106080 l_ccid NUMBER;
106081 l_adr_transaction_coa_id NUMBER;
106082 l_adr_accounting_coa_id NUMBER;
106083 l_adr_flexfield_segment_code VARCHAR2(30);
106084 l_adr_flex_value_set_id NUMBER;
106085 l_adr_value_type_code VARCHAR2(30);
106086 l_adr_value_combination_id NUMBER;
106087 l_adr_value_segment_code VARCHAR2(30);
106088
106089 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
106090 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
106091 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
106092 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
106093
106094 -- 4262811 Variables ------------------------------------------------------------------------------------------
106095 l_entered_amt_idx NUMBER;
106096 l_accted_amt_idx NUMBER;
106097 l_acc_rev_flag VARCHAR2(1);
106098 l_accrual_line_num NUMBER;
106099 l_tmp_amt NUMBER;
106100 l_acc_rev_natural_side_code VARCHAR2(1);
106101
106102 l_num_entries NUMBER;
106103 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
106104 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
106105 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
106106 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
106107 l_recog_line_1 NUMBER;
106108 l_recog_line_2 NUMBER;
106109
106110 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
106111 l_bflow_applied_to_amt NUMBER; -- 5132302
106112 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
106113
106114 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
106115
106116 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
106117 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
106118
106119 ---------------------------------------------------------------------------------------------------------------
106120
106121
106122 --
106123 -- bulk performance
106124 --
106125 l_balance_type_code VARCHAR2(1);
106126 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
106127 l_log_module VARCHAR2(240);
106128
106129 --
106130 -- Upgrade strategy
106131 --
106132 l_actual_upg_option VARCHAR2(1);
106133 l_enc_upg_option VARCHAR2(1);
106134
106135 --
106136 BEGIN
106137 --
106138 IF g_log_enabled THEN
106139 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_193';
106140 END IF;
106141 --
106142 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
106143
106144 trace
106145 (p_msg => 'BEGIN of AcctLineType_193'
106146 ,p_level => C_LEVEL_PROCEDURE
106147 ,p_module => l_log_module);
106148
106149 END IF;
106150 --
106151 l_component_type := 'AMB_JLT';
106152 l_component_code := 'OFFSET';
106153 l_component_type_code := 'S';
106154 l_component_appl_id := 707;
106155 l_amb_context_code := 'DEFAULT';
106156 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
106157 l_event_class_code := 'MISC_ISSUE_RCPT';
106158 l_event_type_code := 'MISC_ISSUE_RCPT_ALL';
106159 l_line_definition_owner_code := 'S';
106160 l_line_definition_code := 'MISC_ISSUE_RCPT';
106161 --
106162 l_balance_type_code := 'A';
106163 l_segment := NULL;
106164 l_ccid := NULL;
106165 l_adr_transaction_coa_id := NULL;
106166 l_adr_accounting_coa_id := NULL;
106167 l_adr_flexfield_segment_code := NULL;
106168 l_adr_flex_value_set_id := NULL;
106169 l_adr_value_type_code := NULL;
106170 l_adr_value_combination_id := NULL;
106171 l_adr_value_segment_code := NULL;
106172
106173 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
106174 l_bflow_class_code := ''; -- 4219869 Business Flow
106175 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
106176 l_budgetary_control_flag := 'N';
106177
106178 l_bflow_applied_to_amt_idx := NULL; -- 5132302
106179 l_bflow_applied_to_amt := NULL; -- 5132302
106180 l_entered_amt_idx := NULL; -- 4262811
106181 l_accted_amt_idx := NULL; -- 4262811
106182 l_acc_rev_flag := NULL; -- 4262811
106183 l_accrual_line_num := NULL; -- 4262811
106184 l_tmp_amt := NULL; -- 4262811
106185 --
106186
106187 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
106188 l_balance_type_code <> 'B' THEN
106189 IF NVL(p_source_24,9E125) = 2
106190 THEN
106191
106192 --
106193 XLA_AE_LINES_PKG.SetNewLine;
106194
106195 p_balance_type_code := l_balance_type_code;
106196 -- set the flag so later we will know whether the gain loss line needs to be created
106197
106198 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
106199 p_actual_flag :='A';
106200 END IF;
106201
106202 --
106203 -- bulk performance
106204 --
106205 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
106206 p_header_num => 0); -- 4262811
106207 --
106208 -- set accounting line options
106209 --
106210 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
106211 p_natural_side_code => 'D'
106212 , p_gain_or_loss_flag => 'N'
106213 , p_gl_transfer_mode_code => 'S'
106214 , p_acct_entry_type_code => 'A'
106215 , p_switch_side_flag => 'Y'
106216 , p_merge_duplicate_code => 'N'
106217 );
106218 --
106219 l_acc_rev_natural_side_code := 'C'; -- 4262811
106220 --
106221 --
106222 -- set accounting line type info
106223 --
106224 xla_ae_lines_pkg.SetAcctLineType
106225 (p_component_type => l_component_type
106226 ,p_event_type_code => l_event_type_code
106227 ,p_line_definition_owner_code => l_line_definition_owner_code
106228 ,p_line_definition_code => l_line_definition_code
106229 ,p_accounting_line_code => l_component_code
106230 ,p_accounting_line_type_code => l_component_type_code
106231 ,p_accounting_line_appl_id => l_component_appl_id
106232 ,p_amb_context_code => l_amb_context_code
106233 ,p_entity_code => l_entity_code
106234 ,p_event_class_code => l_event_class_code);
106235 --
106236 -- set accounting class
106237 --
106238 xla_ae_lines_pkg.SetAcctClass(
106239 p_accounting_class_code => 'OFFSET'
106240 , p_ae_header_id => l_ae_header_id
106241 );
106242
106243 --
106244 -- set rounding class
106245 --
106246 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
106247 'OFFSET';
106248
106249 --
106250 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
106251 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
106252 --
106253 -- bulk performance
106254 --
106255 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
106256
106257 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
106258 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
106259
106260 -- 4955764
106261 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
106262 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
106263
106264 -- 4458381 Public Sector Enh
106265
106266 --
106267 -- set accounting attributes for the line type
106268 --
106269 l_entered_amt_idx := 3;
106270 l_accted_amt_idx := 8;
106271 l_bflow_applied_to_amt_idx := NULL; -- 5132302
106272 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
106273 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
106274 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
106275 l_rec_acct_attrs.array_char_value(2) := p_source_12;
106276 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
106277 l_rec_acct_attrs.array_num_value(3) := p_source_18;
106278 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
106279 l_rec_acct_attrs.array_char_value(4) := p_source_15;
106280 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
106281 l_rec_acct_attrs.array_date_value(5) := p_source_19;
106282 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
106283 l_rec_acct_attrs.array_num_value(6) := p_source_20;
106284 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
106285 l_rec_acct_attrs.array_char_value(7) := p_source_21;
106286 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
106287 l_rec_acct_attrs.array_num_value(8) := p_source_22;
106288
106289 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
106290 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
106291
106292 ---------------------------------------------------------------------------------------------------------------
106293 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
106294 ---------------------------------------------------------------------------------------------------------------
106295 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
106296
106297 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
106298 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
106299
106300 IF xla_accounting_cache_pkg.GetValueChar
106301 (p_source_code => 'LEDGER_CATEGORY_CODE'
106302 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
106303 AND l_bflow_method_code = 'PRIOR_ENTRY'
106304 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
106305 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
106306 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
106307 )
106308 THEN
106309 xla_ae_lines_pkg.BflowUpgEntry
106310 (p_business_method_code => l_bflow_method_code
106311 ,p_business_class_code => l_bflow_class_code
106312 ,p_balance_type => l_balance_type_code);
106313 ELSE
106314 NULL;
106315 -- No business flow processing for business flow method of NONE.
106316 END IF;
106317
106318 --
106319 -- call analytical criteria
106320 --
106321
106322 --
106323 -- call description
106324 --
106325 -- No description or it is inherited.
106326 --
106327 -- call ADRs
106328 -- Bug 4922099
106329 --
106330 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
106331 (NVL(l_actual_upg_option, 'N') = 'O') OR
106332 (NVL(l_enc_upg_option, 'N') = 'O')
106333 )
106334 THEN
106335 NULL;
106336 --
106337 --
106338
106339 l_ccid := AcctDerRule_4(
106340 p_application_id => p_application_id
106341 , p_ae_header_id => l_ae_header_id
106342 , p_source_4 => p_source_4
106343 , x_transaction_coa_id => l_adr_transaction_coa_id
106344 , x_accounting_coa_id => l_adr_accounting_coa_id
106345 , x_value_type_code => l_adr_value_type_code
106346 , p_side => 'NA'
106347 );
106348
106349 xla_ae_lines_pkg.set_ccid(
106350 p_code_combination_id => l_ccid
106351 , p_value_type_code => l_adr_value_type_code
106352 , p_transaction_coa_id => l_adr_transaction_coa_id
106353 , p_accounting_coa_id => l_adr_accounting_coa_id
106354 , p_adr_code => 'CST_DEFAULT'
106355 , p_adr_type_code => 'S'
106356 , p_component_type => l_component_type
106357 , p_component_code => l_component_code
106358 , p_component_type_code => l_component_type_code
106359 , p_component_appl_id => l_component_appl_id
106360 , p_amb_context_code => l_amb_context_code
106361 , p_side => 'NA'
106362 );
106363
106364
106365 --
106366 --
106367 END IF;
106368 --
106369 -- Bug 4922099
106370 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
106371 (NVL(l_enc_upg_option, 'N') = 'O')
106372 ) AND
106373 (l_bflow_method_code = 'PRIOR_ENTRY')
106374 )
106375 THEN
106376 IF
106377 --
106378 1 = 2
106379 --
106380 THEN
106381 xla_accounting_err_pkg.build_message
106382 (p_appli_s_name => 'XLA'
106383 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
106384 ,p_token_1 => 'LINE_NUMBER'
106385 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
106386 ,p_token_2 => 'LINE_TYPE_NAME'
106387 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
106388 l_component_type
106389 ,l_component_code
106390 ,l_component_type_code
106391 ,l_component_appl_id
106392 ,l_amb_context_code
106393 ,l_entity_code
106394 ,l_event_class_code
106395 )
106396 ,p_token_3 => 'OWNER'
106397 ,p_value_3 => xla_lookups_pkg.get_meaning(
106398 p_lookup_type => 'XLA_OWNER_TYPE'
106399 ,p_lookup_code => l_component_type_code
106400 )
106401 ,p_token_4 => 'PRODUCT_NAME'
106402 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
106403 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
106404 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
106405 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
106406 ,p_ae_header_id => NULL
106407 );
106408
106409 IF (C_LEVEL_ERROR>= g_log_level) THEN
106410 trace
106411 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
106412 ,p_level => C_LEVEL_ERROR
106413 ,p_module => l_log_module);
106414 END IF;
106415 END IF;
106416 END IF;
106417 --
106418 --
106419 ------------------------------------------------------------------------------------------------
106420 -- 4219869 Business Flow
106421 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
106422 -- Prior Entry. Currently, the following code is always generated.
106423 ------------------------------------------------------------------------------------------------
106424 XLA_AE_LINES_PKG.ValidateCurrentLine;
106425
106426 ------------------------------------------------------------------------------------
106427 -- 4219869 Business Flow
106428 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
106429 ------------------------------------------------------------------------------------
106430 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
106431
106432 ----------------------------------------------------------------------------------
106433 -- 4219869 Business Flow
106434 -- Update journal entry status -- Need to generate this within IF <condition>
106435 ----------------------------------------------------------------------------------
106436 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
106437 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
106438 ,p_balance_type_code => l_balance_type_code
106439 );
106440
106441 -------------------------------------------------------------------------------------------
106442 -- 4262811 - Generate the Accrual Reversal lines
106443 -------------------------------------------------------------------------------------------
106444 BEGIN
106445 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
106446 (g_array_event(p_event_id).array_value_num('header_index'));
106447 IF l_acc_rev_flag IS NULL THEN
106448 l_acc_rev_flag := 'N';
106449 END IF;
106450 EXCEPTION
106451 WHEN OTHERS THEN
106452 l_acc_rev_flag := 'N';
106453 END;
106454 --
106455 IF (l_acc_rev_flag = 'Y') THEN
106456
106457 -- 4645092 ------------------------------------------------------------------------------
106458 -- To allow MPA report to determine if it should generate report process
106459 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
106460 ------------------------------------------------------------------------------------------
106461
106462 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
106463 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
106464 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
106465 -- call ADRs
106466 -- Bug 4922099
106467 --
106468 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
106469 (NVL(l_actual_upg_option, 'N') = 'O') OR
106470 (NVL(l_enc_upg_option, 'N') = 'O')
106471 )
106472 THEN
106473 NULL;
106474 --
106475 --
106476
106477 l_ccid := AcctDerRule_4(
106478 p_application_id => p_application_id
106479 , p_ae_header_id => l_ae_header_id
106480 , p_source_4 => p_source_4
106481 , x_transaction_coa_id => l_adr_transaction_coa_id
106482 , x_accounting_coa_id => l_adr_accounting_coa_id
106483 , x_value_type_code => l_adr_value_type_code
106484 , p_side => 'NA'
106485 );
106486
106487 xla_ae_lines_pkg.set_ccid(
106488 p_code_combination_id => l_ccid
106489 , p_value_type_code => l_adr_value_type_code
106490 , p_transaction_coa_id => l_adr_transaction_coa_id
106491 , p_accounting_coa_id => l_adr_accounting_coa_id
106492 , p_adr_code => 'CST_DEFAULT'
106493 , p_adr_type_code => 'S'
106494 , p_component_type => l_component_type
106495 , p_component_code => l_component_code
106496 , p_component_type_code => l_component_type_code
106497 , p_component_appl_id => l_component_appl_id
106498 , p_amb_context_code => l_amb_context_code
106499 , p_side => 'NA'
106500 );
106501
106502
106503 --
106504 --
106505 END IF;
106506
106507 --
106508 -- Update the line information that should be overwritten
106509 --
106510 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
106511 p_header_num => 1);
106512 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
106513
106514 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
106515
106516 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
106517 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
106518 END IF;
106519
106520 --
106521 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
106522 --
106523 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
106524 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
106525 ELSE
106526 ---------------------------------------------------------------------------------------------------
106527 -- 4262811a Switch Sign
106528 ---------------------------------------------------------------------------------------------------
106529 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
106530 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
106531 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
106532 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
106533 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
106534 -- 5132302
106535 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
106536 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
106537
106538 END IF;
106539
106540 -- 4955764
106541 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
106542 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
106543
106544
106545 XLA_AE_LINES_PKG.ValidateCurrentLine;
106546 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
106547
106548 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
106549 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
106550 ,p_balance_type_code => l_balance_type_code);
106551
106552 END IF;
106553
106554 -----------------------------------------------------------------------------------------
106555 -- 4262811 Multiperiod Accounting
106556 -----------------------------------------------------------------------------------------
106557 -- No MPA option is assigned.
106558
106559
106560 END IF;
106561 END IF;
106562 --
106563
106564 --
106565 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
106566 trace
106567 (p_msg => 'END of AcctLineType_193'
106568 ,p_level => C_LEVEL_PROCEDURE
106569 ,p_module => l_log_module);
106570 END IF;
106571 --
106572 EXCEPTION
106573 WHEN xla_exceptions_pkg.application_exception THEN
106574 RAISE;
106575 WHEN OTHERS THEN
106576 xla_exceptions_pkg.raise_message
106577 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_193');
106578 END AcctLineType_193;
106579 --
106580
106581 ---------------------------------------
106582 --
106583 -- PRIVATE FUNCTION
106584 -- AcctLineType_194
106585 --
106586 ---------------------------------------
106587 PROCEDURE AcctLineType_194 (
106588 p_application_id IN NUMBER
106589 ,p_event_id IN NUMBER
106590 ,p_calculate_acctd_flag IN VARCHAR2
106591 ,p_calculate_g_l_flag IN VARCHAR2
106592 ,p_actual_flag IN OUT VARCHAR2
106593 ,p_balance_type_code OUT VARCHAR2
106594 ,p_gain_or_loss_ref OUT VARCHAR2
106595
106596 --Cost Management Default Account
106597 , p_source_4 IN NUMBER
106598 --DISTRIBUTION_IDENTIFIER
106599 , p_source_11 IN NUMBER
106600 --Distribution Type
106601 , p_source_12 IN VARCHAR2
106602 , p_source_12_meaning IN VARCHAR2
106603 --Entered Currency Code
106604 , p_source_15 IN VARCHAR2
106605 --Entered Amount
106606 , p_source_18 IN NUMBER
106607 --Currency Conversion Date
106608 , p_source_19 IN DATE
106609 --Currency Conversion Rate
106610 , p_source_20 IN NUMBER
106611 --Currency Conversion Type
106612 , p_source_21 IN VARCHAR2
106613 --Accounted Amount
106614 , p_source_22 IN NUMBER
106615 --Accounting Line Type
106616 , p_source_24 IN NUMBER
106617 )
106618 IS
106619
106620 l_component_type VARCHAR2(80);
106621 l_component_code VARCHAR2(30);
106622 l_component_type_code VARCHAR2(1);
106623 l_component_appl_id INTEGER;
106624 l_amb_context_code VARCHAR2(30);
106625 l_entity_code VARCHAR2(30);
106626 l_event_class_code VARCHAR2(30);
106627 l_ae_header_id NUMBER;
106628 l_event_type_code VARCHAR2(30);
106629 l_line_definition_code VARCHAR2(30);
106630 l_line_definition_owner_code VARCHAR2(1);
106631 --
106632 -- adr variables
106633 l_segment VARCHAR2(30);
106634 l_ccid NUMBER;
106635 l_adr_transaction_coa_id NUMBER;
106636 l_adr_accounting_coa_id NUMBER;
106637 l_adr_flexfield_segment_code VARCHAR2(30);
106638 l_adr_flex_value_set_id NUMBER;
106639 l_adr_value_type_code VARCHAR2(30);
106640 l_adr_value_combination_id NUMBER;
106641 l_adr_value_segment_code VARCHAR2(30);
106642
106643 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
106644 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
106645 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
106646 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
106647
106648 -- 4262811 Variables ------------------------------------------------------------------------------------------
106649 l_entered_amt_idx NUMBER;
106650 l_accted_amt_idx NUMBER;
106651 l_acc_rev_flag VARCHAR2(1);
106652 l_accrual_line_num NUMBER;
106653 l_tmp_amt NUMBER;
106654 l_acc_rev_natural_side_code VARCHAR2(1);
106655
106656 l_num_entries NUMBER;
106657 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
106658 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
106659 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
106660 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
106661 l_recog_line_1 NUMBER;
106662 l_recog_line_2 NUMBER;
106663
106664 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
106665 l_bflow_applied_to_amt NUMBER; -- 5132302
106666 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
106667
106668 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
106669
106670 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
106671 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
106672
106673 ---------------------------------------------------------------------------------------------------------------
106674
106675
106676 --
106677 -- bulk performance
106678 --
106679 l_balance_type_code VARCHAR2(1);
106680 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
106681 l_log_module VARCHAR2(240);
106682
106683 --
106684 -- Upgrade strategy
106685 --
106686 l_actual_upg_option VARCHAR2(1);
106687 l_enc_upg_option VARCHAR2(1);
106688
106689 --
106690 BEGIN
106691 --
106692 IF g_log_enabled THEN
106693 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_194';
106694 END IF;
106695 --
106696 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
106697
106698 trace
106699 (p_msg => 'BEGIN of AcctLineType_194'
106700 ,p_level => C_LEVEL_PROCEDURE
106701 ,p_module => l_log_module);
106702
106703 END IF;
106704 --
106705 l_component_type := 'AMB_JLT';
106706 l_component_code := 'OFFSET';
106707 l_component_type_code := 'S';
106708 l_component_appl_id := 707;
106709 l_amb_context_code := 'DEFAULT';
106710 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
106711 l_event_class_code := 'USER_DEFINE';
106712 l_event_type_code := 'UDIR_INTERORG_RCPT_NO_TP';
106713 l_line_definition_owner_code := 'S';
106714 l_line_definition_code := 'USER_DIR_INTERORG_RCPT_NO_TP';
106715 --
106716 l_balance_type_code := 'A';
106717 l_segment := NULL;
106718 l_ccid := NULL;
106719 l_adr_transaction_coa_id := NULL;
106720 l_adr_accounting_coa_id := NULL;
106721 l_adr_flexfield_segment_code := NULL;
106722 l_adr_flex_value_set_id := NULL;
106723 l_adr_value_type_code := NULL;
106724 l_adr_value_combination_id := NULL;
106725 l_adr_value_segment_code := NULL;
106726
106727 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
106728 l_bflow_class_code := ''; -- 4219869 Business Flow
106729 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
106730 l_budgetary_control_flag := 'N';
106731
106732 l_bflow_applied_to_amt_idx := NULL; -- 5132302
106733 l_bflow_applied_to_amt := NULL; -- 5132302
106734 l_entered_amt_idx := NULL; -- 4262811
106735 l_accted_amt_idx := NULL; -- 4262811
106736 l_acc_rev_flag := NULL; -- 4262811
106737 l_accrual_line_num := NULL; -- 4262811
106738 l_tmp_amt := NULL; -- 4262811
106739 --
106740
106741 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
106742 l_balance_type_code <> 'B' THEN
106743 IF NVL(p_source_24,9E125) = 2
106744 THEN
106745
106746 --
106747 XLA_AE_LINES_PKG.SetNewLine;
106748
106749 p_balance_type_code := l_balance_type_code;
106750 -- set the flag so later we will know whether the gain loss line needs to be created
106751
106752 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
106753 p_actual_flag :='A';
106754 END IF;
106755
106756 --
106757 -- bulk performance
106758 --
106759 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
106760 p_header_num => 0); -- 4262811
106761 --
106762 -- set accounting line options
106763 --
106764 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
106765 p_natural_side_code => 'D'
106766 , p_gain_or_loss_flag => 'N'
106767 , p_gl_transfer_mode_code => 'S'
106768 , p_acct_entry_type_code => 'A'
106769 , p_switch_side_flag => 'Y'
106770 , p_merge_duplicate_code => 'N'
106771 );
106772 --
106773 l_acc_rev_natural_side_code := 'C'; -- 4262811
106774 --
106775 --
106776 -- set accounting line type info
106777 --
106778 xla_ae_lines_pkg.SetAcctLineType
106779 (p_component_type => l_component_type
106780 ,p_event_type_code => l_event_type_code
106781 ,p_line_definition_owner_code => l_line_definition_owner_code
106782 ,p_line_definition_code => l_line_definition_code
106783 ,p_accounting_line_code => l_component_code
106784 ,p_accounting_line_type_code => l_component_type_code
106785 ,p_accounting_line_appl_id => l_component_appl_id
106786 ,p_amb_context_code => l_amb_context_code
106787 ,p_entity_code => l_entity_code
106788 ,p_event_class_code => l_event_class_code);
106789 --
106790 -- set accounting class
106791 --
106792 xla_ae_lines_pkg.SetAcctClass(
106793 p_accounting_class_code => 'OFFSET'
106794 , p_ae_header_id => l_ae_header_id
106795 );
106796
106797 --
106798 -- set rounding class
106799 --
106800 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
106801 'OFFSET';
106802
106803 --
106804 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
106805 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
106806 --
106807 -- bulk performance
106808 --
106809 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
106810
106811 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
106812 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
106813
106814 -- 4955764
106815 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
106816 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
106817
106818 -- 4458381 Public Sector Enh
106819
106820 --
106821 -- set accounting attributes for the line type
106822 --
106823 l_entered_amt_idx := 3;
106824 l_accted_amt_idx := 8;
106825 l_bflow_applied_to_amt_idx := NULL; -- 5132302
106826 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
106827 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
106828 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
106829 l_rec_acct_attrs.array_char_value(2) := p_source_12;
106830 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
106831 l_rec_acct_attrs.array_num_value(3) := p_source_18;
106832 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
106833 l_rec_acct_attrs.array_char_value(4) := p_source_15;
106834 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
106835 l_rec_acct_attrs.array_date_value(5) := p_source_19;
106836 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
106837 l_rec_acct_attrs.array_num_value(6) := p_source_20;
106838 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
106839 l_rec_acct_attrs.array_char_value(7) := p_source_21;
106840 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
106841 l_rec_acct_attrs.array_num_value(8) := p_source_22;
106842
106843 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
106844 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
106845
106846 ---------------------------------------------------------------------------------------------------------------
106847 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
106848 ---------------------------------------------------------------------------------------------------------------
106849 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
106850
106851 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
106852 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
106853
106854 IF xla_accounting_cache_pkg.GetValueChar
106855 (p_source_code => 'LEDGER_CATEGORY_CODE'
106856 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
106857 AND l_bflow_method_code = 'PRIOR_ENTRY'
106858 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
106859 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
106860 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
106861 )
106862 THEN
106863 xla_ae_lines_pkg.BflowUpgEntry
106864 (p_business_method_code => l_bflow_method_code
106865 ,p_business_class_code => l_bflow_class_code
106866 ,p_balance_type => l_balance_type_code);
106867 ELSE
106868 NULL;
106869 -- No business flow processing for business flow method of NONE.
106870 END IF;
106871
106872 --
106873 -- call analytical criteria
106874 --
106875
106876 --
106877 -- call description
106878 --
106879 -- No description or it is inherited.
106880 --
106881 -- call ADRs
106882 -- Bug 4922099
106883 --
106884 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
106885 (NVL(l_actual_upg_option, 'N') = 'O') OR
106886 (NVL(l_enc_upg_option, 'N') = 'O')
106887 )
106888 THEN
106889 NULL;
106890 --
106891 --
106892
106893 l_ccid := AcctDerRule_4(
106894 p_application_id => p_application_id
106895 , p_ae_header_id => l_ae_header_id
106896 , p_source_4 => p_source_4
106897 , x_transaction_coa_id => l_adr_transaction_coa_id
106898 , x_accounting_coa_id => l_adr_accounting_coa_id
106899 , x_value_type_code => l_adr_value_type_code
106900 , p_side => 'NA'
106901 );
106902
106903 xla_ae_lines_pkg.set_ccid(
106904 p_code_combination_id => l_ccid
106905 , p_value_type_code => l_adr_value_type_code
106906 , p_transaction_coa_id => l_adr_transaction_coa_id
106907 , p_accounting_coa_id => l_adr_accounting_coa_id
106908 , p_adr_code => 'CST_DEFAULT'
106909 , p_adr_type_code => 'S'
106910 , p_component_type => l_component_type
106911 , p_component_code => l_component_code
106912 , p_component_type_code => l_component_type_code
106913 , p_component_appl_id => l_component_appl_id
106914 , p_amb_context_code => l_amb_context_code
106915 , p_side => 'NA'
106916 );
106917
106918
106919 --
106920 --
106921 END IF;
106922 --
106923 -- Bug 4922099
106924 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
106925 (NVL(l_enc_upg_option, 'N') = 'O')
106926 ) AND
106927 (l_bflow_method_code = 'PRIOR_ENTRY')
106928 )
106929 THEN
106930 IF
106931 --
106932 1 = 2
106933 --
106934 THEN
106935 xla_accounting_err_pkg.build_message
106936 (p_appli_s_name => 'XLA'
106937 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
106938 ,p_token_1 => 'LINE_NUMBER'
106939 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
106940 ,p_token_2 => 'LINE_TYPE_NAME'
106941 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
106942 l_component_type
106943 ,l_component_code
106944 ,l_component_type_code
106945 ,l_component_appl_id
106946 ,l_amb_context_code
106947 ,l_entity_code
106948 ,l_event_class_code
106949 )
106950 ,p_token_3 => 'OWNER'
106951 ,p_value_3 => xla_lookups_pkg.get_meaning(
106952 p_lookup_type => 'XLA_OWNER_TYPE'
106953 ,p_lookup_code => l_component_type_code
106954 )
106955 ,p_token_4 => 'PRODUCT_NAME'
106956 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
106957 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
106958 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
106959 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
106960 ,p_ae_header_id => NULL
106961 );
106962
106963 IF (C_LEVEL_ERROR>= g_log_level) THEN
106964 trace
106965 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
106966 ,p_level => C_LEVEL_ERROR
106967 ,p_module => l_log_module);
106968 END IF;
106969 END IF;
106970 END IF;
106971 --
106972 --
106973 ------------------------------------------------------------------------------------------------
106974 -- 4219869 Business Flow
106975 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
106976 -- Prior Entry. Currently, the following code is always generated.
106977 ------------------------------------------------------------------------------------------------
106978 XLA_AE_LINES_PKG.ValidateCurrentLine;
106979
106980 ------------------------------------------------------------------------------------
106981 -- 4219869 Business Flow
106982 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
106983 ------------------------------------------------------------------------------------
106984 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
106985
106986 ----------------------------------------------------------------------------------
106987 -- 4219869 Business Flow
106988 -- Update journal entry status -- Need to generate this within IF <condition>
106989 ----------------------------------------------------------------------------------
106990 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
106991 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
106992 ,p_balance_type_code => l_balance_type_code
106993 );
106994
106995 -------------------------------------------------------------------------------------------
106996 -- 4262811 - Generate the Accrual Reversal lines
106997 -------------------------------------------------------------------------------------------
106998 BEGIN
106999 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
107000 (g_array_event(p_event_id).array_value_num('header_index'));
107001 IF l_acc_rev_flag IS NULL THEN
107002 l_acc_rev_flag := 'N';
107003 END IF;
107004 EXCEPTION
107005 WHEN OTHERS THEN
107006 l_acc_rev_flag := 'N';
107007 END;
107008 --
107009 IF (l_acc_rev_flag = 'Y') THEN
107010
107011 -- 4645092 ------------------------------------------------------------------------------
107012 -- To allow MPA report to determine if it should generate report process
107013 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
107014 ------------------------------------------------------------------------------------------
107015
107016 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
107017 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
107018 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
107019 -- call ADRs
107020 -- Bug 4922099
107021 --
107022 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
107023 (NVL(l_actual_upg_option, 'N') = 'O') OR
107024 (NVL(l_enc_upg_option, 'N') = 'O')
107025 )
107026 THEN
107027 NULL;
107028 --
107029 --
107030
107031 l_ccid := AcctDerRule_4(
107032 p_application_id => p_application_id
107033 , p_ae_header_id => l_ae_header_id
107034 , p_source_4 => p_source_4
107035 , x_transaction_coa_id => l_adr_transaction_coa_id
107036 , x_accounting_coa_id => l_adr_accounting_coa_id
107037 , x_value_type_code => l_adr_value_type_code
107038 , p_side => 'NA'
107039 );
107040
107041 xla_ae_lines_pkg.set_ccid(
107042 p_code_combination_id => l_ccid
107043 , p_value_type_code => l_adr_value_type_code
107044 , p_transaction_coa_id => l_adr_transaction_coa_id
107045 , p_accounting_coa_id => l_adr_accounting_coa_id
107046 , p_adr_code => 'CST_DEFAULT'
107047 , p_adr_type_code => 'S'
107048 , p_component_type => l_component_type
107049 , p_component_code => l_component_code
107050 , p_component_type_code => l_component_type_code
107051 , p_component_appl_id => l_component_appl_id
107052 , p_amb_context_code => l_amb_context_code
107053 , p_side => 'NA'
107054 );
107055
107056
107057 --
107058 --
107059 END IF;
107060
107061 --
107062 -- Update the line information that should be overwritten
107063 --
107064 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
107065 p_header_num => 1);
107066 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
107067
107068 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
107069
107070 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
107071 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
107072 END IF;
107073
107074 --
107075 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
107076 --
107077 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
107078 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
107079 ELSE
107080 ---------------------------------------------------------------------------------------------------
107081 -- 4262811a Switch Sign
107082 ---------------------------------------------------------------------------------------------------
107083 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
107084 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
107085 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
107086 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
107087 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
107088 -- 5132302
107089 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
107090 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
107091
107092 END IF;
107093
107094 -- 4955764
107095 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
107096 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
107097
107098
107099 XLA_AE_LINES_PKG.ValidateCurrentLine;
107100 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
107101
107102 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
107103 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
107104 ,p_balance_type_code => l_balance_type_code);
107105
107106 END IF;
107107
107108 -----------------------------------------------------------------------------------------
107109 -- 4262811 Multiperiod Accounting
107110 -----------------------------------------------------------------------------------------
107111 -- No MPA option is assigned.
107112
107113
107114 END IF;
107115 END IF;
107116 --
107117
107118 --
107119 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
107120 trace
107121 (p_msg => 'END of AcctLineType_194'
107122 ,p_level => C_LEVEL_PROCEDURE
107123 ,p_module => l_log_module);
107124 END IF;
107125 --
107126 EXCEPTION
107127 WHEN xla_exceptions_pkg.application_exception THEN
107128 RAISE;
107129 WHEN OTHERS THEN
107130 xla_exceptions_pkg.raise_message
107131 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_194');
107132 END AcctLineType_194;
107133 --
107134
107135 ---------------------------------------
107136 --
107137 -- PRIVATE FUNCTION
107138 -- AcctLineType_195
107139 --
107140 ---------------------------------------
107141 PROCEDURE AcctLineType_195 (
107142 p_application_id IN NUMBER
107143 ,p_event_id IN NUMBER
107144 ,p_calculate_acctd_flag IN VARCHAR2
107145 ,p_calculate_g_l_flag IN VARCHAR2
107146 ,p_actual_flag IN OUT VARCHAR2
107147 ,p_balance_type_code OUT VARCHAR2
107148 ,p_gain_or_loss_ref OUT VARCHAR2
107149
107150 --Cost Management Default Account
107151 , p_source_4 IN NUMBER
107152 --DISTRIBUTION_IDENTIFIER
107153 , p_source_11 IN NUMBER
107154 --Distribution Type
107155 , p_source_12 IN VARCHAR2
107156 , p_source_12_meaning IN VARCHAR2
107157 --Entered Currency Code
107158 , p_source_15 IN VARCHAR2
107159 --Entered Amount
107160 , p_source_18 IN NUMBER
107161 --Currency Conversion Date
107162 , p_source_19 IN DATE
107163 --Currency Conversion Rate
107164 , p_source_20 IN NUMBER
107165 --Currency Conversion Type
107166 , p_source_21 IN VARCHAR2
107167 --Accounted Amount
107168 , p_source_22 IN NUMBER
107169 --Accounting Line Type
107170 , p_source_24 IN NUMBER
107171 )
107172 IS
107173
107174 l_component_type VARCHAR2(80);
107175 l_component_code VARCHAR2(30);
107176 l_component_type_code VARCHAR2(1);
107177 l_component_appl_id INTEGER;
107178 l_amb_context_code VARCHAR2(30);
107179 l_entity_code VARCHAR2(30);
107180 l_event_class_code VARCHAR2(30);
107181 l_ae_header_id NUMBER;
107182 l_event_type_code VARCHAR2(30);
107183 l_line_definition_code VARCHAR2(30);
107184 l_line_definition_owner_code VARCHAR2(1);
107185 --
107186 -- adr variables
107187 l_segment VARCHAR2(30);
107188 l_ccid NUMBER;
107189 l_adr_transaction_coa_id NUMBER;
107190 l_adr_accounting_coa_id NUMBER;
107191 l_adr_flexfield_segment_code VARCHAR2(30);
107192 l_adr_flex_value_set_id NUMBER;
107193 l_adr_value_type_code VARCHAR2(30);
107194 l_adr_value_combination_id NUMBER;
107195 l_adr_value_segment_code VARCHAR2(30);
107196
107197 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
107198 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
107199 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
107200 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
107201
107202 -- 4262811 Variables ------------------------------------------------------------------------------------------
107203 l_entered_amt_idx NUMBER;
107204 l_accted_amt_idx NUMBER;
107205 l_acc_rev_flag VARCHAR2(1);
107206 l_accrual_line_num NUMBER;
107207 l_tmp_amt NUMBER;
107208 l_acc_rev_natural_side_code VARCHAR2(1);
107209
107210 l_num_entries NUMBER;
107211 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
107212 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
107213 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
107214 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
107215 l_recog_line_1 NUMBER;
107216 l_recog_line_2 NUMBER;
107217
107218 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
107219 l_bflow_applied_to_amt NUMBER; -- 5132302
107220 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
107221
107222 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
107223
107224 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
107225 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
107226
107227 ---------------------------------------------------------------------------------------------------------------
107228
107229
107230 --
107231 -- bulk performance
107232 --
107233 l_balance_type_code VARCHAR2(1);
107234 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
107235 l_log_module VARCHAR2(240);
107236
107237 --
107238 -- Upgrade strategy
107239 --
107240 l_actual_upg_option VARCHAR2(1);
107241 l_enc_upg_option VARCHAR2(1);
107242
107243 --
107244 BEGIN
107245 --
107246 IF g_log_enabled THEN
107247 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_195';
107248 END IF;
107249 --
107250 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
107251
107252 trace
107253 (p_msg => 'BEGIN of AcctLineType_195'
107254 ,p_level => C_LEVEL_PROCEDURE
107255 ,p_module => l_log_module);
107256
107257 END IF;
107258 --
107259 l_component_type := 'AMB_JLT';
107260 l_component_code := 'OFFSET';
107261 l_component_type_code := 'S';
107262 l_component_appl_id := 707;
107263 l_amb_context_code := 'DEFAULT';
107264 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
107265 l_event_class_code := 'USER_DEFINE';
107266 l_event_type_code := 'UMISC_RCPT';
107267 l_line_definition_owner_code := 'S';
107268 l_line_definition_code := 'USER_RCPT';
107269 --
107270 l_balance_type_code := 'A';
107271 l_segment := NULL;
107272 l_ccid := NULL;
107273 l_adr_transaction_coa_id := NULL;
107274 l_adr_accounting_coa_id := NULL;
107275 l_adr_flexfield_segment_code := NULL;
107276 l_adr_flex_value_set_id := NULL;
107277 l_adr_value_type_code := NULL;
107278 l_adr_value_combination_id := NULL;
107279 l_adr_value_segment_code := NULL;
107280
107281 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
107282 l_bflow_class_code := ''; -- 4219869 Business Flow
107283 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
107284 l_budgetary_control_flag := 'N';
107285
107286 l_bflow_applied_to_amt_idx := NULL; -- 5132302
107287 l_bflow_applied_to_amt := NULL; -- 5132302
107288 l_entered_amt_idx := NULL; -- 4262811
107289 l_accted_amt_idx := NULL; -- 4262811
107290 l_acc_rev_flag := NULL; -- 4262811
107291 l_accrual_line_num := NULL; -- 4262811
107292 l_tmp_amt := NULL; -- 4262811
107293 --
107294
107295 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
107296 l_balance_type_code <> 'B' THEN
107297 IF NVL(p_source_24,9E125) = 2
107298 THEN
107299
107300 --
107301 XLA_AE_LINES_PKG.SetNewLine;
107302
107303 p_balance_type_code := l_balance_type_code;
107304 -- set the flag so later we will know whether the gain loss line needs to be created
107305
107306 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
107307 p_actual_flag :='A';
107308 END IF;
107309
107310 --
107311 -- bulk performance
107312 --
107313 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
107314 p_header_num => 0); -- 4262811
107315 --
107316 -- set accounting line options
107317 --
107318 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
107319 p_natural_side_code => 'D'
107320 , p_gain_or_loss_flag => 'N'
107321 , p_gl_transfer_mode_code => 'S'
107322 , p_acct_entry_type_code => 'A'
107323 , p_switch_side_flag => 'Y'
107324 , p_merge_duplicate_code => 'N'
107325 );
107326 --
107327 l_acc_rev_natural_side_code := 'C'; -- 4262811
107328 --
107329 --
107330 -- set accounting line type info
107331 --
107332 xla_ae_lines_pkg.SetAcctLineType
107333 (p_component_type => l_component_type
107334 ,p_event_type_code => l_event_type_code
107335 ,p_line_definition_owner_code => l_line_definition_owner_code
107336 ,p_line_definition_code => l_line_definition_code
107337 ,p_accounting_line_code => l_component_code
107338 ,p_accounting_line_type_code => l_component_type_code
107339 ,p_accounting_line_appl_id => l_component_appl_id
107340 ,p_amb_context_code => l_amb_context_code
107341 ,p_entity_code => l_entity_code
107342 ,p_event_class_code => l_event_class_code);
107343 --
107344 -- set accounting class
107345 --
107346 xla_ae_lines_pkg.SetAcctClass(
107347 p_accounting_class_code => 'OFFSET'
107348 , p_ae_header_id => l_ae_header_id
107349 );
107350
107351 --
107352 -- set rounding class
107353 --
107354 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
107355 'OFFSET';
107356
107357 --
107358 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
107359 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
107360 --
107361 -- bulk performance
107362 --
107363 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
107364
107365 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
107366 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
107367
107368 -- 4955764
107369 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
107370 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
107371
107372 -- 4458381 Public Sector Enh
107373
107374 --
107375 -- set accounting attributes for the line type
107376 --
107377 l_entered_amt_idx := 3;
107378 l_accted_amt_idx := 8;
107379 l_bflow_applied_to_amt_idx := NULL; -- 5132302
107380 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
107381 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
107382 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
107383 l_rec_acct_attrs.array_char_value(2) := p_source_12;
107384 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
107385 l_rec_acct_attrs.array_num_value(3) := p_source_18;
107386 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
107387 l_rec_acct_attrs.array_char_value(4) := p_source_15;
107388 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
107389 l_rec_acct_attrs.array_date_value(5) := p_source_19;
107390 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
107391 l_rec_acct_attrs.array_num_value(6) := p_source_20;
107392 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
107393 l_rec_acct_attrs.array_char_value(7) := p_source_21;
107394 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
107395 l_rec_acct_attrs.array_num_value(8) := p_source_22;
107396
107397 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
107398 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
107399
107400 ---------------------------------------------------------------------------------------------------------------
107401 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
107402 ---------------------------------------------------------------------------------------------------------------
107403 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
107404
107405 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
107406 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
107407
107408 IF xla_accounting_cache_pkg.GetValueChar
107409 (p_source_code => 'LEDGER_CATEGORY_CODE'
107410 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
107411 AND l_bflow_method_code = 'PRIOR_ENTRY'
107412 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
107413 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
107414 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
107415 )
107416 THEN
107417 xla_ae_lines_pkg.BflowUpgEntry
107418 (p_business_method_code => l_bflow_method_code
107419 ,p_business_class_code => l_bflow_class_code
107420 ,p_balance_type => l_balance_type_code);
107421 ELSE
107422 NULL;
107423 -- No business flow processing for business flow method of NONE.
107424 END IF;
107425
107426 --
107427 -- call analytical criteria
107428 --
107429
107430 --
107431 -- call description
107432 --
107433 -- No description or it is inherited.
107434 --
107435 -- call ADRs
107436 -- Bug 4922099
107437 --
107438 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
107439 (NVL(l_actual_upg_option, 'N') = 'O') OR
107440 (NVL(l_enc_upg_option, 'N') = 'O')
107441 )
107442 THEN
107443 NULL;
107444 --
107445 --
107446
107447 l_ccid := AcctDerRule_4(
107448 p_application_id => p_application_id
107449 , p_ae_header_id => l_ae_header_id
107450 , p_source_4 => p_source_4
107451 , x_transaction_coa_id => l_adr_transaction_coa_id
107452 , x_accounting_coa_id => l_adr_accounting_coa_id
107453 , x_value_type_code => l_adr_value_type_code
107454 , p_side => 'NA'
107455 );
107456
107457 xla_ae_lines_pkg.set_ccid(
107458 p_code_combination_id => l_ccid
107459 , p_value_type_code => l_adr_value_type_code
107460 , p_transaction_coa_id => l_adr_transaction_coa_id
107461 , p_accounting_coa_id => l_adr_accounting_coa_id
107462 , p_adr_code => 'CST_DEFAULT'
107463 , p_adr_type_code => 'S'
107464 , p_component_type => l_component_type
107465 , p_component_code => l_component_code
107466 , p_component_type_code => l_component_type_code
107467 , p_component_appl_id => l_component_appl_id
107468 , p_amb_context_code => l_amb_context_code
107469 , p_side => 'NA'
107470 );
107471
107472
107473 --
107474 --
107475 END IF;
107476 --
107477 -- Bug 4922099
107478 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
107479 (NVL(l_enc_upg_option, 'N') = 'O')
107480 ) AND
107481 (l_bflow_method_code = 'PRIOR_ENTRY')
107482 )
107483 THEN
107484 IF
107485 --
107486 1 = 2
107487 --
107488 THEN
107489 xla_accounting_err_pkg.build_message
107490 (p_appli_s_name => 'XLA'
107491 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
107492 ,p_token_1 => 'LINE_NUMBER'
107493 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
107494 ,p_token_2 => 'LINE_TYPE_NAME'
107495 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
107496 l_component_type
107497 ,l_component_code
107498 ,l_component_type_code
107499 ,l_component_appl_id
107500 ,l_amb_context_code
107501 ,l_entity_code
107502 ,l_event_class_code
107503 )
107504 ,p_token_3 => 'OWNER'
107505 ,p_value_3 => xla_lookups_pkg.get_meaning(
107506 p_lookup_type => 'XLA_OWNER_TYPE'
107507 ,p_lookup_code => l_component_type_code
107508 )
107509 ,p_token_4 => 'PRODUCT_NAME'
107510 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
107511 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
107512 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
107513 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
107514 ,p_ae_header_id => NULL
107515 );
107516
107517 IF (C_LEVEL_ERROR>= g_log_level) THEN
107518 trace
107519 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
107520 ,p_level => C_LEVEL_ERROR
107521 ,p_module => l_log_module);
107522 END IF;
107523 END IF;
107524 END IF;
107525 --
107526 --
107527 ------------------------------------------------------------------------------------------------
107528 -- 4219869 Business Flow
107529 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
107530 -- Prior Entry. Currently, the following code is always generated.
107531 ------------------------------------------------------------------------------------------------
107532 XLA_AE_LINES_PKG.ValidateCurrentLine;
107533
107534 ------------------------------------------------------------------------------------
107535 -- 4219869 Business Flow
107536 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
107537 ------------------------------------------------------------------------------------
107538 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
107539
107540 ----------------------------------------------------------------------------------
107541 -- 4219869 Business Flow
107542 -- Update journal entry status -- Need to generate this within IF <condition>
107543 ----------------------------------------------------------------------------------
107544 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
107545 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
107546 ,p_balance_type_code => l_balance_type_code
107547 );
107548
107549 -------------------------------------------------------------------------------------------
107550 -- 4262811 - Generate the Accrual Reversal lines
107551 -------------------------------------------------------------------------------------------
107552 BEGIN
107553 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
107554 (g_array_event(p_event_id).array_value_num('header_index'));
107555 IF l_acc_rev_flag IS NULL THEN
107556 l_acc_rev_flag := 'N';
107557 END IF;
107558 EXCEPTION
107559 WHEN OTHERS THEN
107560 l_acc_rev_flag := 'N';
107561 END;
107562 --
107563 IF (l_acc_rev_flag = 'Y') THEN
107564
107565 -- 4645092 ------------------------------------------------------------------------------
107566 -- To allow MPA report to determine if it should generate report process
107567 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
107568 ------------------------------------------------------------------------------------------
107569
107570 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
107571 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
107572 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
107573 -- call ADRs
107574 -- Bug 4922099
107575 --
107576 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
107577 (NVL(l_actual_upg_option, 'N') = 'O') OR
107578 (NVL(l_enc_upg_option, 'N') = 'O')
107579 )
107580 THEN
107581 NULL;
107582 --
107583 --
107584
107585 l_ccid := AcctDerRule_4(
107586 p_application_id => p_application_id
107587 , p_ae_header_id => l_ae_header_id
107588 , p_source_4 => p_source_4
107589 , x_transaction_coa_id => l_adr_transaction_coa_id
107590 , x_accounting_coa_id => l_adr_accounting_coa_id
107591 , x_value_type_code => l_adr_value_type_code
107592 , p_side => 'NA'
107593 );
107594
107595 xla_ae_lines_pkg.set_ccid(
107596 p_code_combination_id => l_ccid
107597 , p_value_type_code => l_adr_value_type_code
107598 , p_transaction_coa_id => l_adr_transaction_coa_id
107599 , p_accounting_coa_id => l_adr_accounting_coa_id
107600 , p_adr_code => 'CST_DEFAULT'
107601 , p_adr_type_code => 'S'
107602 , p_component_type => l_component_type
107603 , p_component_code => l_component_code
107604 , p_component_type_code => l_component_type_code
107605 , p_component_appl_id => l_component_appl_id
107606 , p_amb_context_code => l_amb_context_code
107607 , p_side => 'NA'
107608 );
107609
107610
107611 --
107612 --
107613 END IF;
107614
107615 --
107616 -- Update the line information that should be overwritten
107617 --
107618 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
107619 p_header_num => 1);
107620 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
107621
107622 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
107623
107624 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
107625 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
107626 END IF;
107627
107628 --
107629 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
107630 --
107631 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
107632 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
107633 ELSE
107634 ---------------------------------------------------------------------------------------------------
107635 -- 4262811a Switch Sign
107636 ---------------------------------------------------------------------------------------------------
107637 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
107638 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
107639 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
107640 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
107641 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
107642 -- 5132302
107643 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
107644 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
107645
107646 END IF;
107647
107648 -- 4955764
107649 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
107650 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
107651
107652
107653 XLA_AE_LINES_PKG.ValidateCurrentLine;
107654 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
107655
107656 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
107657 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
107658 ,p_balance_type_code => l_balance_type_code);
107659
107660 END IF;
107661
107662 -----------------------------------------------------------------------------------------
107663 -- 4262811 Multiperiod Accounting
107664 -----------------------------------------------------------------------------------------
107665 -- No MPA option is assigned.
107666
107667
107668 END IF;
107669 END IF;
107670 --
107671
107672 --
107673 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
107674 trace
107675 (p_msg => 'END of AcctLineType_195'
107676 ,p_level => C_LEVEL_PROCEDURE
107677 ,p_module => l_log_module);
107678 END IF;
107679 --
107680 EXCEPTION
107681 WHEN xla_exceptions_pkg.application_exception THEN
107682 RAISE;
107683 WHEN OTHERS THEN
107684 xla_exceptions_pkg.raise_message
107685 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_195');
107686 END AcctLineType_195;
107687 --
107688
107689 ---------------------------------------
107690 --
107691 -- PRIVATE FUNCTION
107692 -- AcctLineType_196
107693 --
107694 ---------------------------------------
107695 PROCEDURE AcctLineType_196 (
107696 p_application_id IN NUMBER
107697 ,p_event_id IN NUMBER
107698 ,p_calculate_acctd_flag IN VARCHAR2
107699 ,p_calculate_g_l_flag IN VARCHAR2
107700 ,p_actual_flag IN OUT VARCHAR2
107701 ,p_balance_type_code OUT VARCHAR2
107702 ,p_gain_or_loss_ref OUT VARCHAR2
107703
107704 --Cost Management Default Account
107705 , p_source_4 IN NUMBER
107706 --DISTRIBUTION_IDENTIFIER
107707 , p_source_11 IN NUMBER
107708 --Distribution Type
107709 , p_source_12 IN VARCHAR2
107710 , p_source_12_meaning IN VARCHAR2
107711 --Entered Currency Code
107712 , p_source_15 IN VARCHAR2
107713 --Entered Amount
107714 , p_source_18 IN NUMBER
107715 --Currency Conversion Date
107716 , p_source_19 IN DATE
107717 --Currency Conversion Rate
107718 , p_source_20 IN NUMBER
107719 --Currency Conversion Type
107720 , p_source_21 IN VARCHAR2
107721 --Accounted Amount
107722 , p_source_22 IN NUMBER
107723 --Accounting Line Type
107724 , p_source_24 IN NUMBER
107725 )
107726 IS
107727
107728 l_component_type VARCHAR2(80);
107729 l_component_code VARCHAR2(30);
107730 l_component_type_code VARCHAR2(1);
107731 l_component_appl_id INTEGER;
107732 l_amb_context_code VARCHAR2(30);
107733 l_entity_code VARCHAR2(30);
107734 l_event_class_code VARCHAR2(30);
107735 l_ae_header_id NUMBER;
107736 l_event_type_code VARCHAR2(30);
107737 l_line_definition_code VARCHAR2(30);
107738 l_line_definition_owner_code VARCHAR2(1);
107739 --
107740 -- adr variables
107741 l_segment VARCHAR2(30);
107742 l_ccid NUMBER;
107743 l_adr_transaction_coa_id NUMBER;
107744 l_adr_accounting_coa_id NUMBER;
107745 l_adr_flexfield_segment_code VARCHAR2(30);
107746 l_adr_flex_value_set_id NUMBER;
107747 l_adr_value_type_code VARCHAR2(30);
107748 l_adr_value_combination_id NUMBER;
107749 l_adr_value_segment_code VARCHAR2(30);
107750
107751 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
107752 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
107753 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
107754 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
107755
107756 -- 4262811 Variables ------------------------------------------------------------------------------------------
107757 l_entered_amt_idx NUMBER;
107758 l_accted_amt_idx NUMBER;
107759 l_acc_rev_flag VARCHAR2(1);
107760 l_accrual_line_num NUMBER;
107761 l_tmp_amt NUMBER;
107762 l_acc_rev_natural_side_code VARCHAR2(1);
107763
107764 l_num_entries NUMBER;
107765 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
107766 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
107767 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
107768 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
107769 l_recog_line_1 NUMBER;
107770 l_recog_line_2 NUMBER;
107771
107772 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
107773 l_bflow_applied_to_amt NUMBER; -- 5132302
107774 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
107775
107776 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
107777
107778 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
107779 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
107780
107781 ---------------------------------------------------------------------------------------------------------------
107782
107783
107784 --
107785 -- bulk performance
107786 --
107787 l_balance_type_code VARCHAR2(1);
107788 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
107789 l_log_module VARCHAR2(240);
107790
107791 --
107792 -- Upgrade strategy
107793 --
107794 l_actual_upg_option VARCHAR2(1);
107795 l_enc_upg_option VARCHAR2(1);
107796
107797 --
107798 BEGIN
107799 --
107800 IF g_log_enabled THEN
107801 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_196';
107802 END IF;
107803 --
107804 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
107805
107806 trace
107807 (p_msg => 'BEGIN of AcctLineType_196'
107808 ,p_level => C_LEVEL_PROCEDURE
107809 ,p_module => l_log_module);
107810
107811 END IF;
107812 --
107813 l_component_type := 'AMB_JLT';
107814 l_component_code := 'OFFSET';
107815 l_component_type_code := 'S';
107816 l_component_appl_id := 707;
107817 l_amb_context_code := 'DEFAULT';
107818 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
107819 l_event_class_code := 'FOB_SHIP_RECIPIENT_SHIP';
107820 l_event_type_code := 'FOB_SHIP_RECIPIENT_SHIP_ALL';
107821 l_line_definition_owner_code := 'S';
107822 l_line_definition_code := 'FOB_SHIP_RECIPIENT_SHIP';
107823 --
107824 l_balance_type_code := 'A';
107825 l_segment := NULL;
107826 l_ccid := NULL;
107827 l_adr_transaction_coa_id := NULL;
107828 l_adr_accounting_coa_id := NULL;
107829 l_adr_flexfield_segment_code := NULL;
107830 l_adr_flex_value_set_id := NULL;
107831 l_adr_value_type_code := NULL;
107832 l_adr_value_combination_id := NULL;
107833 l_adr_value_segment_code := NULL;
107834
107835 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
107836 l_bflow_class_code := ''; -- 4219869 Business Flow
107837 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
107838 l_budgetary_control_flag := 'N';
107839
107840 l_bflow_applied_to_amt_idx := NULL; -- 5132302
107841 l_bflow_applied_to_amt := NULL; -- 5132302
107842 l_entered_amt_idx := NULL; -- 4262811
107843 l_accted_amt_idx := NULL; -- 4262811
107844 l_acc_rev_flag := NULL; -- 4262811
107845 l_accrual_line_num := NULL; -- 4262811
107846 l_tmp_amt := NULL; -- 4262811
107847 --
107848
107849 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
107850 l_balance_type_code <> 'B' THEN
107851 IF NVL(p_source_24,9E125) = 2 AND
107852 p_source_22 >= 0
107853 THEN
107854
107855 --
107856 XLA_AE_LINES_PKG.SetNewLine;
107857
107858 p_balance_type_code := l_balance_type_code;
107859 -- set the flag so later we will know whether the gain loss line needs to be created
107860
107861 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
107862 p_actual_flag :='A';
107863 END IF;
107864
107865 --
107866 -- bulk performance
107867 --
107868 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
107869 p_header_num => 0); -- 4262811
107870 --
107871 -- set accounting line options
107872 --
107873 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
107874 p_natural_side_code => 'D'
107875 , p_gain_or_loss_flag => 'N'
107876 , p_gl_transfer_mode_code => 'S'
107877 , p_acct_entry_type_code => 'A'
107878 , p_switch_side_flag => 'Y'
107879 , p_merge_duplicate_code => 'N'
107880 );
107881 --
107882 l_acc_rev_natural_side_code := 'C'; -- 4262811
107883 --
107884 --
107885 -- set accounting line type info
107886 --
107887 xla_ae_lines_pkg.SetAcctLineType
107888 (p_component_type => l_component_type
107889 ,p_event_type_code => l_event_type_code
107890 ,p_line_definition_owner_code => l_line_definition_owner_code
107891 ,p_line_definition_code => l_line_definition_code
107892 ,p_accounting_line_code => l_component_code
107893 ,p_accounting_line_type_code => l_component_type_code
107894 ,p_accounting_line_appl_id => l_component_appl_id
107895 ,p_amb_context_code => l_amb_context_code
107896 ,p_entity_code => l_entity_code
107897 ,p_event_class_code => l_event_class_code);
107898 --
107899 -- set accounting class
107900 --
107901 xla_ae_lines_pkg.SetAcctClass(
107902 p_accounting_class_code => 'OFFSET'
107903 , p_ae_header_id => l_ae_header_id
107904 );
107905
107906 --
107907 -- set rounding class
107908 --
107909 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
107910 'OFFSET';
107911
107912 --
107913 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
107914 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
107915 --
107916 -- bulk performance
107917 --
107918 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
107919
107920 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
107921 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
107922
107923 -- 4955764
107924 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
107925 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
107926
107927 -- 4458381 Public Sector Enh
107928
107929 --
107930 -- set accounting attributes for the line type
107931 --
107932 l_entered_amt_idx := 3;
107933 l_accted_amt_idx := 8;
107934 l_bflow_applied_to_amt_idx := NULL; -- 5132302
107935 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
107936 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
107937 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
107938 l_rec_acct_attrs.array_char_value(2) := p_source_12;
107939 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
107940 l_rec_acct_attrs.array_num_value(3) := p_source_18;
107941 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
107942 l_rec_acct_attrs.array_char_value(4) := p_source_15;
107943 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
107944 l_rec_acct_attrs.array_date_value(5) := p_source_19;
107945 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
107946 l_rec_acct_attrs.array_num_value(6) := p_source_20;
107947 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
107948 l_rec_acct_attrs.array_char_value(7) := p_source_21;
107949 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
107950 l_rec_acct_attrs.array_num_value(8) := p_source_22;
107951
107952 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
107953 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
107954
107955 ---------------------------------------------------------------------------------------------------------------
107956 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
107957 ---------------------------------------------------------------------------------------------------------------
107958 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
107959
107960 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
107961 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
107962
107963 IF xla_accounting_cache_pkg.GetValueChar
107964 (p_source_code => 'LEDGER_CATEGORY_CODE'
107965 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
107966 AND l_bflow_method_code = 'PRIOR_ENTRY'
107967 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
107968 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
107969 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
107970 )
107971 THEN
107972 xla_ae_lines_pkg.BflowUpgEntry
107973 (p_business_method_code => l_bflow_method_code
107974 ,p_business_class_code => l_bflow_class_code
107975 ,p_balance_type => l_balance_type_code);
107976 ELSE
107977 NULL;
107978 -- No business flow processing for business flow method of NONE.
107979 END IF;
107980
107981 --
107982 -- call analytical criteria
107983 --
107984
107985 --
107986 -- call description
107987 --
107988 -- No description or it is inherited.
107989 --
107990 -- call ADRs
107991 -- Bug 4922099
107992 --
107993 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
107994 (NVL(l_actual_upg_option, 'N') = 'O') OR
107995 (NVL(l_enc_upg_option, 'N') = 'O')
107996 )
107997 THEN
107998 NULL;
107999 --
108000 --
108001
108002 l_ccid := AcctDerRule_4(
108003 p_application_id => p_application_id
108004 , p_ae_header_id => l_ae_header_id
108005 , p_source_4 => p_source_4
108006 , x_transaction_coa_id => l_adr_transaction_coa_id
108007 , x_accounting_coa_id => l_adr_accounting_coa_id
108008 , x_value_type_code => l_adr_value_type_code
108009 , p_side => 'NA'
108010 );
108011
108012 xla_ae_lines_pkg.set_ccid(
108013 p_code_combination_id => l_ccid
108014 , p_value_type_code => l_adr_value_type_code
108015 , p_transaction_coa_id => l_adr_transaction_coa_id
108016 , p_accounting_coa_id => l_adr_accounting_coa_id
108017 , p_adr_code => 'CST_DEFAULT'
108018 , p_adr_type_code => 'S'
108019 , p_component_type => l_component_type
108020 , p_component_code => l_component_code
108021 , p_component_type_code => l_component_type_code
108022 , p_component_appl_id => l_component_appl_id
108023 , p_amb_context_code => l_amb_context_code
108024 , p_side => 'NA'
108025 );
108026
108027
108028 --
108029 --
108030 END IF;
108031 --
108032 -- Bug 4922099
108033 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
108034 (NVL(l_enc_upg_option, 'N') = 'O')
108035 ) AND
108036 (l_bflow_method_code = 'PRIOR_ENTRY')
108037 )
108038 THEN
108039 IF
108040 --
108041 1 = 2
108042 --
108043 THEN
108044 xla_accounting_err_pkg.build_message
108045 (p_appli_s_name => 'XLA'
108046 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
108047 ,p_token_1 => 'LINE_NUMBER'
108048 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
108049 ,p_token_2 => 'LINE_TYPE_NAME'
108050 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
108051 l_component_type
108052 ,l_component_code
108053 ,l_component_type_code
108054 ,l_component_appl_id
108055 ,l_amb_context_code
108056 ,l_entity_code
108057 ,l_event_class_code
108058 )
108059 ,p_token_3 => 'OWNER'
108060 ,p_value_3 => xla_lookups_pkg.get_meaning(
108061 p_lookup_type => 'XLA_OWNER_TYPE'
108062 ,p_lookup_code => l_component_type_code
108063 )
108064 ,p_token_4 => 'PRODUCT_NAME'
108065 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
108066 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
108067 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
108068 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
108069 ,p_ae_header_id => NULL
108070 );
108071
108072 IF (C_LEVEL_ERROR>= g_log_level) THEN
108073 trace
108074 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
108075 ,p_level => C_LEVEL_ERROR
108076 ,p_module => l_log_module);
108077 END IF;
108078 END IF;
108079 END IF;
108080 --
108081 --
108082 ------------------------------------------------------------------------------------------------
108083 -- 4219869 Business Flow
108084 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
108085 -- Prior Entry. Currently, the following code is always generated.
108086 ------------------------------------------------------------------------------------------------
108087 XLA_AE_LINES_PKG.ValidateCurrentLine;
108088
108089 ------------------------------------------------------------------------------------
108090 -- 4219869 Business Flow
108091 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
108092 ------------------------------------------------------------------------------------
108093 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
108094
108095 ----------------------------------------------------------------------------------
108096 -- 4219869 Business Flow
108097 -- Update journal entry status -- Need to generate this within IF <condition>
108098 ----------------------------------------------------------------------------------
108099 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
108100 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
108101 ,p_balance_type_code => l_balance_type_code
108102 );
108103
108104 -------------------------------------------------------------------------------------------
108105 -- 4262811 - Generate the Accrual Reversal lines
108106 -------------------------------------------------------------------------------------------
108107 BEGIN
108108 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
108109 (g_array_event(p_event_id).array_value_num('header_index'));
108110 IF l_acc_rev_flag IS NULL THEN
108111 l_acc_rev_flag := 'N';
108112 END IF;
108113 EXCEPTION
108114 WHEN OTHERS THEN
108115 l_acc_rev_flag := 'N';
108116 END;
108117 --
108118 IF (l_acc_rev_flag = 'Y') THEN
108119
108120 -- 4645092 ------------------------------------------------------------------------------
108121 -- To allow MPA report to determine if it should generate report process
108122 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
108123 ------------------------------------------------------------------------------------------
108124
108125 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
108126 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
108127 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
108128 -- call ADRs
108129 -- Bug 4922099
108130 --
108131 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
108132 (NVL(l_actual_upg_option, 'N') = 'O') OR
108133 (NVL(l_enc_upg_option, 'N') = 'O')
108134 )
108135 THEN
108136 NULL;
108137 --
108138 --
108139
108140 l_ccid := AcctDerRule_4(
108141 p_application_id => p_application_id
108142 , p_ae_header_id => l_ae_header_id
108143 , p_source_4 => p_source_4
108144 , x_transaction_coa_id => l_adr_transaction_coa_id
108145 , x_accounting_coa_id => l_adr_accounting_coa_id
108146 , x_value_type_code => l_adr_value_type_code
108147 , p_side => 'NA'
108148 );
108149
108150 xla_ae_lines_pkg.set_ccid(
108151 p_code_combination_id => l_ccid
108152 , p_value_type_code => l_adr_value_type_code
108153 , p_transaction_coa_id => l_adr_transaction_coa_id
108154 , p_accounting_coa_id => l_adr_accounting_coa_id
108155 , p_adr_code => 'CST_DEFAULT'
108156 , p_adr_type_code => 'S'
108157 , p_component_type => l_component_type
108158 , p_component_code => l_component_code
108159 , p_component_type_code => l_component_type_code
108160 , p_component_appl_id => l_component_appl_id
108161 , p_amb_context_code => l_amb_context_code
108162 , p_side => 'NA'
108163 );
108164
108165
108166 --
108167 --
108168 END IF;
108169
108170 --
108171 -- Update the line information that should be overwritten
108172 --
108173 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
108174 p_header_num => 1);
108175 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
108176
108177 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
108178
108179 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
108180 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
108181 END IF;
108182
108183 --
108184 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
108185 --
108186 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
108187 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
108188 ELSE
108189 ---------------------------------------------------------------------------------------------------
108190 -- 4262811a Switch Sign
108191 ---------------------------------------------------------------------------------------------------
108192 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
108193 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
108194 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
108195 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
108196 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
108197 -- 5132302
108198 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
108199 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
108200
108201 END IF;
108202
108203 -- 4955764
108204 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
108205 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
108206
108207
108208 XLA_AE_LINES_PKG.ValidateCurrentLine;
108209 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
108210
108211 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
108212 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
108213 ,p_balance_type_code => l_balance_type_code);
108214
108215 END IF;
108216
108217 -----------------------------------------------------------------------------------------
108218 -- 4262811 Multiperiod Accounting
108219 -----------------------------------------------------------------------------------------
108220 -- No MPA option is assigned.
108221
108222
108223 END IF;
108224 END IF;
108225 --
108226
108227 --
108228 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
108229 trace
108230 (p_msg => 'END of AcctLineType_196'
108231 ,p_level => C_LEVEL_PROCEDURE
108232 ,p_module => l_log_module);
108233 END IF;
108234 --
108235 EXCEPTION
108236 WHEN xla_exceptions_pkg.application_exception THEN
108237 RAISE;
108238 WHEN OTHERS THEN
108239 xla_exceptions_pkg.raise_message
108240 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_196');
108241 END AcctLineType_196;
108242 --
108243
108244 ---------------------------------------
108245 --
108246 -- PRIVATE FUNCTION
108247 -- AcctLineType_197
108248 --
108249 ---------------------------------------
108250 PROCEDURE AcctLineType_197 (
108251 p_application_id IN NUMBER
108252 ,p_event_id IN NUMBER
108253 ,p_calculate_acctd_flag IN VARCHAR2
108254 ,p_calculate_g_l_flag IN VARCHAR2
108255 ,p_actual_flag IN OUT VARCHAR2
108256 ,p_balance_type_code OUT VARCHAR2
108257 ,p_gain_or_loss_ref OUT VARCHAR2
108258
108259 --Cost Management Default Account
108260 , p_source_4 IN NUMBER
108261 --DISTRIBUTION_IDENTIFIER
108262 , p_source_11 IN NUMBER
108263 --Distribution Type
108264 , p_source_12 IN VARCHAR2
108265 , p_source_12_meaning IN VARCHAR2
108266 --Entered Currency Code
108267 , p_source_15 IN VARCHAR2
108268 --Entered Amount
108269 , p_source_18 IN NUMBER
108270 --Currency Conversion Date
108271 , p_source_19 IN DATE
108272 --Currency Conversion Rate
108273 , p_source_20 IN NUMBER
108274 --Currency Conversion Type
108275 , p_source_21 IN VARCHAR2
108276 --Accounted Amount
108277 , p_source_22 IN NUMBER
108278 --Accounting Line Type
108279 , p_source_24 IN NUMBER
108280 )
108281 IS
108282
108283 l_component_type VARCHAR2(80);
108284 l_component_code VARCHAR2(30);
108285 l_component_type_code VARCHAR2(1);
108286 l_component_appl_id INTEGER;
108287 l_amb_context_code VARCHAR2(30);
108288 l_entity_code VARCHAR2(30);
108289 l_event_class_code VARCHAR2(30);
108290 l_ae_header_id NUMBER;
108291 l_event_type_code VARCHAR2(30);
108292 l_line_definition_code VARCHAR2(30);
108293 l_line_definition_owner_code VARCHAR2(1);
108294 --
108295 -- adr variables
108296 l_segment VARCHAR2(30);
108297 l_ccid NUMBER;
108298 l_adr_transaction_coa_id NUMBER;
108299 l_adr_accounting_coa_id NUMBER;
108300 l_adr_flexfield_segment_code VARCHAR2(30);
108301 l_adr_flex_value_set_id NUMBER;
108302 l_adr_value_type_code VARCHAR2(30);
108303 l_adr_value_combination_id NUMBER;
108304 l_adr_value_segment_code VARCHAR2(30);
108305
108306 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
108307 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
108308 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
108309 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
108310
108311 -- 4262811 Variables ------------------------------------------------------------------------------------------
108312 l_entered_amt_idx NUMBER;
108313 l_accted_amt_idx NUMBER;
108314 l_acc_rev_flag VARCHAR2(1);
108315 l_accrual_line_num NUMBER;
108316 l_tmp_amt NUMBER;
108317 l_acc_rev_natural_side_code VARCHAR2(1);
108318
108319 l_num_entries NUMBER;
108320 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
108321 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
108322 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
108323 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
108324 l_recog_line_1 NUMBER;
108325 l_recog_line_2 NUMBER;
108326
108327 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
108328 l_bflow_applied_to_amt NUMBER; -- 5132302
108329 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
108330
108331 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
108332
108333 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
108334 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
108335
108336 ---------------------------------------------------------------------------------------------------------------
108337
108338
108339 --
108340 -- bulk performance
108341 --
108342 l_balance_type_code VARCHAR2(1);
108343 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
108344 l_log_module VARCHAR2(240);
108345
108346 --
108347 -- Upgrade strategy
108348 --
108349 l_actual_upg_option VARCHAR2(1);
108350 l_enc_upg_option VARCHAR2(1);
108351
108352 --
108353 BEGIN
108354 --
108355 IF g_log_enabled THEN
108356 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_197';
108357 END IF;
108358 --
108359 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
108360
108361 trace
108362 (p_msg => 'BEGIN of AcctLineType_197'
108363 ,p_level => C_LEVEL_PROCEDURE
108364 ,p_module => l_log_module);
108365
108366 END IF;
108367 --
108368 l_component_type := 'AMB_JLT';
108369 l_component_code := 'OFFSET';
108370 l_component_type_code := 'S';
108371 l_component_appl_id := 707;
108372 l_amb_context_code := 'DEFAULT';
108373 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
108374 l_event_class_code := 'USER_DEFINE';
108375 l_event_type_code := 'UDIR_INTERORG_RCPT_TP';
108376 l_line_definition_owner_code := 'S';
108377 l_line_definition_code := 'USER_DIR_INTERORG_RCPT_TP';
108378 --
108379 l_balance_type_code := 'A';
108380 l_segment := NULL;
108381 l_ccid := NULL;
108382 l_adr_transaction_coa_id := NULL;
108383 l_adr_accounting_coa_id := NULL;
108384 l_adr_flexfield_segment_code := NULL;
108385 l_adr_flex_value_set_id := NULL;
108386 l_adr_value_type_code := NULL;
108387 l_adr_value_combination_id := NULL;
108388 l_adr_value_segment_code := NULL;
108389
108390 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
108391 l_bflow_class_code := ''; -- 4219869 Business Flow
108392 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
108393 l_budgetary_control_flag := 'N';
108394
108395 l_bflow_applied_to_amt_idx := NULL; -- 5132302
108396 l_bflow_applied_to_amt := NULL; -- 5132302
108397 l_entered_amt_idx := NULL; -- 4262811
108398 l_accted_amt_idx := NULL; -- 4262811
108399 l_acc_rev_flag := NULL; -- 4262811
108400 l_accrual_line_num := NULL; -- 4262811
108401 l_tmp_amt := NULL; -- 4262811
108402 --
108403
108404 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
108405 l_balance_type_code <> 'B' THEN
108406 IF NVL(p_source_24,9E125) = 2
108407 THEN
108408
108409 --
108410 XLA_AE_LINES_PKG.SetNewLine;
108411
108412 p_balance_type_code := l_balance_type_code;
108413 -- set the flag so later we will know whether the gain loss line needs to be created
108414
108415 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
108416 p_actual_flag :='A';
108417 END IF;
108418
108419 --
108420 -- bulk performance
108421 --
108422 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
108423 p_header_num => 0); -- 4262811
108424 --
108425 -- set accounting line options
108426 --
108427 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
108428 p_natural_side_code => 'D'
108429 , p_gain_or_loss_flag => 'N'
108430 , p_gl_transfer_mode_code => 'S'
108431 , p_acct_entry_type_code => 'A'
108432 , p_switch_side_flag => 'Y'
108433 , p_merge_duplicate_code => 'N'
108434 );
108435 --
108436 l_acc_rev_natural_side_code := 'C'; -- 4262811
108437 --
108438 --
108439 -- set accounting line type info
108440 --
108441 xla_ae_lines_pkg.SetAcctLineType
108442 (p_component_type => l_component_type
108443 ,p_event_type_code => l_event_type_code
108444 ,p_line_definition_owner_code => l_line_definition_owner_code
108445 ,p_line_definition_code => l_line_definition_code
108446 ,p_accounting_line_code => l_component_code
108447 ,p_accounting_line_type_code => l_component_type_code
108448 ,p_accounting_line_appl_id => l_component_appl_id
108449 ,p_amb_context_code => l_amb_context_code
108450 ,p_entity_code => l_entity_code
108451 ,p_event_class_code => l_event_class_code);
108452 --
108453 -- set accounting class
108454 --
108455 xla_ae_lines_pkg.SetAcctClass(
108456 p_accounting_class_code => 'OFFSET'
108457 , p_ae_header_id => l_ae_header_id
108458 );
108459
108460 --
108461 -- set rounding class
108462 --
108463 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
108464 'OFFSET';
108465
108466 --
108467 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
108468 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
108469 --
108470 -- bulk performance
108471 --
108472 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
108473
108474 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
108475 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
108476
108477 -- 4955764
108478 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
108479 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
108480
108481 -- 4458381 Public Sector Enh
108482
108483 --
108484 -- set accounting attributes for the line type
108485 --
108486 l_entered_amt_idx := 3;
108487 l_accted_amt_idx := 8;
108488 l_bflow_applied_to_amt_idx := NULL; -- 5132302
108489 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
108490 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
108491 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
108492 l_rec_acct_attrs.array_char_value(2) := p_source_12;
108493 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
108494 l_rec_acct_attrs.array_num_value(3) := p_source_18;
108495 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
108496 l_rec_acct_attrs.array_char_value(4) := p_source_15;
108497 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
108498 l_rec_acct_attrs.array_date_value(5) := p_source_19;
108499 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
108500 l_rec_acct_attrs.array_num_value(6) := p_source_20;
108501 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
108502 l_rec_acct_attrs.array_char_value(7) := p_source_21;
108503 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
108504 l_rec_acct_attrs.array_num_value(8) := p_source_22;
108505
108506 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
108507 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
108508
108509 ---------------------------------------------------------------------------------------------------------------
108510 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
108511 ---------------------------------------------------------------------------------------------------------------
108512 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
108513
108514 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
108515 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
108516
108517 IF xla_accounting_cache_pkg.GetValueChar
108518 (p_source_code => 'LEDGER_CATEGORY_CODE'
108519 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
108520 AND l_bflow_method_code = 'PRIOR_ENTRY'
108521 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
108522 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
108523 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
108524 )
108525 THEN
108526 xla_ae_lines_pkg.BflowUpgEntry
108527 (p_business_method_code => l_bflow_method_code
108528 ,p_business_class_code => l_bflow_class_code
108529 ,p_balance_type => l_balance_type_code);
108530 ELSE
108531 NULL;
108532 -- No business flow processing for business flow method of NONE.
108533 END IF;
108534
108535 --
108536 -- call analytical criteria
108537 --
108538
108539 --
108540 -- call description
108541 --
108542 -- No description or it is inherited.
108543 --
108544 -- call ADRs
108545 -- Bug 4922099
108546 --
108547 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
108548 (NVL(l_actual_upg_option, 'N') = 'O') OR
108549 (NVL(l_enc_upg_option, 'N') = 'O')
108550 )
108551 THEN
108552 NULL;
108553 --
108554 --
108555
108556 l_ccid := AcctDerRule_4(
108557 p_application_id => p_application_id
108558 , p_ae_header_id => l_ae_header_id
108559 , p_source_4 => p_source_4
108560 , x_transaction_coa_id => l_adr_transaction_coa_id
108561 , x_accounting_coa_id => l_adr_accounting_coa_id
108562 , x_value_type_code => l_adr_value_type_code
108563 , p_side => 'NA'
108564 );
108565
108566 xla_ae_lines_pkg.set_ccid(
108567 p_code_combination_id => l_ccid
108568 , p_value_type_code => l_adr_value_type_code
108569 , p_transaction_coa_id => l_adr_transaction_coa_id
108570 , p_accounting_coa_id => l_adr_accounting_coa_id
108571 , p_adr_code => 'CST_DEFAULT'
108572 , p_adr_type_code => 'S'
108573 , p_component_type => l_component_type
108574 , p_component_code => l_component_code
108575 , p_component_type_code => l_component_type_code
108576 , p_component_appl_id => l_component_appl_id
108577 , p_amb_context_code => l_amb_context_code
108578 , p_side => 'NA'
108579 );
108580
108581
108582 --
108583 --
108584 END IF;
108585 --
108586 -- Bug 4922099
108587 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
108588 (NVL(l_enc_upg_option, 'N') = 'O')
108589 ) AND
108590 (l_bflow_method_code = 'PRIOR_ENTRY')
108591 )
108592 THEN
108593 IF
108594 --
108595 1 = 2
108596 --
108597 THEN
108598 xla_accounting_err_pkg.build_message
108599 (p_appli_s_name => 'XLA'
108600 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
108601 ,p_token_1 => 'LINE_NUMBER'
108602 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
108603 ,p_token_2 => 'LINE_TYPE_NAME'
108604 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
108605 l_component_type
108606 ,l_component_code
108607 ,l_component_type_code
108608 ,l_component_appl_id
108609 ,l_amb_context_code
108610 ,l_entity_code
108611 ,l_event_class_code
108612 )
108613 ,p_token_3 => 'OWNER'
108614 ,p_value_3 => xla_lookups_pkg.get_meaning(
108615 p_lookup_type => 'XLA_OWNER_TYPE'
108616 ,p_lookup_code => l_component_type_code
108617 )
108618 ,p_token_4 => 'PRODUCT_NAME'
108619 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
108620 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
108621 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
108622 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
108623 ,p_ae_header_id => NULL
108624 );
108625
108626 IF (C_LEVEL_ERROR>= g_log_level) THEN
108627 trace
108628 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
108629 ,p_level => C_LEVEL_ERROR
108630 ,p_module => l_log_module);
108631 END IF;
108632 END IF;
108633 END IF;
108634 --
108635 --
108636 ------------------------------------------------------------------------------------------------
108637 -- 4219869 Business Flow
108638 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
108639 -- Prior Entry. Currently, the following code is always generated.
108640 ------------------------------------------------------------------------------------------------
108641 XLA_AE_LINES_PKG.ValidateCurrentLine;
108642
108643 ------------------------------------------------------------------------------------
108644 -- 4219869 Business Flow
108645 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
108646 ------------------------------------------------------------------------------------
108647 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
108648
108649 ----------------------------------------------------------------------------------
108650 -- 4219869 Business Flow
108651 -- Update journal entry status -- Need to generate this within IF <condition>
108652 ----------------------------------------------------------------------------------
108653 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
108654 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
108655 ,p_balance_type_code => l_balance_type_code
108656 );
108657
108658 -------------------------------------------------------------------------------------------
108659 -- 4262811 - Generate the Accrual Reversal lines
108660 -------------------------------------------------------------------------------------------
108661 BEGIN
108662 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
108663 (g_array_event(p_event_id).array_value_num('header_index'));
108664 IF l_acc_rev_flag IS NULL THEN
108665 l_acc_rev_flag := 'N';
108666 END IF;
108667 EXCEPTION
108668 WHEN OTHERS THEN
108669 l_acc_rev_flag := 'N';
108670 END;
108671 --
108672 IF (l_acc_rev_flag = 'Y') THEN
108673
108674 -- 4645092 ------------------------------------------------------------------------------
108675 -- To allow MPA report to determine if it should generate report process
108676 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
108677 ------------------------------------------------------------------------------------------
108678
108679 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
108680 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
108681 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
108682 -- call ADRs
108683 -- Bug 4922099
108684 --
108685 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
108686 (NVL(l_actual_upg_option, 'N') = 'O') OR
108687 (NVL(l_enc_upg_option, 'N') = 'O')
108688 )
108689 THEN
108690 NULL;
108691 --
108692 --
108693
108694 l_ccid := AcctDerRule_4(
108695 p_application_id => p_application_id
108696 , p_ae_header_id => l_ae_header_id
108697 , p_source_4 => p_source_4
108698 , x_transaction_coa_id => l_adr_transaction_coa_id
108699 , x_accounting_coa_id => l_adr_accounting_coa_id
108700 , x_value_type_code => l_adr_value_type_code
108701 , p_side => 'NA'
108702 );
108703
108704 xla_ae_lines_pkg.set_ccid(
108705 p_code_combination_id => l_ccid
108706 , p_value_type_code => l_adr_value_type_code
108707 , p_transaction_coa_id => l_adr_transaction_coa_id
108708 , p_accounting_coa_id => l_adr_accounting_coa_id
108709 , p_adr_code => 'CST_DEFAULT'
108710 , p_adr_type_code => 'S'
108711 , p_component_type => l_component_type
108712 , p_component_code => l_component_code
108713 , p_component_type_code => l_component_type_code
108714 , p_component_appl_id => l_component_appl_id
108715 , p_amb_context_code => l_amb_context_code
108716 , p_side => 'NA'
108717 );
108718
108719
108720 --
108721 --
108722 END IF;
108723
108724 --
108725 -- Update the line information that should be overwritten
108726 --
108727 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
108728 p_header_num => 1);
108729 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
108730
108731 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
108732
108733 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
108734 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
108735 END IF;
108736
108737 --
108738 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
108739 --
108740 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
108741 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
108742 ELSE
108743 ---------------------------------------------------------------------------------------------------
108744 -- 4262811a Switch Sign
108745 ---------------------------------------------------------------------------------------------------
108746 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
108747 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
108748 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
108749 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
108750 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
108751 -- 5132302
108752 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
108753 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
108754
108755 END IF;
108756
108757 -- 4955764
108758 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
108759 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
108760
108761
108762 XLA_AE_LINES_PKG.ValidateCurrentLine;
108763 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
108764
108765 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
108766 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
108767 ,p_balance_type_code => l_balance_type_code);
108768
108769 END IF;
108770
108771 -----------------------------------------------------------------------------------------
108772 -- 4262811 Multiperiod Accounting
108773 -----------------------------------------------------------------------------------------
108774 -- No MPA option is assigned.
108775
108776
108777 END IF;
108778 END IF;
108779 --
108780
108781 --
108782 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
108783 trace
108784 (p_msg => 'END of AcctLineType_197'
108785 ,p_level => C_LEVEL_PROCEDURE
108786 ,p_module => l_log_module);
108787 END IF;
108788 --
108789 EXCEPTION
108790 WHEN xla_exceptions_pkg.application_exception THEN
108791 RAISE;
108792 WHEN OTHERS THEN
108793 xla_exceptions_pkg.raise_message
108794 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_197');
108795 END AcctLineType_197;
108796 --
108797
108798 ---------------------------------------
108799 --
108800 -- PRIVATE FUNCTION
108801 -- AcctLineType_198
108802 --
108803 ---------------------------------------
108804 PROCEDURE AcctLineType_198 (
108805 p_application_id IN NUMBER
108806 ,p_event_id IN NUMBER
108807 ,p_calculate_acctd_flag IN VARCHAR2
108808 ,p_calculate_g_l_flag IN VARCHAR2
108809 ,p_actual_flag IN OUT VARCHAR2
108810 ,p_balance_type_code OUT VARCHAR2
108811 ,p_gain_or_loss_ref OUT VARCHAR2
108812
108813 --Cost Management Default Account
108814 , p_source_4 IN NUMBER
108815 --DISTRIBUTION_IDENTIFIER
108816 , p_source_11 IN NUMBER
108817 --Distribution Type
108818 , p_source_12 IN VARCHAR2
108819 , p_source_12_meaning IN VARCHAR2
108820 --Entered Currency Code
108821 , p_source_15 IN VARCHAR2
108822 --Entered Amount
108823 , p_source_18 IN NUMBER
108824 --Currency Conversion Date
108825 , p_source_19 IN DATE
108826 --Currency Conversion Rate
108827 , p_source_20 IN NUMBER
108828 --Currency Conversion Type
108829 , p_source_21 IN VARCHAR2
108830 --Accounted Amount
108831 , p_source_22 IN NUMBER
108832 --Accounting Line Type
108833 , p_source_24 IN NUMBER
108834 )
108835 IS
108836
108837 l_component_type VARCHAR2(80);
108838 l_component_code VARCHAR2(30);
108839 l_component_type_code VARCHAR2(1);
108840 l_component_appl_id INTEGER;
108841 l_amb_context_code VARCHAR2(30);
108842 l_entity_code VARCHAR2(30);
108843 l_event_class_code VARCHAR2(30);
108844 l_ae_header_id NUMBER;
108845 l_event_type_code VARCHAR2(30);
108846 l_line_definition_code VARCHAR2(30);
108847 l_line_definition_owner_code VARCHAR2(1);
108848 --
108849 -- adr variables
108850 l_segment VARCHAR2(30);
108851 l_ccid NUMBER;
108852 l_adr_transaction_coa_id NUMBER;
108853 l_adr_accounting_coa_id NUMBER;
108854 l_adr_flexfield_segment_code VARCHAR2(30);
108855 l_adr_flex_value_set_id NUMBER;
108856 l_adr_value_type_code VARCHAR2(30);
108857 l_adr_value_combination_id NUMBER;
108858 l_adr_value_segment_code VARCHAR2(30);
108859
108860 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
108861 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
108862 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
108863 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
108864
108865 -- 4262811 Variables ------------------------------------------------------------------------------------------
108866 l_entered_amt_idx NUMBER;
108867 l_accted_amt_idx NUMBER;
108868 l_acc_rev_flag VARCHAR2(1);
108869 l_accrual_line_num NUMBER;
108870 l_tmp_amt NUMBER;
108871 l_acc_rev_natural_side_code VARCHAR2(1);
108872
108873 l_num_entries NUMBER;
108874 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
108875 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
108876 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
108877 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
108878 l_recog_line_1 NUMBER;
108879 l_recog_line_2 NUMBER;
108880
108881 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
108882 l_bflow_applied_to_amt NUMBER; -- 5132302
108883 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
108884
108885 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
108886
108887 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
108888 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
108889
108890 ---------------------------------------------------------------------------------------------------------------
108891
108892
108893 --
108894 -- bulk performance
108895 --
108896 l_balance_type_code VARCHAR2(1);
108897 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
108898 l_log_module VARCHAR2(240);
108899
108900 --
108901 -- Upgrade strategy
108902 --
108903 l_actual_upg_option VARCHAR2(1);
108904 l_enc_upg_option VARCHAR2(1);
108905
108906 --
108907 BEGIN
108908 --
108909 IF g_log_enabled THEN
108910 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_198';
108911 END IF;
108912 --
108913 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
108914
108915 trace
108916 (p_msg => 'BEGIN of AcctLineType_198'
108917 ,p_level => C_LEVEL_PROCEDURE
108918 ,p_module => l_log_module);
108919
108920 END IF;
108921 --
108922 l_component_type := 'AMB_JLT';
108923 l_component_code := 'OFFSET';
108924 l_component_type_code := 'S';
108925 l_component_appl_id := 707;
108926 l_amb_context_code := 'DEFAULT';
108927 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
108928 l_event_class_code := 'USER_DEFINE';
108929 l_event_type_code := 'UDIR_INTERORG_SHIP_NO_TP';
108930 l_line_definition_owner_code := 'S';
108931 l_line_definition_code := 'USER_DIR_INTERORG_SHIP_NO_TP';
108932 --
108933 l_balance_type_code := 'A';
108934 l_segment := NULL;
108935 l_ccid := NULL;
108936 l_adr_transaction_coa_id := NULL;
108937 l_adr_accounting_coa_id := NULL;
108938 l_adr_flexfield_segment_code := NULL;
108939 l_adr_flex_value_set_id := NULL;
108940 l_adr_value_type_code := NULL;
108941 l_adr_value_combination_id := NULL;
108942 l_adr_value_segment_code := NULL;
108943
108944 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
108945 l_bflow_class_code := ''; -- 4219869 Business Flow
108946 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
108947 l_budgetary_control_flag := 'N';
108948
108949 l_bflow_applied_to_amt_idx := NULL; -- 5132302
108950 l_bflow_applied_to_amt := NULL; -- 5132302
108951 l_entered_amt_idx := NULL; -- 4262811
108952 l_accted_amt_idx := NULL; -- 4262811
108953 l_acc_rev_flag := NULL; -- 4262811
108954 l_accrual_line_num := NULL; -- 4262811
108955 l_tmp_amt := NULL; -- 4262811
108956 --
108957
108958 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
108959 l_balance_type_code <> 'B' THEN
108960 IF NVL(p_source_24,9E125) = 2
108961 THEN
108962
108963 --
108964 XLA_AE_LINES_PKG.SetNewLine;
108965
108966 p_balance_type_code := l_balance_type_code;
108967 -- set the flag so later we will know whether the gain loss line needs to be created
108968
108969 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
108970 p_actual_flag :='A';
108971 END IF;
108972
108973 --
108974 -- bulk performance
108975 --
108976 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
108977 p_header_num => 0); -- 4262811
108978 --
108979 -- set accounting line options
108980 --
108981 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
108982 p_natural_side_code => 'D'
108983 , p_gain_or_loss_flag => 'N'
108984 , p_gl_transfer_mode_code => 'S'
108985 , p_acct_entry_type_code => 'A'
108986 , p_switch_side_flag => 'Y'
108987 , p_merge_duplicate_code => 'N'
108988 );
108989 --
108990 l_acc_rev_natural_side_code := 'C'; -- 4262811
108991 --
108992 --
108993 -- set accounting line type info
108994 --
108995 xla_ae_lines_pkg.SetAcctLineType
108996 (p_component_type => l_component_type
108997 ,p_event_type_code => l_event_type_code
108998 ,p_line_definition_owner_code => l_line_definition_owner_code
108999 ,p_line_definition_code => l_line_definition_code
109000 ,p_accounting_line_code => l_component_code
109001 ,p_accounting_line_type_code => l_component_type_code
109002 ,p_accounting_line_appl_id => l_component_appl_id
109003 ,p_amb_context_code => l_amb_context_code
109004 ,p_entity_code => l_entity_code
109005 ,p_event_class_code => l_event_class_code);
109006 --
109007 -- set accounting class
109008 --
109009 xla_ae_lines_pkg.SetAcctClass(
109010 p_accounting_class_code => 'OFFSET'
109011 , p_ae_header_id => l_ae_header_id
109012 );
109013
109014 --
109015 -- set rounding class
109016 --
109017 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
109018 'OFFSET';
109019
109020 --
109021 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
109022 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
109023 --
109024 -- bulk performance
109025 --
109026 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
109027
109028 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
109029 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
109030
109031 -- 4955764
109032 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
109033 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
109034
109035 -- 4458381 Public Sector Enh
109036
109037 --
109038 -- set accounting attributes for the line type
109039 --
109040 l_entered_amt_idx := 3;
109041 l_accted_amt_idx := 8;
109042 l_bflow_applied_to_amt_idx := NULL; -- 5132302
109043 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
109044 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
109045 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
109046 l_rec_acct_attrs.array_char_value(2) := p_source_12;
109047 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
109048 l_rec_acct_attrs.array_num_value(3) := p_source_18;
109049 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
109050 l_rec_acct_attrs.array_char_value(4) := p_source_15;
109051 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
109052 l_rec_acct_attrs.array_date_value(5) := p_source_19;
109053 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
109054 l_rec_acct_attrs.array_num_value(6) := p_source_20;
109055 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
109056 l_rec_acct_attrs.array_char_value(7) := p_source_21;
109057 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
109058 l_rec_acct_attrs.array_num_value(8) := p_source_22;
109059
109060 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
109061 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
109062
109063 ---------------------------------------------------------------------------------------------------------------
109064 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
109065 ---------------------------------------------------------------------------------------------------------------
109066 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
109067
109068 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
109069 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
109070
109071 IF xla_accounting_cache_pkg.GetValueChar
109072 (p_source_code => 'LEDGER_CATEGORY_CODE'
109073 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
109074 AND l_bflow_method_code = 'PRIOR_ENTRY'
109075 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
109076 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
109077 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
109078 )
109079 THEN
109080 xla_ae_lines_pkg.BflowUpgEntry
109081 (p_business_method_code => l_bflow_method_code
109082 ,p_business_class_code => l_bflow_class_code
109083 ,p_balance_type => l_balance_type_code);
109084 ELSE
109085 NULL;
109086 -- No business flow processing for business flow method of NONE.
109087 END IF;
109088
109089 --
109090 -- call analytical criteria
109091 --
109092
109093 --
109094 -- call description
109095 --
109096 -- No description or it is inherited.
109097 --
109098 -- call ADRs
109099 -- Bug 4922099
109100 --
109101 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
109102 (NVL(l_actual_upg_option, 'N') = 'O') OR
109103 (NVL(l_enc_upg_option, 'N') = 'O')
109104 )
109105 THEN
109106 NULL;
109107 --
109108 --
109109
109110 l_ccid := AcctDerRule_4(
109111 p_application_id => p_application_id
109112 , p_ae_header_id => l_ae_header_id
109113 , p_source_4 => p_source_4
109114 , x_transaction_coa_id => l_adr_transaction_coa_id
109115 , x_accounting_coa_id => l_adr_accounting_coa_id
109116 , x_value_type_code => l_adr_value_type_code
109117 , p_side => 'NA'
109118 );
109119
109120 xla_ae_lines_pkg.set_ccid(
109121 p_code_combination_id => l_ccid
109122 , p_value_type_code => l_adr_value_type_code
109123 , p_transaction_coa_id => l_adr_transaction_coa_id
109124 , p_accounting_coa_id => l_adr_accounting_coa_id
109125 , p_adr_code => 'CST_DEFAULT'
109126 , p_adr_type_code => 'S'
109127 , p_component_type => l_component_type
109128 , p_component_code => l_component_code
109129 , p_component_type_code => l_component_type_code
109130 , p_component_appl_id => l_component_appl_id
109131 , p_amb_context_code => l_amb_context_code
109132 , p_side => 'NA'
109133 );
109134
109135
109136 --
109137 --
109138 END IF;
109139 --
109140 -- Bug 4922099
109141 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
109142 (NVL(l_enc_upg_option, 'N') = 'O')
109143 ) AND
109144 (l_bflow_method_code = 'PRIOR_ENTRY')
109145 )
109146 THEN
109147 IF
109148 --
109149 1 = 2
109150 --
109151 THEN
109152 xla_accounting_err_pkg.build_message
109153 (p_appli_s_name => 'XLA'
109154 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
109155 ,p_token_1 => 'LINE_NUMBER'
109156 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
109157 ,p_token_2 => 'LINE_TYPE_NAME'
109158 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
109159 l_component_type
109160 ,l_component_code
109161 ,l_component_type_code
109162 ,l_component_appl_id
109163 ,l_amb_context_code
109164 ,l_entity_code
109165 ,l_event_class_code
109166 )
109167 ,p_token_3 => 'OWNER'
109168 ,p_value_3 => xla_lookups_pkg.get_meaning(
109169 p_lookup_type => 'XLA_OWNER_TYPE'
109170 ,p_lookup_code => l_component_type_code
109171 )
109172 ,p_token_4 => 'PRODUCT_NAME'
109173 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
109174 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
109175 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
109176 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
109177 ,p_ae_header_id => NULL
109178 );
109179
109180 IF (C_LEVEL_ERROR>= g_log_level) THEN
109181 trace
109182 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
109183 ,p_level => C_LEVEL_ERROR
109184 ,p_module => l_log_module);
109185 END IF;
109186 END IF;
109187 END IF;
109188 --
109189 --
109190 ------------------------------------------------------------------------------------------------
109191 -- 4219869 Business Flow
109192 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
109193 -- Prior Entry. Currently, the following code is always generated.
109194 ------------------------------------------------------------------------------------------------
109195 XLA_AE_LINES_PKG.ValidateCurrentLine;
109196
109197 ------------------------------------------------------------------------------------
109198 -- 4219869 Business Flow
109199 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
109200 ------------------------------------------------------------------------------------
109201 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
109202
109203 ----------------------------------------------------------------------------------
109204 -- 4219869 Business Flow
109205 -- Update journal entry status -- Need to generate this within IF <condition>
109206 ----------------------------------------------------------------------------------
109207 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
109208 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
109209 ,p_balance_type_code => l_balance_type_code
109210 );
109211
109212 -------------------------------------------------------------------------------------------
109213 -- 4262811 - Generate the Accrual Reversal lines
109214 -------------------------------------------------------------------------------------------
109215 BEGIN
109216 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
109217 (g_array_event(p_event_id).array_value_num('header_index'));
109218 IF l_acc_rev_flag IS NULL THEN
109219 l_acc_rev_flag := 'N';
109220 END IF;
109221 EXCEPTION
109222 WHEN OTHERS THEN
109223 l_acc_rev_flag := 'N';
109224 END;
109225 --
109226 IF (l_acc_rev_flag = 'Y') THEN
109227
109228 -- 4645092 ------------------------------------------------------------------------------
109229 -- To allow MPA report to determine if it should generate report process
109230 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
109231 ------------------------------------------------------------------------------------------
109232
109233 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
109234 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
109235 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
109236 -- call ADRs
109237 -- Bug 4922099
109238 --
109239 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
109240 (NVL(l_actual_upg_option, 'N') = 'O') OR
109241 (NVL(l_enc_upg_option, 'N') = 'O')
109242 )
109243 THEN
109244 NULL;
109245 --
109246 --
109247
109248 l_ccid := AcctDerRule_4(
109249 p_application_id => p_application_id
109250 , p_ae_header_id => l_ae_header_id
109251 , p_source_4 => p_source_4
109252 , x_transaction_coa_id => l_adr_transaction_coa_id
109253 , x_accounting_coa_id => l_adr_accounting_coa_id
109254 , x_value_type_code => l_adr_value_type_code
109255 , p_side => 'NA'
109256 );
109257
109258 xla_ae_lines_pkg.set_ccid(
109259 p_code_combination_id => l_ccid
109260 , p_value_type_code => l_adr_value_type_code
109261 , p_transaction_coa_id => l_adr_transaction_coa_id
109262 , p_accounting_coa_id => l_adr_accounting_coa_id
109263 , p_adr_code => 'CST_DEFAULT'
109264 , p_adr_type_code => 'S'
109265 , p_component_type => l_component_type
109266 , p_component_code => l_component_code
109267 , p_component_type_code => l_component_type_code
109268 , p_component_appl_id => l_component_appl_id
109269 , p_amb_context_code => l_amb_context_code
109270 , p_side => 'NA'
109271 );
109272
109273
109274 --
109275 --
109276 END IF;
109277
109278 --
109279 -- Update the line information that should be overwritten
109280 --
109281 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
109282 p_header_num => 1);
109283 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
109284
109285 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
109286
109287 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
109288 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
109289 END IF;
109290
109291 --
109292 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
109293 --
109294 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
109295 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
109296 ELSE
109297 ---------------------------------------------------------------------------------------------------
109298 -- 4262811a Switch Sign
109299 ---------------------------------------------------------------------------------------------------
109300 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
109301 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
109302 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
109303 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
109304 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
109305 -- 5132302
109306 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
109307 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
109308
109309 END IF;
109310
109311 -- 4955764
109312 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
109313 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
109314
109315
109316 XLA_AE_LINES_PKG.ValidateCurrentLine;
109317 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
109318
109319 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
109320 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
109321 ,p_balance_type_code => l_balance_type_code);
109322
109323 END IF;
109324
109325 -----------------------------------------------------------------------------------------
109326 -- 4262811 Multiperiod Accounting
109327 -----------------------------------------------------------------------------------------
109328 -- No MPA option is assigned.
109329
109330
109331 END IF;
109332 END IF;
109333 --
109334
109335 --
109336 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
109337 trace
109338 (p_msg => 'END of AcctLineType_198'
109339 ,p_level => C_LEVEL_PROCEDURE
109340 ,p_module => l_log_module);
109341 END IF;
109342 --
109343 EXCEPTION
109344 WHEN xla_exceptions_pkg.application_exception THEN
109345 RAISE;
109346 WHEN OTHERS THEN
109347 xla_exceptions_pkg.raise_message
109348 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_198');
109349 END AcctLineType_198;
109350 --
109351
109352 ---------------------------------------
109353 --
109354 -- PRIVATE FUNCTION
109355 -- AcctLineType_199
109356 --
109357 ---------------------------------------
109358 PROCEDURE AcctLineType_199 (
109359 p_application_id IN NUMBER
109360 ,p_event_id IN NUMBER
109361 ,p_calculate_acctd_flag IN VARCHAR2
109362 ,p_calculate_g_l_flag IN VARCHAR2
109363 ,p_actual_flag IN OUT VARCHAR2
109364 ,p_balance_type_code OUT VARCHAR2
109365 ,p_gain_or_loss_ref OUT VARCHAR2
109366
109367 --Cost Management Default Account
109368 , p_source_4 IN NUMBER
109369 --DISTRIBUTION_IDENTIFIER
109370 , p_source_11 IN NUMBER
109371 --Distribution Type
109372 , p_source_12 IN VARCHAR2
109373 , p_source_12_meaning IN VARCHAR2
109374 --Entered Currency Code
109375 , p_source_15 IN VARCHAR2
109376 --Entered Amount
109377 , p_source_18 IN NUMBER
109378 --Currency Conversion Date
109379 , p_source_19 IN DATE
109380 --Currency Conversion Rate
109381 , p_source_20 IN NUMBER
109382 --Currency Conversion Type
109383 , p_source_21 IN VARCHAR2
109384 --Accounted Amount
109385 , p_source_22 IN NUMBER
109386 --Accounting Line Type
109387 , p_source_24 IN NUMBER
109388 )
109389 IS
109390
109391 l_component_type VARCHAR2(80);
109392 l_component_code VARCHAR2(30);
109393 l_component_type_code VARCHAR2(1);
109394 l_component_appl_id INTEGER;
109395 l_amb_context_code VARCHAR2(30);
109396 l_entity_code VARCHAR2(30);
109397 l_event_class_code VARCHAR2(30);
109398 l_ae_header_id NUMBER;
109399 l_event_type_code VARCHAR2(30);
109400 l_line_definition_code VARCHAR2(30);
109401 l_line_definition_owner_code VARCHAR2(1);
109402 --
109403 -- adr variables
109404 l_segment VARCHAR2(30);
109405 l_ccid NUMBER;
109406 l_adr_transaction_coa_id NUMBER;
109407 l_adr_accounting_coa_id NUMBER;
109408 l_adr_flexfield_segment_code VARCHAR2(30);
109409 l_adr_flex_value_set_id NUMBER;
109410 l_adr_value_type_code VARCHAR2(30);
109411 l_adr_value_combination_id NUMBER;
109412 l_adr_value_segment_code VARCHAR2(30);
109413
109414 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
109415 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
109416 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
109417 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
109418
109419 -- 4262811 Variables ------------------------------------------------------------------------------------------
109420 l_entered_amt_idx NUMBER;
109421 l_accted_amt_idx NUMBER;
109422 l_acc_rev_flag VARCHAR2(1);
109423 l_accrual_line_num NUMBER;
109424 l_tmp_amt NUMBER;
109425 l_acc_rev_natural_side_code VARCHAR2(1);
109426
109427 l_num_entries NUMBER;
109428 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
109429 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
109430 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
109431 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
109432 l_recog_line_1 NUMBER;
109433 l_recog_line_2 NUMBER;
109434
109435 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
109436 l_bflow_applied_to_amt NUMBER; -- 5132302
109437 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
109438
109439 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
109440
109441 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
109442 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
109443
109444 ---------------------------------------------------------------------------------------------------------------
109445
109446
109447 --
109448 -- bulk performance
109449 --
109450 l_balance_type_code VARCHAR2(1);
109451 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
109452 l_log_module VARCHAR2(240);
109453
109454 --
109455 -- Upgrade strategy
109456 --
109457 l_actual_upg_option VARCHAR2(1);
109458 l_enc_upg_option VARCHAR2(1);
109459
109460 --
109461 BEGIN
109462 --
109463 IF g_log_enabled THEN
109464 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_199';
109465 END IF;
109466 --
109467 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
109468
109469 trace
109470 (p_msg => 'BEGIN of AcctLineType_199'
109471 ,p_level => C_LEVEL_PROCEDURE
109472 ,p_module => l_log_module);
109473
109474 END IF;
109475 --
109476 l_component_type := 'AMB_JLT';
109477 l_component_code := 'OFFSET';
109478 l_component_type_code := 'S';
109479 l_component_appl_id := 707;
109480 l_amb_context_code := 'DEFAULT';
109481 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
109482 l_event_class_code := 'USER_DEFINE';
109483 l_event_type_code := 'UFOB_RCPT_SENDER_SHIP';
109484 l_line_definition_owner_code := 'S';
109485 l_line_definition_code := 'USER_FOB_RCPT_SENDER_SHIP';
109486 --
109487 l_balance_type_code := 'A';
109488 l_segment := NULL;
109489 l_ccid := NULL;
109490 l_adr_transaction_coa_id := NULL;
109491 l_adr_accounting_coa_id := NULL;
109492 l_adr_flexfield_segment_code := NULL;
109493 l_adr_flex_value_set_id := NULL;
109494 l_adr_value_type_code := NULL;
109495 l_adr_value_combination_id := NULL;
109496 l_adr_value_segment_code := NULL;
109497
109498 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
109499 l_bflow_class_code := ''; -- 4219869 Business Flow
109500 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
109501 l_budgetary_control_flag := 'N';
109502
109503 l_bflow_applied_to_amt_idx := NULL; -- 5132302
109504 l_bflow_applied_to_amt := NULL; -- 5132302
109505 l_entered_amt_idx := NULL; -- 4262811
109506 l_accted_amt_idx := NULL; -- 4262811
109507 l_acc_rev_flag := NULL; -- 4262811
109508 l_accrual_line_num := NULL; -- 4262811
109509 l_tmp_amt := NULL; -- 4262811
109510 --
109511
109512 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
109513 l_balance_type_code <> 'B' THEN
109514 IF NVL(p_source_24,9E125) = 2
109515 THEN
109516
109517 --
109518 XLA_AE_LINES_PKG.SetNewLine;
109519
109520 p_balance_type_code := l_balance_type_code;
109521 -- set the flag so later we will know whether the gain loss line needs to be created
109522
109523 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
109524 p_actual_flag :='A';
109525 END IF;
109526
109527 --
109528 -- bulk performance
109529 --
109530 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
109531 p_header_num => 0); -- 4262811
109532 --
109533 -- set accounting line options
109534 --
109535 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
109536 p_natural_side_code => 'D'
109537 , p_gain_or_loss_flag => 'N'
109538 , p_gl_transfer_mode_code => 'S'
109539 , p_acct_entry_type_code => 'A'
109540 , p_switch_side_flag => 'Y'
109541 , p_merge_duplicate_code => 'N'
109542 );
109543 --
109544 l_acc_rev_natural_side_code := 'C'; -- 4262811
109545 --
109546 --
109547 -- set accounting line type info
109548 --
109549 xla_ae_lines_pkg.SetAcctLineType
109550 (p_component_type => l_component_type
109551 ,p_event_type_code => l_event_type_code
109552 ,p_line_definition_owner_code => l_line_definition_owner_code
109553 ,p_line_definition_code => l_line_definition_code
109554 ,p_accounting_line_code => l_component_code
109555 ,p_accounting_line_type_code => l_component_type_code
109556 ,p_accounting_line_appl_id => l_component_appl_id
109557 ,p_amb_context_code => l_amb_context_code
109558 ,p_entity_code => l_entity_code
109559 ,p_event_class_code => l_event_class_code);
109560 --
109561 -- set accounting class
109562 --
109563 xla_ae_lines_pkg.SetAcctClass(
109564 p_accounting_class_code => 'OFFSET'
109565 , p_ae_header_id => l_ae_header_id
109566 );
109567
109568 --
109569 -- set rounding class
109570 --
109571 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
109572 'OFFSET';
109573
109574 --
109575 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
109576 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
109577 --
109578 -- bulk performance
109579 --
109580 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
109581
109582 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
109583 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
109584
109585 -- 4955764
109586 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
109587 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
109588
109589 -- 4458381 Public Sector Enh
109590
109591 --
109592 -- set accounting attributes for the line type
109593 --
109594 l_entered_amt_idx := 3;
109595 l_accted_amt_idx := 8;
109596 l_bflow_applied_to_amt_idx := NULL; -- 5132302
109597 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
109598 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
109599 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
109600 l_rec_acct_attrs.array_char_value(2) := p_source_12;
109601 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
109602 l_rec_acct_attrs.array_num_value(3) := p_source_18;
109603 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
109604 l_rec_acct_attrs.array_char_value(4) := p_source_15;
109605 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
109606 l_rec_acct_attrs.array_date_value(5) := p_source_19;
109607 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
109608 l_rec_acct_attrs.array_num_value(6) := p_source_20;
109609 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
109610 l_rec_acct_attrs.array_char_value(7) := p_source_21;
109611 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
109612 l_rec_acct_attrs.array_num_value(8) := p_source_22;
109613
109614 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
109615 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
109616
109617 ---------------------------------------------------------------------------------------------------------------
109618 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
109619 ---------------------------------------------------------------------------------------------------------------
109620 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
109621
109622 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
109623 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
109624
109625 IF xla_accounting_cache_pkg.GetValueChar
109626 (p_source_code => 'LEDGER_CATEGORY_CODE'
109627 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
109628 AND l_bflow_method_code = 'PRIOR_ENTRY'
109629 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
109630 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
109631 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
109632 )
109633 THEN
109634 xla_ae_lines_pkg.BflowUpgEntry
109635 (p_business_method_code => l_bflow_method_code
109636 ,p_business_class_code => l_bflow_class_code
109637 ,p_balance_type => l_balance_type_code);
109638 ELSE
109639 NULL;
109640 -- No business flow processing for business flow method of NONE.
109641 END IF;
109642
109643 --
109644 -- call analytical criteria
109645 --
109646
109647 --
109648 -- call description
109649 --
109650 -- No description or it is inherited.
109651 --
109652 -- call ADRs
109653 -- Bug 4922099
109654 --
109655 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
109656 (NVL(l_actual_upg_option, 'N') = 'O') OR
109657 (NVL(l_enc_upg_option, 'N') = 'O')
109658 )
109659 THEN
109660 NULL;
109661 --
109662 --
109663
109664 l_ccid := AcctDerRule_4(
109665 p_application_id => p_application_id
109666 , p_ae_header_id => l_ae_header_id
109667 , p_source_4 => p_source_4
109668 , x_transaction_coa_id => l_adr_transaction_coa_id
109669 , x_accounting_coa_id => l_adr_accounting_coa_id
109670 , x_value_type_code => l_adr_value_type_code
109671 , p_side => 'NA'
109672 );
109673
109674 xla_ae_lines_pkg.set_ccid(
109675 p_code_combination_id => l_ccid
109676 , p_value_type_code => l_adr_value_type_code
109677 , p_transaction_coa_id => l_adr_transaction_coa_id
109678 , p_accounting_coa_id => l_adr_accounting_coa_id
109679 , p_adr_code => 'CST_DEFAULT'
109680 , p_adr_type_code => 'S'
109681 , p_component_type => l_component_type
109682 , p_component_code => l_component_code
109683 , p_component_type_code => l_component_type_code
109684 , p_component_appl_id => l_component_appl_id
109685 , p_amb_context_code => l_amb_context_code
109686 , p_side => 'NA'
109687 );
109688
109689
109690 --
109691 --
109692 END IF;
109693 --
109694 -- Bug 4922099
109695 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
109696 (NVL(l_enc_upg_option, 'N') = 'O')
109697 ) AND
109698 (l_bflow_method_code = 'PRIOR_ENTRY')
109699 )
109700 THEN
109701 IF
109702 --
109703 1 = 2
109704 --
109705 THEN
109706 xla_accounting_err_pkg.build_message
109707 (p_appli_s_name => 'XLA'
109708 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
109709 ,p_token_1 => 'LINE_NUMBER'
109710 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
109711 ,p_token_2 => 'LINE_TYPE_NAME'
109712 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
109713 l_component_type
109714 ,l_component_code
109715 ,l_component_type_code
109716 ,l_component_appl_id
109717 ,l_amb_context_code
109718 ,l_entity_code
109719 ,l_event_class_code
109720 )
109721 ,p_token_3 => 'OWNER'
109722 ,p_value_3 => xla_lookups_pkg.get_meaning(
109723 p_lookup_type => 'XLA_OWNER_TYPE'
109724 ,p_lookup_code => l_component_type_code
109725 )
109726 ,p_token_4 => 'PRODUCT_NAME'
109727 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
109728 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
109729 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
109730 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
109731 ,p_ae_header_id => NULL
109732 );
109733
109734 IF (C_LEVEL_ERROR>= g_log_level) THEN
109735 trace
109736 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
109737 ,p_level => C_LEVEL_ERROR
109738 ,p_module => l_log_module);
109739 END IF;
109740 END IF;
109741 END IF;
109742 --
109743 --
109744 ------------------------------------------------------------------------------------------------
109745 -- 4219869 Business Flow
109746 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
109747 -- Prior Entry. Currently, the following code is always generated.
109748 ------------------------------------------------------------------------------------------------
109749 XLA_AE_LINES_PKG.ValidateCurrentLine;
109750
109751 ------------------------------------------------------------------------------------
109752 -- 4219869 Business Flow
109753 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
109754 ------------------------------------------------------------------------------------
109755 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
109756
109757 ----------------------------------------------------------------------------------
109758 -- 4219869 Business Flow
109759 -- Update journal entry status -- Need to generate this within IF <condition>
109760 ----------------------------------------------------------------------------------
109761 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
109762 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
109763 ,p_balance_type_code => l_balance_type_code
109764 );
109765
109766 -------------------------------------------------------------------------------------------
109767 -- 4262811 - Generate the Accrual Reversal lines
109768 -------------------------------------------------------------------------------------------
109769 BEGIN
109770 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
109771 (g_array_event(p_event_id).array_value_num('header_index'));
109772 IF l_acc_rev_flag IS NULL THEN
109773 l_acc_rev_flag := 'N';
109774 END IF;
109775 EXCEPTION
109776 WHEN OTHERS THEN
109777 l_acc_rev_flag := 'N';
109778 END;
109779 --
109780 IF (l_acc_rev_flag = 'Y') THEN
109781
109782 -- 4645092 ------------------------------------------------------------------------------
109783 -- To allow MPA report to determine if it should generate report process
109784 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
109785 ------------------------------------------------------------------------------------------
109786
109787 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
109788 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
109789 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
109790 -- call ADRs
109791 -- Bug 4922099
109792 --
109793 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
109794 (NVL(l_actual_upg_option, 'N') = 'O') OR
109795 (NVL(l_enc_upg_option, 'N') = 'O')
109796 )
109797 THEN
109798 NULL;
109799 --
109800 --
109801
109802 l_ccid := AcctDerRule_4(
109803 p_application_id => p_application_id
109804 , p_ae_header_id => l_ae_header_id
109805 , p_source_4 => p_source_4
109806 , x_transaction_coa_id => l_adr_transaction_coa_id
109807 , x_accounting_coa_id => l_adr_accounting_coa_id
109808 , x_value_type_code => l_adr_value_type_code
109809 , p_side => 'NA'
109810 );
109811
109812 xla_ae_lines_pkg.set_ccid(
109813 p_code_combination_id => l_ccid
109814 , p_value_type_code => l_adr_value_type_code
109815 , p_transaction_coa_id => l_adr_transaction_coa_id
109816 , p_accounting_coa_id => l_adr_accounting_coa_id
109817 , p_adr_code => 'CST_DEFAULT'
109818 , p_adr_type_code => 'S'
109819 , p_component_type => l_component_type
109820 , p_component_code => l_component_code
109821 , p_component_type_code => l_component_type_code
109822 , p_component_appl_id => l_component_appl_id
109823 , p_amb_context_code => l_amb_context_code
109824 , p_side => 'NA'
109825 );
109826
109827
109828 --
109829 --
109830 END IF;
109831
109832 --
109833 -- Update the line information that should be overwritten
109834 --
109835 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
109836 p_header_num => 1);
109837 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
109838
109839 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
109840
109841 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
109842 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
109843 END IF;
109844
109845 --
109846 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
109847 --
109848 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
109849 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
109850 ELSE
109851 ---------------------------------------------------------------------------------------------------
109852 -- 4262811a Switch Sign
109853 ---------------------------------------------------------------------------------------------------
109854 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
109855 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
109856 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
109857 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
109858 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
109859 -- 5132302
109860 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
109861 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
109862
109863 END IF;
109864
109865 -- 4955764
109866 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
109867 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
109868
109869
109870 XLA_AE_LINES_PKG.ValidateCurrentLine;
109871 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
109872
109873 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
109874 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
109875 ,p_balance_type_code => l_balance_type_code);
109876
109877 END IF;
109878
109879 -----------------------------------------------------------------------------------------
109880 -- 4262811 Multiperiod Accounting
109881 -----------------------------------------------------------------------------------------
109882 -- No MPA option is assigned.
109883
109884
109885 END IF;
109886 END IF;
109887 --
109888
109889 --
109890 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
109891 trace
109892 (p_msg => 'END of AcctLineType_199'
109893 ,p_level => C_LEVEL_PROCEDURE
109894 ,p_module => l_log_module);
109895 END IF;
109896 --
109897 EXCEPTION
109898 WHEN xla_exceptions_pkg.application_exception THEN
109899 RAISE;
109900 WHEN OTHERS THEN
109901 xla_exceptions_pkg.raise_message
109902 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_199');
109903 END AcctLineType_199;
109904 --
109905
109906 ---------------------------------------
109907 --
109908 -- PRIVATE FUNCTION
109909 -- AcctLineType_200
109910 --
109911 ---------------------------------------
109912 PROCEDURE AcctLineType_200 (
109913 p_application_id IN NUMBER
109914 ,p_event_id IN NUMBER
109915 ,p_calculate_acctd_flag IN VARCHAR2
109916 ,p_calculate_g_l_flag IN VARCHAR2
109917 ,p_actual_flag IN OUT VARCHAR2
109918 ,p_balance_type_code OUT VARCHAR2
109919 ,p_gain_or_loss_ref OUT VARCHAR2
109920
109921 --Cost Management Default Account
109922 , p_source_4 IN NUMBER
109923 --DISTRIBUTION_IDENTIFIER
109924 , p_source_11 IN NUMBER
109925 --Distribution Type
109926 , p_source_12 IN VARCHAR2
109927 , p_source_12_meaning IN VARCHAR2
109928 --Entered Currency Code
109929 , p_source_15 IN VARCHAR2
109930 --Entered Amount
109931 , p_source_18 IN NUMBER
109932 --Currency Conversion Date
109933 , p_source_19 IN DATE
109934 --Currency Conversion Rate
109935 , p_source_20 IN NUMBER
109936 --Currency Conversion Type
109937 , p_source_21 IN VARCHAR2
109938 --Accounted Amount
109939 , p_source_22 IN NUMBER
109940 --Accounting Line Type
109941 , p_source_24 IN NUMBER
109942 )
109943 IS
109944
109945 l_component_type VARCHAR2(80);
109946 l_component_code VARCHAR2(30);
109947 l_component_type_code VARCHAR2(1);
109948 l_component_appl_id INTEGER;
109949 l_amb_context_code VARCHAR2(30);
109950 l_entity_code VARCHAR2(30);
109951 l_event_class_code VARCHAR2(30);
109952 l_ae_header_id NUMBER;
109953 l_event_type_code VARCHAR2(30);
109954 l_line_definition_code VARCHAR2(30);
109955 l_line_definition_owner_code VARCHAR2(1);
109956 --
109957 -- adr variables
109958 l_segment VARCHAR2(30);
109959 l_ccid NUMBER;
109960 l_adr_transaction_coa_id NUMBER;
109961 l_adr_accounting_coa_id NUMBER;
109962 l_adr_flexfield_segment_code VARCHAR2(30);
109963 l_adr_flex_value_set_id NUMBER;
109964 l_adr_value_type_code VARCHAR2(30);
109965 l_adr_value_combination_id NUMBER;
109966 l_adr_value_segment_code VARCHAR2(30);
109967
109968 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
109969 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
109970 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
109971 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
109972
109973 -- 4262811 Variables ------------------------------------------------------------------------------------------
109974 l_entered_amt_idx NUMBER;
109975 l_accted_amt_idx NUMBER;
109976 l_acc_rev_flag VARCHAR2(1);
109977 l_accrual_line_num NUMBER;
109978 l_tmp_amt NUMBER;
109979 l_acc_rev_natural_side_code VARCHAR2(1);
109980
109981 l_num_entries NUMBER;
109982 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
109983 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
109984 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
109985 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
109986 l_recog_line_1 NUMBER;
109987 l_recog_line_2 NUMBER;
109988
109989 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
109990 l_bflow_applied_to_amt NUMBER; -- 5132302
109991 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
109992
109993 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
109994
109995 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
109996 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
109997
109998 ---------------------------------------------------------------------------------------------------------------
109999
110000
110001 --
110002 -- bulk performance
110003 --
110004 l_balance_type_code VARCHAR2(1);
110005 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
110006 l_log_module VARCHAR2(240);
110007
110008 --
110009 -- Upgrade strategy
110010 --
110011 l_actual_upg_option VARCHAR2(1);
110012 l_enc_upg_option VARCHAR2(1);
110013
110014 --
110015 BEGIN
110016 --
110017 IF g_log_enabled THEN
110018 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_200';
110019 END IF;
110020 --
110021 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
110022
110023 trace
110024 (p_msg => 'BEGIN of AcctLineType_200'
110025 ,p_level => C_LEVEL_PROCEDURE
110026 ,p_module => l_log_module);
110027
110028 END IF;
110029 --
110030 l_component_type := 'AMB_JLT';
110031 l_component_code := 'OFFSET';
110032 l_component_type_code := 'S';
110033 l_component_appl_id := 707;
110034 l_amb_context_code := 'DEFAULT';
110035 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
110036 l_event_class_code := 'USER_DEFINE';
110037 l_event_type_code := 'UFOB_SHIP_SENDER_SHIP_TP';
110038 l_line_definition_owner_code := 'S';
110039 l_line_definition_code := 'USER_FOB_SHIP_SENDER_SHIP_TP';
110040 --
110041 l_balance_type_code := 'A';
110042 l_segment := NULL;
110043 l_ccid := NULL;
110044 l_adr_transaction_coa_id := NULL;
110045 l_adr_accounting_coa_id := NULL;
110046 l_adr_flexfield_segment_code := NULL;
110047 l_adr_flex_value_set_id := NULL;
110048 l_adr_value_type_code := NULL;
110049 l_adr_value_combination_id := NULL;
110050 l_adr_value_segment_code := NULL;
110051
110052 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
110053 l_bflow_class_code := ''; -- 4219869 Business Flow
110054 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
110055 l_budgetary_control_flag := 'N';
110056
110057 l_bflow_applied_to_amt_idx := NULL; -- 5132302
110058 l_bflow_applied_to_amt := NULL; -- 5132302
110059 l_entered_amt_idx := NULL; -- 4262811
110060 l_accted_amt_idx := NULL; -- 4262811
110061 l_acc_rev_flag := NULL; -- 4262811
110062 l_accrual_line_num := NULL; -- 4262811
110063 l_tmp_amt := NULL; -- 4262811
110064 --
110065
110066 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
110067 l_balance_type_code <> 'B' THEN
110068 IF NVL(p_source_24,9E125) = 2
110069 THEN
110070
110071 --
110072 XLA_AE_LINES_PKG.SetNewLine;
110073
110074 p_balance_type_code := l_balance_type_code;
110075 -- set the flag so later we will know whether the gain loss line needs to be created
110076
110077 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
110078 p_actual_flag :='A';
110079 END IF;
110080
110081 --
110082 -- bulk performance
110083 --
110084 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
110085 p_header_num => 0); -- 4262811
110086 --
110087 -- set accounting line options
110088 --
110089 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
110090 p_natural_side_code => 'D'
110091 , p_gain_or_loss_flag => 'N'
110092 , p_gl_transfer_mode_code => 'S'
110093 , p_acct_entry_type_code => 'A'
110094 , p_switch_side_flag => 'Y'
110095 , p_merge_duplicate_code => 'N'
110096 );
110097 --
110098 l_acc_rev_natural_side_code := 'C'; -- 4262811
110099 --
110100 --
110101 -- set accounting line type info
110102 --
110103 xla_ae_lines_pkg.SetAcctLineType
110104 (p_component_type => l_component_type
110105 ,p_event_type_code => l_event_type_code
110106 ,p_line_definition_owner_code => l_line_definition_owner_code
110107 ,p_line_definition_code => l_line_definition_code
110108 ,p_accounting_line_code => l_component_code
110109 ,p_accounting_line_type_code => l_component_type_code
110110 ,p_accounting_line_appl_id => l_component_appl_id
110111 ,p_amb_context_code => l_amb_context_code
110112 ,p_entity_code => l_entity_code
110113 ,p_event_class_code => l_event_class_code);
110114 --
110115 -- set accounting class
110116 --
110117 xla_ae_lines_pkg.SetAcctClass(
110118 p_accounting_class_code => 'OFFSET'
110119 , p_ae_header_id => l_ae_header_id
110120 );
110121
110122 --
110123 -- set rounding class
110124 --
110125 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
110126 'OFFSET';
110127
110128 --
110129 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
110130 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
110131 --
110132 -- bulk performance
110133 --
110134 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
110135
110136 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
110137 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
110138
110139 -- 4955764
110140 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
110141 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
110142
110143 -- 4458381 Public Sector Enh
110144
110145 --
110146 -- set accounting attributes for the line type
110147 --
110148 l_entered_amt_idx := 3;
110149 l_accted_amt_idx := 8;
110150 l_bflow_applied_to_amt_idx := NULL; -- 5132302
110151 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
110152 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
110153 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
110154 l_rec_acct_attrs.array_char_value(2) := p_source_12;
110155 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
110156 l_rec_acct_attrs.array_num_value(3) := p_source_18;
110157 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
110158 l_rec_acct_attrs.array_char_value(4) := p_source_15;
110159 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
110160 l_rec_acct_attrs.array_date_value(5) := p_source_19;
110161 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
110162 l_rec_acct_attrs.array_num_value(6) := p_source_20;
110163 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
110164 l_rec_acct_attrs.array_char_value(7) := p_source_21;
110165 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
110166 l_rec_acct_attrs.array_num_value(8) := p_source_22;
110167
110168 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
110169 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
110170
110171 ---------------------------------------------------------------------------------------------------------------
110172 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
110173 ---------------------------------------------------------------------------------------------------------------
110174 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
110175
110176 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
110177 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
110178
110179 IF xla_accounting_cache_pkg.GetValueChar
110180 (p_source_code => 'LEDGER_CATEGORY_CODE'
110181 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
110182 AND l_bflow_method_code = 'PRIOR_ENTRY'
110183 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
110184 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
110185 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
110186 )
110187 THEN
110188 xla_ae_lines_pkg.BflowUpgEntry
110189 (p_business_method_code => l_bflow_method_code
110190 ,p_business_class_code => l_bflow_class_code
110191 ,p_balance_type => l_balance_type_code);
110192 ELSE
110193 NULL;
110194 -- No business flow processing for business flow method of NONE.
110195 END IF;
110196
110197 --
110198 -- call analytical criteria
110199 --
110200
110201 --
110202 -- call description
110203 --
110204 -- No description or it is inherited.
110205 --
110206 -- call ADRs
110207 -- Bug 4922099
110208 --
110209 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
110210 (NVL(l_actual_upg_option, 'N') = 'O') OR
110211 (NVL(l_enc_upg_option, 'N') = 'O')
110212 )
110213 THEN
110214 NULL;
110215 --
110216 --
110217
110218 l_ccid := AcctDerRule_4(
110219 p_application_id => p_application_id
110220 , p_ae_header_id => l_ae_header_id
110221 , p_source_4 => p_source_4
110222 , x_transaction_coa_id => l_adr_transaction_coa_id
110223 , x_accounting_coa_id => l_adr_accounting_coa_id
110224 , x_value_type_code => l_adr_value_type_code
110225 , p_side => 'NA'
110226 );
110227
110228 xla_ae_lines_pkg.set_ccid(
110229 p_code_combination_id => l_ccid
110230 , p_value_type_code => l_adr_value_type_code
110231 , p_transaction_coa_id => l_adr_transaction_coa_id
110232 , p_accounting_coa_id => l_adr_accounting_coa_id
110233 , p_adr_code => 'CST_DEFAULT'
110234 , p_adr_type_code => 'S'
110235 , p_component_type => l_component_type
110236 , p_component_code => l_component_code
110237 , p_component_type_code => l_component_type_code
110238 , p_component_appl_id => l_component_appl_id
110239 , p_amb_context_code => l_amb_context_code
110240 , p_side => 'NA'
110241 );
110242
110243
110244 --
110245 --
110246 END IF;
110247 --
110248 -- Bug 4922099
110249 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
110250 (NVL(l_enc_upg_option, 'N') = 'O')
110251 ) AND
110252 (l_bflow_method_code = 'PRIOR_ENTRY')
110253 )
110254 THEN
110255 IF
110256 --
110257 1 = 2
110258 --
110259 THEN
110260 xla_accounting_err_pkg.build_message
110261 (p_appli_s_name => 'XLA'
110262 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
110263 ,p_token_1 => 'LINE_NUMBER'
110264 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
110265 ,p_token_2 => 'LINE_TYPE_NAME'
110266 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
110267 l_component_type
110268 ,l_component_code
110269 ,l_component_type_code
110270 ,l_component_appl_id
110271 ,l_amb_context_code
110272 ,l_entity_code
110273 ,l_event_class_code
110274 )
110275 ,p_token_3 => 'OWNER'
110276 ,p_value_3 => xla_lookups_pkg.get_meaning(
110277 p_lookup_type => 'XLA_OWNER_TYPE'
110278 ,p_lookup_code => l_component_type_code
110279 )
110280 ,p_token_4 => 'PRODUCT_NAME'
110281 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
110282 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
110283 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
110284 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
110285 ,p_ae_header_id => NULL
110286 );
110287
110288 IF (C_LEVEL_ERROR>= g_log_level) THEN
110289 trace
110290 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
110291 ,p_level => C_LEVEL_ERROR
110292 ,p_module => l_log_module);
110293 END IF;
110294 END IF;
110295 END IF;
110296 --
110297 --
110298 ------------------------------------------------------------------------------------------------
110299 -- 4219869 Business Flow
110300 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
110301 -- Prior Entry. Currently, the following code is always generated.
110302 ------------------------------------------------------------------------------------------------
110303 XLA_AE_LINES_PKG.ValidateCurrentLine;
110304
110305 ------------------------------------------------------------------------------------
110306 -- 4219869 Business Flow
110307 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
110308 ------------------------------------------------------------------------------------
110309 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
110310
110311 ----------------------------------------------------------------------------------
110312 -- 4219869 Business Flow
110313 -- Update journal entry status -- Need to generate this within IF <condition>
110314 ----------------------------------------------------------------------------------
110315 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
110316 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
110317 ,p_balance_type_code => l_balance_type_code
110318 );
110319
110320 -------------------------------------------------------------------------------------------
110321 -- 4262811 - Generate the Accrual Reversal lines
110322 -------------------------------------------------------------------------------------------
110323 BEGIN
110324 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
110325 (g_array_event(p_event_id).array_value_num('header_index'));
110326 IF l_acc_rev_flag IS NULL THEN
110327 l_acc_rev_flag := 'N';
110328 END IF;
110329 EXCEPTION
110330 WHEN OTHERS THEN
110331 l_acc_rev_flag := 'N';
110332 END;
110333 --
110334 IF (l_acc_rev_flag = 'Y') THEN
110335
110336 -- 4645092 ------------------------------------------------------------------------------
110337 -- To allow MPA report to determine if it should generate report process
110338 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
110339 ------------------------------------------------------------------------------------------
110340
110341 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
110342 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
110343 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
110344 -- call ADRs
110345 -- Bug 4922099
110346 --
110347 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
110348 (NVL(l_actual_upg_option, 'N') = 'O') OR
110349 (NVL(l_enc_upg_option, 'N') = 'O')
110350 )
110351 THEN
110352 NULL;
110353 --
110354 --
110355
110356 l_ccid := AcctDerRule_4(
110357 p_application_id => p_application_id
110358 , p_ae_header_id => l_ae_header_id
110359 , p_source_4 => p_source_4
110360 , x_transaction_coa_id => l_adr_transaction_coa_id
110361 , x_accounting_coa_id => l_adr_accounting_coa_id
110362 , x_value_type_code => l_adr_value_type_code
110363 , p_side => 'NA'
110364 );
110365
110366 xla_ae_lines_pkg.set_ccid(
110367 p_code_combination_id => l_ccid
110368 , p_value_type_code => l_adr_value_type_code
110369 , p_transaction_coa_id => l_adr_transaction_coa_id
110370 , p_accounting_coa_id => l_adr_accounting_coa_id
110371 , p_adr_code => 'CST_DEFAULT'
110372 , p_adr_type_code => 'S'
110373 , p_component_type => l_component_type
110374 , p_component_code => l_component_code
110375 , p_component_type_code => l_component_type_code
110376 , p_component_appl_id => l_component_appl_id
110377 , p_amb_context_code => l_amb_context_code
110378 , p_side => 'NA'
110379 );
110380
110381
110382 --
110383 --
110384 END IF;
110385
110386 --
110387 -- Update the line information that should be overwritten
110388 --
110389 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
110390 p_header_num => 1);
110391 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
110392
110393 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
110394
110395 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
110396 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
110397 END IF;
110398
110399 --
110400 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
110401 --
110402 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
110403 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
110404 ELSE
110405 ---------------------------------------------------------------------------------------------------
110406 -- 4262811a Switch Sign
110407 ---------------------------------------------------------------------------------------------------
110408 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
110409 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
110410 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
110411 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
110412 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
110413 -- 5132302
110414 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
110415 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
110416
110417 END IF;
110418
110419 -- 4955764
110420 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
110421 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
110422
110423
110424 XLA_AE_LINES_PKG.ValidateCurrentLine;
110425 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
110426
110427 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
110428 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
110429 ,p_balance_type_code => l_balance_type_code);
110430
110431 END IF;
110432
110433 -----------------------------------------------------------------------------------------
110434 -- 4262811 Multiperiod Accounting
110435 -----------------------------------------------------------------------------------------
110436 -- No MPA option is assigned.
110437
110438
110439 END IF;
110440 END IF;
110441 --
110442
110443 --
110444 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
110445 trace
110446 (p_msg => 'END of AcctLineType_200'
110447 ,p_level => C_LEVEL_PROCEDURE
110448 ,p_module => l_log_module);
110449 END IF;
110450 --
110451 EXCEPTION
110452 WHEN xla_exceptions_pkg.application_exception THEN
110453 RAISE;
110454 WHEN OTHERS THEN
110455 xla_exceptions_pkg.raise_message
110456 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_200');
110457 END AcctLineType_200;
110458 --
110459
110460 ---------------------------------------
110461 --
110462 -- PRIVATE FUNCTION
110463 -- AcctLineType_201
110464 --
110465 ---------------------------------------
110466 PROCEDURE AcctLineType_201 (
110467 p_application_id IN NUMBER
110468 ,p_event_id IN NUMBER
110469 ,p_calculate_acctd_flag IN VARCHAR2
110470 ,p_calculate_g_l_flag IN VARCHAR2
110471 ,p_actual_flag IN OUT VARCHAR2
110472 ,p_balance_type_code OUT VARCHAR2
110473 ,p_gain_or_loss_ref OUT VARCHAR2
110474
110475 --Cost Management Default Account
110476 , p_source_4 IN NUMBER
110477 --DISTRIBUTION_IDENTIFIER
110478 , p_source_11 IN NUMBER
110479 --Distribution Type
110480 , p_source_12 IN VARCHAR2
110481 , p_source_12_meaning IN VARCHAR2
110482 --Entered Currency Code
110483 , p_source_15 IN VARCHAR2
110484 --Entered Amount
110485 , p_source_18 IN NUMBER
110486 --Currency Conversion Date
110487 , p_source_19 IN DATE
110488 --Currency Conversion Rate
110489 , p_source_20 IN NUMBER
110490 --Currency Conversion Type
110491 , p_source_21 IN VARCHAR2
110492 --Accounted Amount
110493 , p_source_22 IN NUMBER
110494 --Accounting Line Type
110495 , p_source_24 IN NUMBER
110496 )
110497 IS
110498
110499 l_component_type VARCHAR2(80);
110500 l_component_code VARCHAR2(30);
110501 l_component_type_code VARCHAR2(1);
110502 l_component_appl_id INTEGER;
110503 l_amb_context_code VARCHAR2(30);
110504 l_entity_code VARCHAR2(30);
110505 l_event_class_code VARCHAR2(30);
110506 l_ae_header_id NUMBER;
110507 l_event_type_code VARCHAR2(30);
110508 l_line_definition_code VARCHAR2(30);
110509 l_line_definition_owner_code VARCHAR2(1);
110510 --
110511 -- adr variables
110512 l_segment VARCHAR2(30);
110513 l_ccid NUMBER;
110514 l_adr_transaction_coa_id NUMBER;
110515 l_adr_accounting_coa_id NUMBER;
110516 l_adr_flexfield_segment_code VARCHAR2(30);
110517 l_adr_flex_value_set_id NUMBER;
110518 l_adr_value_type_code VARCHAR2(30);
110519 l_adr_value_combination_id NUMBER;
110520 l_adr_value_segment_code VARCHAR2(30);
110521
110522 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
110523 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
110524 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
110525 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
110526
110527 -- 4262811 Variables ------------------------------------------------------------------------------------------
110528 l_entered_amt_idx NUMBER;
110529 l_accted_amt_idx NUMBER;
110530 l_acc_rev_flag VARCHAR2(1);
110531 l_accrual_line_num NUMBER;
110532 l_tmp_amt NUMBER;
110533 l_acc_rev_natural_side_code VARCHAR2(1);
110534
110535 l_num_entries NUMBER;
110536 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
110537 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
110538 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
110539 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
110540 l_recog_line_1 NUMBER;
110541 l_recog_line_2 NUMBER;
110542
110543 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
110544 l_bflow_applied_to_amt NUMBER; -- 5132302
110545 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
110546
110547 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
110548
110549 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
110550 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
110551
110552 ---------------------------------------------------------------------------------------------------------------
110553
110554
110555 --
110556 -- bulk performance
110557 --
110558 l_balance_type_code VARCHAR2(1);
110559 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
110560 l_log_module VARCHAR2(240);
110561
110562 --
110563 -- Upgrade strategy
110564 --
110565 l_actual_upg_option VARCHAR2(1);
110566 l_enc_upg_option VARCHAR2(1);
110567
110568 --
110569 BEGIN
110570 --
110571 IF g_log_enabled THEN
110572 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_201';
110573 END IF;
110574 --
110575 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
110576
110577 trace
110578 (p_msg => 'BEGIN of AcctLineType_201'
110579 ,p_level => C_LEVEL_PROCEDURE
110580 ,p_module => l_log_module);
110581
110582 END IF;
110583 --
110584 l_component_type := 'AMB_JLT';
110585 l_component_code := 'OFFSET';
110586 l_component_type_code := 'S';
110587 l_component_appl_id := 707;
110588 l_amb_context_code := 'DEFAULT';
110589 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
110590 l_event_class_code := 'WIP_MTL';
110591 l_event_type_code := 'WIP_MTL_ALL';
110592 l_line_definition_owner_code := 'S';
110593 l_line_definition_code := 'WIP_MTL';
110594 --
110595 l_balance_type_code := 'A';
110596 l_segment := NULL;
110597 l_ccid := NULL;
110598 l_adr_transaction_coa_id := NULL;
110599 l_adr_accounting_coa_id := NULL;
110600 l_adr_flexfield_segment_code := NULL;
110601 l_adr_flex_value_set_id := NULL;
110602 l_adr_value_type_code := NULL;
110603 l_adr_value_combination_id := NULL;
110604 l_adr_value_segment_code := NULL;
110605
110606 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
110607 l_bflow_class_code := ''; -- 4219869 Business Flow
110608 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
110609 l_budgetary_control_flag := 'N';
110610
110611 l_bflow_applied_to_amt_idx := NULL; -- 5132302
110612 l_bflow_applied_to_amt := NULL; -- 5132302
110613 l_entered_amt_idx := NULL; -- 4262811
110614 l_accted_amt_idx := NULL; -- 4262811
110615 l_acc_rev_flag := NULL; -- 4262811
110616 l_accrual_line_num := NULL; -- 4262811
110617 l_tmp_amt := NULL; -- 4262811
110618 --
110619
110620 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
110621 l_balance_type_code <> 'B' THEN
110622 IF NVL(p_source_24,9E125) = 2
110623 THEN
110624
110625 --
110626 XLA_AE_LINES_PKG.SetNewLine;
110627
110628 p_balance_type_code := l_balance_type_code;
110629 -- set the flag so later we will know whether the gain loss line needs to be created
110630
110631 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
110632 p_actual_flag :='A';
110633 END IF;
110634
110635 --
110636 -- bulk performance
110637 --
110638 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
110639 p_header_num => 0); -- 4262811
110640 --
110641 -- set accounting line options
110642 --
110643 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
110644 p_natural_side_code => 'D'
110645 , p_gain_or_loss_flag => 'N'
110646 , p_gl_transfer_mode_code => 'S'
110647 , p_acct_entry_type_code => 'A'
110648 , p_switch_side_flag => 'Y'
110649 , p_merge_duplicate_code => 'N'
110650 );
110651 --
110652 l_acc_rev_natural_side_code := 'C'; -- 4262811
110653 --
110654 --
110655 -- set accounting line type info
110656 --
110657 xla_ae_lines_pkg.SetAcctLineType
110658 (p_component_type => l_component_type
110659 ,p_event_type_code => l_event_type_code
110660 ,p_line_definition_owner_code => l_line_definition_owner_code
110661 ,p_line_definition_code => l_line_definition_code
110662 ,p_accounting_line_code => l_component_code
110663 ,p_accounting_line_type_code => l_component_type_code
110664 ,p_accounting_line_appl_id => l_component_appl_id
110665 ,p_amb_context_code => l_amb_context_code
110666 ,p_entity_code => l_entity_code
110667 ,p_event_class_code => l_event_class_code);
110668 --
110669 -- set accounting class
110670 --
110671 xla_ae_lines_pkg.SetAcctClass(
110672 p_accounting_class_code => 'OFFSET'
110673 , p_ae_header_id => l_ae_header_id
110674 );
110675
110676 --
110677 -- set rounding class
110678 --
110679 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
110680 'OFFSET';
110681
110682 --
110683 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
110684 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
110685 --
110686 -- bulk performance
110687 --
110688 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
110689
110690 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
110691 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
110692
110693 -- 4955764
110694 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
110695 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
110696
110697 -- 4458381 Public Sector Enh
110698
110699 --
110700 -- set accounting attributes for the line type
110701 --
110702 l_entered_amt_idx := 3;
110703 l_accted_amt_idx := 8;
110704 l_bflow_applied_to_amt_idx := NULL; -- 5132302
110705 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
110706 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
110707 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
110708 l_rec_acct_attrs.array_char_value(2) := p_source_12;
110709 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
110710 l_rec_acct_attrs.array_num_value(3) := p_source_18;
110711 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
110712 l_rec_acct_attrs.array_char_value(4) := p_source_15;
110713 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
110714 l_rec_acct_attrs.array_date_value(5) := p_source_19;
110715 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
110716 l_rec_acct_attrs.array_num_value(6) := p_source_20;
110717 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
110718 l_rec_acct_attrs.array_char_value(7) := p_source_21;
110719 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
110720 l_rec_acct_attrs.array_num_value(8) := p_source_22;
110721
110722 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
110723 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
110724
110725 ---------------------------------------------------------------------------------------------------------------
110726 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
110727 ---------------------------------------------------------------------------------------------------------------
110728 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
110729
110730 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
110731 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
110732
110733 IF xla_accounting_cache_pkg.GetValueChar
110734 (p_source_code => 'LEDGER_CATEGORY_CODE'
110735 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
110736 AND l_bflow_method_code = 'PRIOR_ENTRY'
110737 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
110738 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
110739 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
110740 )
110741 THEN
110742 xla_ae_lines_pkg.BflowUpgEntry
110743 (p_business_method_code => l_bflow_method_code
110744 ,p_business_class_code => l_bflow_class_code
110745 ,p_balance_type => l_balance_type_code);
110746 ELSE
110747 NULL;
110748 -- No business flow processing for business flow method of NONE.
110749 END IF;
110750
110751 --
110752 -- call analytical criteria
110753 --
110754
110755 --
110756 -- call description
110757 --
110758 -- No description or it is inherited.
110759 --
110760 -- call ADRs
110761 -- Bug 4922099
110762 --
110763 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
110764 (NVL(l_actual_upg_option, 'N') = 'O') OR
110765 (NVL(l_enc_upg_option, 'N') = 'O')
110766 )
110767 THEN
110768 NULL;
110769 --
110770 --
110771
110772 l_ccid := AcctDerRule_4(
110773 p_application_id => p_application_id
110774 , p_ae_header_id => l_ae_header_id
110775 , p_source_4 => p_source_4
110776 , x_transaction_coa_id => l_adr_transaction_coa_id
110777 , x_accounting_coa_id => l_adr_accounting_coa_id
110778 , x_value_type_code => l_adr_value_type_code
110779 , p_side => 'NA'
110780 );
110781
110782 xla_ae_lines_pkg.set_ccid(
110783 p_code_combination_id => l_ccid
110784 , p_value_type_code => l_adr_value_type_code
110785 , p_transaction_coa_id => l_adr_transaction_coa_id
110786 , p_accounting_coa_id => l_adr_accounting_coa_id
110787 , p_adr_code => 'CST_DEFAULT'
110788 , p_adr_type_code => 'S'
110789 , p_component_type => l_component_type
110790 , p_component_code => l_component_code
110791 , p_component_type_code => l_component_type_code
110792 , p_component_appl_id => l_component_appl_id
110793 , p_amb_context_code => l_amb_context_code
110794 , p_side => 'NA'
110795 );
110796
110797
110798 --
110799 --
110800 END IF;
110801 --
110802 -- Bug 4922099
110803 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
110804 (NVL(l_enc_upg_option, 'N') = 'O')
110805 ) AND
110806 (l_bflow_method_code = 'PRIOR_ENTRY')
110807 )
110808 THEN
110809 IF
110810 --
110811 1 = 2
110812 --
110813 THEN
110814 xla_accounting_err_pkg.build_message
110815 (p_appli_s_name => 'XLA'
110816 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
110817 ,p_token_1 => 'LINE_NUMBER'
110818 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
110819 ,p_token_2 => 'LINE_TYPE_NAME'
110820 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
110821 l_component_type
110822 ,l_component_code
110823 ,l_component_type_code
110824 ,l_component_appl_id
110825 ,l_amb_context_code
110826 ,l_entity_code
110827 ,l_event_class_code
110828 )
110829 ,p_token_3 => 'OWNER'
110830 ,p_value_3 => xla_lookups_pkg.get_meaning(
110831 p_lookup_type => 'XLA_OWNER_TYPE'
110832 ,p_lookup_code => l_component_type_code
110833 )
110834 ,p_token_4 => 'PRODUCT_NAME'
110835 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
110836 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
110837 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
110838 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
110839 ,p_ae_header_id => NULL
110840 );
110841
110842 IF (C_LEVEL_ERROR>= g_log_level) THEN
110843 trace
110844 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
110845 ,p_level => C_LEVEL_ERROR
110846 ,p_module => l_log_module);
110847 END IF;
110848 END IF;
110849 END IF;
110850 --
110851 --
110852 ------------------------------------------------------------------------------------------------
110853 -- 4219869 Business Flow
110854 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
110855 -- Prior Entry. Currently, the following code is always generated.
110856 ------------------------------------------------------------------------------------------------
110857 XLA_AE_LINES_PKG.ValidateCurrentLine;
110858
110859 ------------------------------------------------------------------------------------
110860 -- 4219869 Business Flow
110861 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
110862 ------------------------------------------------------------------------------------
110863 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
110864
110865 ----------------------------------------------------------------------------------
110866 -- 4219869 Business Flow
110867 -- Update journal entry status -- Need to generate this within IF <condition>
110868 ----------------------------------------------------------------------------------
110869 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
110870 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
110871 ,p_balance_type_code => l_balance_type_code
110872 );
110873
110874 -------------------------------------------------------------------------------------------
110875 -- 4262811 - Generate the Accrual Reversal lines
110876 -------------------------------------------------------------------------------------------
110877 BEGIN
110878 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
110879 (g_array_event(p_event_id).array_value_num('header_index'));
110880 IF l_acc_rev_flag IS NULL THEN
110881 l_acc_rev_flag := 'N';
110882 END IF;
110883 EXCEPTION
110884 WHEN OTHERS THEN
110885 l_acc_rev_flag := 'N';
110886 END;
110887 --
110888 IF (l_acc_rev_flag = 'Y') THEN
110889
110890 -- 4645092 ------------------------------------------------------------------------------
110891 -- To allow MPA report to determine if it should generate report process
110892 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
110893 ------------------------------------------------------------------------------------------
110894
110895 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
110896 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
110897 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
110898 -- call ADRs
110899 -- Bug 4922099
110900 --
110901 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
110902 (NVL(l_actual_upg_option, 'N') = 'O') OR
110903 (NVL(l_enc_upg_option, 'N') = 'O')
110904 )
110905 THEN
110906 NULL;
110907 --
110908 --
110909
110910 l_ccid := AcctDerRule_4(
110911 p_application_id => p_application_id
110912 , p_ae_header_id => l_ae_header_id
110913 , p_source_4 => p_source_4
110914 , x_transaction_coa_id => l_adr_transaction_coa_id
110915 , x_accounting_coa_id => l_adr_accounting_coa_id
110916 , x_value_type_code => l_adr_value_type_code
110917 , p_side => 'NA'
110918 );
110919
110920 xla_ae_lines_pkg.set_ccid(
110921 p_code_combination_id => l_ccid
110922 , p_value_type_code => l_adr_value_type_code
110923 , p_transaction_coa_id => l_adr_transaction_coa_id
110924 , p_accounting_coa_id => l_adr_accounting_coa_id
110925 , p_adr_code => 'CST_DEFAULT'
110926 , p_adr_type_code => 'S'
110927 , p_component_type => l_component_type
110928 , p_component_code => l_component_code
110929 , p_component_type_code => l_component_type_code
110930 , p_component_appl_id => l_component_appl_id
110931 , p_amb_context_code => l_amb_context_code
110932 , p_side => 'NA'
110933 );
110934
110935
110936 --
110937 --
110938 END IF;
110939
110940 --
110941 -- Update the line information that should be overwritten
110942 --
110943 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
110944 p_header_num => 1);
110945 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
110946
110947 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
110948
110949 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
110950 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
110951 END IF;
110952
110953 --
110954 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
110955 --
110956 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
110957 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
110958 ELSE
110959 ---------------------------------------------------------------------------------------------------
110960 -- 4262811a Switch Sign
110961 ---------------------------------------------------------------------------------------------------
110962 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
110963 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
110964 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
110965 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
110966 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
110967 -- 5132302
110968 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
110969 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
110970
110971 END IF;
110972
110973 -- 4955764
110974 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
110975 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
110976
110977
110978 XLA_AE_LINES_PKG.ValidateCurrentLine;
110979 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
110980
110981 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
110982 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
110983 ,p_balance_type_code => l_balance_type_code);
110984
110985 END IF;
110986
110987 -----------------------------------------------------------------------------------------
110988 -- 4262811 Multiperiod Accounting
110989 -----------------------------------------------------------------------------------------
110990 -- No MPA option is assigned.
110991
110992
110993 END IF;
110994 END IF;
110995 --
110996
110997 --
110998 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
110999 trace
111000 (p_msg => 'END of AcctLineType_201'
111001 ,p_level => C_LEVEL_PROCEDURE
111002 ,p_module => l_log_module);
111003 END IF;
111004 --
111005 EXCEPTION
111006 WHEN xla_exceptions_pkg.application_exception THEN
111007 RAISE;
111008 WHEN OTHERS THEN
111009 xla_exceptions_pkg.raise_message
111010 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_201');
111011 END AcctLineType_201;
111012 --
111013
111014 ---------------------------------------
111015 --
111016 -- PRIVATE FUNCTION
111017 -- AcctLineType_202
111018 --
111019 ---------------------------------------
111020 PROCEDURE AcctLineType_202 (
111021 p_application_id IN NUMBER
111022 ,p_event_id IN NUMBER
111023 ,p_calculate_acctd_flag IN VARCHAR2
111024 ,p_calculate_g_l_flag IN VARCHAR2
111025 ,p_actual_flag IN OUT VARCHAR2
111026 ,p_balance_type_code OUT VARCHAR2
111027 ,p_gain_or_loss_ref OUT VARCHAR2
111028
111029 --Cost Management Default Account
111030 , p_source_4 IN NUMBER
111031 --Applied to Application ID
111032 , p_source_6 IN NUMBER
111033 --Applied to Distribution Link Type
111034 , p_source_7 IN VARCHAR2
111035 --Applied to Entity Code
111036 , p_source_8 IN VARCHAR2
111037 --DISTRIBUTION_IDENTIFIER
111038 , p_source_11 IN NUMBER
111039 --Distribution Type
111040 , p_source_12 IN VARCHAR2
111041 , p_source_12_meaning IN VARCHAR2
111042 --Encumbrance Reversal Amount Entered
111043 , p_source_14 IN NUMBER
111044 --Entered Currency Code
111045 , p_source_15 IN VARCHAR2
111046 --Transaction Encumbrance Reversal Amount
111047 , p_source_16 IN NUMBER
111048 --Entered Amount
111049 , p_source_18 IN NUMBER
111050 --Currency Conversion Date
111051 , p_source_19 IN DATE
111052 --Currency Conversion Rate
111053 , p_source_20 IN NUMBER
111054 --Currency Conversion Type
111055 , p_source_21 IN VARCHAR2
111056 --Accounted Amount
111057 , p_source_22 IN NUMBER
111058 --Accounting Line Type
111059 , p_source_24 IN NUMBER
111060 --Costing Encumbrance Upgrade Option
111061 , p_source_27 IN VARCHAR2
111062 --TXN_PO_DISTRIBUTION_ID
111063 , p_source_28 IN NUMBER
111064 --TXN_PO_HEADER_ID
111065 , p_source_29 IN NUMBER
111066 --Requisition Budget Account
111067 , p_source_30 IN NUMBER
111068 --Requisition Encumbrance Type Identifier
111069 , p_source_31 IN NUMBER
111070 )
111071 IS
111072
111073 l_component_type VARCHAR2(80);
111074 l_component_code VARCHAR2(30);
111075 l_component_type_code VARCHAR2(1);
111076 l_component_appl_id INTEGER;
111077 l_amb_context_code VARCHAR2(30);
111078 l_entity_code VARCHAR2(30);
111079 l_event_class_code VARCHAR2(30);
111080 l_ae_header_id NUMBER;
111081 l_event_type_code VARCHAR2(30);
111082 l_line_definition_code VARCHAR2(30);
111083 l_line_definition_owner_code VARCHAR2(1);
111084 --
111085 -- adr variables
111086 l_segment VARCHAR2(30);
111087 l_ccid NUMBER;
111088 l_adr_transaction_coa_id NUMBER;
111089 l_adr_accounting_coa_id NUMBER;
111090 l_adr_flexfield_segment_code VARCHAR2(30);
111091 l_adr_flex_value_set_id NUMBER;
111092 l_adr_value_type_code VARCHAR2(30);
111093 l_adr_value_combination_id NUMBER;
111094 l_adr_value_segment_code VARCHAR2(30);
111095
111096 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
111097 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
111098 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
111099 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
111100
111101 -- 4262811 Variables ------------------------------------------------------------------------------------------
111102 l_entered_amt_idx NUMBER;
111103 l_accted_amt_idx NUMBER;
111104 l_acc_rev_flag VARCHAR2(1);
111105 l_accrual_line_num NUMBER;
111106 l_tmp_amt NUMBER;
111107 l_acc_rev_natural_side_code VARCHAR2(1);
111108
111109 l_num_entries NUMBER;
111110 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
111111 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
111112 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
111113 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
111114 l_recog_line_1 NUMBER;
111115 l_recog_line_2 NUMBER;
111116
111117 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
111118 l_bflow_applied_to_amt NUMBER; -- 5132302
111119 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
111120
111121 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
111122
111123 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
111124 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
111125
111126 ---------------------------------------------------------------------------------------------------------------
111127
111128
111129 --
111130 -- bulk performance
111131 --
111132 l_balance_type_code VARCHAR2(1);
111133 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
111134 l_log_module VARCHAR2(240);
111135
111136 --
111137 -- Upgrade strategy
111138 --
111139 l_actual_upg_option VARCHAR2(1);
111140 l_enc_upg_option VARCHAR2(1);
111141
111142 --
111143 BEGIN
111144 --
111145 IF g_log_enabled THEN
111146 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_202';
111147 END IF;
111148 --
111149 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
111150
111151 trace
111152 (p_msg => 'BEGIN of AcctLineType_202'
111153 ,p_level => C_LEVEL_PROCEDURE
111154 ,p_module => l_log_module);
111155
111156 END IF;
111157 --
111158 l_component_type := 'AMB_JLT';
111159 l_component_code := 'OFFSET';
111160 l_component_type_code := 'S';
111161 l_component_appl_id := 707;
111162 l_amb_context_code := 'DEFAULT';
111163 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
111164 l_event_class_code := 'FOB_SHIP_RECIPIENT_RCPT';
111165 l_event_type_code := 'FOB_SHIP_RECIPIENT_RCPT_ALL';
111166 l_line_definition_owner_code := 'S';
111167 l_line_definition_code := 'FOB_SHIP_RECIPIENT_RCPT';
111168 --
111169 l_balance_type_code := 'A';
111170 l_segment := NULL;
111171 l_ccid := NULL;
111172 l_adr_transaction_coa_id := NULL;
111173 l_adr_accounting_coa_id := NULL;
111174 l_adr_flexfield_segment_code := NULL;
111175 l_adr_flex_value_set_id := NULL;
111176 l_adr_value_type_code := NULL;
111177 l_adr_value_combination_id := NULL;
111178 l_adr_value_segment_code := NULL;
111179
111180 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
111181 l_bflow_class_code := ''; -- 4219869 Business Flow
111182 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
111183 l_budgetary_control_flag := 'N';
111184
111185 l_bflow_applied_to_amt_idx := NULL; -- 5132302
111186 l_bflow_applied_to_amt := NULL; -- 5132302
111187 l_entered_amt_idx := NULL; -- 4262811
111188 l_accted_amt_idx := NULL; -- 4262811
111189 l_acc_rev_flag := NULL; -- 4262811
111190 l_accrual_line_num := NULL; -- 4262811
111191 l_tmp_amt := NULL; -- 4262811
111192 --
111193
111194 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
111195 l_balance_type_code <> 'B' THEN
111196 IF NVL(p_source_24,9E125) = 2
111197 THEN
111198
111199 --
111200 XLA_AE_LINES_PKG.SetNewLine;
111201
111202 p_balance_type_code := l_balance_type_code;
111203 -- set the flag so later we will know whether the gain loss line needs to be created
111204
111205 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
111206 p_actual_flag :='A';
111207 END IF;
111208
111209 --
111210 -- bulk performance
111211 --
111212 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
111213 p_header_num => 0); -- 4262811
111214 --
111215 -- set accounting line options
111216 --
111217 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
111218 p_natural_side_code => 'D'
111219 , p_gain_or_loss_flag => 'N'
111220 , p_gl_transfer_mode_code => 'S'
111221 , p_acct_entry_type_code => 'A'
111222 , p_switch_side_flag => 'Y'
111223 , p_merge_duplicate_code => 'N'
111224 );
111225 --
111226 l_acc_rev_natural_side_code := 'C'; -- 4262811
111227 --
111228 --
111229 -- set accounting line type info
111230 --
111231 xla_ae_lines_pkg.SetAcctLineType
111232 (p_component_type => l_component_type
111233 ,p_event_type_code => l_event_type_code
111234 ,p_line_definition_owner_code => l_line_definition_owner_code
111235 ,p_line_definition_code => l_line_definition_code
111236 ,p_accounting_line_code => l_component_code
111237 ,p_accounting_line_type_code => l_component_type_code
111238 ,p_accounting_line_appl_id => l_component_appl_id
111239 ,p_amb_context_code => l_amb_context_code
111240 ,p_entity_code => l_entity_code
111241 ,p_event_class_code => l_event_class_code);
111242 --
111243 -- set accounting class
111244 --
111245 xla_ae_lines_pkg.SetAcctClass(
111246 p_accounting_class_code => 'OFFSET'
111247 , p_ae_header_id => l_ae_header_id
111248 );
111249
111250 --
111251 -- set rounding class
111252 --
111253 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
111254 'OFFSET';
111255
111256 --
111257 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
111258 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
111259 --
111260 -- bulk performance
111261 --
111262 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
111263
111264 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
111265 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
111266
111267 -- 4955764
111268 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
111269 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
111270
111271 -- 4458381 Public Sector Enh
111272
111273 --
111274 -- set accounting attributes for the line type
111275 --
111276 l_entered_amt_idx := 17;
111277 l_accted_amt_idx := 22;
111278 l_bflow_applied_to_amt_idx := NULL; -- 5132302
111279 l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
111280 l_rec_acct_attrs.array_num_value(1) := p_source_6;
111281 l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
111282 l_rec_acct_attrs.array_char_value(2) := p_source_7;
111283 l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
111284 l_rec_acct_attrs.array_char_value(3) := p_source_8;
111285 l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
111286 l_rec_acct_attrs.array_num_value(4) := to_char(p_source_28);
111287 l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
111288 l_rec_acct_attrs.array_num_value(5) := to_char(p_source_29);
111289 l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
111290 l_rec_acct_attrs.array_num_value(6) := to_char(p_source_11);
111291 l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
111292 l_rec_acct_attrs.array_char_value(7) := p_source_12;
111293 l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
111294 l_rec_acct_attrs.array_num_value(8) := TO_NUMBER(p_source_30);
111295 l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
111296 l_rec_acct_attrs.array_num_value(9) := p_source_14;
111297 l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
111298 l_rec_acct_attrs.array_char_value(10) := p_source_15;
111299 l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
111300 l_rec_acct_attrs.array_num_value(11) := p_source_16;
111301 l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
111302 l_rec_acct_attrs.array_num_value(12) := TO_NUMBER(p_source_30);
111303 l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
111304 l_rec_acct_attrs.array_num_value(13) := p_source_14;
111305 l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
111306 l_rec_acct_attrs.array_char_value(14) := p_source_15;
111307 l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
111308 l_rec_acct_attrs.array_num_value(15) := p_source_16;
111309 l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
111310 l_rec_acct_attrs.array_char_value(16) := p_source_27;
111311 l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
111312 l_rec_acct_attrs.array_num_value(17) := p_source_18;
111313 l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
111314 l_rec_acct_attrs.array_char_value(18) := p_source_15;
111315 l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
111316 l_rec_acct_attrs.array_date_value(19) := p_source_19;
111317 l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
111318 l_rec_acct_attrs.array_num_value(20) := p_source_20;
111319 l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
111320 l_rec_acct_attrs.array_char_value(21) := p_source_21;
111321 l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
111322 l_rec_acct_attrs.array_num_value(22) := p_source_22;
111323 l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
111324 l_rec_acct_attrs.array_num_value(23) := p_source_31;
111325 l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
111326 l_rec_acct_attrs.array_num_value(24) := p_source_31;
111327
111328 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
111329 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
111330
111331 ---------------------------------------------------------------------------------------------------------------
111332 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
111333 ---------------------------------------------------------------------------------------------------------------
111334 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
111335
111336 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
111337 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
111338
111339 IF xla_accounting_cache_pkg.GetValueChar
111340 (p_source_code => 'LEDGER_CATEGORY_CODE'
111341 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
111342 AND l_bflow_method_code = 'PRIOR_ENTRY'
111343 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
111344 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
111345 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
111346 )
111347 THEN
111348 xla_ae_lines_pkg.BflowUpgEntry
111349 (p_business_method_code => l_bflow_method_code
111350 ,p_business_class_code => l_bflow_class_code
111351 ,p_balance_type => l_balance_type_code);
111352 ELSE
111353 NULL;
111354 -- No business flow processing for business flow method of NONE.
111355 END IF;
111356
111357 --
111358 -- call analytical criteria
111359 --
111360
111361 --
111362 -- call description
111363 --
111364 -- No description or it is inherited.
111365 --
111366 -- call ADRs
111367 -- Bug 4922099
111368 --
111369 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
111370 (NVL(l_actual_upg_option, 'N') = 'O') OR
111371 (NVL(l_enc_upg_option, 'N') = 'O')
111372 )
111373 THEN
111374 NULL;
111375 --
111376 --
111377
111378 l_ccid := AcctDerRule_4(
111379 p_application_id => p_application_id
111380 , p_ae_header_id => l_ae_header_id
111381 , p_source_4 => p_source_4
111382 , x_transaction_coa_id => l_adr_transaction_coa_id
111383 , x_accounting_coa_id => l_adr_accounting_coa_id
111384 , x_value_type_code => l_adr_value_type_code
111385 , p_side => 'NA'
111386 );
111387
111388 xla_ae_lines_pkg.set_ccid(
111389 p_code_combination_id => l_ccid
111390 , p_value_type_code => l_adr_value_type_code
111391 , p_transaction_coa_id => l_adr_transaction_coa_id
111392 , p_accounting_coa_id => l_adr_accounting_coa_id
111393 , p_adr_code => 'CST_DEFAULT'
111394 , p_adr_type_code => 'S'
111395 , p_component_type => l_component_type
111396 , p_component_code => l_component_code
111397 , p_component_type_code => l_component_type_code
111398 , p_component_appl_id => l_component_appl_id
111399 , p_amb_context_code => l_amb_context_code
111400 , p_side => 'NA'
111401 );
111402
111403
111404 --
111405 --
111406 END IF;
111407 --
111408 -- Bug 4922099
111409 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
111410 (NVL(l_enc_upg_option, 'N') = 'O')
111411 ) AND
111412 (l_bflow_method_code = 'PRIOR_ENTRY')
111413 )
111414 THEN
111415 IF
111416 --
111417 1 = 2
111418 --
111419 THEN
111420 xla_accounting_err_pkg.build_message
111421 (p_appli_s_name => 'XLA'
111422 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
111423 ,p_token_1 => 'LINE_NUMBER'
111424 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
111425 ,p_token_2 => 'LINE_TYPE_NAME'
111426 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
111427 l_component_type
111428 ,l_component_code
111429 ,l_component_type_code
111430 ,l_component_appl_id
111431 ,l_amb_context_code
111432 ,l_entity_code
111433 ,l_event_class_code
111434 )
111435 ,p_token_3 => 'OWNER'
111436 ,p_value_3 => xla_lookups_pkg.get_meaning(
111437 p_lookup_type => 'XLA_OWNER_TYPE'
111438 ,p_lookup_code => l_component_type_code
111439 )
111440 ,p_token_4 => 'PRODUCT_NAME'
111441 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
111442 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
111443 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
111444 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
111445 ,p_ae_header_id => NULL
111446 );
111447
111448 IF (C_LEVEL_ERROR>= g_log_level) THEN
111449 trace
111450 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
111451 ,p_level => C_LEVEL_ERROR
111452 ,p_module => l_log_module);
111453 END IF;
111454 END IF;
111455 END IF;
111456 --
111457 --
111458 ------------------------------------------------------------------------------------------------
111459 -- 4219869 Business Flow
111460 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
111461 -- Prior Entry. Currently, the following code is always generated.
111462 ------------------------------------------------------------------------------------------------
111463 XLA_AE_LINES_PKG.ValidateCurrentLine;
111464
111465 ------------------------------------------------------------------------------------
111466 -- 4219869 Business Flow
111467 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
111468 ------------------------------------------------------------------------------------
111469 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
111470
111471 ----------------------------------------------------------------------------------
111472 -- 4219869 Business Flow
111473 -- Update journal entry status -- Need to generate this within IF <condition>
111474 ----------------------------------------------------------------------------------
111475 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
111476 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
111477 ,p_balance_type_code => l_balance_type_code
111478 );
111479
111480 -------------------------------------------------------------------------------------------
111481 -- 4262811 - Generate the Accrual Reversal lines
111482 -------------------------------------------------------------------------------------------
111483 BEGIN
111484 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
111485 (g_array_event(p_event_id).array_value_num('header_index'));
111486 IF l_acc_rev_flag IS NULL THEN
111487 l_acc_rev_flag := 'N';
111488 END IF;
111489 EXCEPTION
111490 WHEN OTHERS THEN
111491 l_acc_rev_flag := 'N';
111492 END;
111493 --
111494 IF (l_acc_rev_flag = 'Y') THEN
111495
111496 -- 4645092 ------------------------------------------------------------------------------
111497 -- To allow MPA report to determine if it should generate report process
111498 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
111499 ------------------------------------------------------------------------------------------
111500
111501 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
111502 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
111503 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
111504 -- call ADRs
111505 -- Bug 4922099
111506 --
111507 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
111508 (NVL(l_actual_upg_option, 'N') = 'O') OR
111509 (NVL(l_enc_upg_option, 'N') = 'O')
111510 )
111511 THEN
111512 NULL;
111513 --
111514 --
111515
111516 l_ccid := AcctDerRule_4(
111517 p_application_id => p_application_id
111518 , p_ae_header_id => l_ae_header_id
111519 , p_source_4 => p_source_4
111520 , x_transaction_coa_id => l_adr_transaction_coa_id
111521 , x_accounting_coa_id => l_adr_accounting_coa_id
111522 , x_value_type_code => l_adr_value_type_code
111523 , p_side => 'NA'
111524 );
111525
111526 xla_ae_lines_pkg.set_ccid(
111527 p_code_combination_id => l_ccid
111528 , p_value_type_code => l_adr_value_type_code
111529 , p_transaction_coa_id => l_adr_transaction_coa_id
111530 , p_accounting_coa_id => l_adr_accounting_coa_id
111531 , p_adr_code => 'CST_DEFAULT'
111532 , p_adr_type_code => 'S'
111533 , p_component_type => l_component_type
111534 , p_component_code => l_component_code
111535 , p_component_type_code => l_component_type_code
111536 , p_component_appl_id => l_component_appl_id
111537 , p_amb_context_code => l_amb_context_code
111538 , p_side => 'NA'
111539 );
111540
111541
111542 --
111543 --
111544 END IF;
111545
111546 --
111547 -- Update the line information that should be overwritten
111548 --
111549 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
111550 p_header_num => 1);
111551 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
111552
111553 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
111554
111555 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
111556 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
111557 END IF;
111558
111559 --
111560 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
111561 --
111562 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
111563 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
111564 ELSE
111565 ---------------------------------------------------------------------------------------------------
111566 -- 4262811a Switch Sign
111567 ---------------------------------------------------------------------------------------------------
111568 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
111569 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
111570 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
111571 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
111572 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
111573 -- 5132302
111574 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
111575 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
111576
111577 END IF;
111578
111579 -- 4955764
111580 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
111581 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
111582
111583
111584 XLA_AE_LINES_PKG.ValidateCurrentLine;
111585 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
111586
111587 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
111588 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
111589 ,p_balance_type_code => l_balance_type_code);
111590
111591 END IF;
111592
111593 -----------------------------------------------------------------------------------------
111594 -- 4262811 Multiperiod Accounting
111595 -----------------------------------------------------------------------------------------
111596 -- No MPA option is assigned.
111597
111598
111599 END IF;
111600 END IF;
111601 --
111602
111603 --
111604 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
111605 trace
111606 (p_msg => 'END of AcctLineType_202'
111607 ,p_level => C_LEVEL_PROCEDURE
111608 ,p_module => l_log_module);
111609 END IF;
111610 --
111611 EXCEPTION
111612 WHEN xla_exceptions_pkg.application_exception THEN
111613 RAISE;
111614 WHEN OTHERS THEN
111615 xla_exceptions_pkg.raise_message
111616 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_202');
111617 END AcctLineType_202;
111618 --
111619
111620 ---------------------------------------
111621 --
111622 -- PRIVATE FUNCTION
111623 -- AcctLineType_203
111624 --
111625 ---------------------------------------
111626 PROCEDURE AcctLineType_203 (
111627 p_application_id IN NUMBER
111628 ,p_event_id IN NUMBER
111629 ,p_calculate_acctd_flag IN VARCHAR2
111630 ,p_calculate_g_l_flag IN VARCHAR2
111631 ,p_actual_flag IN OUT VARCHAR2
111632 ,p_balance_type_code OUT VARCHAR2
111633 ,p_gain_or_loss_ref OUT VARCHAR2
111634
111635 --Offset Account for the Write Off
111636 , p_source_3 IN NUMBER
111637 --Distribution Type
111638 , p_source_12 IN VARCHAR2
111639 , p_source_12_meaning IN VARCHAR2
111640 --Entered Currency Code
111641 , p_source_15 IN VARCHAR2
111642 --Entered Amount
111643 , p_source_18 IN NUMBER
111644 --Currency Conversion Date
111645 , p_source_19 IN DATE
111646 --Currency Conversion Rate
111647 , p_source_20 IN NUMBER
111648 --Currency Conversion Type
111649 , p_source_21 IN VARCHAR2
111650 --Accounted Amount
111651 , p_source_22 IN NUMBER
111652 --Line Number
111653 , p_source_25 IN NUMBER
111654 --WRITE_OFF_ID
111655 , p_source_26 IN NUMBER
111656 )
111657 IS
111658
111659 l_component_type VARCHAR2(80);
111660 l_component_code VARCHAR2(30);
111661 l_component_type_code VARCHAR2(1);
111662 l_component_appl_id INTEGER;
111663 l_amb_context_code VARCHAR2(30);
111664 l_entity_code VARCHAR2(30);
111665 l_event_class_code VARCHAR2(30);
111666 l_ae_header_id NUMBER;
111667 l_event_type_code VARCHAR2(30);
111668 l_line_definition_code VARCHAR2(30);
111669 l_line_definition_owner_code VARCHAR2(1);
111670 --
111671 -- adr variables
111672 l_segment VARCHAR2(30);
111673 l_ccid NUMBER;
111674 l_adr_transaction_coa_id NUMBER;
111675 l_adr_accounting_coa_id NUMBER;
111676 l_adr_flexfield_segment_code VARCHAR2(30);
111677 l_adr_flex_value_set_id NUMBER;
111678 l_adr_value_type_code VARCHAR2(30);
111679 l_adr_value_combination_id NUMBER;
111680 l_adr_value_segment_code VARCHAR2(30);
111681
111682 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
111683 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
111684 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
111685 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
111686
111687 -- 4262811 Variables ------------------------------------------------------------------------------------------
111688 l_entered_amt_idx NUMBER;
111689 l_accted_amt_idx NUMBER;
111690 l_acc_rev_flag VARCHAR2(1);
111691 l_accrual_line_num NUMBER;
111692 l_tmp_amt NUMBER;
111693 l_acc_rev_natural_side_code VARCHAR2(1);
111694
111695 l_num_entries NUMBER;
111696 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
111697 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
111698 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
111699 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
111700 l_recog_line_1 NUMBER;
111701 l_recog_line_2 NUMBER;
111702
111703 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
111704 l_bflow_applied_to_amt NUMBER; -- 5132302
111705 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
111706
111707 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
111708
111709 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
111710 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
111711
111712 ---------------------------------------------------------------------------------------------------------------
111713
111714
111715 --
111716 -- bulk performance
111717 --
111718 l_balance_type_code VARCHAR2(1);
111719 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
111720 l_log_module VARCHAR2(240);
111721
111722 --
111723 -- Upgrade strategy
111724 --
111725 l_actual_upg_option VARCHAR2(1);
111726 l_enc_upg_option VARCHAR2(1);
111727
111728 --
111729 BEGIN
111730 --
111731 IF g_log_enabled THEN
111732 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_203';
111733 END IF;
111734 --
111735 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
111736
111737 trace
111738 (p_msg => 'BEGIN of AcctLineType_203'
111739 ,p_level => C_LEVEL_PROCEDURE
111740 ,p_module => l_log_module);
111741
111742 END IF;
111743 --
111744 l_component_type := 'AMB_JLT';
111745 l_component_code := 'OFFSET';
111746 l_component_type_code := 'S';
111747 l_component_appl_id := 707;
111748 l_amb_context_code := 'DEFAULT';
111749 l_entity_code := 'WO_ACCOUNTING_EVENTS';
111750 l_event_class_code := 'ACCRUAL_WRITE_OFF';
111751 l_event_type_code := 'ACCRUAL_WRITE_OFF_ALL';
111752 l_line_definition_owner_code := 'S';
111753 l_line_definition_code := 'ACCRUAL_WRITE_OFF';
111754 --
111755 l_balance_type_code := 'A';
111756 l_segment := NULL;
111757 l_ccid := NULL;
111758 l_adr_transaction_coa_id := NULL;
111759 l_adr_accounting_coa_id := NULL;
111760 l_adr_flexfield_segment_code := NULL;
111761 l_adr_flex_value_set_id := NULL;
111762 l_adr_value_type_code := NULL;
111763 l_adr_value_combination_id := NULL;
111764 l_adr_value_segment_code := NULL;
111765
111766 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
111767 l_bflow_class_code := ''; -- 4219869 Business Flow
111768 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
111769 l_budgetary_control_flag := 'N';
111770
111771 l_bflow_applied_to_amt_idx := NULL; -- 5132302
111772 l_bflow_applied_to_amt := NULL; -- 5132302
111773 l_entered_amt_idx := NULL; -- 4262811
111774 l_accted_amt_idx := NULL; -- 4262811
111775 l_acc_rev_flag := NULL; -- 4262811
111776 l_accrual_line_num := NULL; -- 4262811
111777 l_tmp_amt := NULL; -- 4262811
111778 --
111779
111780 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
111781 l_balance_type_code <> 'B' THEN
111782 IF NVL(p_source_25,9E125) = 1
111783 THEN
111784
111785 --
111786 XLA_AE_LINES_PKG.SetNewLine;
111787
111788 p_balance_type_code := l_balance_type_code;
111789 -- set the flag so later we will know whether the gain loss line needs to be created
111790
111791 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
111792 p_actual_flag :='A';
111793 END IF;
111794
111795 --
111796 -- bulk performance
111797 --
111798 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
111799 p_header_num => 0); -- 4262811
111800 --
111801 -- set accounting line options
111802 --
111803 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
111804 p_natural_side_code => 'C'
111805 , p_gain_or_loss_flag => 'N'
111806 , p_gl_transfer_mode_code => 'S'
111807 , p_acct_entry_type_code => 'A'
111808 , p_switch_side_flag => 'Y'
111809 , p_merge_duplicate_code => 'N'
111810 );
111811 --
111812 l_acc_rev_natural_side_code := 'D'; -- 4262811
111813 --
111814 --
111815 -- set accounting line type info
111816 --
111817 xla_ae_lines_pkg.SetAcctLineType
111818 (p_component_type => l_component_type
111819 ,p_event_type_code => l_event_type_code
111820 ,p_line_definition_owner_code => l_line_definition_owner_code
111821 ,p_line_definition_code => l_line_definition_code
111822 ,p_accounting_line_code => l_component_code
111823 ,p_accounting_line_type_code => l_component_type_code
111824 ,p_accounting_line_appl_id => l_component_appl_id
111825 ,p_amb_context_code => l_amb_context_code
111826 ,p_entity_code => l_entity_code
111827 ,p_event_class_code => l_event_class_code);
111828 --
111829 -- set accounting class
111830 --
111831 xla_ae_lines_pkg.SetAcctClass(
111832 p_accounting_class_code => 'OFFSET'
111833 , p_ae_header_id => l_ae_header_id
111834 );
111835
111836 --
111837 -- set rounding class
111838 --
111839 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
111840 'OFFSET';
111841
111842 --
111843 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
111844 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
111845 --
111846 -- bulk performance
111847 --
111848 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
111849
111850 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
111851 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
111852
111853 -- 4955764
111854 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
111855 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
111856
111857 -- 4458381 Public Sector Enh
111858
111859 --
111860 -- set accounting attributes for the line type
111861 --
111862 l_entered_amt_idx := 3;
111863 l_accted_amt_idx := 8;
111864 l_bflow_applied_to_amt_idx := NULL; -- 5132302
111865 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
111866 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_26);
111867 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
111868 l_rec_acct_attrs.array_char_value(2) := p_source_12;
111869 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
111870 l_rec_acct_attrs.array_num_value(3) := p_source_18;
111871 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
111872 l_rec_acct_attrs.array_char_value(4) := p_source_15;
111873 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
111874 l_rec_acct_attrs.array_date_value(5) := p_source_19;
111875 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
111876 l_rec_acct_attrs.array_num_value(6) := p_source_20;
111877 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
111878 l_rec_acct_attrs.array_char_value(7) := p_source_21;
111879 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
111880 l_rec_acct_attrs.array_num_value(8) := p_source_22;
111881
111882 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
111883 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
111884
111885 ---------------------------------------------------------------------------------------------------------------
111886 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
111887 ---------------------------------------------------------------------------------------------------------------
111888 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
111889
111890 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
111891 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
111892
111893 IF xla_accounting_cache_pkg.GetValueChar
111894 (p_source_code => 'LEDGER_CATEGORY_CODE'
111895 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
111896 AND l_bflow_method_code = 'PRIOR_ENTRY'
111897 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
111898 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
111899 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
111900 )
111901 THEN
111902 xla_ae_lines_pkg.BflowUpgEntry
111903 (p_business_method_code => l_bflow_method_code
111904 ,p_business_class_code => l_bflow_class_code
111905 ,p_balance_type => l_balance_type_code);
111906 ELSE
111907 NULL;
111908 -- No business flow processing for business flow method of NONE.
111909 END IF;
111910
111911 --
111912 -- call analytical criteria
111913 --
111914
111915 --
111916 -- call description
111917 --
111918 -- No description or it is inherited.
111919 --
111920 -- call ADRs
111921 -- Bug 4922099
111922 --
111923 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
111924 (NVL(l_actual_upg_option, 'N') = 'O') OR
111925 (NVL(l_enc_upg_option, 'N') = 'O')
111926 )
111927 THEN
111928 NULL;
111929 --
111930 --
111931
111932 l_ccid := AcctDerRule_3(
111933 p_application_id => p_application_id
111934 , p_ae_header_id => l_ae_header_id
111935 , p_source_3 => p_source_3
111936 , x_transaction_coa_id => l_adr_transaction_coa_id
111937 , x_accounting_coa_id => l_adr_accounting_coa_id
111938 , x_value_type_code => l_adr_value_type_code
111939 , p_side => 'NA'
111940 );
111941
111942 xla_ae_lines_pkg.set_ccid(
111943 p_code_combination_id => l_ccid
111944 , p_value_type_code => l_adr_value_type_code
111945 , p_transaction_coa_id => l_adr_transaction_coa_id
111946 , p_accounting_coa_id => l_adr_accounting_coa_id
111947 , p_adr_code => 'CST_AWO_OFFSET'
111948 , p_adr_type_code => 'S'
111949 , p_component_type => l_component_type
111950 , p_component_code => l_component_code
111951 , p_component_type_code => l_component_type_code
111952 , p_component_appl_id => l_component_appl_id
111953 , p_amb_context_code => l_amb_context_code
111954 , p_side => 'NA'
111955 );
111956
111957
111958 --
111959 --
111960 END IF;
111961 --
111962 -- Bug 4922099
111963 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
111964 (NVL(l_enc_upg_option, 'N') = 'O')
111965 ) AND
111966 (l_bflow_method_code = 'PRIOR_ENTRY')
111967 )
111968 THEN
111969 IF
111970 --
111971 1 = 2
111972 --
111973 THEN
111974 xla_accounting_err_pkg.build_message
111975 (p_appli_s_name => 'XLA'
111976 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
111977 ,p_token_1 => 'LINE_NUMBER'
111978 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
111979 ,p_token_2 => 'LINE_TYPE_NAME'
111980 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
111981 l_component_type
111982 ,l_component_code
111983 ,l_component_type_code
111984 ,l_component_appl_id
111985 ,l_amb_context_code
111986 ,l_entity_code
111987 ,l_event_class_code
111988 )
111989 ,p_token_3 => 'OWNER'
111990 ,p_value_3 => xla_lookups_pkg.get_meaning(
111991 p_lookup_type => 'XLA_OWNER_TYPE'
111992 ,p_lookup_code => l_component_type_code
111993 )
111994 ,p_token_4 => 'PRODUCT_NAME'
111995 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
111996 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
111997 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
111998 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
111999 ,p_ae_header_id => NULL
112000 );
112001
112002 IF (C_LEVEL_ERROR>= g_log_level) THEN
112003 trace
112004 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
112005 ,p_level => C_LEVEL_ERROR
112006 ,p_module => l_log_module);
112007 END IF;
112008 END IF;
112009 END IF;
112010 --
112011 --
112012 ------------------------------------------------------------------------------------------------
112013 -- 4219869 Business Flow
112014 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
112015 -- Prior Entry. Currently, the following code is always generated.
112016 ------------------------------------------------------------------------------------------------
112017 XLA_AE_LINES_PKG.ValidateCurrentLine;
112018
112019 ------------------------------------------------------------------------------------
112020 -- 4219869 Business Flow
112021 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
112022 ------------------------------------------------------------------------------------
112023 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
112024
112025 ----------------------------------------------------------------------------------
112026 -- 4219869 Business Flow
112027 -- Update journal entry status -- Need to generate this within IF <condition>
112028 ----------------------------------------------------------------------------------
112029 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
112030 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
112031 ,p_balance_type_code => l_balance_type_code
112032 );
112033
112034 -------------------------------------------------------------------------------------------
112035 -- 4262811 - Generate the Accrual Reversal lines
112036 -------------------------------------------------------------------------------------------
112037 BEGIN
112038 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
112039 (g_array_event(p_event_id).array_value_num('header_index'));
112040 IF l_acc_rev_flag IS NULL THEN
112041 l_acc_rev_flag := 'N';
112042 END IF;
112043 EXCEPTION
112044 WHEN OTHERS THEN
112045 l_acc_rev_flag := 'N';
112046 END;
112047 --
112048 IF (l_acc_rev_flag = 'Y') THEN
112049
112050 -- 4645092 ------------------------------------------------------------------------------
112051 -- To allow MPA report to determine if it should generate report process
112052 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
112053 ------------------------------------------------------------------------------------------
112054
112055 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
112056 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
112057 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
112058 -- call ADRs
112059 -- Bug 4922099
112060 --
112061 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
112062 (NVL(l_actual_upg_option, 'N') = 'O') OR
112063 (NVL(l_enc_upg_option, 'N') = 'O')
112064 )
112065 THEN
112066 NULL;
112067 --
112068 --
112069
112070 l_ccid := AcctDerRule_3(
112071 p_application_id => p_application_id
112072 , p_ae_header_id => l_ae_header_id
112073 , p_source_3 => p_source_3
112074 , x_transaction_coa_id => l_adr_transaction_coa_id
112075 , x_accounting_coa_id => l_adr_accounting_coa_id
112076 , x_value_type_code => l_adr_value_type_code
112077 , p_side => 'NA'
112078 );
112079
112080 xla_ae_lines_pkg.set_ccid(
112081 p_code_combination_id => l_ccid
112082 , p_value_type_code => l_adr_value_type_code
112083 , p_transaction_coa_id => l_adr_transaction_coa_id
112084 , p_accounting_coa_id => l_adr_accounting_coa_id
112085 , p_adr_code => 'CST_AWO_OFFSET'
112086 , p_adr_type_code => 'S'
112087 , p_component_type => l_component_type
112088 , p_component_code => l_component_code
112089 , p_component_type_code => l_component_type_code
112090 , p_component_appl_id => l_component_appl_id
112091 , p_amb_context_code => l_amb_context_code
112092 , p_side => 'NA'
112093 );
112094
112095
112096 --
112097 --
112098 END IF;
112099
112100 --
112101 -- Update the line information that should be overwritten
112102 --
112103 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
112104 p_header_num => 1);
112105 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
112106
112107 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
112108
112109 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
112110 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
112111 END IF;
112112
112113 --
112114 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
112115 --
112116 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
112117 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
112118 ELSE
112119 ---------------------------------------------------------------------------------------------------
112120 -- 4262811a Switch Sign
112121 ---------------------------------------------------------------------------------------------------
112122 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
112123 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
112124 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
112125 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
112126 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
112127 -- 5132302
112128 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
112129 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
112130
112131 END IF;
112132
112133 -- 4955764
112134 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
112135 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
112136
112137
112138 XLA_AE_LINES_PKG.ValidateCurrentLine;
112139 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
112140
112141 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
112142 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
112143 ,p_balance_type_code => l_balance_type_code);
112144
112145 END IF;
112146
112147 -----------------------------------------------------------------------------------------
112148 -- 4262811 Multiperiod Accounting
112149 -----------------------------------------------------------------------------------------
112150 -- No MPA option is assigned.
112151
112152
112153 END IF;
112154 END IF;
112155 --
112156
112157 --
112158 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
112159 trace
112160 (p_msg => 'END of AcctLineType_203'
112161 ,p_level => C_LEVEL_PROCEDURE
112162 ,p_module => l_log_module);
112163 END IF;
112164 --
112165 EXCEPTION
112166 WHEN xla_exceptions_pkg.application_exception THEN
112167 RAISE;
112168 WHEN OTHERS THEN
112169 xla_exceptions_pkg.raise_message
112170 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_203');
112171 END AcctLineType_203;
112172 --
112173
112174 ---------------------------------------
112175 --
112176 -- PRIVATE FUNCTION
112177 -- AcctLineType_204
112178 --
112179 ---------------------------------------
112180 PROCEDURE AcctLineType_204 (
112181 p_application_id IN NUMBER
112182 ,p_event_id IN NUMBER
112183 ,p_calculate_acctd_flag IN VARCHAR2
112184 ,p_calculate_g_l_flag IN VARCHAR2
112185 ,p_actual_flag IN OUT VARCHAR2
112186 ,p_balance_type_code OUT VARCHAR2
112187 ,p_gain_or_loss_ref OUT VARCHAR2
112188
112189 --Cost Management Default Account
112190 , p_source_4 IN NUMBER
112191 --Applied to Application ID
112192 , p_source_6 IN NUMBER
112193 --Applied to Distribution Link Type
112194 , p_source_7 IN VARCHAR2
112195 --Applied to Entity Code
112196 , p_source_8 IN VARCHAR2
112197 --DISTRIBUTION_IDENTIFIER
112198 , p_source_11 IN NUMBER
112199 --Distribution Type
112200 , p_source_12 IN VARCHAR2
112201 , p_source_12_meaning IN VARCHAR2
112202 --Encumbrance Reversal Amount Entered
112203 , p_source_14 IN NUMBER
112204 --Entered Currency Code
112205 , p_source_15 IN VARCHAR2
112206 --Transaction Encumbrance Reversal Amount
112207 , p_source_16 IN NUMBER
112208 --Entered Amount
112209 , p_source_18 IN NUMBER
112210 --Currency Conversion Date
112211 , p_source_19 IN DATE
112212 --Currency Conversion Rate
112213 , p_source_20 IN NUMBER
112214 --Currency Conversion Type
112215 , p_source_21 IN VARCHAR2
112216 --Accounted Amount
112217 , p_source_22 IN NUMBER
112218 --Accounting Line Type
112219 , p_source_24 IN NUMBER
112220 --Costing Encumbrance Upgrade Option
112221 , p_source_27 IN VARCHAR2
112222 --TXN_PO_DISTRIBUTION_ID
112223 , p_source_28 IN NUMBER
112224 --TXN_PO_HEADER_ID
112225 , p_source_29 IN NUMBER
112226 --Requisition Budget Account
112227 , p_source_30 IN NUMBER
112228 --Requisition Encumbrance Type Identifier
112229 , p_source_31 IN NUMBER
112230 )
112231 IS
112232
112233 l_component_type VARCHAR2(80);
112234 l_component_code VARCHAR2(30);
112235 l_component_type_code VARCHAR2(1);
112236 l_component_appl_id INTEGER;
112237 l_amb_context_code VARCHAR2(30);
112238 l_entity_code VARCHAR2(30);
112239 l_event_class_code VARCHAR2(30);
112240 l_ae_header_id NUMBER;
112241 l_event_type_code VARCHAR2(30);
112242 l_line_definition_code VARCHAR2(30);
112243 l_line_definition_owner_code VARCHAR2(1);
112244 --
112245 -- adr variables
112246 l_segment VARCHAR2(30);
112247 l_ccid NUMBER;
112248 l_adr_transaction_coa_id NUMBER;
112249 l_adr_accounting_coa_id NUMBER;
112250 l_adr_flexfield_segment_code VARCHAR2(30);
112251 l_adr_flex_value_set_id NUMBER;
112252 l_adr_value_type_code VARCHAR2(30);
112253 l_adr_value_combination_id NUMBER;
112254 l_adr_value_segment_code VARCHAR2(30);
112255
112256 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
112257 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
112258 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
112259 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
112260
112261 -- 4262811 Variables ------------------------------------------------------------------------------------------
112262 l_entered_amt_idx NUMBER;
112263 l_accted_amt_idx NUMBER;
112264 l_acc_rev_flag VARCHAR2(1);
112265 l_accrual_line_num NUMBER;
112266 l_tmp_amt NUMBER;
112267 l_acc_rev_natural_side_code VARCHAR2(1);
112268
112269 l_num_entries NUMBER;
112270 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
112271 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
112272 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
112273 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
112274 l_recog_line_1 NUMBER;
112275 l_recog_line_2 NUMBER;
112276
112277 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
112278 l_bflow_applied_to_amt NUMBER; -- 5132302
112279 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
112280
112281 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
112282
112283 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
112284 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
112285
112286 ---------------------------------------------------------------------------------------------------------------
112287
112288
112289 --
112290 -- bulk performance
112291 --
112292 l_balance_type_code VARCHAR2(1);
112293 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
112294 l_log_module VARCHAR2(240);
112295
112296 --
112297 -- Upgrade strategy
112298 --
112299 l_actual_upg_option VARCHAR2(1);
112300 l_enc_upg_option VARCHAR2(1);
112301
112302 --
112303 BEGIN
112304 --
112305 IF g_log_enabled THEN
112306 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_204';
112307 END IF;
112308 --
112309 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
112310
112311 trace
112312 (p_msg => 'BEGIN of AcctLineType_204'
112313 ,p_level => C_LEVEL_PROCEDURE
112314 ,p_module => l_log_module);
112315
112316 END IF;
112317 --
112318 l_component_type := 'AMB_JLT';
112319 l_component_code := 'OFFSET';
112320 l_component_type_code := 'S';
112321 l_component_appl_id := 707;
112322 l_amb_context_code := 'DEFAULT';
112323 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
112324 l_event_class_code := 'DIR_INTERORG_RCPT';
112325 l_event_type_code := 'DIR_INTERORG_RCPT_ALL';
112326 l_line_definition_owner_code := 'S';
112327 l_line_definition_code := 'DIRECT_INTERORG_RCPT';
112328 --
112329 l_balance_type_code := 'A';
112330 l_segment := NULL;
112331 l_ccid := NULL;
112332 l_adr_transaction_coa_id := NULL;
112333 l_adr_accounting_coa_id := NULL;
112334 l_adr_flexfield_segment_code := NULL;
112335 l_adr_flex_value_set_id := NULL;
112336 l_adr_value_type_code := NULL;
112337 l_adr_value_combination_id := NULL;
112338 l_adr_value_segment_code := NULL;
112339
112340 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
112341 l_bflow_class_code := ''; -- 4219869 Business Flow
112342 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
112343 l_budgetary_control_flag := 'N';
112344
112345 l_bflow_applied_to_amt_idx := NULL; -- 5132302
112346 l_bflow_applied_to_amt := NULL; -- 5132302
112347 l_entered_amt_idx := NULL; -- 4262811
112348 l_accted_amt_idx := NULL; -- 4262811
112349 l_acc_rev_flag := NULL; -- 4262811
112350 l_accrual_line_num := NULL; -- 4262811
112351 l_tmp_amt := NULL; -- 4262811
112352 --
112353
112354 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
112355 l_balance_type_code <> 'B' THEN
112356 IF NVL(p_source_24,9E125) = 2
112357 THEN
112358
112359 --
112360 XLA_AE_LINES_PKG.SetNewLine;
112361
112362 p_balance_type_code := l_balance_type_code;
112363 -- set the flag so later we will know whether the gain loss line needs to be created
112364
112365 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
112366 p_actual_flag :='A';
112367 END IF;
112368
112369 --
112370 -- bulk performance
112371 --
112372 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
112373 p_header_num => 0); -- 4262811
112374 --
112375 -- set accounting line options
112376 --
112377 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
112378 p_natural_side_code => 'D'
112379 , p_gain_or_loss_flag => 'N'
112380 , p_gl_transfer_mode_code => 'S'
112381 , p_acct_entry_type_code => 'A'
112382 , p_switch_side_flag => 'Y'
112383 , p_merge_duplicate_code => 'N'
112384 );
112385 --
112386 l_acc_rev_natural_side_code := 'C'; -- 4262811
112387 --
112388 --
112389 -- set accounting line type info
112390 --
112391 xla_ae_lines_pkg.SetAcctLineType
112392 (p_component_type => l_component_type
112393 ,p_event_type_code => l_event_type_code
112394 ,p_line_definition_owner_code => l_line_definition_owner_code
112395 ,p_line_definition_code => l_line_definition_code
112396 ,p_accounting_line_code => l_component_code
112397 ,p_accounting_line_type_code => l_component_type_code
112398 ,p_accounting_line_appl_id => l_component_appl_id
112399 ,p_amb_context_code => l_amb_context_code
112400 ,p_entity_code => l_entity_code
112401 ,p_event_class_code => l_event_class_code);
112402 --
112403 -- set accounting class
112404 --
112405 xla_ae_lines_pkg.SetAcctClass(
112406 p_accounting_class_code => 'OFFSET'
112407 , p_ae_header_id => l_ae_header_id
112408 );
112409
112410 --
112411 -- set rounding class
112412 --
112413 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
112414 'OFFSET';
112415
112416 --
112417 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
112418 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
112419 --
112420 -- bulk performance
112421 --
112422 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
112423
112424 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
112425 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
112426
112427 -- 4955764
112428 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
112429 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
112430
112431 -- 4458381 Public Sector Enh
112432
112433 --
112434 -- set accounting attributes for the line type
112435 --
112436 l_entered_amt_idx := 17;
112437 l_accted_amt_idx := 22;
112438 l_bflow_applied_to_amt_idx := NULL; -- 5132302
112439 l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
112440 l_rec_acct_attrs.array_num_value(1) := p_source_6;
112441 l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
112442 l_rec_acct_attrs.array_char_value(2) := p_source_7;
112443 l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
112444 l_rec_acct_attrs.array_char_value(3) := p_source_8;
112445 l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
112446 l_rec_acct_attrs.array_num_value(4) := to_char(p_source_28);
112447 l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
112448 l_rec_acct_attrs.array_num_value(5) := to_char(p_source_29);
112449 l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
112450 l_rec_acct_attrs.array_num_value(6) := to_char(p_source_11);
112451 l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
112452 l_rec_acct_attrs.array_char_value(7) := p_source_12;
112453 l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
112454 l_rec_acct_attrs.array_num_value(8) := TO_NUMBER(p_source_30);
112455 l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
112456 l_rec_acct_attrs.array_num_value(9) := p_source_14;
112457 l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
112458 l_rec_acct_attrs.array_char_value(10) := p_source_15;
112459 l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
112460 l_rec_acct_attrs.array_num_value(11) := p_source_16;
112461 l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
112462 l_rec_acct_attrs.array_num_value(12) := TO_NUMBER(p_source_30);
112463 l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
112464 l_rec_acct_attrs.array_num_value(13) := p_source_14;
112465 l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
112466 l_rec_acct_attrs.array_char_value(14) := p_source_15;
112467 l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
112468 l_rec_acct_attrs.array_num_value(15) := p_source_16;
112469 l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
112470 l_rec_acct_attrs.array_char_value(16) := p_source_27;
112471 l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
112472 l_rec_acct_attrs.array_num_value(17) := p_source_18;
112473 l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
112474 l_rec_acct_attrs.array_char_value(18) := p_source_15;
112475 l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
112476 l_rec_acct_attrs.array_date_value(19) := p_source_19;
112477 l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
112478 l_rec_acct_attrs.array_num_value(20) := p_source_20;
112479 l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
112480 l_rec_acct_attrs.array_char_value(21) := p_source_21;
112481 l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
112482 l_rec_acct_attrs.array_num_value(22) := p_source_22;
112483 l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
112484 l_rec_acct_attrs.array_num_value(23) := p_source_31;
112485 l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
112486 l_rec_acct_attrs.array_num_value(24) := p_source_31;
112487
112488 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
112489 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
112490
112491 ---------------------------------------------------------------------------------------------------------------
112492 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
112493 ---------------------------------------------------------------------------------------------------------------
112494 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
112495
112496 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
112497 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
112498
112499 IF xla_accounting_cache_pkg.GetValueChar
112500 (p_source_code => 'LEDGER_CATEGORY_CODE'
112501 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
112502 AND l_bflow_method_code = 'PRIOR_ENTRY'
112503 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
112504 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
112505 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
112506 )
112507 THEN
112508 xla_ae_lines_pkg.BflowUpgEntry
112509 (p_business_method_code => l_bflow_method_code
112510 ,p_business_class_code => l_bflow_class_code
112511 ,p_balance_type => l_balance_type_code);
112512 ELSE
112513 NULL;
112514 -- No business flow processing for business flow method of NONE.
112515 END IF;
112516
112517 --
112518 -- call analytical criteria
112519 --
112520
112521 --
112522 -- call description
112523 --
112524 -- No description or it is inherited.
112525 --
112526 -- call ADRs
112527 -- Bug 4922099
112528 --
112529 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
112530 (NVL(l_actual_upg_option, 'N') = 'O') OR
112531 (NVL(l_enc_upg_option, 'N') = 'O')
112532 )
112533 THEN
112534 NULL;
112535 --
112536 --
112537
112538 l_ccid := AcctDerRule_4(
112539 p_application_id => p_application_id
112540 , p_ae_header_id => l_ae_header_id
112541 , p_source_4 => p_source_4
112542 , x_transaction_coa_id => l_adr_transaction_coa_id
112543 , x_accounting_coa_id => l_adr_accounting_coa_id
112544 , x_value_type_code => l_adr_value_type_code
112545 , p_side => 'NA'
112546 );
112547
112548 xla_ae_lines_pkg.set_ccid(
112549 p_code_combination_id => l_ccid
112550 , p_value_type_code => l_adr_value_type_code
112551 , p_transaction_coa_id => l_adr_transaction_coa_id
112552 , p_accounting_coa_id => l_adr_accounting_coa_id
112553 , p_adr_code => 'CST_DEFAULT'
112554 , p_adr_type_code => 'S'
112555 , p_component_type => l_component_type
112556 , p_component_code => l_component_code
112557 , p_component_type_code => l_component_type_code
112558 , p_component_appl_id => l_component_appl_id
112559 , p_amb_context_code => l_amb_context_code
112560 , p_side => 'NA'
112561 );
112562
112563
112564 --
112565 --
112566 END IF;
112567 --
112568 -- Bug 4922099
112569 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
112570 (NVL(l_enc_upg_option, 'N') = 'O')
112571 ) AND
112572 (l_bflow_method_code = 'PRIOR_ENTRY')
112573 )
112574 THEN
112575 IF
112576 --
112577 1 = 2
112578 --
112579 THEN
112580 xla_accounting_err_pkg.build_message
112581 (p_appli_s_name => 'XLA'
112582 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
112583 ,p_token_1 => 'LINE_NUMBER'
112584 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
112585 ,p_token_2 => 'LINE_TYPE_NAME'
112586 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
112587 l_component_type
112588 ,l_component_code
112589 ,l_component_type_code
112590 ,l_component_appl_id
112591 ,l_amb_context_code
112592 ,l_entity_code
112593 ,l_event_class_code
112594 )
112595 ,p_token_3 => 'OWNER'
112596 ,p_value_3 => xla_lookups_pkg.get_meaning(
112597 p_lookup_type => 'XLA_OWNER_TYPE'
112598 ,p_lookup_code => l_component_type_code
112599 )
112600 ,p_token_4 => 'PRODUCT_NAME'
112601 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
112602 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
112603 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
112604 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
112605 ,p_ae_header_id => NULL
112606 );
112607
112608 IF (C_LEVEL_ERROR>= g_log_level) THEN
112609 trace
112610 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
112611 ,p_level => C_LEVEL_ERROR
112612 ,p_module => l_log_module);
112613 END IF;
112614 END IF;
112615 END IF;
112616 --
112617 --
112618 ------------------------------------------------------------------------------------------------
112619 -- 4219869 Business Flow
112620 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
112621 -- Prior Entry. Currently, the following code is always generated.
112622 ------------------------------------------------------------------------------------------------
112623 XLA_AE_LINES_PKG.ValidateCurrentLine;
112624
112625 ------------------------------------------------------------------------------------
112626 -- 4219869 Business Flow
112627 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
112628 ------------------------------------------------------------------------------------
112629 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
112630
112631 ----------------------------------------------------------------------------------
112632 -- 4219869 Business Flow
112633 -- Update journal entry status -- Need to generate this within IF <condition>
112634 ----------------------------------------------------------------------------------
112635 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
112636 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
112637 ,p_balance_type_code => l_balance_type_code
112638 );
112639
112640 -------------------------------------------------------------------------------------------
112641 -- 4262811 - Generate the Accrual Reversal lines
112642 -------------------------------------------------------------------------------------------
112643 BEGIN
112644 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
112645 (g_array_event(p_event_id).array_value_num('header_index'));
112646 IF l_acc_rev_flag IS NULL THEN
112647 l_acc_rev_flag := 'N';
112648 END IF;
112649 EXCEPTION
112650 WHEN OTHERS THEN
112651 l_acc_rev_flag := 'N';
112652 END;
112653 --
112654 IF (l_acc_rev_flag = 'Y') THEN
112655
112656 -- 4645092 ------------------------------------------------------------------------------
112657 -- To allow MPA report to determine if it should generate report process
112658 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
112659 ------------------------------------------------------------------------------------------
112660
112661 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
112662 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
112663 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
112664 -- call ADRs
112665 -- Bug 4922099
112666 --
112667 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
112668 (NVL(l_actual_upg_option, 'N') = 'O') OR
112669 (NVL(l_enc_upg_option, 'N') = 'O')
112670 )
112671 THEN
112672 NULL;
112673 --
112674 --
112675
112676 l_ccid := AcctDerRule_4(
112677 p_application_id => p_application_id
112678 , p_ae_header_id => l_ae_header_id
112679 , p_source_4 => p_source_4
112680 , x_transaction_coa_id => l_adr_transaction_coa_id
112681 , x_accounting_coa_id => l_adr_accounting_coa_id
112682 , x_value_type_code => l_adr_value_type_code
112683 , p_side => 'NA'
112684 );
112685
112686 xla_ae_lines_pkg.set_ccid(
112687 p_code_combination_id => l_ccid
112688 , p_value_type_code => l_adr_value_type_code
112689 , p_transaction_coa_id => l_adr_transaction_coa_id
112690 , p_accounting_coa_id => l_adr_accounting_coa_id
112691 , p_adr_code => 'CST_DEFAULT'
112692 , p_adr_type_code => 'S'
112693 , p_component_type => l_component_type
112694 , p_component_code => l_component_code
112695 , p_component_type_code => l_component_type_code
112696 , p_component_appl_id => l_component_appl_id
112697 , p_amb_context_code => l_amb_context_code
112698 , p_side => 'NA'
112699 );
112700
112701
112702 --
112703 --
112704 END IF;
112705
112706 --
112707 -- Update the line information that should be overwritten
112708 --
112709 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
112710 p_header_num => 1);
112711 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
112712
112713 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
112714
112715 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
112716 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
112717 END IF;
112718
112719 --
112720 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
112721 --
112722 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
112723 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
112724 ELSE
112725 ---------------------------------------------------------------------------------------------------
112726 -- 4262811a Switch Sign
112727 ---------------------------------------------------------------------------------------------------
112728 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
112729 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
112730 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
112731 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
112732 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
112733 -- 5132302
112734 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
112735 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
112736
112737 END IF;
112738
112739 -- 4955764
112740 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
112741 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
112742
112743
112744 XLA_AE_LINES_PKG.ValidateCurrentLine;
112745 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
112746
112747 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
112748 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
112749 ,p_balance_type_code => l_balance_type_code);
112750
112751 END IF;
112752
112753 -----------------------------------------------------------------------------------------
112754 -- 4262811 Multiperiod Accounting
112755 -----------------------------------------------------------------------------------------
112756 -- No MPA option is assigned.
112757
112758
112759 END IF;
112760 END IF;
112761 --
112762
112763 --
112764 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
112765 trace
112766 (p_msg => 'END of AcctLineType_204'
112767 ,p_level => C_LEVEL_PROCEDURE
112768 ,p_module => l_log_module);
112769 END IF;
112770 --
112771 EXCEPTION
112772 WHEN xla_exceptions_pkg.application_exception THEN
112773 RAISE;
112774 WHEN OTHERS THEN
112775 xla_exceptions_pkg.raise_message
112776 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_204');
112777 END AcctLineType_204;
112778 --
112779
112780 ---------------------------------------
112781 --
112782 -- PRIVATE FUNCTION
112783 -- AcctLineType_205
112784 --
112785 ---------------------------------------
112786 PROCEDURE AcctLineType_205 (
112787 p_application_id IN NUMBER
112788 ,p_event_id IN NUMBER
112789 ,p_calculate_acctd_flag IN VARCHAR2
112790 ,p_calculate_g_l_flag IN VARCHAR2
112791 ,p_actual_flag IN OUT VARCHAR2
112792 ,p_balance_type_code OUT VARCHAR2
112793 ,p_gain_or_loss_ref OUT VARCHAR2
112794
112795 --Cost Management Default Account
112796 , p_source_4 IN NUMBER
112797 --DISTRIBUTION_IDENTIFIER
112798 , p_source_11 IN NUMBER
112799 --Distribution Type
112800 , p_source_12 IN VARCHAR2
112801 , p_source_12_meaning IN VARCHAR2
112802 --Entered Currency Code
112803 , p_source_15 IN VARCHAR2
112804 --Entered Amount
112805 , p_source_18 IN NUMBER
112806 --Currency Conversion Date
112807 , p_source_19 IN DATE
112808 --Currency Conversion Rate
112809 , p_source_20 IN NUMBER
112810 --Currency Conversion Type
112811 , p_source_21 IN VARCHAR2
112812 --Accounted Amount
112813 , p_source_22 IN NUMBER
112814 --Accounting Line Type
112815 , p_source_24 IN NUMBER
112816 )
112817 IS
112818
112819 l_component_type VARCHAR2(80);
112820 l_component_code VARCHAR2(30);
112821 l_component_type_code VARCHAR2(1);
112822 l_component_appl_id INTEGER;
112823 l_amb_context_code VARCHAR2(30);
112824 l_entity_code VARCHAR2(30);
112825 l_event_class_code VARCHAR2(30);
112826 l_ae_header_id NUMBER;
112827 l_event_type_code VARCHAR2(30);
112828 l_line_definition_code VARCHAR2(30);
112829 l_line_definition_owner_code VARCHAR2(1);
112830 --
112831 -- adr variables
112832 l_segment VARCHAR2(30);
112833 l_ccid NUMBER;
112834 l_adr_transaction_coa_id NUMBER;
112835 l_adr_accounting_coa_id NUMBER;
112836 l_adr_flexfield_segment_code VARCHAR2(30);
112837 l_adr_flex_value_set_id NUMBER;
112838 l_adr_value_type_code VARCHAR2(30);
112839 l_adr_value_combination_id NUMBER;
112840 l_adr_value_segment_code VARCHAR2(30);
112841
112842 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
112843 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
112844 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
112845 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
112846
112847 -- 4262811 Variables ------------------------------------------------------------------------------------------
112848 l_entered_amt_idx NUMBER;
112849 l_accted_amt_idx NUMBER;
112850 l_acc_rev_flag VARCHAR2(1);
112851 l_accrual_line_num NUMBER;
112852 l_tmp_amt NUMBER;
112853 l_acc_rev_natural_side_code VARCHAR2(1);
112854
112855 l_num_entries NUMBER;
112856 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
112857 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
112858 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
112859 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
112860 l_recog_line_1 NUMBER;
112861 l_recog_line_2 NUMBER;
112862
112863 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
112864 l_bflow_applied_to_amt NUMBER; -- 5132302
112865 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
112866
112867 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
112868
112869 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
112870 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
112871
112872 ---------------------------------------------------------------------------------------------------------------
112873
112874
112875 --
112876 -- bulk performance
112877 --
112878 l_balance_type_code VARCHAR2(1);
112879 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
112880 l_log_module VARCHAR2(240);
112881
112882 --
112883 -- Upgrade strategy
112884 --
112885 l_actual_upg_option VARCHAR2(1);
112886 l_enc_upg_option VARCHAR2(1);
112887
112888 --
112889 BEGIN
112890 --
112891 IF g_log_enabled THEN
112892 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_205';
112893 END IF;
112894 --
112895 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
112896
112897 trace
112898 (p_msg => 'BEGIN of AcctLineType_205'
112899 ,p_level => C_LEVEL_PROCEDURE
112900 ,p_module => l_log_module);
112901
112902 END IF;
112903 --
112904 l_component_type := 'AMB_JLT';
112905 l_component_code := 'OVERHEAD_ABSORPTION';
112906 l_component_type_code := 'S';
112907 l_component_appl_id := 707;
112908 l_amb_context_code := 'DEFAULT';
112909 l_entity_code := 'WIP_ACCOUNTING_EVENTS';
112910 l_event_class_code := 'ABSORPTION';
112911 l_event_type_code := 'ABSORPTION_ALL';
112912 l_line_definition_owner_code := 'S';
112913 l_line_definition_code := 'ABSORPTION';
112914 --
112915 l_balance_type_code := 'A';
112916 l_segment := NULL;
112917 l_ccid := NULL;
112918 l_adr_transaction_coa_id := NULL;
112919 l_adr_accounting_coa_id := NULL;
112920 l_adr_flexfield_segment_code := NULL;
112921 l_adr_flex_value_set_id := NULL;
112922 l_adr_value_type_code := NULL;
112923 l_adr_value_combination_id := NULL;
112924 l_adr_value_segment_code := NULL;
112925
112926 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
112927 l_bflow_class_code := ''; -- 4219869 Business Flow
112928 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
112929 l_budgetary_control_flag := 'N';
112930
112931 l_bflow_applied_to_amt_idx := NULL; -- 5132302
112932 l_bflow_applied_to_amt := NULL; -- 5132302
112933 l_entered_amt_idx := NULL; -- 4262811
112934 l_accted_amt_idx := NULL; -- 4262811
112935 l_acc_rev_flag := NULL; -- 4262811
112936 l_accrual_line_num := NULL; -- 4262811
112937 l_tmp_amt := NULL; -- 4262811
112938 --
112939
112940 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
112941 l_balance_type_code <> 'B' THEN
112942 IF NVL(p_source_24,9E125) = 3
112943 THEN
112944
112945 --
112946 XLA_AE_LINES_PKG.SetNewLine;
112947
112948 p_balance_type_code := l_balance_type_code;
112949 -- set the flag so later we will know whether the gain loss line needs to be created
112950
112951 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
112952 p_actual_flag :='A';
112953 END IF;
112954
112955 --
112956 -- bulk performance
112957 --
112958 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
112959 p_header_num => 0); -- 4262811
112960 --
112961 -- set accounting line options
112962 --
112963 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
112964 p_natural_side_code => 'D'
112965 , p_gain_or_loss_flag => 'N'
112966 , p_gl_transfer_mode_code => 'S'
112967 , p_acct_entry_type_code => 'A'
112968 , p_switch_side_flag => 'Y'
112969 , p_merge_duplicate_code => 'N'
112970 );
112971 --
112972 l_acc_rev_natural_side_code := 'C'; -- 4262811
112973 --
112974 --
112975 -- set accounting line type info
112976 --
112977 xla_ae_lines_pkg.SetAcctLineType
112978 (p_component_type => l_component_type
112979 ,p_event_type_code => l_event_type_code
112980 ,p_line_definition_owner_code => l_line_definition_owner_code
112981 ,p_line_definition_code => l_line_definition_code
112982 ,p_accounting_line_code => l_component_code
112983 ,p_accounting_line_type_code => l_component_type_code
112984 ,p_accounting_line_appl_id => l_component_appl_id
112985 ,p_amb_context_code => l_amb_context_code
112986 ,p_entity_code => l_entity_code
112987 ,p_event_class_code => l_event_class_code);
112988 --
112989 -- set accounting class
112990 --
112991 xla_ae_lines_pkg.SetAcctClass(
112992 p_accounting_class_code => 'OVERHEAD_ABSORPTION'
112993 , p_ae_header_id => l_ae_header_id
112994 );
112995
112996 --
112997 -- set rounding class
112998 --
112999 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
113000 'OVERHEAD_ABSORPTION';
113001
113002 --
113003 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
113004 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
113005 --
113006 -- bulk performance
113007 --
113008 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
113009
113010 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
113011 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
113012
113013 -- 4955764
113014 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
113015 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
113016
113017 -- 4458381 Public Sector Enh
113018
113019 --
113020 -- set accounting attributes for the line type
113021 --
113022 l_entered_amt_idx := 3;
113023 l_accted_amt_idx := 8;
113024 l_bflow_applied_to_amt_idx := NULL; -- 5132302
113025 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
113026 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
113027 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
113028 l_rec_acct_attrs.array_char_value(2) := p_source_12;
113029 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
113030 l_rec_acct_attrs.array_num_value(3) := p_source_18;
113031 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
113032 l_rec_acct_attrs.array_char_value(4) := p_source_15;
113033 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
113034 l_rec_acct_attrs.array_date_value(5) := p_source_19;
113035 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
113036 l_rec_acct_attrs.array_num_value(6) := p_source_20;
113037 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
113038 l_rec_acct_attrs.array_char_value(7) := p_source_21;
113039 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
113040 l_rec_acct_attrs.array_num_value(8) := p_source_22;
113041
113042 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
113043 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
113044
113045 ---------------------------------------------------------------------------------------------------------------
113046 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
113047 ---------------------------------------------------------------------------------------------------------------
113048 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
113049
113050 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
113051 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
113052
113053 IF xla_accounting_cache_pkg.GetValueChar
113054 (p_source_code => 'LEDGER_CATEGORY_CODE'
113055 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
113056 AND l_bflow_method_code = 'PRIOR_ENTRY'
113057 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
113058 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
113059 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
113060 )
113061 THEN
113062 xla_ae_lines_pkg.BflowUpgEntry
113063 (p_business_method_code => l_bflow_method_code
113064 ,p_business_class_code => l_bflow_class_code
113065 ,p_balance_type => l_balance_type_code);
113066 ELSE
113067 NULL;
113068 -- No business flow processing for business flow method of NONE.
113069 END IF;
113070
113071 --
113072 -- call analytical criteria
113073 --
113074
113075 --
113076 -- call description
113077 --
113078 -- No description or it is inherited.
113079 --
113080 -- call ADRs
113081 -- Bug 4922099
113082 --
113083 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
113084 (NVL(l_actual_upg_option, 'N') = 'O') OR
113085 (NVL(l_enc_upg_option, 'N') = 'O')
113086 )
113087 THEN
113088 NULL;
113089 --
113090 --
113091
113092 l_ccid := AcctDerRule_4(
113093 p_application_id => p_application_id
113094 , p_ae_header_id => l_ae_header_id
113095 , p_source_4 => p_source_4
113096 , x_transaction_coa_id => l_adr_transaction_coa_id
113097 , x_accounting_coa_id => l_adr_accounting_coa_id
113098 , x_value_type_code => l_adr_value_type_code
113099 , p_side => 'NA'
113100 );
113101
113102 xla_ae_lines_pkg.set_ccid(
113103 p_code_combination_id => l_ccid
113104 , p_value_type_code => l_adr_value_type_code
113105 , p_transaction_coa_id => l_adr_transaction_coa_id
113106 , p_accounting_coa_id => l_adr_accounting_coa_id
113107 , p_adr_code => 'CST_DEFAULT'
113108 , p_adr_type_code => 'S'
113109 , p_component_type => l_component_type
113110 , p_component_code => l_component_code
113111 , p_component_type_code => l_component_type_code
113112 , p_component_appl_id => l_component_appl_id
113113 , p_amb_context_code => l_amb_context_code
113114 , p_side => 'NA'
113115 );
113116
113117
113118 --
113119 --
113120 END IF;
113121 --
113122 -- Bug 4922099
113123 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
113124 (NVL(l_enc_upg_option, 'N') = 'O')
113125 ) AND
113126 (l_bflow_method_code = 'PRIOR_ENTRY')
113127 )
113128 THEN
113129 IF
113130 --
113131 1 = 2
113132 --
113133 THEN
113134 xla_accounting_err_pkg.build_message
113135 (p_appli_s_name => 'XLA'
113136 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
113137 ,p_token_1 => 'LINE_NUMBER'
113138 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
113139 ,p_token_2 => 'LINE_TYPE_NAME'
113140 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
113141 l_component_type
113142 ,l_component_code
113143 ,l_component_type_code
113144 ,l_component_appl_id
113145 ,l_amb_context_code
113146 ,l_entity_code
113147 ,l_event_class_code
113148 )
113149 ,p_token_3 => 'OWNER'
113150 ,p_value_3 => xla_lookups_pkg.get_meaning(
113151 p_lookup_type => 'XLA_OWNER_TYPE'
113152 ,p_lookup_code => l_component_type_code
113153 )
113154 ,p_token_4 => 'PRODUCT_NAME'
113155 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
113156 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
113157 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
113158 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
113159 ,p_ae_header_id => NULL
113160 );
113161
113162 IF (C_LEVEL_ERROR>= g_log_level) THEN
113163 trace
113164 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
113165 ,p_level => C_LEVEL_ERROR
113166 ,p_module => l_log_module);
113167 END IF;
113168 END IF;
113169 END IF;
113170 --
113171 --
113172 ------------------------------------------------------------------------------------------------
113173 -- 4219869 Business Flow
113174 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
113175 -- Prior Entry. Currently, the following code is always generated.
113176 ------------------------------------------------------------------------------------------------
113177 XLA_AE_LINES_PKG.ValidateCurrentLine;
113178
113179 ------------------------------------------------------------------------------------
113180 -- 4219869 Business Flow
113181 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
113182 ------------------------------------------------------------------------------------
113183 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
113184
113185 ----------------------------------------------------------------------------------
113186 -- 4219869 Business Flow
113187 -- Update journal entry status -- Need to generate this within IF <condition>
113188 ----------------------------------------------------------------------------------
113189 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
113190 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
113191 ,p_balance_type_code => l_balance_type_code
113192 );
113193
113194 -------------------------------------------------------------------------------------------
113195 -- 4262811 - Generate the Accrual Reversal lines
113196 -------------------------------------------------------------------------------------------
113197 BEGIN
113198 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
113199 (g_array_event(p_event_id).array_value_num('header_index'));
113200 IF l_acc_rev_flag IS NULL THEN
113201 l_acc_rev_flag := 'N';
113202 END IF;
113203 EXCEPTION
113204 WHEN OTHERS THEN
113205 l_acc_rev_flag := 'N';
113206 END;
113207 --
113208 IF (l_acc_rev_flag = 'Y') THEN
113209
113210 -- 4645092 ------------------------------------------------------------------------------
113211 -- To allow MPA report to determine if it should generate report process
113212 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
113213 ------------------------------------------------------------------------------------------
113214
113215 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
113216 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
113217 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
113218 -- call ADRs
113219 -- Bug 4922099
113220 --
113221 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
113222 (NVL(l_actual_upg_option, 'N') = 'O') OR
113223 (NVL(l_enc_upg_option, 'N') = 'O')
113224 )
113225 THEN
113226 NULL;
113227 --
113228 --
113229
113230 l_ccid := AcctDerRule_4(
113231 p_application_id => p_application_id
113232 , p_ae_header_id => l_ae_header_id
113233 , p_source_4 => p_source_4
113234 , x_transaction_coa_id => l_adr_transaction_coa_id
113235 , x_accounting_coa_id => l_adr_accounting_coa_id
113236 , x_value_type_code => l_adr_value_type_code
113237 , p_side => 'NA'
113238 );
113239
113240 xla_ae_lines_pkg.set_ccid(
113241 p_code_combination_id => l_ccid
113242 , p_value_type_code => l_adr_value_type_code
113243 , p_transaction_coa_id => l_adr_transaction_coa_id
113244 , p_accounting_coa_id => l_adr_accounting_coa_id
113245 , p_adr_code => 'CST_DEFAULT'
113246 , p_adr_type_code => 'S'
113247 , p_component_type => l_component_type
113248 , p_component_code => l_component_code
113249 , p_component_type_code => l_component_type_code
113250 , p_component_appl_id => l_component_appl_id
113251 , p_amb_context_code => l_amb_context_code
113252 , p_side => 'NA'
113253 );
113254
113255
113256 --
113257 --
113258 END IF;
113259
113260 --
113261 -- Update the line information that should be overwritten
113262 --
113263 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
113264 p_header_num => 1);
113265 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
113266
113267 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
113268
113269 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
113270 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
113271 END IF;
113272
113273 --
113274 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
113275 --
113276 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
113277 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
113278 ELSE
113279 ---------------------------------------------------------------------------------------------------
113280 -- 4262811a Switch Sign
113281 ---------------------------------------------------------------------------------------------------
113282 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
113283 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
113284 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
113285 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
113286 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
113287 -- 5132302
113288 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
113289 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
113290
113291 END IF;
113292
113293 -- 4955764
113294 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
113295 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
113296
113297
113298 XLA_AE_LINES_PKG.ValidateCurrentLine;
113299 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
113300
113301 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
113302 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
113303 ,p_balance_type_code => l_balance_type_code);
113304
113305 END IF;
113306
113307 -----------------------------------------------------------------------------------------
113308 -- 4262811 Multiperiod Accounting
113309 -----------------------------------------------------------------------------------------
113310 -- No MPA option is assigned.
113311
113312
113313 END IF;
113314 END IF;
113315 --
113316
113317 --
113318 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
113319 trace
113320 (p_msg => 'END of AcctLineType_205'
113321 ,p_level => C_LEVEL_PROCEDURE
113322 ,p_module => l_log_module);
113323 END IF;
113324 --
113325 EXCEPTION
113326 WHEN xla_exceptions_pkg.application_exception THEN
113327 RAISE;
113328 WHEN OTHERS THEN
113329 xla_exceptions_pkg.raise_message
113330 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_205');
113331 END AcctLineType_205;
113332 --
113333
113334 ---------------------------------------
113335 --
113336 -- PRIVATE FUNCTION
113337 -- AcctLineType_206
113338 --
113339 ---------------------------------------
113340 PROCEDURE AcctLineType_206 (
113341 p_application_id IN NUMBER
113342 ,p_event_id IN NUMBER
113343 ,p_calculate_acctd_flag IN VARCHAR2
113344 ,p_calculate_g_l_flag IN VARCHAR2
113345 ,p_actual_flag IN OUT VARCHAR2
113346 ,p_balance_type_code OUT VARCHAR2
113347 ,p_gain_or_loss_ref OUT VARCHAR2
113348
113349 --Cost Management Default Account
113350 , p_source_4 IN NUMBER
113351 --DISTRIBUTION_IDENTIFIER
113352 , p_source_11 IN NUMBER
113353 --Distribution Type
113354 , p_source_12 IN VARCHAR2
113355 , p_source_12_meaning IN VARCHAR2
113356 --Entered Currency Code
113357 , p_source_15 IN VARCHAR2
113358 --Entered Amount
113359 , p_source_18 IN NUMBER
113360 --Currency Conversion Date
113361 , p_source_19 IN DATE
113362 --Currency Conversion Rate
113363 , p_source_20 IN NUMBER
113364 --Accounted Amount
113365 , p_source_22 IN NUMBER
113366 --Accounting Line Type
113367 , p_source_24 IN NUMBER
113368 )
113369 IS
113370
113371 l_component_type VARCHAR2(80);
113372 l_component_code VARCHAR2(30);
113373 l_component_type_code VARCHAR2(1);
113374 l_component_appl_id INTEGER;
113375 l_amb_context_code VARCHAR2(30);
113376 l_entity_code VARCHAR2(30);
113377 l_event_class_code VARCHAR2(30);
113378 l_ae_header_id NUMBER;
113379 l_event_type_code VARCHAR2(30);
113380 l_line_definition_code VARCHAR2(30);
113381 l_line_definition_owner_code VARCHAR2(1);
113382 --
113383 -- adr variables
113384 l_segment VARCHAR2(30);
113385 l_ccid NUMBER;
113386 l_adr_transaction_coa_id NUMBER;
113387 l_adr_accounting_coa_id NUMBER;
113388 l_adr_flexfield_segment_code VARCHAR2(30);
113389 l_adr_flex_value_set_id NUMBER;
113390 l_adr_value_type_code VARCHAR2(30);
113391 l_adr_value_combination_id NUMBER;
113392 l_adr_value_segment_code VARCHAR2(30);
113393
113394 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
113395 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
113396 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
113397 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
113398
113399 -- 4262811 Variables ------------------------------------------------------------------------------------------
113400 l_entered_amt_idx NUMBER;
113401 l_accted_amt_idx NUMBER;
113402 l_acc_rev_flag VARCHAR2(1);
113403 l_accrual_line_num NUMBER;
113404 l_tmp_amt NUMBER;
113405 l_acc_rev_natural_side_code VARCHAR2(1);
113406
113407 l_num_entries NUMBER;
113408 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
113409 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
113410 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
113411 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
113412 l_recog_line_1 NUMBER;
113413 l_recog_line_2 NUMBER;
113414
113415 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
113416 l_bflow_applied_to_amt NUMBER; -- 5132302
113417 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
113418
113419 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
113420
113421 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
113422 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
113423
113424 ---------------------------------------------------------------------------------------------------------------
113425
113426
113427 --
113428 -- bulk performance
113429 --
113430 l_balance_type_code VARCHAR2(1);
113431 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
113432 l_log_module VARCHAR2(240);
113433
113434 --
113435 -- Upgrade strategy
113436 --
113437 l_actual_upg_option VARCHAR2(1);
113438 l_enc_upg_option VARCHAR2(1);
113439
113440 --
113441 BEGIN
113442 --
113443 IF g_log_enabled THEN
113444 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_206';
113445 END IF;
113446 --
113447 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
113448
113449 trace
113450 (p_msg => 'BEGIN of AcctLineType_206'
113451 ,p_level => C_LEVEL_PROCEDURE
113452 ,p_module => l_log_module);
113453
113454 END IF;
113455 --
113456 l_component_type := 'AMB_JLT';
113457 l_component_code := 'OVERHEAD_ABSORPTION';
113458 l_component_type_code := 'S';
113459 l_component_appl_id := 707;
113460 l_amb_context_code := 'DEFAULT';
113461 l_entity_code := 'WIP_ACCOUNTING_EVENTS';
113462 l_event_class_code := 'OSP';
113463 l_event_type_code := 'OSP_ALL';
113464 l_line_definition_owner_code := 'S';
113465 l_line_definition_code := 'OUTSIDE_PROCESSING';
113466 --
113467 l_balance_type_code := 'A';
113468 l_segment := NULL;
113469 l_ccid := NULL;
113470 l_adr_transaction_coa_id := NULL;
113471 l_adr_accounting_coa_id := NULL;
113472 l_adr_flexfield_segment_code := NULL;
113473 l_adr_flex_value_set_id := NULL;
113474 l_adr_value_type_code := NULL;
113475 l_adr_value_combination_id := NULL;
113476 l_adr_value_segment_code := NULL;
113477
113478 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
113479 l_bflow_class_code := ''; -- 4219869 Business Flow
113480 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
113481 l_budgetary_control_flag := 'N';
113482
113483 l_bflow_applied_to_amt_idx := NULL; -- 5132302
113484 l_bflow_applied_to_amt := NULL; -- 5132302
113485 l_entered_amt_idx := NULL; -- 4262811
113486 l_accted_amt_idx := NULL; -- 4262811
113487 l_acc_rev_flag := NULL; -- 4262811
113488 l_accrual_line_num := NULL; -- 4262811
113489 l_tmp_amt := NULL; -- 4262811
113490 --
113491
113492 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
113493 l_balance_type_code <> 'B' THEN
113494 IF NVL(p_source_24,9E125) = 3
113495 THEN
113496
113497 --
113498 XLA_AE_LINES_PKG.SetNewLine;
113499
113500 p_balance_type_code := l_balance_type_code;
113501 -- set the flag so later we will know whether the gain loss line needs to be created
113502
113503 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
113504 p_actual_flag :='A';
113505 END IF;
113506
113507 --
113508 -- bulk performance
113509 --
113510 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
113511 p_header_num => 0); -- 4262811
113512 --
113513 -- set accounting line options
113514 --
113515 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
113516 p_natural_side_code => 'D'
113517 , p_gain_or_loss_flag => 'N'
113518 , p_gl_transfer_mode_code => 'S'
113519 , p_acct_entry_type_code => 'A'
113520 , p_switch_side_flag => 'Y'
113521 , p_merge_duplicate_code => 'N'
113522 );
113523 --
113524 l_acc_rev_natural_side_code := 'C'; -- 4262811
113525 --
113526 --
113527 -- set accounting line type info
113528 --
113529 xla_ae_lines_pkg.SetAcctLineType
113530 (p_component_type => l_component_type
113531 ,p_event_type_code => l_event_type_code
113532 ,p_line_definition_owner_code => l_line_definition_owner_code
113533 ,p_line_definition_code => l_line_definition_code
113534 ,p_accounting_line_code => l_component_code
113535 ,p_accounting_line_type_code => l_component_type_code
113536 ,p_accounting_line_appl_id => l_component_appl_id
113537 ,p_amb_context_code => l_amb_context_code
113538 ,p_entity_code => l_entity_code
113539 ,p_event_class_code => l_event_class_code);
113540 --
113541 -- set accounting class
113542 --
113543 xla_ae_lines_pkg.SetAcctClass(
113544 p_accounting_class_code => 'OVERHEAD_ABSORPTION'
113545 , p_ae_header_id => l_ae_header_id
113546 );
113547
113548 --
113549 -- set rounding class
113550 --
113551 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
113552 'OVERHEAD_ABSORPTION';
113553
113554 --
113555 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
113556 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
113557 --
113558 -- bulk performance
113559 --
113560 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
113561
113562 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
113563 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
113564
113565 -- 4955764
113566 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
113567 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
113568
113569 -- 4458381 Public Sector Enh
113570
113571 --
113572 -- set accounting attributes for the line type
113573 --
113574 l_entered_amt_idx := 3;
113575 l_accted_amt_idx := 8;
113576 l_bflow_applied_to_amt_idx := NULL; -- 5132302
113577 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
113578 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
113579 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
113580 l_rec_acct_attrs.array_char_value(2) := p_source_12;
113581 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
113582 l_rec_acct_attrs.array_num_value(3) := p_source_18;
113583 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
113584 l_rec_acct_attrs.array_char_value(4) := p_source_15;
113585 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
113586 l_rec_acct_attrs.array_date_value(5) := p_source_19;
113587 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
113588 l_rec_acct_attrs.array_num_value(6) := p_source_20;
113589 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
113590 l_rec_acct_attrs.array_num_value(7) := to_char(p_source_20);
113591 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
113592 l_rec_acct_attrs.array_num_value(8) := p_source_22;
113593
113594 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
113595 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
113596
113597 ---------------------------------------------------------------------------------------------------------------
113598 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
113599 ---------------------------------------------------------------------------------------------------------------
113600 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
113601
113602 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
113603 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
113604
113605 IF xla_accounting_cache_pkg.GetValueChar
113606 (p_source_code => 'LEDGER_CATEGORY_CODE'
113607 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
113608 AND l_bflow_method_code = 'PRIOR_ENTRY'
113609 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
113610 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
113611 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
113612 )
113613 THEN
113614 xla_ae_lines_pkg.BflowUpgEntry
113615 (p_business_method_code => l_bflow_method_code
113616 ,p_business_class_code => l_bflow_class_code
113617 ,p_balance_type => l_balance_type_code);
113618 ELSE
113619 NULL;
113620 -- No business flow processing for business flow method of NONE.
113621 END IF;
113622
113623 --
113624 -- call analytical criteria
113625 --
113626
113627 --
113628 -- call description
113629 --
113630 -- No description or it is inherited.
113631 --
113632 -- call ADRs
113633 -- Bug 4922099
113634 --
113635 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
113636 (NVL(l_actual_upg_option, 'N') = 'O') OR
113637 (NVL(l_enc_upg_option, 'N') = 'O')
113638 )
113639 THEN
113640 NULL;
113641 --
113642 --
113643
113644 l_ccid := AcctDerRule_4(
113645 p_application_id => p_application_id
113646 , p_ae_header_id => l_ae_header_id
113647 , p_source_4 => p_source_4
113648 , x_transaction_coa_id => l_adr_transaction_coa_id
113649 , x_accounting_coa_id => l_adr_accounting_coa_id
113650 , x_value_type_code => l_adr_value_type_code
113651 , p_side => 'NA'
113652 );
113653
113654 xla_ae_lines_pkg.set_ccid(
113655 p_code_combination_id => l_ccid
113656 , p_value_type_code => l_adr_value_type_code
113657 , p_transaction_coa_id => l_adr_transaction_coa_id
113658 , p_accounting_coa_id => l_adr_accounting_coa_id
113659 , p_adr_code => 'CST_DEFAULT'
113660 , p_adr_type_code => 'S'
113661 , p_component_type => l_component_type
113662 , p_component_code => l_component_code
113663 , p_component_type_code => l_component_type_code
113664 , p_component_appl_id => l_component_appl_id
113665 , p_amb_context_code => l_amb_context_code
113666 , p_side => 'NA'
113667 );
113668
113669
113670 --
113671 --
113672 END IF;
113673 --
113674 -- Bug 4922099
113675 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
113676 (NVL(l_enc_upg_option, 'N') = 'O')
113677 ) AND
113678 (l_bflow_method_code = 'PRIOR_ENTRY')
113679 )
113680 THEN
113681 IF
113682 --
113683 1 = 2
113684 --
113685 THEN
113686 xla_accounting_err_pkg.build_message
113687 (p_appli_s_name => 'XLA'
113688 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
113689 ,p_token_1 => 'LINE_NUMBER'
113690 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
113691 ,p_token_2 => 'LINE_TYPE_NAME'
113692 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
113693 l_component_type
113694 ,l_component_code
113695 ,l_component_type_code
113696 ,l_component_appl_id
113697 ,l_amb_context_code
113698 ,l_entity_code
113699 ,l_event_class_code
113700 )
113701 ,p_token_3 => 'OWNER'
113702 ,p_value_3 => xla_lookups_pkg.get_meaning(
113703 p_lookup_type => 'XLA_OWNER_TYPE'
113704 ,p_lookup_code => l_component_type_code
113705 )
113706 ,p_token_4 => 'PRODUCT_NAME'
113707 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
113708 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
113709 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
113710 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
113711 ,p_ae_header_id => NULL
113712 );
113713
113714 IF (C_LEVEL_ERROR>= g_log_level) THEN
113715 trace
113716 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
113717 ,p_level => C_LEVEL_ERROR
113718 ,p_module => l_log_module);
113719 END IF;
113720 END IF;
113721 END IF;
113722 --
113723 --
113724 ------------------------------------------------------------------------------------------------
113725 -- 4219869 Business Flow
113726 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
113727 -- Prior Entry. Currently, the following code is always generated.
113728 ------------------------------------------------------------------------------------------------
113729 XLA_AE_LINES_PKG.ValidateCurrentLine;
113730
113731 ------------------------------------------------------------------------------------
113732 -- 4219869 Business Flow
113733 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
113734 ------------------------------------------------------------------------------------
113735 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
113736
113737 ----------------------------------------------------------------------------------
113738 -- 4219869 Business Flow
113739 -- Update journal entry status -- Need to generate this within IF <condition>
113740 ----------------------------------------------------------------------------------
113741 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
113742 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
113743 ,p_balance_type_code => l_balance_type_code
113744 );
113745
113746 -------------------------------------------------------------------------------------------
113747 -- 4262811 - Generate the Accrual Reversal lines
113748 -------------------------------------------------------------------------------------------
113749 BEGIN
113750 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
113751 (g_array_event(p_event_id).array_value_num('header_index'));
113752 IF l_acc_rev_flag IS NULL THEN
113753 l_acc_rev_flag := 'N';
113754 END IF;
113755 EXCEPTION
113756 WHEN OTHERS THEN
113757 l_acc_rev_flag := 'N';
113758 END;
113759 --
113760 IF (l_acc_rev_flag = 'Y') THEN
113761
113762 -- 4645092 ------------------------------------------------------------------------------
113763 -- To allow MPA report to determine if it should generate report process
113764 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
113765 ------------------------------------------------------------------------------------------
113766
113767 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
113768 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
113769 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
113770 -- call ADRs
113771 -- Bug 4922099
113772 --
113773 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
113774 (NVL(l_actual_upg_option, 'N') = 'O') OR
113775 (NVL(l_enc_upg_option, 'N') = 'O')
113776 )
113777 THEN
113778 NULL;
113779 --
113780 --
113781
113782 l_ccid := AcctDerRule_4(
113783 p_application_id => p_application_id
113784 , p_ae_header_id => l_ae_header_id
113785 , p_source_4 => p_source_4
113786 , x_transaction_coa_id => l_adr_transaction_coa_id
113787 , x_accounting_coa_id => l_adr_accounting_coa_id
113788 , x_value_type_code => l_adr_value_type_code
113789 , p_side => 'NA'
113790 );
113791
113792 xla_ae_lines_pkg.set_ccid(
113793 p_code_combination_id => l_ccid
113794 , p_value_type_code => l_adr_value_type_code
113795 , p_transaction_coa_id => l_adr_transaction_coa_id
113796 , p_accounting_coa_id => l_adr_accounting_coa_id
113797 , p_adr_code => 'CST_DEFAULT'
113798 , p_adr_type_code => 'S'
113799 , p_component_type => l_component_type
113800 , p_component_code => l_component_code
113801 , p_component_type_code => l_component_type_code
113802 , p_component_appl_id => l_component_appl_id
113803 , p_amb_context_code => l_amb_context_code
113804 , p_side => 'NA'
113805 );
113806
113807
113808 --
113809 --
113810 END IF;
113811
113812 --
113813 -- Update the line information that should be overwritten
113814 --
113815 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
113816 p_header_num => 1);
113817 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
113818
113819 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
113820
113821 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
113822 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
113823 END IF;
113824
113825 --
113826 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
113827 --
113828 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
113829 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
113830 ELSE
113831 ---------------------------------------------------------------------------------------------------
113832 -- 4262811a Switch Sign
113833 ---------------------------------------------------------------------------------------------------
113834 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
113835 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
113836 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
113837 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
113838 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
113839 -- 5132302
113840 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
113841 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
113842
113843 END IF;
113844
113845 -- 4955764
113846 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
113847 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
113848
113849
113850 XLA_AE_LINES_PKG.ValidateCurrentLine;
113851 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
113852
113853 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
113854 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
113855 ,p_balance_type_code => l_balance_type_code);
113856
113857 END IF;
113858
113859 -----------------------------------------------------------------------------------------
113860 -- 4262811 Multiperiod Accounting
113861 -----------------------------------------------------------------------------------------
113862 -- No MPA option is assigned.
113863
113864
113865 END IF;
113866 END IF;
113867 --
113868
113869 --
113870 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
113871 trace
113872 (p_msg => 'END of AcctLineType_206'
113873 ,p_level => C_LEVEL_PROCEDURE
113874 ,p_module => l_log_module);
113875 END IF;
113876 --
113877 EXCEPTION
113878 WHEN xla_exceptions_pkg.application_exception THEN
113879 RAISE;
113880 WHEN OTHERS THEN
113881 xla_exceptions_pkg.raise_message
113882 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_206');
113883 END AcctLineType_206;
113884 --
113885
113886 ---------------------------------------
113887 --
113888 -- PRIVATE FUNCTION
113889 -- AcctLineType_207
113890 --
113891 ---------------------------------------
113892 PROCEDURE AcctLineType_207 (
113893 p_application_id IN NUMBER
113894 ,p_event_id IN NUMBER
113895 ,p_calculate_acctd_flag IN VARCHAR2
113896 ,p_calculate_g_l_flag IN VARCHAR2
113897 ,p_actual_flag IN OUT VARCHAR2
113898 ,p_balance_type_code OUT VARCHAR2
113899 ,p_gain_or_loss_ref OUT VARCHAR2
113900
113901 --Cost Management Default Account
113902 , p_source_4 IN NUMBER
113903 --DISTRIBUTION_IDENTIFIER
113904 , p_source_11 IN NUMBER
113905 --Distribution Type
113906 , p_source_12 IN VARCHAR2
113907 , p_source_12_meaning IN VARCHAR2
113908 --Entered Currency Code
113909 , p_source_15 IN VARCHAR2
113910 --Entered Amount
113911 , p_source_18 IN NUMBER
113912 --Currency Conversion Date
113913 , p_source_19 IN DATE
113914 --Currency Conversion Rate
113915 , p_source_20 IN NUMBER
113916 --Currency Conversion Type
113917 , p_source_21 IN VARCHAR2
113918 --Accounted Amount
113919 , p_source_22 IN NUMBER
113920 --Accounting Line Type
113921 , p_source_24 IN NUMBER
113922 )
113923 IS
113924
113925 l_component_type VARCHAR2(80);
113926 l_component_code VARCHAR2(30);
113927 l_component_type_code VARCHAR2(1);
113928 l_component_appl_id INTEGER;
113929 l_amb_context_code VARCHAR2(30);
113930 l_entity_code VARCHAR2(30);
113931 l_event_class_code VARCHAR2(30);
113932 l_ae_header_id NUMBER;
113933 l_event_type_code VARCHAR2(30);
113934 l_line_definition_code VARCHAR2(30);
113935 l_line_definition_owner_code VARCHAR2(1);
113936 --
113937 -- adr variables
113938 l_segment VARCHAR2(30);
113939 l_ccid NUMBER;
113940 l_adr_transaction_coa_id NUMBER;
113941 l_adr_accounting_coa_id NUMBER;
113942 l_adr_flexfield_segment_code VARCHAR2(30);
113943 l_adr_flex_value_set_id NUMBER;
113944 l_adr_value_type_code VARCHAR2(30);
113945 l_adr_value_combination_id NUMBER;
113946 l_adr_value_segment_code VARCHAR2(30);
113947
113948 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
113949 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
113950 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
113951 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
113952
113953 -- 4262811 Variables ------------------------------------------------------------------------------------------
113954 l_entered_amt_idx NUMBER;
113955 l_accted_amt_idx NUMBER;
113956 l_acc_rev_flag VARCHAR2(1);
113957 l_accrual_line_num NUMBER;
113958 l_tmp_amt NUMBER;
113959 l_acc_rev_natural_side_code VARCHAR2(1);
113960
113961 l_num_entries NUMBER;
113962 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
113963 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
113964 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
113965 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
113966 l_recog_line_1 NUMBER;
113967 l_recog_line_2 NUMBER;
113968
113969 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
113970 l_bflow_applied_to_amt NUMBER; -- 5132302
113971 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
113972
113973 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
113974
113975 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
113976 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
113977
113978 ---------------------------------------------------------------------------------------------------------------
113979
113980
113981 --
113982 -- bulk performance
113983 --
113984 l_balance_type_code VARCHAR2(1);
113985 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
113986 l_log_module VARCHAR2(240);
113987
113988 --
113989 -- Upgrade strategy
113990 --
113991 l_actual_upg_option VARCHAR2(1);
113992 l_enc_upg_option VARCHAR2(1);
113993
113994 --
113995 BEGIN
113996 --
113997 IF g_log_enabled THEN
113998 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_207';
113999 END IF;
114000 --
114001 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
114002
114003 trace
114004 (p_msg => 'BEGIN of AcctLineType_207'
114005 ,p_level => C_LEVEL_PROCEDURE
114006 ,p_module => l_log_module);
114007
114008 END IF;
114009 --
114010 l_component_type := 'AMB_JLT';
114011 l_component_code := 'PROFIT_IN_INVENTORY';
114012 l_component_type_code := 'S';
114013 l_component_appl_id := 707;
114014 l_amb_context_code := 'DEFAULT';
114015 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
114016 l_event_class_code := 'FOB_SHIP_RECIPIENT_SHIP';
114017 l_event_type_code := 'FOB_SHIP_RECIPIENT_SHIP_ALL';
114018 l_line_definition_owner_code := 'S';
114019 l_line_definition_code := 'FOB_SHIP_RECIPIENT_SHIP';
114020 --
114021 l_balance_type_code := 'A';
114022 l_segment := NULL;
114023 l_ccid := NULL;
114024 l_adr_transaction_coa_id := NULL;
114025 l_adr_accounting_coa_id := NULL;
114026 l_adr_flexfield_segment_code := NULL;
114027 l_adr_flex_value_set_id := NULL;
114028 l_adr_value_type_code := NULL;
114029 l_adr_value_combination_id := NULL;
114030 l_adr_value_segment_code := NULL;
114031
114032 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
114033 l_bflow_class_code := ''; -- 4219869 Business Flow
114034 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
114035 l_budgetary_control_flag := 'N';
114036
114037 l_bflow_applied_to_amt_idx := NULL; -- 5132302
114038 l_bflow_applied_to_amt := NULL; -- 5132302
114039 l_entered_amt_idx := NULL; -- 4262811
114040 l_accted_amt_idx := NULL; -- 4262811
114041 l_acc_rev_flag := NULL; -- 4262811
114042 l_accrual_line_num := NULL; -- 4262811
114043 l_tmp_amt := NULL; -- 4262811
114044 --
114045
114046 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
114047 l_balance_type_code <> 'B' THEN
114048 IF NVL(p_source_24,9E125) = 30
114049 THEN
114050
114051 --
114052 XLA_AE_LINES_PKG.SetNewLine;
114053
114054 p_balance_type_code := l_balance_type_code;
114055 -- set the flag so later we will know whether the gain loss line needs to be created
114056
114057 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
114058 p_actual_flag :='A';
114059 END IF;
114060
114061 --
114062 -- bulk performance
114063 --
114064 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
114065 p_header_num => 0); -- 4262811
114066 --
114067 -- set accounting line options
114068 --
114069 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
114070 p_natural_side_code => 'D'
114071 , p_gain_or_loss_flag => 'N'
114072 , p_gl_transfer_mode_code => 'S'
114073 , p_acct_entry_type_code => 'A'
114074 , p_switch_side_flag => 'Y'
114075 , p_merge_duplicate_code => 'N'
114076 );
114077 --
114078 l_acc_rev_natural_side_code := 'C'; -- 4262811
114079 --
114080 --
114081 -- set accounting line type info
114082 --
114083 xla_ae_lines_pkg.SetAcctLineType
114084 (p_component_type => l_component_type
114085 ,p_event_type_code => l_event_type_code
114086 ,p_line_definition_owner_code => l_line_definition_owner_code
114087 ,p_line_definition_code => l_line_definition_code
114088 ,p_accounting_line_code => l_component_code
114089 ,p_accounting_line_type_code => l_component_type_code
114090 ,p_accounting_line_appl_id => l_component_appl_id
114091 ,p_amb_context_code => l_amb_context_code
114092 ,p_entity_code => l_entity_code
114093 ,p_event_class_code => l_event_class_code);
114094 --
114095 -- set accounting class
114096 --
114097 xla_ae_lines_pkg.SetAcctClass(
114098 p_accounting_class_code => 'PROFIT_IN_INVENTORY'
114099 , p_ae_header_id => l_ae_header_id
114100 );
114101
114102 --
114103 -- set rounding class
114104 --
114105 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
114106 'PROFIT_IN_INVENTORY';
114107
114108 --
114109 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
114110 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
114111 --
114112 -- bulk performance
114113 --
114114 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
114115
114116 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
114117 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
114118
114119 -- 4955764
114120 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
114121 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
114122
114123 -- 4458381 Public Sector Enh
114124
114125 --
114126 -- set accounting attributes for the line type
114127 --
114128 l_entered_amt_idx := 3;
114129 l_accted_amt_idx := 8;
114130 l_bflow_applied_to_amt_idx := NULL; -- 5132302
114131 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
114132 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
114133 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
114134 l_rec_acct_attrs.array_char_value(2) := p_source_12;
114135 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
114136 l_rec_acct_attrs.array_num_value(3) := p_source_18;
114137 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
114138 l_rec_acct_attrs.array_char_value(4) := p_source_15;
114139 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
114140 l_rec_acct_attrs.array_date_value(5) := p_source_19;
114141 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
114142 l_rec_acct_attrs.array_num_value(6) := p_source_20;
114143 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
114144 l_rec_acct_attrs.array_char_value(7) := p_source_21;
114145 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
114146 l_rec_acct_attrs.array_num_value(8) := p_source_22;
114147
114148 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
114149 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
114150
114151 ---------------------------------------------------------------------------------------------------------------
114152 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
114153 ---------------------------------------------------------------------------------------------------------------
114154 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
114155
114156 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
114157 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
114158
114159 IF xla_accounting_cache_pkg.GetValueChar
114160 (p_source_code => 'LEDGER_CATEGORY_CODE'
114161 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
114162 AND l_bflow_method_code = 'PRIOR_ENTRY'
114163 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
114164 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
114165 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
114166 )
114167 THEN
114168 xla_ae_lines_pkg.BflowUpgEntry
114169 (p_business_method_code => l_bflow_method_code
114170 ,p_business_class_code => l_bflow_class_code
114171 ,p_balance_type => l_balance_type_code);
114172 ELSE
114173 NULL;
114174 -- No business flow processing for business flow method of NONE.
114175 END IF;
114176
114177 --
114178 -- call analytical criteria
114179 --
114180
114181 --
114182 -- call description
114183 --
114184 -- No description or it is inherited.
114185 --
114186 -- call ADRs
114187 -- Bug 4922099
114188 --
114189 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
114190 (NVL(l_actual_upg_option, 'N') = 'O') OR
114191 (NVL(l_enc_upg_option, 'N') = 'O')
114192 )
114193 THEN
114194 NULL;
114195 --
114196 --
114197
114198 l_ccid := AcctDerRule_4(
114199 p_application_id => p_application_id
114200 , p_ae_header_id => l_ae_header_id
114201 , p_source_4 => p_source_4
114202 , x_transaction_coa_id => l_adr_transaction_coa_id
114203 , x_accounting_coa_id => l_adr_accounting_coa_id
114204 , x_value_type_code => l_adr_value_type_code
114205 , p_side => 'NA'
114206 );
114207
114208 xla_ae_lines_pkg.set_ccid(
114209 p_code_combination_id => l_ccid
114210 , p_value_type_code => l_adr_value_type_code
114211 , p_transaction_coa_id => l_adr_transaction_coa_id
114212 , p_accounting_coa_id => l_adr_accounting_coa_id
114213 , p_adr_code => 'CST_DEFAULT'
114214 , p_adr_type_code => 'S'
114215 , p_component_type => l_component_type
114216 , p_component_code => l_component_code
114217 , p_component_type_code => l_component_type_code
114218 , p_component_appl_id => l_component_appl_id
114219 , p_amb_context_code => l_amb_context_code
114220 , p_side => 'NA'
114221 );
114222
114223
114224 --
114225 --
114226 END IF;
114227 --
114228 -- Bug 4922099
114229 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
114230 (NVL(l_enc_upg_option, 'N') = 'O')
114231 ) AND
114232 (l_bflow_method_code = 'PRIOR_ENTRY')
114233 )
114234 THEN
114235 IF
114236 --
114237 1 = 2
114238 --
114239 THEN
114240 xla_accounting_err_pkg.build_message
114241 (p_appli_s_name => 'XLA'
114242 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
114243 ,p_token_1 => 'LINE_NUMBER'
114244 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
114245 ,p_token_2 => 'LINE_TYPE_NAME'
114246 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
114247 l_component_type
114248 ,l_component_code
114249 ,l_component_type_code
114250 ,l_component_appl_id
114251 ,l_amb_context_code
114252 ,l_entity_code
114253 ,l_event_class_code
114254 )
114255 ,p_token_3 => 'OWNER'
114256 ,p_value_3 => xla_lookups_pkg.get_meaning(
114257 p_lookup_type => 'XLA_OWNER_TYPE'
114258 ,p_lookup_code => l_component_type_code
114259 )
114260 ,p_token_4 => 'PRODUCT_NAME'
114261 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
114262 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
114263 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
114264 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
114265 ,p_ae_header_id => NULL
114266 );
114267
114268 IF (C_LEVEL_ERROR>= g_log_level) THEN
114269 trace
114270 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
114271 ,p_level => C_LEVEL_ERROR
114272 ,p_module => l_log_module);
114273 END IF;
114274 END IF;
114275 END IF;
114276 --
114277 --
114278 ------------------------------------------------------------------------------------------------
114279 -- 4219869 Business Flow
114280 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
114281 -- Prior Entry. Currently, the following code is always generated.
114282 ------------------------------------------------------------------------------------------------
114283 XLA_AE_LINES_PKG.ValidateCurrentLine;
114284
114285 ------------------------------------------------------------------------------------
114286 -- 4219869 Business Flow
114287 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
114288 ------------------------------------------------------------------------------------
114289 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
114290
114291 ----------------------------------------------------------------------------------
114292 -- 4219869 Business Flow
114293 -- Update journal entry status -- Need to generate this within IF <condition>
114294 ----------------------------------------------------------------------------------
114295 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
114296 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
114297 ,p_balance_type_code => l_balance_type_code
114298 );
114299
114300 -------------------------------------------------------------------------------------------
114301 -- 4262811 - Generate the Accrual Reversal lines
114302 -------------------------------------------------------------------------------------------
114303 BEGIN
114304 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
114305 (g_array_event(p_event_id).array_value_num('header_index'));
114306 IF l_acc_rev_flag IS NULL THEN
114307 l_acc_rev_flag := 'N';
114308 END IF;
114309 EXCEPTION
114310 WHEN OTHERS THEN
114311 l_acc_rev_flag := 'N';
114312 END;
114313 --
114314 IF (l_acc_rev_flag = 'Y') THEN
114315
114316 -- 4645092 ------------------------------------------------------------------------------
114317 -- To allow MPA report to determine if it should generate report process
114318 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
114319 ------------------------------------------------------------------------------------------
114320
114321 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
114322 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
114323 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
114324 -- call ADRs
114325 -- Bug 4922099
114326 --
114327 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
114328 (NVL(l_actual_upg_option, 'N') = 'O') OR
114329 (NVL(l_enc_upg_option, 'N') = 'O')
114330 )
114331 THEN
114332 NULL;
114333 --
114334 --
114335
114336 l_ccid := AcctDerRule_4(
114337 p_application_id => p_application_id
114338 , p_ae_header_id => l_ae_header_id
114339 , p_source_4 => p_source_4
114340 , x_transaction_coa_id => l_adr_transaction_coa_id
114341 , x_accounting_coa_id => l_adr_accounting_coa_id
114342 , x_value_type_code => l_adr_value_type_code
114343 , p_side => 'NA'
114344 );
114345
114346 xla_ae_lines_pkg.set_ccid(
114347 p_code_combination_id => l_ccid
114348 , p_value_type_code => l_adr_value_type_code
114349 , p_transaction_coa_id => l_adr_transaction_coa_id
114350 , p_accounting_coa_id => l_adr_accounting_coa_id
114351 , p_adr_code => 'CST_DEFAULT'
114352 , p_adr_type_code => 'S'
114353 , p_component_type => l_component_type
114354 , p_component_code => l_component_code
114355 , p_component_type_code => l_component_type_code
114356 , p_component_appl_id => l_component_appl_id
114357 , p_amb_context_code => l_amb_context_code
114358 , p_side => 'NA'
114359 );
114360
114361
114362 --
114363 --
114364 END IF;
114365
114366 --
114367 -- Update the line information that should be overwritten
114368 --
114369 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
114370 p_header_num => 1);
114371 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
114372
114373 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
114374
114375 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
114376 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
114377 END IF;
114378
114379 --
114380 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
114381 --
114382 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
114383 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
114384 ELSE
114385 ---------------------------------------------------------------------------------------------------
114386 -- 4262811a Switch Sign
114387 ---------------------------------------------------------------------------------------------------
114388 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
114389 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
114390 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
114391 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
114392 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
114393 -- 5132302
114394 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
114395 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
114396
114397 END IF;
114398
114399 -- 4955764
114400 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
114401 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
114402
114403
114404 XLA_AE_LINES_PKG.ValidateCurrentLine;
114405 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
114406
114407 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
114408 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
114409 ,p_balance_type_code => l_balance_type_code);
114410
114411 END IF;
114412
114413 -----------------------------------------------------------------------------------------
114414 -- 4262811 Multiperiod Accounting
114415 -----------------------------------------------------------------------------------------
114416 -- No MPA option is assigned.
114417
114418
114419 END IF;
114420 END IF;
114421 --
114422
114423 --
114424 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
114425 trace
114426 (p_msg => 'END of AcctLineType_207'
114427 ,p_level => C_LEVEL_PROCEDURE
114428 ,p_module => l_log_module);
114429 END IF;
114430 --
114431 EXCEPTION
114432 WHEN xla_exceptions_pkg.application_exception THEN
114433 RAISE;
114434 WHEN OTHERS THEN
114435 xla_exceptions_pkg.raise_message
114436 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_207');
114437 END AcctLineType_207;
114438 --
114439
114440 ---------------------------------------
114441 --
114442 -- PRIVATE FUNCTION
114443 -- AcctLineType_208
114444 --
114445 ---------------------------------------
114446 PROCEDURE AcctLineType_208 (
114447 p_application_id IN NUMBER
114448 ,p_event_id IN NUMBER
114449 ,p_calculate_acctd_flag IN VARCHAR2
114450 ,p_calculate_g_l_flag IN VARCHAR2
114451 ,p_actual_flag IN OUT VARCHAR2
114452 ,p_balance_type_code OUT VARCHAR2
114453 ,p_gain_or_loss_ref OUT VARCHAR2
114454
114455 --Cost Management Default Account
114456 , p_source_4 IN NUMBER
114457 --DISTRIBUTION_IDENTIFIER
114458 , p_source_11 IN NUMBER
114459 --Distribution Type
114460 , p_source_12 IN VARCHAR2
114461 , p_source_12_meaning IN VARCHAR2
114462 --Entered Currency Code
114463 , p_source_15 IN VARCHAR2
114464 --Entered Amount
114465 , p_source_18 IN NUMBER
114466 --Currency Conversion Date
114467 , p_source_19 IN DATE
114468 --Currency Conversion Rate
114469 , p_source_20 IN NUMBER
114470 --Currency Conversion Type
114471 , p_source_21 IN VARCHAR2
114472 --Accounted Amount
114473 , p_source_22 IN NUMBER
114474 --Accounting Line Type
114475 , p_source_24 IN NUMBER
114476 )
114477 IS
114478
114479 l_component_type VARCHAR2(80);
114480 l_component_code VARCHAR2(30);
114481 l_component_type_code VARCHAR2(1);
114482 l_component_appl_id INTEGER;
114483 l_amb_context_code VARCHAR2(30);
114484 l_entity_code VARCHAR2(30);
114485 l_event_class_code VARCHAR2(30);
114486 l_ae_header_id NUMBER;
114487 l_event_type_code VARCHAR2(30);
114488 l_line_definition_code VARCHAR2(30);
114489 l_line_definition_owner_code VARCHAR2(1);
114490 --
114491 -- adr variables
114492 l_segment VARCHAR2(30);
114493 l_ccid NUMBER;
114494 l_adr_transaction_coa_id NUMBER;
114495 l_adr_accounting_coa_id NUMBER;
114496 l_adr_flexfield_segment_code VARCHAR2(30);
114497 l_adr_flex_value_set_id NUMBER;
114498 l_adr_value_type_code VARCHAR2(30);
114499 l_adr_value_combination_id NUMBER;
114500 l_adr_value_segment_code VARCHAR2(30);
114501
114502 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
114503 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
114504 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
114505 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
114506
114507 -- 4262811 Variables ------------------------------------------------------------------------------------------
114508 l_entered_amt_idx NUMBER;
114509 l_accted_amt_idx NUMBER;
114510 l_acc_rev_flag VARCHAR2(1);
114511 l_accrual_line_num NUMBER;
114512 l_tmp_amt NUMBER;
114513 l_acc_rev_natural_side_code VARCHAR2(1);
114514
114515 l_num_entries NUMBER;
114516 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
114517 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
114518 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
114519 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
114520 l_recog_line_1 NUMBER;
114521 l_recog_line_2 NUMBER;
114522
114523 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
114524 l_bflow_applied_to_amt NUMBER; -- 5132302
114525 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
114526
114527 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
114528
114529 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
114530 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
114531
114532 ---------------------------------------------------------------------------------------------------------------
114533
114534
114535 --
114536 -- bulk performance
114537 --
114538 l_balance_type_code VARCHAR2(1);
114539 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
114540 l_log_module VARCHAR2(240);
114541
114542 --
114543 -- Upgrade strategy
114544 --
114545 l_actual_upg_option VARCHAR2(1);
114546 l_enc_upg_option VARCHAR2(1);
114547
114548 --
114549 BEGIN
114550 --
114551 IF g_log_enabled THEN
114552 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_208';
114553 END IF;
114554 --
114555 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
114556
114557 trace
114558 (p_msg => 'BEGIN of AcctLineType_208'
114559 ,p_level => C_LEVEL_PROCEDURE
114560 ,p_module => l_log_module);
114561
114562 END IF;
114563 --
114564 l_component_type := 'AMB_JLT';
114565 l_component_code := 'PROFIT_IN_INVENTORY';
114566 l_component_type_code := 'S';
114567 l_component_appl_id := 707;
114568 l_amb_context_code := 'DEFAULT';
114569 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
114570 l_event_class_code := 'USER_DEFINE';
114571 l_event_type_code := 'UFOB_SHIP_RECIPIENT_SHIP_TP';
114572 l_line_definition_owner_code := 'S';
114573 l_line_definition_code := 'USER_FOB_SHIP_RECP_SHIP_TP';
114574 --
114575 l_balance_type_code := 'A';
114576 l_segment := NULL;
114577 l_ccid := NULL;
114578 l_adr_transaction_coa_id := NULL;
114579 l_adr_accounting_coa_id := NULL;
114580 l_adr_flexfield_segment_code := NULL;
114581 l_adr_flex_value_set_id := NULL;
114582 l_adr_value_type_code := NULL;
114583 l_adr_value_combination_id := NULL;
114584 l_adr_value_segment_code := NULL;
114585
114586 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
114587 l_bflow_class_code := ''; -- 4219869 Business Flow
114588 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
114589 l_budgetary_control_flag := 'N';
114590
114591 l_bflow_applied_to_amt_idx := NULL; -- 5132302
114592 l_bflow_applied_to_amt := NULL; -- 5132302
114593 l_entered_amt_idx := NULL; -- 4262811
114594 l_accted_amt_idx := NULL; -- 4262811
114595 l_acc_rev_flag := NULL; -- 4262811
114596 l_accrual_line_num := NULL; -- 4262811
114597 l_tmp_amt := NULL; -- 4262811
114598 --
114599
114600 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
114601 l_balance_type_code <> 'B' THEN
114602 IF NVL(p_source_24,9E125) = 30
114603 THEN
114604
114605 --
114606 XLA_AE_LINES_PKG.SetNewLine;
114607
114608 p_balance_type_code := l_balance_type_code;
114609 -- set the flag so later we will know whether the gain loss line needs to be created
114610
114611 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
114612 p_actual_flag :='A';
114613 END IF;
114614
114615 --
114616 -- bulk performance
114617 --
114618 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
114619 p_header_num => 0); -- 4262811
114620 --
114621 -- set accounting line options
114622 --
114623 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
114624 p_natural_side_code => 'D'
114625 , p_gain_or_loss_flag => 'N'
114626 , p_gl_transfer_mode_code => 'S'
114627 , p_acct_entry_type_code => 'A'
114628 , p_switch_side_flag => 'Y'
114629 , p_merge_duplicate_code => 'N'
114630 );
114631 --
114632 l_acc_rev_natural_side_code := 'C'; -- 4262811
114633 --
114634 --
114635 -- set accounting line type info
114636 --
114637 xla_ae_lines_pkg.SetAcctLineType
114638 (p_component_type => l_component_type
114639 ,p_event_type_code => l_event_type_code
114640 ,p_line_definition_owner_code => l_line_definition_owner_code
114641 ,p_line_definition_code => l_line_definition_code
114642 ,p_accounting_line_code => l_component_code
114643 ,p_accounting_line_type_code => l_component_type_code
114644 ,p_accounting_line_appl_id => l_component_appl_id
114645 ,p_amb_context_code => l_amb_context_code
114646 ,p_entity_code => l_entity_code
114647 ,p_event_class_code => l_event_class_code);
114648 --
114649 -- set accounting class
114650 --
114651 xla_ae_lines_pkg.SetAcctClass(
114652 p_accounting_class_code => 'PROFIT_IN_INVENTORY'
114653 , p_ae_header_id => l_ae_header_id
114654 );
114655
114656 --
114657 -- set rounding class
114658 --
114659 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
114660 'PROFIT_IN_INVENTORY';
114661
114662 --
114663 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
114664 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
114665 --
114666 -- bulk performance
114667 --
114668 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
114669
114670 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
114671 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
114672
114673 -- 4955764
114674 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
114675 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
114676
114677 -- 4458381 Public Sector Enh
114678
114679 --
114680 -- set accounting attributes for the line type
114681 --
114682 l_entered_amt_idx := 3;
114683 l_accted_amt_idx := 8;
114684 l_bflow_applied_to_amt_idx := NULL; -- 5132302
114685 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
114686 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
114687 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
114688 l_rec_acct_attrs.array_char_value(2) := p_source_12;
114689 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
114690 l_rec_acct_attrs.array_num_value(3) := p_source_18;
114691 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
114692 l_rec_acct_attrs.array_char_value(4) := p_source_15;
114693 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
114694 l_rec_acct_attrs.array_date_value(5) := p_source_19;
114695 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
114696 l_rec_acct_attrs.array_num_value(6) := p_source_20;
114697 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
114698 l_rec_acct_attrs.array_char_value(7) := p_source_21;
114699 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
114700 l_rec_acct_attrs.array_num_value(8) := p_source_22;
114701
114702 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
114703 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
114704
114705 ---------------------------------------------------------------------------------------------------------------
114706 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
114707 ---------------------------------------------------------------------------------------------------------------
114708 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
114709
114710 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
114711 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
114712
114713 IF xla_accounting_cache_pkg.GetValueChar
114714 (p_source_code => 'LEDGER_CATEGORY_CODE'
114715 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
114716 AND l_bflow_method_code = 'PRIOR_ENTRY'
114717 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
114718 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
114719 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
114720 )
114721 THEN
114722 xla_ae_lines_pkg.BflowUpgEntry
114723 (p_business_method_code => l_bflow_method_code
114724 ,p_business_class_code => l_bflow_class_code
114725 ,p_balance_type => l_balance_type_code);
114726 ELSE
114727 NULL;
114728 -- No business flow processing for business flow method of NONE.
114729 END IF;
114730
114731 --
114732 -- call analytical criteria
114733 --
114734
114735 --
114736 -- call description
114737 --
114738 -- No description or it is inherited.
114739 --
114740 -- call ADRs
114741 -- Bug 4922099
114742 --
114743 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
114744 (NVL(l_actual_upg_option, 'N') = 'O') OR
114745 (NVL(l_enc_upg_option, 'N') = 'O')
114746 )
114747 THEN
114748 NULL;
114749 --
114750 --
114751
114752 l_ccid := AcctDerRule_4(
114753 p_application_id => p_application_id
114754 , p_ae_header_id => l_ae_header_id
114755 , p_source_4 => p_source_4
114756 , x_transaction_coa_id => l_adr_transaction_coa_id
114757 , x_accounting_coa_id => l_adr_accounting_coa_id
114758 , x_value_type_code => l_adr_value_type_code
114759 , p_side => 'NA'
114760 );
114761
114762 xla_ae_lines_pkg.set_ccid(
114763 p_code_combination_id => l_ccid
114764 , p_value_type_code => l_adr_value_type_code
114765 , p_transaction_coa_id => l_adr_transaction_coa_id
114766 , p_accounting_coa_id => l_adr_accounting_coa_id
114767 , p_adr_code => 'CST_DEFAULT'
114768 , p_adr_type_code => 'S'
114769 , p_component_type => l_component_type
114770 , p_component_code => l_component_code
114771 , p_component_type_code => l_component_type_code
114772 , p_component_appl_id => l_component_appl_id
114773 , p_amb_context_code => l_amb_context_code
114774 , p_side => 'NA'
114775 );
114776
114777
114778 --
114779 --
114780 END IF;
114781 --
114782 -- Bug 4922099
114783 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
114784 (NVL(l_enc_upg_option, 'N') = 'O')
114785 ) AND
114786 (l_bflow_method_code = 'PRIOR_ENTRY')
114787 )
114788 THEN
114789 IF
114790 --
114791 1 = 2
114792 --
114793 THEN
114794 xla_accounting_err_pkg.build_message
114795 (p_appli_s_name => 'XLA'
114796 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
114797 ,p_token_1 => 'LINE_NUMBER'
114798 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
114799 ,p_token_2 => 'LINE_TYPE_NAME'
114800 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
114801 l_component_type
114802 ,l_component_code
114803 ,l_component_type_code
114804 ,l_component_appl_id
114805 ,l_amb_context_code
114806 ,l_entity_code
114807 ,l_event_class_code
114808 )
114809 ,p_token_3 => 'OWNER'
114810 ,p_value_3 => xla_lookups_pkg.get_meaning(
114811 p_lookup_type => 'XLA_OWNER_TYPE'
114812 ,p_lookup_code => l_component_type_code
114813 )
114814 ,p_token_4 => 'PRODUCT_NAME'
114815 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
114816 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
114817 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
114818 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
114819 ,p_ae_header_id => NULL
114820 );
114821
114822 IF (C_LEVEL_ERROR>= g_log_level) THEN
114823 trace
114824 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
114825 ,p_level => C_LEVEL_ERROR
114826 ,p_module => l_log_module);
114827 END IF;
114828 END IF;
114829 END IF;
114830 --
114831 --
114832 ------------------------------------------------------------------------------------------------
114833 -- 4219869 Business Flow
114834 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
114835 -- Prior Entry. Currently, the following code is always generated.
114836 ------------------------------------------------------------------------------------------------
114837 XLA_AE_LINES_PKG.ValidateCurrentLine;
114838
114839 ------------------------------------------------------------------------------------
114840 -- 4219869 Business Flow
114841 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
114842 ------------------------------------------------------------------------------------
114843 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
114844
114845 ----------------------------------------------------------------------------------
114846 -- 4219869 Business Flow
114847 -- Update journal entry status -- Need to generate this within IF <condition>
114848 ----------------------------------------------------------------------------------
114849 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
114850 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
114851 ,p_balance_type_code => l_balance_type_code
114852 );
114853
114854 -------------------------------------------------------------------------------------------
114855 -- 4262811 - Generate the Accrual Reversal lines
114856 -------------------------------------------------------------------------------------------
114857 BEGIN
114858 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
114859 (g_array_event(p_event_id).array_value_num('header_index'));
114860 IF l_acc_rev_flag IS NULL THEN
114861 l_acc_rev_flag := 'N';
114862 END IF;
114863 EXCEPTION
114864 WHEN OTHERS THEN
114865 l_acc_rev_flag := 'N';
114866 END;
114867 --
114868 IF (l_acc_rev_flag = 'Y') THEN
114869
114870 -- 4645092 ------------------------------------------------------------------------------
114871 -- To allow MPA report to determine if it should generate report process
114872 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
114873 ------------------------------------------------------------------------------------------
114874
114875 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
114876 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
114877 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
114878 -- call ADRs
114879 -- Bug 4922099
114880 --
114881 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
114882 (NVL(l_actual_upg_option, 'N') = 'O') OR
114883 (NVL(l_enc_upg_option, 'N') = 'O')
114884 )
114885 THEN
114886 NULL;
114887 --
114888 --
114889
114890 l_ccid := AcctDerRule_4(
114891 p_application_id => p_application_id
114892 , p_ae_header_id => l_ae_header_id
114893 , p_source_4 => p_source_4
114894 , x_transaction_coa_id => l_adr_transaction_coa_id
114895 , x_accounting_coa_id => l_adr_accounting_coa_id
114896 , x_value_type_code => l_adr_value_type_code
114897 , p_side => 'NA'
114898 );
114899
114900 xla_ae_lines_pkg.set_ccid(
114901 p_code_combination_id => l_ccid
114902 , p_value_type_code => l_adr_value_type_code
114903 , p_transaction_coa_id => l_adr_transaction_coa_id
114904 , p_accounting_coa_id => l_adr_accounting_coa_id
114905 , p_adr_code => 'CST_DEFAULT'
114906 , p_adr_type_code => 'S'
114907 , p_component_type => l_component_type
114908 , p_component_code => l_component_code
114909 , p_component_type_code => l_component_type_code
114910 , p_component_appl_id => l_component_appl_id
114911 , p_amb_context_code => l_amb_context_code
114912 , p_side => 'NA'
114913 );
114914
114915
114916 --
114917 --
114918 END IF;
114919
114920 --
114921 -- Update the line information that should be overwritten
114922 --
114923 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
114924 p_header_num => 1);
114925 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
114926
114927 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
114928
114929 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
114930 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
114931 END IF;
114932
114933 --
114934 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
114935 --
114936 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
114937 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
114938 ELSE
114939 ---------------------------------------------------------------------------------------------------
114940 -- 4262811a Switch Sign
114941 ---------------------------------------------------------------------------------------------------
114942 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
114943 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
114944 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
114945 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
114946 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
114947 -- 5132302
114948 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
114949 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
114950
114951 END IF;
114952
114953 -- 4955764
114954 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
114955 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
114956
114957
114958 XLA_AE_LINES_PKG.ValidateCurrentLine;
114959 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
114960
114961 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
114962 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
114963 ,p_balance_type_code => l_balance_type_code);
114964
114965 END IF;
114966
114967 -----------------------------------------------------------------------------------------
114968 -- 4262811 Multiperiod Accounting
114969 -----------------------------------------------------------------------------------------
114970 -- No MPA option is assigned.
114971
114972
114973 END IF;
114974 END IF;
114975 --
114976
114977 --
114978 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
114979 trace
114980 (p_msg => 'END of AcctLineType_208'
114981 ,p_level => C_LEVEL_PROCEDURE
114982 ,p_module => l_log_module);
114983 END IF;
114984 --
114985 EXCEPTION
114986 WHEN xla_exceptions_pkg.application_exception THEN
114987 RAISE;
114988 WHEN OTHERS THEN
114989 xla_exceptions_pkg.raise_message
114990 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_208');
114991 END AcctLineType_208;
114992 --
114993
114994 ---------------------------------------
114995 --
114996 -- PRIVATE FUNCTION
114997 -- AcctLineType_209
114998 --
114999 ---------------------------------------
115000 PROCEDURE AcctLineType_209 (
115001 p_application_id IN NUMBER
115002 ,p_event_id IN NUMBER
115003 ,p_calculate_acctd_flag IN VARCHAR2
115004 ,p_calculate_g_l_flag IN VARCHAR2
115005 ,p_actual_flag IN OUT VARCHAR2
115006 ,p_balance_type_code OUT VARCHAR2
115007 ,p_gain_or_loss_ref OUT VARCHAR2
115008
115009 --Cost Management Default Account
115010 , p_source_4 IN NUMBER
115011 --Applied to Application ID
115012 , p_source_6 IN NUMBER
115013 --Applied to Distribution Link Type
115014 , p_source_7 IN VARCHAR2
115015 --Applied to Entity Code
115016 , p_source_8 IN VARCHAR2
115017 --DISTRIBUTION_IDENTIFIER
115018 , p_source_11 IN NUMBER
115019 --Distribution Type
115020 , p_source_12 IN VARCHAR2
115021 , p_source_12_meaning IN VARCHAR2
115022 --Encumbrance Reversal Amount Entered
115023 , p_source_14 IN NUMBER
115024 --Entered Currency Code
115025 , p_source_15 IN VARCHAR2
115026 --Transaction Encumbrance Reversal Amount
115027 , p_source_16 IN NUMBER
115028 --Entered Amount
115029 , p_source_18 IN NUMBER
115030 --Currency Conversion Date
115031 , p_source_19 IN DATE
115032 --Currency Conversion Rate
115033 , p_source_20 IN NUMBER
115034 --Currency Conversion Type
115035 , p_source_21 IN VARCHAR2
115036 --Accounted Amount
115037 , p_source_22 IN NUMBER
115038 --Accounting Line Type
115039 , p_source_24 IN NUMBER
115040 --Costing Encumbrance Upgrade Option
115041 , p_source_27 IN VARCHAR2
115042 --TXN_PO_DISTRIBUTION_ID
115043 , p_source_28 IN NUMBER
115044 --TXN_PO_HEADER_ID
115045 , p_source_29 IN NUMBER
115046 --Requisition Budget Account
115047 , p_source_30 IN NUMBER
115048 --Requisition Encumbrance Type Identifier
115049 , p_source_31 IN NUMBER
115050 )
115051 IS
115052
115053 l_component_type VARCHAR2(80);
115054 l_component_code VARCHAR2(30);
115055 l_component_type_code VARCHAR2(1);
115056 l_component_appl_id INTEGER;
115057 l_amb_context_code VARCHAR2(30);
115058 l_entity_code VARCHAR2(30);
115059 l_event_class_code VARCHAR2(30);
115060 l_ae_header_id NUMBER;
115061 l_event_type_code VARCHAR2(30);
115062 l_line_definition_code VARCHAR2(30);
115063 l_line_definition_owner_code VARCHAR2(1);
115064 --
115065 -- adr variables
115066 l_segment VARCHAR2(30);
115067 l_ccid NUMBER;
115068 l_adr_transaction_coa_id NUMBER;
115069 l_adr_accounting_coa_id NUMBER;
115070 l_adr_flexfield_segment_code VARCHAR2(30);
115071 l_adr_flex_value_set_id NUMBER;
115072 l_adr_value_type_code VARCHAR2(30);
115073 l_adr_value_combination_id NUMBER;
115074 l_adr_value_segment_code VARCHAR2(30);
115075
115076 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
115077 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
115078 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
115079 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
115080
115081 -- 4262811 Variables ------------------------------------------------------------------------------------------
115082 l_entered_amt_idx NUMBER;
115083 l_accted_amt_idx NUMBER;
115084 l_acc_rev_flag VARCHAR2(1);
115085 l_accrual_line_num NUMBER;
115086 l_tmp_amt NUMBER;
115087 l_acc_rev_natural_side_code VARCHAR2(1);
115088
115089 l_num_entries NUMBER;
115090 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
115091 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
115092 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
115093 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
115094 l_recog_line_1 NUMBER;
115095 l_recog_line_2 NUMBER;
115096
115097 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
115098 l_bflow_applied_to_amt NUMBER; -- 5132302
115099 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
115100
115101 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
115102
115103 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
115104 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
115105
115106 ---------------------------------------------------------------------------------------------------------------
115107
115108
115109 --
115110 -- bulk performance
115111 --
115112 l_balance_type_code VARCHAR2(1);
115113 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
115114 l_log_module VARCHAR2(240);
115115
115116 --
115117 -- Upgrade strategy
115118 --
115119 l_actual_upg_option VARCHAR2(1);
115120 l_enc_upg_option VARCHAR2(1);
115121
115122 --
115123 BEGIN
115124 --
115125 IF g_log_enabled THEN
115126 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_209';
115127 END IF;
115128 --
115129 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
115130
115131 trace
115132 (p_msg => 'BEGIN of AcctLineType_209'
115133 ,p_level => C_LEVEL_PROCEDURE
115134 ,p_module => l_log_module);
115135
115136 END IF;
115137 --
115138 l_component_type := 'AMB_JLT';
115139 l_component_code := 'PROFIT_IN_INVENTORY';
115140 l_component_type_code := 'S';
115141 l_component_appl_id := 707;
115142 l_amb_context_code := 'DEFAULT';
115143 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
115144 l_event_class_code := 'FOB_RCPT_RECIPIENT_RCPT';
115145 l_event_type_code := 'FOB_RCPT_RECIPIENT_RCPT_ALL';
115146 l_line_definition_owner_code := 'S';
115147 l_line_definition_code := 'FOB_RCPT_RECIPIENT_RCPT';
115148 --
115149 l_balance_type_code := 'A';
115150 l_segment := NULL;
115151 l_ccid := NULL;
115152 l_adr_transaction_coa_id := NULL;
115153 l_adr_accounting_coa_id := NULL;
115154 l_adr_flexfield_segment_code := NULL;
115155 l_adr_flex_value_set_id := NULL;
115156 l_adr_value_type_code := NULL;
115157 l_adr_value_combination_id := NULL;
115158 l_adr_value_segment_code := NULL;
115159
115160 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
115161 l_bflow_class_code := ''; -- 4219869 Business Flow
115162 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
115163 l_budgetary_control_flag := 'N';
115164
115165 l_bflow_applied_to_amt_idx := NULL; -- 5132302
115166 l_bflow_applied_to_amt := NULL; -- 5132302
115167 l_entered_amt_idx := NULL; -- 4262811
115168 l_accted_amt_idx := NULL; -- 4262811
115169 l_acc_rev_flag := NULL; -- 4262811
115170 l_accrual_line_num := NULL; -- 4262811
115171 l_tmp_amt := NULL; -- 4262811
115172 --
115173
115174 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
115175 l_balance_type_code <> 'B' THEN
115176 IF NVL(p_source_24,9E125) = 30
115177 THEN
115178
115179 --
115180 XLA_AE_LINES_PKG.SetNewLine;
115181
115182 p_balance_type_code := l_balance_type_code;
115183 -- set the flag so later we will know whether the gain loss line needs to be created
115184
115185 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
115186 p_actual_flag :='A';
115187 END IF;
115188
115189 --
115190 -- bulk performance
115191 --
115192 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
115193 p_header_num => 0); -- 4262811
115194 --
115195 -- set accounting line options
115196 --
115197 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
115198 p_natural_side_code => 'D'
115199 , p_gain_or_loss_flag => 'N'
115200 , p_gl_transfer_mode_code => 'S'
115201 , p_acct_entry_type_code => 'A'
115202 , p_switch_side_flag => 'Y'
115203 , p_merge_duplicate_code => 'N'
115204 );
115205 --
115206 l_acc_rev_natural_side_code := 'C'; -- 4262811
115207 --
115208 --
115209 -- set accounting line type info
115210 --
115211 xla_ae_lines_pkg.SetAcctLineType
115212 (p_component_type => l_component_type
115213 ,p_event_type_code => l_event_type_code
115214 ,p_line_definition_owner_code => l_line_definition_owner_code
115215 ,p_line_definition_code => l_line_definition_code
115216 ,p_accounting_line_code => l_component_code
115217 ,p_accounting_line_type_code => l_component_type_code
115218 ,p_accounting_line_appl_id => l_component_appl_id
115219 ,p_amb_context_code => l_amb_context_code
115220 ,p_entity_code => l_entity_code
115221 ,p_event_class_code => l_event_class_code);
115222 --
115223 -- set accounting class
115224 --
115225 xla_ae_lines_pkg.SetAcctClass(
115226 p_accounting_class_code => 'PROFIT_IN_INVENTORY'
115227 , p_ae_header_id => l_ae_header_id
115228 );
115229
115230 --
115231 -- set rounding class
115232 --
115233 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
115234 'PROFIT_IN_INVENTORY';
115235
115236 --
115237 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
115238 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
115239 --
115240 -- bulk performance
115241 --
115242 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
115243
115244 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
115245 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
115246
115247 -- 4955764
115248 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
115249 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
115250
115251 -- 4458381 Public Sector Enh
115252
115253 --
115254 -- set accounting attributes for the line type
115255 --
115256 l_entered_amt_idx := 17;
115257 l_accted_amt_idx := 22;
115258 l_bflow_applied_to_amt_idx := NULL; -- 5132302
115259 l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
115260 l_rec_acct_attrs.array_num_value(1) := p_source_6;
115261 l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
115262 l_rec_acct_attrs.array_char_value(2) := p_source_7;
115263 l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
115264 l_rec_acct_attrs.array_char_value(3) := p_source_8;
115265 l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
115266 l_rec_acct_attrs.array_num_value(4) := to_char(p_source_28);
115267 l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
115268 l_rec_acct_attrs.array_num_value(5) := to_char(p_source_29);
115269 l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
115270 l_rec_acct_attrs.array_num_value(6) := to_char(p_source_11);
115271 l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
115272 l_rec_acct_attrs.array_char_value(7) := p_source_12;
115273 l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
115274 l_rec_acct_attrs.array_num_value(8) := TO_NUMBER(p_source_30);
115275 l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
115276 l_rec_acct_attrs.array_num_value(9) := p_source_14;
115277 l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
115278 l_rec_acct_attrs.array_char_value(10) := p_source_15;
115279 l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
115280 l_rec_acct_attrs.array_num_value(11) := p_source_16;
115281 l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
115282 l_rec_acct_attrs.array_num_value(12) := TO_NUMBER(p_source_30);
115283 l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
115284 l_rec_acct_attrs.array_num_value(13) := p_source_14;
115285 l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
115286 l_rec_acct_attrs.array_char_value(14) := p_source_15;
115287 l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
115288 l_rec_acct_attrs.array_num_value(15) := p_source_16;
115289 l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
115290 l_rec_acct_attrs.array_char_value(16) := p_source_27;
115291 l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
115292 l_rec_acct_attrs.array_num_value(17) := p_source_18;
115293 l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
115294 l_rec_acct_attrs.array_char_value(18) := p_source_15;
115295 l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
115296 l_rec_acct_attrs.array_date_value(19) := p_source_19;
115297 l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
115298 l_rec_acct_attrs.array_num_value(20) := p_source_20;
115299 l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
115300 l_rec_acct_attrs.array_char_value(21) := p_source_21;
115301 l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
115302 l_rec_acct_attrs.array_num_value(22) := p_source_22;
115303 l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
115304 l_rec_acct_attrs.array_num_value(23) := p_source_31;
115305 l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
115306 l_rec_acct_attrs.array_num_value(24) := p_source_31;
115307
115308 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
115309 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
115310
115311 ---------------------------------------------------------------------------------------------------------------
115312 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
115313 ---------------------------------------------------------------------------------------------------------------
115314 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
115315
115316 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
115317 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
115318
115319 IF xla_accounting_cache_pkg.GetValueChar
115320 (p_source_code => 'LEDGER_CATEGORY_CODE'
115321 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
115322 AND l_bflow_method_code = 'PRIOR_ENTRY'
115323 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
115324 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
115325 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
115326 )
115327 THEN
115328 xla_ae_lines_pkg.BflowUpgEntry
115329 (p_business_method_code => l_bflow_method_code
115330 ,p_business_class_code => l_bflow_class_code
115331 ,p_balance_type => l_balance_type_code);
115332 ELSE
115333 NULL;
115334 -- No business flow processing for business flow method of NONE.
115335 END IF;
115336
115337 --
115338 -- call analytical criteria
115339 --
115340
115341 --
115342 -- call description
115343 --
115344 -- No description or it is inherited.
115345 --
115346 -- call ADRs
115347 -- Bug 4922099
115348 --
115349 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
115350 (NVL(l_actual_upg_option, 'N') = 'O') OR
115351 (NVL(l_enc_upg_option, 'N') = 'O')
115352 )
115353 THEN
115354 NULL;
115355 --
115356 --
115357
115358 l_ccid := AcctDerRule_4(
115359 p_application_id => p_application_id
115360 , p_ae_header_id => l_ae_header_id
115361 , p_source_4 => p_source_4
115362 , x_transaction_coa_id => l_adr_transaction_coa_id
115363 , x_accounting_coa_id => l_adr_accounting_coa_id
115364 , x_value_type_code => l_adr_value_type_code
115365 , p_side => 'NA'
115366 );
115367
115368 xla_ae_lines_pkg.set_ccid(
115369 p_code_combination_id => l_ccid
115370 , p_value_type_code => l_adr_value_type_code
115371 , p_transaction_coa_id => l_adr_transaction_coa_id
115372 , p_accounting_coa_id => l_adr_accounting_coa_id
115373 , p_adr_code => 'CST_DEFAULT'
115374 , p_adr_type_code => 'S'
115375 , p_component_type => l_component_type
115376 , p_component_code => l_component_code
115377 , p_component_type_code => l_component_type_code
115378 , p_component_appl_id => l_component_appl_id
115379 , p_amb_context_code => l_amb_context_code
115380 , p_side => 'NA'
115381 );
115382
115383
115384 --
115385 --
115386 END IF;
115387 --
115388 -- Bug 4922099
115389 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
115390 (NVL(l_enc_upg_option, 'N') = 'O')
115391 ) AND
115392 (l_bflow_method_code = 'PRIOR_ENTRY')
115393 )
115394 THEN
115395 IF
115396 --
115397 1 = 2
115398 --
115399 THEN
115400 xla_accounting_err_pkg.build_message
115401 (p_appli_s_name => 'XLA'
115402 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
115403 ,p_token_1 => 'LINE_NUMBER'
115404 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
115405 ,p_token_2 => 'LINE_TYPE_NAME'
115406 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
115407 l_component_type
115408 ,l_component_code
115409 ,l_component_type_code
115410 ,l_component_appl_id
115411 ,l_amb_context_code
115412 ,l_entity_code
115413 ,l_event_class_code
115414 )
115415 ,p_token_3 => 'OWNER'
115416 ,p_value_3 => xla_lookups_pkg.get_meaning(
115417 p_lookup_type => 'XLA_OWNER_TYPE'
115418 ,p_lookup_code => l_component_type_code
115419 )
115420 ,p_token_4 => 'PRODUCT_NAME'
115421 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
115422 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
115423 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
115424 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
115425 ,p_ae_header_id => NULL
115426 );
115427
115428 IF (C_LEVEL_ERROR>= g_log_level) THEN
115429 trace
115430 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
115431 ,p_level => C_LEVEL_ERROR
115432 ,p_module => l_log_module);
115433 END IF;
115434 END IF;
115435 END IF;
115436 --
115437 --
115438 ------------------------------------------------------------------------------------------------
115439 -- 4219869 Business Flow
115440 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
115441 -- Prior Entry. Currently, the following code is always generated.
115442 ------------------------------------------------------------------------------------------------
115443 XLA_AE_LINES_PKG.ValidateCurrentLine;
115444
115445 ------------------------------------------------------------------------------------
115446 -- 4219869 Business Flow
115447 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
115448 ------------------------------------------------------------------------------------
115449 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
115450
115451 ----------------------------------------------------------------------------------
115452 -- 4219869 Business Flow
115453 -- Update journal entry status -- Need to generate this within IF <condition>
115454 ----------------------------------------------------------------------------------
115455 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
115456 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
115457 ,p_balance_type_code => l_balance_type_code
115458 );
115459
115460 -------------------------------------------------------------------------------------------
115461 -- 4262811 - Generate the Accrual Reversal lines
115462 -------------------------------------------------------------------------------------------
115463 BEGIN
115464 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
115465 (g_array_event(p_event_id).array_value_num('header_index'));
115466 IF l_acc_rev_flag IS NULL THEN
115467 l_acc_rev_flag := 'N';
115468 END IF;
115469 EXCEPTION
115470 WHEN OTHERS THEN
115471 l_acc_rev_flag := 'N';
115472 END;
115473 --
115474 IF (l_acc_rev_flag = 'Y') THEN
115475
115476 -- 4645092 ------------------------------------------------------------------------------
115477 -- To allow MPA report to determine if it should generate report process
115478 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
115479 ------------------------------------------------------------------------------------------
115480
115481 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
115482 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
115483 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
115484 -- call ADRs
115485 -- Bug 4922099
115486 --
115487 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
115488 (NVL(l_actual_upg_option, 'N') = 'O') OR
115489 (NVL(l_enc_upg_option, 'N') = 'O')
115490 )
115491 THEN
115492 NULL;
115493 --
115494 --
115495
115496 l_ccid := AcctDerRule_4(
115497 p_application_id => p_application_id
115498 , p_ae_header_id => l_ae_header_id
115499 , p_source_4 => p_source_4
115500 , x_transaction_coa_id => l_adr_transaction_coa_id
115501 , x_accounting_coa_id => l_adr_accounting_coa_id
115502 , x_value_type_code => l_adr_value_type_code
115503 , p_side => 'NA'
115504 );
115505
115506 xla_ae_lines_pkg.set_ccid(
115507 p_code_combination_id => l_ccid
115508 , p_value_type_code => l_adr_value_type_code
115509 , p_transaction_coa_id => l_adr_transaction_coa_id
115510 , p_accounting_coa_id => l_adr_accounting_coa_id
115511 , p_adr_code => 'CST_DEFAULT'
115512 , p_adr_type_code => 'S'
115513 , p_component_type => l_component_type
115514 , p_component_code => l_component_code
115515 , p_component_type_code => l_component_type_code
115516 , p_component_appl_id => l_component_appl_id
115517 , p_amb_context_code => l_amb_context_code
115518 , p_side => 'NA'
115519 );
115520
115521
115522 --
115523 --
115524 END IF;
115525
115526 --
115527 -- Update the line information that should be overwritten
115528 --
115529 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
115530 p_header_num => 1);
115531 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
115532
115533 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
115534
115535 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
115536 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
115537 END IF;
115538
115539 --
115540 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
115541 --
115542 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
115543 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
115544 ELSE
115545 ---------------------------------------------------------------------------------------------------
115546 -- 4262811a Switch Sign
115547 ---------------------------------------------------------------------------------------------------
115548 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
115549 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
115550 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
115551 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
115552 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
115553 -- 5132302
115554 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
115555 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
115556
115557 END IF;
115558
115559 -- 4955764
115560 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
115561 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
115562
115563
115564 XLA_AE_LINES_PKG.ValidateCurrentLine;
115565 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
115566
115567 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
115568 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
115569 ,p_balance_type_code => l_balance_type_code);
115570
115571 END IF;
115572
115573 -----------------------------------------------------------------------------------------
115574 -- 4262811 Multiperiod Accounting
115575 -----------------------------------------------------------------------------------------
115576 -- No MPA option is assigned.
115577
115578
115579 END IF;
115580 END IF;
115581 --
115582
115583 --
115584 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
115585 trace
115586 (p_msg => 'END of AcctLineType_209'
115587 ,p_level => C_LEVEL_PROCEDURE
115588 ,p_module => l_log_module);
115589 END IF;
115590 --
115591 EXCEPTION
115592 WHEN xla_exceptions_pkg.application_exception THEN
115593 RAISE;
115594 WHEN OTHERS THEN
115595 xla_exceptions_pkg.raise_message
115596 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_209');
115597 END AcctLineType_209;
115598 --
115599
115600 ---------------------------------------
115601 --
115602 -- PRIVATE FUNCTION
115603 -- AcctLineType_210
115604 --
115605 ---------------------------------------
115606 PROCEDURE AcctLineType_210 (
115607 p_application_id IN NUMBER
115608 ,p_event_id IN NUMBER
115609 ,p_calculate_acctd_flag IN VARCHAR2
115610 ,p_calculate_g_l_flag IN VARCHAR2
115611 ,p_actual_flag IN OUT VARCHAR2
115612 ,p_balance_type_code OUT VARCHAR2
115613 ,p_gain_or_loss_ref OUT VARCHAR2
115614
115615 --Cost Management Default Account
115616 , p_source_4 IN NUMBER
115617 --DISTRIBUTION_IDENTIFIER
115618 , p_source_11 IN NUMBER
115619 --Distribution Type
115620 , p_source_12 IN VARCHAR2
115621 , p_source_12_meaning IN VARCHAR2
115622 --Entered Currency Code
115623 , p_source_15 IN VARCHAR2
115624 --Entered Amount
115625 , p_source_18 IN NUMBER
115626 --Currency Conversion Date
115627 , p_source_19 IN DATE
115628 --Currency Conversion Rate
115629 , p_source_20 IN NUMBER
115630 --Currency Conversion Type
115631 , p_source_21 IN VARCHAR2
115632 --Accounted Amount
115633 , p_source_22 IN NUMBER
115634 --Accounting Line Type
115635 , p_source_24 IN NUMBER
115636 )
115637 IS
115638
115639 l_component_type VARCHAR2(80);
115640 l_component_code VARCHAR2(30);
115641 l_component_type_code VARCHAR2(1);
115642 l_component_appl_id INTEGER;
115643 l_amb_context_code VARCHAR2(30);
115644 l_entity_code VARCHAR2(30);
115645 l_event_class_code VARCHAR2(30);
115646 l_ae_header_id NUMBER;
115647 l_event_type_code VARCHAR2(30);
115648 l_line_definition_code VARCHAR2(30);
115649 l_line_definition_owner_code VARCHAR2(1);
115650 --
115651 -- adr variables
115652 l_segment VARCHAR2(30);
115653 l_ccid NUMBER;
115654 l_adr_transaction_coa_id NUMBER;
115655 l_adr_accounting_coa_id NUMBER;
115656 l_adr_flexfield_segment_code VARCHAR2(30);
115657 l_adr_flex_value_set_id NUMBER;
115658 l_adr_value_type_code VARCHAR2(30);
115659 l_adr_value_combination_id NUMBER;
115660 l_adr_value_segment_code VARCHAR2(30);
115661
115662 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
115663 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
115664 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
115665 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
115666
115667 -- 4262811 Variables ------------------------------------------------------------------------------------------
115668 l_entered_amt_idx NUMBER;
115669 l_accted_amt_idx NUMBER;
115670 l_acc_rev_flag VARCHAR2(1);
115671 l_accrual_line_num NUMBER;
115672 l_tmp_amt NUMBER;
115673 l_acc_rev_natural_side_code VARCHAR2(1);
115674
115675 l_num_entries NUMBER;
115676 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
115677 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
115678 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
115679 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
115680 l_recog_line_1 NUMBER;
115681 l_recog_line_2 NUMBER;
115682
115683 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
115684 l_bflow_applied_to_amt NUMBER; -- 5132302
115685 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
115686
115687 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
115688
115689 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
115690 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
115691
115692 ---------------------------------------------------------------------------------------------------------------
115693
115694
115695 --
115696 -- bulk performance
115697 --
115698 l_balance_type_code VARCHAR2(1);
115699 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
115700 l_log_module VARCHAR2(240);
115701
115702 --
115703 -- Upgrade strategy
115704 --
115705 l_actual_upg_option VARCHAR2(1);
115706 l_enc_upg_option VARCHAR2(1);
115707
115708 --
115709 BEGIN
115710 --
115711 IF g_log_enabled THEN
115712 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_210';
115713 END IF;
115714 --
115715 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
115716
115717 trace
115718 (p_msg => 'BEGIN of AcctLineType_210'
115719 ,p_level => C_LEVEL_PROCEDURE
115720 ,p_module => l_log_module);
115721
115722 END IF;
115723 --
115724 l_component_type := 'AMB_JLT';
115725 l_component_code := 'PROFIT_IN_INVENTORY';
115726 l_component_type_code := 'S';
115727 l_component_appl_id := 707;
115728 l_amb_context_code := 'DEFAULT';
115729 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
115730 l_event_class_code := 'USER_DEFINE';
115731 l_event_type_code := 'UFOB_SHIP_RECIPIENT_SHIP_NO_TP';
115732 l_line_definition_owner_code := 'S';
115733 l_line_definition_code := 'USER_FOB_SHIP_RECP_SHIP_NO_TP';
115734 --
115735 l_balance_type_code := 'A';
115736 l_segment := NULL;
115737 l_ccid := NULL;
115738 l_adr_transaction_coa_id := NULL;
115739 l_adr_accounting_coa_id := NULL;
115740 l_adr_flexfield_segment_code := NULL;
115741 l_adr_flex_value_set_id := NULL;
115742 l_adr_value_type_code := NULL;
115743 l_adr_value_combination_id := NULL;
115744 l_adr_value_segment_code := NULL;
115745
115746 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
115747 l_bflow_class_code := ''; -- 4219869 Business Flow
115748 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
115749 l_budgetary_control_flag := 'N';
115750
115751 l_bflow_applied_to_amt_idx := NULL; -- 5132302
115752 l_bflow_applied_to_amt := NULL; -- 5132302
115753 l_entered_amt_idx := NULL; -- 4262811
115754 l_accted_amt_idx := NULL; -- 4262811
115755 l_acc_rev_flag := NULL; -- 4262811
115756 l_accrual_line_num := NULL; -- 4262811
115757 l_tmp_amt := NULL; -- 4262811
115758 --
115759
115760 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
115761 l_balance_type_code <> 'B' THEN
115762 IF NVL(p_source_24,9E125) = 30
115763 THEN
115764
115765 --
115766 XLA_AE_LINES_PKG.SetNewLine;
115767
115768 p_balance_type_code := l_balance_type_code;
115769 -- set the flag so later we will know whether the gain loss line needs to be created
115770
115771 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
115772 p_actual_flag :='A';
115773 END IF;
115774
115775 --
115776 -- bulk performance
115777 --
115778 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
115779 p_header_num => 0); -- 4262811
115780 --
115781 -- set accounting line options
115782 --
115783 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
115784 p_natural_side_code => 'D'
115785 , p_gain_or_loss_flag => 'N'
115786 , p_gl_transfer_mode_code => 'S'
115787 , p_acct_entry_type_code => 'A'
115788 , p_switch_side_flag => 'Y'
115789 , p_merge_duplicate_code => 'N'
115790 );
115791 --
115792 l_acc_rev_natural_side_code := 'C'; -- 4262811
115793 --
115794 --
115795 -- set accounting line type info
115796 --
115797 xla_ae_lines_pkg.SetAcctLineType
115798 (p_component_type => l_component_type
115799 ,p_event_type_code => l_event_type_code
115800 ,p_line_definition_owner_code => l_line_definition_owner_code
115801 ,p_line_definition_code => l_line_definition_code
115802 ,p_accounting_line_code => l_component_code
115803 ,p_accounting_line_type_code => l_component_type_code
115804 ,p_accounting_line_appl_id => l_component_appl_id
115805 ,p_amb_context_code => l_amb_context_code
115806 ,p_entity_code => l_entity_code
115807 ,p_event_class_code => l_event_class_code);
115808 --
115809 -- set accounting class
115810 --
115811 xla_ae_lines_pkg.SetAcctClass(
115812 p_accounting_class_code => 'PROFIT_IN_INVENTORY'
115813 , p_ae_header_id => l_ae_header_id
115814 );
115815
115816 --
115817 -- set rounding class
115818 --
115819 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
115820 'PROFIT_IN_INVENTORY';
115821
115822 --
115823 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
115824 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
115825 --
115826 -- bulk performance
115827 --
115828 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
115829
115830 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
115831 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
115832
115833 -- 4955764
115834 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
115835 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
115836
115837 -- 4458381 Public Sector Enh
115838
115839 --
115840 -- set accounting attributes for the line type
115841 --
115842 l_entered_amt_idx := 3;
115843 l_accted_amt_idx := 8;
115844 l_bflow_applied_to_amt_idx := NULL; -- 5132302
115845 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
115846 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
115847 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
115848 l_rec_acct_attrs.array_char_value(2) := p_source_12;
115849 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
115850 l_rec_acct_attrs.array_num_value(3) := p_source_18;
115851 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
115852 l_rec_acct_attrs.array_char_value(4) := p_source_15;
115853 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
115854 l_rec_acct_attrs.array_date_value(5) := p_source_19;
115855 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
115856 l_rec_acct_attrs.array_num_value(6) := p_source_20;
115857 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
115858 l_rec_acct_attrs.array_char_value(7) := p_source_21;
115859 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
115860 l_rec_acct_attrs.array_num_value(8) := p_source_22;
115861
115862 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
115863 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
115864
115865 ---------------------------------------------------------------------------------------------------------------
115866 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
115867 ---------------------------------------------------------------------------------------------------------------
115868 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
115869
115870 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
115871 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
115872
115873 IF xla_accounting_cache_pkg.GetValueChar
115874 (p_source_code => 'LEDGER_CATEGORY_CODE'
115875 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
115876 AND l_bflow_method_code = 'PRIOR_ENTRY'
115877 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
115878 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
115879 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
115880 )
115881 THEN
115882 xla_ae_lines_pkg.BflowUpgEntry
115883 (p_business_method_code => l_bflow_method_code
115884 ,p_business_class_code => l_bflow_class_code
115885 ,p_balance_type => l_balance_type_code);
115886 ELSE
115887 NULL;
115888 -- No business flow processing for business flow method of NONE.
115889 END IF;
115890
115891 --
115892 -- call analytical criteria
115893 --
115894
115895 --
115896 -- call description
115897 --
115898 -- No description or it is inherited.
115899 --
115900 -- call ADRs
115901 -- Bug 4922099
115902 --
115903 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
115904 (NVL(l_actual_upg_option, 'N') = 'O') OR
115905 (NVL(l_enc_upg_option, 'N') = 'O')
115906 )
115907 THEN
115908 NULL;
115909 --
115910 --
115911
115912 l_ccid := AcctDerRule_4(
115913 p_application_id => p_application_id
115914 , p_ae_header_id => l_ae_header_id
115915 , p_source_4 => p_source_4
115916 , x_transaction_coa_id => l_adr_transaction_coa_id
115917 , x_accounting_coa_id => l_adr_accounting_coa_id
115918 , x_value_type_code => l_adr_value_type_code
115919 , p_side => 'NA'
115920 );
115921
115922 xla_ae_lines_pkg.set_ccid(
115923 p_code_combination_id => l_ccid
115924 , p_value_type_code => l_adr_value_type_code
115925 , p_transaction_coa_id => l_adr_transaction_coa_id
115926 , p_accounting_coa_id => l_adr_accounting_coa_id
115927 , p_adr_code => 'CST_DEFAULT'
115928 , p_adr_type_code => 'S'
115929 , p_component_type => l_component_type
115930 , p_component_code => l_component_code
115931 , p_component_type_code => l_component_type_code
115932 , p_component_appl_id => l_component_appl_id
115933 , p_amb_context_code => l_amb_context_code
115934 , p_side => 'NA'
115935 );
115936
115937
115938 --
115939 --
115940 END IF;
115941 --
115942 -- Bug 4922099
115943 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
115944 (NVL(l_enc_upg_option, 'N') = 'O')
115945 ) AND
115946 (l_bflow_method_code = 'PRIOR_ENTRY')
115947 )
115948 THEN
115949 IF
115950 --
115951 1 = 2
115952 --
115953 THEN
115954 xla_accounting_err_pkg.build_message
115955 (p_appli_s_name => 'XLA'
115956 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
115957 ,p_token_1 => 'LINE_NUMBER'
115958 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
115959 ,p_token_2 => 'LINE_TYPE_NAME'
115960 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
115961 l_component_type
115962 ,l_component_code
115963 ,l_component_type_code
115964 ,l_component_appl_id
115965 ,l_amb_context_code
115966 ,l_entity_code
115967 ,l_event_class_code
115968 )
115969 ,p_token_3 => 'OWNER'
115970 ,p_value_3 => xla_lookups_pkg.get_meaning(
115971 p_lookup_type => 'XLA_OWNER_TYPE'
115972 ,p_lookup_code => l_component_type_code
115973 )
115974 ,p_token_4 => 'PRODUCT_NAME'
115975 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
115976 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
115977 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
115978 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
115979 ,p_ae_header_id => NULL
115980 );
115981
115982 IF (C_LEVEL_ERROR>= g_log_level) THEN
115983 trace
115984 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
115985 ,p_level => C_LEVEL_ERROR
115986 ,p_module => l_log_module);
115987 END IF;
115988 END IF;
115989 END IF;
115990 --
115991 --
115992 ------------------------------------------------------------------------------------------------
115993 -- 4219869 Business Flow
115994 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
115995 -- Prior Entry. Currently, the following code is always generated.
115996 ------------------------------------------------------------------------------------------------
115997 XLA_AE_LINES_PKG.ValidateCurrentLine;
115998
115999 ------------------------------------------------------------------------------------
116000 -- 4219869 Business Flow
116001 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
116002 ------------------------------------------------------------------------------------
116003 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
116004
116005 ----------------------------------------------------------------------------------
116006 -- 4219869 Business Flow
116007 -- Update journal entry status -- Need to generate this within IF <condition>
116008 ----------------------------------------------------------------------------------
116009 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
116010 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
116011 ,p_balance_type_code => l_balance_type_code
116012 );
116013
116014 -------------------------------------------------------------------------------------------
116015 -- 4262811 - Generate the Accrual Reversal lines
116016 -------------------------------------------------------------------------------------------
116017 BEGIN
116018 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
116019 (g_array_event(p_event_id).array_value_num('header_index'));
116020 IF l_acc_rev_flag IS NULL THEN
116021 l_acc_rev_flag := 'N';
116022 END IF;
116023 EXCEPTION
116024 WHEN OTHERS THEN
116025 l_acc_rev_flag := 'N';
116026 END;
116027 --
116028 IF (l_acc_rev_flag = 'Y') THEN
116029
116030 -- 4645092 ------------------------------------------------------------------------------
116031 -- To allow MPA report to determine if it should generate report process
116032 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
116033 ------------------------------------------------------------------------------------------
116034
116035 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
116036 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
116037 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
116038 -- call ADRs
116039 -- Bug 4922099
116040 --
116041 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
116042 (NVL(l_actual_upg_option, 'N') = 'O') OR
116043 (NVL(l_enc_upg_option, 'N') = 'O')
116044 )
116045 THEN
116046 NULL;
116047 --
116048 --
116049
116050 l_ccid := AcctDerRule_4(
116051 p_application_id => p_application_id
116052 , p_ae_header_id => l_ae_header_id
116053 , p_source_4 => p_source_4
116054 , x_transaction_coa_id => l_adr_transaction_coa_id
116055 , x_accounting_coa_id => l_adr_accounting_coa_id
116056 , x_value_type_code => l_adr_value_type_code
116057 , p_side => 'NA'
116058 );
116059
116060 xla_ae_lines_pkg.set_ccid(
116061 p_code_combination_id => l_ccid
116062 , p_value_type_code => l_adr_value_type_code
116063 , p_transaction_coa_id => l_adr_transaction_coa_id
116064 , p_accounting_coa_id => l_adr_accounting_coa_id
116065 , p_adr_code => 'CST_DEFAULT'
116066 , p_adr_type_code => 'S'
116067 , p_component_type => l_component_type
116068 , p_component_code => l_component_code
116069 , p_component_type_code => l_component_type_code
116070 , p_component_appl_id => l_component_appl_id
116071 , p_amb_context_code => l_amb_context_code
116072 , p_side => 'NA'
116073 );
116074
116075
116076 --
116077 --
116078 END IF;
116079
116080 --
116081 -- Update the line information that should be overwritten
116082 --
116083 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
116084 p_header_num => 1);
116085 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
116086
116087 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
116088
116089 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
116090 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
116091 END IF;
116092
116093 --
116094 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
116095 --
116096 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
116097 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
116098 ELSE
116099 ---------------------------------------------------------------------------------------------------
116100 -- 4262811a Switch Sign
116101 ---------------------------------------------------------------------------------------------------
116102 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
116103 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
116104 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
116105 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
116106 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
116107 -- 5132302
116108 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
116109 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
116110
116111 END IF;
116112
116113 -- 4955764
116114 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
116115 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
116116
116117
116118 XLA_AE_LINES_PKG.ValidateCurrentLine;
116119 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
116120
116121 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
116122 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
116123 ,p_balance_type_code => l_balance_type_code);
116124
116125 END IF;
116126
116127 -----------------------------------------------------------------------------------------
116128 -- 4262811 Multiperiod Accounting
116129 -----------------------------------------------------------------------------------------
116130 -- No MPA option is assigned.
116131
116132
116133 END IF;
116134 END IF;
116135 --
116136
116137 --
116138 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
116139 trace
116140 (p_msg => 'END of AcctLineType_210'
116141 ,p_level => C_LEVEL_PROCEDURE
116142 ,p_module => l_log_module);
116143 END IF;
116144 --
116145 EXCEPTION
116146 WHEN xla_exceptions_pkg.application_exception THEN
116147 RAISE;
116148 WHEN OTHERS THEN
116149 xla_exceptions_pkg.raise_message
116150 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_210');
116151 END AcctLineType_210;
116152 --
116153
116154 ---------------------------------------
116155 --
116156 -- PRIVATE FUNCTION
116157 -- AcctLineType_211
116158 --
116159 ---------------------------------------
116160 PROCEDURE AcctLineType_211 (
116161 p_application_id IN NUMBER
116162 ,p_event_id IN NUMBER
116163 ,p_calculate_acctd_flag IN VARCHAR2
116164 ,p_calculate_g_l_flag IN VARCHAR2
116165 ,p_actual_flag IN OUT VARCHAR2
116166 ,p_balance_type_code OUT VARCHAR2
116167 ,p_gain_or_loss_ref OUT VARCHAR2
116168
116169 --Cost Management Default Account
116170 , p_source_4 IN NUMBER
116171 --DISTRIBUTION_IDENTIFIER
116172 , p_source_11 IN NUMBER
116173 --Distribution Type
116174 , p_source_12 IN VARCHAR2
116175 , p_source_12_meaning IN VARCHAR2
116176 --Entered Currency Code
116177 , p_source_15 IN VARCHAR2
116178 --Entered Amount
116179 , p_source_18 IN NUMBER
116180 --Currency Conversion Date
116181 , p_source_19 IN DATE
116182 --Currency Conversion Rate
116183 , p_source_20 IN NUMBER
116184 --Currency Conversion Type
116185 , p_source_21 IN VARCHAR2
116186 --Accounted Amount
116187 , p_source_22 IN NUMBER
116188 --Accounting Line Type
116189 , p_source_24 IN NUMBER
116190 )
116191 IS
116192
116193 l_component_type VARCHAR2(80);
116194 l_component_code VARCHAR2(30);
116195 l_component_type_code VARCHAR2(1);
116196 l_component_appl_id INTEGER;
116197 l_amb_context_code VARCHAR2(30);
116198 l_entity_code VARCHAR2(30);
116199 l_event_class_code VARCHAR2(30);
116200 l_ae_header_id NUMBER;
116201 l_event_type_code VARCHAR2(30);
116202 l_line_definition_code VARCHAR2(30);
116203 l_line_definition_owner_code VARCHAR2(1);
116204 --
116205 -- adr variables
116206 l_segment VARCHAR2(30);
116207 l_ccid NUMBER;
116208 l_adr_transaction_coa_id NUMBER;
116209 l_adr_accounting_coa_id NUMBER;
116210 l_adr_flexfield_segment_code VARCHAR2(30);
116211 l_adr_flex_value_set_id NUMBER;
116212 l_adr_value_type_code VARCHAR2(30);
116213 l_adr_value_combination_id NUMBER;
116214 l_adr_value_segment_code VARCHAR2(30);
116215
116216 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
116217 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
116218 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
116219 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
116220
116221 -- 4262811 Variables ------------------------------------------------------------------------------------------
116222 l_entered_amt_idx NUMBER;
116223 l_accted_amt_idx NUMBER;
116224 l_acc_rev_flag VARCHAR2(1);
116225 l_accrual_line_num NUMBER;
116226 l_tmp_amt NUMBER;
116227 l_acc_rev_natural_side_code VARCHAR2(1);
116228
116229 l_num_entries NUMBER;
116230 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
116231 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
116232 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
116233 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
116234 l_recog_line_1 NUMBER;
116235 l_recog_line_2 NUMBER;
116236
116237 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
116238 l_bflow_applied_to_amt NUMBER; -- 5132302
116239 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
116240
116241 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
116242
116243 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
116244 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
116245
116246 ---------------------------------------------------------------------------------------------------------------
116247
116248
116249 --
116250 -- bulk performance
116251 --
116252 l_balance_type_code VARCHAR2(1);
116253 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
116254 l_log_module VARCHAR2(240);
116255
116256 --
116257 -- Upgrade strategy
116258 --
116259 l_actual_upg_option VARCHAR2(1);
116260 l_enc_upg_option VARCHAR2(1);
116261
116262 --
116263 BEGIN
116264 --
116265 IF g_log_enabled THEN
116266 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_211';
116267 END IF;
116268 --
116269 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
116270
116271 trace
116272 (p_msg => 'BEGIN of AcctLineType_211'
116273 ,p_level => C_LEVEL_PROCEDURE
116274 ,p_module => l_log_module);
116275
116276 END IF;
116277 --
116278 l_component_type := 'AMB_JLT';
116279 l_component_code := 'PURCHASE_PRICE_VARIANCE';
116280 l_component_type_code := 'S';
116281 l_component_appl_id := 707;
116282 l_amb_context_code := 'DEFAULT';
116283 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
116284 l_event_class_code := 'CON_INV_OWNR_TXFR';
116285 l_event_type_code := 'CON_INV_OWNR_TXFR_ALL';
116286 l_line_definition_owner_code := 'S';
116287 l_line_definition_code := 'CON_INV_OWNR_TXFR';
116288 --
116289 l_balance_type_code := 'A';
116290 l_segment := NULL;
116291 l_ccid := NULL;
116292 l_adr_transaction_coa_id := NULL;
116293 l_adr_accounting_coa_id := NULL;
116294 l_adr_flexfield_segment_code := NULL;
116295 l_adr_flex_value_set_id := NULL;
116296 l_adr_value_type_code := NULL;
116297 l_adr_value_combination_id := NULL;
116298 l_adr_value_segment_code := NULL;
116299
116300 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
116301 l_bflow_class_code := ''; -- 4219869 Business Flow
116302 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
116303 l_budgetary_control_flag := 'N';
116304
116305 l_bflow_applied_to_amt_idx := NULL; -- 5132302
116306 l_bflow_applied_to_amt := NULL; -- 5132302
116307 l_entered_amt_idx := NULL; -- 4262811
116308 l_accted_amt_idx := NULL; -- 4262811
116309 l_acc_rev_flag := NULL; -- 4262811
116310 l_accrual_line_num := NULL; -- 4262811
116311 l_tmp_amt := NULL; -- 4262811
116312 --
116313
116314 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
116315 l_balance_type_code <> 'B' THEN
116316 IF NVL(p_source_24,9E125) = 6
116317 THEN
116318
116319 --
116320 XLA_AE_LINES_PKG.SetNewLine;
116321
116322 p_balance_type_code := l_balance_type_code;
116323 -- set the flag so later we will know whether the gain loss line needs to be created
116324
116325 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
116326 p_actual_flag :='A';
116327 END IF;
116328
116329 --
116330 -- bulk performance
116331 --
116332 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
116333 p_header_num => 0); -- 4262811
116334 --
116335 -- set accounting line options
116336 --
116337 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
116338 p_natural_side_code => 'D'
116339 , p_gain_or_loss_flag => 'N'
116340 , p_gl_transfer_mode_code => 'S'
116341 , p_acct_entry_type_code => 'A'
116342 , p_switch_side_flag => 'Y'
116343 , p_merge_duplicate_code => 'N'
116344 );
116345 --
116346 l_acc_rev_natural_side_code := 'C'; -- 4262811
116347 --
116348 --
116349 -- set accounting line type info
116350 --
116351 xla_ae_lines_pkg.SetAcctLineType
116352 (p_component_type => l_component_type
116353 ,p_event_type_code => l_event_type_code
116354 ,p_line_definition_owner_code => l_line_definition_owner_code
116355 ,p_line_definition_code => l_line_definition_code
116356 ,p_accounting_line_code => l_component_code
116357 ,p_accounting_line_type_code => l_component_type_code
116358 ,p_accounting_line_appl_id => l_component_appl_id
116359 ,p_amb_context_code => l_amb_context_code
116360 ,p_entity_code => l_entity_code
116361 ,p_event_class_code => l_event_class_code);
116362 --
116363 -- set accounting class
116364 --
116365 xla_ae_lines_pkg.SetAcctClass(
116366 p_accounting_class_code => 'PURCHASE_PRICE_VARIANCE'
116367 , p_ae_header_id => l_ae_header_id
116368 );
116369
116370 --
116371 -- set rounding class
116372 --
116373 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
116374 'PURCHASE_PRICE_VARIANCE';
116375
116376 --
116377 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
116378 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
116379 --
116380 -- bulk performance
116381 --
116382 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
116383
116384 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
116385 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
116386
116387 -- 4955764
116388 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
116389 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
116390
116391 -- 4458381 Public Sector Enh
116392
116393 --
116394 -- set accounting attributes for the line type
116395 --
116396 l_entered_amt_idx := 3;
116397 l_accted_amt_idx := 8;
116398 l_bflow_applied_to_amt_idx := NULL; -- 5132302
116399 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
116400 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
116401 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
116402 l_rec_acct_attrs.array_char_value(2) := p_source_12;
116403 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
116404 l_rec_acct_attrs.array_num_value(3) := p_source_18;
116405 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
116406 l_rec_acct_attrs.array_char_value(4) := p_source_15;
116407 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
116408 l_rec_acct_attrs.array_date_value(5) := p_source_19;
116409 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
116410 l_rec_acct_attrs.array_num_value(6) := p_source_20;
116411 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
116412 l_rec_acct_attrs.array_char_value(7) := p_source_21;
116413 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
116414 l_rec_acct_attrs.array_num_value(8) := p_source_22;
116415
116416 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
116417 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
116418
116419 ---------------------------------------------------------------------------------------------------------------
116420 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
116421 ---------------------------------------------------------------------------------------------------------------
116422 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
116423
116424 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
116425 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
116426
116427 IF xla_accounting_cache_pkg.GetValueChar
116428 (p_source_code => 'LEDGER_CATEGORY_CODE'
116429 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
116430 AND l_bflow_method_code = 'PRIOR_ENTRY'
116431 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
116432 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
116433 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
116434 )
116435 THEN
116436 xla_ae_lines_pkg.BflowUpgEntry
116437 (p_business_method_code => l_bflow_method_code
116438 ,p_business_class_code => l_bflow_class_code
116439 ,p_balance_type => l_balance_type_code);
116440 ELSE
116441 NULL;
116442 -- No business flow processing for business flow method of NONE.
116443 END IF;
116444
116445 --
116446 -- call analytical criteria
116447 --
116448
116449 --
116450 -- call description
116451 --
116452 -- No description or it is inherited.
116453 --
116454 -- call ADRs
116455 -- Bug 4922099
116456 --
116457 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
116458 (NVL(l_actual_upg_option, 'N') = 'O') OR
116459 (NVL(l_enc_upg_option, 'N') = 'O')
116460 )
116461 THEN
116462 NULL;
116463 --
116464 --
116465
116466 l_ccid := AcctDerRule_4(
116467 p_application_id => p_application_id
116468 , p_ae_header_id => l_ae_header_id
116469 , p_source_4 => p_source_4
116470 , x_transaction_coa_id => l_adr_transaction_coa_id
116471 , x_accounting_coa_id => l_adr_accounting_coa_id
116472 , x_value_type_code => l_adr_value_type_code
116473 , p_side => 'NA'
116474 );
116475
116476 xla_ae_lines_pkg.set_ccid(
116477 p_code_combination_id => l_ccid
116478 , p_value_type_code => l_adr_value_type_code
116479 , p_transaction_coa_id => l_adr_transaction_coa_id
116480 , p_accounting_coa_id => l_adr_accounting_coa_id
116481 , p_adr_code => 'CST_DEFAULT'
116482 , p_adr_type_code => 'S'
116483 , p_component_type => l_component_type
116484 , p_component_code => l_component_code
116485 , p_component_type_code => l_component_type_code
116486 , p_component_appl_id => l_component_appl_id
116487 , p_amb_context_code => l_amb_context_code
116488 , p_side => 'NA'
116489 );
116490
116491
116492 --
116493 --
116494 END IF;
116495 --
116496 -- Bug 4922099
116497 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
116498 (NVL(l_enc_upg_option, 'N') = 'O')
116499 ) AND
116500 (l_bflow_method_code = 'PRIOR_ENTRY')
116501 )
116502 THEN
116503 IF
116504 --
116505 1 = 2
116506 --
116507 THEN
116508 xla_accounting_err_pkg.build_message
116509 (p_appli_s_name => 'XLA'
116510 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
116511 ,p_token_1 => 'LINE_NUMBER'
116512 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
116513 ,p_token_2 => 'LINE_TYPE_NAME'
116514 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
116515 l_component_type
116516 ,l_component_code
116517 ,l_component_type_code
116518 ,l_component_appl_id
116519 ,l_amb_context_code
116520 ,l_entity_code
116521 ,l_event_class_code
116522 )
116523 ,p_token_3 => 'OWNER'
116524 ,p_value_3 => xla_lookups_pkg.get_meaning(
116525 p_lookup_type => 'XLA_OWNER_TYPE'
116526 ,p_lookup_code => l_component_type_code
116527 )
116528 ,p_token_4 => 'PRODUCT_NAME'
116529 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
116530 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
116531 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
116532 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
116533 ,p_ae_header_id => NULL
116534 );
116535
116536 IF (C_LEVEL_ERROR>= g_log_level) THEN
116537 trace
116538 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
116539 ,p_level => C_LEVEL_ERROR
116540 ,p_module => l_log_module);
116541 END IF;
116542 END IF;
116543 END IF;
116544 --
116545 --
116546 ------------------------------------------------------------------------------------------------
116547 -- 4219869 Business Flow
116548 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
116549 -- Prior Entry. Currently, the following code is always generated.
116550 ------------------------------------------------------------------------------------------------
116551 XLA_AE_LINES_PKG.ValidateCurrentLine;
116552
116553 ------------------------------------------------------------------------------------
116554 -- 4219869 Business Flow
116555 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
116556 ------------------------------------------------------------------------------------
116557 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
116558
116559 ----------------------------------------------------------------------------------
116560 -- 4219869 Business Flow
116561 -- Update journal entry status -- Need to generate this within IF <condition>
116562 ----------------------------------------------------------------------------------
116563 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
116564 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
116565 ,p_balance_type_code => l_balance_type_code
116566 );
116567
116568 -------------------------------------------------------------------------------------------
116569 -- 4262811 - Generate the Accrual Reversal lines
116570 -------------------------------------------------------------------------------------------
116571 BEGIN
116572 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
116573 (g_array_event(p_event_id).array_value_num('header_index'));
116574 IF l_acc_rev_flag IS NULL THEN
116575 l_acc_rev_flag := 'N';
116576 END IF;
116577 EXCEPTION
116578 WHEN OTHERS THEN
116579 l_acc_rev_flag := 'N';
116580 END;
116581 --
116582 IF (l_acc_rev_flag = 'Y') THEN
116583
116584 -- 4645092 ------------------------------------------------------------------------------
116585 -- To allow MPA report to determine if it should generate report process
116586 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
116587 ------------------------------------------------------------------------------------------
116588
116589 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
116590 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
116591 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
116592 -- call ADRs
116593 -- Bug 4922099
116594 --
116595 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
116596 (NVL(l_actual_upg_option, 'N') = 'O') OR
116597 (NVL(l_enc_upg_option, 'N') = 'O')
116598 )
116599 THEN
116600 NULL;
116601 --
116602 --
116603
116604 l_ccid := AcctDerRule_4(
116605 p_application_id => p_application_id
116606 , p_ae_header_id => l_ae_header_id
116607 , p_source_4 => p_source_4
116608 , x_transaction_coa_id => l_adr_transaction_coa_id
116609 , x_accounting_coa_id => l_adr_accounting_coa_id
116610 , x_value_type_code => l_adr_value_type_code
116611 , p_side => 'NA'
116612 );
116613
116614 xla_ae_lines_pkg.set_ccid(
116615 p_code_combination_id => l_ccid
116616 , p_value_type_code => l_adr_value_type_code
116617 , p_transaction_coa_id => l_adr_transaction_coa_id
116618 , p_accounting_coa_id => l_adr_accounting_coa_id
116619 , p_adr_code => 'CST_DEFAULT'
116620 , p_adr_type_code => 'S'
116621 , p_component_type => l_component_type
116622 , p_component_code => l_component_code
116623 , p_component_type_code => l_component_type_code
116624 , p_component_appl_id => l_component_appl_id
116625 , p_amb_context_code => l_amb_context_code
116626 , p_side => 'NA'
116627 );
116628
116629
116630 --
116631 --
116632 END IF;
116633
116634 --
116635 -- Update the line information that should be overwritten
116636 --
116637 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
116638 p_header_num => 1);
116639 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
116640
116641 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
116642
116643 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
116644 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
116645 END IF;
116646
116647 --
116648 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
116649 --
116650 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
116651 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
116652 ELSE
116653 ---------------------------------------------------------------------------------------------------
116654 -- 4262811a Switch Sign
116655 ---------------------------------------------------------------------------------------------------
116656 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
116657 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
116658 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
116659 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
116660 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
116661 -- 5132302
116662 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
116663 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
116664
116665 END IF;
116666
116667 -- 4955764
116668 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
116669 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
116670
116671
116672 XLA_AE_LINES_PKG.ValidateCurrentLine;
116673 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
116674
116675 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
116676 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
116677 ,p_balance_type_code => l_balance_type_code);
116678
116679 END IF;
116680
116681 -----------------------------------------------------------------------------------------
116682 -- 4262811 Multiperiod Accounting
116683 -----------------------------------------------------------------------------------------
116684 -- No MPA option is assigned.
116685
116686
116687 END IF;
116688 END IF;
116689 --
116690
116691 --
116692 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
116693 trace
116694 (p_msg => 'END of AcctLineType_211'
116695 ,p_level => C_LEVEL_PROCEDURE
116696 ,p_module => l_log_module);
116697 END IF;
116698 --
116699 EXCEPTION
116700 WHEN xla_exceptions_pkg.application_exception THEN
116701 RAISE;
116702 WHEN OTHERS THEN
116703 xla_exceptions_pkg.raise_message
116704 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_211');
116705 END AcctLineType_211;
116706 --
116707
116708 ---------------------------------------
116709 --
116710 -- PRIVATE FUNCTION
116711 -- AcctLineType_212
116712 --
116713 ---------------------------------------
116714 PROCEDURE AcctLineType_212 (
116715 p_application_id IN NUMBER
116716 ,p_event_id IN NUMBER
116717 ,p_calculate_acctd_flag IN VARCHAR2
116718 ,p_calculate_g_l_flag IN VARCHAR2
116719 ,p_actual_flag IN OUT VARCHAR2
116720 ,p_balance_type_code OUT VARCHAR2
116721 ,p_gain_or_loss_ref OUT VARCHAR2
116722
116723 --Cost Management Default Account
116724 , p_source_4 IN NUMBER
116725 --DISTRIBUTION_IDENTIFIER
116726 , p_source_11 IN NUMBER
116727 --Distribution Type
116728 , p_source_12 IN VARCHAR2
116729 , p_source_12_meaning IN VARCHAR2
116730 --Entered Currency Code
116731 , p_source_15 IN VARCHAR2
116732 --Entered Amount
116733 , p_source_18 IN NUMBER
116734 --Currency Conversion Date
116735 , p_source_19 IN DATE
116736 --Currency Conversion Rate
116737 , p_source_20 IN NUMBER
116738 --Currency Conversion Type
116739 , p_source_21 IN VARCHAR2
116740 --Accounted Amount
116741 , p_source_22 IN NUMBER
116742 --Accounting Line Type
116743 , p_source_24 IN NUMBER
116744 )
116745 IS
116746
116747 l_component_type VARCHAR2(80);
116748 l_component_code VARCHAR2(30);
116749 l_component_type_code VARCHAR2(1);
116750 l_component_appl_id INTEGER;
116751 l_amb_context_code VARCHAR2(30);
116752 l_entity_code VARCHAR2(30);
116753 l_event_class_code VARCHAR2(30);
116754 l_ae_header_id NUMBER;
116755 l_event_type_code VARCHAR2(30);
116756 l_line_definition_code VARCHAR2(30);
116757 l_line_definition_owner_code VARCHAR2(1);
116758 --
116759 -- adr variables
116760 l_segment VARCHAR2(30);
116761 l_ccid NUMBER;
116762 l_adr_transaction_coa_id NUMBER;
116763 l_adr_accounting_coa_id NUMBER;
116764 l_adr_flexfield_segment_code VARCHAR2(30);
116765 l_adr_flex_value_set_id NUMBER;
116766 l_adr_value_type_code VARCHAR2(30);
116767 l_adr_value_combination_id NUMBER;
116768 l_adr_value_segment_code VARCHAR2(30);
116769
116770 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
116771 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
116772 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
116773 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
116774
116775 -- 4262811 Variables ------------------------------------------------------------------------------------------
116776 l_entered_amt_idx NUMBER;
116777 l_accted_amt_idx NUMBER;
116778 l_acc_rev_flag VARCHAR2(1);
116779 l_accrual_line_num NUMBER;
116780 l_tmp_amt NUMBER;
116781 l_acc_rev_natural_side_code VARCHAR2(1);
116782
116783 l_num_entries NUMBER;
116784 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
116785 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
116786 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
116787 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
116788 l_recog_line_1 NUMBER;
116789 l_recog_line_2 NUMBER;
116790
116791 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
116792 l_bflow_applied_to_amt NUMBER; -- 5132302
116793 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
116794
116795 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
116796
116797 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
116798 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
116799
116800 ---------------------------------------------------------------------------------------------------------------
116801
116802
116803 --
116804 -- bulk performance
116805 --
116806 l_balance_type_code VARCHAR2(1);
116807 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
116808 l_log_module VARCHAR2(240);
116809
116810 --
116811 -- Upgrade strategy
116812 --
116813 l_actual_upg_option VARCHAR2(1);
116814 l_enc_upg_option VARCHAR2(1);
116815
116816 --
116817 BEGIN
116818 --
116819 IF g_log_enabled THEN
116820 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_212';
116821 END IF;
116822 --
116823 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
116824
116825 trace
116826 (p_msg => 'BEGIN of AcctLineType_212'
116827 ,p_level => C_LEVEL_PROCEDURE
116828 ,p_module => l_log_module);
116829
116830 END IF;
116831 --
116832 l_component_type := 'AMB_JLT';
116833 l_component_code := 'PURCHASE_PRICE_VARIANCE';
116834 l_component_type_code := 'S';
116835 l_component_appl_id := 707;
116836 l_amb_context_code := 'DEFAULT';
116837 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
116838 l_event_class_code := 'USER_DEFINE';
116839 l_event_type_code := 'UDIR_INTERORG_RCPT_TP';
116840 l_line_definition_owner_code := 'S';
116841 l_line_definition_code := 'USER_DIR_INTERORG_RCPT_TP';
116842 --
116843 l_balance_type_code := 'A';
116844 l_segment := NULL;
116845 l_ccid := NULL;
116846 l_adr_transaction_coa_id := NULL;
116847 l_adr_accounting_coa_id := NULL;
116848 l_adr_flexfield_segment_code := NULL;
116849 l_adr_flex_value_set_id := NULL;
116850 l_adr_value_type_code := NULL;
116851 l_adr_value_combination_id := NULL;
116852 l_adr_value_segment_code := NULL;
116853
116854 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
116855 l_bflow_class_code := ''; -- 4219869 Business Flow
116856 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
116857 l_budgetary_control_flag := 'N';
116858
116859 l_bflow_applied_to_amt_idx := NULL; -- 5132302
116860 l_bflow_applied_to_amt := NULL; -- 5132302
116861 l_entered_amt_idx := NULL; -- 4262811
116862 l_accted_amt_idx := NULL; -- 4262811
116863 l_acc_rev_flag := NULL; -- 4262811
116864 l_accrual_line_num := NULL; -- 4262811
116865 l_tmp_amt := NULL; -- 4262811
116866 --
116867
116868 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
116869 l_balance_type_code <> 'B' THEN
116870 IF NVL(p_source_24,9E125) = 6
116871 THEN
116872
116873 --
116874 XLA_AE_LINES_PKG.SetNewLine;
116875
116876 p_balance_type_code := l_balance_type_code;
116877 -- set the flag so later we will know whether the gain loss line needs to be created
116878
116879 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
116880 p_actual_flag :='A';
116881 END IF;
116882
116883 --
116884 -- bulk performance
116885 --
116886 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
116887 p_header_num => 0); -- 4262811
116888 --
116889 -- set accounting line options
116890 --
116891 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
116892 p_natural_side_code => 'D'
116893 , p_gain_or_loss_flag => 'N'
116894 , p_gl_transfer_mode_code => 'S'
116895 , p_acct_entry_type_code => 'A'
116896 , p_switch_side_flag => 'Y'
116897 , p_merge_duplicate_code => 'N'
116898 );
116899 --
116900 l_acc_rev_natural_side_code := 'C'; -- 4262811
116901 --
116902 --
116903 -- set accounting line type info
116904 --
116905 xla_ae_lines_pkg.SetAcctLineType
116906 (p_component_type => l_component_type
116907 ,p_event_type_code => l_event_type_code
116908 ,p_line_definition_owner_code => l_line_definition_owner_code
116909 ,p_line_definition_code => l_line_definition_code
116910 ,p_accounting_line_code => l_component_code
116911 ,p_accounting_line_type_code => l_component_type_code
116912 ,p_accounting_line_appl_id => l_component_appl_id
116913 ,p_amb_context_code => l_amb_context_code
116914 ,p_entity_code => l_entity_code
116915 ,p_event_class_code => l_event_class_code);
116916 --
116917 -- set accounting class
116918 --
116919 xla_ae_lines_pkg.SetAcctClass(
116920 p_accounting_class_code => 'PURCHASE_PRICE_VARIANCE'
116921 , p_ae_header_id => l_ae_header_id
116922 );
116923
116924 --
116925 -- set rounding class
116926 --
116927 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
116928 'PURCHASE_PRICE_VARIANCE';
116929
116930 --
116931 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
116932 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
116933 --
116934 -- bulk performance
116935 --
116936 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
116937
116938 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
116939 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
116940
116941 -- 4955764
116942 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
116943 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
116944
116945 -- 4458381 Public Sector Enh
116946
116947 --
116948 -- set accounting attributes for the line type
116949 --
116950 l_entered_amt_idx := 3;
116951 l_accted_amt_idx := 8;
116952 l_bflow_applied_to_amt_idx := NULL; -- 5132302
116953 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
116954 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
116955 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
116956 l_rec_acct_attrs.array_char_value(2) := p_source_12;
116957 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
116958 l_rec_acct_attrs.array_num_value(3) := p_source_18;
116959 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
116960 l_rec_acct_attrs.array_char_value(4) := p_source_15;
116961 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
116962 l_rec_acct_attrs.array_date_value(5) := p_source_19;
116963 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
116964 l_rec_acct_attrs.array_num_value(6) := p_source_20;
116965 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
116966 l_rec_acct_attrs.array_char_value(7) := p_source_21;
116967 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
116968 l_rec_acct_attrs.array_num_value(8) := p_source_22;
116969
116970 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
116971 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
116972
116973 ---------------------------------------------------------------------------------------------------------------
116974 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
116975 ---------------------------------------------------------------------------------------------------------------
116976 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
116977
116978 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
116979 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
116980
116981 IF xla_accounting_cache_pkg.GetValueChar
116982 (p_source_code => 'LEDGER_CATEGORY_CODE'
116983 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
116984 AND l_bflow_method_code = 'PRIOR_ENTRY'
116985 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
116986 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
116987 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
116988 )
116989 THEN
116990 xla_ae_lines_pkg.BflowUpgEntry
116991 (p_business_method_code => l_bflow_method_code
116992 ,p_business_class_code => l_bflow_class_code
116993 ,p_balance_type => l_balance_type_code);
116994 ELSE
116995 NULL;
116996 -- No business flow processing for business flow method of NONE.
116997 END IF;
116998
116999 --
117000 -- call analytical criteria
117001 --
117002
117003 --
117004 -- call description
117005 --
117006 -- No description or it is inherited.
117007 --
117008 -- call ADRs
117009 -- Bug 4922099
117010 --
117011 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
117012 (NVL(l_actual_upg_option, 'N') = 'O') OR
117013 (NVL(l_enc_upg_option, 'N') = 'O')
117014 )
117015 THEN
117016 NULL;
117017 --
117018 --
117019
117020 l_ccid := AcctDerRule_4(
117021 p_application_id => p_application_id
117022 , p_ae_header_id => l_ae_header_id
117023 , p_source_4 => p_source_4
117024 , x_transaction_coa_id => l_adr_transaction_coa_id
117025 , x_accounting_coa_id => l_adr_accounting_coa_id
117026 , x_value_type_code => l_adr_value_type_code
117027 , p_side => 'NA'
117028 );
117029
117030 xla_ae_lines_pkg.set_ccid(
117031 p_code_combination_id => l_ccid
117032 , p_value_type_code => l_adr_value_type_code
117033 , p_transaction_coa_id => l_adr_transaction_coa_id
117034 , p_accounting_coa_id => l_adr_accounting_coa_id
117035 , p_adr_code => 'CST_DEFAULT'
117036 , p_adr_type_code => 'S'
117037 , p_component_type => l_component_type
117038 , p_component_code => l_component_code
117039 , p_component_type_code => l_component_type_code
117040 , p_component_appl_id => l_component_appl_id
117041 , p_amb_context_code => l_amb_context_code
117042 , p_side => 'NA'
117043 );
117044
117045
117046 --
117047 --
117048 END IF;
117049 --
117050 -- Bug 4922099
117051 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
117052 (NVL(l_enc_upg_option, 'N') = 'O')
117053 ) AND
117054 (l_bflow_method_code = 'PRIOR_ENTRY')
117055 )
117056 THEN
117057 IF
117058 --
117059 1 = 2
117060 --
117061 THEN
117062 xla_accounting_err_pkg.build_message
117063 (p_appli_s_name => 'XLA'
117064 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
117065 ,p_token_1 => 'LINE_NUMBER'
117066 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
117067 ,p_token_2 => 'LINE_TYPE_NAME'
117068 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
117069 l_component_type
117070 ,l_component_code
117071 ,l_component_type_code
117072 ,l_component_appl_id
117073 ,l_amb_context_code
117074 ,l_entity_code
117075 ,l_event_class_code
117076 )
117077 ,p_token_3 => 'OWNER'
117078 ,p_value_3 => xla_lookups_pkg.get_meaning(
117079 p_lookup_type => 'XLA_OWNER_TYPE'
117080 ,p_lookup_code => l_component_type_code
117081 )
117082 ,p_token_4 => 'PRODUCT_NAME'
117083 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
117084 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
117085 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
117086 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
117087 ,p_ae_header_id => NULL
117088 );
117089
117090 IF (C_LEVEL_ERROR>= g_log_level) THEN
117091 trace
117092 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
117093 ,p_level => C_LEVEL_ERROR
117094 ,p_module => l_log_module);
117095 END IF;
117096 END IF;
117097 END IF;
117098 --
117099 --
117100 ------------------------------------------------------------------------------------------------
117101 -- 4219869 Business Flow
117102 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
117103 -- Prior Entry. Currently, the following code is always generated.
117104 ------------------------------------------------------------------------------------------------
117105 XLA_AE_LINES_PKG.ValidateCurrentLine;
117106
117107 ------------------------------------------------------------------------------------
117108 -- 4219869 Business Flow
117109 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
117110 ------------------------------------------------------------------------------------
117111 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
117112
117113 ----------------------------------------------------------------------------------
117114 -- 4219869 Business Flow
117115 -- Update journal entry status -- Need to generate this within IF <condition>
117116 ----------------------------------------------------------------------------------
117117 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
117118 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
117119 ,p_balance_type_code => l_balance_type_code
117120 );
117121
117122 -------------------------------------------------------------------------------------------
117123 -- 4262811 - Generate the Accrual Reversal lines
117124 -------------------------------------------------------------------------------------------
117125 BEGIN
117126 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
117127 (g_array_event(p_event_id).array_value_num('header_index'));
117128 IF l_acc_rev_flag IS NULL THEN
117129 l_acc_rev_flag := 'N';
117130 END IF;
117131 EXCEPTION
117132 WHEN OTHERS THEN
117133 l_acc_rev_flag := 'N';
117134 END;
117135 --
117136 IF (l_acc_rev_flag = 'Y') THEN
117137
117138 -- 4645092 ------------------------------------------------------------------------------
117139 -- To allow MPA report to determine if it should generate report process
117140 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
117141 ------------------------------------------------------------------------------------------
117142
117143 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
117144 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
117145 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
117146 -- call ADRs
117147 -- Bug 4922099
117148 --
117149 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
117150 (NVL(l_actual_upg_option, 'N') = 'O') OR
117151 (NVL(l_enc_upg_option, 'N') = 'O')
117152 )
117153 THEN
117154 NULL;
117155 --
117156 --
117157
117158 l_ccid := AcctDerRule_4(
117159 p_application_id => p_application_id
117160 , p_ae_header_id => l_ae_header_id
117161 , p_source_4 => p_source_4
117162 , x_transaction_coa_id => l_adr_transaction_coa_id
117163 , x_accounting_coa_id => l_adr_accounting_coa_id
117164 , x_value_type_code => l_adr_value_type_code
117165 , p_side => 'NA'
117166 );
117167
117168 xla_ae_lines_pkg.set_ccid(
117169 p_code_combination_id => l_ccid
117170 , p_value_type_code => l_adr_value_type_code
117171 , p_transaction_coa_id => l_adr_transaction_coa_id
117172 , p_accounting_coa_id => l_adr_accounting_coa_id
117173 , p_adr_code => 'CST_DEFAULT'
117174 , p_adr_type_code => 'S'
117175 , p_component_type => l_component_type
117176 , p_component_code => l_component_code
117177 , p_component_type_code => l_component_type_code
117178 , p_component_appl_id => l_component_appl_id
117179 , p_amb_context_code => l_amb_context_code
117180 , p_side => 'NA'
117181 );
117182
117183
117184 --
117185 --
117186 END IF;
117187
117188 --
117189 -- Update the line information that should be overwritten
117190 --
117191 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
117192 p_header_num => 1);
117193 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
117194
117195 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
117196
117197 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
117198 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
117199 END IF;
117200
117201 --
117202 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
117203 --
117204 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
117205 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
117206 ELSE
117207 ---------------------------------------------------------------------------------------------------
117208 -- 4262811a Switch Sign
117209 ---------------------------------------------------------------------------------------------------
117210 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
117211 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
117212 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
117213 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
117214 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
117215 -- 5132302
117216 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
117217 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
117218
117219 END IF;
117220
117221 -- 4955764
117222 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
117223 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
117224
117225
117226 XLA_AE_LINES_PKG.ValidateCurrentLine;
117227 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
117228
117229 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
117230 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
117231 ,p_balance_type_code => l_balance_type_code);
117232
117233 END IF;
117234
117235 -----------------------------------------------------------------------------------------
117236 -- 4262811 Multiperiod Accounting
117237 -----------------------------------------------------------------------------------------
117238 -- No MPA option is assigned.
117239
117240
117241 END IF;
117242 END IF;
117243 --
117244
117245 --
117246 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
117247 trace
117248 (p_msg => 'END of AcctLineType_212'
117249 ,p_level => C_LEVEL_PROCEDURE
117250 ,p_module => l_log_module);
117251 END IF;
117252 --
117253 EXCEPTION
117254 WHEN xla_exceptions_pkg.application_exception THEN
117255 RAISE;
117256 WHEN OTHERS THEN
117257 xla_exceptions_pkg.raise_message
117258 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_212');
117259 END AcctLineType_212;
117260 --
117261
117262 ---------------------------------------
117263 --
117264 -- PRIVATE FUNCTION
117265 -- AcctLineType_213
117266 --
117267 ---------------------------------------
117268 PROCEDURE AcctLineType_213 (
117269 p_application_id IN NUMBER
117270 ,p_event_id IN NUMBER
117271 ,p_calculate_acctd_flag IN VARCHAR2
117272 ,p_calculate_g_l_flag IN VARCHAR2
117273 ,p_actual_flag IN OUT VARCHAR2
117274 ,p_balance_type_code OUT VARCHAR2
117275 ,p_gain_or_loss_ref OUT VARCHAR2
117276
117277 --Cost Management Default Account
117278 , p_source_4 IN NUMBER
117279 --DISTRIBUTION_IDENTIFIER
117280 , p_source_11 IN NUMBER
117281 --Distribution Type
117282 , p_source_12 IN VARCHAR2
117283 , p_source_12_meaning IN VARCHAR2
117284 --Entered Currency Code
117285 , p_source_15 IN VARCHAR2
117286 --Entered Amount
117287 , p_source_18 IN NUMBER
117288 --Currency Conversion Date
117289 , p_source_19 IN DATE
117290 --Currency Conversion Rate
117291 , p_source_20 IN NUMBER
117292 --Currency Conversion Type
117293 , p_source_21 IN VARCHAR2
117294 --Accounted Amount
117295 , p_source_22 IN NUMBER
117296 --Accounting Line Type
117297 , p_source_24 IN NUMBER
117298 )
117299 IS
117300
117301 l_component_type VARCHAR2(80);
117302 l_component_code VARCHAR2(30);
117303 l_component_type_code VARCHAR2(1);
117304 l_component_appl_id INTEGER;
117305 l_amb_context_code VARCHAR2(30);
117306 l_entity_code VARCHAR2(30);
117307 l_event_class_code VARCHAR2(30);
117308 l_ae_header_id NUMBER;
117309 l_event_type_code VARCHAR2(30);
117310 l_line_definition_code VARCHAR2(30);
117311 l_line_definition_owner_code VARCHAR2(1);
117312 --
117313 -- adr variables
117314 l_segment VARCHAR2(30);
117315 l_ccid NUMBER;
117316 l_adr_transaction_coa_id NUMBER;
117317 l_adr_accounting_coa_id NUMBER;
117318 l_adr_flexfield_segment_code VARCHAR2(30);
117319 l_adr_flex_value_set_id NUMBER;
117320 l_adr_value_type_code VARCHAR2(30);
117321 l_adr_value_combination_id NUMBER;
117322 l_adr_value_segment_code VARCHAR2(30);
117323
117324 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
117325 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
117326 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
117327 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
117328
117329 -- 4262811 Variables ------------------------------------------------------------------------------------------
117330 l_entered_amt_idx NUMBER;
117331 l_accted_amt_idx NUMBER;
117332 l_acc_rev_flag VARCHAR2(1);
117333 l_accrual_line_num NUMBER;
117334 l_tmp_amt NUMBER;
117335 l_acc_rev_natural_side_code VARCHAR2(1);
117336
117337 l_num_entries NUMBER;
117338 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
117339 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
117340 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
117341 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
117342 l_recog_line_1 NUMBER;
117343 l_recog_line_2 NUMBER;
117344
117345 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
117346 l_bflow_applied_to_amt NUMBER; -- 5132302
117347 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
117348
117349 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
117350
117351 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
117352 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
117353
117354 ---------------------------------------------------------------------------------------------------------------
117355
117356
117357 --
117358 -- bulk performance
117359 --
117360 l_balance_type_code VARCHAR2(1);
117361 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
117362 l_log_module VARCHAR2(240);
117363
117364 --
117365 -- Upgrade strategy
117366 --
117367 l_actual_upg_option VARCHAR2(1);
117368 l_enc_upg_option VARCHAR2(1);
117369
117370 --
117371 BEGIN
117372 --
117373 IF g_log_enabled THEN
117374 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_213';
117375 END IF;
117376 --
117377 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
117378
117379 trace
117380 (p_msg => 'BEGIN of AcctLineType_213'
117381 ,p_level => C_LEVEL_PROCEDURE
117382 ,p_module => l_log_module);
117383
117384 END IF;
117385 --
117386 l_component_type := 'AMB_JLT';
117387 l_component_code := 'PURCHASE_PRICE_VARIANCE';
117388 l_component_type_code := 'S';
117389 l_component_appl_id := 707;
117390 l_amb_context_code := 'DEFAULT';
117391 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
117392 l_event_class_code := 'USER_DEFINE';
117393 l_event_type_code := 'UFOB_SHIP_RECIPIENT_SHIP_TP';
117394 l_line_definition_owner_code := 'S';
117395 l_line_definition_code := 'USER_FOB_SHIP_RECP_SHIP_TP';
117396 --
117397 l_balance_type_code := 'A';
117398 l_segment := NULL;
117399 l_ccid := NULL;
117400 l_adr_transaction_coa_id := NULL;
117401 l_adr_accounting_coa_id := NULL;
117402 l_adr_flexfield_segment_code := NULL;
117403 l_adr_flex_value_set_id := NULL;
117404 l_adr_value_type_code := NULL;
117405 l_adr_value_combination_id := NULL;
117406 l_adr_value_segment_code := NULL;
117407
117408 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
117409 l_bflow_class_code := ''; -- 4219869 Business Flow
117410 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
117411 l_budgetary_control_flag := 'N';
117412
117413 l_bflow_applied_to_amt_idx := NULL; -- 5132302
117414 l_bflow_applied_to_amt := NULL; -- 5132302
117415 l_entered_amt_idx := NULL; -- 4262811
117416 l_accted_amt_idx := NULL; -- 4262811
117417 l_acc_rev_flag := NULL; -- 4262811
117418 l_accrual_line_num := NULL; -- 4262811
117419 l_tmp_amt := NULL; -- 4262811
117420 --
117421
117422 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
117423 l_balance_type_code <> 'B' THEN
117424 IF NVL(p_source_24,9E125) = 6
117425 THEN
117426
117427 --
117428 XLA_AE_LINES_PKG.SetNewLine;
117429
117430 p_balance_type_code := l_balance_type_code;
117431 -- set the flag so later we will know whether the gain loss line needs to be created
117432
117433 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
117434 p_actual_flag :='A';
117435 END IF;
117436
117437 --
117438 -- bulk performance
117439 --
117440 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
117441 p_header_num => 0); -- 4262811
117442 --
117443 -- set accounting line options
117444 --
117445 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
117446 p_natural_side_code => 'D'
117447 , p_gain_or_loss_flag => 'N'
117448 , p_gl_transfer_mode_code => 'S'
117449 , p_acct_entry_type_code => 'A'
117450 , p_switch_side_flag => 'Y'
117451 , p_merge_duplicate_code => 'N'
117452 );
117453 --
117454 l_acc_rev_natural_side_code := 'C'; -- 4262811
117455 --
117456 --
117457 -- set accounting line type info
117458 --
117459 xla_ae_lines_pkg.SetAcctLineType
117460 (p_component_type => l_component_type
117461 ,p_event_type_code => l_event_type_code
117462 ,p_line_definition_owner_code => l_line_definition_owner_code
117463 ,p_line_definition_code => l_line_definition_code
117464 ,p_accounting_line_code => l_component_code
117465 ,p_accounting_line_type_code => l_component_type_code
117466 ,p_accounting_line_appl_id => l_component_appl_id
117467 ,p_amb_context_code => l_amb_context_code
117468 ,p_entity_code => l_entity_code
117469 ,p_event_class_code => l_event_class_code);
117470 --
117471 -- set accounting class
117472 --
117473 xla_ae_lines_pkg.SetAcctClass(
117474 p_accounting_class_code => 'PURCHASE_PRICE_VARIANCE'
117475 , p_ae_header_id => l_ae_header_id
117476 );
117477
117478 --
117479 -- set rounding class
117480 --
117481 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
117482 'PURCHASE_PRICE_VARIANCE';
117483
117484 --
117485 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
117486 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
117487 --
117488 -- bulk performance
117489 --
117490 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
117491
117492 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
117493 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
117494
117495 -- 4955764
117496 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
117497 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
117498
117499 -- 4458381 Public Sector Enh
117500
117501 --
117502 -- set accounting attributes for the line type
117503 --
117504 l_entered_amt_idx := 3;
117505 l_accted_amt_idx := 8;
117506 l_bflow_applied_to_amt_idx := NULL; -- 5132302
117507 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
117508 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
117509 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
117510 l_rec_acct_attrs.array_char_value(2) := p_source_12;
117511 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
117512 l_rec_acct_attrs.array_num_value(3) := p_source_18;
117513 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
117514 l_rec_acct_attrs.array_char_value(4) := p_source_15;
117515 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
117516 l_rec_acct_attrs.array_date_value(5) := p_source_19;
117517 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
117518 l_rec_acct_attrs.array_num_value(6) := p_source_20;
117519 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
117520 l_rec_acct_attrs.array_char_value(7) := p_source_21;
117521 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
117522 l_rec_acct_attrs.array_num_value(8) := p_source_22;
117523
117524 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
117525 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
117526
117527 ---------------------------------------------------------------------------------------------------------------
117528 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
117529 ---------------------------------------------------------------------------------------------------------------
117530 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
117531
117532 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
117533 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
117534
117535 IF xla_accounting_cache_pkg.GetValueChar
117536 (p_source_code => 'LEDGER_CATEGORY_CODE'
117537 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
117538 AND l_bflow_method_code = 'PRIOR_ENTRY'
117539 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
117540 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
117541 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
117542 )
117543 THEN
117544 xla_ae_lines_pkg.BflowUpgEntry
117545 (p_business_method_code => l_bflow_method_code
117546 ,p_business_class_code => l_bflow_class_code
117547 ,p_balance_type => l_balance_type_code);
117548 ELSE
117549 NULL;
117550 -- No business flow processing for business flow method of NONE.
117551 END IF;
117552
117553 --
117554 -- call analytical criteria
117555 --
117556
117557 --
117558 -- call description
117559 --
117560 -- No description or it is inherited.
117561 --
117562 -- call ADRs
117563 -- Bug 4922099
117564 --
117565 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
117566 (NVL(l_actual_upg_option, 'N') = 'O') OR
117567 (NVL(l_enc_upg_option, 'N') = 'O')
117568 )
117569 THEN
117570 NULL;
117571 --
117572 --
117573
117574 l_ccid := AcctDerRule_4(
117575 p_application_id => p_application_id
117576 , p_ae_header_id => l_ae_header_id
117577 , p_source_4 => p_source_4
117578 , x_transaction_coa_id => l_adr_transaction_coa_id
117579 , x_accounting_coa_id => l_adr_accounting_coa_id
117580 , x_value_type_code => l_adr_value_type_code
117581 , p_side => 'NA'
117582 );
117583
117584 xla_ae_lines_pkg.set_ccid(
117585 p_code_combination_id => l_ccid
117586 , p_value_type_code => l_adr_value_type_code
117587 , p_transaction_coa_id => l_adr_transaction_coa_id
117588 , p_accounting_coa_id => l_adr_accounting_coa_id
117589 , p_adr_code => 'CST_DEFAULT'
117590 , p_adr_type_code => 'S'
117591 , p_component_type => l_component_type
117592 , p_component_code => l_component_code
117593 , p_component_type_code => l_component_type_code
117594 , p_component_appl_id => l_component_appl_id
117595 , p_amb_context_code => l_amb_context_code
117596 , p_side => 'NA'
117597 );
117598
117599
117600 --
117601 --
117602 END IF;
117603 --
117604 -- Bug 4922099
117605 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
117606 (NVL(l_enc_upg_option, 'N') = 'O')
117607 ) AND
117608 (l_bflow_method_code = 'PRIOR_ENTRY')
117609 )
117610 THEN
117611 IF
117612 --
117613 1 = 2
117614 --
117615 THEN
117616 xla_accounting_err_pkg.build_message
117617 (p_appli_s_name => 'XLA'
117618 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
117619 ,p_token_1 => 'LINE_NUMBER'
117620 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
117621 ,p_token_2 => 'LINE_TYPE_NAME'
117622 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
117623 l_component_type
117624 ,l_component_code
117625 ,l_component_type_code
117626 ,l_component_appl_id
117627 ,l_amb_context_code
117628 ,l_entity_code
117629 ,l_event_class_code
117630 )
117631 ,p_token_3 => 'OWNER'
117632 ,p_value_3 => xla_lookups_pkg.get_meaning(
117633 p_lookup_type => 'XLA_OWNER_TYPE'
117634 ,p_lookup_code => l_component_type_code
117635 )
117636 ,p_token_4 => 'PRODUCT_NAME'
117637 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
117638 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
117639 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
117640 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
117641 ,p_ae_header_id => NULL
117642 );
117643
117644 IF (C_LEVEL_ERROR>= g_log_level) THEN
117645 trace
117646 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
117647 ,p_level => C_LEVEL_ERROR
117648 ,p_module => l_log_module);
117649 END IF;
117650 END IF;
117651 END IF;
117652 --
117653 --
117654 ------------------------------------------------------------------------------------------------
117655 -- 4219869 Business Flow
117656 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
117657 -- Prior Entry. Currently, the following code is always generated.
117658 ------------------------------------------------------------------------------------------------
117659 XLA_AE_LINES_PKG.ValidateCurrentLine;
117660
117661 ------------------------------------------------------------------------------------
117662 -- 4219869 Business Flow
117663 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
117664 ------------------------------------------------------------------------------------
117665 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
117666
117667 ----------------------------------------------------------------------------------
117668 -- 4219869 Business Flow
117669 -- Update journal entry status -- Need to generate this within IF <condition>
117670 ----------------------------------------------------------------------------------
117671 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
117672 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
117673 ,p_balance_type_code => l_balance_type_code
117674 );
117675
117676 -------------------------------------------------------------------------------------------
117677 -- 4262811 - Generate the Accrual Reversal lines
117678 -------------------------------------------------------------------------------------------
117679 BEGIN
117680 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
117681 (g_array_event(p_event_id).array_value_num('header_index'));
117682 IF l_acc_rev_flag IS NULL THEN
117683 l_acc_rev_flag := 'N';
117684 END IF;
117685 EXCEPTION
117686 WHEN OTHERS THEN
117687 l_acc_rev_flag := 'N';
117688 END;
117689 --
117690 IF (l_acc_rev_flag = 'Y') THEN
117691
117692 -- 4645092 ------------------------------------------------------------------------------
117693 -- To allow MPA report to determine if it should generate report process
117694 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
117695 ------------------------------------------------------------------------------------------
117696
117697 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
117698 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
117699 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
117700 -- call ADRs
117701 -- Bug 4922099
117702 --
117703 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
117704 (NVL(l_actual_upg_option, 'N') = 'O') OR
117705 (NVL(l_enc_upg_option, 'N') = 'O')
117706 )
117707 THEN
117708 NULL;
117709 --
117710 --
117711
117712 l_ccid := AcctDerRule_4(
117713 p_application_id => p_application_id
117714 , p_ae_header_id => l_ae_header_id
117715 , p_source_4 => p_source_4
117716 , x_transaction_coa_id => l_adr_transaction_coa_id
117717 , x_accounting_coa_id => l_adr_accounting_coa_id
117718 , x_value_type_code => l_adr_value_type_code
117719 , p_side => 'NA'
117720 );
117721
117722 xla_ae_lines_pkg.set_ccid(
117723 p_code_combination_id => l_ccid
117724 , p_value_type_code => l_adr_value_type_code
117725 , p_transaction_coa_id => l_adr_transaction_coa_id
117726 , p_accounting_coa_id => l_adr_accounting_coa_id
117727 , p_adr_code => 'CST_DEFAULT'
117728 , p_adr_type_code => 'S'
117729 , p_component_type => l_component_type
117730 , p_component_code => l_component_code
117731 , p_component_type_code => l_component_type_code
117732 , p_component_appl_id => l_component_appl_id
117733 , p_amb_context_code => l_amb_context_code
117734 , p_side => 'NA'
117735 );
117736
117737
117738 --
117739 --
117740 END IF;
117741
117742 --
117743 -- Update the line information that should be overwritten
117744 --
117745 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
117746 p_header_num => 1);
117747 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
117748
117749 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
117750
117751 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
117752 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
117753 END IF;
117754
117755 --
117756 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
117757 --
117758 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
117759 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
117760 ELSE
117761 ---------------------------------------------------------------------------------------------------
117762 -- 4262811a Switch Sign
117763 ---------------------------------------------------------------------------------------------------
117764 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
117765 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
117766 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
117767 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
117768 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
117769 -- 5132302
117770 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
117771 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
117772
117773 END IF;
117774
117775 -- 4955764
117776 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
117777 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
117778
117779
117780 XLA_AE_LINES_PKG.ValidateCurrentLine;
117781 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
117782
117783 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
117784 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
117785 ,p_balance_type_code => l_balance_type_code);
117786
117787 END IF;
117788
117789 -----------------------------------------------------------------------------------------
117790 -- 4262811 Multiperiod Accounting
117791 -----------------------------------------------------------------------------------------
117792 -- No MPA option is assigned.
117793
117794
117795 END IF;
117796 END IF;
117797 --
117798
117799 --
117800 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
117801 trace
117802 (p_msg => 'END of AcctLineType_213'
117803 ,p_level => C_LEVEL_PROCEDURE
117804 ,p_module => l_log_module);
117805 END IF;
117806 --
117807 EXCEPTION
117808 WHEN xla_exceptions_pkg.application_exception THEN
117809 RAISE;
117810 WHEN OTHERS THEN
117811 xla_exceptions_pkg.raise_message
117812 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_213');
117813 END AcctLineType_213;
117814 --
117815
117816 ---------------------------------------
117817 --
117818 -- PRIVATE FUNCTION
117819 -- AcctLineType_214
117820 --
117821 ---------------------------------------
117822 PROCEDURE AcctLineType_214 (
117823 p_application_id IN NUMBER
117824 ,p_event_id IN NUMBER
117825 ,p_calculate_acctd_flag IN VARCHAR2
117826 ,p_calculate_g_l_flag IN VARCHAR2
117827 ,p_actual_flag IN OUT VARCHAR2
117828 ,p_balance_type_code OUT VARCHAR2
117829 ,p_gain_or_loss_ref OUT VARCHAR2
117830
117831 --Cost Management Default Account
117832 , p_source_4 IN NUMBER
117833 --DISTRIBUTION_IDENTIFIER
117834 , p_source_11 IN NUMBER
117835 --Distribution Type
117836 , p_source_12 IN VARCHAR2
117837 , p_source_12_meaning IN VARCHAR2
117838 --Entered Currency Code
117839 , p_source_15 IN VARCHAR2
117840 --Entered Amount
117841 , p_source_18 IN NUMBER
117842 --Currency Conversion Date
117843 , p_source_19 IN DATE
117844 --Currency Conversion Rate
117845 , p_source_20 IN NUMBER
117846 --Accounted Amount
117847 , p_source_22 IN NUMBER
117848 --Accounting Line Type
117849 , p_source_24 IN NUMBER
117850 )
117851 IS
117852
117853 l_component_type VARCHAR2(80);
117854 l_component_code VARCHAR2(30);
117855 l_component_type_code VARCHAR2(1);
117856 l_component_appl_id INTEGER;
117857 l_amb_context_code VARCHAR2(30);
117858 l_entity_code VARCHAR2(30);
117859 l_event_class_code VARCHAR2(30);
117860 l_ae_header_id NUMBER;
117861 l_event_type_code VARCHAR2(30);
117862 l_line_definition_code VARCHAR2(30);
117863 l_line_definition_owner_code VARCHAR2(1);
117864 --
117865 -- adr variables
117866 l_segment VARCHAR2(30);
117867 l_ccid NUMBER;
117868 l_adr_transaction_coa_id NUMBER;
117869 l_adr_accounting_coa_id NUMBER;
117870 l_adr_flexfield_segment_code VARCHAR2(30);
117871 l_adr_flex_value_set_id NUMBER;
117872 l_adr_value_type_code VARCHAR2(30);
117873 l_adr_value_combination_id NUMBER;
117874 l_adr_value_segment_code VARCHAR2(30);
117875
117876 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
117877 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
117878 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
117879 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
117880
117881 -- 4262811 Variables ------------------------------------------------------------------------------------------
117882 l_entered_amt_idx NUMBER;
117883 l_accted_amt_idx NUMBER;
117884 l_acc_rev_flag VARCHAR2(1);
117885 l_accrual_line_num NUMBER;
117886 l_tmp_amt NUMBER;
117887 l_acc_rev_natural_side_code VARCHAR2(1);
117888
117889 l_num_entries NUMBER;
117890 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
117891 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
117892 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
117893 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
117894 l_recog_line_1 NUMBER;
117895 l_recog_line_2 NUMBER;
117896
117897 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
117898 l_bflow_applied_to_amt NUMBER; -- 5132302
117899 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
117900
117901 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
117902
117903 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
117904 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
117905
117906 ---------------------------------------------------------------------------------------------------------------
117907
117908
117909 --
117910 -- bulk performance
117911 --
117912 l_balance_type_code VARCHAR2(1);
117913 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
117914 l_log_module VARCHAR2(240);
117915
117916 --
117917 -- Upgrade strategy
117918 --
117919 l_actual_upg_option VARCHAR2(1);
117920 l_enc_upg_option VARCHAR2(1);
117921
117922 --
117923 BEGIN
117924 --
117925 IF g_log_enabled THEN
117926 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_214';
117927 END IF;
117928 --
117929 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
117930
117931 trace
117932 (p_msg => 'BEGIN of AcctLineType_214'
117933 ,p_level => C_LEVEL_PROCEDURE
117934 ,p_module => l_log_module);
117935
117936 END IF;
117937 --
117938 l_component_type := 'AMB_JLT';
117939 l_component_code := 'PURCHASE_PRICE_VARIANCE';
117940 l_component_type_code := 'S';
117941 l_component_appl_id := 707;
117942 l_amb_context_code := 'DEFAULT';
117943 l_entity_code := 'WIP_ACCOUNTING_EVENTS';
117944 l_event_class_code := 'OSP';
117945 l_event_type_code := 'OSP_ALL';
117946 l_line_definition_owner_code := 'S';
117947 l_line_definition_code := 'OUTSIDE_PROCESSING';
117948 --
117949 l_balance_type_code := 'A';
117950 l_segment := NULL;
117951 l_ccid := NULL;
117952 l_adr_transaction_coa_id := NULL;
117953 l_adr_accounting_coa_id := NULL;
117954 l_adr_flexfield_segment_code := NULL;
117955 l_adr_flex_value_set_id := NULL;
117956 l_adr_value_type_code := NULL;
117957 l_adr_value_combination_id := NULL;
117958 l_adr_value_segment_code := NULL;
117959
117960 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
117961 l_bflow_class_code := ''; -- 4219869 Business Flow
117962 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
117963 l_budgetary_control_flag := 'N';
117964
117965 l_bflow_applied_to_amt_idx := NULL; -- 5132302
117966 l_bflow_applied_to_amt := NULL; -- 5132302
117967 l_entered_amt_idx := NULL; -- 4262811
117968 l_accted_amt_idx := NULL; -- 4262811
117969 l_acc_rev_flag := NULL; -- 4262811
117970 l_accrual_line_num := NULL; -- 4262811
117971 l_tmp_amt := NULL; -- 4262811
117972 --
117973
117974 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
117975 l_balance_type_code <> 'B' THEN
117976 IF NVL(p_source_24,9E125) = 6
117977 THEN
117978
117979 --
117980 XLA_AE_LINES_PKG.SetNewLine;
117981
117982 p_balance_type_code := l_balance_type_code;
117983 -- set the flag so later we will know whether the gain loss line needs to be created
117984
117985 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
117986 p_actual_flag :='A';
117987 END IF;
117988
117989 --
117990 -- bulk performance
117991 --
117992 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
117993 p_header_num => 0); -- 4262811
117994 --
117995 -- set accounting line options
117996 --
117997 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
117998 p_natural_side_code => 'D'
117999 , p_gain_or_loss_flag => 'N'
118000 , p_gl_transfer_mode_code => 'S'
118001 , p_acct_entry_type_code => 'A'
118002 , p_switch_side_flag => 'Y'
118003 , p_merge_duplicate_code => 'N'
118004 );
118005 --
118006 l_acc_rev_natural_side_code := 'C'; -- 4262811
118007 --
118008 --
118009 -- set accounting line type info
118010 --
118011 xla_ae_lines_pkg.SetAcctLineType
118012 (p_component_type => l_component_type
118013 ,p_event_type_code => l_event_type_code
118014 ,p_line_definition_owner_code => l_line_definition_owner_code
118015 ,p_line_definition_code => l_line_definition_code
118016 ,p_accounting_line_code => l_component_code
118017 ,p_accounting_line_type_code => l_component_type_code
118018 ,p_accounting_line_appl_id => l_component_appl_id
118019 ,p_amb_context_code => l_amb_context_code
118020 ,p_entity_code => l_entity_code
118021 ,p_event_class_code => l_event_class_code);
118022 --
118023 -- set accounting class
118024 --
118025 xla_ae_lines_pkg.SetAcctClass(
118026 p_accounting_class_code => 'PURCHASE_PRICE_VARIANCE'
118027 , p_ae_header_id => l_ae_header_id
118028 );
118029
118030 --
118031 -- set rounding class
118032 --
118033 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
118034 'PURCHASE_PRICE_VARIANCE';
118035
118036 --
118037 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
118038 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
118039 --
118040 -- bulk performance
118041 --
118042 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
118043
118044 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
118045 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
118046
118047 -- 4955764
118048 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
118049 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
118050
118051 -- 4458381 Public Sector Enh
118052
118053 --
118054 -- set accounting attributes for the line type
118055 --
118056 l_entered_amt_idx := 3;
118057 l_accted_amt_idx := 8;
118058 l_bflow_applied_to_amt_idx := NULL; -- 5132302
118059 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
118060 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
118061 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
118062 l_rec_acct_attrs.array_char_value(2) := p_source_12;
118063 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
118064 l_rec_acct_attrs.array_num_value(3) := p_source_18;
118065 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
118066 l_rec_acct_attrs.array_char_value(4) := p_source_15;
118067 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
118068 l_rec_acct_attrs.array_date_value(5) := p_source_19;
118069 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
118070 l_rec_acct_attrs.array_num_value(6) := p_source_20;
118071 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
118072 l_rec_acct_attrs.array_num_value(7) := to_char(p_source_20);
118073 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
118074 l_rec_acct_attrs.array_num_value(8) := p_source_22;
118075
118076 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
118077 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
118078
118079 ---------------------------------------------------------------------------------------------------------------
118080 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
118081 ---------------------------------------------------------------------------------------------------------------
118082 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
118083
118084 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
118085 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
118086
118087 IF xla_accounting_cache_pkg.GetValueChar
118088 (p_source_code => 'LEDGER_CATEGORY_CODE'
118089 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
118090 AND l_bflow_method_code = 'PRIOR_ENTRY'
118091 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
118092 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
118093 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
118094 )
118095 THEN
118096 xla_ae_lines_pkg.BflowUpgEntry
118097 (p_business_method_code => l_bflow_method_code
118098 ,p_business_class_code => l_bflow_class_code
118099 ,p_balance_type => l_balance_type_code);
118100 ELSE
118101 NULL;
118102 -- No business flow processing for business flow method of NONE.
118103 END IF;
118104
118105 --
118106 -- call analytical criteria
118107 --
118108
118109 --
118110 -- call description
118111 --
118112 -- No description or it is inherited.
118113 --
118114 -- call ADRs
118115 -- Bug 4922099
118116 --
118117 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
118118 (NVL(l_actual_upg_option, 'N') = 'O') OR
118119 (NVL(l_enc_upg_option, 'N') = 'O')
118120 )
118121 THEN
118122 NULL;
118123 --
118124 --
118125
118126 l_ccid := AcctDerRule_4(
118127 p_application_id => p_application_id
118128 , p_ae_header_id => l_ae_header_id
118129 , p_source_4 => p_source_4
118130 , x_transaction_coa_id => l_adr_transaction_coa_id
118131 , x_accounting_coa_id => l_adr_accounting_coa_id
118132 , x_value_type_code => l_adr_value_type_code
118133 , p_side => 'NA'
118134 );
118135
118136 xla_ae_lines_pkg.set_ccid(
118137 p_code_combination_id => l_ccid
118138 , p_value_type_code => l_adr_value_type_code
118139 , p_transaction_coa_id => l_adr_transaction_coa_id
118140 , p_accounting_coa_id => l_adr_accounting_coa_id
118141 , p_adr_code => 'CST_DEFAULT'
118142 , p_adr_type_code => 'S'
118143 , p_component_type => l_component_type
118144 , p_component_code => l_component_code
118145 , p_component_type_code => l_component_type_code
118146 , p_component_appl_id => l_component_appl_id
118147 , p_amb_context_code => l_amb_context_code
118148 , p_side => 'NA'
118149 );
118150
118151
118152 --
118153 --
118154 END IF;
118155 --
118156 -- Bug 4922099
118157 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
118158 (NVL(l_enc_upg_option, 'N') = 'O')
118159 ) AND
118160 (l_bflow_method_code = 'PRIOR_ENTRY')
118161 )
118162 THEN
118163 IF
118164 --
118165 1 = 2
118166 --
118167 THEN
118168 xla_accounting_err_pkg.build_message
118169 (p_appli_s_name => 'XLA'
118170 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
118171 ,p_token_1 => 'LINE_NUMBER'
118172 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
118173 ,p_token_2 => 'LINE_TYPE_NAME'
118174 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
118175 l_component_type
118176 ,l_component_code
118177 ,l_component_type_code
118178 ,l_component_appl_id
118179 ,l_amb_context_code
118180 ,l_entity_code
118181 ,l_event_class_code
118182 )
118183 ,p_token_3 => 'OWNER'
118184 ,p_value_3 => xla_lookups_pkg.get_meaning(
118185 p_lookup_type => 'XLA_OWNER_TYPE'
118186 ,p_lookup_code => l_component_type_code
118187 )
118188 ,p_token_4 => 'PRODUCT_NAME'
118189 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
118190 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
118191 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
118192 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
118193 ,p_ae_header_id => NULL
118194 );
118195
118196 IF (C_LEVEL_ERROR>= g_log_level) THEN
118197 trace
118198 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
118199 ,p_level => C_LEVEL_ERROR
118200 ,p_module => l_log_module);
118201 END IF;
118202 END IF;
118203 END IF;
118204 --
118205 --
118206 ------------------------------------------------------------------------------------------------
118207 -- 4219869 Business Flow
118208 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
118209 -- Prior Entry. Currently, the following code is always generated.
118210 ------------------------------------------------------------------------------------------------
118211 XLA_AE_LINES_PKG.ValidateCurrentLine;
118212
118213 ------------------------------------------------------------------------------------
118214 -- 4219869 Business Flow
118215 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
118216 ------------------------------------------------------------------------------------
118217 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
118218
118219 ----------------------------------------------------------------------------------
118220 -- 4219869 Business Flow
118221 -- Update journal entry status -- Need to generate this within IF <condition>
118222 ----------------------------------------------------------------------------------
118223 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
118224 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
118225 ,p_balance_type_code => l_balance_type_code
118226 );
118227
118228 -------------------------------------------------------------------------------------------
118229 -- 4262811 - Generate the Accrual Reversal lines
118230 -------------------------------------------------------------------------------------------
118231 BEGIN
118232 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
118233 (g_array_event(p_event_id).array_value_num('header_index'));
118234 IF l_acc_rev_flag IS NULL THEN
118235 l_acc_rev_flag := 'N';
118236 END IF;
118237 EXCEPTION
118238 WHEN OTHERS THEN
118239 l_acc_rev_flag := 'N';
118240 END;
118241 --
118242 IF (l_acc_rev_flag = 'Y') THEN
118243
118244 -- 4645092 ------------------------------------------------------------------------------
118245 -- To allow MPA report to determine if it should generate report process
118246 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
118247 ------------------------------------------------------------------------------------------
118248
118249 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
118250 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
118251 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
118252 -- call ADRs
118253 -- Bug 4922099
118254 --
118255 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
118256 (NVL(l_actual_upg_option, 'N') = 'O') OR
118257 (NVL(l_enc_upg_option, 'N') = 'O')
118258 )
118259 THEN
118260 NULL;
118261 --
118262 --
118263
118264 l_ccid := AcctDerRule_4(
118265 p_application_id => p_application_id
118266 , p_ae_header_id => l_ae_header_id
118267 , p_source_4 => p_source_4
118268 , x_transaction_coa_id => l_adr_transaction_coa_id
118269 , x_accounting_coa_id => l_adr_accounting_coa_id
118270 , x_value_type_code => l_adr_value_type_code
118271 , p_side => 'NA'
118272 );
118273
118274 xla_ae_lines_pkg.set_ccid(
118275 p_code_combination_id => l_ccid
118276 , p_value_type_code => l_adr_value_type_code
118277 , p_transaction_coa_id => l_adr_transaction_coa_id
118278 , p_accounting_coa_id => l_adr_accounting_coa_id
118279 , p_adr_code => 'CST_DEFAULT'
118280 , p_adr_type_code => 'S'
118281 , p_component_type => l_component_type
118282 , p_component_code => l_component_code
118283 , p_component_type_code => l_component_type_code
118284 , p_component_appl_id => l_component_appl_id
118285 , p_amb_context_code => l_amb_context_code
118286 , p_side => 'NA'
118287 );
118288
118289
118290 --
118291 --
118292 END IF;
118293
118294 --
118295 -- Update the line information that should be overwritten
118296 --
118297 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
118298 p_header_num => 1);
118299 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
118300
118301 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
118302
118303 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
118304 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
118305 END IF;
118306
118307 --
118308 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
118309 --
118310 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
118311 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
118312 ELSE
118313 ---------------------------------------------------------------------------------------------------
118314 -- 4262811a Switch Sign
118315 ---------------------------------------------------------------------------------------------------
118316 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
118317 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
118318 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
118319 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
118320 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
118321 -- 5132302
118322 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
118323 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
118324
118325 END IF;
118326
118327 -- 4955764
118328 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
118329 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
118330
118331
118332 XLA_AE_LINES_PKG.ValidateCurrentLine;
118333 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
118334
118335 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
118336 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
118337 ,p_balance_type_code => l_balance_type_code);
118338
118339 END IF;
118340
118341 -----------------------------------------------------------------------------------------
118342 -- 4262811 Multiperiod Accounting
118343 -----------------------------------------------------------------------------------------
118344 -- No MPA option is assigned.
118345
118346
118347 END IF;
118348 END IF;
118349 --
118350
118351 --
118352 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
118353 trace
118354 (p_msg => 'END of AcctLineType_214'
118355 ,p_level => C_LEVEL_PROCEDURE
118356 ,p_module => l_log_module);
118357 END IF;
118358 --
118359 EXCEPTION
118360 WHEN xla_exceptions_pkg.application_exception THEN
118361 RAISE;
118362 WHEN OTHERS THEN
118363 xla_exceptions_pkg.raise_message
118364 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_214');
118365 END AcctLineType_214;
118366 --
118367
118368 ---------------------------------------
118369 --
118370 -- PRIVATE FUNCTION
118371 -- AcctLineType_215
118372 --
118373 ---------------------------------------
118374 PROCEDURE AcctLineType_215 (
118375 p_application_id IN NUMBER
118376 ,p_event_id IN NUMBER
118377 ,p_calculate_acctd_flag IN VARCHAR2
118378 ,p_calculate_g_l_flag IN VARCHAR2
118379 ,p_actual_flag IN OUT VARCHAR2
118380 ,p_balance_type_code OUT VARCHAR2
118381 ,p_gain_or_loss_ref OUT VARCHAR2
118382
118383 --Cost Management Default Account
118384 , p_source_4 IN NUMBER
118385 --DISTRIBUTION_IDENTIFIER
118386 , p_source_11 IN NUMBER
118387 --Distribution Type
118388 , p_source_12 IN VARCHAR2
118389 , p_source_12_meaning IN VARCHAR2
118390 --Entered Currency Code
118391 , p_source_15 IN VARCHAR2
118392 --Entered Amount
118393 , p_source_18 IN NUMBER
118394 --Currency Conversion Date
118395 , p_source_19 IN DATE
118396 --Currency Conversion Rate
118397 , p_source_20 IN NUMBER
118398 --Currency Conversion Type
118399 , p_source_21 IN VARCHAR2
118400 --Accounted Amount
118401 , p_source_22 IN NUMBER
118402 --Accounting Line Type
118403 , p_source_24 IN NUMBER
118404 )
118405 IS
118406
118407 l_component_type VARCHAR2(80);
118408 l_component_code VARCHAR2(30);
118409 l_component_type_code VARCHAR2(1);
118410 l_component_appl_id INTEGER;
118411 l_amb_context_code VARCHAR2(30);
118412 l_entity_code VARCHAR2(30);
118413 l_event_class_code VARCHAR2(30);
118414 l_ae_header_id NUMBER;
118415 l_event_type_code VARCHAR2(30);
118416 l_line_definition_code VARCHAR2(30);
118417 l_line_definition_owner_code VARCHAR2(1);
118418 --
118419 -- adr variables
118420 l_segment VARCHAR2(30);
118421 l_ccid NUMBER;
118422 l_adr_transaction_coa_id NUMBER;
118423 l_adr_accounting_coa_id NUMBER;
118424 l_adr_flexfield_segment_code VARCHAR2(30);
118425 l_adr_flex_value_set_id NUMBER;
118426 l_adr_value_type_code VARCHAR2(30);
118427 l_adr_value_combination_id NUMBER;
118428 l_adr_value_segment_code VARCHAR2(30);
118429
118430 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
118431 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
118432 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
118433 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
118434
118435 -- 4262811 Variables ------------------------------------------------------------------------------------------
118436 l_entered_amt_idx NUMBER;
118437 l_accted_amt_idx NUMBER;
118438 l_acc_rev_flag VARCHAR2(1);
118439 l_accrual_line_num NUMBER;
118440 l_tmp_amt NUMBER;
118441 l_acc_rev_natural_side_code VARCHAR2(1);
118442
118443 l_num_entries NUMBER;
118444 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
118445 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
118446 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
118447 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
118448 l_recog_line_1 NUMBER;
118449 l_recog_line_2 NUMBER;
118450
118451 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
118452 l_bflow_applied_to_amt NUMBER; -- 5132302
118453 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
118454
118455 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
118456
118457 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
118458 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
118459
118460 ---------------------------------------------------------------------------------------------------------------
118461
118462
118463 --
118464 -- bulk performance
118465 --
118466 l_balance_type_code VARCHAR2(1);
118467 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
118468 l_log_module VARCHAR2(240);
118469
118470 --
118471 -- Upgrade strategy
118472 --
118473 l_actual_upg_option VARCHAR2(1);
118474 l_enc_upg_option VARCHAR2(1);
118475
118476 --
118477 BEGIN
118478 --
118479 IF g_log_enabled THEN
118480 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_215';
118481 END IF;
118482 --
118483 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
118484
118485 trace
118486 (p_msg => 'BEGIN of AcctLineType_215'
118487 ,p_level => C_LEVEL_PROCEDURE
118488 ,p_module => l_log_module);
118489
118490 END IF;
118491 --
118492 l_component_type := 'AMB_JLT';
118493 l_component_code := 'PURCHASE_PRICE_VARIANCE';
118494 l_component_type_code := 'S';
118495 l_component_appl_id := 707;
118496 l_amb_context_code := 'DEFAULT';
118497 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
118498 l_event_class_code := 'USER_DEFINE';
118499 l_event_type_code := 'UDIR_INTERORG_RCPT';
118500 l_line_definition_owner_code := 'S';
118501 l_line_definition_code := 'USER_DIR_INTERORG_RCPT';
118502 --
118503 l_balance_type_code := 'A';
118504 l_segment := NULL;
118505 l_ccid := NULL;
118506 l_adr_transaction_coa_id := NULL;
118507 l_adr_accounting_coa_id := NULL;
118508 l_adr_flexfield_segment_code := NULL;
118509 l_adr_flex_value_set_id := NULL;
118510 l_adr_value_type_code := NULL;
118511 l_adr_value_combination_id := NULL;
118512 l_adr_value_segment_code := NULL;
118513
118514 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
118515 l_bflow_class_code := ''; -- 4219869 Business Flow
118516 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
118517 l_budgetary_control_flag := 'N';
118518
118519 l_bflow_applied_to_amt_idx := NULL; -- 5132302
118520 l_bflow_applied_to_amt := NULL; -- 5132302
118521 l_entered_amt_idx := NULL; -- 4262811
118522 l_accted_amt_idx := NULL; -- 4262811
118523 l_acc_rev_flag := NULL; -- 4262811
118524 l_accrual_line_num := NULL; -- 4262811
118525 l_tmp_amt := NULL; -- 4262811
118526 --
118527
118528 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
118529 l_balance_type_code <> 'B' THEN
118530 IF NVL(p_source_24,9E125) = 6
118531 THEN
118532
118533 --
118534 XLA_AE_LINES_PKG.SetNewLine;
118535
118536 p_balance_type_code := l_balance_type_code;
118537 -- set the flag so later we will know whether the gain loss line needs to be created
118538
118539 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
118540 p_actual_flag :='A';
118541 END IF;
118542
118543 --
118544 -- bulk performance
118545 --
118546 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
118547 p_header_num => 0); -- 4262811
118548 --
118549 -- set accounting line options
118550 --
118551 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
118552 p_natural_side_code => 'D'
118553 , p_gain_or_loss_flag => 'N'
118554 , p_gl_transfer_mode_code => 'S'
118555 , p_acct_entry_type_code => 'A'
118556 , p_switch_side_flag => 'Y'
118557 , p_merge_duplicate_code => 'N'
118558 );
118559 --
118560 l_acc_rev_natural_side_code := 'C'; -- 4262811
118561 --
118562 --
118563 -- set accounting line type info
118564 --
118565 xla_ae_lines_pkg.SetAcctLineType
118566 (p_component_type => l_component_type
118567 ,p_event_type_code => l_event_type_code
118568 ,p_line_definition_owner_code => l_line_definition_owner_code
118569 ,p_line_definition_code => l_line_definition_code
118570 ,p_accounting_line_code => l_component_code
118571 ,p_accounting_line_type_code => l_component_type_code
118572 ,p_accounting_line_appl_id => l_component_appl_id
118573 ,p_amb_context_code => l_amb_context_code
118574 ,p_entity_code => l_entity_code
118575 ,p_event_class_code => l_event_class_code);
118576 --
118577 -- set accounting class
118578 --
118579 xla_ae_lines_pkg.SetAcctClass(
118580 p_accounting_class_code => 'PURCHASE_PRICE_VARIANCE'
118581 , p_ae_header_id => l_ae_header_id
118582 );
118583
118584 --
118585 -- set rounding class
118586 --
118587 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
118588 'PURCHASE_PRICE_VARIANCE';
118589
118590 --
118591 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
118592 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
118593 --
118594 -- bulk performance
118595 --
118596 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
118597
118598 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
118599 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
118600
118601 -- 4955764
118602 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
118603 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
118604
118605 -- 4458381 Public Sector Enh
118606
118607 --
118608 -- set accounting attributes for the line type
118609 --
118610 l_entered_amt_idx := 3;
118611 l_accted_amt_idx := 8;
118612 l_bflow_applied_to_amt_idx := NULL; -- 5132302
118613 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
118614 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
118615 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
118616 l_rec_acct_attrs.array_char_value(2) := p_source_12;
118617 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
118618 l_rec_acct_attrs.array_num_value(3) := p_source_18;
118619 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
118620 l_rec_acct_attrs.array_char_value(4) := p_source_15;
118621 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
118622 l_rec_acct_attrs.array_date_value(5) := p_source_19;
118623 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
118624 l_rec_acct_attrs.array_num_value(6) := p_source_20;
118625 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
118626 l_rec_acct_attrs.array_char_value(7) := p_source_21;
118627 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
118628 l_rec_acct_attrs.array_num_value(8) := p_source_22;
118629
118630 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
118631 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
118632
118633 ---------------------------------------------------------------------------------------------------------------
118634 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
118635 ---------------------------------------------------------------------------------------------------------------
118636 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
118637
118638 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
118639 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
118640
118641 IF xla_accounting_cache_pkg.GetValueChar
118642 (p_source_code => 'LEDGER_CATEGORY_CODE'
118643 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
118644 AND l_bflow_method_code = 'PRIOR_ENTRY'
118645 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
118646 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
118647 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
118648 )
118649 THEN
118650 xla_ae_lines_pkg.BflowUpgEntry
118651 (p_business_method_code => l_bflow_method_code
118652 ,p_business_class_code => l_bflow_class_code
118653 ,p_balance_type => l_balance_type_code);
118654 ELSE
118655 NULL;
118656 -- No business flow processing for business flow method of NONE.
118657 END IF;
118658
118659 --
118660 -- call analytical criteria
118661 --
118662
118663 --
118664 -- call description
118665 --
118666 -- No description or it is inherited.
118667 --
118668 -- call ADRs
118669 -- Bug 4922099
118670 --
118671 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
118672 (NVL(l_actual_upg_option, 'N') = 'O') OR
118673 (NVL(l_enc_upg_option, 'N') = 'O')
118674 )
118675 THEN
118676 NULL;
118677 --
118678 --
118679
118680 l_ccid := AcctDerRule_4(
118681 p_application_id => p_application_id
118682 , p_ae_header_id => l_ae_header_id
118683 , p_source_4 => p_source_4
118684 , x_transaction_coa_id => l_adr_transaction_coa_id
118685 , x_accounting_coa_id => l_adr_accounting_coa_id
118686 , x_value_type_code => l_adr_value_type_code
118687 , p_side => 'NA'
118688 );
118689
118690 xla_ae_lines_pkg.set_ccid(
118691 p_code_combination_id => l_ccid
118692 , p_value_type_code => l_adr_value_type_code
118693 , p_transaction_coa_id => l_adr_transaction_coa_id
118694 , p_accounting_coa_id => l_adr_accounting_coa_id
118695 , p_adr_code => 'CST_DEFAULT'
118696 , p_adr_type_code => 'S'
118697 , p_component_type => l_component_type
118698 , p_component_code => l_component_code
118699 , p_component_type_code => l_component_type_code
118700 , p_component_appl_id => l_component_appl_id
118701 , p_amb_context_code => l_amb_context_code
118702 , p_side => 'NA'
118703 );
118704
118705
118706 --
118707 --
118708 END IF;
118709 --
118710 -- Bug 4922099
118711 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
118712 (NVL(l_enc_upg_option, 'N') = 'O')
118713 ) AND
118714 (l_bflow_method_code = 'PRIOR_ENTRY')
118715 )
118716 THEN
118717 IF
118718 --
118719 1 = 2
118720 --
118721 THEN
118722 xla_accounting_err_pkg.build_message
118723 (p_appli_s_name => 'XLA'
118724 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
118725 ,p_token_1 => 'LINE_NUMBER'
118726 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
118727 ,p_token_2 => 'LINE_TYPE_NAME'
118728 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
118729 l_component_type
118730 ,l_component_code
118731 ,l_component_type_code
118732 ,l_component_appl_id
118733 ,l_amb_context_code
118734 ,l_entity_code
118735 ,l_event_class_code
118736 )
118737 ,p_token_3 => 'OWNER'
118738 ,p_value_3 => xla_lookups_pkg.get_meaning(
118739 p_lookup_type => 'XLA_OWNER_TYPE'
118740 ,p_lookup_code => l_component_type_code
118741 )
118742 ,p_token_4 => 'PRODUCT_NAME'
118743 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
118744 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
118745 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
118746 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
118747 ,p_ae_header_id => NULL
118748 );
118749
118750 IF (C_LEVEL_ERROR>= g_log_level) THEN
118751 trace
118752 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
118753 ,p_level => C_LEVEL_ERROR
118754 ,p_module => l_log_module);
118755 END IF;
118756 END IF;
118757 END IF;
118758 --
118759 --
118760 ------------------------------------------------------------------------------------------------
118761 -- 4219869 Business Flow
118762 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
118763 -- Prior Entry. Currently, the following code is always generated.
118764 ------------------------------------------------------------------------------------------------
118765 XLA_AE_LINES_PKG.ValidateCurrentLine;
118766
118767 ------------------------------------------------------------------------------------
118768 -- 4219869 Business Flow
118769 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
118770 ------------------------------------------------------------------------------------
118771 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
118772
118773 ----------------------------------------------------------------------------------
118774 -- 4219869 Business Flow
118775 -- Update journal entry status -- Need to generate this within IF <condition>
118776 ----------------------------------------------------------------------------------
118777 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
118778 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
118779 ,p_balance_type_code => l_balance_type_code
118780 );
118781
118782 -------------------------------------------------------------------------------------------
118783 -- 4262811 - Generate the Accrual Reversal lines
118784 -------------------------------------------------------------------------------------------
118785 BEGIN
118786 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
118787 (g_array_event(p_event_id).array_value_num('header_index'));
118788 IF l_acc_rev_flag IS NULL THEN
118789 l_acc_rev_flag := 'N';
118790 END IF;
118791 EXCEPTION
118792 WHEN OTHERS THEN
118793 l_acc_rev_flag := 'N';
118794 END;
118795 --
118796 IF (l_acc_rev_flag = 'Y') THEN
118797
118798 -- 4645092 ------------------------------------------------------------------------------
118799 -- To allow MPA report to determine if it should generate report process
118800 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
118801 ------------------------------------------------------------------------------------------
118802
118803 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
118804 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
118805 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
118806 -- call ADRs
118807 -- Bug 4922099
118808 --
118809 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
118810 (NVL(l_actual_upg_option, 'N') = 'O') OR
118811 (NVL(l_enc_upg_option, 'N') = 'O')
118812 )
118813 THEN
118814 NULL;
118815 --
118816 --
118817
118818 l_ccid := AcctDerRule_4(
118819 p_application_id => p_application_id
118820 , p_ae_header_id => l_ae_header_id
118821 , p_source_4 => p_source_4
118822 , x_transaction_coa_id => l_adr_transaction_coa_id
118823 , x_accounting_coa_id => l_adr_accounting_coa_id
118824 , x_value_type_code => l_adr_value_type_code
118825 , p_side => 'NA'
118826 );
118827
118828 xla_ae_lines_pkg.set_ccid(
118829 p_code_combination_id => l_ccid
118830 , p_value_type_code => l_adr_value_type_code
118831 , p_transaction_coa_id => l_adr_transaction_coa_id
118832 , p_accounting_coa_id => l_adr_accounting_coa_id
118833 , p_adr_code => 'CST_DEFAULT'
118834 , p_adr_type_code => 'S'
118835 , p_component_type => l_component_type
118836 , p_component_code => l_component_code
118837 , p_component_type_code => l_component_type_code
118838 , p_component_appl_id => l_component_appl_id
118839 , p_amb_context_code => l_amb_context_code
118840 , p_side => 'NA'
118841 );
118842
118843
118844 --
118845 --
118846 END IF;
118847
118848 --
118849 -- Update the line information that should be overwritten
118850 --
118851 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
118852 p_header_num => 1);
118853 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
118854
118855 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
118856
118857 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
118858 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
118859 END IF;
118860
118861 --
118862 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
118863 --
118864 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
118865 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
118866 ELSE
118867 ---------------------------------------------------------------------------------------------------
118868 -- 4262811a Switch Sign
118869 ---------------------------------------------------------------------------------------------------
118870 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
118871 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
118872 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
118873 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
118874 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
118875 -- 5132302
118876 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
118877 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
118878
118879 END IF;
118880
118881 -- 4955764
118882 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
118883 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
118884
118885
118886 XLA_AE_LINES_PKG.ValidateCurrentLine;
118887 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
118888
118889 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
118890 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
118891 ,p_balance_type_code => l_balance_type_code);
118892
118893 END IF;
118894
118895 -----------------------------------------------------------------------------------------
118896 -- 4262811 Multiperiod Accounting
118897 -----------------------------------------------------------------------------------------
118898 -- No MPA option is assigned.
118899
118900
118901 END IF;
118902 END IF;
118903 --
118904
118905 --
118906 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
118907 trace
118908 (p_msg => 'END of AcctLineType_215'
118909 ,p_level => C_LEVEL_PROCEDURE
118910 ,p_module => l_log_module);
118911 END IF;
118912 --
118913 EXCEPTION
118914 WHEN xla_exceptions_pkg.application_exception THEN
118915 RAISE;
118916 WHEN OTHERS THEN
118917 xla_exceptions_pkg.raise_message
118918 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_215');
118919 END AcctLineType_215;
118920 --
118921
118922 ---------------------------------------
118923 --
118924 -- PRIVATE FUNCTION
118925 -- AcctLineType_216
118926 --
118927 ---------------------------------------
118928 PROCEDURE AcctLineType_216 (
118929 p_application_id IN NUMBER
118930 ,p_event_id IN NUMBER
118931 ,p_calculate_acctd_flag IN VARCHAR2
118932 ,p_calculate_g_l_flag IN VARCHAR2
118933 ,p_actual_flag IN OUT VARCHAR2
118934 ,p_balance_type_code OUT VARCHAR2
118935 ,p_gain_or_loss_ref OUT VARCHAR2
118936
118937 --Cost Management Default Account
118938 , p_source_4 IN NUMBER
118939 --Applied to Application ID
118940 , p_source_6 IN NUMBER
118941 --Applied to Distribution Link Type
118942 , p_source_7 IN VARCHAR2
118943 --Applied to Entity Code
118944 , p_source_8 IN VARCHAR2
118945 --DISTRIBUTION_IDENTIFIER
118946 , p_source_11 IN NUMBER
118947 --Distribution Type
118948 , p_source_12 IN VARCHAR2
118949 , p_source_12_meaning IN VARCHAR2
118950 --Encumbrance Reversal Amount Entered
118951 , p_source_14 IN NUMBER
118952 --Entered Currency Code
118953 , p_source_15 IN VARCHAR2
118954 --Transaction Encumbrance Reversal Amount
118955 , p_source_16 IN NUMBER
118956 --Entered Amount
118957 , p_source_18 IN NUMBER
118958 --Currency Conversion Date
118959 , p_source_19 IN DATE
118960 --Currency Conversion Rate
118961 , p_source_20 IN NUMBER
118962 --Currency Conversion Type
118963 , p_source_21 IN VARCHAR2
118964 --Accounted Amount
118965 , p_source_22 IN NUMBER
118966 --Accounting Line Type
118967 , p_source_24 IN NUMBER
118968 --Costing Encumbrance Upgrade Option
118969 , p_source_27 IN VARCHAR2
118970 --TXN_PO_DISTRIBUTION_ID
118971 , p_source_28 IN NUMBER
118972 --TXN_PO_HEADER_ID
118973 , p_source_29 IN NUMBER
118974 --Requisition Budget Account
118975 , p_source_30 IN NUMBER
118976 --Requisition Encumbrance Type Identifier
118977 , p_source_31 IN NUMBER
118978 )
118979 IS
118980
118981 l_component_type VARCHAR2(80);
118982 l_component_code VARCHAR2(30);
118983 l_component_type_code VARCHAR2(1);
118984 l_component_appl_id INTEGER;
118985 l_amb_context_code VARCHAR2(30);
118986 l_entity_code VARCHAR2(30);
118987 l_event_class_code VARCHAR2(30);
118988 l_ae_header_id NUMBER;
118989 l_event_type_code VARCHAR2(30);
118990 l_line_definition_code VARCHAR2(30);
118991 l_line_definition_owner_code VARCHAR2(1);
118992 --
118993 -- adr variables
118994 l_segment VARCHAR2(30);
118995 l_ccid NUMBER;
118996 l_adr_transaction_coa_id NUMBER;
118997 l_adr_accounting_coa_id NUMBER;
118998 l_adr_flexfield_segment_code VARCHAR2(30);
118999 l_adr_flex_value_set_id NUMBER;
119000 l_adr_value_type_code VARCHAR2(30);
119001 l_adr_value_combination_id NUMBER;
119002 l_adr_value_segment_code VARCHAR2(30);
119003
119004 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
119005 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
119006 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
119007 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
119008
119009 -- 4262811 Variables ------------------------------------------------------------------------------------------
119010 l_entered_amt_idx NUMBER;
119011 l_accted_amt_idx NUMBER;
119012 l_acc_rev_flag VARCHAR2(1);
119013 l_accrual_line_num NUMBER;
119014 l_tmp_amt NUMBER;
119015 l_acc_rev_natural_side_code VARCHAR2(1);
119016
119017 l_num_entries NUMBER;
119018 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
119019 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
119020 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
119021 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
119022 l_recog_line_1 NUMBER;
119023 l_recog_line_2 NUMBER;
119024
119025 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
119026 l_bflow_applied_to_amt NUMBER; -- 5132302
119027 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
119028
119029 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
119030
119031 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
119032 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
119033
119034 ---------------------------------------------------------------------------------------------------------------
119035
119036
119037 --
119038 -- bulk performance
119039 --
119040 l_balance_type_code VARCHAR2(1);
119041 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
119042 l_log_module VARCHAR2(240);
119043
119044 --
119045 -- Upgrade strategy
119046 --
119047 l_actual_upg_option VARCHAR2(1);
119048 l_enc_upg_option VARCHAR2(1);
119049
119050 --
119051 BEGIN
119052 --
119053 IF g_log_enabled THEN
119054 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_216';
119055 END IF;
119056 --
119057 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
119058
119059 trace
119060 (p_msg => 'BEGIN of AcctLineType_216'
119061 ,p_level => C_LEVEL_PROCEDURE
119062 ,p_module => l_log_module);
119063
119064 END IF;
119065 --
119066 l_component_type := 'AMB_JLT';
119067 l_component_code := 'PURCHASE_PRICE_VARIANCE';
119068 l_component_type_code := 'S';
119069 l_component_appl_id := 707;
119070 l_amb_context_code := 'DEFAULT';
119071 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
119072 l_event_class_code := 'FOB_RCPT_RECIPIENT_RCPT';
119073 l_event_type_code := 'FOB_RCPT_RECIPIENT_RCPT_ALL';
119074 l_line_definition_owner_code := 'S';
119075 l_line_definition_code := 'FOB_RCPT_RECIPIENT_RCPT';
119076 --
119077 l_balance_type_code := 'A';
119078 l_segment := NULL;
119079 l_ccid := NULL;
119080 l_adr_transaction_coa_id := NULL;
119081 l_adr_accounting_coa_id := NULL;
119082 l_adr_flexfield_segment_code := NULL;
119083 l_adr_flex_value_set_id := NULL;
119084 l_adr_value_type_code := NULL;
119085 l_adr_value_combination_id := NULL;
119086 l_adr_value_segment_code := NULL;
119087
119088 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
119089 l_bflow_class_code := ''; -- 4219869 Business Flow
119090 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
119091 l_budgetary_control_flag := 'N';
119092
119093 l_bflow_applied_to_amt_idx := NULL; -- 5132302
119094 l_bflow_applied_to_amt := NULL; -- 5132302
119095 l_entered_amt_idx := NULL; -- 4262811
119096 l_accted_amt_idx := NULL; -- 4262811
119097 l_acc_rev_flag := NULL; -- 4262811
119098 l_accrual_line_num := NULL; -- 4262811
119099 l_tmp_amt := NULL; -- 4262811
119100 --
119101
119102 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
119103 l_balance_type_code <> 'B' THEN
119104 IF NVL(p_source_24,9E125) = 6
119105 THEN
119106
119107 --
119108 XLA_AE_LINES_PKG.SetNewLine;
119109
119110 p_balance_type_code := l_balance_type_code;
119111 -- set the flag so later we will know whether the gain loss line needs to be created
119112
119113 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
119114 p_actual_flag :='A';
119115 END IF;
119116
119117 --
119118 -- bulk performance
119119 --
119120 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
119121 p_header_num => 0); -- 4262811
119122 --
119123 -- set accounting line options
119124 --
119125 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
119126 p_natural_side_code => 'D'
119127 , p_gain_or_loss_flag => 'N'
119128 , p_gl_transfer_mode_code => 'S'
119129 , p_acct_entry_type_code => 'A'
119130 , p_switch_side_flag => 'Y'
119131 , p_merge_duplicate_code => 'N'
119132 );
119133 --
119134 l_acc_rev_natural_side_code := 'C'; -- 4262811
119135 --
119136 --
119137 -- set accounting line type info
119138 --
119139 xla_ae_lines_pkg.SetAcctLineType
119140 (p_component_type => l_component_type
119141 ,p_event_type_code => l_event_type_code
119142 ,p_line_definition_owner_code => l_line_definition_owner_code
119143 ,p_line_definition_code => l_line_definition_code
119144 ,p_accounting_line_code => l_component_code
119145 ,p_accounting_line_type_code => l_component_type_code
119146 ,p_accounting_line_appl_id => l_component_appl_id
119147 ,p_amb_context_code => l_amb_context_code
119148 ,p_entity_code => l_entity_code
119149 ,p_event_class_code => l_event_class_code);
119150 --
119151 -- set accounting class
119152 --
119153 xla_ae_lines_pkg.SetAcctClass(
119154 p_accounting_class_code => 'PURCHASE_PRICE_VARIANCE'
119155 , p_ae_header_id => l_ae_header_id
119156 );
119157
119158 --
119159 -- set rounding class
119160 --
119161 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
119162 'PURCHASE_PRICE_VARIANCE';
119163
119164 --
119165 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
119166 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
119167 --
119168 -- bulk performance
119169 --
119170 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
119171
119172 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
119173 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
119174
119175 -- 4955764
119176 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
119177 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
119178
119179 -- 4458381 Public Sector Enh
119180
119181 --
119182 -- set accounting attributes for the line type
119183 --
119184 l_entered_amt_idx := 17;
119185 l_accted_amt_idx := 22;
119186 l_bflow_applied_to_amt_idx := NULL; -- 5132302
119187 l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
119188 l_rec_acct_attrs.array_num_value(1) := p_source_6;
119189 l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
119190 l_rec_acct_attrs.array_char_value(2) := p_source_7;
119191 l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
119192 l_rec_acct_attrs.array_char_value(3) := p_source_8;
119193 l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
119194 l_rec_acct_attrs.array_num_value(4) := to_char(p_source_28);
119195 l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
119196 l_rec_acct_attrs.array_num_value(5) := to_char(p_source_29);
119197 l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
119198 l_rec_acct_attrs.array_num_value(6) := to_char(p_source_11);
119199 l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
119200 l_rec_acct_attrs.array_char_value(7) := p_source_12;
119201 l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
119202 l_rec_acct_attrs.array_num_value(8) := TO_NUMBER(p_source_30);
119203 l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
119204 l_rec_acct_attrs.array_num_value(9) := p_source_14;
119205 l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
119206 l_rec_acct_attrs.array_char_value(10) := p_source_15;
119207 l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
119208 l_rec_acct_attrs.array_num_value(11) := p_source_16;
119209 l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
119210 l_rec_acct_attrs.array_num_value(12) := TO_NUMBER(p_source_30);
119211 l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
119212 l_rec_acct_attrs.array_num_value(13) := p_source_14;
119213 l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
119214 l_rec_acct_attrs.array_char_value(14) := p_source_15;
119215 l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
119216 l_rec_acct_attrs.array_num_value(15) := p_source_16;
119217 l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
119218 l_rec_acct_attrs.array_char_value(16) := p_source_27;
119219 l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
119220 l_rec_acct_attrs.array_num_value(17) := p_source_18;
119221 l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
119222 l_rec_acct_attrs.array_char_value(18) := p_source_15;
119223 l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
119224 l_rec_acct_attrs.array_date_value(19) := p_source_19;
119225 l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
119226 l_rec_acct_attrs.array_num_value(20) := p_source_20;
119227 l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
119228 l_rec_acct_attrs.array_char_value(21) := p_source_21;
119229 l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
119230 l_rec_acct_attrs.array_num_value(22) := p_source_22;
119231 l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
119232 l_rec_acct_attrs.array_num_value(23) := p_source_31;
119233 l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
119234 l_rec_acct_attrs.array_num_value(24) := p_source_31;
119235
119236 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
119237 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
119238
119239 ---------------------------------------------------------------------------------------------------------------
119240 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
119241 ---------------------------------------------------------------------------------------------------------------
119242 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
119243
119244 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
119245 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
119246
119247 IF xla_accounting_cache_pkg.GetValueChar
119248 (p_source_code => 'LEDGER_CATEGORY_CODE'
119249 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
119250 AND l_bflow_method_code = 'PRIOR_ENTRY'
119251 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
119252 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
119253 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
119254 )
119255 THEN
119256 xla_ae_lines_pkg.BflowUpgEntry
119257 (p_business_method_code => l_bflow_method_code
119258 ,p_business_class_code => l_bflow_class_code
119259 ,p_balance_type => l_balance_type_code);
119260 ELSE
119261 NULL;
119262 -- No business flow processing for business flow method of NONE.
119263 END IF;
119264
119265 --
119266 -- call analytical criteria
119267 --
119268
119269 --
119270 -- call description
119271 --
119272 -- No description or it is inherited.
119273 --
119274 -- call ADRs
119275 -- Bug 4922099
119276 --
119277 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
119278 (NVL(l_actual_upg_option, 'N') = 'O') OR
119279 (NVL(l_enc_upg_option, 'N') = 'O')
119280 )
119281 THEN
119282 NULL;
119283 --
119284 --
119285
119286 l_ccid := AcctDerRule_4(
119287 p_application_id => p_application_id
119288 , p_ae_header_id => l_ae_header_id
119289 , p_source_4 => p_source_4
119290 , x_transaction_coa_id => l_adr_transaction_coa_id
119291 , x_accounting_coa_id => l_adr_accounting_coa_id
119292 , x_value_type_code => l_adr_value_type_code
119293 , p_side => 'NA'
119294 );
119295
119296 xla_ae_lines_pkg.set_ccid(
119297 p_code_combination_id => l_ccid
119298 , p_value_type_code => l_adr_value_type_code
119299 , p_transaction_coa_id => l_adr_transaction_coa_id
119300 , p_accounting_coa_id => l_adr_accounting_coa_id
119301 , p_adr_code => 'CST_DEFAULT'
119302 , p_adr_type_code => 'S'
119303 , p_component_type => l_component_type
119304 , p_component_code => l_component_code
119305 , p_component_type_code => l_component_type_code
119306 , p_component_appl_id => l_component_appl_id
119307 , p_amb_context_code => l_amb_context_code
119308 , p_side => 'NA'
119309 );
119310
119311
119312 --
119313 --
119314 END IF;
119315 --
119316 -- Bug 4922099
119317 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
119318 (NVL(l_enc_upg_option, 'N') = 'O')
119319 ) AND
119320 (l_bflow_method_code = 'PRIOR_ENTRY')
119321 )
119322 THEN
119323 IF
119324 --
119325 1 = 2
119326 --
119327 THEN
119328 xla_accounting_err_pkg.build_message
119329 (p_appli_s_name => 'XLA'
119330 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
119331 ,p_token_1 => 'LINE_NUMBER'
119332 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
119333 ,p_token_2 => 'LINE_TYPE_NAME'
119334 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
119335 l_component_type
119336 ,l_component_code
119337 ,l_component_type_code
119338 ,l_component_appl_id
119339 ,l_amb_context_code
119340 ,l_entity_code
119341 ,l_event_class_code
119342 )
119343 ,p_token_3 => 'OWNER'
119344 ,p_value_3 => xla_lookups_pkg.get_meaning(
119345 p_lookup_type => 'XLA_OWNER_TYPE'
119346 ,p_lookup_code => l_component_type_code
119347 )
119348 ,p_token_4 => 'PRODUCT_NAME'
119349 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
119350 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
119351 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
119352 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
119353 ,p_ae_header_id => NULL
119354 );
119355
119356 IF (C_LEVEL_ERROR>= g_log_level) THEN
119357 trace
119358 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
119359 ,p_level => C_LEVEL_ERROR
119360 ,p_module => l_log_module);
119361 END IF;
119362 END IF;
119363 END IF;
119364 --
119365 --
119366 ------------------------------------------------------------------------------------------------
119367 -- 4219869 Business Flow
119368 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
119369 -- Prior Entry. Currently, the following code is always generated.
119370 ------------------------------------------------------------------------------------------------
119371 XLA_AE_LINES_PKG.ValidateCurrentLine;
119372
119373 ------------------------------------------------------------------------------------
119374 -- 4219869 Business Flow
119375 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
119376 ------------------------------------------------------------------------------------
119377 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
119378
119379 ----------------------------------------------------------------------------------
119380 -- 4219869 Business Flow
119381 -- Update journal entry status -- Need to generate this within IF <condition>
119382 ----------------------------------------------------------------------------------
119383 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
119384 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
119385 ,p_balance_type_code => l_balance_type_code
119386 );
119387
119388 -------------------------------------------------------------------------------------------
119389 -- 4262811 - Generate the Accrual Reversal lines
119390 -------------------------------------------------------------------------------------------
119391 BEGIN
119392 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
119393 (g_array_event(p_event_id).array_value_num('header_index'));
119394 IF l_acc_rev_flag IS NULL THEN
119395 l_acc_rev_flag := 'N';
119396 END IF;
119397 EXCEPTION
119398 WHEN OTHERS THEN
119399 l_acc_rev_flag := 'N';
119400 END;
119401 --
119402 IF (l_acc_rev_flag = 'Y') THEN
119403
119404 -- 4645092 ------------------------------------------------------------------------------
119405 -- To allow MPA report to determine if it should generate report process
119406 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
119407 ------------------------------------------------------------------------------------------
119408
119409 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
119410 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
119411 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
119412 -- call ADRs
119413 -- Bug 4922099
119414 --
119415 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
119416 (NVL(l_actual_upg_option, 'N') = 'O') OR
119417 (NVL(l_enc_upg_option, 'N') = 'O')
119418 )
119419 THEN
119420 NULL;
119421 --
119422 --
119423
119424 l_ccid := AcctDerRule_4(
119425 p_application_id => p_application_id
119426 , p_ae_header_id => l_ae_header_id
119427 , p_source_4 => p_source_4
119428 , x_transaction_coa_id => l_adr_transaction_coa_id
119429 , x_accounting_coa_id => l_adr_accounting_coa_id
119430 , x_value_type_code => l_adr_value_type_code
119431 , p_side => 'NA'
119432 );
119433
119434 xla_ae_lines_pkg.set_ccid(
119435 p_code_combination_id => l_ccid
119436 , p_value_type_code => l_adr_value_type_code
119437 , p_transaction_coa_id => l_adr_transaction_coa_id
119438 , p_accounting_coa_id => l_adr_accounting_coa_id
119439 , p_adr_code => 'CST_DEFAULT'
119440 , p_adr_type_code => 'S'
119441 , p_component_type => l_component_type
119442 , p_component_code => l_component_code
119443 , p_component_type_code => l_component_type_code
119444 , p_component_appl_id => l_component_appl_id
119445 , p_amb_context_code => l_amb_context_code
119446 , p_side => 'NA'
119447 );
119448
119449
119450 --
119451 --
119452 END IF;
119453
119454 --
119455 -- Update the line information that should be overwritten
119456 --
119457 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
119458 p_header_num => 1);
119459 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
119460
119461 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
119462
119463 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
119464 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
119465 END IF;
119466
119467 --
119468 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
119469 --
119470 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
119471 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
119472 ELSE
119473 ---------------------------------------------------------------------------------------------------
119474 -- 4262811a Switch Sign
119475 ---------------------------------------------------------------------------------------------------
119476 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
119477 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
119478 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
119479 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
119480 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
119481 -- 5132302
119482 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
119483 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
119484
119485 END IF;
119486
119487 -- 4955764
119488 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
119489 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
119490
119491
119492 XLA_AE_LINES_PKG.ValidateCurrentLine;
119493 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
119494
119495 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
119496 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
119497 ,p_balance_type_code => l_balance_type_code);
119498
119499 END IF;
119500
119501 -----------------------------------------------------------------------------------------
119502 -- 4262811 Multiperiod Accounting
119503 -----------------------------------------------------------------------------------------
119504 -- No MPA option is assigned.
119505
119506
119507 END IF;
119508 END IF;
119509 --
119510
119511 --
119512 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
119513 trace
119514 (p_msg => 'END of AcctLineType_216'
119515 ,p_level => C_LEVEL_PROCEDURE
119516 ,p_module => l_log_module);
119517 END IF;
119518 --
119519 EXCEPTION
119520 WHEN xla_exceptions_pkg.application_exception THEN
119521 RAISE;
119522 WHEN OTHERS THEN
119523 xla_exceptions_pkg.raise_message
119524 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_216');
119525 END AcctLineType_216;
119526 --
119527
119528 ---------------------------------------
119529 --
119530 -- PRIVATE FUNCTION
119531 -- AcctLineType_217
119532 --
119533 ---------------------------------------
119534 PROCEDURE AcctLineType_217 (
119535 p_application_id IN NUMBER
119536 ,p_event_id IN NUMBER
119537 ,p_calculate_acctd_flag IN VARCHAR2
119538 ,p_calculate_g_l_flag IN VARCHAR2
119539 ,p_actual_flag IN OUT VARCHAR2
119540 ,p_balance_type_code OUT VARCHAR2
119541 ,p_gain_or_loss_ref OUT VARCHAR2
119542
119543 --Cost Management Default Account
119544 , p_source_4 IN NUMBER
119545 --DISTRIBUTION_IDENTIFIER
119546 , p_source_11 IN NUMBER
119547 --Distribution Type
119548 , p_source_12 IN VARCHAR2
119549 , p_source_12_meaning IN VARCHAR2
119550 --Entered Currency Code
119551 , p_source_15 IN VARCHAR2
119552 --Entered Amount
119553 , p_source_18 IN NUMBER
119554 --Currency Conversion Date
119555 , p_source_19 IN DATE
119556 --Currency Conversion Rate
119557 , p_source_20 IN NUMBER
119558 --Currency Conversion Type
119559 , p_source_21 IN VARCHAR2
119560 --Accounted Amount
119561 , p_source_22 IN NUMBER
119562 --Accounting Line Type
119563 , p_source_24 IN NUMBER
119564 )
119565 IS
119566
119567 l_component_type VARCHAR2(80);
119568 l_component_code VARCHAR2(30);
119569 l_component_type_code VARCHAR2(1);
119570 l_component_appl_id INTEGER;
119571 l_amb_context_code VARCHAR2(30);
119572 l_entity_code VARCHAR2(30);
119573 l_event_class_code VARCHAR2(30);
119574 l_ae_header_id NUMBER;
119575 l_event_type_code VARCHAR2(30);
119576 l_line_definition_code VARCHAR2(30);
119577 l_line_definition_owner_code VARCHAR2(1);
119578 --
119579 -- adr variables
119580 l_segment VARCHAR2(30);
119581 l_ccid NUMBER;
119582 l_adr_transaction_coa_id NUMBER;
119583 l_adr_accounting_coa_id NUMBER;
119584 l_adr_flexfield_segment_code VARCHAR2(30);
119585 l_adr_flex_value_set_id NUMBER;
119586 l_adr_value_type_code VARCHAR2(30);
119587 l_adr_value_combination_id NUMBER;
119588 l_adr_value_segment_code VARCHAR2(30);
119589
119590 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
119591 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
119592 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
119593 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
119594
119595 -- 4262811 Variables ------------------------------------------------------------------------------------------
119596 l_entered_amt_idx NUMBER;
119597 l_accted_amt_idx NUMBER;
119598 l_acc_rev_flag VARCHAR2(1);
119599 l_accrual_line_num NUMBER;
119600 l_tmp_amt NUMBER;
119601 l_acc_rev_natural_side_code VARCHAR2(1);
119602
119603 l_num_entries NUMBER;
119604 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
119605 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
119606 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
119607 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
119608 l_recog_line_1 NUMBER;
119609 l_recog_line_2 NUMBER;
119610
119611 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
119612 l_bflow_applied_to_amt NUMBER; -- 5132302
119613 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
119614
119615 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
119616
119617 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
119618 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
119619
119620 ---------------------------------------------------------------------------------------------------------------
119621
119622
119623 --
119624 -- bulk performance
119625 --
119626 l_balance_type_code VARCHAR2(1);
119627 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
119628 l_log_module VARCHAR2(240);
119629
119630 --
119631 -- Upgrade strategy
119632 --
119633 l_actual_upg_option VARCHAR2(1);
119634 l_enc_upg_option VARCHAR2(1);
119635
119636 --
119637 BEGIN
119638 --
119639 IF g_log_enabled THEN
119640 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_217';
119641 END IF;
119642 --
119643 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
119644
119645 trace
119646 (p_msg => 'BEGIN of AcctLineType_217'
119647 ,p_level => C_LEVEL_PROCEDURE
119648 ,p_module => l_log_module);
119649
119650 END IF;
119651 --
119652 l_component_type := 'AMB_JLT';
119653 l_component_code := 'PURCHASE_PRICE_VARIANCE';
119654 l_component_type_code := 'S';
119655 l_component_appl_id := 707;
119656 l_amb_context_code := 'DEFAULT';
119657 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
119658 l_event_class_code := 'USER_DEFINE';
119659 l_event_type_code := 'UFOB_SHIP_RECIPIENT_SHIP_NO_TP';
119660 l_line_definition_owner_code := 'S';
119661 l_line_definition_code := 'USER_FOB_SHIP_RECP_SHIP_NO_TP';
119662 --
119663 l_balance_type_code := 'A';
119664 l_segment := NULL;
119665 l_ccid := NULL;
119666 l_adr_transaction_coa_id := NULL;
119667 l_adr_accounting_coa_id := NULL;
119668 l_adr_flexfield_segment_code := NULL;
119669 l_adr_flex_value_set_id := NULL;
119670 l_adr_value_type_code := NULL;
119671 l_adr_value_combination_id := NULL;
119672 l_adr_value_segment_code := NULL;
119673
119674 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
119675 l_bflow_class_code := ''; -- 4219869 Business Flow
119676 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
119677 l_budgetary_control_flag := 'N';
119678
119679 l_bflow_applied_to_amt_idx := NULL; -- 5132302
119680 l_bflow_applied_to_amt := NULL; -- 5132302
119681 l_entered_amt_idx := NULL; -- 4262811
119682 l_accted_amt_idx := NULL; -- 4262811
119683 l_acc_rev_flag := NULL; -- 4262811
119684 l_accrual_line_num := NULL; -- 4262811
119685 l_tmp_amt := NULL; -- 4262811
119686 --
119687
119688 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
119689 l_balance_type_code <> 'B' THEN
119690 IF NVL(p_source_24,9E125) = 6
119691 THEN
119692
119693 --
119694 XLA_AE_LINES_PKG.SetNewLine;
119695
119696 p_balance_type_code := l_balance_type_code;
119697 -- set the flag so later we will know whether the gain loss line needs to be created
119698
119699 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
119700 p_actual_flag :='A';
119701 END IF;
119702
119703 --
119704 -- bulk performance
119705 --
119706 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
119707 p_header_num => 0); -- 4262811
119708 --
119709 -- set accounting line options
119710 --
119711 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
119712 p_natural_side_code => 'D'
119713 , p_gain_or_loss_flag => 'N'
119714 , p_gl_transfer_mode_code => 'S'
119715 , p_acct_entry_type_code => 'A'
119716 , p_switch_side_flag => 'Y'
119717 , p_merge_duplicate_code => 'N'
119718 );
119719 --
119720 l_acc_rev_natural_side_code := 'C'; -- 4262811
119721 --
119722 --
119723 -- set accounting line type info
119724 --
119725 xla_ae_lines_pkg.SetAcctLineType
119726 (p_component_type => l_component_type
119727 ,p_event_type_code => l_event_type_code
119728 ,p_line_definition_owner_code => l_line_definition_owner_code
119729 ,p_line_definition_code => l_line_definition_code
119730 ,p_accounting_line_code => l_component_code
119731 ,p_accounting_line_type_code => l_component_type_code
119732 ,p_accounting_line_appl_id => l_component_appl_id
119733 ,p_amb_context_code => l_amb_context_code
119734 ,p_entity_code => l_entity_code
119735 ,p_event_class_code => l_event_class_code);
119736 --
119737 -- set accounting class
119738 --
119739 xla_ae_lines_pkg.SetAcctClass(
119740 p_accounting_class_code => 'PURCHASE_PRICE_VARIANCE'
119741 , p_ae_header_id => l_ae_header_id
119742 );
119743
119744 --
119745 -- set rounding class
119746 --
119747 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
119748 'PURCHASE_PRICE_VARIANCE';
119749
119750 --
119751 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
119752 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
119753 --
119754 -- bulk performance
119755 --
119756 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
119757
119758 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
119759 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
119760
119761 -- 4955764
119762 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
119763 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
119764
119765 -- 4458381 Public Sector Enh
119766
119767 --
119768 -- set accounting attributes for the line type
119769 --
119770 l_entered_amt_idx := 3;
119771 l_accted_amt_idx := 8;
119772 l_bflow_applied_to_amt_idx := NULL; -- 5132302
119773 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
119774 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
119775 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
119776 l_rec_acct_attrs.array_char_value(2) := p_source_12;
119777 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
119778 l_rec_acct_attrs.array_num_value(3) := p_source_18;
119779 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
119780 l_rec_acct_attrs.array_char_value(4) := p_source_15;
119781 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
119782 l_rec_acct_attrs.array_date_value(5) := p_source_19;
119783 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
119784 l_rec_acct_attrs.array_num_value(6) := p_source_20;
119785 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
119786 l_rec_acct_attrs.array_char_value(7) := p_source_21;
119787 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
119788 l_rec_acct_attrs.array_num_value(8) := p_source_22;
119789
119790 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
119791 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
119792
119793 ---------------------------------------------------------------------------------------------------------------
119794 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
119795 ---------------------------------------------------------------------------------------------------------------
119796 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
119797
119798 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
119799 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
119800
119801 IF xla_accounting_cache_pkg.GetValueChar
119802 (p_source_code => 'LEDGER_CATEGORY_CODE'
119803 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
119804 AND l_bflow_method_code = 'PRIOR_ENTRY'
119805 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
119806 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
119807 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
119808 )
119809 THEN
119810 xla_ae_lines_pkg.BflowUpgEntry
119811 (p_business_method_code => l_bflow_method_code
119812 ,p_business_class_code => l_bflow_class_code
119813 ,p_balance_type => l_balance_type_code);
119814 ELSE
119815 NULL;
119816 -- No business flow processing for business flow method of NONE.
119817 END IF;
119818
119819 --
119820 -- call analytical criteria
119821 --
119822
119823 --
119824 -- call description
119825 --
119826 -- No description or it is inherited.
119827 --
119828 -- call ADRs
119829 -- Bug 4922099
119830 --
119831 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
119832 (NVL(l_actual_upg_option, 'N') = 'O') OR
119833 (NVL(l_enc_upg_option, 'N') = 'O')
119834 )
119835 THEN
119836 NULL;
119837 --
119838 --
119839
119840 l_ccid := AcctDerRule_4(
119841 p_application_id => p_application_id
119842 , p_ae_header_id => l_ae_header_id
119843 , p_source_4 => p_source_4
119844 , x_transaction_coa_id => l_adr_transaction_coa_id
119845 , x_accounting_coa_id => l_adr_accounting_coa_id
119846 , x_value_type_code => l_adr_value_type_code
119847 , p_side => 'NA'
119848 );
119849
119850 xla_ae_lines_pkg.set_ccid(
119851 p_code_combination_id => l_ccid
119852 , p_value_type_code => l_adr_value_type_code
119853 , p_transaction_coa_id => l_adr_transaction_coa_id
119854 , p_accounting_coa_id => l_adr_accounting_coa_id
119855 , p_adr_code => 'CST_DEFAULT'
119856 , p_adr_type_code => 'S'
119857 , p_component_type => l_component_type
119858 , p_component_code => l_component_code
119859 , p_component_type_code => l_component_type_code
119860 , p_component_appl_id => l_component_appl_id
119861 , p_amb_context_code => l_amb_context_code
119862 , p_side => 'NA'
119863 );
119864
119865
119866 --
119867 --
119868 END IF;
119869 --
119870 -- Bug 4922099
119871 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
119872 (NVL(l_enc_upg_option, 'N') = 'O')
119873 ) AND
119874 (l_bflow_method_code = 'PRIOR_ENTRY')
119875 )
119876 THEN
119877 IF
119878 --
119879 1 = 2
119880 --
119881 THEN
119882 xla_accounting_err_pkg.build_message
119883 (p_appli_s_name => 'XLA'
119884 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
119885 ,p_token_1 => 'LINE_NUMBER'
119886 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
119887 ,p_token_2 => 'LINE_TYPE_NAME'
119888 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
119889 l_component_type
119890 ,l_component_code
119891 ,l_component_type_code
119892 ,l_component_appl_id
119893 ,l_amb_context_code
119894 ,l_entity_code
119895 ,l_event_class_code
119896 )
119897 ,p_token_3 => 'OWNER'
119898 ,p_value_3 => xla_lookups_pkg.get_meaning(
119899 p_lookup_type => 'XLA_OWNER_TYPE'
119900 ,p_lookup_code => l_component_type_code
119901 )
119902 ,p_token_4 => 'PRODUCT_NAME'
119903 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
119904 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
119905 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
119906 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
119907 ,p_ae_header_id => NULL
119908 );
119909
119910 IF (C_LEVEL_ERROR>= g_log_level) THEN
119911 trace
119912 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
119913 ,p_level => C_LEVEL_ERROR
119914 ,p_module => l_log_module);
119915 END IF;
119916 END IF;
119917 END IF;
119918 --
119919 --
119920 ------------------------------------------------------------------------------------------------
119921 -- 4219869 Business Flow
119922 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
119923 -- Prior Entry. Currently, the following code is always generated.
119924 ------------------------------------------------------------------------------------------------
119925 XLA_AE_LINES_PKG.ValidateCurrentLine;
119926
119927 ------------------------------------------------------------------------------------
119928 -- 4219869 Business Flow
119929 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
119930 ------------------------------------------------------------------------------------
119931 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
119932
119933 ----------------------------------------------------------------------------------
119934 -- 4219869 Business Flow
119935 -- Update journal entry status -- Need to generate this within IF <condition>
119936 ----------------------------------------------------------------------------------
119937 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
119938 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
119939 ,p_balance_type_code => l_balance_type_code
119940 );
119941
119942 -------------------------------------------------------------------------------------------
119943 -- 4262811 - Generate the Accrual Reversal lines
119944 -------------------------------------------------------------------------------------------
119945 BEGIN
119946 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
119947 (g_array_event(p_event_id).array_value_num('header_index'));
119948 IF l_acc_rev_flag IS NULL THEN
119949 l_acc_rev_flag := 'N';
119950 END IF;
119951 EXCEPTION
119952 WHEN OTHERS THEN
119953 l_acc_rev_flag := 'N';
119954 END;
119955 --
119956 IF (l_acc_rev_flag = 'Y') THEN
119957
119958 -- 4645092 ------------------------------------------------------------------------------
119959 -- To allow MPA report to determine if it should generate report process
119960 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
119961 ------------------------------------------------------------------------------------------
119962
119963 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
119964 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
119965 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
119966 -- call ADRs
119967 -- Bug 4922099
119968 --
119969 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
119970 (NVL(l_actual_upg_option, 'N') = 'O') OR
119971 (NVL(l_enc_upg_option, 'N') = 'O')
119972 )
119973 THEN
119974 NULL;
119975 --
119976 --
119977
119978 l_ccid := AcctDerRule_4(
119979 p_application_id => p_application_id
119980 , p_ae_header_id => l_ae_header_id
119981 , p_source_4 => p_source_4
119982 , x_transaction_coa_id => l_adr_transaction_coa_id
119983 , x_accounting_coa_id => l_adr_accounting_coa_id
119984 , x_value_type_code => l_adr_value_type_code
119985 , p_side => 'NA'
119986 );
119987
119988 xla_ae_lines_pkg.set_ccid(
119989 p_code_combination_id => l_ccid
119990 , p_value_type_code => l_adr_value_type_code
119991 , p_transaction_coa_id => l_adr_transaction_coa_id
119992 , p_accounting_coa_id => l_adr_accounting_coa_id
119993 , p_adr_code => 'CST_DEFAULT'
119994 , p_adr_type_code => 'S'
119995 , p_component_type => l_component_type
119996 , p_component_code => l_component_code
119997 , p_component_type_code => l_component_type_code
119998 , p_component_appl_id => l_component_appl_id
119999 , p_amb_context_code => l_amb_context_code
120000 , p_side => 'NA'
120001 );
120002
120003
120004 --
120005 --
120006 END IF;
120007
120008 --
120009 -- Update the line information that should be overwritten
120010 --
120011 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
120012 p_header_num => 1);
120013 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
120014
120015 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
120016
120017 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
120018 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
120019 END IF;
120020
120021 --
120022 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
120023 --
120024 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
120025 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
120026 ELSE
120027 ---------------------------------------------------------------------------------------------------
120028 -- 4262811a Switch Sign
120029 ---------------------------------------------------------------------------------------------------
120030 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
120031 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
120032 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
120033 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
120034 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
120035 -- 5132302
120036 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
120037 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
120038
120039 END IF;
120040
120041 -- 4955764
120042 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
120043 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
120044
120045
120046 XLA_AE_LINES_PKG.ValidateCurrentLine;
120047 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
120048
120049 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
120050 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
120051 ,p_balance_type_code => l_balance_type_code);
120052
120053 END IF;
120054
120055 -----------------------------------------------------------------------------------------
120056 -- 4262811 Multiperiod Accounting
120057 -----------------------------------------------------------------------------------------
120058 -- No MPA option is assigned.
120059
120060
120061 END IF;
120062 END IF;
120063 --
120064
120065 --
120066 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
120067 trace
120068 (p_msg => 'END of AcctLineType_217'
120069 ,p_level => C_LEVEL_PROCEDURE
120070 ,p_module => l_log_module);
120071 END IF;
120072 --
120073 EXCEPTION
120074 WHEN xla_exceptions_pkg.application_exception THEN
120075 RAISE;
120076 WHEN OTHERS THEN
120077 xla_exceptions_pkg.raise_message
120078 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_217');
120079 END AcctLineType_217;
120080 --
120081
120082 ---------------------------------------
120083 --
120084 -- PRIVATE FUNCTION
120085 -- AcctLineType_218
120086 --
120087 ---------------------------------------
120088 PROCEDURE AcctLineType_218 (
120089 p_application_id IN NUMBER
120090 ,p_event_id IN NUMBER
120091 ,p_calculate_acctd_flag IN VARCHAR2
120092 ,p_calculate_g_l_flag IN VARCHAR2
120093 ,p_actual_flag IN OUT VARCHAR2
120094 ,p_balance_type_code OUT VARCHAR2
120095 ,p_gain_or_loss_ref OUT VARCHAR2
120096
120097 --Cost Management Default Account
120098 , p_source_4 IN NUMBER
120099 --DISTRIBUTION_IDENTIFIER
120100 , p_source_11 IN NUMBER
120101 --Distribution Type
120102 , p_source_12 IN VARCHAR2
120103 , p_source_12_meaning IN VARCHAR2
120104 --Entered Currency Code
120105 , p_source_15 IN VARCHAR2
120106 --Entered Amount
120107 , p_source_18 IN NUMBER
120108 --Currency Conversion Date
120109 , p_source_19 IN DATE
120110 --Currency Conversion Rate
120111 , p_source_20 IN NUMBER
120112 --Currency Conversion Type
120113 , p_source_21 IN VARCHAR2
120114 --Accounted Amount
120115 , p_source_22 IN NUMBER
120116 --Accounting Line Type
120117 , p_source_24 IN NUMBER
120118 )
120119 IS
120120
120121 l_component_type VARCHAR2(80);
120122 l_component_code VARCHAR2(30);
120123 l_component_type_code VARCHAR2(1);
120124 l_component_appl_id INTEGER;
120125 l_amb_context_code VARCHAR2(30);
120126 l_entity_code VARCHAR2(30);
120127 l_event_class_code VARCHAR2(30);
120128 l_ae_header_id NUMBER;
120129 l_event_type_code VARCHAR2(30);
120130 l_line_definition_code VARCHAR2(30);
120131 l_line_definition_owner_code VARCHAR2(1);
120132 --
120133 -- adr variables
120134 l_segment VARCHAR2(30);
120135 l_ccid NUMBER;
120136 l_adr_transaction_coa_id NUMBER;
120137 l_adr_accounting_coa_id NUMBER;
120138 l_adr_flexfield_segment_code VARCHAR2(30);
120139 l_adr_flex_value_set_id NUMBER;
120140 l_adr_value_type_code VARCHAR2(30);
120141 l_adr_value_combination_id NUMBER;
120142 l_adr_value_segment_code VARCHAR2(30);
120143
120144 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
120145 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
120146 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
120147 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
120148
120149 -- 4262811 Variables ------------------------------------------------------------------------------------------
120150 l_entered_amt_idx NUMBER;
120151 l_accted_amt_idx NUMBER;
120152 l_acc_rev_flag VARCHAR2(1);
120153 l_accrual_line_num NUMBER;
120154 l_tmp_amt NUMBER;
120155 l_acc_rev_natural_side_code VARCHAR2(1);
120156
120157 l_num_entries NUMBER;
120158 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
120159 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
120160 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
120161 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
120162 l_recog_line_1 NUMBER;
120163 l_recog_line_2 NUMBER;
120164
120165 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
120166 l_bflow_applied_to_amt NUMBER; -- 5132302
120167 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
120168
120169 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
120170
120171 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
120172 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
120173
120174 ---------------------------------------------------------------------------------------------------------------
120175
120176
120177 --
120178 -- bulk performance
120179 --
120180 l_balance_type_code VARCHAR2(1);
120181 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
120182 l_log_module VARCHAR2(240);
120183
120184 --
120185 -- Upgrade strategy
120186 --
120187 l_actual_upg_option VARCHAR2(1);
120188 l_enc_upg_option VARCHAR2(1);
120189
120190 --
120191 BEGIN
120192 --
120193 IF g_log_enabled THEN
120194 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_218';
120195 END IF;
120196 --
120197 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
120198
120199 trace
120200 (p_msg => 'BEGIN of AcctLineType_218'
120201 ,p_level => C_LEVEL_PROCEDURE
120202 ,p_module => l_log_module);
120203
120204 END IF;
120205 --
120206 l_component_type := 'AMB_JLT';
120207 l_component_code := 'PURCHASE_PRICE_VARIANCE';
120208 l_component_type_code := 'S';
120209 l_component_appl_id := 707;
120210 l_amb_context_code := 'DEFAULT';
120211 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
120212 l_event_class_code := 'DIR_INTERORG_SHIP';
120213 l_event_type_code := 'DIR_INTERORG_SHIP_ALL';
120214 l_line_definition_owner_code := 'S';
120215 l_line_definition_code := 'DIRECT_INTERORG_SHIP';
120216 --
120217 l_balance_type_code := 'A';
120218 l_segment := NULL;
120219 l_ccid := NULL;
120220 l_adr_transaction_coa_id := NULL;
120221 l_adr_accounting_coa_id := NULL;
120222 l_adr_flexfield_segment_code := NULL;
120223 l_adr_flex_value_set_id := NULL;
120224 l_adr_value_type_code := NULL;
120225 l_adr_value_combination_id := NULL;
120226 l_adr_value_segment_code := NULL;
120227
120228 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
120229 l_bflow_class_code := ''; -- 4219869 Business Flow
120230 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
120231 l_budgetary_control_flag := 'N';
120232
120233 l_bflow_applied_to_amt_idx := NULL; -- 5132302
120234 l_bflow_applied_to_amt := NULL; -- 5132302
120235 l_entered_amt_idx := NULL; -- 4262811
120236 l_accted_amt_idx := NULL; -- 4262811
120237 l_acc_rev_flag := NULL; -- 4262811
120238 l_accrual_line_num := NULL; -- 4262811
120239 l_tmp_amt := NULL; -- 4262811
120240 --
120241
120242 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
120243 l_balance_type_code <> 'B' THEN
120244 IF NVL(p_source_24,9E125) = 6
120245 THEN
120246
120247 --
120248 XLA_AE_LINES_PKG.SetNewLine;
120249
120250 p_balance_type_code := l_balance_type_code;
120251 -- set the flag so later we will know whether the gain loss line needs to be created
120252
120253 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
120254 p_actual_flag :='A';
120255 END IF;
120256
120257 --
120258 -- bulk performance
120259 --
120260 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
120261 p_header_num => 0); -- 4262811
120262 --
120263 -- set accounting line options
120264 --
120265 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
120266 p_natural_side_code => 'D'
120267 , p_gain_or_loss_flag => 'N'
120268 , p_gl_transfer_mode_code => 'S'
120269 , p_acct_entry_type_code => 'A'
120270 , p_switch_side_flag => 'Y'
120271 , p_merge_duplicate_code => 'N'
120272 );
120273 --
120274 l_acc_rev_natural_side_code := 'C'; -- 4262811
120275 --
120276 --
120277 -- set accounting line type info
120278 --
120279 xla_ae_lines_pkg.SetAcctLineType
120280 (p_component_type => l_component_type
120281 ,p_event_type_code => l_event_type_code
120282 ,p_line_definition_owner_code => l_line_definition_owner_code
120283 ,p_line_definition_code => l_line_definition_code
120284 ,p_accounting_line_code => l_component_code
120285 ,p_accounting_line_type_code => l_component_type_code
120286 ,p_accounting_line_appl_id => l_component_appl_id
120287 ,p_amb_context_code => l_amb_context_code
120288 ,p_entity_code => l_entity_code
120289 ,p_event_class_code => l_event_class_code);
120290 --
120291 -- set accounting class
120292 --
120293 xla_ae_lines_pkg.SetAcctClass(
120294 p_accounting_class_code => 'PURCHASE_PRICE_VARIANCE'
120295 , p_ae_header_id => l_ae_header_id
120296 );
120297
120298 --
120299 -- set rounding class
120300 --
120301 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
120302 'PURCHASE_PRICE_VARIANCE';
120303
120304 --
120305 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
120306 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
120307 --
120308 -- bulk performance
120309 --
120310 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
120311
120312 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
120313 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
120314
120315 -- 4955764
120316 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
120317 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
120318
120319 -- 4458381 Public Sector Enh
120320
120321 --
120322 -- set accounting attributes for the line type
120323 --
120324 l_entered_amt_idx := 3;
120325 l_accted_amt_idx := 8;
120326 l_bflow_applied_to_amt_idx := NULL; -- 5132302
120327 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
120328 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
120329 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
120330 l_rec_acct_attrs.array_char_value(2) := p_source_12;
120331 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
120332 l_rec_acct_attrs.array_num_value(3) := p_source_18;
120333 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
120334 l_rec_acct_attrs.array_char_value(4) := p_source_15;
120335 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
120336 l_rec_acct_attrs.array_date_value(5) := p_source_19;
120337 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
120338 l_rec_acct_attrs.array_num_value(6) := p_source_20;
120339 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
120340 l_rec_acct_attrs.array_char_value(7) := p_source_21;
120341 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
120342 l_rec_acct_attrs.array_num_value(8) := p_source_22;
120343
120344 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
120345 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
120346
120347 ---------------------------------------------------------------------------------------------------------------
120348 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
120349 ---------------------------------------------------------------------------------------------------------------
120350 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
120351
120352 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
120353 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
120354
120355 IF xla_accounting_cache_pkg.GetValueChar
120356 (p_source_code => 'LEDGER_CATEGORY_CODE'
120357 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
120358 AND l_bflow_method_code = 'PRIOR_ENTRY'
120359 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
120360 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
120361 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
120362 )
120363 THEN
120364 xla_ae_lines_pkg.BflowUpgEntry
120365 (p_business_method_code => l_bflow_method_code
120366 ,p_business_class_code => l_bflow_class_code
120367 ,p_balance_type => l_balance_type_code);
120368 ELSE
120369 NULL;
120370 -- No business flow processing for business flow method of NONE.
120371 END IF;
120372
120373 --
120374 -- call analytical criteria
120375 --
120376
120377 --
120378 -- call description
120379 --
120380 -- No description or it is inherited.
120381 --
120382 -- call ADRs
120383 -- Bug 4922099
120384 --
120385 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
120386 (NVL(l_actual_upg_option, 'N') = 'O') OR
120387 (NVL(l_enc_upg_option, 'N') = 'O')
120388 )
120389 THEN
120390 NULL;
120391 --
120392 --
120393
120394 l_ccid := AcctDerRule_4(
120395 p_application_id => p_application_id
120396 , p_ae_header_id => l_ae_header_id
120397 , p_source_4 => p_source_4
120398 , x_transaction_coa_id => l_adr_transaction_coa_id
120399 , x_accounting_coa_id => l_adr_accounting_coa_id
120400 , x_value_type_code => l_adr_value_type_code
120401 , p_side => 'NA'
120402 );
120403
120404 xla_ae_lines_pkg.set_ccid(
120405 p_code_combination_id => l_ccid
120406 , p_value_type_code => l_adr_value_type_code
120407 , p_transaction_coa_id => l_adr_transaction_coa_id
120408 , p_accounting_coa_id => l_adr_accounting_coa_id
120409 , p_adr_code => 'CST_DEFAULT'
120410 , p_adr_type_code => 'S'
120411 , p_component_type => l_component_type
120412 , p_component_code => l_component_code
120413 , p_component_type_code => l_component_type_code
120414 , p_component_appl_id => l_component_appl_id
120415 , p_amb_context_code => l_amb_context_code
120416 , p_side => 'NA'
120417 );
120418
120419
120420 --
120421 --
120422 END IF;
120423 --
120424 -- Bug 4922099
120425 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
120426 (NVL(l_enc_upg_option, 'N') = 'O')
120427 ) AND
120428 (l_bflow_method_code = 'PRIOR_ENTRY')
120429 )
120430 THEN
120431 IF
120432 --
120433 1 = 2
120434 --
120435 THEN
120436 xla_accounting_err_pkg.build_message
120437 (p_appli_s_name => 'XLA'
120438 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
120439 ,p_token_1 => 'LINE_NUMBER'
120440 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
120441 ,p_token_2 => 'LINE_TYPE_NAME'
120442 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
120443 l_component_type
120444 ,l_component_code
120445 ,l_component_type_code
120446 ,l_component_appl_id
120447 ,l_amb_context_code
120448 ,l_entity_code
120449 ,l_event_class_code
120450 )
120451 ,p_token_3 => 'OWNER'
120452 ,p_value_3 => xla_lookups_pkg.get_meaning(
120453 p_lookup_type => 'XLA_OWNER_TYPE'
120454 ,p_lookup_code => l_component_type_code
120455 )
120456 ,p_token_4 => 'PRODUCT_NAME'
120457 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
120458 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
120459 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
120460 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
120461 ,p_ae_header_id => NULL
120462 );
120463
120464 IF (C_LEVEL_ERROR>= g_log_level) THEN
120465 trace
120466 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
120467 ,p_level => C_LEVEL_ERROR
120468 ,p_module => l_log_module);
120469 END IF;
120470 END IF;
120471 END IF;
120472 --
120473 --
120474 ------------------------------------------------------------------------------------------------
120475 -- 4219869 Business Flow
120476 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
120477 -- Prior Entry. Currently, the following code is always generated.
120478 ------------------------------------------------------------------------------------------------
120479 XLA_AE_LINES_PKG.ValidateCurrentLine;
120480
120481 ------------------------------------------------------------------------------------
120482 -- 4219869 Business Flow
120483 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
120484 ------------------------------------------------------------------------------------
120485 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
120486
120487 ----------------------------------------------------------------------------------
120488 -- 4219869 Business Flow
120489 -- Update journal entry status -- Need to generate this within IF <condition>
120490 ----------------------------------------------------------------------------------
120491 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
120492 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
120493 ,p_balance_type_code => l_balance_type_code
120494 );
120495
120496 -------------------------------------------------------------------------------------------
120497 -- 4262811 - Generate the Accrual Reversal lines
120498 -------------------------------------------------------------------------------------------
120499 BEGIN
120500 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
120501 (g_array_event(p_event_id).array_value_num('header_index'));
120502 IF l_acc_rev_flag IS NULL THEN
120503 l_acc_rev_flag := 'N';
120504 END IF;
120505 EXCEPTION
120506 WHEN OTHERS THEN
120507 l_acc_rev_flag := 'N';
120508 END;
120509 --
120510 IF (l_acc_rev_flag = 'Y') THEN
120511
120512 -- 4645092 ------------------------------------------------------------------------------
120513 -- To allow MPA report to determine if it should generate report process
120514 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
120515 ------------------------------------------------------------------------------------------
120516
120517 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
120518 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
120519 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
120520 -- call ADRs
120521 -- Bug 4922099
120522 --
120523 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
120524 (NVL(l_actual_upg_option, 'N') = 'O') OR
120525 (NVL(l_enc_upg_option, 'N') = 'O')
120526 )
120527 THEN
120528 NULL;
120529 --
120530 --
120531
120532 l_ccid := AcctDerRule_4(
120533 p_application_id => p_application_id
120534 , p_ae_header_id => l_ae_header_id
120535 , p_source_4 => p_source_4
120536 , x_transaction_coa_id => l_adr_transaction_coa_id
120537 , x_accounting_coa_id => l_adr_accounting_coa_id
120538 , x_value_type_code => l_adr_value_type_code
120539 , p_side => 'NA'
120540 );
120541
120542 xla_ae_lines_pkg.set_ccid(
120543 p_code_combination_id => l_ccid
120544 , p_value_type_code => l_adr_value_type_code
120545 , p_transaction_coa_id => l_adr_transaction_coa_id
120546 , p_accounting_coa_id => l_adr_accounting_coa_id
120547 , p_adr_code => 'CST_DEFAULT'
120548 , p_adr_type_code => 'S'
120549 , p_component_type => l_component_type
120550 , p_component_code => l_component_code
120551 , p_component_type_code => l_component_type_code
120552 , p_component_appl_id => l_component_appl_id
120553 , p_amb_context_code => l_amb_context_code
120554 , p_side => 'NA'
120555 );
120556
120557
120558 --
120559 --
120560 END IF;
120561
120562 --
120563 -- Update the line information that should be overwritten
120564 --
120565 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
120566 p_header_num => 1);
120567 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
120568
120569 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
120570
120571 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
120572 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
120573 END IF;
120574
120575 --
120576 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
120577 --
120578 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
120579 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
120580 ELSE
120581 ---------------------------------------------------------------------------------------------------
120582 -- 4262811a Switch Sign
120583 ---------------------------------------------------------------------------------------------------
120584 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
120585 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
120586 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
120587 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
120588 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
120589 -- 5132302
120590 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
120591 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
120592
120593 END IF;
120594
120595 -- 4955764
120596 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
120597 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
120598
120599
120600 XLA_AE_LINES_PKG.ValidateCurrentLine;
120601 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
120602
120603 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
120604 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
120605 ,p_balance_type_code => l_balance_type_code);
120606
120607 END IF;
120608
120609 -----------------------------------------------------------------------------------------
120610 -- 4262811 Multiperiod Accounting
120611 -----------------------------------------------------------------------------------------
120612 -- No MPA option is assigned.
120613
120614
120615 END IF;
120616 END IF;
120617 --
120618
120619 --
120620 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
120621 trace
120622 (p_msg => 'END of AcctLineType_218'
120623 ,p_level => C_LEVEL_PROCEDURE
120624 ,p_module => l_log_module);
120625 END IF;
120626 --
120627 EXCEPTION
120628 WHEN xla_exceptions_pkg.application_exception THEN
120629 RAISE;
120630 WHEN OTHERS THEN
120631 xla_exceptions_pkg.raise_message
120632 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_218');
120633 END AcctLineType_218;
120634 --
120635
120636 ---------------------------------------
120637 --
120638 -- PRIVATE FUNCTION
120639 -- AcctLineType_219
120640 --
120641 ---------------------------------------
120642 PROCEDURE AcctLineType_219 (
120643 p_application_id IN NUMBER
120644 ,p_event_id IN NUMBER
120645 ,p_calculate_acctd_flag IN VARCHAR2
120646 ,p_calculate_g_l_flag IN VARCHAR2
120647 ,p_actual_flag IN OUT VARCHAR2
120648 ,p_balance_type_code OUT VARCHAR2
120649 ,p_gain_or_loss_ref OUT VARCHAR2
120650
120651 --Cost Management Default Account
120652 , p_source_4 IN NUMBER
120653 --DISTRIBUTION_IDENTIFIER
120654 , p_source_11 IN NUMBER
120655 --Distribution Type
120656 , p_source_12 IN VARCHAR2
120657 , p_source_12_meaning IN VARCHAR2
120658 --Entered Currency Code
120659 , p_source_15 IN VARCHAR2
120660 --Entered Amount
120661 , p_source_18 IN NUMBER
120662 --Currency Conversion Date
120663 , p_source_19 IN DATE
120664 --Currency Conversion Rate
120665 , p_source_20 IN NUMBER
120666 --Currency Conversion Type
120667 , p_source_21 IN VARCHAR2
120668 --Accounted Amount
120669 , p_source_22 IN NUMBER
120670 --Accounting Line Type
120671 , p_source_24 IN NUMBER
120672 )
120673 IS
120674
120675 l_component_type VARCHAR2(80);
120676 l_component_code VARCHAR2(30);
120677 l_component_type_code VARCHAR2(1);
120678 l_component_appl_id INTEGER;
120679 l_amb_context_code VARCHAR2(30);
120680 l_entity_code VARCHAR2(30);
120681 l_event_class_code VARCHAR2(30);
120682 l_ae_header_id NUMBER;
120683 l_event_type_code VARCHAR2(30);
120684 l_line_definition_code VARCHAR2(30);
120685 l_line_definition_owner_code VARCHAR2(1);
120686 --
120687 -- adr variables
120688 l_segment VARCHAR2(30);
120689 l_ccid NUMBER;
120690 l_adr_transaction_coa_id NUMBER;
120691 l_adr_accounting_coa_id NUMBER;
120692 l_adr_flexfield_segment_code VARCHAR2(30);
120693 l_adr_flex_value_set_id NUMBER;
120694 l_adr_value_type_code VARCHAR2(30);
120695 l_adr_value_combination_id NUMBER;
120696 l_adr_value_segment_code VARCHAR2(30);
120697
120698 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
120699 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
120700 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
120701 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
120702
120703 -- 4262811 Variables ------------------------------------------------------------------------------------------
120704 l_entered_amt_idx NUMBER;
120705 l_accted_amt_idx NUMBER;
120706 l_acc_rev_flag VARCHAR2(1);
120707 l_accrual_line_num NUMBER;
120708 l_tmp_amt NUMBER;
120709 l_acc_rev_natural_side_code VARCHAR2(1);
120710
120711 l_num_entries NUMBER;
120712 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
120713 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
120714 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
120715 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
120716 l_recog_line_1 NUMBER;
120717 l_recog_line_2 NUMBER;
120718
120719 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
120720 l_bflow_applied_to_amt NUMBER; -- 5132302
120721 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
120722
120723 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
120724
120725 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
120726 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
120727
120728 ---------------------------------------------------------------------------------------------------------------
120729
120730
120731 --
120732 -- bulk performance
120733 --
120734 l_balance_type_code VARCHAR2(1);
120735 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
120736 l_log_module VARCHAR2(240);
120737
120738 --
120739 -- Upgrade strategy
120740 --
120741 l_actual_upg_option VARCHAR2(1);
120742 l_enc_upg_option VARCHAR2(1);
120743
120744 --
120745 BEGIN
120746 --
120747 IF g_log_enabled THEN
120748 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_219';
120749 END IF;
120750 --
120751 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
120752
120753 trace
120754 (p_msg => 'BEGIN of AcctLineType_219'
120755 ,p_level => C_LEVEL_PROCEDURE
120756 ,p_module => l_log_module);
120757
120758 END IF;
120759 --
120760 l_component_type := 'AMB_JLT';
120761 l_component_code := 'PURCHASE_PRICE_VARIANCE';
120762 l_component_type_code := 'S';
120763 l_component_appl_id := 707;
120764 l_amb_context_code := 'DEFAULT';
120765 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
120766 l_event_class_code := 'FOB_SHIP_RECIPIENT_SHIP';
120767 l_event_type_code := 'FOB_SHIP_RECIPIENT_SHIP_ALL';
120768 l_line_definition_owner_code := 'S';
120769 l_line_definition_code := 'FOB_SHIP_RECIPIENT_SHIP';
120770 --
120771 l_balance_type_code := 'A';
120772 l_segment := NULL;
120773 l_ccid := NULL;
120774 l_adr_transaction_coa_id := NULL;
120775 l_adr_accounting_coa_id := NULL;
120776 l_adr_flexfield_segment_code := NULL;
120777 l_adr_flex_value_set_id := NULL;
120778 l_adr_value_type_code := NULL;
120779 l_adr_value_combination_id := NULL;
120780 l_adr_value_segment_code := NULL;
120781
120782 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
120783 l_bflow_class_code := ''; -- 4219869 Business Flow
120784 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
120785 l_budgetary_control_flag := 'N';
120786
120787 l_bflow_applied_to_amt_idx := NULL; -- 5132302
120788 l_bflow_applied_to_amt := NULL; -- 5132302
120789 l_entered_amt_idx := NULL; -- 4262811
120790 l_accted_amt_idx := NULL; -- 4262811
120791 l_acc_rev_flag := NULL; -- 4262811
120792 l_accrual_line_num := NULL; -- 4262811
120793 l_tmp_amt := NULL; -- 4262811
120794 --
120795
120796 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
120797 l_balance_type_code <> 'B' THEN
120798 IF NVL(p_source_24,9E125) = 6
120799 THEN
120800
120801 --
120802 XLA_AE_LINES_PKG.SetNewLine;
120803
120804 p_balance_type_code := l_balance_type_code;
120805 -- set the flag so later we will know whether the gain loss line needs to be created
120806
120807 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
120808 p_actual_flag :='A';
120809 END IF;
120810
120811 --
120812 -- bulk performance
120813 --
120814 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
120815 p_header_num => 0); -- 4262811
120816 --
120817 -- set accounting line options
120818 --
120819 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
120820 p_natural_side_code => 'D'
120821 , p_gain_or_loss_flag => 'N'
120822 , p_gl_transfer_mode_code => 'S'
120823 , p_acct_entry_type_code => 'A'
120824 , p_switch_side_flag => 'Y'
120825 , p_merge_duplicate_code => 'N'
120826 );
120827 --
120828 l_acc_rev_natural_side_code := 'C'; -- 4262811
120829 --
120830 --
120831 -- set accounting line type info
120832 --
120833 xla_ae_lines_pkg.SetAcctLineType
120834 (p_component_type => l_component_type
120835 ,p_event_type_code => l_event_type_code
120836 ,p_line_definition_owner_code => l_line_definition_owner_code
120837 ,p_line_definition_code => l_line_definition_code
120838 ,p_accounting_line_code => l_component_code
120839 ,p_accounting_line_type_code => l_component_type_code
120840 ,p_accounting_line_appl_id => l_component_appl_id
120841 ,p_amb_context_code => l_amb_context_code
120842 ,p_entity_code => l_entity_code
120843 ,p_event_class_code => l_event_class_code);
120844 --
120845 -- set accounting class
120846 --
120847 xla_ae_lines_pkg.SetAcctClass(
120848 p_accounting_class_code => 'PURCHASE_PRICE_VARIANCE'
120849 , p_ae_header_id => l_ae_header_id
120850 );
120851
120852 --
120853 -- set rounding class
120854 --
120855 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
120856 'PURCHASE_PRICE_VARIANCE';
120857
120858 --
120859 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
120860 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
120861 --
120862 -- bulk performance
120863 --
120864 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
120865
120866 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
120867 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
120868
120869 -- 4955764
120870 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
120871 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
120872
120873 -- 4458381 Public Sector Enh
120874
120875 --
120876 -- set accounting attributes for the line type
120877 --
120878 l_entered_amt_idx := 3;
120879 l_accted_amt_idx := 8;
120880 l_bflow_applied_to_amt_idx := NULL; -- 5132302
120881 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
120882 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
120883 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
120884 l_rec_acct_attrs.array_char_value(2) := p_source_12;
120885 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
120886 l_rec_acct_attrs.array_num_value(3) := p_source_18;
120887 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
120888 l_rec_acct_attrs.array_char_value(4) := p_source_15;
120889 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
120890 l_rec_acct_attrs.array_date_value(5) := p_source_19;
120891 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
120892 l_rec_acct_attrs.array_num_value(6) := p_source_20;
120893 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
120894 l_rec_acct_attrs.array_char_value(7) := p_source_21;
120895 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
120896 l_rec_acct_attrs.array_num_value(8) := p_source_22;
120897
120898 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
120899 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
120900
120901 ---------------------------------------------------------------------------------------------------------------
120902 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
120903 ---------------------------------------------------------------------------------------------------------------
120904 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
120905
120906 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
120907 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
120908
120909 IF xla_accounting_cache_pkg.GetValueChar
120910 (p_source_code => 'LEDGER_CATEGORY_CODE'
120911 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
120912 AND l_bflow_method_code = 'PRIOR_ENTRY'
120913 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
120914 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
120915 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
120916 )
120917 THEN
120918 xla_ae_lines_pkg.BflowUpgEntry
120919 (p_business_method_code => l_bflow_method_code
120920 ,p_business_class_code => l_bflow_class_code
120921 ,p_balance_type => l_balance_type_code);
120922 ELSE
120923 NULL;
120924 -- No business flow processing for business flow method of NONE.
120925 END IF;
120926
120927 --
120928 -- call analytical criteria
120929 --
120930
120931 --
120932 -- call description
120933 --
120934 -- No description or it is inherited.
120935 --
120936 -- call ADRs
120937 -- Bug 4922099
120938 --
120939 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
120940 (NVL(l_actual_upg_option, 'N') = 'O') OR
120941 (NVL(l_enc_upg_option, 'N') = 'O')
120942 )
120943 THEN
120944 NULL;
120945 --
120946 --
120947
120948 l_ccid := AcctDerRule_4(
120949 p_application_id => p_application_id
120950 , p_ae_header_id => l_ae_header_id
120951 , p_source_4 => p_source_4
120952 , x_transaction_coa_id => l_adr_transaction_coa_id
120953 , x_accounting_coa_id => l_adr_accounting_coa_id
120954 , x_value_type_code => l_adr_value_type_code
120955 , p_side => 'NA'
120956 );
120957
120958 xla_ae_lines_pkg.set_ccid(
120959 p_code_combination_id => l_ccid
120960 , p_value_type_code => l_adr_value_type_code
120961 , p_transaction_coa_id => l_adr_transaction_coa_id
120962 , p_accounting_coa_id => l_adr_accounting_coa_id
120963 , p_adr_code => 'CST_DEFAULT'
120964 , p_adr_type_code => 'S'
120965 , p_component_type => l_component_type
120966 , p_component_code => l_component_code
120967 , p_component_type_code => l_component_type_code
120968 , p_component_appl_id => l_component_appl_id
120969 , p_amb_context_code => l_amb_context_code
120970 , p_side => 'NA'
120971 );
120972
120973
120974 --
120975 --
120976 END IF;
120977 --
120978 -- Bug 4922099
120979 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
120980 (NVL(l_enc_upg_option, 'N') = 'O')
120981 ) AND
120982 (l_bflow_method_code = 'PRIOR_ENTRY')
120983 )
120984 THEN
120985 IF
120986 --
120987 1 = 2
120988 --
120989 THEN
120990 xla_accounting_err_pkg.build_message
120991 (p_appli_s_name => 'XLA'
120992 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
120993 ,p_token_1 => 'LINE_NUMBER'
120994 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
120995 ,p_token_2 => 'LINE_TYPE_NAME'
120996 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
120997 l_component_type
120998 ,l_component_code
120999 ,l_component_type_code
121000 ,l_component_appl_id
121001 ,l_amb_context_code
121002 ,l_entity_code
121003 ,l_event_class_code
121004 )
121005 ,p_token_3 => 'OWNER'
121006 ,p_value_3 => xla_lookups_pkg.get_meaning(
121007 p_lookup_type => 'XLA_OWNER_TYPE'
121008 ,p_lookup_code => l_component_type_code
121009 )
121010 ,p_token_4 => 'PRODUCT_NAME'
121011 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
121012 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
121013 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
121014 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
121015 ,p_ae_header_id => NULL
121016 );
121017
121018 IF (C_LEVEL_ERROR>= g_log_level) THEN
121019 trace
121020 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
121021 ,p_level => C_LEVEL_ERROR
121022 ,p_module => l_log_module);
121023 END IF;
121024 END IF;
121025 END IF;
121026 --
121027 --
121028 ------------------------------------------------------------------------------------------------
121029 -- 4219869 Business Flow
121030 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
121031 -- Prior Entry. Currently, the following code is always generated.
121032 ------------------------------------------------------------------------------------------------
121033 XLA_AE_LINES_PKG.ValidateCurrentLine;
121034
121035 ------------------------------------------------------------------------------------
121036 -- 4219869 Business Flow
121037 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
121038 ------------------------------------------------------------------------------------
121039 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
121040
121041 ----------------------------------------------------------------------------------
121042 -- 4219869 Business Flow
121043 -- Update journal entry status -- Need to generate this within IF <condition>
121044 ----------------------------------------------------------------------------------
121045 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
121046 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
121047 ,p_balance_type_code => l_balance_type_code
121048 );
121049
121050 -------------------------------------------------------------------------------------------
121051 -- 4262811 - Generate the Accrual Reversal lines
121052 -------------------------------------------------------------------------------------------
121053 BEGIN
121054 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
121055 (g_array_event(p_event_id).array_value_num('header_index'));
121056 IF l_acc_rev_flag IS NULL THEN
121057 l_acc_rev_flag := 'N';
121058 END IF;
121059 EXCEPTION
121060 WHEN OTHERS THEN
121061 l_acc_rev_flag := 'N';
121062 END;
121063 --
121064 IF (l_acc_rev_flag = 'Y') THEN
121065
121066 -- 4645092 ------------------------------------------------------------------------------
121067 -- To allow MPA report to determine if it should generate report process
121068 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
121069 ------------------------------------------------------------------------------------------
121070
121071 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
121072 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
121073 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
121074 -- call ADRs
121075 -- Bug 4922099
121076 --
121077 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
121078 (NVL(l_actual_upg_option, 'N') = 'O') OR
121079 (NVL(l_enc_upg_option, 'N') = 'O')
121080 )
121081 THEN
121082 NULL;
121083 --
121084 --
121085
121086 l_ccid := AcctDerRule_4(
121087 p_application_id => p_application_id
121088 , p_ae_header_id => l_ae_header_id
121089 , p_source_4 => p_source_4
121090 , x_transaction_coa_id => l_adr_transaction_coa_id
121091 , x_accounting_coa_id => l_adr_accounting_coa_id
121092 , x_value_type_code => l_adr_value_type_code
121093 , p_side => 'NA'
121094 );
121095
121096 xla_ae_lines_pkg.set_ccid(
121097 p_code_combination_id => l_ccid
121098 , p_value_type_code => l_adr_value_type_code
121099 , p_transaction_coa_id => l_adr_transaction_coa_id
121100 , p_accounting_coa_id => l_adr_accounting_coa_id
121101 , p_adr_code => 'CST_DEFAULT'
121102 , p_adr_type_code => 'S'
121103 , p_component_type => l_component_type
121104 , p_component_code => l_component_code
121105 , p_component_type_code => l_component_type_code
121106 , p_component_appl_id => l_component_appl_id
121107 , p_amb_context_code => l_amb_context_code
121108 , p_side => 'NA'
121109 );
121110
121111
121112 --
121113 --
121114 END IF;
121115
121116 --
121117 -- Update the line information that should be overwritten
121118 --
121119 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
121120 p_header_num => 1);
121121 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
121122
121123 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
121124
121125 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
121126 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
121127 END IF;
121128
121129 --
121130 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
121131 --
121132 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
121133 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
121134 ELSE
121135 ---------------------------------------------------------------------------------------------------
121136 -- 4262811a Switch Sign
121137 ---------------------------------------------------------------------------------------------------
121138 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
121139 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
121140 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
121141 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
121142 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
121143 -- 5132302
121144 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
121145 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
121146
121147 END IF;
121148
121149 -- 4955764
121150 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
121151 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
121152
121153
121154 XLA_AE_LINES_PKG.ValidateCurrentLine;
121155 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
121156
121157 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
121158 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
121159 ,p_balance_type_code => l_balance_type_code);
121160
121161 END IF;
121162
121163 -----------------------------------------------------------------------------------------
121164 -- 4262811 Multiperiod Accounting
121165 -----------------------------------------------------------------------------------------
121166 -- No MPA option is assigned.
121167
121168
121169 END IF;
121170 END IF;
121171 --
121172
121173 --
121174 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
121175 trace
121176 (p_msg => 'END of AcctLineType_219'
121177 ,p_level => C_LEVEL_PROCEDURE
121178 ,p_module => l_log_module);
121179 END IF;
121180 --
121181 EXCEPTION
121182 WHEN xla_exceptions_pkg.application_exception THEN
121183 RAISE;
121184 WHEN OTHERS THEN
121185 xla_exceptions_pkg.raise_message
121186 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_219');
121187 END AcctLineType_219;
121188 --
121189
121190 ---------------------------------------
121191 --
121192 -- PRIVATE FUNCTION
121193 -- AcctLineType_220
121194 --
121195 ---------------------------------------
121196 PROCEDURE AcctLineType_220 (
121197 p_application_id IN NUMBER
121198 ,p_event_id IN NUMBER
121199 ,p_calculate_acctd_flag IN VARCHAR2
121200 ,p_calculate_g_l_flag IN VARCHAR2
121201 ,p_actual_flag IN OUT VARCHAR2
121202 ,p_balance_type_code OUT VARCHAR2
121203 ,p_gain_or_loss_ref OUT VARCHAR2
121204
121205 --Cost Management Default Account
121206 , p_source_4 IN NUMBER
121207 --DISTRIBUTION_IDENTIFIER
121208 , p_source_11 IN NUMBER
121209 --Distribution Type
121210 , p_source_12 IN VARCHAR2
121211 , p_source_12_meaning IN VARCHAR2
121212 --Entered Currency Code
121213 , p_source_15 IN VARCHAR2
121214 --Entered Amount
121215 , p_source_18 IN NUMBER
121216 --Currency Conversion Date
121217 , p_source_19 IN DATE
121218 --Currency Conversion Rate
121219 , p_source_20 IN NUMBER
121220 --Currency Conversion Type
121221 , p_source_21 IN VARCHAR2
121222 --Accounted Amount
121223 , p_source_22 IN NUMBER
121224 --Accounting Line Type
121225 , p_source_24 IN NUMBER
121226 )
121227 IS
121228
121229 l_component_type VARCHAR2(80);
121230 l_component_code VARCHAR2(30);
121231 l_component_type_code VARCHAR2(1);
121232 l_component_appl_id INTEGER;
121233 l_amb_context_code VARCHAR2(30);
121234 l_entity_code VARCHAR2(30);
121235 l_event_class_code VARCHAR2(30);
121236 l_ae_header_id NUMBER;
121237 l_event_type_code VARCHAR2(30);
121238 l_line_definition_code VARCHAR2(30);
121239 l_line_definition_owner_code VARCHAR2(1);
121240 --
121241 -- adr variables
121242 l_segment VARCHAR2(30);
121243 l_ccid NUMBER;
121244 l_adr_transaction_coa_id NUMBER;
121245 l_adr_accounting_coa_id NUMBER;
121246 l_adr_flexfield_segment_code VARCHAR2(30);
121247 l_adr_flex_value_set_id NUMBER;
121248 l_adr_value_type_code VARCHAR2(30);
121249 l_adr_value_combination_id NUMBER;
121250 l_adr_value_segment_code VARCHAR2(30);
121251
121252 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
121253 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
121254 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
121255 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
121256
121257 -- 4262811 Variables ------------------------------------------------------------------------------------------
121258 l_entered_amt_idx NUMBER;
121259 l_accted_amt_idx NUMBER;
121260 l_acc_rev_flag VARCHAR2(1);
121261 l_accrual_line_num NUMBER;
121262 l_tmp_amt NUMBER;
121263 l_acc_rev_natural_side_code VARCHAR2(1);
121264
121265 l_num_entries NUMBER;
121266 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
121267 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
121268 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
121269 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
121270 l_recog_line_1 NUMBER;
121271 l_recog_line_2 NUMBER;
121272
121273 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
121274 l_bflow_applied_to_amt NUMBER; -- 5132302
121275 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
121276
121277 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
121278
121279 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
121280 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
121281
121282 ---------------------------------------------------------------------------------------------------------------
121283
121284
121285 --
121286 -- bulk performance
121287 --
121288 l_balance_type_code VARCHAR2(1);
121289 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
121290 l_log_module VARCHAR2(240);
121291
121292 --
121293 -- Upgrade strategy
121294 --
121295 l_actual_upg_option VARCHAR2(1);
121296 l_enc_upg_option VARCHAR2(1);
121297
121298 --
121299 BEGIN
121300 --
121301 IF g_log_enabled THEN
121302 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_220';
121303 END IF;
121304 --
121305 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
121306
121307 trace
121308 (p_msg => 'BEGIN of AcctLineType_220'
121309 ,p_level => C_LEVEL_PROCEDURE
121310 ,p_module => l_log_module);
121311
121312 END IF;
121313 --
121314 l_component_type := 'AMB_JLT';
121315 l_component_code := 'PURCHASE_PRICE_VARIANCE';
121316 l_component_type_code := 'S';
121317 l_component_appl_id := 707;
121318 l_amb_context_code := 'DEFAULT';
121319 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
121320 l_event_class_code := 'USER_DEFINE';
121321 l_event_type_code := 'UDIR_INTERORG_RCPT_NO_TP';
121322 l_line_definition_owner_code := 'S';
121323 l_line_definition_code := 'USER_DIR_INTERORG_RCPT_NO_TP';
121324 --
121325 l_balance_type_code := 'A';
121326 l_segment := NULL;
121327 l_ccid := NULL;
121328 l_adr_transaction_coa_id := NULL;
121329 l_adr_accounting_coa_id := NULL;
121330 l_adr_flexfield_segment_code := NULL;
121331 l_adr_flex_value_set_id := NULL;
121332 l_adr_value_type_code := NULL;
121333 l_adr_value_combination_id := NULL;
121334 l_adr_value_segment_code := NULL;
121335
121336 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
121337 l_bflow_class_code := ''; -- 4219869 Business Flow
121338 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
121339 l_budgetary_control_flag := 'N';
121340
121341 l_bflow_applied_to_amt_idx := NULL; -- 5132302
121342 l_bflow_applied_to_amt := NULL; -- 5132302
121343 l_entered_amt_idx := NULL; -- 4262811
121344 l_accted_amt_idx := NULL; -- 4262811
121345 l_acc_rev_flag := NULL; -- 4262811
121346 l_accrual_line_num := NULL; -- 4262811
121347 l_tmp_amt := NULL; -- 4262811
121348 --
121349
121350 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
121351 l_balance_type_code <> 'B' THEN
121352 IF NVL(p_source_24,9E125) = 6
121353 THEN
121354
121355 --
121356 XLA_AE_LINES_PKG.SetNewLine;
121357
121358 p_balance_type_code := l_balance_type_code;
121359 -- set the flag so later we will know whether the gain loss line needs to be created
121360
121361 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
121362 p_actual_flag :='A';
121363 END IF;
121364
121365 --
121366 -- bulk performance
121367 --
121368 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
121369 p_header_num => 0); -- 4262811
121370 --
121371 -- set accounting line options
121372 --
121373 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
121374 p_natural_side_code => 'D'
121375 , p_gain_or_loss_flag => 'N'
121376 , p_gl_transfer_mode_code => 'S'
121377 , p_acct_entry_type_code => 'A'
121378 , p_switch_side_flag => 'Y'
121379 , p_merge_duplicate_code => 'N'
121380 );
121381 --
121382 l_acc_rev_natural_side_code := 'C'; -- 4262811
121383 --
121384 --
121385 -- set accounting line type info
121386 --
121387 xla_ae_lines_pkg.SetAcctLineType
121388 (p_component_type => l_component_type
121389 ,p_event_type_code => l_event_type_code
121390 ,p_line_definition_owner_code => l_line_definition_owner_code
121391 ,p_line_definition_code => l_line_definition_code
121392 ,p_accounting_line_code => l_component_code
121393 ,p_accounting_line_type_code => l_component_type_code
121394 ,p_accounting_line_appl_id => l_component_appl_id
121395 ,p_amb_context_code => l_amb_context_code
121396 ,p_entity_code => l_entity_code
121397 ,p_event_class_code => l_event_class_code);
121398 --
121399 -- set accounting class
121400 --
121401 xla_ae_lines_pkg.SetAcctClass(
121402 p_accounting_class_code => 'PURCHASE_PRICE_VARIANCE'
121403 , p_ae_header_id => l_ae_header_id
121404 );
121405
121406 --
121407 -- set rounding class
121408 --
121409 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
121410 'PURCHASE_PRICE_VARIANCE';
121411
121412 --
121413 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
121414 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
121415 --
121416 -- bulk performance
121417 --
121418 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
121419
121420 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
121421 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
121422
121423 -- 4955764
121424 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
121425 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
121426
121427 -- 4458381 Public Sector Enh
121428
121429 --
121430 -- set accounting attributes for the line type
121431 --
121432 l_entered_amt_idx := 3;
121433 l_accted_amt_idx := 8;
121434 l_bflow_applied_to_amt_idx := NULL; -- 5132302
121435 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
121436 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
121437 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
121438 l_rec_acct_attrs.array_char_value(2) := p_source_12;
121439 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
121440 l_rec_acct_attrs.array_num_value(3) := p_source_18;
121441 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
121442 l_rec_acct_attrs.array_char_value(4) := p_source_15;
121443 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
121444 l_rec_acct_attrs.array_date_value(5) := p_source_19;
121445 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
121446 l_rec_acct_attrs.array_num_value(6) := p_source_20;
121447 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
121448 l_rec_acct_attrs.array_char_value(7) := p_source_21;
121449 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
121450 l_rec_acct_attrs.array_num_value(8) := p_source_22;
121451
121452 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
121453 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
121454
121455 ---------------------------------------------------------------------------------------------------------------
121456 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
121457 ---------------------------------------------------------------------------------------------------------------
121458 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
121459
121460 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
121461 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
121462
121463 IF xla_accounting_cache_pkg.GetValueChar
121464 (p_source_code => 'LEDGER_CATEGORY_CODE'
121465 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
121466 AND l_bflow_method_code = 'PRIOR_ENTRY'
121467 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
121468 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
121469 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
121470 )
121471 THEN
121472 xla_ae_lines_pkg.BflowUpgEntry
121473 (p_business_method_code => l_bflow_method_code
121474 ,p_business_class_code => l_bflow_class_code
121475 ,p_balance_type => l_balance_type_code);
121476 ELSE
121477 NULL;
121478 -- No business flow processing for business flow method of NONE.
121479 END IF;
121480
121481 --
121482 -- call analytical criteria
121483 --
121484
121485 --
121486 -- call description
121487 --
121488 -- No description or it is inherited.
121489 --
121490 -- call ADRs
121491 -- Bug 4922099
121492 --
121493 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
121494 (NVL(l_actual_upg_option, 'N') = 'O') OR
121495 (NVL(l_enc_upg_option, 'N') = 'O')
121496 )
121497 THEN
121498 NULL;
121499 --
121500 --
121501
121502 l_ccid := AcctDerRule_4(
121503 p_application_id => p_application_id
121504 , p_ae_header_id => l_ae_header_id
121505 , p_source_4 => p_source_4
121506 , x_transaction_coa_id => l_adr_transaction_coa_id
121507 , x_accounting_coa_id => l_adr_accounting_coa_id
121508 , x_value_type_code => l_adr_value_type_code
121509 , p_side => 'NA'
121510 );
121511
121512 xla_ae_lines_pkg.set_ccid(
121513 p_code_combination_id => l_ccid
121514 , p_value_type_code => l_adr_value_type_code
121515 , p_transaction_coa_id => l_adr_transaction_coa_id
121516 , p_accounting_coa_id => l_adr_accounting_coa_id
121517 , p_adr_code => 'CST_DEFAULT'
121518 , p_adr_type_code => 'S'
121519 , p_component_type => l_component_type
121520 , p_component_code => l_component_code
121521 , p_component_type_code => l_component_type_code
121522 , p_component_appl_id => l_component_appl_id
121523 , p_amb_context_code => l_amb_context_code
121524 , p_side => 'NA'
121525 );
121526
121527
121528 --
121529 --
121530 END IF;
121531 --
121532 -- Bug 4922099
121533 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
121534 (NVL(l_enc_upg_option, 'N') = 'O')
121535 ) AND
121536 (l_bflow_method_code = 'PRIOR_ENTRY')
121537 )
121538 THEN
121539 IF
121540 --
121541 1 = 2
121542 --
121543 THEN
121544 xla_accounting_err_pkg.build_message
121545 (p_appli_s_name => 'XLA'
121546 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
121547 ,p_token_1 => 'LINE_NUMBER'
121548 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
121549 ,p_token_2 => 'LINE_TYPE_NAME'
121550 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
121551 l_component_type
121552 ,l_component_code
121553 ,l_component_type_code
121554 ,l_component_appl_id
121555 ,l_amb_context_code
121556 ,l_entity_code
121557 ,l_event_class_code
121558 )
121559 ,p_token_3 => 'OWNER'
121560 ,p_value_3 => xla_lookups_pkg.get_meaning(
121561 p_lookup_type => 'XLA_OWNER_TYPE'
121562 ,p_lookup_code => l_component_type_code
121563 )
121564 ,p_token_4 => 'PRODUCT_NAME'
121565 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
121566 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
121567 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
121568 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
121569 ,p_ae_header_id => NULL
121570 );
121571
121572 IF (C_LEVEL_ERROR>= g_log_level) THEN
121573 trace
121574 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
121575 ,p_level => C_LEVEL_ERROR
121576 ,p_module => l_log_module);
121577 END IF;
121578 END IF;
121579 END IF;
121580 --
121581 --
121582 ------------------------------------------------------------------------------------------------
121583 -- 4219869 Business Flow
121584 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
121585 -- Prior Entry. Currently, the following code is always generated.
121586 ------------------------------------------------------------------------------------------------
121587 XLA_AE_LINES_PKG.ValidateCurrentLine;
121588
121589 ------------------------------------------------------------------------------------
121590 -- 4219869 Business Flow
121591 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
121592 ------------------------------------------------------------------------------------
121593 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
121594
121595 ----------------------------------------------------------------------------------
121596 -- 4219869 Business Flow
121597 -- Update journal entry status -- Need to generate this within IF <condition>
121598 ----------------------------------------------------------------------------------
121599 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
121600 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
121601 ,p_balance_type_code => l_balance_type_code
121602 );
121603
121604 -------------------------------------------------------------------------------------------
121605 -- 4262811 - Generate the Accrual Reversal lines
121606 -------------------------------------------------------------------------------------------
121607 BEGIN
121608 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
121609 (g_array_event(p_event_id).array_value_num('header_index'));
121610 IF l_acc_rev_flag IS NULL THEN
121611 l_acc_rev_flag := 'N';
121612 END IF;
121613 EXCEPTION
121614 WHEN OTHERS THEN
121615 l_acc_rev_flag := 'N';
121616 END;
121617 --
121618 IF (l_acc_rev_flag = 'Y') THEN
121619
121620 -- 4645092 ------------------------------------------------------------------------------
121621 -- To allow MPA report to determine if it should generate report process
121622 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
121623 ------------------------------------------------------------------------------------------
121624
121625 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
121626 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
121627 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
121628 -- call ADRs
121629 -- Bug 4922099
121630 --
121631 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
121632 (NVL(l_actual_upg_option, 'N') = 'O') OR
121633 (NVL(l_enc_upg_option, 'N') = 'O')
121634 )
121635 THEN
121636 NULL;
121637 --
121638 --
121639
121640 l_ccid := AcctDerRule_4(
121641 p_application_id => p_application_id
121642 , p_ae_header_id => l_ae_header_id
121643 , p_source_4 => p_source_4
121644 , x_transaction_coa_id => l_adr_transaction_coa_id
121645 , x_accounting_coa_id => l_adr_accounting_coa_id
121646 , x_value_type_code => l_adr_value_type_code
121647 , p_side => 'NA'
121648 );
121649
121650 xla_ae_lines_pkg.set_ccid(
121651 p_code_combination_id => l_ccid
121652 , p_value_type_code => l_adr_value_type_code
121653 , p_transaction_coa_id => l_adr_transaction_coa_id
121654 , p_accounting_coa_id => l_adr_accounting_coa_id
121655 , p_adr_code => 'CST_DEFAULT'
121656 , p_adr_type_code => 'S'
121657 , p_component_type => l_component_type
121658 , p_component_code => l_component_code
121659 , p_component_type_code => l_component_type_code
121660 , p_component_appl_id => l_component_appl_id
121661 , p_amb_context_code => l_amb_context_code
121662 , p_side => 'NA'
121663 );
121664
121665
121666 --
121667 --
121668 END IF;
121669
121670 --
121671 -- Update the line information that should be overwritten
121672 --
121673 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
121674 p_header_num => 1);
121675 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
121676
121677 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
121678
121679 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
121680 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
121681 END IF;
121682
121683 --
121684 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
121685 --
121686 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
121687 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
121688 ELSE
121689 ---------------------------------------------------------------------------------------------------
121690 -- 4262811a Switch Sign
121691 ---------------------------------------------------------------------------------------------------
121692 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
121693 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
121694 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
121695 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
121696 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
121697 -- 5132302
121698 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
121699 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
121700
121701 END IF;
121702
121703 -- 4955764
121704 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
121705 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
121706
121707
121708 XLA_AE_LINES_PKG.ValidateCurrentLine;
121709 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
121710
121711 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
121712 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
121713 ,p_balance_type_code => l_balance_type_code);
121714
121715 END IF;
121716
121717 -----------------------------------------------------------------------------------------
121718 -- 4262811 Multiperiod Accounting
121719 -----------------------------------------------------------------------------------------
121720 -- No MPA option is assigned.
121721
121722
121723 END IF;
121724 END IF;
121725 --
121726
121727 --
121728 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
121729 trace
121730 (p_msg => 'END of AcctLineType_220'
121731 ,p_level => C_LEVEL_PROCEDURE
121732 ,p_module => l_log_module);
121733 END IF;
121734 --
121735 EXCEPTION
121736 WHEN xla_exceptions_pkg.application_exception THEN
121737 RAISE;
121738 WHEN OTHERS THEN
121739 xla_exceptions_pkg.raise_message
121740 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_220');
121741 END AcctLineType_220;
121742 --
121743
121744 ---------------------------------------
121745 --
121746 -- PRIVATE FUNCTION
121747 -- AcctLineType_221
121748 --
121749 ---------------------------------------
121750 PROCEDURE AcctLineType_221 (
121751 p_application_id IN NUMBER
121752 ,p_event_id IN NUMBER
121753 ,p_calculate_acctd_flag IN VARCHAR2
121754 ,p_calculate_g_l_flag IN VARCHAR2
121755 ,p_actual_flag IN OUT VARCHAR2
121756 ,p_balance_type_code OUT VARCHAR2
121757 ,p_gain_or_loss_ref OUT VARCHAR2
121758
121759 --Cost Management Default Account
121760 , p_source_4 IN NUMBER
121761 --DISTRIBUTION_IDENTIFIER
121762 , p_source_11 IN NUMBER
121763 --Distribution Type
121764 , p_source_12 IN VARCHAR2
121765 , p_source_12_meaning IN VARCHAR2
121766 --Entered Currency Code
121767 , p_source_15 IN VARCHAR2
121768 --Entered Amount
121769 , p_source_18 IN NUMBER
121770 --Currency Conversion Date
121771 , p_source_19 IN DATE
121772 --Currency Conversion Rate
121773 , p_source_20 IN NUMBER
121774 --Currency Conversion Type
121775 , p_source_21 IN VARCHAR2
121776 --Accounted Amount
121777 , p_source_22 IN NUMBER
121778 --Accounting Line Type
121779 , p_source_24 IN NUMBER
121780 )
121781 IS
121782
121783 l_component_type VARCHAR2(80);
121784 l_component_code VARCHAR2(30);
121785 l_component_type_code VARCHAR2(1);
121786 l_component_appl_id INTEGER;
121787 l_amb_context_code VARCHAR2(30);
121788 l_entity_code VARCHAR2(30);
121789 l_event_class_code VARCHAR2(30);
121790 l_ae_header_id NUMBER;
121791 l_event_type_code VARCHAR2(30);
121792 l_line_definition_code VARCHAR2(30);
121793 l_line_definition_owner_code VARCHAR2(1);
121794 --
121795 -- adr variables
121796 l_segment VARCHAR2(30);
121797 l_ccid NUMBER;
121798 l_adr_transaction_coa_id NUMBER;
121799 l_adr_accounting_coa_id NUMBER;
121800 l_adr_flexfield_segment_code VARCHAR2(30);
121801 l_adr_flex_value_set_id NUMBER;
121802 l_adr_value_type_code VARCHAR2(30);
121803 l_adr_value_combination_id NUMBER;
121804 l_adr_value_segment_code VARCHAR2(30);
121805
121806 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
121807 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
121808 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
121809 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
121810
121811 -- 4262811 Variables ------------------------------------------------------------------------------------------
121812 l_entered_amt_idx NUMBER;
121813 l_accted_amt_idx NUMBER;
121814 l_acc_rev_flag VARCHAR2(1);
121815 l_accrual_line_num NUMBER;
121816 l_tmp_amt NUMBER;
121817 l_acc_rev_natural_side_code VARCHAR2(1);
121818
121819 l_num_entries NUMBER;
121820 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
121821 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
121822 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
121823 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
121824 l_recog_line_1 NUMBER;
121825 l_recog_line_2 NUMBER;
121826
121827 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
121828 l_bflow_applied_to_amt NUMBER; -- 5132302
121829 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
121830
121831 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
121832
121833 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
121834 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
121835
121836 ---------------------------------------------------------------------------------------------------------------
121837
121838
121839 --
121840 -- bulk performance
121841 --
121842 l_balance_type_code VARCHAR2(1);
121843 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
121844 l_log_module VARCHAR2(240);
121845
121846 --
121847 -- Upgrade strategy
121848 --
121849 l_actual_upg_option VARCHAR2(1);
121850 l_enc_upg_option VARCHAR2(1);
121851
121852 --
121853 BEGIN
121854 --
121855 IF g_log_enabled THEN
121856 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_221';
121857 END IF;
121858 --
121859 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
121860
121861 trace
121862 (p_msg => 'BEGIN of AcctLineType_221'
121863 ,p_level => C_LEVEL_PROCEDURE
121864 ,p_module => l_log_module);
121865
121866 END IF;
121867 --
121868 l_component_type := 'AMB_JLT';
121869 l_component_code := 'PURCHASE_PRICE_VARIANCE';
121870 l_component_type_code := 'S';
121871 l_component_appl_id := 707;
121872 l_amb_context_code := 'DEFAULT';
121873 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
121874 l_event_class_code := 'USER_DEFINE';
121875 l_event_type_code := 'UDIR_INTERORG_SHIP_NO_TP';
121876 l_line_definition_owner_code := 'S';
121877 l_line_definition_code := 'USER_DIR_INTERORG_SHIP_NO_TP';
121878 --
121879 l_balance_type_code := 'A';
121880 l_segment := NULL;
121881 l_ccid := NULL;
121882 l_adr_transaction_coa_id := NULL;
121883 l_adr_accounting_coa_id := NULL;
121884 l_adr_flexfield_segment_code := NULL;
121885 l_adr_flex_value_set_id := NULL;
121886 l_adr_value_type_code := NULL;
121887 l_adr_value_combination_id := NULL;
121888 l_adr_value_segment_code := NULL;
121889
121890 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
121891 l_bflow_class_code := ''; -- 4219869 Business Flow
121892 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
121893 l_budgetary_control_flag := 'N';
121894
121895 l_bflow_applied_to_amt_idx := NULL; -- 5132302
121896 l_bflow_applied_to_amt := NULL; -- 5132302
121897 l_entered_amt_idx := NULL; -- 4262811
121898 l_accted_amt_idx := NULL; -- 4262811
121899 l_acc_rev_flag := NULL; -- 4262811
121900 l_accrual_line_num := NULL; -- 4262811
121901 l_tmp_amt := NULL; -- 4262811
121902 --
121903
121904 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
121905 l_balance_type_code <> 'B' THEN
121906 IF NVL(p_source_24,9E125) = 6
121907 THEN
121908
121909 --
121910 XLA_AE_LINES_PKG.SetNewLine;
121911
121912 p_balance_type_code := l_balance_type_code;
121913 -- set the flag so later we will know whether the gain loss line needs to be created
121914
121915 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
121916 p_actual_flag :='A';
121917 END IF;
121918
121919 --
121920 -- bulk performance
121921 --
121922 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
121923 p_header_num => 0); -- 4262811
121924 --
121925 -- set accounting line options
121926 --
121927 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
121928 p_natural_side_code => 'D'
121929 , p_gain_or_loss_flag => 'N'
121930 , p_gl_transfer_mode_code => 'S'
121931 , p_acct_entry_type_code => 'A'
121932 , p_switch_side_flag => 'Y'
121933 , p_merge_duplicate_code => 'N'
121934 );
121935 --
121936 l_acc_rev_natural_side_code := 'C'; -- 4262811
121937 --
121938 --
121939 -- set accounting line type info
121940 --
121941 xla_ae_lines_pkg.SetAcctLineType
121942 (p_component_type => l_component_type
121943 ,p_event_type_code => l_event_type_code
121944 ,p_line_definition_owner_code => l_line_definition_owner_code
121945 ,p_line_definition_code => l_line_definition_code
121946 ,p_accounting_line_code => l_component_code
121947 ,p_accounting_line_type_code => l_component_type_code
121948 ,p_accounting_line_appl_id => l_component_appl_id
121949 ,p_amb_context_code => l_amb_context_code
121950 ,p_entity_code => l_entity_code
121951 ,p_event_class_code => l_event_class_code);
121952 --
121953 -- set accounting class
121954 --
121955 xla_ae_lines_pkg.SetAcctClass(
121956 p_accounting_class_code => 'PURCHASE_PRICE_VARIANCE'
121957 , p_ae_header_id => l_ae_header_id
121958 );
121959
121960 --
121961 -- set rounding class
121962 --
121963 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
121964 'PURCHASE_PRICE_VARIANCE';
121965
121966 --
121967 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
121968 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
121969 --
121970 -- bulk performance
121971 --
121972 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
121973
121974 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
121975 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
121976
121977 -- 4955764
121978 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
121979 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
121980
121981 -- 4458381 Public Sector Enh
121982
121983 --
121984 -- set accounting attributes for the line type
121985 --
121986 l_entered_amt_idx := 3;
121987 l_accted_amt_idx := 8;
121988 l_bflow_applied_to_amt_idx := NULL; -- 5132302
121989 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
121990 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
121991 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
121992 l_rec_acct_attrs.array_char_value(2) := p_source_12;
121993 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
121994 l_rec_acct_attrs.array_num_value(3) := p_source_18;
121995 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
121996 l_rec_acct_attrs.array_char_value(4) := p_source_15;
121997 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
121998 l_rec_acct_attrs.array_date_value(5) := p_source_19;
121999 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
122000 l_rec_acct_attrs.array_num_value(6) := p_source_20;
122001 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
122002 l_rec_acct_attrs.array_char_value(7) := p_source_21;
122003 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
122004 l_rec_acct_attrs.array_num_value(8) := p_source_22;
122005
122006 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
122007 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
122008
122009 ---------------------------------------------------------------------------------------------------------------
122010 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
122011 ---------------------------------------------------------------------------------------------------------------
122012 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
122013
122014 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
122015 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
122016
122017 IF xla_accounting_cache_pkg.GetValueChar
122018 (p_source_code => 'LEDGER_CATEGORY_CODE'
122019 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
122020 AND l_bflow_method_code = 'PRIOR_ENTRY'
122021 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
122022 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
122023 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
122024 )
122025 THEN
122026 xla_ae_lines_pkg.BflowUpgEntry
122027 (p_business_method_code => l_bflow_method_code
122028 ,p_business_class_code => l_bflow_class_code
122029 ,p_balance_type => l_balance_type_code);
122030 ELSE
122031 NULL;
122032 -- No business flow processing for business flow method of NONE.
122033 END IF;
122034
122035 --
122036 -- call analytical criteria
122037 --
122038
122039 --
122040 -- call description
122041 --
122042 -- No description or it is inherited.
122043 --
122044 -- call ADRs
122045 -- Bug 4922099
122046 --
122047 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
122048 (NVL(l_actual_upg_option, 'N') = 'O') OR
122049 (NVL(l_enc_upg_option, 'N') = 'O')
122050 )
122051 THEN
122052 NULL;
122053 --
122054 --
122055
122056 l_ccid := AcctDerRule_4(
122057 p_application_id => p_application_id
122058 , p_ae_header_id => l_ae_header_id
122059 , p_source_4 => p_source_4
122060 , x_transaction_coa_id => l_adr_transaction_coa_id
122061 , x_accounting_coa_id => l_adr_accounting_coa_id
122062 , x_value_type_code => l_adr_value_type_code
122063 , p_side => 'NA'
122064 );
122065
122066 xla_ae_lines_pkg.set_ccid(
122067 p_code_combination_id => l_ccid
122068 , p_value_type_code => l_adr_value_type_code
122069 , p_transaction_coa_id => l_adr_transaction_coa_id
122070 , p_accounting_coa_id => l_adr_accounting_coa_id
122071 , p_adr_code => 'CST_DEFAULT'
122072 , p_adr_type_code => 'S'
122073 , p_component_type => l_component_type
122074 , p_component_code => l_component_code
122075 , p_component_type_code => l_component_type_code
122076 , p_component_appl_id => l_component_appl_id
122077 , p_amb_context_code => l_amb_context_code
122078 , p_side => 'NA'
122079 );
122080
122081
122082 --
122083 --
122084 END IF;
122085 --
122086 -- Bug 4922099
122087 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
122088 (NVL(l_enc_upg_option, 'N') = 'O')
122089 ) AND
122090 (l_bflow_method_code = 'PRIOR_ENTRY')
122091 )
122092 THEN
122093 IF
122094 --
122095 1 = 2
122096 --
122097 THEN
122098 xla_accounting_err_pkg.build_message
122099 (p_appli_s_name => 'XLA'
122100 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
122101 ,p_token_1 => 'LINE_NUMBER'
122102 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
122103 ,p_token_2 => 'LINE_TYPE_NAME'
122104 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
122105 l_component_type
122106 ,l_component_code
122107 ,l_component_type_code
122108 ,l_component_appl_id
122109 ,l_amb_context_code
122110 ,l_entity_code
122111 ,l_event_class_code
122112 )
122113 ,p_token_3 => 'OWNER'
122114 ,p_value_3 => xla_lookups_pkg.get_meaning(
122115 p_lookup_type => 'XLA_OWNER_TYPE'
122116 ,p_lookup_code => l_component_type_code
122117 )
122118 ,p_token_4 => 'PRODUCT_NAME'
122119 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
122120 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
122121 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
122122 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
122123 ,p_ae_header_id => NULL
122124 );
122125
122126 IF (C_LEVEL_ERROR>= g_log_level) THEN
122127 trace
122128 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
122129 ,p_level => C_LEVEL_ERROR
122130 ,p_module => l_log_module);
122131 END IF;
122132 END IF;
122133 END IF;
122134 --
122135 --
122136 ------------------------------------------------------------------------------------------------
122137 -- 4219869 Business Flow
122138 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
122139 -- Prior Entry. Currently, the following code is always generated.
122140 ------------------------------------------------------------------------------------------------
122141 XLA_AE_LINES_PKG.ValidateCurrentLine;
122142
122143 ------------------------------------------------------------------------------------
122144 -- 4219869 Business Flow
122145 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
122146 ------------------------------------------------------------------------------------
122147 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
122148
122149 ----------------------------------------------------------------------------------
122150 -- 4219869 Business Flow
122151 -- Update journal entry status -- Need to generate this within IF <condition>
122152 ----------------------------------------------------------------------------------
122153 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
122154 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
122155 ,p_balance_type_code => l_balance_type_code
122156 );
122157
122158 -------------------------------------------------------------------------------------------
122159 -- 4262811 - Generate the Accrual Reversal lines
122160 -------------------------------------------------------------------------------------------
122161 BEGIN
122162 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
122163 (g_array_event(p_event_id).array_value_num('header_index'));
122164 IF l_acc_rev_flag IS NULL THEN
122165 l_acc_rev_flag := 'N';
122166 END IF;
122167 EXCEPTION
122168 WHEN OTHERS THEN
122169 l_acc_rev_flag := 'N';
122170 END;
122171 --
122172 IF (l_acc_rev_flag = 'Y') THEN
122173
122174 -- 4645092 ------------------------------------------------------------------------------
122175 -- To allow MPA report to determine if it should generate report process
122176 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
122177 ------------------------------------------------------------------------------------------
122178
122179 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
122180 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
122181 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
122182 -- call ADRs
122183 -- Bug 4922099
122184 --
122185 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
122186 (NVL(l_actual_upg_option, 'N') = 'O') OR
122187 (NVL(l_enc_upg_option, 'N') = 'O')
122188 )
122189 THEN
122190 NULL;
122191 --
122192 --
122193
122194 l_ccid := AcctDerRule_4(
122195 p_application_id => p_application_id
122196 , p_ae_header_id => l_ae_header_id
122197 , p_source_4 => p_source_4
122198 , x_transaction_coa_id => l_adr_transaction_coa_id
122199 , x_accounting_coa_id => l_adr_accounting_coa_id
122200 , x_value_type_code => l_adr_value_type_code
122201 , p_side => 'NA'
122202 );
122203
122204 xla_ae_lines_pkg.set_ccid(
122205 p_code_combination_id => l_ccid
122206 , p_value_type_code => l_adr_value_type_code
122207 , p_transaction_coa_id => l_adr_transaction_coa_id
122208 , p_accounting_coa_id => l_adr_accounting_coa_id
122209 , p_adr_code => 'CST_DEFAULT'
122210 , p_adr_type_code => 'S'
122211 , p_component_type => l_component_type
122212 , p_component_code => l_component_code
122213 , p_component_type_code => l_component_type_code
122214 , p_component_appl_id => l_component_appl_id
122215 , p_amb_context_code => l_amb_context_code
122216 , p_side => 'NA'
122217 );
122218
122219
122220 --
122221 --
122222 END IF;
122223
122224 --
122225 -- Update the line information that should be overwritten
122226 --
122227 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
122228 p_header_num => 1);
122229 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
122230
122231 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
122232
122233 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
122234 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
122235 END IF;
122236
122237 --
122238 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
122239 --
122240 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
122241 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
122242 ELSE
122243 ---------------------------------------------------------------------------------------------------
122244 -- 4262811a Switch Sign
122245 ---------------------------------------------------------------------------------------------------
122246 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
122247 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
122248 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
122249 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
122250 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
122251 -- 5132302
122252 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
122253 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
122254
122255 END IF;
122256
122257 -- 4955764
122258 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
122259 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
122260
122261
122262 XLA_AE_LINES_PKG.ValidateCurrentLine;
122263 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
122264
122265 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
122266 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
122267 ,p_balance_type_code => l_balance_type_code);
122268
122269 END IF;
122270
122271 -----------------------------------------------------------------------------------------
122272 -- 4262811 Multiperiod Accounting
122273 -----------------------------------------------------------------------------------------
122274 -- No MPA option is assigned.
122275
122276
122277 END IF;
122278 END IF;
122279 --
122280
122281 --
122282 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
122283 trace
122284 (p_msg => 'END of AcctLineType_221'
122285 ,p_level => C_LEVEL_PROCEDURE
122286 ,p_module => l_log_module);
122287 END IF;
122288 --
122289 EXCEPTION
122290 WHEN xla_exceptions_pkg.application_exception THEN
122291 RAISE;
122292 WHEN OTHERS THEN
122293 xla_exceptions_pkg.raise_message
122294 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_221');
122295 END AcctLineType_221;
122296 --
122297
122298 ---------------------------------------
122299 --
122300 -- PRIVATE FUNCTION
122301 -- AcctLineType_222
122302 --
122303 ---------------------------------------
122304 PROCEDURE AcctLineType_222 (
122305 p_application_id IN NUMBER
122306 ,p_event_id IN NUMBER
122307 ,p_calculate_acctd_flag IN VARCHAR2
122308 ,p_calculate_g_l_flag IN VARCHAR2
122309 ,p_actual_flag IN OUT VARCHAR2
122310 ,p_balance_type_code OUT VARCHAR2
122311 ,p_gain_or_loss_ref OUT VARCHAR2
122312
122313 --Cost Management Default Account
122314 , p_source_4 IN NUMBER
122315 --DISTRIBUTION_IDENTIFIER
122316 , p_source_11 IN NUMBER
122317 --Distribution Type
122318 , p_source_12 IN VARCHAR2
122319 , p_source_12_meaning IN VARCHAR2
122320 --Entered Currency Code
122321 , p_source_15 IN VARCHAR2
122322 --Entered Amount
122323 , p_source_18 IN NUMBER
122324 --Currency Conversion Date
122325 , p_source_19 IN DATE
122326 --Currency Conversion Rate
122327 , p_source_20 IN NUMBER
122328 --Currency Conversion Type
122329 , p_source_21 IN VARCHAR2
122330 --Accounted Amount
122331 , p_source_22 IN NUMBER
122332 --Accounting Line Type
122333 , p_source_24 IN NUMBER
122334 )
122335 IS
122336
122337 l_component_type VARCHAR2(80);
122338 l_component_code VARCHAR2(30);
122339 l_component_type_code VARCHAR2(1);
122340 l_component_appl_id INTEGER;
122341 l_amb_context_code VARCHAR2(30);
122342 l_entity_code VARCHAR2(30);
122343 l_event_class_code VARCHAR2(30);
122344 l_ae_header_id NUMBER;
122345 l_event_type_code VARCHAR2(30);
122346 l_line_definition_code VARCHAR2(30);
122347 l_line_definition_owner_code VARCHAR2(1);
122348 --
122349 -- adr variables
122350 l_segment VARCHAR2(30);
122351 l_ccid NUMBER;
122352 l_adr_transaction_coa_id NUMBER;
122353 l_adr_accounting_coa_id NUMBER;
122354 l_adr_flexfield_segment_code VARCHAR2(30);
122355 l_adr_flex_value_set_id NUMBER;
122356 l_adr_value_type_code VARCHAR2(30);
122357 l_adr_value_combination_id NUMBER;
122358 l_adr_value_segment_code VARCHAR2(30);
122359
122360 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
122361 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
122362 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
122363 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
122364
122365 -- 4262811 Variables ------------------------------------------------------------------------------------------
122366 l_entered_amt_idx NUMBER;
122367 l_accted_amt_idx NUMBER;
122368 l_acc_rev_flag VARCHAR2(1);
122369 l_accrual_line_num NUMBER;
122370 l_tmp_amt NUMBER;
122371 l_acc_rev_natural_side_code VARCHAR2(1);
122372
122373 l_num_entries NUMBER;
122374 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
122375 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
122376 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
122377 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
122378 l_recog_line_1 NUMBER;
122379 l_recog_line_2 NUMBER;
122380
122381 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
122382 l_bflow_applied_to_amt NUMBER; -- 5132302
122383 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
122384
122385 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
122386
122387 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
122388 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
122389
122390 ---------------------------------------------------------------------------------------------------------------
122391
122392
122393 --
122394 -- bulk performance
122395 --
122396 l_balance_type_code VARCHAR2(1);
122397 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
122398 l_log_module VARCHAR2(240);
122399
122400 --
122401 -- Upgrade strategy
122402 --
122403 l_actual_upg_option VARCHAR2(1);
122404 l_enc_upg_option VARCHAR2(1);
122405
122406 --
122407 BEGIN
122408 --
122409 IF g_log_enabled THEN
122410 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_222';
122411 END IF;
122412 --
122413 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
122414
122415 trace
122416 (p_msg => 'BEGIN of AcctLineType_222'
122417 ,p_level => C_LEVEL_PROCEDURE
122418 ,p_module => l_log_module);
122419
122420 END IF;
122421 --
122422 l_component_type := 'AMB_JLT';
122423 l_component_code := 'PURCHASE_PRICE_VARIANCE';
122424 l_component_type_code := 'S';
122425 l_component_appl_id := 707;
122426 l_amb_context_code := 'DEFAULT';
122427 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
122428 l_event_class_code := 'USER_DEFINE';
122429 l_event_type_code := 'UDIR_INTERORG_SHIP';
122430 l_line_definition_owner_code := 'S';
122431 l_line_definition_code := 'USER_DIR_INTERORG_SHIP';
122432 --
122433 l_balance_type_code := 'A';
122434 l_segment := NULL;
122435 l_ccid := NULL;
122436 l_adr_transaction_coa_id := NULL;
122437 l_adr_accounting_coa_id := NULL;
122438 l_adr_flexfield_segment_code := NULL;
122439 l_adr_flex_value_set_id := NULL;
122440 l_adr_value_type_code := NULL;
122441 l_adr_value_combination_id := NULL;
122442 l_adr_value_segment_code := NULL;
122443
122444 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
122445 l_bflow_class_code := ''; -- 4219869 Business Flow
122446 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
122447 l_budgetary_control_flag := 'N';
122448
122449 l_bflow_applied_to_amt_idx := NULL; -- 5132302
122450 l_bflow_applied_to_amt := NULL; -- 5132302
122451 l_entered_amt_idx := NULL; -- 4262811
122452 l_accted_amt_idx := NULL; -- 4262811
122453 l_acc_rev_flag := NULL; -- 4262811
122454 l_accrual_line_num := NULL; -- 4262811
122455 l_tmp_amt := NULL; -- 4262811
122456 --
122457
122458 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
122459 l_balance_type_code <> 'B' THEN
122460 IF NVL(p_source_24,9E125) = 6
122461 THEN
122462
122463 --
122464 XLA_AE_LINES_PKG.SetNewLine;
122465
122466 p_balance_type_code := l_balance_type_code;
122467 -- set the flag so later we will know whether the gain loss line needs to be created
122468
122469 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
122470 p_actual_flag :='A';
122471 END IF;
122472
122473 --
122474 -- bulk performance
122475 --
122476 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
122477 p_header_num => 0); -- 4262811
122478 --
122479 -- set accounting line options
122480 --
122481 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
122482 p_natural_side_code => 'D'
122483 , p_gain_or_loss_flag => 'N'
122484 , p_gl_transfer_mode_code => 'S'
122485 , p_acct_entry_type_code => 'A'
122486 , p_switch_side_flag => 'Y'
122487 , p_merge_duplicate_code => 'N'
122488 );
122489 --
122490 l_acc_rev_natural_side_code := 'C'; -- 4262811
122491 --
122492 --
122493 -- set accounting line type info
122494 --
122495 xla_ae_lines_pkg.SetAcctLineType
122496 (p_component_type => l_component_type
122497 ,p_event_type_code => l_event_type_code
122498 ,p_line_definition_owner_code => l_line_definition_owner_code
122499 ,p_line_definition_code => l_line_definition_code
122500 ,p_accounting_line_code => l_component_code
122501 ,p_accounting_line_type_code => l_component_type_code
122502 ,p_accounting_line_appl_id => l_component_appl_id
122503 ,p_amb_context_code => l_amb_context_code
122504 ,p_entity_code => l_entity_code
122505 ,p_event_class_code => l_event_class_code);
122506 --
122507 -- set accounting class
122508 --
122509 xla_ae_lines_pkg.SetAcctClass(
122510 p_accounting_class_code => 'PURCHASE_PRICE_VARIANCE'
122511 , p_ae_header_id => l_ae_header_id
122512 );
122513
122514 --
122515 -- set rounding class
122516 --
122517 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
122518 'PURCHASE_PRICE_VARIANCE';
122519
122520 --
122521 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
122522 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
122523 --
122524 -- bulk performance
122525 --
122526 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
122527
122528 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
122529 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
122530
122531 -- 4955764
122532 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
122533 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
122534
122535 -- 4458381 Public Sector Enh
122536
122537 --
122538 -- set accounting attributes for the line type
122539 --
122540 l_entered_amt_idx := 3;
122541 l_accted_amt_idx := 8;
122542 l_bflow_applied_to_amt_idx := NULL; -- 5132302
122543 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
122544 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
122545 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
122546 l_rec_acct_attrs.array_char_value(2) := p_source_12;
122547 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
122548 l_rec_acct_attrs.array_num_value(3) := p_source_18;
122549 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
122550 l_rec_acct_attrs.array_char_value(4) := p_source_15;
122551 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
122552 l_rec_acct_attrs.array_date_value(5) := p_source_19;
122553 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
122554 l_rec_acct_attrs.array_num_value(6) := p_source_20;
122555 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
122556 l_rec_acct_attrs.array_char_value(7) := p_source_21;
122557 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
122558 l_rec_acct_attrs.array_num_value(8) := p_source_22;
122559
122560 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
122561 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
122562
122563 ---------------------------------------------------------------------------------------------------------------
122564 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
122565 ---------------------------------------------------------------------------------------------------------------
122566 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
122567
122568 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
122569 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
122570
122571 IF xla_accounting_cache_pkg.GetValueChar
122572 (p_source_code => 'LEDGER_CATEGORY_CODE'
122573 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
122574 AND l_bflow_method_code = 'PRIOR_ENTRY'
122575 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
122576 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
122577 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
122578 )
122579 THEN
122580 xla_ae_lines_pkg.BflowUpgEntry
122581 (p_business_method_code => l_bflow_method_code
122582 ,p_business_class_code => l_bflow_class_code
122583 ,p_balance_type => l_balance_type_code);
122584 ELSE
122585 NULL;
122586 -- No business flow processing for business flow method of NONE.
122587 END IF;
122588
122589 --
122590 -- call analytical criteria
122591 --
122592
122593 --
122594 -- call description
122595 --
122596 -- No description or it is inherited.
122597 --
122598 -- call ADRs
122599 -- Bug 4922099
122600 --
122601 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
122602 (NVL(l_actual_upg_option, 'N') = 'O') OR
122603 (NVL(l_enc_upg_option, 'N') = 'O')
122604 )
122605 THEN
122606 NULL;
122607 --
122608 --
122609
122610 l_ccid := AcctDerRule_4(
122611 p_application_id => p_application_id
122612 , p_ae_header_id => l_ae_header_id
122613 , p_source_4 => p_source_4
122614 , x_transaction_coa_id => l_adr_transaction_coa_id
122615 , x_accounting_coa_id => l_adr_accounting_coa_id
122616 , x_value_type_code => l_adr_value_type_code
122617 , p_side => 'NA'
122618 );
122619
122620 xla_ae_lines_pkg.set_ccid(
122621 p_code_combination_id => l_ccid
122622 , p_value_type_code => l_adr_value_type_code
122623 , p_transaction_coa_id => l_adr_transaction_coa_id
122624 , p_accounting_coa_id => l_adr_accounting_coa_id
122625 , p_adr_code => 'CST_DEFAULT'
122626 , p_adr_type_code => 'S'
122627 , p_component_type => l_component_type
122628 , p_component_code => l_component_code
122629 , p_component_type_code => l_component_type_code
122630 , p_component_appl_id => l_component_appl_id
122631 , p_amb_context_code => l_amb_context_code
122632 , p_side => 'NA'
122633 );
122634
122635
122636 --
122637 --
122638 END IF;
122639 --
122640 -- Bug 4922099
122641 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
122642 (NVL(l_enc_upg_option, 'N') = 'O')
122643 ) AND
122644 (l_bflow_method_code = 'PRIOR_ENTRY')
122645 )
122646 THEN
122647 IF
122648 --
122649 1 = 2
122650 --
122651 THEN
122652 xla_accounting_err_pkg.build_message
122653 (p_appli_s_name => 'XLA'
122654 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
122655 ,p_token_1 => 'LINE_NUMBER'
122656 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
122657 ,p_token_2 => 'LINE_TYPE_NAME'
122658 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
122659 l_component_type
122660 ,l_component_code
122661 ,l_component_type_code
122662 ,l_component_appl_id
122663 ,l_amb_context_code
122664 ,l_entity_code
122665 ,l_event_class_code
122666 )
122667 ,p_token_3 => 'OWNER'
122668 ,p_value_3 => xla_lookups_pkg.get_meaning(
122669 p_lookup_type => 'XLA_OWNER_TYPE'
122670 ,p_lookup_code => l_component_type_code
122671 )
122672 ,p_token_4 => 'PRODUCT_NAME'
122673 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
122674 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
122675 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
122676 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
122677 ,p_ae_header_id => NULL
122678 );
122679
122680 IF (C_LEVEL_ERROR>= g_log_level) THEN
122681 trace
122682 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
122683 ,p_level => C_LEVEL_ERROR
122684 ,p_module => l_log_module);
122685 END IF;
122686 END IF;
122687 END IF;
122688 --
122689 --
122690 ------------------------------------------------------------------------------------------------
122691 -- 4219869 Business Flow
122692 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
122693 -- Prior Entry. Currently, the following code is always generated.
122694 ------------------------------------------------------------------------------------------------
122695 XLA_AE_LINES_PKG.ValidateCurrentLine;
122696
122697 ------------------------------------------------------------------------------------
122698 -- 4219869 Business Flow
122699 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
122700 ------------------------------------------------------------------------------------
122701 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
122702
122703 ----------------------------------------------------------------------------------
122704 -- 4219869 Business Flow
122705 -- Update journal entry status -- Need to generate this within IF <condition>
122706 ----------------------------------------------------------------------------------
122707 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
122708 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
122709 ,p_balance_type_code => l_balance_type_code
122710 );
122711
122712 -------------------------------------------------------------------------------------------
122713 -- 4262811 - Generate the Accrual Reversal lines
122714 -------------------------------------------------------------------------------------------
122715 BEGIN
122716 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
122717 (g_array_event(p_event_id).array_value_num('header_index'));
122718 IF l_acc_rev_flag IS NULL THEN
122719 l_acc_rev_flag := 'N';
122720 END IF;
122721 EXCEPTION
122722 WHEN OTHERS THEN
122723 l_acc_rev_flag := 'N';
122724 END;
122725 --
122726 IF (l_acc_rev_flag = 'Y') THEN
122727
122728 -- 4645092 ------------------------------------------------------------------------------
122729 -- To allow MPA report to determine if it should generate report process
122730 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
122731 ------------------------------------------------------------------------------------------
122732
122733 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
122734 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
122735 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
122736 -- call ADRs
122737 -- Bug 4922099
122738 --
122739 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
122740 (NVL(l_actual_upg_option, 'N') = 'O') OR
122741 (NVL(l_enc_upg_option, 'N') = 'O')
122742 )
122743 THEN
122744 NULL;
122745 --
122746 --
122747
122748 l_ccid := AcctDerRule_4(
122749 p_application_id => p_application_id
122750 , p_ae_header_id => l_ae_header_id
122751 , p_source_4 => p_source_4
122752 , x_transaction_coa_id => l_adr_transaction_coa_id
122753 , x_accounting_coa_id => l_adr_accounting_coa_id
122754 , x_value_type_code => l_adr_value_type_code
122755 , p_side => 'NA'
122756 );
122757
122758 xla_ae_lines_pkg.set_ccid(
122759 p_code_combination_id => l_ccid
122760 , p_value_type_code => l_adr_value_type_code
122761 , p_transaction_coa_id => l_adr_transaction_coa_id
122762 , p_accounting_coa_id => l_adr_accounting_coa_id
122763 , p_adr_code => 'CST_DEFAULT'
122764 , p_adr_type_code => 'S'
122765 , p_component_type => l_component_type
122766 , p_component_code => l_component_code
122767 , p_component_type_code => l_component_type_code
122768 , p_component_appl_id => l_component_appl_id
122769 , p_amb_context_code => l_amb_context_code
122770 , p_side => 'NA'
122771 );
122772
122773
122774 --
122775 --
122776 END IF;
122777
122778 --
122779 -- Update the line information that should be overwritten
122780 --
122781 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
122782 p_header_num => 1);
122783 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
122784
122785 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
122786
122787 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
122788 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
122789 END IF;
122790
122791 --
122792 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
122793 --
122794 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
122795 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
122796 ELSE
122797 ---------------------------------------------------------------------------------------------------
122798 -- 4262811a Switch Sign
122799 ---------------------------------------------------------------------------------------------------
122800 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
122801 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
122802 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
122803 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
122804 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
122805 -- 5132302
122806 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
122807 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
122808
122809 END IF;
122810
122811 -- 4955764
122812 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
122813 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
122814
122815
122816 XLA_AE_LINES_PKG.ValidateCurrentLine;
122817 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
122818
122819 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
122820 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
122821 ,p_balance_type_code => l_balance_type_code);
122822
122823 END IF;
122824
122825 -----------------------------------------------------------------------------------------
122826 -- 4262811 Multiperiod Accounting
122827 -----------------------------------------------------------------------------------------
122828 -- No MPA option is assigned.
122829
122830
122831 END IF;
122832 END IF;
122833 --
122834
122835 --
122836 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
122837 trace
122838 (p_msg => 'END of AcctLineType_222'
122839 ,p_level => C_LEVEL_PROCEDURE
122840 ,p_module => l_log_module);
122841 END IF;
122842 --
122843 EXCEPTION
122844 WHEN xla_exceptions_pkg.application_exception THEN
122845 RAISE;
122846 WHEN OTHERS THEN
122847 xla_exceptions_pkg.raise_message
122848 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_222');
122849 END AcctLineType_222;
122850 --
122851
122852 ---------------------------------------
122853 --
122854 -- PRIVATE FUNCTION
122855 -- AcctLineType_223
122856 --
122857 ---------------------------------------
122858 PROCEDURE AcctLineType_223 (
122859 p_application_id IN NUMBER
122860 ,p_event_id IN NUMBER
122861 ,p_calculate_acctd_flag IN VARCHAR2
122862 ,p_calculate_g_l_flag IN VARCHAR2
122863 ,p_actual_flag IN OUT VARCHAR2
122864 ,p_balance_type_code OUT VARCHAR2
122865 ,p_gain_or_loss_ref OUT VARCHAR2
122866
122867 --Cost Management Default Account
122868 , p_source_4 IN NUMBER
122869 --Applied to Application ID
122870 , p_source_6 IN NUMBER
122871 --Applied to Distribution Link Type
122872 , p_source_7 IN VARCHAR2
122873 --Applied to Entity Code
122874 , p_source_8 IN VARCHAR2
122875 --DISTRIBUTION_IDENTIFIER
122876 , p_source_11 IN NUMBER
122877 --Distribution Type
122878 , p_source_12 IN VARCHAR2
122879 , p_source_12_meaning IN VARCHAR2
122880 --Encumbrance Reversal Amount Entered
122881 , p_source_14 IN NUMBER
122882 --Entered Currency Code
122883 , p_source_15 IN VARCHAR2
122884 --Transaction Encumbrance Reversal Amount
122885 , p_source_16 IN NUMBER
122886 --Entered Amount
122887 , p_source_18 IN NUMBER
122888 --Currency Conversion Date
122889 , p_source_19 IN DATE
122890 --Currency Conversion Rate
122891 , p_source_20 IN NUMBER
122892 --Currency Conversion Type
122893 , p_source_21 IN VARCHAR2
122894 --Accounted Amount
122895 , p_source_22 IN NUMBER
122896 --Accounting Line Type
122897 , p_source_24 IN NUMBER
122898 --Costing Encumbrance Upgrade Option
122899 , p_source_27 IN VARCHAR2
122900 --TXN_PO_DISTRIBUTION_ID
122901 , p_source_28 IN NUMBER
122902 --TXN_PO_HEADER_ID
122903 , p_source_29 IN NUMBER
122904 --Requisition Budget Account
122905 , p_source_30 IN NUMBER
122906 --Requisition Encumbrance Type Identifier
122907 , p_source_31 IN NUMBER
122908 )
122909 IS
122910
122911 l_component_type VARCHAR2(80);
122912 l_component_code VARCHAR2(30);
122913 l_component_type_code VARCHAR2(1);
122914 l_component_appl_id INTEGER;
122915 l_amb_context_code VARCHAR2(30);
122916 l_entity_code VARCHAR2(30);
122917 l_event_class_code VARCHAR2(30);
122918 l_ae_header_id NUMBER;
122919 l_event_type_code VARCHAR2(30);
122920 l_line_definition_code VARCHAR2(30);
122921 l_line_definition_owner_code VARCHAR2(1);
122922 --
122923 -- adr variables
122924 l_segment VARCHAR2(30);
122925 l_ccid NUMBER;
122926 l_adr_transaction_coa_id NUMBER;
122927 l_adr_accounting_coa_id NUMBER;
122928 l_adr_flexfield_segment_code VARCHAR2(30);
122929 l_adr_flex_value_set_id NUMBER;
122930 l_adr_value_type_code VARCHAR2(30);
122931 l_adr_value_combination_id NUMBER;
122932 l_adr_value_segment_code VARCHAR2(30);
122933
122934 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
122935 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
122936 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
122937 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
122938
122939 -- 4262811 Variables ------------------------------------------------------------------------------------------
122940 l_entered_amt_idx NUMBER;
122941 l_accted_amt_idx NUMBER;
122942 l_acc_rev_flag VARCHAR2(1);
122943 l_accrual_line_num NUMBER;
122944 l_tmp_amt NUMBER;
122945 l_acc_rev_natural_side_code VARCHAR2(1);
122946
122947 l_num_entries NUMBER;
122948 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
122949 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
122950 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
122951 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
122952 l_recog_line_1 NUMBER;
122953 l_recog_line_2 NUMBER;
122954
122955 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
122956 l_bflow_applied_to_amt NUMBER; -- 5132302
122957 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
122958
122959 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
122960
122961 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
122962 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
122963
122964 ---------------------------------------------------------------------------------------------------------------
122965
122966
122967 --
122968 -- bulk performance
122969 --
122970 l_balance_type_code VARCHAR2(1);
122971 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
122972 l_log_module VARCHAR2(240);
122973
122974 --
122975 -- Upgrade strategy
122976 --
122977 l_actual_upg_option VARCHAR2(1);
122978 l_enc_upg_option VARCHAR2(1);
122979
122980 --
122981 BEGIN
122982 --
122983 IF g_log_enabled THEN
122984 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_223';
122985 END IF;
122986 --
122987 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
122988
122989 trace
122990 (p_msg => 'BEGIN of AcctLineType_223'
122991 ,p_level => C_LEVEL_PROCEDURE
122992 ,p_module => l_log_module);
122993
122994 END IF;
122995 --
122996 l_component_type := 'AMB_JLT';
122997 l_component_code := 'PURCHASE_PRICE_VARIANCE';
122998 l_component_type_code := 'S';
122999 l_component_appl_id := 707;
123000 l_amb_context_code := 'DEFAULT';
123001 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
123002 l_event_class_code := 'DIR_INTERORG_RCPT';
123003 l_event_type_code := 'DIR_INTERORG_RCPT_ALL';
123004 l_line_definition_owner_code := 'S';
123005 l_line_definition_code := 'DIRECT_INTERORG_RCPT';
123006 --
123007 l_balance_type_code := 'A';
123008 l_segment := NULL;
123009 l_ccid := NULL;
123010 l_adr_transaction_coa_id := NULL;
123011 l_adr_accounting_coa_id := NULL;
123012 l_adr_flexfield_segment_code := NULL;
123013 l_adr_flex_value_set_id := NULL;
123014 l_adr_value_type_code := NULL;
123015 l_adr_value_combination_id := NULL;
123016 l_adr_value_segment_code := NULL;
123017
123018 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
123019 l_bflow_class_code := ''; -- 4219869 Business Flow
123020 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
123021 l_budgetary_control_flag := 'N';
123022
123023 l_bflow_applied_to_amt_idx := NULL; -- 5132302
123024 l_bflow_applied_to_amt := NULL; -- 5132302
123025 l_entered_amt_idx := NULL; -- 4262811
123026 l_accted_amt_idx := NULL; -- 4262811
123027 l_acc_rev_flag := NULL; -- 4262811
123028 l_accrual_line_num := NULL; -- 4262811
123029 l_tmp_amt := NULL; -- 4262811
123030 --
123031
123032 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
123033 l_balance_type_code <> 'B' THEN
123034 IF NVL(p_source_24,9E125) = 6
123035 THEN
123036
123037 --
123038 XLA_AE_LINES_PKG.SetNewLine;
123039
123040 p_balance_type_code := l_balance_type_code;
123041 -- set the flag so later we will know whether the gain loss line needs to be created
123042
123043 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
123044 p_actual_flag :='A';
123045 END IF;
123046
123047 --
123048 -- bulk performance
123049 --
123050 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
123051 p_header_num => 0); -- 4262811
123052 --
123053 -- set accounting line options
123054 --
123055 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
123056 p_natural_side_code => 'D'
123057 , p_gain_or_loss_flag => 'N'
123058 , p_gl_transfer_mode_code => 'S'
123059 , p_acct_entry_type_code => 'A'
123060 , p_switch_side_flag => 'Y'
123061 , p_merge_duplicate_code => 'N'
123062 );
123063 --
123064 l_acc_rev_natural_side_code := 'C'; -- 4262811
123065 --
123066 --
123067 -- set accounting line type info
123068 --
123069 xla_ae_lines_pkg.SetAcctLineType
123070 (p_component_type => l_component_type
123071 ,p_event_type_code => l_event_type_code
123072 ,p_line_definition_owner_code => l_line_definition_owner_code
123073 ,p_line_definition_code => l_line_definition_code
123074 ,p_accounting_line_code => l_component_code
123075 ,p_accounting_line_type_code => l_component_type_code
123076 ,p_accounting_line_appl_id => l_component_appl_id
123077 ,p_amb_context_code => l_amb_context_code
123078 ,p_entity_code => l_entity_code
123079 ,p_event_class_code => l_event_class_code);
123080 --
123081 -- set accounting class
123082 --
123083 xla_ae_lines_pkg.SetAcctClass(
123084 p_accounting_class_code => 'PURCHASE_PRICE_VARIANCE'
123085 , p_ae_header_id => l_ae_header_id
123086 );
123087
123088 --
123089 -- set rounding class
123090 --
123091 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
123092 'PURCHASE_PRICE_VARIANCE';
123093
123094 --
123095 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
123096 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
123097 --
123098 -- bulk performance
123099 --
123100 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
123101
123102 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
123103 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
123104
123105 -- 4955764
123106 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
123107 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
123108
123109 -- 4458381 Public Sector Enh
123110
123111 --
123112 -- set accounting attributes for the line type
123113 --
123114 l_entered_amt_idx := 17;
123115 l_accted_amt_idx := 22;
123116 l_bflow_applied_to_amt_idx := NULL; -- 5132302
123117 l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
123118 l_rec_acct_attrs.array_num_value(1) := p_source_6;
123119 l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
123120 l_rec_acct_attrs.array_char_value(2) := p_source_7;
123121 l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
123122 l_rec_acct_attrs.array_char_value(3) := p_source_8;
123123 l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
123124 l_rec_acct_attrs.array_num_value(4) := to_char(p_source_28);
123125 l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
123126 l_rec_acct_attrs.array_num_value(5) := to_char(p_source_29);
123127 l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
123128 l_rec_acct_attrs.array_num_value(6) := to_char(p_source_11);
123129 l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
123130 l_rec_acct_attrs.array_char_value(7) := p_source_12;
123131 l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
123132 l_rec_acct_attrs.array_num_value(8) := TO_NUMBER(p_source_30);
123133 l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
123134 l_rec_acct_attrs.array_num_value(9) := p_source_14;
123135 l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
123136 l_rec_acct_attrs.array_char_value(10) := p_source_15;
123137 l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
123138 l_rec_acct_attrs.array_num_value(11) := p_source_16;
123139 l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
123140 l_rec_acct_attrs.array_num_value(12) := TO_NUMBER(p_source_30);
123141 l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
123142 l_rec_acct_attrs.array_num_value(13) := p_source_14;
123143 l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
123144 l_rec_acct_attrs.array_char_value(14) := p_source_15;
123145 l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
123146 l_rec_acct_attrs.array_num_value(15) := p_source_16;
123147 l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
123148 l_rec_acct_attrs.array_char_value(16) := p_source_27;
123149 l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
123150 l_rec_acct_attrs.array_num_value(17) := p_source_18;
123151 l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
123152 l_rec_acct_attrs.array_char_value(18) := p_source_15;
123153 l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
123154 l_rec_acct_attrs.array_date_value(19) := p_source_19;
123155 l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
123156 l_rec_acct_attrs.array_num_value(20) := p_source_20;
123157 l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
123158 l_rec_acct_attrs.array_char_value(21) := p_source_21;
123159 l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
123160 l_rec_acct_attrs.array_num_value(22) := p_source_22;
123161 l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
123162 l_rec_acct_attrs.array_num_value(23) := p_source_31;
123163 l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
123164 l_rec_acct_attrs.array_num_value(24) := p_source_31;
123165
123166 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
123167 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
123168
123169 ---------------------------------------------------------------------------------------------------------------
123170 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
123171 ---------------------------------------------------------------------------------------------------------------
123172 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
123173
123174 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
123175 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
123176
123177 IF xla_accounting_cache_pkg.GetValueChar
123178 (p_source_code => 'LEDGER_CATEGORY_CODE'
123179 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
123180 AND l_bflow_method_code = 'PRIOR_ENTRY'
123181 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
123182 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
123183 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
123184 )
123185 THEN
123186 xla_ae_lines_pkg.BflowUpgEntry
123187 (p_business_method_code => l_bflow_method_code
123188 ,p_business_class_code => l_bflow_class_code
123189 ,p_balance_type => l_balance_type_code);
123190 ELSE
123191 NULL;
123192 -- No business flow processing for business flow method of NONE.
123193 END IF;
123194
123195 --
123196 -- call analytical criteria
123197 --
123198
123199 --
123200 -- call description
123201 --
123202 -- No description or it is inherited.
123203 --
123204 -- call ADRs
123205 -- Bug 4922099
123206 --
123207 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
123208 (NVL(l_actual_upg_option, 'N') = 'O') OR
123209 (NVL(l_enc_upg_option, 'N') = 'O')
123210 )
123211 THEN
123212 NULL;
123213 --
123214 --
123215
123216 l_ccid := AcctDerRule_4(
123217 p_application_id => p_application_id
123218 , p_ae_header_id => l_ae_header_id
123219 , p_source_4 => p_source_4
123220 , x_transaction_coa_id => l_adr_transaction_coa_id
123221 , x_accounting_coa_id => l_adr_accounting_coa_id
123222 , x_value_type_code => l_adr_value_type_code
123223 , p_side => 'NA'
123224 );
123225
123226 xla_ae_lines_pkg.set_ccid(
123227 p_code_combination_id => l_ccid
123228 , p_value_type_code => l_adr_value_type_code
123229 , p_transaction_coa_id => l_adr_transaction_coa_id
123230 , p_accounting_coa_id => l_adr_accounting_coa_id
123231 , p_adr_code => 'CST_DEFAULT'
123232 , p_adr_type_code => 'S'
123233 , p_component_type => l_component_type
123234 , p_component_code => l_component_code
123235 , p_component_type_code => l_component_type_code
123236 , p_component_appl_id => l_component_appl_id
123237 , p_amb_context_code => l_amb_context_code
123238 , p_side => 'NA'
123239 );
123240
123241
123242 --
123243 --
123244 END IF;
123245 --
123246 -- Bug 4922099
123247 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
123248 (NVL(l_enc_upg_option, 'N') = 'O')
123249 ) AND
123250 (l_bflow_method_code = 'PRIOR_ENTRY')
123251 )
123252 THEN
123253 IF
123254 --
123255 1 = 2
123256 --
123257 THEN
123258 xla_accounting_err_pkg.build_message
123259 (p_appli_s_name => 'XLA'
123260 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
123261 ,p_token_1 => 'LINE_NUMBER'
123262 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
123263 ,p_token_2 => 'LINE_TYPE_NAME'
123264 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
123265 l_component_type
123266 ,l_component_code
123267 ,l_component_type_code
123268 ,l_component_appl_id
123269 ,l_amb_context_code
123270 ,l_entity_code
123271 ,l_event_class_code
123272 )
123273 ,p_token_3 => 'OWNER'
123274 ,p_value_3 => xla_lookups_pkg.get_meaning(
123275 p_lookup_type => 'XLA_OWNER_TYPE'
123276 ,p_lookup_code => l_component_type_code
123277 )
123278 ,p_token_4 => 'PRODUCT_NAME'
123279 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
123280 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
123281 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
123282 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
123283 ,p_ae_header_id => NULL
123284 );
123285
123286 IF (C_LEVEL_ERROR>= g_log_level) THEN
123287 trace
123288 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
123289 ,p_level => C_LEVEL_ERROR
123290 ,p_module => l_log_module);
123291 END IF;
123292 END IF;
123293 END IF;
123294 --
123295 --
123296 ------------------------------------------------------------------------------------------------
123297 -- 4219869 Business Flow
123298 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
123299 -- Prior Entry. Currently, the following code is always generated.
123300 ------------------------------------------------------------------------------------------------
123301 XLA_AE_LINES_PKG.ValidateCurrentLine;
123302
123303 ------------------------------------------------------------------------------------
123304 -- 4219869 Business Flow
123305 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
123306 ------------------------------------------------------------------------------------
123307 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
123308
123309 ----------------------------------------------------------------------------------
123310 -- 4219869 Business Flow
123311 -- Update journal entry status -- Need to generate this within IF <condition>
123312 ----------------------------------------------------------------------------------
123313 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
123314 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
123315 ,p_balance_type_code => l_balance_type_code
123316 );
123317
123318 -------------------------------------------------------------------------------------------
123319 -- 4262811 - Generate the Accrual Reversal lines
123320 -------------------------------------------------------------------------------------------
123321 BEGIN
123322 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
123323 (g_array_event(p_event_id).array_value_num('header_index'));
123324 IF l_acc_rev_flag IS NULL THEN
123325 l_acc_rev_flag := 'N';
123326 END IF;
123327 EXCEPTION
123328 WHEN OTHERS THEN
123329 l_acc_rev_flag := 'N';
123330 END;
123331 --
123332 IF (l_acc_rev_flag = 'Y') THEN
123333
123334 -- 4645092 ------------------------------------------------------------------------------
123335 -- To allow MPA report to determine if it should generate report process
123336 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
123337 ------------------------------------------------------------------------------------------
123338
123339 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
123340 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
123341 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
123342 -- call ADRs
123343 -- Bug 4922099
123344 --
123345 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
123346 (NVL(l_actual_upg_option, 'N') = 'O') OR
123347 (NVL(l_enc_upg_option, 'N') = 'O')
123348 )
123349 THEN
123350 NULL;
123351 --
123352 --
123353
123354 l_ccid := AcctDerRule_4(
123355 p_application_id => p_application_id
123356 , p_ae_header_id => l_ae_header_id
123357 , p_source_4 => p_source_4
123358 , x_transaction_coa_id => l_adr_transaction_coa_id
123359 , x_accounting_coa_id => l_adr_accounting_coa_id
123360 , x_value_type_code => l_adr_value_type_code
123361 , p_side => 'NA'
123362 );
123363
123364 xla_ae_lines_pkg.set_ccid(
123365 p_code_combination_id => l_ccid
123366 , p_value_type_code => l_adr_value_type_code
123367 , p_transaction_coa_id => l_adr_transaction_coa_id
123368 , p_accounting_coa_id => l_adr_accounting_coa_id
123369 , p_adr_code => 'CST_DEFAULT'
123370 , p_adr_type_code => 'S'
123371 , p_component_type => l_component_type
123372 , p_component_code => l_component_code
123373 , p_component_type_code => l_component_type_code
123374 , p_component_appl_id => l_component_appl_id
123375 , p_amb_context_code => l_amb_context_code
123376 , p_side => 'NA'
123377 );
123378
123379
123380 --
123381 --
123382 END IF;
123383
123384 --
123385 -- Update the line information that should be overwritten
123386 --
123387 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
123388 p_header_num => 1);
123389 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
123390
123391 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
123392
123393 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
123394 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
123395 END IF;
123396
123397 --
123398 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
123399 --
123400 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
123401 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
123402 ELSE
123403 ---------------------------------------------------------------------------------------------------
123404 -- 4262811a Switch Sign
123405 ---------------------------------------------------------------------------------------------------
123406 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
123407 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
123408 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
123409 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
123410 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
123411 -- 5132302
123412 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
123413 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
123414
123415 END IF;
123416
123417 -- 4955764
123418 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
123419 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
123420
123421
123422 XLA_AE_LINES_PKG.ValidateCurrentLine;
123423 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
123424
123425 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
123426 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
123427 ,p_balance_type_code => l_balance_type_code);
123428
123429 END IF;
123430
123431 -----------------------------------------------------------------------------------------
123432 -- 4262811 Multiperiod Accounting
123433 -----------------------------------------------------------------------------------------
123434 -- No MPA option is assigned.
123435
123436
123437 END IF;
123438 END IF;
123439 --
123440
123441 --
123442 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
123443 trace
123444 (p_msg => 'END of AcctLineType_223'
123445 ,p_level => C_LEVEL_PROCEDURE
123446 ,p_module => l_log_module);
123447 END IF;
123448 --
123449 EXCEPTION
123450 WHEN xla_exceptions_pkg.application_exception THEN
123451 RAISE;
123452 WHEN OTHERS THEN
123453 xla_exceptions_pkg.raise_message
123454 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_223');
123455 END AcctLineType_223;
123456 --
123457
123458 ---------------------------------------
123459 --
123460 -- PRIVATE FUNCTION
123461 -- AcctLineType_224
123462 --
123463 ---------------------------------------
123464 PROCEDURE AcctLineType_224 (
123465 p_application_id IN NUMBER
123466 ,p_event_id IN NUMBER
123467 ,p_calculate_acctd_flag IN VARCHAR2
123468 ,p_calculate_g_l_flag IN VARCHAR2
123469 ,p_actual_flag IN OUT VARCHAR2
123470 ,p_balance_type_code OUT VARCHAR2
123471 ,p_gain_or_loss_ref OUT VARCHAR2
123472
123473 --Cost Management Default Account
123474 , p_source_4 IN NUMBER
123475 --Receiving Accounting Line Type
123476 , p_source_5 IN VARCHAR2
123477 --DISTRIBUTION_IDENTIFIER
123478 , p_source_11 IN NUMBER
123479 --Distribution Type
123480 , p_source_12 IN VARCHAR2
123481 , p_source_12_meaning IN VARCHAR2
123482 --Entered Amount
123483 , p_source_18 IN NUMBER
123484 --Accounted Amount
123485 , p_source_22 IN NUMBER
123486 --Entered Currency Code
123487 , p_source_32 IN VARCHAR2
123488 --Currency Conversion Date
123489 , p_source_33 IN DATE
123490 --Currency Conversion Rate
123491 , p_source_34 IN NUMBER
123492 )
123493 IS
123494
123495 l_component_type VARCHAR2(80);
123496 l_component_code VARCHAR2(30);
123497 l_component_type_code VARCHAR2(1);
123498 l_component_appl_id INTEGER;
123499 l_amb_context_code VARCHAR2(30);
123500 l_entity_code VARCHAR2(30);
123501 l_event_class_code VARCHAR2(30);
123502 l_ae_header_id NUMBER;
123503 l_event_type_code VARCHAR2(30);
123504 l_line_definition_code VARCHAR2(30);
123505 l_line_definition_owner_code VARCHAR2(1);
123506 --
123507 -- adr variables
123508 l_segment VARCHAR2(30);
123509 l_ccid NUMBER;
123510 l_adr_transaction_coa_id NUMBER;
123511 l_adr_accounting_coa_id NUMBER;
123512 l_adr_flexfield_segment_code VARCHAR2(30);
123513 l_adr_flex_value_set_id NUMBER;
123514 l_adr_value_type_code VARCHAR2(30);
123515 l_adr_value_combination_id NUMBER;
123516 l_adr_value_segment_code VARCHAR2(30);
123517
123518 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
123519 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
123520 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
123521 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
123522
123523 -- 4262811 Variables ------------------------------------------------------------------------------------------
123524 l_entered_amt_idx NUMBER;
123525 l_accted_amt_idx NUMBER;
123526 l_acc_rev_flag VARCHAR2(1);
123527 l_accrual_line_num NUMBER;
123528 l_tmp_amt NUMBER;
123529 l_acc_rev_natural_side_code VARCHAR2(1);
123530
123531 l_num_entries NUMBER;
123532 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
123533 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
123534 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
123535 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
123536 l_recog_line_1 NUMBER;
123537 l_recog_line_2 NUMBER;
123538
123539 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
123540 l_bflow_applied_to_amt NUMBER; -- 5132302
123541 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
123542
123543 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
123544
123545 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
123546 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
123547
123548 ---------------------------------------------------------------------------------------------------------------
123549
123550
123551 --
123552 -- bulk performance
123553 --
123554 l_balance_type_code VARCHAR2(1);
123555 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
123556 l_log_module VARCHAR2(240);
123557
123558 --
123559 -- Upgrade strategy
123560 --
123561 l_actual_upg_option VARCHAR2(1);
123562 l_enc_upg_option VARCHAR2(1);
123563
123564 --
123565 BEGIN
123566 --
123567 IF g_log_enabled THEN
123568 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_224';
123569 END IF;
123570 --
123571 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
123572
123573 trace
123574 (p_msg => 'BEGIN of AcctLineType_224'
123575 ,p_level => C_LEVEL_PROCEDURE
123576 ,p_module => l_log_module);
123577
123578 END IF;
123579 --
123580 l_component_type := 'AMB_JLT';
123581 l_component_code := 'PURCHASE_PRICE_VARIANCE';
123582 l_component_type_code := 'S';
123583 l_component_appl_id := 707;
123584 l_amb_context_code := 'DEFAULT';
123585 l_entity_code := 'RCV_ACCOUNTING_EVENTS';
123586 l_event_class_code := 'LDD_COST_ADJ_DEL';
123587 l_event_type_code := 'LDD_COST_ADJ_DEL_ALL';
123588 l_line_definition_owner_code := 'S';
123589 l_line_definition_code := 'LDD_COST_ADJ_DEL';
123590 --
123591 l_balance_type_code := 'A';
123592 l_segment := NULL;
123593 l_ccid := NULL;
123594 l_adr_transaction_coa_id := NULL;
123595 l_adr_accounting_coa_id := NULL;
123596 l_adr_flexfield_segment_code := NULL;
123597 l_adr_flex_value_set_id := NULL;
123598 l_adr_value_type_code := NULL;
123599 l_adr_value_combination_id := NULL;
123600 l_adr_value_segment_code := NULL;
123601
123602 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
123603 l_bflow_class_code := ''; -- 4219869 Business Flow
123604 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
123605 l_budgetary_control_flag := 'N';
123606
123607 l_bflow_applied_to_amt_idx := NULL; -- 5132302
123608 l_bflow_applied_to_amt := NULL; -- 5132302
123609 l_entered_amt_idx := NULL; -- 4262811
123610 l_accted_amt_idx := NULL; -- 4262811
123611 l_acc_rev_flag := NULL; -- 4262811
123612 l_accrual_line_num := NULL; -- 4262811
123613 l_tmp_amt := NULL; -- 4262811
123614 --
123615
123616 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
123617 l_balance_type_code <> 'B' THEN
123618 IF NVL(p_source_5,'
123619 ') = 'Purchase Price Variance'
123620 THEN
123621
123622 --
123623 XLA_AE_LINES_PKG.SetNewLine;
123624
123625 p_balance_type_code := l_balance_type_code;
123626 -- set the flag so later we will know whether the gain loss line needs to be created
123627
123628 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
123629 p_actual_flag :='A';
123630 END IF;
123631
123632 --
123633 -- bulk performance
123634 --
123635 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
123636 p_header_num => 0); -- 4262811
123637 --
123638 -- set accounting line options
123639 --
123640 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
123641 p_natural_side_code => 'D'
123642 , p_gain_or_loss_flag => 'N'
123643 , p_gl_transfer_mode_code => 'S'
123644 , p_acct_entry_type_code => 'A'
123645 , p_switch_side_flag => 'Y'
123646 , p_merge_duplicate_code => 'N'
123647 );
123648 --
123649 l_acc_rev_natural_side_code := 'C'; -- 4262811
123650 --
123651 --
123652 -- set accounting line type info
123653 --
123654 xla_ae_lines_pkg.SetAcctLineType
123655 (p_component_type => l_component_type
123656 ,p_event_type_code => l_event_type_code
123657 ,p_line_definition_owner_code => l_line_definition_owner_code
123658 ,p_line_definition_code => l_line_definition_code
123659 ,p_accounting_line_code => l_component_code
123660 ,p_accounting_line_type_code => l_component_type_code
123661 ,p_accounting_line_appl_id => l_component_appl_id
123662 ,p_amb_context_code => l_amb_context_code
123663 ,p_entity_code => l_entity_code
123664 ,p_event_class_code => l_event_class_code);
123665 --
123666 -- set accounting class
123667 --
123668 xla_ae_lines_pkg.SetAcctClass(
123669 p_accounting_class_code => 'PURCHASE_PRICE_VARIANCE'
123670 , p_ae_header_id => l_ae_header_id
123671 );
123672
123673 --
123674 -- set rounding class
123675 --
123676 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
123677 'PURCHASE_PRICE_VARIANCE';
123678
123679 --
123680 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
123681 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
123682 --
123683 -- bulk performance
123684 --
123685 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
123686
123687 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
123688 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
123689
123690 -- 4955764
123691 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
123692 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
123693
123694 -- 4458381 Public Sector Enh
123695
123696 --
123697 -- set accounting attributes for the line type
123698 --
123699 l_entered_amt_idx := 3;
123700 l_accted_amt_idx := 7;
123701 l_bflow_applied_to_amt_idx := NULL; -- 5132302
123702 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
123703 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
123704 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
123705 l_rec_acct_attrs.array_char_value(2) := p_source_12;
123706 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
123707 l_rec_acct_attrs.array_num_value(3) := p_source_18;
123708 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
123709 l_rec_acct_attrs.array_char_value(4) := p_source_32;
123710 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
123711 l_rec_acct_attrs.array_date_value(5) := p_source_33;
123712 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
123713 l_rec_acct_attrs.array_num_value(6) := p_source_34;
123714 l_rec_acct_attrs.array_acct_attr_code(7) := 'LEDGER_AMOUNT';
123715 l_rec_acct_attrs.array_num_value(7) := p_source_22;
123716
123717 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
123718 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
123719
123720 ---------------------------------------------------------------------------------------------------------------
123721 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
123722 ---------------------------------------------------------------------------------------------------------------
123723 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
123724
123725 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
123726 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
123727
123728 IF xla_accounting_cache_pkg.GetValueChar
123729 (p_source_code => 'LEDGER_CATEGORY_CODE'
123730 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
123731 AND l_bflow_method_code = 'PRIOR_ENTRY'
123732 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
123733 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
123734 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
123735 )
123736 THEN
123737 xla_ae_lines_pkg.BflowUpgEntry
123738 (p_business_method_code => l_bflow_method_code
123739 ,p_business_class_code => l_bflow_class_code
123740 ,p_balance_type => l_balance_type_code);
123741 ELSE
123742 NULL;
123743 -- No business flow processing for business flow method of NONE.
123744 END IF;
123745
123746 --
123747 -- call analytical criteria
123748 --
123749
123750 --
123751 -- call description
123752 --
123753 -- No description or it is inherited.
123754 --
123755 -- call ADRs
123756 -- Bug 4922099
123757 --
123758 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
123759 (NVL(l_actual_upg_option, 'N') = 'O') OR
123760 (NVL(l_enc_upg_option, 'N') = 'O')
123761 )
123762 THEN
123763 NULL;
123764 --
123765 --
123766
123767 l_ccid := AcctDerRule_4(
123768 p_application_id => p_application_id
123769 , p_ae_header_id => l_ae_header_id
123770 , p_source_4 => p_source_4
123771 , x_transaction_coa_id => l_adr_transaction_coa_id
123772 , x_accounting_coa_id => l_adr_accounting_coa_id
123773 , x_value_type_code => l_adr_value_type_code
123774 , p_side => 'NA'
123775 );
123776
123777 xla_ae_lines_pkg.set_ccid(
123778 p_code_combination_id => l_ccid
123779 , p_value_type_code => l_adr_value_type_code
123780 , p_transaction_coa_id => l_adr_transaction_coa_id
123781 , p_accounting_coa_id => l_adr_accounting_coa_id
123782 , p_adr_code => 'CST_DEFAULT'
123783 , p_adr_type_code => 'S'
123784 , p_component_type => l_component_type
123785 , p_component_code => l_component_code
123786 , p_component_type_code => l_component_type_code
123787 , p_component_appl_id => l_component_appl_id
123788 , p_amb_context_code => l_amb_context_code
123789 , p_side => 'NA'
123790 );
123791
123792
123793 --
123794 --
123795 END IF;
123796 --
123797 -- Bug 4922099
123798 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
123799 (NVL(l_enc_upg_option, 'N') = 'O')
123800 ) AND
123801 (l_bflow_method_code = 'PRIOR_ENTRY')
123802 )
123803 THEN
123804 IF
123805 --
123806 1 = 2
123807 --
123808 THEN
123809 xla_accounting_err_pkg.build_message
123810 (p_appli_s_name => 'XLA'
123811 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
123812 ,p_token_1 => 'LINE_NUMBER'
123813 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
123814 ,p_token_2 => 'LINE_TYPE_NAME'
123815 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
123816 l_component_type
123817 ,l_component_code
123818 ,l_component_type_code
123819 ,l_component_appl_id
123820 ,l_amb_context_code
123821 ,l_entity_code
123822 ,l_event_class_code
123823 )
123824 ,p_token_3 => 'OWNER'
123825 ,p_value_3 => xla_lookups_pkg.get_meaning(
123826 p_lookup_type => 'XLA_OWNER_TYPE'
123827 ,p_lookup_code => l_component_type_code
123828 )
123829 ,p_token_4 => 'PRODUCT_NAME'
123830 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
123831 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
123832 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
123833 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
123834 ,p_ae_header_id => NULL
123835 );
123836
123837 IF (C_LEVEL_ERROR>= g_log_level) THEN
123838 trace
123839 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
123840 ,p_level => C_LEVEL_ERROR
123841 ,p_module => l_log_module);
123842 END IF;
123843 END IF;
123844 END IF;
123845 --
123846 --
123847 ------------------------------------------------------------------------------------------------
123848 -- 4219869 Business Flow
123849 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
123850 -- Prior Entry. Currently, the following code is always generated.
123851 ------------------------------------------------------------------------------------------------
123852 XLA_AE_LINES_PKG.ValidateCurrentLine;
123853
123854 ------------------------------------------------------------------------------------
123855 -- 4219869 Business Flow
123856 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
123857 ------------------------------------------------------------------------------------
123858 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
123859
123860 ----------------------------------------------------------------------------------
123861 -- 4219869 Business Flow
123862 -- Update journal entry status -- Need to generate this within IF <condition>
123863 ----------------------------------------------------------------------------------
123864 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
123865 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
123866 ,p_balance_type_code => l_balance_type_code
123867 );
123868
123869 -------------------------------------------------------------------------------------------
123870 -- 4262811 - Generate the Accrual Reversal lines
123871 -------------------------------------------------------------------------------------------
123872 BEGIN
123873 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
123874 (g_array_event(p_event_id).array_value_num('header_index'));
123875 IF l_acc_rev_flag IS NULL THEN
123876 l_acc_rev_flag := 'N';
123877 END IF;
123878 EXCEPTION
123879 WHEN OTHERS THEN
123880 l_acc_rev_flag := 'N';
123881 END;
123882 --
123883 IF (l_acc_rev_flag = 'Y') THEN
123884
123885 -- 4645092 ------------------------------------------------------------------------------
123886 -- To allow MPA report to determine if it should generate report process
123887 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
123888 ------------------------------------------------------------------------------------------
123889
123890 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
123891 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
123892 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
123893 -- call ADRs
123894 -- Bug 4922099
123895 --
123896 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
123897 (NVL(l_actual_upg_option, 'N') = 'O') OR
123898 (NVL(l_enc_upg_option, 'N') = 'O')
123899 )
123900 THEN
123901 NULL;
123902 --
123903 --
123904
123905 l_ccid := AcctDerRule_4(
123906 p_application_id => p_application_id
123907 , p_ae_header_id => l_ae_header_id
123908 , p_source_4 => p_source_4
123909 , x_transaction_coa_id => l_adr_transaction_coa_id
123910 , x_accounting_coa_id => l_adr_accounting_coa_id
123911 , x_value_type_code => l_adr_value_type_code
123912 , p_side => 'NA'
123913 );
123914
123915 xla_ae_lines_pkg.set_ccid(
123916 p_code_combination_id => l_ccid
123917 , p_value_type_code => l_adr_value_type_code
123918 , p_transaction_coa_id => l_adr_transaction_coa_id
123919 , p_accounting_coa_id => l_adr_accounting_coa_id
123920 , p_adr_code => 'CST_DEFAULT'
123921 , p_adr_type_code => 'S'
123922 , p_component_type => l_component_type
123923 , p_component_code => l_component_code
123924 , p_component_type_code => l_component_type_code
123925 , p_component_appl_id => l_component_appl_id
123926 , p_amb_context_code => l_amb_context_code
123927 , p_side => 'NA'
123928 );
123929
123930
123931 --
123932 --
123933 END IF;
123934
123935 --
123936 -- Update the line information that should be overwritten
123937 --
123938 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
123939 p_header_num => 1);
123940 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
123941
123942 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
123943
123944 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
123945 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
123946 END IF;
123947
123948 --
123949 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
123950 --
123951 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
123952 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
123953 ELSE
123954 ---------------------------------------------------------------------------------------------------
123955 -- 4262811a Switch Sign
123956 ---------------------------------------------------------------------------------------------------
123957 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
123958 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
123959 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
123960 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
123961 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
123962 -- 5132302
123963 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
123964 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
123965
123966 END IF;
123967
123968 -- 4955764
123969 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
123970 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
123971
123972
123973 XLA_AE_LINES_PKG.ValidateCurrentLine;
123974 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
123975
123976 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
123977 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
123978 ,p_balance_type_code => l_balance_type_code);
123979
123980 END IF;
123981
123982 -----------------------------------------------------------------------------------------
123983 -- 4262811 Multiperiod Accounting
123984 -----------------------------------------------------------------------------------------
123985 -- No MPA option is assigned.
123986
123987
123988 END IF;
123989 END IF;
123990 --
123991
123992 --
123993 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
123994 trace
123995 (p_msg => 'END of AcctLineType_224'
123996 ,p_level => C_LEVEL_PROCEDURE
123997 ,p_module => l_log_module);
123998 END IF;
123999 --
124000 EXCEPTION
124001 WHEN xla_exceptions_pkg.application_exception THEN
124002 RAISE;
124003 WHEN OTHERS THEN
124004 xla_exceptions_pkg.raise_message
124005 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_224');
124006 END AcctLineType_224;
124007 --
124008
124009 ---------------------------------------
124010 --
124011 -- PRIVATE FUNCTION
124012 -- AcctLineType_225
124013 --
124014 ---------------------------------------
124015 PROCEDURE AcctLineType_225 (
124016 p_application_id IN NUMBER
124017 ,p_event_id IN NUMBER
124018 ,p_calculate_acctd_flag IN VARCHAR2
124019 ,p_calculate_g_l_flag IN VARCHAR2
124020 ,p_actual_flag IN OUT VARCHAR2
124021 ,p_balance_type_code OUT VARCHAR2
124022 ,p_gain_or_loss_ref OUT VARCHAR2
124023
124024 --Cost Management Default Account
124025 , p_source_4 IN NUMBER
124026 --Applied to Application ID
124027 , p_source_6 IN NUMBER
124028 --Applied to Distribution Link Type
124029 , p_source_7 IN VARCHAR2
124030 --Applied to Entity Code
124031 , p_source_8 IN VARCHAR2
124032 --Applied To Purchase Document Identifier
124033 , p_source_10 IN NUMBER
124034 --DISTRIBUTION_IDENTIFIER
124035 , p_source_11 IN NUMBER
124036 --Distribution Type
124037 , p_source_12 IN VARCHAR2
124038 , p_source_12_meaning IN VARCHAR2
124039 --PO Budget Account
124040 , p_source_13 IN NUMBER
124041 --Encumbrance Reversal Amount Entered
124042 , p_source_14 IN NUMBER
124043 --Entered Currency Code
124044 , p_source_15 IN VARCHAR2
124045 --Transaction Encumbrance Reversal Amount
124046 , p_source_16 IN NUMBER
124047 --Entered Amount
124048 , p_source_18 IN NUMBER
124049 --Currency Conversion Date
124050 , p_source_19 IN DATE
124051 --Currency Conversion Rate
124052 , p_source_20 IN NUMBER
124053 --Currency Conversion Type
124054 , p_source_21 IN VARCHAR2
124055 --Accounted Amount
124056 , p_source_22 IN NUMBER
124057 --Purchasing Encumbrance Type Identifier
124058 , p_source_23 IN NUMBER
124059 --Accounting Line Type
124060 , p_source_24 IN NUMBER
124061 --Costing Encumbrance Upgrade Option
124062 , p_source_27 IN VARCHAR2
124063 --TXN_PO_DISTRIBUTION_ID
124064 , p_source_28 IN NUMBER
124065 )
124066 IS
124067
124068 l_component_type VARCHAR2(80);
124069 l_component_code VARCHAR2(30);
124070 l_component_type_code VARCHAR2(1);
124071 l_component_appl_id INTEGER;
124072 l_amb_context_code VARCHAR2(30);
124073 l_entity_code VARCHAR2(30);
124074 l_event_class_code VARCHAR2(30);
124075 l_ae_header_id NUMBER;
124076 l_event_type_code VARCHAR2(30);
124077 l_line_definition_code VARCHAR2(30);
124078 l_line_definition_owner_code VARCHAR2(1);
124079 --
124080 -- adr variables
124081 l_segment VARCHAR2(30);
124082 l_ccid NUMBER;
124083 l_adr_transaction_coa_id NUMBER;
124084 l_adr_accounting_coa_id NUMBER;
124085 l_adr_flexfield_segment_code VARCHAR2(30);
124086 l_adr_flex_value_set_id NUMBER;
124087 l_adr_value_type_code VARCHAR2(30);
124088 l_adr_value_combination_id NUMBER;
124089 l_adr_value_segment_code VARCHAR2(30);
124090
124091 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
124092 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
124093 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
124094 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
124095
124096 -- 4262811 Variables ------------------------------------------------------------------------------------------
124097 l_entered_amt_idx NUMBER;
124098 l_accted_amt_idx NUMBER;
124099 l_acc_rev_flag VARCHAR2(1);
124100 l_accrual_line_num NUMBER;
124101 l_tmp_amt NUMBER;
124102 l_acc_rev_natural_side_code VARCHAR2(1);
124103
124104 l_num_entries NUMBER;
124105 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
124106 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
124107 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
124108 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
124109 l_recog_line_1 NUMBER;
124110 l_recog_line_2 NUMBER;
124111
124112 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
124113 l_bflow_applied_to_amt NUMBER; -- 5132302
124114 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
124115
124116 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
124117
124118 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
124119 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
124120
124121 ---------------------------------------------------------------------------------------------------------------
124122
124123
124124 --
124125 -- bulk performance
124126 --
124127 l_balance_type_code VARCHAR2(1);
124128 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
124129 l_log_module VARCHAR2(240);
124130
124131 --
124132 -- Upgrade strategy
124133 --
124134 l_actual_upg_option VARCHAR2(1);
124135 l_enc_upg_option VARCHAR2(1);
124136
124137 --
124138 BEGIN
124139 --
124140 IF g_log_enabled THEN
124141 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_225';
124142 END IF;
124143 --
124144 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
124145
124146 trace
124147 (p_msg => 'BEGIN of AcctLineType_225'
124148 ,p_level => C_LEVEL_PROCEDURE
124149 ,p_module => l_log_module);
124150
124151 END IF;
124152 --
124153 l_component_type := 'AMB_JLT';
124154 l_component_code := 'PURCHASE_PRICE_VARIANCE';
124155 l_component_type_code := 'S';
124156 l_component_appl_id := 707;
124157 l_amb_context_code := 'DEFAULT';
124158 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
124159 l_event_class_code := 'PURCHASE_ORDER';
124160 l_event_type_code := 'PURCHASE_ORDER_ALL';
124161 l_line_definition_owner_code := 'S';
124162 l_line_definition_code := 'PURCHASE_ORDER';
124163 --
124164 l_balance_type_code := 'A';
124165 l_segment := NULL;
124166 l_ccid := NULL;
124167 l_adr_transaction_coa_id := NULL;
124168 l_adr_accounting_coa_id := NULL;
124169 l_adr_flexfield_segment_code := NULL;
124170 l_adr_flex_value_set_id := NULL;
124171 l_adr_value_type_code := NULL;
124172 l_adr_value_combination_id := NULL;
124173 l_adr_value_segment_code := NULL;
124174
124175 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
124176 l_bflow_class_code := ''; -- 4219869 Business Flow
124177 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
124178 l_budgetary_control_flag := 'N';
124179
124180 l_bflow_applied_to_amt_idx := NULL; -- 5132302
124181 l_bflow_applied_to_amt := NULL; -- 5132302
124182 l_entered_amt_idx := NULL; -- 4262811
124183 l_accted_amt_idx := NULL; -- 4262811
124184 l_acc_rev_flag := NULL; -- 4262811
124185 l_accrual_line_num := NULL; -- 4262811
124186 l_tmp_amt := NULL; -- 4262811
124187 --
124188
124189 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
124190 l_balance_type_code <> 'B' THEN
124191 IF NVL(p_source_24,9E125) = 6
124192 THEN
124193
124194 --
124195 XLA_AE_LINES_PKG.SetNewLine;
124196
124197 p_balance_type_code := l_balance_type_code;
124198 -- set the flag so later we will know whether the gain loss line needs to be created
124199
124200 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
124201 p_actual_flag :='A';
124202 END IF;
124203
124204 --
124205 -- bulk performance
124206 --
124207 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
124208 p_header_num => 0); -- 4262811
124209 --
124210 -- set accounting line options
124211 --
124212 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
124213 p_natural_side_code => 'D'
124214 , p_gain_or_loss_flag => 'N'
124215 , p_gl_transfer_mode_code => 'S'
124216 , p_acct_entry_type_code => 'A'
124217 , p_switch_side_flag => 'Y'
124218 , p_merge_duplicate_code => 'N'
124219 );
124220 --
124221 l_acc_rev_natural_side_code := 'C'; -- 4262811
124222 --
124223 --
124224 -- set accounting line type info
124225 --
124226 xla_ae_lines_pkg.SetAcctLineType
124227 (p_component_type => l_component_type
124228 ,p_event_type_code => l_event_type_code
124229 ,p_line_definition_owner_code => l_line_definition_owner_code
124230 ,p_line_definition_code => l_line_definition_code
124231 ,p_accounting_line_code => l_component_code
124232 ,p_accounting_line_type_code => l_component_type_code
124233 ,p_accounting_line_appl_id => l_component_appl_id
124234 ,p_amb_context_code => l_amb_context_code
124235 ,p_entity_code => l_entity_code
124236 ,p_event_class_code => l_event_class_code);
124237 --
124238 -- set accounting class
124239 --
124240 xla_ae_lines_pkg.SetAcctClass(
124241 p_accounting_class_code => 'PURCHASE_PRICE_VARIANCE'
124242 , p_ae_header_id => l_ae_header_id
124243 );
124244
124245 --
124246 -- set rounding class
124247 --
124248 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
124249 'PURCHASE_PRICE_VARIANCE';
124250
124251 --
124252 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
124253 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
124254 --
124255 -- bulk performance
124256 --
124257 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
124258
124259 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
124260 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
124261
124262 -- 4955764
124263 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
124264 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
124265
124266 -- 4458381 Public Sector Enh
124267
124268 --
124269 -- set accounting attributes for the line type
124270 --
124271 l_entered_amt_idx := 17;
124272 l_accted_amt_idx := 22;
124273 l_bflow_applied_to_amt_idx := NULL; -- 5132302
124274 l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
124275 l_rec_acct_attrs.array_num_value(1) := p_source_6;
124276 l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
124277 l_rec_acct_attrs.array_char_value(2) := p_source_7;
124278 l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
124279 l_rec_acct_attrs.array_char_value(3) := p_source_8;
124280 l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
124281 l_rec_acct_attrs.array_num_value(4) := to_char(p_source_28);
124282 l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
124283 l_rec_acct_attrs.array_num_value(5) := to_char(p_source_10);
124284 l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
124285 l_rec_acct_attrs.array_num_value(6) := to_char(p_source_11);
124286 l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
124287 l_rec_acct_attrs.array_char_value(7) := p_source_12;
124288 l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
124289 l_rec_acct_attrs.array_num_value(8) := TO_NUMBER(p_source_13);
124290 l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
124291 l_rec_acct_attrs.array_num_value(9) := p_source_14;
124292 l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
124293 l_rec_acct_attrs.array_char_value(10) := p_source_15;
124294 l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
124295 l_rec_acct_attrs.array_num_value(11) := p_source_16;
124296 l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
124297 l_rec_acct_attrs.array_num_value(12) := TO_NUMBER(p_source_13);
124298 l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
124299 l_rec_acct_attrs.array_num_value(13) := p_source_14;
124300 l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
124301 l_rec_acct_attrs.array_char_value(14) := p_source_15;
124302 l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
124303 l_rec_acct_attrs.array_num_value(15) := p_source_16;
124304 l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
124305 l_rec_acct_attrs.array_char_value(16) := p_source_27;
124306 l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
124307 l_rec_acct_attrs.array_num_value(17) := p_source_18;
124308 l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
124309 l_rec_acct_attrs.array_char_value(18) := p_source_15;
124310 l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
124311 l_rec_acct_attrs.array_date_value(19) := p_source_19;
124312 l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
124313 l_rec_acct_attrs.array_num_value(20) := p_source_20;
124314 l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
124315 l_rec_acct_attrs.array_char_value(21) := p_source_21;
124316 l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
124317 l_rec_acct_attrs.array_num_value(22) := p_source_22;
124318 l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
124319 l_rec_acct_attrs.array_num_value(23) := p_source_23;
124320 l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
124321 l_rec_acct_attrs.array_num_value(24) := p_source_23;
124322
124323 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
124324 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
124325
124326 ---------------------------------------------------------------------------------------------------------------
124327 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
124328 ---------------------------------------------------------------------------------------------------------------
124329 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
124330
124331 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
124332 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
124333
124334 IF xla_accounting_cache_pkg.GetValueChar
124335 (p_source_code => 'LEDGER_CATEGORY_CODE'
124336 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
124337 AND l_bflow_method_code = 'PRIOR_ENTRY'
124338 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
124339 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
124340 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
124341 )
124342 THEN
124343 xla_ae_lines_pkg.BflowUpgEntry
124344 (p_business_method_code => l_bflow_method_code
124345 ,p_business_class_code => l_bflow_class_code
124346 ,p_balance_type => l_balance_type_code);
124347 ELSE
124348 NULL;
124349 -- No business flow processing for business flow method of NONE.
124350 END IF;
124351
124352 --
124353 -- call analytical criteria
124354 --
124355
124356 --
124357 -- call description
124358 --
124359 -- No description or it is inherited.
124360 --
124361 -- call ADRs
124362 -- Bug 4922099
124363 --
124364 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
124365 (NVL(l_actual_upg_option, 'N') = 'O') OR
124366 (NVL(l_enc_upg_option, 'N') = 'O')
124367 )
124368 THEN
124369 NULL;
124370 --
124371 --
124372
124373 l_ccid := AcctDerRule_4(
124374 p_application_id => p_application_id
124375 , p_ae_header_id => l_ae_header_id
124376 , p_source_4 => p_source_4
124377 , x_transaction_coa_id => l_adr_transaction_coa_id
124378 , x_accounting_coa_id => l_adr_accounting_coa_id
124379 , x_value_type_code => l_adr_value_type_code
124380 , p_side => 'NA'
124381 );
124382
124383 xla_ae_lines_pkg.set_ccid(
124384 p_code_combination_id => l_ccid
124385 , p_value_type_code => l_adr_value_type_code
124386 , p_transaction_coa_id => l_adr_transaction_coa_id
124387 , p_accounting_coa_id => l_adr_accounting_coa_id
124388 , p_adr_code => 'CST_DEFAULT'
124389 , p_adr_type_code => 'S'
124390 , p_component_type => l_component_type
124391 , p_component_code => l_component_code
124392 , p_component_type_code => l_component_type_code
124393 , p_component_appl_id => l_component_appl_id
124394 , p_amb_context_code => l_amb_context_code
124395 , p_side => 'NA'
124396 );
124397
124398
124399 --
124400 --
124401 END IF;
124402 --
124403 -- Bug 4922099
124404 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
124405 (NVL(l_enc_upg_option, 'N') = 'O')
124406 ) AND
124407 (l_bflow_method_code = 'PRIOR_ENTRY')
124408 )
124409 THEN
124410 IF
124411 --
124412 1 = 2
124413 --
124414 THEN
124415 xla_accounting_err_pkg.build_message
124416 (p_appli_s_name => 'XLA'
124417 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
124418 ,p_token_1 => 'LINE_NUMBER'
124419 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
124420 ,p_token_2 => 'LINE_TYPE_NAME'
124421 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
124422 l_component_type
124423 ,l_component_code
124424 ,l_component_type_code
124425 ,l_component_appl_id
124426 ,l_amb_context_code
124427 ,l_entity_code
124428 ,l_event_class_code
124429 )
124430 ,p_token_3 => 'OWNER'
124431 ,p_value_3 => xla_lookups_pkg.get_meaning(
124432 p_lookup_type => 'XLA_OWNER_TYPE'
124433 ,p_lookup_code => l_component_type_code
124434 )
124435 ,p_token_4 => 'PRODUCT_NAME'
124436 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
124437 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
124438 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
124439 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
124440 ,p_ae_header_id => NULL
124441 );
124442
124443 IF (C_LEVEL_ERROR>= g_log_level) THEN
124444 trace
124445 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
124446 ,p_level => C_LEVEL_ERROR
124447 ,p_module => l_log_module);
124448 END IF;
124449 END IF;
124450 END IF;
124451 --
124452 --
124453 ------------------------------------------------------------------------------------------------
124454 -- 4219869 Business Flow
124455 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
124456 -- Prior Entry. Currently, the following code is always generated.
124457 ------------------------------------------------------------------------------------------------
124458 XLA_AE_LINES_PKG.ValidateCurrentLine;
124459
124460 ------------------------------------------------------------------------------------
124461 -- 4219869 Business Flow
124462 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
124463 ------------------------------------------------------------------------------------
124464 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
124465
124466 ----------------------------------------------------------------------------------
124467 -- 4219869 Business Flow
124468 -- Update journal entry status -- Need to generate this within IF <condition>
124469 ----------------------------------------------------------------------------------
124470 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
124471 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
124472 ,p_balance_type_code => l_balance_type_code
124473 );
124474
124475 -------------------------------------------------------------------------------------------
124476 -- 4262811 - Generate the Accrual Reversal lines
124477 -------------------------------------------------------------------------------------------
124478 BEGIN
124479 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
124480 (g_array_event(p_event_id).array_value_num('header_index'));
124481 IF l_acc_rev_flag IS NULL THEN
124482 l_acc_rev_flag := 'N';
124483 END IF;
124484 EXCEPTION
124485 WHEN OTHERS THEN
124486 l_acc_rev_flag := 'N';
124487 END;
124488 --
124489 IF (l_acc_rev_flag = 'Y') THEN
124490
124491 -- 4645092 ------------------------------------------------------------------------------
124492 -- To allow MPA report to determine if it should generate report process
124493 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
124494 ------------------------------------------------------------------------------------------
124495
124496 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
124497 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
124498 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
124499 -- call ADRs
124500 -- Bug 4922099
124501 --
124502 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
124503 (NVL(l_actual_upg_option, 'N') = 'O') OR
124504 (NVL(l_enc_upg_option, 'N') = 'O')
124505 )
124506 THEN
124507 NULL;
124508 --
124509 --
124510
124511 l_ccid := AcctDerRule_4(
124512 p_application_id => p_application_id
124513 , p_ae_header_id => l_ae_header_id
124514 , p_source_4 => p_source_4
124515 , x_transaction_coa_id => l_adr_transaction_coa_id
124516 , x_accounting_coa_id => l_adr_accounting_coa_id
124517 , x_value_type_code => l_adr_value_type_code
124518 , p_side => 'NA'
124519 );
124520
124521 xla_ae_lines_pkg.set_ccid(
124522 p_code_combination_id => l_ccid
124523 , p_value_type_code => l_adr_value_type_code
124524 , p_transaction_coa_id => l_adr_transaction_coa_id
124525 , p_accounting_coa_id => l_adr_accounting_coa_id
124526 , p_adr_code => 'CST_DEFAULT'
124527 , p_adr_type_code => 'S'
124528 , p_component_type => l_component_type
124529 , p_component_code => l_component_code
124530 , p_component_type_code => l_component_type_code
124531 , p_component_appl_id => l_component_appl_id
124532 , p_amb_context_code => l_amb_context_code
124533 , p_side => 'NA'
124534 );
124535
124536
124537 --
124538 --
124539 END IF;
124540
124541 --
124542 -- Update the line information that should be overwritten
124543 --
124544 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
124545 p_header_num => 1);
124546 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
124547
124548 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
124549
124550 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
124551 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
124552 END IF;
124553
124554 --
124555 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
124556 --
124557 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
124558 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
124559 ELSE
124560 ---------------------------------------------------------------------------------------------------
124561 -- 4262811a Switch Sign
124562 ---------------------------------------------------------------------------------------------------
124563 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
124564 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
124565 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
124566 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
124567 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
124568 -- 5132302
124569 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
124570 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
124571
124572 END IF;
124573
124574 -- 4955764
124575 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
124576 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
124577
124578
124579 XLA_AE_LINES_PKG.ValidateCurrentLine;
124580 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
124581
124582 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
124583 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
124584 ,p_balance_type_code => l_balance_type_code);
124585
124586 END IF;
124587
124588 -----------------------------------------------------------------------------------------
124589 -- 4262811 Multiperiod Accounting
124590 -----------------------------------------------------------------------------------------
124591 -- No MPA option is assigned.
124592
124593
124594 END IF;
124595 END IF;
124596 --
124597
124598 --
124599 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
124600 trace
124601 (p_msg => 'END of AcctLineType_225'
124602 ,p_level => C_LEVEL_PROCEDURE
124603 ,p_module => l_log_module);
124604 END IF;
124605 --
124606 EXCEPTION
124607 WHEN xla_exceptions_pkg.application_exception THEN
124608 RAISE;
124609 WHEN OTHERS THEN
124610 xla_exceptions_pkg.raise_message
124611 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_225');
124612 END AcctLineType_225;
124613 --
124614
124615 ---------------------------------------
124616 --
124617 -- PRIVATE FUNCTION
124618 -- AcctLineType_226
124619 --
124620 ---------------------------------------
124621 PROCEDURE AcctLineType_226 (
124622 p_application_id IN NUMBER
124623 ,p_event_id IN NUMBER
124624 ,p_calculate_acctd_flag IN VARCHAR2
124625 ,p_calculate_g_l_flag IN VARCHAR2
124626 ,p_actual_flag IN OUT VARCHAR2
124627 ,p_balance_type_code OUT VARCHAR2
124628 ,p_gain_or_loss_ref OUT VARCHAR2
124629
124630 --Cost Management Default Account
124631 , p_source_4 IN NUMBER
124632 --DISTRIBUTION_IDENTIFIER
124633 , p_source_11 IN NUMBER
124634 --Distribution Type
124635 , p_source_12 IN VARCHAR2
124636 , p_source_12_meaning IN VARCHAR2
124637 --Entered Currency Code
124638 , p_source_15 IN VARCHAR2
124639 --Entered Amount
124640 , p_source_18 IN NUMBER
124641 --Currency Conversion Date
124642 , p_source_19 IN DATE
124643 --Currency Conversion Rate
124644 , p_source_20 IN NUMBER
124645 --Currency Conversion Type
124646 , p_source_21 IN VARCHAR2
124647 --Accounted Amount
124648 , p_source_22 IN NUMBER
124649 --Accounting Line Type
124650 , p_source_24 IN NUMBER
124651 )
124652 IS
124653
124654 l_component_type VARCHAR2(80);
124655 l_component_code VARCHAR2(30);
124656 l_component_type_code VARCHAR2(1);
124657 l_component_appl_id INTEGER;
124658 l_amb_context_code VARCHAR2(30);
124659 l_entity_code VARCHAR2(30);
124660 l_event_class_code VARCHAR2(30);
124661 l_ae_header_id NUMBER;
124662 l_event_type_code VARCHAR2(30);
124663 l_line_definition_code VARCHAR2(30);
124664 l_line_definition_owner_code VARCHAR2(1);
124665 --
124666 -- adr variables
124667 l_segment VARCHAR2(30);
124668 l_ccid NUMBER;
124669 l_adr_transaction_coa_id NUMBER;
124670 l_adr_accounting_coa_id NUMBER;
124671 l_adr_flexfield_segment_code VARCHAR2(30);
124672 l_adr_flex_value_set_id NUMBER;
124673 l_adr_value_type_code VARCHAR2(30);
124674 l_adr_value_combination_id NUMBER;
124675 l_adr_value_segment_code VARCHAR2(30);
124676
124677 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
124678 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
124679 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
124680 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
124681
124682 -- 4262811 Variables ------------------------------------------------------------------------------------------
124683 l_entered_amt_idx NUMBER;
124684 l_accted_amt_idx NUMBER;
124685 l_acc_rev_flag VARCHAR2(1);
124686 l_accrual_line_num NUMBER;
124687 l_tmp_amt NUMBER;
124688 l_acc_rev_natural_side_code VARCHAR2(1);
124689
124690 l_num_entries NUMBER;
124691 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
124692 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
124693 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
124694 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
124695 l_recog_line_1 NUMBER;
124696 l_recog_line_2 NUMBER;
124697
124698 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
124699 l_bflow_applied_to_amt NUMBER; -- 5132302
124700 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
124701
124702 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
124703
124704 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
124705 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
124706
124707 ---------------------------------------------------------------------------------------------------------------
124708
124709
124710 --
124711 -- bulk performance
124712 --
124713 l_balance_type_code VARCHAR2(1);
124714 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
124715 l_log_module VARCHAR2(240);
124716
124717 --
124718 -- Upgrade strategy
124719 --
124720 l_actual_upg_option VARCHAR2(1);
124721 l_enc_upg_option VARCHAR2(1);
124722
124723 --
124724 BEGIN
124725 --
124726 IF g_log_enabled THEN
124727 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_226';
124728 END IF;
124729 --
124730 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
124731
124732 trace
124733 (p_msg => 'BEGIN of AcctLineType_226'
124734 ,p_level => C_LEVEL_PROCEDURE
124735 ,p_module => l_log_module);
124736
124737 END IF;
124738 --
124739 l_component_type := 'AMB_JLT';
124740 l_component_code := 'PURCHASE_PRICE_VARIANCE';
124741 l_component_type_code := 'S';
124742 l_component_appl_id := 707;
124743 l_amb_context_code := 'DEFAULT';
124744 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
124745 l_event_class_code := 'USER_DEFINE';
124746 l_event_type_code := 'UDIR_INTERORG_SHIP_TP';
124747 l_line_definition_owner_code := 'S';
124748 l_line_definition_code := 'USER_DIR_INTERORG_SHIP_TP';
124749 --
124750 l_balance_type_code := 'A';
124751 l_segment := NULL;
124752 l_ccid := NULL;
124753 l_adr_transaction_coa_id := NULL;
124754 l_adr_accounting_coa_id := NULL;
124755 l_adr_flexfield_segment_code := NULL;
124756 l_adr_flex_value_set_id := NULL;
124757 l_adr_value_type_code := NULL;
124758 l_adr_value_combination_id := NULL;
124759 l_adr_value_segment_code := NULL;
124760
124761 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
124762 l_bflow_class_code := ''; -- 4219869 Business Flow
124763 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
124764 l_budgetary_control_flag := 'N';
124765
124766 l_bflow_applied_to_amt_idx := NULL; -- 5132302
124767 l_bflow_applied_to_amt := NULL; -- 5132302
124768 l_entered_amt_idx := NULL; -- 4262811
124769 l_accted_amt_idx := NULL; -- 4262811
124770 l_acc_rev_flag := NULL; -- 4262811
124771 l_accrual_line_num := NULL; -- 4262811
124772 l_tmp_amt := NULL; -- 4262811
124773 --
124774
124775 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
124776 l_balance_type_code <> 'B' THEN
124777 IF NVL(p_source_24,9E125) = 6
124778 THEN
124779
124780 --
124781 XLA_AE_LINES_PKG.SetNewLine;
124782
124783 p_balance_type_code := l_balance_type_code;
124784 -- set the flag so later we will know whether the gain loss line needs to be created
124785
124786 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
124787 p_actual_flag :='A';
124788 END IF;
124789
124790 --
124791 -- bulk performance
124792 --
124793 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
124794 p_header_num => 0); -- 4262811
124795 --
124796 -- set accounting line options
124797 --
124798 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
124799 p_natural_side_code => 'D'
124800 , p_gain_or_loss_flag => 'N'
124801 , p_gl_transfer_mode_code => 'S'
124802 , p_acct_entry_type_code => 'A'
124803 , p_switch_side_flag => 'Y'
124804 , p_merge_duplicate_code => 'N'
124805 );
124806 --
124807 l_acc_rev_natural_side_code := 'C'; -- 4262811
124808 --
124809 --
124810 -- set accounting line type info
124811 --
124812 xla_ae_lines_pkg.SetAcctLineType
124813 (p_component_type => l_component_type
124814 ,p_event_type_code => l_event_type_code
124815 ,p_line_definition_owner_code => l_line_definition_owner_code
124816 ,p_line_definition_code => l_line_definition_code
124817 ,p_accounting_line_code => l_component_code
124818 ,p_accounting_line_type_code => l_component_type_code
124819 ,p_accounting_line_appl_id => l_component_appl_id
124820 ,p_amb_context_code => l_amb_context_code
124821 ,p_entity_code => l_entity_code
124822 ,p_event_class_code => l_event_class_code);
124823 --
124824 -- set accounting class
124825 --
124826 xla_ae_lines_pkg.SetAcctClass(
124827 p_accounting_class_code => 'PURCHASE_PRICE_VARIANCE'
124828 , p_ae_header_id => l_ae_header_id
124829 );
124830
124831 --
124832 -- set rounding class
124833 --
124834 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
124835 'PURCHASE_PRICE_VARIANCE';
124836
124837 --
124838 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
124839 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
124840 --
124841 -- bulk performance
124842 --
124843 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
124844
124845 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
124846 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
124847
124848 -- 4955764
124849 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
124850 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
124851
124852 -- 4458381 Public Sector Enh
124853
124854 --
124855 -- set accounting attributes for the line type
124856 --
124857 l_entered_amt_idx := 3;
124858 l_accted_amt_idx := 8;
124859 l_bflow_applied_to_amt_idx := NULL; -- 5132302
124860 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
124861 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
124862 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
124863 l_rec_acct_attrs.array_char_value(2) := p_source_12;
124864 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
124865 l_rec_acct_attrs.array_num_value(3) := p_source_18;
124866 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
124867 l_rec_acct_attrs.array_char_value(4) := p_source_15;
124868 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
124869 l_rec_acct_attrs.array_date_value(5) := p_source_19;
124870 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
124871 l_rec_acct_attrs.array_num_value(6) := p_source_20;
124872 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
124873 l_rec_acct_attrs.array_char_value(7) := p_source_21;
124874 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
124875 l_rec_acct_attrs.array_num_value(8) := p_source_22;
124876
124877 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
124878 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
124879
124880 ---------------------------------------------------------------------------------------------------------------
124881 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
124882 ---------------------------------------------------------------------------------------------------------------
124883 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
124884
124885 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
124886 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
124887
124888 IF xla_accounting_cache_pkg.GetValueChar
124889 (p_source_code => 'LEDGER_CATEGORY_CODE'
124890 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
124891 AND l_bflow_method_code = 'PRIOR_ENTRY'
124892 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
124893 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
124894 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
124895 )
124896 THEN
124897 xla_ae_lines_pkg.BflowUpgEntry
124898 (p_business_method_code => l_bflow_method_code
124899 ,p_business_class_code => l_bflow_class_code
124900 ,p_balance_type => l_balance_type_code);
124901 ELSE
124902 NULL;
124903 -- No business flow processing for business flow method of NONE.
124904 END IF;
124905
124906 --
124907 -- call analytical criteria
124908 --
124909
124910 --
124911 -- call description
124912 --
124913 -- No description or it is inherited.
124914 --
124915 -- call ADRs
124916 -- Bug 4922099
124917 --
124918 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
124919 (NVL(l_actual_upg_option, 'N') = 'O') OR
124920 (NVL(l_enc_upg_option, 'N') = 'O')
124921 )
124922 THEN
124923 NULL;
124924 --
124925 --
124926
124927 l_ccid := AcctDerRule_4(
124928 p_application_id => p_application_id
124929 , p_ae_header_id => l_ae_header_id
124930 , p_source_4 => p_source_4
124931 , x_transaction_coa_id => l_adr_transaction_coa_id
124932 , x_accounting_coa_id => l_adr_accounting_coa_id
124933 , x_value_type_code => l_adr_value_type_code
124934 , p_side => 'NA'
124935 );
124936
124937 xla_ae_lines_pkg.set_ccid(
124938 p_code_combination_id => l_ccid
124939 , p_value_type_code => l_adr_value_type_code
124940 , p_transaction_coa_id => l_adr_transaction_coa_id
124941 , p_accounting_coa_id => l_adr_accounting_coa_id
124942 , p_adr_code => 'CST_DEFAULT'
124943 , p_adr_type_code => 'S'
124944 , p_component_type => l_component_type
124945 , p_component_code => l_component_code
124946 , p_component_type_code => l_component_type_code
124947 , p_component_appl_id => l_component_appl_id
124948 , p_amb_context_code => l_amb_context_code
124949 , p_side => 'NA'
124950 );
124951
124952
124953 --
124954 --
124955 END IF;
124956 --
124957 -- Bug 4922099
124958 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
124959 (NVL(l_enc_upg_option, 'N') = 'O')
124960 ) AND
124961 (l_bflow_method_code = 'PRIOR_ENTRY')
124962 )
124963 THEN
124964 IF
124965 --
124966 1 = 2
124967 --
124968 THEN
124969 xla_accounting_err_pkg.build_message
124970 (p_appli_s_name => 'XLA'
124971 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
124972 ,p_token_1 => 'LINE_NUMBER'
124973 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
124974 ,p_token_2 => 'LINE_TYPE_NAME'
124975 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
124976 l_component_type
124977 ,l_component_code
124978 ,l_component_type_code
124979 ,l_component_appl_id
124980 ,l_amb_context_code
124981 ,l_entity_code
124982 ,l_event_class_code
124983 )
124984 ,p_token_3 => 'OWNER'
124985 ,p_value_3 => xla_lookups_pkg.get_meaning(
124986 p_lookup_type => 'XLA_OWNER_TYPE'
124987 ,p_lookup_code => l_component_type_code
124988 )
124989 ,p_token_4 => 'PRODUCT_NAME'
124990 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
124991 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
124992 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
124993 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
124994 ,p_ae_header_id => NULL
124995 );
124996
124997 IF (C_LEVEL_ERROR>= g_log_level) THEN
124998 trace
124999 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
125000 ,p_level => C_LEVEL_ERROR
125001 ,p_module => l_log_module);
125002 END IF;
125003 END IF;
125004 END IF;
125005 --
125006 --
125007 ------------------------------------------------------------------------------------------------
125008 -- 4219869 Business Flow
125009 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
125010 -- Prior Entry. Currently, the following code is always generated.
125011 ------------------------------------------------------------------------------------------------
125012 XLA_AE_LINES_PKG.ValidateCurrentLine;
125013
125014 ------------------------------------------------------------------------------------
125015 -- 4219869 Business Flow
125016 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
125017 ------------------------------------------------------------------------------------
125018 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
125019
125020 ----------------------------------------------------------------------------------
125021 -- 4219869 Business Flow
125022 -- Update journal entry status -- Need to generate this within IF <condition>
125023 ----------------------------------------------------------------------------------
125024 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
125025 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
125026 ,p_balance_type_code => l_balance_type_code
125027 );
125028
125029 -------------------------------------------------------------------------------------------
125030 -- 4262811 - Generate the Accrual Reversal lines
125031 -------------------------------------------------------------------------------------------
125032 BEGIN
125033 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
125034 (g_array_event(p_event_id).array_value_num('header_index'));
125035 IF l_acc_rev_flag IS NULL THEN
125036 l_acc_rev_flag := 'N';
125037 END IF;
125038 EXCEPTION
125039 WHEN OTHERS THEN
125040 l_acc_rev_flag := 'N';
125041 END;
125042 --
125043 IF (l_acc_rev_flag = 'Y') THEN
125044
125045 -- 4645092 ------------------------------------------------------------------------------
125046 -- To allow MPA report to determine if it should generate report process
125047 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
125048 ------------------------------------------------------------------------------------------
125049
125050 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
125051 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
125052 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
125053 -- call ADRs
125054 -- Bug 4922099
125055 --
125056 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
125057 (NVL(l_actual_upg_option, 'N') = 'O') OR
125058 (NVL(l_enc_upg_option, 'N') = 'O')
125059 )
125060 THEN
125061 NULL;
125062 --
125063 --
125064
125065 l_ccid := AcctDerRule_4(
125066 p_application_id => p_application_id
125067 , p_ae_header_id => l_ae_header_id
125068 , p_source_4 => p_source_4
125069 , x_transaction_coa_id => l_adr_transaction_coa_id
125070 , x_accounting_coa_id => l_adr_accounting_coa_id
125071 , x_value_type_code => l_adr_value_type_code
125072 , p_side => 'NA'
125073 );
125074
125075 xla_ae_lines_pkg.set_ccid(
125076 p_code_combination_id => l_ccid
125077 , p_value_type_code => l_adr_value_type_code
125078 , p_transaction_coa_id => l_adr_transaction_coa_id
125079 , p_accounting_coa_id => l_adr_accounting_coa_id
125080 , p_adr_code => 'CST_DEFAULT'
125081 , p_adr_type_code => 'S'
125082 , p_component_type => l_component_type
125083 , p_component_code => l_component_code
125084 , p_component_type_code => l_component_type_code
125085 , p_component_appl_id => l_component_appl_id
125086 , p_amb_context_code => l_amb_context_code
125087 , p_side => 'NA'
125088 );
125089
125090
125091 --
125092 --
125093 END IF;
125094
125095 --
125096 -- Update the line information that should be overwritten
125097 --
125098 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
125099 p_header_num => 1);
125100 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
125101
125102 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
125103
125104 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
125105 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
125106 END IF;
125107
125108 --
125109 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
125110 --
125111 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
125112 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
125113 ELSE
125114 ---------------------------------------------------------------------------------------------------
125115 -- 4262811a Switch Sign
125116 ---------------------------------------------------------------------------------------------------
125117 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
125118 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
125119 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
125120 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
125121 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
125122 -- 5132302
125123 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
125124 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
125125
125126 END IF;
125127
125128 -- 4955764
125129 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
125130 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
125131
125132
125133 XLA_AE_LINES_PKG.ValidateCurrentLine;
125134 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
125135
125136 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
125137 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
125138 ,p_balance_type_code => l_balance_type_code);
125139
125140 END IF;
125141
125142 -----------------------------------------------------------------------------------------
125143 -- 4262811 Multiperiod Accounting
125144 -----------------------------------------------------------------------------------------
125145 -- No MPA option is assigned.
125146
125147
125148 END IF;
125149 END IF;
125150 --
125151
125152 --
125153 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
125154 trace
125155 (p_msg => 'END of AcctLineType_226'
125156 ,p_level => C_LEVEL_PROCEDURE
125157 ,p_module => l_log_module);
125158 END IF;
125159 --
125160 EXCEPTION
125161 WHEN xla_exceptions_pkg.application_exception THEN
125162 RAISE;
125163 WHEN OTHERS THEN
125164 xla_exceptions_pkg.raise_message
125165 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_226');
125166 END AcctLineType_226;
125167 --
125168
125169 ---------------------------------------
125170 --
125171 -- PRIVATE FUNCTION
125172 -- AcctLineType_227
125173 --
125174 ---------------------------------------
125175 PROCEDURE AcctLineType_227 (
125176 p_application_id IN NUMBER
125177 ,p_event_id IN NUMBER
125178 ,p_calculate_acctd_flag IN VARCHAR2
125179 ,p_calculate_g_l_flag IN VARCHAR2
125180 ,p_actual_flag IN OUT VARCHAR2
125181 ,p_balance_type_code OUT VARCHAR2
125182 ,p_gain_or_loss_ref OUT VARCHAR2
125183
125184 --Cost Management Default Account
125185 , p_source_4 IN NUMBER
125186 --DISTRIBUTION_IDENTIFIER
125187 , p_source_11 IN NUMBER
125188 --Distribution Type
125189 , p_source_12 IN VARCHAR2
125190 , p_source_12_meaning IN VARCHAR2
125191 --Entered Currency Code
125192 , p_source_15 IN VARCHAR2
125193 --Entered Amount
125194 , p_source_18 IN NUMBER
125195 --Currency Conversion Date
125196 , p_source_19 IN DATE
125197 --Currency Conversion Rate
125198 , p_source_20 IN NUMBER
125199 --Accounted Amount
125200 , p_source_22 IN NUMBER
125201 --Accounting Line Type
125202 , p_source_24 IN NUMBER
125203 )
125204 IS
125205
125206 l_component_type VARCHAR2(80);
125207 l_component_code VARCHAR2(30);
125208 l_component_type_code VARCHAR2(1);
125209 l_component_appl_id INTEGER;
125210 l_amb_context_code VARCHAR2(30);
125211 l_entity_code VARCHAR2(30);
125212 l_event_class_code VARCHAR2(30);
125213 l_ae_header_id NUMBER;
125214 l_event_type_code VARCHAR2(30);
125215 l_line_definition_code VARCHAR2(30);
125216 l_line_definition_owner_code VARCHAR2(1);
125217 --
125218 -- adr variables
125219 l_segment VARCHAR2(30);
125220 l_ccid NUMBER;
125221 l_adr_transaction_coa_id NUMBER;
125222 l_adr_accounting_coa_id NUMBER;
125223 l_adr_flexfield_segment_code VARCHAR2(30);
125224 l_adr_flex_value_set_id NUMBER;
125225 l_adr_value_type_code VARCHAR2(30);
125226 l_adr_value_combination_id NUMBER;
125227 l_adr_value_segment_code VARCHAR2(30);
125228
125229 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
125230 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
125231 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
125232 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
125233
125234 -- 4262811 Variables ------------------------------------------------------------------------------------------
125235 l_entered_amt_idx NUMBER;
125236 l_accted_amt_idx NUMBER;
125237 l_acc_rev_flag VARCHAR2(1);
125238 l_accrual_line_num NUMBER;
125239 l_tmp_amt NUMBER;
125240 l_acc_rev_natural_side_code VARCHAR2(1);
125241
125242 l_num_entries NUMBER;
125243 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
125244 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
125245 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
125246 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
125247 l_recog_line_1 NUMBER;
125248 l_recog_line_2 NUMBER;
125249
125250 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
125251 l_bflow_applied_to_amt NUMBER; -- 5132302
125252 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
125253
125254 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
125255
125256 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
125257 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
125258
125259 ---------------------------------------------------------------------------------------------------------------
125260
125261
125262 --
125263 -- bulk performance
125264 --
125265 l_balance_type_code VARCHAR2(1);
125266 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
125267 l_log_module VARCHAR2(240);
125268
125269 --
125270 -- Upgrade strategy
125271 --
125272 l_actual_upg_option VARCHAR2(1);
125273 l_enc_upg_option VARCHAR2(1);
125274
125275 --
125276 BEGIN
125277 --
125278 IF g_log_enabled THEN
125279 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_227';
125280 END IF;
125281 --
125282 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
125283
125284 trace
125285 (p_msg => 'BEGIN of AcctLineType_227'
125286 ,p_level => C_LEVEL_PROCEDURE
125287 ,p_module => l_log_module);
125288
125289 END IF;
125290 --
125291 l_component_type := 'AMB_JLT';
125292 l_component_code := 'RECEIVING_INSPECTION';
125293 l_component_type_code := 'S';
125294 l_component_appl_id := 707;
125295 l_amb_context_code := 'DEFAULT';
125296 l_entity_code := 'WIP_ACCOUNTING_EVENTS';
125297 l_event_class_code := 'OSP';
125298 l_event_type_code := 'OSP_ALL';
125299 l_line_definition_owner_code := 'S';
125300 l_line_definition_code := 'OUTSIDE_PROCESSING';
125301 --
125302 l_balance_type_code := 'A';
125303 l_segment := NULL;
125304 l_ccid := NULL;
125305 l_adr_transaction_coa_id := NULL;
125306 l_adr_accounting_coa_id := NULL;
125307 l_adr_flexfield_segment_code := NULL;
125308 l_adr_flex_value_set_id := NULL;
125309 l_adr_value_type_code := NULL;
125310 l_adr_value_combination_id := NULL;
125311 l_adr_value_segment_code := NULL;
125312
125313 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
125314 l_bflow_class_code := ''; -- 4219869 Business Flow
125315 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
125316 l_budgetary_control_flag := 'N';
125317
125318 l_bflow_applied_to_amt_idx := NULL; -- 5132302
125319 l_bflow_applied_to_amt := NULL; -- 5132302
125320 l_entered_amt_idx := NULL; -- 4262811
125321 l_accted_amt_idx := NULL; -- 4262811
125322 l_acc_rev_flag := NULL; -- 4262811
125323 l_accrual_line_num := NULL; -- 4262811
125324 l_tmp_amt := NULL; -- 4262811
125325 --
125326
125327 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
125328 l_balance_type_code <> 'B' THEN
125329 IF NVL(p_source_24,9E125) = 5
125330 THEN
125331
125332 --
125333 XLA_AE_LINES_PKG.SetNewLine;
125334
125335 p_balance_type_code := l_balance_type_code;
125336 -- set the flag so later we will know whether the gain loss line needs to be created
125337
125338 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
125339 p_actual_flag :='A';
125340 END IF;
125341
125342 --
125343 -- bulk performance
125344 --
125345 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
125346 p_header_num => 0); -- 4262811
125347 --
125348 -- set accounting line options
125349 --
125350 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
125351 p_natural_side_code => 'D'
125352 , p_gain_or_loss_flag => 'N'
125353 , p_gl_transfer_mode_code => 'S'
125354 , p_acct_entry_type_code => 'A'
125355 , p_switch_side_flag => 'Y'
125356 , p_merge_duplicate_code => 'N'
125357 );
125358 --
125359 l_acc_rev_natural_side_code := 'C'; -- 4262811
125360 --
125361 --
125362 -- set accounting line type info
125363 --
125364 xla_ae_lines_pkg.SetAcctLineType
125365 (p_component_type => l_component_type
125366 ,p_event_type_code => l_event_type_code
125367 ,p_line_definition_owner_code => l_line_definition_owner_code
125368 ,p_line_definition_code => l_line_definition_code
125369 ,p_accounting_line_code => l_component_code
125370 ,p_accounting_line_type_code => l_component_type_code
125371 ,p_accounting_line_appl_id => l_component_appl_id
125372 ,p_amb_context_code => l_amb_context_code
125373 ,p_entity_code => l_entity_code
125374 ,p_event_class_code => l_event_class_code);
125375 --
125376 -- set accounting class
125377 --
125378 xla_ae_lines_pkg.SetAcctClass(
125379 p_accounting_class_code => 'RECEIVING_INSPECTION'
125380 , p_ae_header_id => l_ae_header_id
125381 );
125382
125383 --
125384 -- set rounding class
125385 --
125386 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
125387 'RECEIVING_INSPECTION';
125388
125389 --
125390 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
125391 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
125392 --
125393 -- bulk performance
125394 --
125395 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
125396
125397 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
125398 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
125399
125400 -- 4955764
125401 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
125402 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
125403
125404 -- 4458381 Public Sector Enh
125405
125406 --
125407 -- set accounting attributes for the line type
125408 --
125409 l_entered_amt_idx := 3;
125410 l_accted_amt_idx := 8;
125411 l_bflow_applied_to_amt_idx := NULL; -- 5132302
125412 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
125413 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
125414 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
125415 l_rec_acct_attrs.array_char_value(2) := p_source_12;
125416 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
125417 l_rec_acct_attrs.array_num_value(3) := p_source_18;
125418 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
125419 l_rec_acct_attrs.array_char_value(4) := p_source_15;
125420 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
125421 l_rec_acct_attrs.array_date_value(5) := p_source_19;
125422 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
125423 l_rec_acct_attrs.array_num_value(6) := p_source_20;
125424 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
125425 l_rec_acct_attrs.array_num_value(7) := to_char(p_source_20);
125426 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
125427 l_rec_acct_attrs.array_num_value(8) := p_source_22;
125428
125429 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
125430 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
125431
125432 ---------------------------------------------------------------------------------------------------------------
125433 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
125434 ---------------------------------------------------------------------------------------------------------------
125435 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
125436
125437 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
125438 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
125439
125440 IF xla_accounting_cache_pkg.GetValueChar
125441 (p_source_code => 'LEDGER_CATEGORY_CODE'
125442 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
125443 AND l_bflow_method_code = 'PRIOR_ENTRY'
125444 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
125445 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
125446 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
125447 )
125448 THEN
125449 xla_ae_lines_pkg.BflowUpgEntry
125450 (p_business_method_code => l_bflow_method_code
125451 ,p_business_class_code => l_bflow_class_code
125452 ,p_balance_type => l_balance_type_code);
125453 ELSE
125454 NULL;
125455 -- No business flow processing for business flow method of NONE.
125456 END IF;
125457
125458 --
125459 -- call analytical criteria
125460 --
125461
125462 --
125463 -- call description
125464 --
125465 -- No description or it is inherited.
125466 --
125467 -- call ADRs
125468 -- Bug 4922099
125469 --
125470 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
125471 (NVL(l_actual_upg_option, 'N') = 'O') OR
125472 (NVL(l_enc_upg_option, 'N') = 'O')
125473 )
125474 THEN
125475 NULL;
125476 --
125477 --
125478
125479 l_ccid := AcctDerRule_4(
125480 p_application_id => p_application_id
125481 , p_ae_header_id => l_ae_header_id
125482 , p_source_4 => p_source_4
125483 , x_transaction_coa_id => l_adr_transaction_coa_id
125484 , x_accounting_coa_id => l_adr_accounting_coa_id
125485 , x_value_type_code => l_adr_value_type_code
125486 , p_side => 'NA'
125487 );
125488
125489 xla_ae_lines_pkg.set_ccid(
125490 p_code_combination_id => l_ccid
125491 , p_value_type_code => l_adr_value_type_code
125492 , p_transaction_coa_id => l_adr_transaction_coa_id
125493 , p_accounting_coa_id => l_adr_accounting_coa_id
125494 , p_adr_code => 'CST_DEFAULT'
125495 , p_adr_type_code => 'S'
125496 , p_component_type => l_component_type
125497 , p_component_code => l_component_code
125498 , p_component_type_code => l_component_type_code
125499 , p_component_appl_id => l_component_appl_id
125500 , p_amb_context_code => l_amb_context_code
125501 , p_side => 'NA'
125502 );
125503
125504
125505 --
125506 --
125507 END IF;
125508 --
125509 -- Bug 4922099
125510 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
125511 (NVL(l_enc_upg_option, 'N') = 'O')
125512 ) AND
125513 (l_bflow_method_code = 'PRIOR_ENTRY')
125514 )
125515 THEN
125516 IF
125517 --
125518 1 = 2
125519 --
125520 THEN
125521 xla_accounting_err_pkg.build_message
125522 (p_appli_s_name => 'XLA'
125523 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
125524 ,p_token_1 => 'LINE_NUMBER'
125525 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
125526 ,p_token_2 => 'LINE_TYPE_NAME'
125527 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
125528 l_component_type
125529 ,l_component_code
125530 ,l_component_type_code
125531 ,l_component_appl_id
125532 ,l_amb_context_code
125533 ,l_entity_code
125534 ,l_event_class_code
125535 )
125536 ,p_token_3 => 'OWNER'
125537 ,p_value_3 => xla_lookups_pkg.get_meaning(
125538 p_lookup_type => 'XLA_OWNER_TYPE'
125539 ,p_lookup_code => l_component_type_code
125540 )
125541 ,p_token_4 => 'PRODUCT_NAME'
125542 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
125543 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
125544 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
125545 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
125546 ,p_ae_header_id => NULL
125547 );
125548
125549 IF (C_LEVEL_ERROR>= g_log_level) THEN
125550 trace
125551 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
125552 ,p_level => C_LEVEL_ERROR
125553 ,p_module => l_log_module);
125554 END IF;
125555 END IF;
125556 END IF;
125557 --
125558 --
125559 ------------------------------------------------------------------------------------------------
125560 -- 4219869 Business Flow
125561 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
125562 -- Prior Entry. Currently, the following code is always generated.
125563 ------------------------------------------------------------------------------------------------
125564 XLA_AE_LINES_PKG.ValidateCurrentLine;
125565
125566 ------------------------------------------------------------------------------------
125567 -- 4219869 Business Flow
125568 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
125569 ------------------------------------------------------------------------------------
125570 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
125571
125572 ----------------------------------------------------------------------------------
125573 -- 4219869 Business Flow
125574 -- Update journal entry status -- Need to generate this within IF <condition>
125575 ----------------------------------------------------------------------------------
125576 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
125577 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
125578 ,p_balance_type_code => l_balance_type_code
125579 );
125580
125581 -------------------------------------------------------------------------------------------
125582 -- 4262811 - Generate the Accrual Reversal lines
125583 -------------------------------------------------------------------------------------------
125584 BEGIN
125585 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
125586 (g_array_event(p_event_id).array_value_num('header_index'));
125587 IF l_acc_rev_flag IS NULL THEN
125588 l_acc_rev_flag := 'N';
125589 END IF;
125590 EXCEPTION
125591 WHEN OTHERS THEN
125592 l_acc_rev_flag := 'N';
125593 END;
125594 --
125595 IF (l_acc_rev_flag = 'Y') THEN
125596
125597 -- 4645092 ------------------------------------------------------------------------------
125598 -- To allow MPA report to determine if it should generate report process
125599 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
125600 ------------------------------------------------------------------------------------------
125601
125602 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
125603 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
125604 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
125605 -- call ADRs
125606 -- Bug 4922099
125607 --
125608 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
125609 (NVL(l_actual_upg_option, 'N') = 'O') OR
125610 (NVL(l_enc_upg_option, 'N') = 'O')
125611 )
125612 THEN
125613 NULL;
125614 --
125615 --
125616
125617 l_ccid := AcctDerRule_4(
125618 p_application_id => p_application_id
125619 , p_ae_header_id => l_ae_header_id
125620 , p_source_4 => p_source_4
125621 , x_transaction_coa_id => l_adr_transaction_coa_id
125622 , x_accounting_coa_id => l_adr_accounting_coa_id
125623 , x_value_type_code => l_adr_value_type_code
125624 , p_side => 'NA'
125625 );
125626
125627 xla_ae_lines_pkg.set_ccid(
125628 p_code_combination_id => l_ccid
125629 , p_value_type_code => l_adr_value_type_code
125630 , p_transaction_coa_id => l_adr_transaction_coa_id
125631 , p_accounting_coa_id => l_adr_accounting_coa_id
125632 , p_adr_code => 'CST_DEFAULT'
125633 , p_adr_type_code => 'S'
125634 , p_component_type => l_component_type
125635 , p_component_code => l_component_code
125636 , p_component_type_code => l_component_type_code
125637 , p_component_appl_id => l_component_appl_id
125638 , p_amb_context_code => l_amb_context_code
125639 , p_side => 'NA'
125640 );
125641
125642
125643 --
125644 --
125645 END IF;
125646
125647 --
125648 -- Update the line information that should be overwritten
125649 --
125650 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
125651 p_header_num => 1);
125652 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
125653
125654 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
125655
125656 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
125657 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
125658 END IF;
125659
125660 --
125661 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
125662 --
125663 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
125664 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
125665 ELSE
125666 ---------------------------------------------------------------------------------------------------
125667 -- 4262811a Switch Sign
125668 ---------------------------------------------------------------------------------------------------
125669 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
125670 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
125671 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
125672 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
125673 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
125674 -- 5132302
125675 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
125676 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
125677
125678 END IF;
125679
125680 -- 4955764
125681 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
125682 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
125683
125684
125685 XLA_AE_LINES_PKG.ValidateCurrentLine;
125686 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
125687
125688 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
125689 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
125690 ,p_balance_type_code => l_balance_type_code);
125691
125692 END IF;
125693
125694 -----------------------------------------------------------------------------------------
125695 -- 4262811 Multiperiod Accounting
125696 -----------------------------------------------------------------------------------------
125697 -- No MPA option is assigned.
125698
125699
125700 END IF;
125701 END IF;
125702 --
125703
125704 --
125705 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
125706 trace
125707 (p_msg => 'END of AcctLineType_227'
125708 ,p_level => C_LEVEL_PROCEDURE
125709 ,p_module => l_log_module);
125710 END IF;
125711 --
125712 EXCEPTION
125713 WHEN xla_exceptions_pkg.application_exception THEN
125714 RAISE;
125715 WHEN OTHERS THEN
125716 xla_exceptions_pkg.raise_message
125717 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_227');
125718 END AcctLineType_227;
125719 --
125720
125721 ---------------------------------------
125722 --
125723 -- PRIVATE FUNCTION
125724 -- AcctLineType_228
125725 --
125726 ---------------------------------------
125727 PROCEDURE AcctLineType_228 (
125728 p_application_id IN NUMBER
125729 ,p_event_id IN NUMBER
125730 ,p_calculate_acctd_flag IN VARCHAR2
125731 ,p_calculate_g_l_flag IN VARCHAR2
125732 ,p_actual_flag IN OUT VARCHAR2
125733 ,p_balance_type_code OUT VARCHAR2
125734 ,p_gain_or_loss_ref OUT VARCHAR2
125735
125736 --Cost Management Default Account
125737 , p_source_4 IN NUMBER
125738 --Applied to Application ID
125739 , p_source_6 IN NUMBER
125740 --Applied to Distribution Link Type
125741 , p_source_7 IN VARCHAR2
125742 --Applied to Entity Code
125743 , p_source_8 IN VARCHAR2
125744 --Applied To Purchase Document Identifier
125745 , p_source_10 IN NUMBER
125746 --DISTRIBUTION_IDENTIFIER
125747 , p_source_11 IN NUMBER
125748 --Distribution Type
125749 , p_source_12 IN VARCHAR2
125750 , p_source_12_meaning IN VARCHAR2
125751 --PO Budget Account
125752 , p_source_13 IN NUMBER
125753 --Encumbrance Reversal Amount Entered
125754 , p_source_14 IN NUMBER
125755 --Entered Currency Code
125756 , p_source_15 IN VARCHAR2
125757 --Transaction Encumbrance Reversal Amount
125758 , p_source_16 IN NUMBER
125759 --Entered Amount
125760 , p_source_18 IN NUMBER
125761 --Currency Conversion Date
125762 , p_source_19 IN DATE
125763 --Currency Conversion Rate
125764 , p_source_20 IN NUMBER
125765 --Currency Conversion Type
125766 , p_source_21 IN VARCHAR2
125767 --Accounted Amount
125768 , p_source_22 IN NUMBER
125769 --Purchasing Encumbrance Type Identifier
125770 , p_source_23 IN NUMBER
125771 --Accounting Line Type
125772 , p_source_24 IN NUMBER
125773 --Costing Encumbrance Upgrade Option
125774 , p_source_27 IN VARCHAR2
125775 --TXN_PO_DISTRIBUTION_ID
125776 , p_source_28 IN NUMBER
125777 )
125778 IS
125779
125780 l_component_type VARCHAR2(80);
125781 l_component_code VARCHAR2(30);
125782 l_component_type_code VARCHAR2(1);
125783 l_component_appl_id INTEGER;
125784 l_amb_context_code VARCHAR2(30);
125785 l_entity_code VARCHAR2(30);
125786 l_event_class_code VARCHAR2(30);
125787 l_ae_header_id NUMBER;
125788 l_event_type_code VARCHAR2(30);
125789 l_line_definition_code VARCHAR2(30);
125790 l_line_definition_owner_code VARCHAR2(1);
125791 --
125792 -- adr variables
125793 l_segment VARCHAR2(30);
125794 l_ccid NUMBER;
125795 l_adr_transaction_coa_id NUMBER;
125796 l_adr_accounting_coa_id NUMBER;
125797 l_adr_flexfield_segment_code VARCHAR2(30);
125798 l_adr_flex_value_set_id NUMBER;
125799 l_adr_value_type_code VARCHAR2(30);
125800 l_adr_value_combination_id NUMBER;
125801 l_adr_value_segment_code VARCHAR2(30);
125802
125803 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
125804 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
125805 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
125806 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
125807
125808 -- 4262811 Variables ------------------------------------------------------------------------------------------
125809 l_entered_amt_idx NUMBER;
125810 l_accted_amt_idx NUMBER;
125811 l_acc_rev_flag VARCHAR2(1);
125812 l_accrual_line_num NUMBER;
125813 l_tmp_amt NUMBER;
125814 l_acc_rev_natural_side_code VARCHAR2(1);
125815
125816 l_num_entries NUMBER;
125817 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
125818 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
125819 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
125820 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
125821 l_recog_line_1 NUMBER;
125822 l_recog_line_2 NUMBER;
125823
125824 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
125825 l_bflow_applied_to_amt NUMBER; -- 5132302
125826 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
125827
125828 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
125829
125830 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
125831 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
125832
125833 ---------------------------------------------------------------------------------------------------------------
125834
125835
125836 --
125837 -- bulk performance
125838 --
125839 l_balance_type_code VARCHAR2(1);
125840 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
125841 l_log_module VARCHAR2(240);
125842
125843 --
125844 -- Upgrade strategy
125845 --
125846 l_actual_upg_option VARCHAR2(1);
125847 l_enc_upg_option VARCHAR2(1);
125848
125849 --
125850 BEGIN
125851 --
125852 IF g_log_enabled THEN
125853 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_228';
125854 END IF;
125855 --
125856 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
125857
125858 trace
125859 (p_msg => 'BEGIN of AcctLineType_228'
125860 ,p_level => C_LEVEL_PROCEDURE
125861 ,p_module => l_log_module);
125862
125863 END IF;
125864 --
125865 l_component_type := 'AMB_JLT';
125866 l_component_code := 'RECEIVING_INSPECTION';
125867 l_component_type_code := 'S';
125868 l_component_appl_id := 707;
125869 l_amb_context_code := 'DEFAULT';
125870 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
125871 l_event_class_code := 'PURCHASE_ORDER';
125872 l_event_type_code := 'PURCHASE_ORDER_ALL';
125873 l_line_definition_owner_code := 'S';
125874 l_line_definition_code := 'PURCHASE_ORDER';
125875 --
125876 l_balance_type_code := 'A';
125877 l_segment := NULL;
125878 l_ccid := NULL;
125879 l_adr_transaction_coa_id := NULL;
125880 l_adr_accounting_coa_id := NULL;
125881 l_adr_flexfield_segment_code := NULL;
125882 l_adr_flex_value_set_id := NULL;
125883 l_adr_value_type_code := NULL;
125884 l_adr_value_combination_id := NULL;
125885 l_adr_value_segment_code := NULL;
125886
125887 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
125888 l_bflow_class_code := ''; -- 4219869 Business Flow
125889 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
125890 l_budgetary_control_flag := 'N';
125891
125892 l_bflow_applied_to_amt_idx := NULL; -- 5132302
125893 l_bflow_applied_to_amt := NULL; -- 5132302
125894 l_entered_amt_idx := NULL; -- 4262811
125895 l_accted_amt_idx := NULL; -- 4262811
125896 l_acc_rev_flag := NULL; -- 4262811
125897 l_accrual_line_num := NULL; -- 4262811
125898 l_tmp_amt := NULL; -- 4262811
125899 --
125900
125901 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
125902 l_balance_type_code <> 'B' THEN
125903 IF NVL(p_source_24,9E125) = 5
125904 THEN
125905
125906 --
125907 XLA_AE_LINES_PKG.SetNewLine;
125908
125909 p_balance_type_code := l_balance_type_code;
125910 -- set the flag so later we will know whether the gain loss line needs to be created
125911
125912 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
125913 p_actual_flag :='A';
125914 END IF;
125915
125916 --
125917 -- bulk performance
125918 --
125919 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
125920 p_header_num => 0); -- 4262811
125921 --
125922 -- set accounting line options
125923 --
125924 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
125925 p_natural_side_code => 'D'
125926 , p_gain_or_loss_flag => 'N'
125927 , p_gl_transfer_mode_code => 'S'
125928 , p_acct_entry_type_code => 'A'
125929 , p_switch_side_flag => 'Y'
125930 , p_merge_duplicate_code => 'N'
125931 );
125932 --
125933 l_acc_rev_natural_side_code := 'C'; -- 4262811
125934 --
125935 --
125936 -- set accounting line type info
125937 --
125938 xla_ae_lines_pkg.SetAcctLineType
125939 (p_component_type => l_component_type
125940 ,p_event_type_code => l_event_type_code
125941 ,p_line_definition_owner_code => l_line_definition_owner_code
125942 ,p_line_definition_code => l_line_definition_code
125943 ,p_accounting_line_code => l_component_code
125944 ,p_accounting_line_type_code => l_component_type_code
125945 ,p_accounting_line_appl_id => l_component_appl_id
125946 ,p_amb_context_code => l_amb_context_code
125947 ,p_entity_code => l_entity_code
125948 ,p_event_class_code => l_event_class_code);
125949 --
125950 -- set accounting class
125951 --
125952 xla_ae_lines_pkg.SetAcctClass(
125953 p_accounting_class_code => 'RECEIVING_INSPECTION'
125954 , p_ae_header_id => l_ae_header_id
125955 );
125956
125957 --
125958 -- set rounding class
125959 --
125960 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
125961 'RECEIVING_INSPECTION';
125962
125963 --
125964 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
125965 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
125966 --
125967 -- bulk performance
125968 --
125969 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
125970
125971 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
125972 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
125973
125974 -- 4955764
125975 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
125976 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
125977
125978 -- 4458381 Public Sector Enh
125979
125980 --
125981 -- set accounting attributes for the line type
125982 --
125983 l_entered_amt_idx := 17;
125984 l_accted_amt_idx := 22;
125985 l_bflow_applied_to_amt_idx := NULL; -- 5132302
125986 l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
125987 l_rec_acct_attrs.array_num_value(1) := p_source_6;
125988 l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
125989 l_rec_acct_attrs.array_char_value(2) := p_source_7;
125990 l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
125991 l_rec_acct_attrs.array_char_value(3) := p_source_8;
125992 l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
125993 l_rec_acct_attrs.array_num_value(4) := to_char(p_source_28);
125994 l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
125995 l_rec_acct_attrs.array_num_value(5) := to_char(p_source_10);
125996 l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
125997 l_rec_acct_attrs.array_num_value(6) := to_char(p_source_11);
125998 l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
125999 l_rec_acct_attrs.array_char_value(7) := p_source_12;
126000 l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
126001 l_rec_acct_attrs.array_num_value(8) := TO_NUMBER(p_source_13);
126002 l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
126003 l_rec_acct_attrs.array_num_value(9) := p_source_14;
126004 l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
126005 l_rec_acct_attrs.array_char_value(10) := p_source_15;
126006 l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
126007 l_rec_acct_attrs.array_num_value(11) := p_source_16;
126008 l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
126009 l_rec_acct_attrs.array_num_value(12) := TO_NUMBER(p_source_13);
126010 l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
126011 l_rec_acct_attrs.array_num_value(13) := p_source_14;
126012 l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
126013 l_rec_acct_attrs.array_char_value(14) := p_source_15;
126014 l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
126015 l_rec_acct_attrs.array_num_value(15) := p_source_16;
126016 l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
126017 l_rec_acct_attrs.array_char_value(16) := p_source_27;
126018 l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
126019 l_rec_acct_attrs.array_num_value(17) := p_source_18;
126020 l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
126021 l_rec_acct_attrs.array_char_value(18) := p_source_15;
126022 l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
126023 l_rec_acct_attrs.array_date_value(19) := p_source_19;
126024 l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
126025 l_rec_acct_attrs.array_num_value(20) := p_source_20;
126026 l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
126027 l_rec_acct_attrs.array_char_value(21) := p_source_21;
126028 l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
126029 l_rec_acct_attrs.array_num_value(22) := p_source_22;
126030 l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
126031 l_rec_acct_attrs.array_num_value(23) := p_source_23;
126032 l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
126033 l_rec_acct_attrs.array_num_value(24) := p_source_23;
126034
126035 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
126036 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
126037
126038 ---------------------------------------------------------------------------------------------------------------
126039 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
126040 ---------------------------------------------------------------------------------------------------------------
126041 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
126042
126043 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
126044 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
126045
126046 IF xla_accounting_cache_pkg.GetValueChar
126047 (p_source_code => 'LEDGER_CATEGORY_CODE'
126048 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
126049 AND l_bflow_method_code = 'PRIOR_ENTRY'
126050 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
126051 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
126052 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
126053 )
126054 THEN
126055 xla_ae_lines_pkg.BflowUpgEntry
126056 (p_business_method_code => l_bflow_method_code
126057 ,p_business_class_code => l_bflow_class_code
126058 ,p_balance_type => l_balance_type_code);
126059 ELSE
126060 NULL;
126061 -- No business flow processing for business flow method of NONE.
126062 END IF;
126063
126064 --
126065 -- call analytical criteria
126066 --
126067
126068 --
126069 -- call description
126070 --
126071 -- No description or it is inherited.
126072 --
126073 -- call ADRs
126074 -- Bug 4922099
126075 --
126076 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
126077 (NVL(l_actual_upg_option, 'N') = 'O') OR
126078 (NVL(l_enc_upg_option, 'N') = 'O')
126079 )
126080 THEN
126081 NULL;
126082 --
126083 --
126084
126085 l_ccid := AcctDerRule_4(
126086 p_application_id => p_application_id
126087 , p_ae_header_id => l_ae_header_id
126088 , p_source_4 => p_source_4
126089 , x_transaction_coa_id => l_adr_transaction_coa_id
126090 , x_accounting_coa_id => l_adr_accounting_coa_id
126091 , x_value_type_code => l_adr_value_type_code
126092 , p_side => 'NA'
126093 );
126094
126095 xla_ae_lines_pkg.set_ccid(
126096 p_code_combination_id => l_ccid
126097 , p_value_type_code => l_adr_value_type_code
126098 , p_transaction_coa_id => l_adr_transaction_coa_id
126099 , p_accounting_coa_id => l_adr_accounting_coa_id
126100 , p_adr_code => 'CST_DEFAULT'
126101 , p_adr_type_code => 'S'
126102 , p_component_type => l_component_type
126103 , p_component_code => l_component_code
126104 , p_component_type_code => l_component_type_code
126105 , p_component_appl_id => l_component_appl_id
126106 , p_amb_context_code => l_amb_context_code
126107 , p_side => 'NA'
126108 );
126109
126110
126111 --
126112 --
126113 END IF;
126114 --
126115 -- Bug 4922099
126116 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
126117 (NVL(l_enc_upg_option, 'N') = 'O')
126118 ) AND
126119 (l_bflow_method_code = 'PRIOR_ENTRY')
126120 )
126121 THEN
126122 IF
126123 --
126124 1 = 2
126125 --
126126 THEN
126127 xla_accounting_err_pkg.build_message
126128 (p_appli_s_name => 'XLA'
126129 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
126130 ,p_token_1 => 'LINE_NUMBER'
126131 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
126132 ,p_token_2 => 'LINE_TYPE_NAME'
126133 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
126134 l_component_type
126135 ,l_component_code
126136 ,l_component_type_code
126137 ,l_component_appl_id
126138 ,l_amb_context_code
126139 ,l_entity_code
126140 ,l_event_class_code
126141 )
126142 ,p_token_3 => 'OWNER'
126143 ,p_value_3 => xla_lookups_pkg.get_meaning(
126144 p_lookup_type => 'XLA_OWNER_TYPE'
126145 ,p_lookup_code => l_component_type_code
126146 )
126147 ,p_token_4 => 'PRODUCT_NAME'
126148 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
126149 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
126150 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
126151 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
126152 ,p_ae_header_id => NULL
126153 );
126154
126155 IF (C_LEVEL_ERROR>= g_log_level) THEN
126156 trace
126157 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
126158 ,p_level => C_LEVEL_ERROR
126159 ,p_module => l_log_module);
126160 END IF;
126161 END IF;
126162 END IF;
126163 --
126164 --
126165 ------------------------------------------------------------------------------------------------
126166 -- 4219869 Business Flow
126167 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
126168 -- Prior Entry. Currently, the following code is always generated.
126169 ------------------------------------------------------------------------------------------------
126170 XLA_AE_LINES_PKG.ValidateCurrentLine;
126171
126172 ------------------------------------------------------------------------------------
126173 -- 4219869 Business Flow
126174 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
126175 ------------------------------------------------------------------------------------
126176 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
126177
126178 ----------------------------------------------------------------------------------
126179 -- 4219869 Business Flow
126180 -- Update journal entry status -- Need to generate this within IF <condition>
126181 ----------------------------------------------------------------------------------
126182 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
126183 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
126184 ,p_balance_type_code => l_balance_type_code
126185 );
126186
126187 -------------------------------------------------------------------------------------------
126188 -- 4262811 - Generate the Accrual Reversal lines
126189 -------------------------------------------------------------------------------------------
126190 BEGIN
126191 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
126192 (g_array_event(p_event_id).array_value_num('header_index'));
126193 IF l_acc_rev_flag IS NULL THEN
126194 l_acc_rev_flag := 'N';
126195 END IF;
126196 EXCEPTION
126197 WHEN OTHERS THEN
126198 l_acc_rev_flag := 'N';
126199 END;
126200 --
126201 IF (l_acc_rev_flag = 'Y') THEN
126202
126203 -- 4645092 ------------------------------------------------------------------------------
126204 -- To allow MPA report to determine if it should generate report process
126205 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
126206 ------------------------------------------------------------------------------------------
126207
126208 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
126209 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
126210 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
126211 -- call ADRs
126212 -- Bug 4922099
126213 --
126214 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
126215 (NVL(l_actual_upg_option, 'N') = 'O') OR
126216 (NVL(l_enc_upg_option, 'N') = 'O')
126217 )
126218 THEN
126219 NULL;
126220 --
126221 --
126222
126223 l_ccid := AcctDerRule_4(
126224 p_application_id => p_application_id
126225 , p_ae_header_id => l_ae_header_id
126226 , p_source_4 => p_source_4
126227 , x_transaction_coa_id => l_adr_transaction_coa_id
126228 , x_accounting_coa_id => l_adr_accounting_coa_id
126229 , x_value_type_code => l_adr_value_type_code
126230 , p_side => 'NA'
126231 );
126232
126233 xla_ae_lines_pkg.set_ccid(
126234 p_code_combination_id => l_ccid
126235 , p_value_type_code => l_adr_value_type_code
126236 , p_transaction_coa_id => l_adr_transaction_coa_id
126237 , p_accounting_coa_id => l_adr_accounting_coa_id
126238 , p_adr_code => 'CST_DEFAULT'
126239 , p_adr_type_code => 'S'
126240 , p_component_type => l_component_type
126241 , p_component_code => l_component_code
126242 , p_component_type_code => l_component_type_code
126243 , p_component_appl_id => l_component_appl_id
126244 , p_amb_context_code => l_amb_context_code
126245 , p_side => 'NA'
126246 );
126247
126248
126249 --
126250 --
126251 END IF;
126252
126253 --
126254 -- Update the line information that should be overwritten
126255 --
126256 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
126257 p_header_num => 1);
126258 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
126259
126260 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
126261
126262 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
126263 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
126264 END IF;
126265
126266 --
126267 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
126268 --
126269 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
126270 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
126271 ELSE
126272 ---------------------------------------------------------------------------------------------------
126273 -- 4262811a Switch Sign
126274 ---------------------------------------------------------------------------------------------------
126275 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
126276 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
126277 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
126278 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
126279 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
126280 -- 5132302
126281 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
126282 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
126283
126284 END IF;
126285
126286 -- 4955764
126287 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
126288 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
126289
126290
126291 XLA_AE_LINES_PKG.ValidateCurrentLine;
126292 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
126293
126294 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
126295 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
126296 ,p_balance_type_code => l_balance_type_code);
126297
126298 END IF;
126299
126300 -----------------------------------------------------------------------------------------
126301 -- 4262811 Multiperiod Accounting
126302 -----------------------------------------------------------------------------------------
126303 -- No MPA option is assigned.
126304
126305
126306 END IF;
126307 END IF;
126308 --
126309
126310 --
126311 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
126312 trace
126313 (p_msg => 'END of AcctLineType_228'
126314 ,p_level => C_LEVEL_PROCEDURE
126315 ,p_module => l_log_module);
126316 END IF;
126317 --
126318 EXCEPTION
126319 WHEN xla_exceptions_pkg.application_exception THEN
126320 RAISE;
126321 WHEN OTHERS THEN
126322 xla_exceptions_pkg.raise_message
126323 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_228');
126324 END AcctLineType_228;
126325 --
126326
126327 ---------------------------------------
126328 --
126329 -- PRIVATE FUNCTION
126330 -- AcctLineType_229
126331 --
126332 ---------------------------------------
126333 PROCEDURE AcctLineType_229 (
126334 p_application_id IN NUMBER
126335 ,p_event_id IN NUMBER
126336 ,p_calculate_acctd_flag IN VARCHAR2
126337 ,p_calculate_g_l_flag IN VARCHAR2
126338 ,p_actual_flag IN OUT VARCHAR2
126339 ,p_balance_type_code OUT VARCHAR2
126340 ,p_gain_or_loss_ref OUT VARCHAR2
126341
126342 --Cost Management Default Account
126343 , p_source_4 IN NUMBER
126344 --Receiving Accounting Line Type
126345 , p_source_5 IN VARCHAR2
126346 --DISTRIBUTION_IDENTIFIER
126347 , p_source_11 IN NUMBER
126348 --Distribution Type
126349 , p_source_12 IN VARCHAR2
126350 , p_source_12_meaning IN VARCHAR2
126351 --Entered Amount
126352 , p_source_18 IN NUMBER
126353 --Accounted Amount
126354 , p_source_22 IN NUMBER
126355 --Entered Currency Code
126356 , p_source_32 IN VARCHAR2
126357 --Currency Conversion Date
126358 , p_source_33 IN DATE
126359 --Currency Conversion Rate
126360 , p_source_34 IN NUMBER
126361 )
126362 IS
126363
126364 l_component_type VARCHAR2(80);
126365 l_component_code VARCHAR2(30);
126366 l_component_type_code VARCHAR2(1);
126367 l_component_appl_id INTEGER;
126368 l_amb_context_code VARCHAR2(30);
126369 l_entity_code VARCHAR2(30);
126370 l_event_class_code VARCHAR2(30);
126371 l_ae_header_id NUMBER;
126372 l_event_type_code VARCHAR2(30);
126373 l_line_definition_code VARCHAR2(30);
126374 l_line_definition_owner_code VARCHAR2(1);
126375 --
126376 -- adr variables
126377 l_segment VARCHAR2(30);
126378 l_ccid NUMBER;
126379 l_adr_transaction_coa_id NUMBER;
126380 l_adr_accounting_coa_id NUMBER;
126381 l_adr_flexfield_segment_code VARCHAR2(30);
126382 l_adr_flex_value_set_id NUMBER;
126383 l_adr_value_type_code VARCHAR2(30);
126384 l_adr_value_combination_id NUMBER;
126385 l_adr_value_segment_code VARCHAR2(30);
126386
126387 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
126388 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
126389 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
126390 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
126391
126392 -- 4262811 Variables ------------------------------------------------------------------------------------------
126393 l_entered_amt_idx NUMBER;
126394 l_accted_amt_idx NUMBER;
126395 l_acc_rev_flag VARCHAR2(1);
126396 l_accrual_line_num NUMBER;
126397 l_tmp_amt NUMBER;
126398 l_acc_rev_natural_side_code VARCHAR2(1);
126399
126400 l_num_entries NUMBER;
126401 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
126402 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
126403 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
126404 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
126405 l_recog_line_1 NUMBER;
126406 l_recog_line_2 NUMBER;
126407
126408 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
126409 l_bflow_applied_to_amt NUMBER; -- 5132302
126410 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
126411
126412 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
126413
126414 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
126415 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
126416
126417 ---------------------------------------------------------------------------------------------------------------
126418
126419
126420 --
126421 -- bulk performance
126422 --
126423 l_balance_type_code VARCHAR2(1);
126424 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
126425 l_log_module VARCHAR2(240);
126426
126427 --
126428 -- Upgrade strategy
126429 --
126430 l_actual_upg_option VARCHAR2(1);
126431 l_enc_upg_option VARCHAR2(1);
126432
126433 --
126434 BEGIN
126435 --
126436 IF g_log_enabled THEN
126437 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_229';
126438 END IF;
126439 --
126440 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
126441
126442 trace
126443 (p_msg => 'BEGIN of AcctLineType_229'
126444 ,p_level => C_LEVEL_PROCEDURE
126445 ,p_module => l_log_module);
126446
126447 END IF;
126448 --
126449 l_component_type := 'AMB_JLT';
126450 l_component_code := 'RECEIVING_INSPECTION';
126451 l_component_type_code := 'S';
126452 l_component_appl_id := 707;
126453 l_amb_context_code := 'DEFAULT';
126454 l_entity_code := 'RCV_ACCOUNTING_EVENTS';
126455 l_event_class_code := 'LDD_COST_ADJ_DEL';
126456 l_event_type_code := 'LDD_COST_ADJ_DEL_ALL';
126457 l_line_definition_owner_code := 'S';
126458 l_line_definition_code := 'LDD_COST_ADJ_DEL';
126459 --
126460 l_balance_type_code := 'A';
126461 l_segment := NULL;
126462 l_ccid := NULL;
126463 l_adr_transaction_coa_id := NULL;
126464 l_adr_accounting_coa_id := NULL;
126465 l_adr_flexfield_segment_code := NULL;
126466 l_adr_flex_value_set_id := NULL;
126467 l_adr_value_type_code := NULL;
126468 l_adr_value_combination_id := NULL;
126469 l_adr_value_segment_code := NULL;
126470
126471 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
126472 l_bflow_class_code := ''; -- 4219869 Business Flow
126473 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
126474 l_budgetary_control_flag := 'N';
126475
126476 l_bflow_applied_to_amt_idx := NULL; -- 5132302
126477 l_bflow_applied_to_amt := NULL; -- 5132302
126478 l_entered_amt_idx := NULL; -- 4262811
126479 l_accted_amt_idx := NULL; -- 4262811
126480 l_acc_rev_flag := NULL; -- 4262811
126481 l_accrual_line_num := NULL; -- 4262811
126482 l_tmp_amt := NULL; -- 4262811
126483 --
126484
126485 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
126486 l_balance_type_code <> 'B' THEN
126487 IF NVL(p_source_5,'
126488 ') = 'Receiving Inspection'
126489 THEN
126490
126491 --
126492 XLA_AE_LINES_PKG.SetNewLine;
126493
126494 p_balance_type_code := l_balance_type_code;
126495 -- set the flag so later we will know whether the gain loss line needs to be created
126496
126497 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
126498 p_actual_flag :='A';
126499 END IF;
126500
126501 --
126502 -- bulk performance
126503 --
126504 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
126505 p_header_num => 0); -- 4262811
126506 --
126507 -- set accounting line options
126508 --
126509 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
126510 p_natural_side_code => 'D'
126511 , p_gain_or_loss_flag => 'N'
126512 , p_gl_transfer_mode_code => 'S'
126513 , p_acct_entry_type_code => 'A'
126514 , p_switch_side_flag => 'Y'
126515 , p_merge_duplicate_code => 'N'
126516 );
126517 --
126518 l_acc_rev_natural_side_code := 'C'; -- 4262811
126519 --
126520 --
126521 -- set accounting line type info
126522 --
126523 xla_ae_lines_pkg.SetAcctLineType
126524 (p_component_type => l_component_type
126525 ,p_event_type_code => l_event_type_code
126526 ,p_line_definition_owner_code => l_line_definition_owner_code
126527 ,p_line_definition_code => l_line_definition_code
126528 ,p_accounting_line_code => l_component_code
126529 ,p_accounting_line_type_code => l_component_type_code
126530 ,p_accounting_line_appl_id => l_component_appl_id
126531 ,p_amb_context_code => l_amb_context_code
126532 ,p_entity_code => l_entity_code
126533 ,p_event_class_code => l_event_class_code);
126534 --
126535 -- set accounting class
126536 --
126537 xla_ae_lines_pkg.SetAcctClass(
126538 p_accounting_class_code => 'RECEIVING_INSPECTION'
126539 , p_ae_header_id => l_ae_header_id
126540 );
126541
126542 --
126543 -- set rounding class
126544 --
126545 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
126546 'RECEIVING_INSPECTION';
126547
126548 --
126549 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
126550 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
126551 --
126552 -- bulk performance
126553 --
126554 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
126555
126556 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
126557 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
126558
126559 -- 4955764
126560 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
126561 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
126562
126563 -- 4458381 Public Sector Enh
126564
126565 --
126566 -- set accounting attributes for the line type
126567 --
126568 l_entered_amt_idx := 3;
126569 l_accted_amt_idx := 7;
126570 l_bflow_applied_to_amt_idx := NULL; -- 5132302
126571 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
126572 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
126573 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
126574 l_rec_acct_attrs.array_char_value(2) := p_source_12;
126575 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
126576 l_rec_acct_attrs.array_num_value(3) := p_source_18;
126577 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
126578 l_rec_acct_attrs.array_char_value(4) := p_source_32;
126579 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
126580 l_rec_acct_attrs.array_date_value(5) := p_source_33;
126581 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
126582 l_rec_acct_attrs.array_num_value(6) := p_source_34;
126583 l_rec_acct_attrs.array_acct_attr_code(7) := 'LEDGER_AMOUNT';
126584 l_rec_acct_attrs.array_num_value(7) := p_source_22;
126585
126586 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
126587 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
126588
126589 ---------------------------------------------------------------------------------------------------------------
126590 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
126591 ---------------------------------------------------------------------------------------------------------------
126592 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
126593
126594 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
126595 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
126596
126597 IF xla_accounting_cache_pkg.GetValueChar
126598 (p_source_code => 'LEDGER_CATEGORY_CODE'
126599 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
126600 AND l_bflow_method_code = 'PRIOR_ENTRY'
126601 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
126602 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
126603 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
126604 )
126605 THEN
126606 xla_ae_lines_pkg.BflowUpgEntry
126607 (p_business_method_code => l_bflow_method_code
126608 ,p_business_class_code => l_bflow_class_code
126609 ,p_balance_type => l_balance_type_code);
126610 ELSE
126611 NULL;
126612 -- No business flow processing for business flow method of NONE.
126613 END IF;
126614
126615 --
126616 -- call analytical criteria
126617 --
126618
126619 --
126620 -- call description
126621 --
126622 -- No description or it is inherited.
126623 --
126624 -- call ADRs
126625 -- Bug 4922099
126626 --
126627 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
126628 (NVL(l_actual_upg_option, 'N') = 'O') OR
126629 (NVL(l_enc_upg_option, 'N') = 'O')
126630 )
126631 THEN
126632 NULL;
126633 --
126634 --
126635
126636 l_ccid := AcctDerRule_4(
126637 p_application_id => p_application_id
126638 , p_ae_header_id => l_ae_header_id
126639 , p_source_4 => p_source_4
126640 , x_transaction_coa_id => l_adr_transaction_coa_id
126641 , x_accounting_coa_id => l_adr_accounting_coa_id
126642 , x_value_type_code => l_adr_value_type_code
126643 , p_side => 'NA'
126644 );
126645
126646 xla_ae_lines_pkg.set_ccid(
126647 p_code_combination_id => l_ccid
126648 , p_value_type_code => l_adr_value_type_code
126649 , p_transaction_coa_id => l_adr_transaction_coa_id
126650 , p_accounting_coa_id => l_adr_accounting_coa_id
126651 , p_adr_code => 'CST_DEFAULT'
126652 , p_adr_type_code => 'S'
126653 , p_component_type => l_component_type
126654 , p_component_code => l_component_code
126655 , p_component_type_code => l_component_type_code
126656 , p_component_appl_id => l_component_appl_id
126657 , p_amb_context_code => l_amb_context_code
126658 , p_side => 'NA'
126659 );
126660
126661
126662 --
126663 --
126664 END IF;
126665 --
126666 -- Bug 4922099
126667 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
126668 (NVL(l_enc_upg_option, 'N') = 'O')
126669 ) AND
126670 (l_bflow_method_code = 'PRIOR_ENTRY')
126671 )
126672 THEN
126673 IF
126674 --
126675 1 = 2
126676 --
126677 THEN
126678 xla_accounting_err_pkg.build_message
126679 (p_appli_s_name => 'XLA'
126680 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
126681 ,p_token_1 => 'LINE_NUMBER'
126682 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
126683 ,p_token_2 => 'LINE_TYPE_NAME'
126684 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
126685 l_component_type
126686 ,l_component_code
126687 ,l_component_type_code
126688 ,l_component_appl_id
126689 ,l_amb_context_code
126690 ,l_entity_code
126691 ,l_event_class_code
126692 )
126693 ,p_token_3 => 'OWNER'
126694 ,p_value_3 => xla_lookups_pkg.get_meaning(
126695 p_lookup_type => 'XLA_OWNER_TYPE'
126696 ,p_lookup_code => l_component_type_code
126697 )
126698 ,p_token_4 => 'PRODUCT_NAME'
126699 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
126700 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
126701 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
126702 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
126703 ,p_ae_header_id => NULL
126704 );
126705
126706 IF (C_LEVEL_ERROR>= g_log_level) THEN
126707 trace
126708 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
126709 ,p_level => C_LEVEL_ERROR
126710 ,p_module => l_log_module);
126711 END IF;
126712 END IF;
126713 END IF;
126714 --
126715 --
126716 ------------------------------------------------------------------------------------------------
126717 -- 4219869 Business Flow
126718 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
126719 -- Prior Entry. Currently, the following code is always generated.
126720 ------------------------------------------------------------------------------------------------
126721 XLA_AE_LINES_PKG.ValidateCurrentLine;
126722
126723 ------------------------------------------------------------------------------------
126724 -- 4219869 Business Flow
126725 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
126726 ------------------------------------------------------------------------------------
126727 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
126728
126729 ----------------------------------------------------------------------------------
126730 -- 4219869 Business Flow
126731 -- Update journal entry status -- Need to generate this within IF <condition>
126732 ----------------------------------------------------------------------------------
126733 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
126734 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
126735 ,p_balance_type_code => l_balance_type_code
126736 );
126737
126738 -------------------------------------------------------------------------------------------
126739 -- 4262811 - Generate the Accrual Reversal lines
126740 -------------------------------------------------------------------------------------------
126741 BEGIN
126742 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
126743 (g_array_event(p_event_id).array_value_num('header_index'));
126744 IF l_acc_rev_flag IS NULL THEN
126745 l_acc_rev_flag := 'N';
126746 END IF;
126747 EXCEPTION
126748 WHEN OTHERS THEN
126749 l_acc_rev_flag := 'N';
126750 END;
126751 --
126752 IF (l_acc_rev_flag = 'Y') THEN
126753
126754 -- 4645092 ------------------------------------------------------------------------------
126755 -- To allow MPA report to determine if it should generate report process
126756 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
126757 ------------------------------------------------------------------------------------------
126758
126759 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
126760 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
126761 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
126762 -- call ADRs
126763 -- Bug 4922099
126764 --
126765 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
126766 (NVL(l_actual_upg_option, 'N') = 'O') OR
126767 (NVL(l_enc_upg_option, 'N') = 'O')
126768 )
126769 THEN
126770 NULL;
126771 --
126772 --
126773
126774 l_ccid := AcctDerRule_4(
126775 p_application_id => p_application_id
126776 , p_ae_header_id => l_ae_header_id
126777 , p_source_4 => p_source_4
126778 , x_transaction_coa_id => l_adr_transaction_coa_id
126779 , x_accounting_coa_id => l_adr_accounting_coa_id
126780 , x_value_type_code => l_adr_value_type_code
126781 , p_side => 'NA'
126782 );
126783
126784 xla_ae_lines_pkg.set_ccid(
126785 p_code_combination_id => l_ccid
126786 , p_value_type_code => l_adr_value_type_code
126787 , p_transaction_coa_id => l_adr_transaction_coa_id
126788 , p_accounting_coa_id => l_adr_accounting_coa_id
126789 , p_adr_code => 'CST_DEFAULT'
126790 , p_adr_type_code => 'S'
126791 , p_component_type => l_component_type
126792 , p_component_code => l_component_code
126793 , p_component_type_code => l_component_type_code
126794 , p_component_appl_id => l_component_appl_id
126795 , p_amb_context_code => l_amb_context_code
126796 , p_side => 'NA'
126797 );
126798
126799
126800 --
126801 --
126802 END IF;
126803
126804 --
126805 -- Update the line information that should be overwritten
126806 --
126807 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
126808 p_header_num => 1);
126809 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
126810
126811 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
126812
126813 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
126814 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
126815 END IF;
126816
126817 --
126818 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
126819 --
126820 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
126821 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
126822 ELSE
126823 ---------------------------------------------------------------------------------------------------
126824 -- 4262811a Switch Sign
126825 ---------------------------------------------------------------------------------------------------
126826 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
126827 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
126828 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
126829 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
126830 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
126831 -- 5132302
126832 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
126833 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
126834
126835 END IF;
126836
126837 -- 4955764
126838 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
126839 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
126840
126841
126842 XLA_AE_LINES_PKG.ValidateCurrentLine;
126843 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
126844
126845 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
126846 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
126847 ,p_balance_type_code => l_balance_type_code);
126848
126849 END IF;
126850
126851 -----------------------------------------------------------------------------------------
126852 -- 4262811 Multiperiod Accounting
126853 -----------------------------------------------------------------------------------------
126854 -- No MPA option is assigned.
126855
126856
126857 END IF;
126858 END IF;
126859 --
126860
126861 --
126862 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
126863 trace
126864 (p_msg => 'END of AcctLineType_229'
126865 ,p_level => C_LEVEL_PROCEDURE
126866 ,p_module => l_log_module);
126867 END IF;
126868 --
126869 EXCEPTION
126870 WHEN xla_exceptions_pkg.application_exception THEN
126871 RAISE;
126872 WHEN OTHERS THEN
126873 xla_exceptions_pkg.raise_message
126874 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_229');
126875 END AcctLineType_229;
126876 --
126877
126878 ---------------------------------------
126879 --
126880 -- PRIVATE FUNCTION
126881 -- AcctLineType_230
126882 --
126883 ---------------------------------------
126884 PROCEDURE AcctLineType_230 (
126885 p_application_id IN NUMBER
126886 ,p_event_id IN NUMBER
126887 ,p_calculate_acctd_flag IN VARCHAR2
126888 ,p_calculate_g_l_flag IN VARCHAR2
126889 ,p_actual_flag IN OUT VARCHAR2
126890 ,p_balance_type_code OUT VARCHAR2
126891 ,p_gain_or_loss_ref OUT VARCHAR2
126892
126893 --Cost Management Default Account
126894 , p_source_4 IN NUMBER
126895 --Receiving Accounting Line Type
126896 , p_source_5 IN VARCHAR2
126897 --DISTRIBUTION_IDENTIFIER
126898 , p_source_11 IN NUMBER
126899 --Distribution Type
126900 , p_source_12 IN VARCHAR2
126901 , p_source_12_meaning IN VARCHAR2
126902 --Entered Amount
126903 , p_source_18 IN NUMBER
126904 --Accounted Amount
126905 , p_source_22 IN NUMBER
126906 --Entered Currency Code
126907 , p_source_32 IN VARCHAR2
126908 --Currency Conversion Date
126909 , p_source_33 IN DATE
126910 --Currency Conversion Rate
126911 , p_source_34 IN NUMBER
126912 --Currency Conversion Type
126913 , p_source_36 IN VARCHAR2
126914 )
126915 IS
126916
126917 l_component_type VARCHAR2(80);
126918 l_component_code VARCHAR2(30);
126919 l_component_type_code VARCHAR2(1);
126920 l_component_appl_id INTEGER;
126921 l_amb_context_code VARCHAR2(30);
126922 l_entity_code VARCHAR2(30);
126923 l_event_class_code VARCHAR2(30);
126924 l_ae_header_id NUMBER;
126925 l_event_type_code VARCHAR2(30);
126926 l_line_definition_code VARCHAR2(30);
126927 l_line_definition_owner_code VARCHAR2(1);
126928 --
126929 -- adr variables
126930 l_segment VARCHAR2(30);
126931 l_ccid NUMBER;
126932 l_adr_transaction_coa_id NUMBER;
126933 l_adr_accounting_coa_id NUMBER;
126934 l_adr_flexfield_segment_code VARCHAR2(30);
126935 l_adr_flex_value_set_id NUMBER;
126936 l_adr_value_type_code VARCHAR2(30);
126937 l_adr_value_combination_id NUMBER;
126938 l_adr_value_segment_code VARCHAR2(30);
126939
126940 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
126941 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
126942 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
126943 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
126944
126945 -- 4262811 Variables ------------------------------------------------------------------------------------------
126946 l_entered_amt_idx NUMBER;
126947 l_accted_amt_idx NUMBER;
126948 l_acc_rev_flag VARCHAR2(1);
126949 l_accrual_line_num NUMBER;
126950 l_tmp_amt NUMBER;
126951 l_acc_rev_natural_side_code VARCHAR2(1);
126952
126953 l_num_entries NUMBER;
126954 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
126955 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
126956 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
126957 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
126958 l_recog_line_1 NUMBER;
126959 l_recog_line_2 NUMBER;
126960
126961 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
126962 l_bflow_applied_to_amt NUMBER; -- 5132302
126963 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
126964
126965 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
126966
126967 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
126968 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
126969
126970 ---------------------------------------------------------------------------------------------------------------
126971
126972
126973 --
126974 -- bulk performance
126975 --
126976 l_balance_type_code VARCHAR2(1);
126977 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
126978 l_log_module VARCHAR2(240);
126979
126980 --
126981 -- Upgrade strategy
126982 --
126983 l_actual_upg_option VARCHAR2(1);
126984 l_enc_upg_option VARCHAR2(1);
126985
126986 --
126987 BEGIN
126988 --
126989 IF g_log_enabled THEN
126990 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_230';
126991 END IF;
126992 --
126993 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
126994
126995 trace
126996 (p_msg => 'BEGIN of AcctLineType_230'
126997 ,p_level => C_LEVEL_PROCEDURE
126998 ,p_module => l_log_module);
126999
127000 END IF;
127001 --
127002 l_component_type := 'AMB_JLT';
127003 l_component_code := 'RECEIVING_INSPECTION';
127004 l_component_type_code := 'S';
127005 l_component_appl_id := 707;
127006 l_amb_context_code := 'DEFAULT';
127007 l_entity_code := 'RCV_ACCOUNTING_EVENTS';
127008 l_event_class_code := 'LDD_COST_ADJ_RCV';
127009 l_event_type_code := 'LDD_COST_ADJ_RCV_ALL';
127010 l_line_definition_owner_code := 'S';
127011 l_line_definition_code := 'LDD_COST_ADJ_RCV';
127012 --
127013 l_balance_type_code := 'A';
127014 l_segment := NULL;
127015 l_ccid := NULL;
127016 l_adr_transaction_coa_id := NULL;
127017 l_adr_accounting_coa_id := NULL;
127018 l_adr_flexfield_segment_code := NULL;
127019 l_adr_flex_value_set_id := NULL;
127020 l_adr_value_type_code := NULL;
127021 l_adr_value_combination_id := NULL;
127022 l_adr_value_segment_code := NULL;
127023
127024 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
127025 l_bflow_class_code := ''; -- 4219869 Business Flow
127026 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
127027 l_budgetary_control_flag := 'N';
127028
127029 l_bflow_applied_to_amt_idx := NULL; -- 5132302
127030 l_bflow_applied_to_amt := NULL; -- 5132302
127031 l_entered_amt_idx := NULL; -- 4262811
127032 l_accted_amt_idx := NULL; -- 4262811
127033 l_acc_rev_flag := NULL; -- 4262811
127034 l_accrual_line_num := NULL; -- 4262811
127035 l_tmp_amt := NULL; -- 4262811
127036 --
127037
127038 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
127039 l_balance_type_code <> 'B' THEN
127040 IF NVL(p_source_5,'
127041 ') = 'Receiving Inspection'
127042 THEN
127043
127044 --
127045 XLA_AE_LINES_PKG.SetNewLine;
127046
127047 p_balance_type_code := l_balance_type_code;
127048 -- set the flag so later we will know whether the gain loss line needs to be created
127049
127050 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
127051 p_actual_flag :='A';
127052 END IF;
127053
127054 --
127055 -- bulk performance
127056 --
127057 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
127058 p_header_num => 0); -- 4262811
127059 --
127060 -- set accounting line options
127061 --
127062 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
127063 p_natural_side_code => 'D'
127064 , p_gain_or_loss_flag => 'N'
127065 , p_gl_transfer_mode_code => 'S'
127066 , p_acct_entry_type_code => 'A'
127067 , p_switch_side_flag => 'Y'
127068 , p_merge_duplicate_code => 'N'
127069 );
127070 --
127071 l_acc_rev_natural_side_code := 'C'; -- 4262811
127072 --
127073 --
127074 -- set accounting line type info
127075 --
127076 xla_ae_lines_pkg.SetAcctLineType
127077 (p_component_type => l_component_type
127078 ,p_event_type_code => l_event_type_code
127079 ,p_line_definition_owner_code => l_line_definition_owner_code
127080 ,p_line_definition_code => l_line_definition_code
127081 ,p_accounting_line_code => l_component_code
127082 ,p_accounting_line_type_code => l_component_type_code
127083 ,p_accounting_line_appl_id => l_component_appl_id
127084 ,p_amb_context_code => l_amb_context_code
127085 ,p_entity_code => l_entity_code
127086 ,p_event_class_code => l_event_class_code);
127087 --
127088 -- set accounting class
127089 --
127090 xla_ae_lines_pkg.SetAcctClass(
127091 p_accounting_class_code => 'RECEIVING_INSPECTION'
127092 , p_ae_header_id => l_ae_header_id
127093 );
127094
127095 --
127096 -- set rounding class
127097 --
127098 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
127099 'RECEIVING_INSPECTION';
127100
127101 --
127102 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
127103 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
127104 --
127105 -- bulk performance
127106 --
127107 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
127108
127109 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
127110 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
127111
127112 -- 4955764
127113 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
127114 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
127115
127116 -- 4458381 Public Sector Enh
127117
127118 --
127119 -- set accounting attributes for the line type
127120 --
127121 l_entered_amt_idx := 3;
127122 l_accted_amt_idx := 8;
127123 l_bflow_applied_to_amt_idx := NULL; -- 5132302
127124 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
127125 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
127126 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
127127 l_rec_acct_attrs.array_char_value(2) := p_source_12;
127128 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
127129 l_rec_acct_attrs.array_num_value(3) := p_source_18;
127130 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
127131 l_rec_acct_attrs.array_char_value(4) := p_source_32;
127132 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
127133 l_rec_acct_attrs.array_date_value(5) := p_source_33;
127134 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
127135 l_rec_acct_attrs.array_num_value(6) := p_source_34;
127136 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
127137 l_rec_acct_attrs.array_char_value(7) := p_source_36;
127138 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
127139 l_rec_acct_attrs.array_num_value(8) := p_source_22;
127140
127141 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
127142 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
127143
127144 ---------------------------------------------------------------------------------------------------------------
127145 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
127146 ---------------------------------------------------------------------------------------------------------------
127147 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
127148
127149 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
127150 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
127151
127152 IF xla_accounting_cache_pkg.GetValueChar
127153 (p_source_code => 'LEDGER_CATEGORY_CODE'
127154 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
127155 AND l_bflow_method_code = 'PRIOR_ENTRY'
127156 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
127157 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
127158 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
127159 )
127160 THEN
127161 xla_ae_lines_pkg.BflowUpgEntry
127162 (p_business_method_code => l_bflow_method_code
127163 ,p_business_class_code => l_bflow_class_code
127164 ,p_balance_type => l_balance_type_code);
127165 ELSE
127166 NULL;
127167 -- No business flow processing for business flow method of NONE.
127168 END IF;
127169
127170 --
127171 -- call analytical criteria
127172 --
127173
127174 --
127175 -- call description
127176 --
127177 -- No description or it is inherited.
127178 --
127179 -- call ADRs
127180 -- Bug 4922099
127181 --
127182 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
127183 (NVL(l_actual_upg_option, 'N') = 'O') OR
127184 (NVL(l_enc_upg_option, 'N') = 'O')
127185 )
127186 THEN
127187 NULL;
127188 --
127189 --
127190
127191 l_ccid := AcctDerRule_4(
127192 p_application_id => p_application_id
127193 , p_ae_header_id => l_ae_header_id
127194 , p_source_4 => p_source_4
127195 , x_transaction_coa_id => l_adr_transaction_coa_id
127196 , x_accounting_coa_id => l_adr_accounting_coa_id
127197 , x_value_type_code => l_adr_value_type_code
127198 , p_side => 'NA'
127199 );
127200
127201 xla_ae_lines_pkg.set_ccid(
127202 p_code_combination_id => l_ccid
127203 , p_value_type_code => l_adr_value_type_code
127204 , p_transaction_coa_id => l_adr_transaction_coa_id
127205 , p_accounting_coa_id => l_adr_accounting_coa_id
127206 , p_adr_code => 'CST_DEFAULT'
127207 , p_adr_type_code => 'S'
127208 , p_component_type => l_component_type
127209 , p_component_code => l_component_code
127210 , p_component_type_code => l_component_type_code
127211 , p_component_appl_id => l_component_appl_id
127212 , p_amb_context_code => l_amb_context_code
127213 , p_side => 'NA'
127214 );
127215
127216
127217 --
127218 --
127219 END IF;
127220 --
127221 -- Bug 4922099
127222 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
127223 (NVL(l_enc_upg_option, 'N') = 'O')
127224 ) AND
127225 (l_bflow_method_code = 'PRIOR_ENTRY')
127226 )
127227 THEN
127228 IF
127229 --
127230 1 = 2
127231 --
127232 THEN
127233 xla_accounting_err_pkg.build_message
127234 (p_appli_s_name => 'XLA'
127235 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
127236 ,p_token_1 => 'LINE_NUMBER'
127237 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
127238 ,p_token_2 => 'LINE_TYPE_NAME'
127239 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
127240 l_component_type
127241 ,l_component_code
127242 ,l_component_type_code
127243 ,l_component_appl_id
127244 ,l_amb_context_code
127245 ,l_entity_code
127246 ,l_event_class_code
127247 )
127248 ,p_token_3 => 'OWNER'
127249 ,p_value_3 => xla_lookups_pkg.get_meaning(
127250 p_lookup_type => 'XLA_OWNER_TYPE'
127251 ,p_lookup_code => l_component_type_code
127252 )
127253 ,p_token_4 => 'PRODUCT_NAME'
127254 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
127255 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
127256 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
127257 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
127258 ,p_ae_header_id => NULL
127259 );
127260
127261 IF (C_LEVEL_ERROR>= g_log_level) THEN
127262 trace
127263 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
127264 ,p_level => C_LEVEL_ERROR
127265 ,p_module => l_log_module);
127266 END IF;
127267 END IF;
127268 END IF;
127269 --
127270 --
127271 ------------------------------------------------------------------------------------------------
127272 -- 4219869 Business Flow
127273 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
127274 -- Prior Entry. Currently, the following code is always generated.
127275 ------------------------------------------------------------------------------------------------
127276 XLA_AE_LINES_PKG.ValidateCurrentLine;
127277
127278 ------------------------------------------------------------------------------------
127279 -- 4219869 Business Flow
127280 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
127281 ------------------------------------------------------------------------------------
127282 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
127283
127284 ----------------------------------------------------------------------------------
127285 -- 4219869 Business Flow
127286 -- Update journal entry status -- Need to generate this within IF <condition>
127287 ----------------------------------------------------------------------------------
127288 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
127289 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
127290 ,p_balance_type_code => l_balance_type_code
127291 );
127292
127293 -------------------------------------------------------------------------------------------
127294 -- 4262811 - Generate the Accrual Reversal lines
127295 -------------------------------------------------------------------------------------------
127296 BEGIN
127297 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
127298 (g_array_event(p_event_id).array_value_num('header_index'));
127299 IF l_acc_rev_flag IS NULL THEN
127300 l_acc_rev_flag := 'N';
127301 END IF;
127302 EXCEPTION
127303 WHEN OTHERS THEN
127304 l_acc_rev_flag := 'N';
127305 END;
127306 --
127307 IF (l_acc_rev_flag = 'Y') THEN
127308
127309 -- 4645092 ------------------------------------------------------------------------------
127310 -- To allow MPA report to determine if it should generate report process
127311 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
127312 ------------------------------------------------------------------------------------------
127313
127314 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
127315 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
127316 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
127317 -- call ADRs
127318 -- Bug 4922099
127319 --
127320 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
127321 (NVL(l_actual_upg_option, 'N') = 'O') OR
127322 (NVL(l_enc_upg_option, 'N') = 'O')
127323 )
127324 THEN
127325 NULL;
127326 --
127327 --
127328
127329 l_ccid := AcctDerRule_4(
127330 p_application_id => p_application_id
127331 , p_ae_header_id => l_ae_header_id
127332 , p_source_4 => p_source_4
127333 , x_transaction_coa_id => l_adr_transaction_coa_id
127334 , x_accounting_coa_id => l_adr_accounting_coa_id
127335 , x_value_type_code => l_adr_value_type_code
127336 , p_side => 'NA'
127337 );
127338
127339 xla_ae_lines_pkg.set_ccid(
127340 p_code_combination_id => l_ccid
127341 , p_value_type_code => l_adr_value_type_code
127342 , p_transaction_coa_id => l_adr_transaction_coa_id
127343 , p_accounting_coa_id => l_adr_accounting_coa_id
127344 , p_adr_code => 'CST_DEFAULT'
127345 , p_adr_type_code => 'S'
127346 , p_component_type => l_component_type
127347 , p_component_code => l_component_code
127348 , p_component_type_code => l_component_type_code
127349 , p_component_appl_id => l_component_appl_id
127350 , p_amb_context_code => l_amb_context_code
127351 , p_side => 'NA'
127352 );
127353
127354
127355 --
127356 --
127357 END IF;
127358
127359 --
127360 -- Update the line information that should be overwritten
127361 --
127362 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
127363 p_header_num => 1);
127364 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
127365
127366 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
127367
127368 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
127369 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
127370 END IF;
127371
127372 --
127373 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
127374 --
127375 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
127376 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
127377 ELSE
127378 ---------------------------------------------------------------------------------------------------
127379 -- 4262811a Switch Sign
127380 ---------------------------------------------------------------------------------------------------
127381 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
127382 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
127383 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
127384 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
127385 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
127386 -- 5132302
127387 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
127388 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
127389
127390 END IF;
127391
127392 -- 4955764
127393 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
127394 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
127395
127396
127397 XLA_AE_LINES_PKG.ValidateCurrentLine;
127398 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
127399
127400 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
127401 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
127402 ,p_balance_type_code => l_balance_type_code);
127403
127404 END IF;
127405
127406 -----------------------------------------------------------------------------------------
127407 -- 4262811 Multiperiod Accounting
127408 -----------------------------------------------------------------------------------------
127409 -- No MPA option is assigned.
127410
127411
127412 END IF;
127413 END IF;
127414 --
127415
127416 --
127417 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
127418 trace
127419 (p_msg => 'END of AcctLineType_230'
127420 ,p_level => C_LEVEL_PROCEDURE
127421 ,p_module => l_log_module);
127422 END IF;
127423 --
127424 EXCEPTION
127425 WHEN xla_exceptions_pkg.application_exception THEN
127426 RAISE;
127427 WHEN OTHERS THEN
127428 xla_exceptions_pkg.raise_message
127429 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_230');
127430 END AcctLineType_230;
127431 --
127432
127433 ---------------------------------------
127434 --
127435 -- PRIVATE FUNCTION
127436 -- AcctLineType_231
127437 --
127438 ---------------------------------------
127439 PROCEDURE AcctLineType_231 (
127440 p_application_id IN NUMBER
127441 ,p_event_id IN NUMBER
127442 ,p_calculate_acctd_flag IN VARCHAR2
127443 ,p_calculate_g_l_flag IN VARCHAR2
127444 ,p_actual_flag IN OUT VARCHAR2
127445 ,p_balance_type_code OUT VARCHAR2
127446 ,p_gain_or_loss_ref OUT VARCHAR2
127447
127448 --Cost Management Default Account
127449 , p_source_4 IN NUMBER
127450 --Receiving Accounting Line Type
127451 , p_source_5 IN VARCHAR2
127452 --DISTRIBUTION_IDENTIFIER
127453 , p_source_11 IN NUMBER
127454 --Distribution Type
127455 , p_source_12 IN VARCHAR2
127456 , p_source_12_meaning IN VARCHAR2
127457 --Entered Currency Code
127458 , p_source_15 IN VARCHAR2
127459 --Entered Amount
127460 , p_source_18 IN NUMBER
127461 --Currency Conversion Date
127462 , p_source_19 IN DATE
127463 --Currency Conversion Rate
127464 , p_source_20 IN NUMBER
127465 --Currency Conversion Type
127466 , p_source_21 IN VARCHAR2
127467 --Accounted Amount
127468 , p_source_22 IN NUMBER
127469 )
127470 IS
127471
127472 l_component_type VARCHAR2(80);
127473 l_component_code VARCHAR2(30);
127474 l_component_type_code VARCHAR2(1);
127475 l_component_appl_id INTEGER;
127476 l_amb_context_code VARCHAR2(30);
127477 l_entity_code VARCHAR2(30);
127478 l_event_class_code VARCHAR2(30);
127479 l_ae_header_id NUMBER;
127480 l_event_type_code VARCHAR2(30);
127481 l_line_definition_code VARCHAR2(30);
127482 l_line_definition_owner_code VARCHAR2(1);
127483 --
127484 -- adr variables
127485 l_segment VARCHAR2(30);
127486 l_ccid NUMBER;
127487 l_adr_transaction_coa_id NUMBER;
127488 l_adr_accounting_coa_id NUMBER;
127489 l_adr_flexfield_segment_code VARCHAR2(30);
127490 l_adr_flex_value_set_id NUMBER;
127491 l_adr_value_type_code VARCHAR2(30);
127492 l_adr_value_combination_id NUMBER;
127493 l_adr_value_segment_code VARCHAR2(30);
127494
127495 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
127496 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
127497 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
127498 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
127499
127500 -- 4262811 Variables ------------------------------------------------------------------------------------------
127501 l_entered_amt_idx NUMBER;
127502 l_accted_amt_idx NUMBER;
127503 l_acc_rev_flag VARCHAR2(1);
127504 l_accrual_line_num NUMBER;
127505 l_tmp_amt NUMBER;
127506 l_acc_rev_natural_side_code VARCHAR2(1);
127507
127508 l_num_entries NUMBER;
127509 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
127510 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
127511 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
127512 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
127513 l_recog_line_1 NUMBER;
127514 l_recog_line_2 NUMBER;
127515
127516 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
127517 l_bflow_applied_to_amt NUMBER; -- 5132302
127518 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
127519
127520 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
127521
127522 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
127523 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
127524
127525 ---------------------------------------------------------------------------------------------------------------
127526
127527
127528 --
127529 -- bulk performance
127530 --
127531 l_balance_type_code VARCHAR2(1);
127532 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
127533 l_log_module VARCHAR2(240);
127534
127535 --
127536 -- Upgrade strategy
127537 --
127538 l_actual_upg_option VARCHAR2(1);
127539 l_enc_upg_option VARCHAR2(1);
127540
127541 --
127542 BEGIN
127543 --
127544 IF g_log_enabled THEN
127545 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_231';
127546 END IF;
127547 --
127548 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
127549
127550 trace
127551 (p_msg => 'BEGIN of AcctLineType_231'
127552 ,p_level => C_LEVEL_PROCEDURE
127553 ,p_module => l_log_module);
127554
127555 END IF;
127556 --
127557 l_component_type := 'AMB_JLT';
127558 l_component_code := 'RECEIVING_INSPECTION';
127559 l_component_type_code := 'S';
127560 l_component_appl_id := 707;
127561 l_amb_context_code := 'DEFAULT';
127562 l_entity_code := 'RCV_ACCOUNTING_EVENTS';
127563 l_event_class_code := 'RCPT_REC_INSP';
127564 l_event_type_code := 'RCPT_REC_INSP_ALL';
127565 l_line_definition_owner_code := 'S';
127566 l_line_definition_code := 'RCPT_REC_INSP';
127567 --
127568 l_balance_type_code := 'A';
127569 l_segment := NULL;
127570 l_ccid := NULL;
127571 l_adr_transaction_coa_id := NULL;
127572 l_adr_accounting_coa_id := NULL;
127573 l_adr_flexfield_segment_code := NULL;
127574 l_adr_flex_value_set_id := NULL;
127575 l_adr_value_type_code := NULL;
127576 l_adr_value_combination_id := NULL;
127577 l_adr_value_segment_code := NULL;
127578
127579 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
127580 l_bflow_class_code := ''; -- 4219869 Business Flow
127581 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
127582 l_budgetary_control_flag := 'N';
127583
127584 l_bflow_applied_to_amt_idx := NULL; -- 5132302
127585 l_bflow_applied_to_amt := NULL; -- 5132302
127586 l_entered_amt_idx := NULL; -- 4262811
127587 l_accted_amt_idx := NULL; -- 4262811
127588 l_acc_rev_flag := NULL; -- 4262811
127589 l_accrual_line_num := NULL; -- 4262811
127590 l_tmp_amt := NULL; -- 4262811
127591 --
127592
127593 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
127594 l_balance_type_code <> 'B' THEN
127595 IF NVL(p_source_5,'
127596 ') = 'Receiving Inspection'
127597 THEN
127598
127599 --
127600 XLA_AE_LINES_PKG.SetNewLine;
127601
127602 p_balance_type_code := l_balance_type_code;
127603 -- set the flag so later we will know whether the gain loss line needs to be created
127604
127605 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
127606 p_actual_flag :='A';
127607 END IF;
127608
127609 --
127610 -- bulk performance
127611 --
127612 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
127613 p_header_num => 0); -- 4262811
127614 --
127615 -- set accounting line options
127616 --
127617 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
127618 p_natural_side_code => 'D'
127619 , p_gain_or_loss_flag => 'N'
127620 , p_gl_transfer_mode_code => 'S'
127621 , p_acct_entry_type_code => 'A'
127622 , p_switch_side_flag => 'Y'
127623 , p_merge_duplicate_code => 'N'
127624 );
127625 --
127626 l_acc_rev_natural_side_code := 'C'; -- 4262811
127627 --
127628 --
127629 -- set accounting line type info
127630 --
127631 xla_ae_lines_pkg.SetAcctLineType
127632 (p_component_type => l_component_type
127633 ,p_event_type_code => l_event_type_code
127634 ,p_line_definition_owner_code => l_line_definition_owner_code
127635 ,p_line_definition_code => l_line_definition_code
127636 ,p_accounting_line_code => l_component_code
127637 ,p_accounting_line_type_code => l_component_type_code
127638 ,p_accounting_line_appl_id => l_component_appl_id
127639 ,p_amb_context_code => l_amb_context_code
127640 ,p_entity_code => l_entity_code
127641 ,p_event_class_code => l_event_class_code);
127642 --
127643 -- set accounting class
127644 --
127645 xla_ae_lines_pkg.SetAcctClass(
127646 p_accounting_class_code => 'RECEIVING_INSPECTION'
127647 , p_ae_header_id => l_ae_header_id
127648 );
127649
127650 --
127651 -- set rounding class
127652 --
127653 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
127654 'RECEIVING_INSPECTION';
127655
127656 --
127657 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
127658 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
127659 --
127660 -- bulk performance
127661 --
127662 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
127663
127664 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
127665 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
127666
127667 -- 4955764
127668 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
127669 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
127670
127671 -- 4458381 Public Sector Enh
127672
127673 --
127674 -- set accounting attributes for the line type
127675 --
127676 l_entered_amt_idx := 3;
127677 l_accted_amt_idx := 8;
127678 l_bflow_applied_to_amt_idx := NULL; -- 5132302
127679 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
127680 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
127681 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
127682 l_rec_acct_attrs.array_char_value(2) := p_source_12;
127683 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
127684 l_rec_acct_attrs.array_num_value(3) := p_source_18;
127685 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
127686 l_rec_acct_attrs.array_char_value(4) := p_source_15;
127687 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
127688 l_rec_acct_attrs.array_date_value(5) := p_source_19;
127689 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
127690 l_rec_acct_attrs.array_num_value(6) := p_source_20;
127691 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
127692 l_rec_acct_attrs.array_char_value(7) := p_source_21;
127693 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
127694 l_rec_acct_attrs.array_num_value(8) := p_source_22;
127695
127696 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
127697 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
127698
127699 ---------------------------------------------------------------------------------------------------------------
127700 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
127701 ---------------------------------------------------------------------------------------------------------------
127702 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
127703
127704 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
127705 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
127706
127707 IF xla_accounting_cache_pkg.GetValueChar
127708 (p_source_code => 'LEDGER_CATEGORY_CODE'
127709 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
127710 AND l_bflow_method_code = 'PRIOR_ENTRY'
127711 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
127712 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
127713 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
127714 )
127715 THEN
127716 xla_ae_lines_pkg.BflowUpgEntry
127717 (p_business_method_code => l_bflow_method_code
127718 ,p_business_class_code => l_bflow_class_code
127719 ,p_balance_type => l_balance_type_code);
127720 ELSE
127721 NULL;
127722 -- No business flow processing for business flow method of NONE.
127723 END IF;
127724
127725 --
127726 -- call analytical criteria
127727 --
127728
127729 --
127730 -- call description
127731 --
127732 -- No description or it is inherited.
127733 --
127734 -- call ADRs
127735 -- Bug 4922099
127736 --
127737 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
127738 (NVL(l_actual_upg_option, 'N') = 'O') OR
127739 (NVL(l_enc_upg_option, 'N') = 'O')
127740 )
127741 THEN
127742 NULL;
127743 --
127744 --
127745
127746 l_ccid := AcctDerRule_4(
127747 p_application_id => p_application_id
127748 , p_ae_header_id => l_ae_header_id
127749 , p_source_4 => p_source_4
127750 , x_transaction_coa_id => l_adr_transaction_coa_id
127751 , x_accounting_coa_id => l_adr_accounting_coa_id
127752 , x_value_type_code => l_adr_value_type_code
127753 , p_side => 'NA'
127754 );
127755
127756 xla_ae_lines_pkg.set_ccid(
127757 p_code_combination_id => l_ccid
127758 , p_value_type_code => l_adr_value_type_code
127759 , p_transaction_coa_id => l_adr_transaction_coa_id
127760 , p_accounting_coa_id => l_adr_accounting_coa_id
127761 , p_adr_code => 'CST_DEFAULT'
127762 , p_adr_type_code => 'S'
127763 , p_component_type => l_component_type
127764 , p_component_code => l_component_code
127765 , p_component_type_code => l_component_type_code
127766 , p_component_appl_id => l_component_appl_id
127767 , p_amb_context_code => l_amb_context_code
127768 , p_side => 'NA'
127769 );
127770
127771
127772 --
127773 --
127774 END IF;
127775 --
127776 -- Bug 4922099
127777 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
127778 (NVL(l_enc_upg_option, 'N') = 'O')
127779 ) AND
127780 (l_bflow_method_code = 'PRIOR_ENTRY')
127781 )
127782 THEN
127783 IF
127784 --
127785 1 = 2
127786 --
127787 THEN
127788 xla_accounting_err_pkg.build_message
127789 (p_appli_s_name => 'XLA'
127790 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
127791 ,p_token_1 => 'LINE_NUMBER'
127792 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
127793 ,p_token_2 => 'LINE_TYPE_NAME'
127794 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
127795 l_component_type
127796 ,l_component_code
127797 ,l_component_type_code
127798 ,l_component_appl_id
127799 ,l_amb_context_code
127800 ,l_entity_code
127801 ,l_event_class_code
127802 )
127803 ,p_token_3 => 'OWNER'
127804 ,p_value_3 => xla_lookups_pkg.get_meaning(
127805 p_lookup_type => 'XLA_OWNER_TYPE'
127806 ,p_lookup_code => l_component_type_code
127807 )
127808 ,p_token_4 => 'PRODUCT_NAME'
127809 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
127810 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
127811 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
127812 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
127813 ,p_ae_header_id => NULL
127814 );
127815
127816 IF (C_LEVEL_ERROR>= g_log_level) THEN
127817 trace
127818 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
127819 ,p_level => C_LEVEL_ERROR
127820 ,p_module => l_log_module);
127821 END IF;
127822 END IF;
127823 END IF;
127824 --
127825 --
127826 ------------------------------------------------------------------------------------------------
127827 -- 4219869 Business Flow
127828 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
127829 -- Prior Entry. Currently, the following code is always generated.
127830 ------------------------------------------------------------------------------------------------
127831 XLA_AE_LINES_PKG.ValidateCurrentLine;
127832
127833 ------------------------------------------------------------------------------------
127834 -- 4219869 Business Flow
127835 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
127836 ------------------------------------------------------------------------------------
127837 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
127838
127839 ----------------------------------------------------------------------------------
127840 -- 4219869 Business Flow
127841 -- Update journal entry status -- Need to generate this within IF <condition>
127842 ----------------------------------------------------------------------------------
127843 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
127844 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
127845 ,p_balance_type_code => l_balance_type_code
127846 );
127847
127848 -------------------------------------------------------------------------------------------
127849 -- 4262811 - Generate the Accrual Reversal lines
127850 -------------------------------------------------------------------------------------------
127851 BEGIN
127852 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
127853 (g_array_event(p_event_id).array_value_num('header_index'));
127854 IF l_acc_rev_flag IS NULL THEN
127855 l_acc_rev_flag := 'N';
127856 END IF;
127857 EXCEPTION
127858 WHEN OTHERS THEN
127859 l_acc_rev_flag := 'N';
127860 END;
127861 --
127862 IF (l_acc_rev_flag = 'Y') THEN
127863
127864 -- 4645092 ------------------------------------------------------------------------------
127865 -- To allow MPA report to determine if it should generate report process
127866 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
127867 ------------------------------------------------------------------------------------------
127868
127869 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
127870 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
127871 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
127872 -- call ADRs
127873 -- Bug 4922099
127874 --
127875 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
127876 (NVL(l_actual_upg_option, 'N') = 'O') OR
127877 (NVL(l_enc_upg_option, 'N') = 'O')
127878 )
127879 THEN
127880 NULL;
127881 --
127882 --
127883
127884 l_ccid := AcctDerRule_4(
127885 p_application_id => p_application_id
127886 , p_ae_header_id => l_ae_header_id
127887 , p_source_4 => p_source_4
127888 , x_transaction_coa_id => l_adr_transaction_coa_id
127889 , x_accounting_coa_id => l_adr_accounting_coa_id
127890 , x_value_type_code => l_adr_value_type_code
127891 , p_side => 'NA'
127892 );
127893
127894 xla_ae_lines_pkg.set_ccid(
127895 p_code_combination_id => l_ccid
127896 , p_value_type_code => l_adr_value_type_code
127897 , p_transaction_coa_id => l_adr_transaction_coa_id
127898 , p_accounting_coa_id => l_adr_accounting_coa_id
127899 , p_adr_code => 'CST_DEFAULT'
127900 , p_adr_type_code => 'S'
127901 , p_component_type => l_component_type
127902 , p_component_code => l_component_code
127903 , p_component_type_code => l_component_type_code
127904 , p_component_appl_id => l_component_appl_id
127905 , p_amb_context_code => l_amb_context_code
127906 , p_side => 'NA'
127907 );
127908
127909
127910 --
127911 --
127912 END IF;
127913
127914 --
127915 -- Update the line information that should be overwritten
127916 --
127917 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
127918 p_header_num => 1);
127919 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
127920
127921 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
127922
127923 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
127924 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
127925 END IF;
127926
127927 --
127928 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
127929 --
127930 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
127931 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
127932 ELSE
127933 ---------------------------------------------------------------------------------------------------
127934 -- 4262811a Switch Sign
127935 ---------------------------------------------------------------------------------------------------
127936 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
127937 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
127938 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
127939 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
127940 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
127941 -- 5132302
127942 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
127943 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
127944
127945 END IF;
127946
127947 -- 4955764
127948 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
127949 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
127950
127951
127952 XLA_AE_LINES_PKG.ValidateCurrentLine;
127953 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
127954
127955 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
127956 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
127957 ,p_balance_type_code => l_balance_type_code);
127958
127959 END IF;
127960
127961 -----------------------------------------------------------------------------------------
127962 -- 4262811 Multiperiod Accounting
127963 -----------------------------------------------------------------------------------------
127964 -- No MPA option is assigned.
127965
127966
127967 END IF;
127968 END IF;
127969 --
127970
127971 --
127972 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
127973 trace
127974 (p_msg => 'END of AcctLineType_231'
127975 ,p_level => C_LEVEL_PROCEDURE
127976 ,p_module => l_log_module);
127977 END IF;
127978 --
127979 EXCEPTION
127980 WHEN xla_exceptions_pkg.application_exception THEN
127981 RAISE;
127982 WHEN OTHERS THEN
127983 xla_exceptions_pkg.raise_message
127984 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_231');
127985 END AcctLineType_231;
127986 --
127987
127988 ---------------------------------------
127989 --
127990 -- PRIVATE FUNCTION
127991 -- AcctLineType_232
127992 --
127993 ---------------------------------------
127994 PROCEDURE AcctLineType_232 (
127995 p_application_id IN NUMBER
127996 ,p_event_id IN NUMBER
127997 ,p_calculate_acctd_flag IN VARCHAR2
127998 ,p_calculate_g_l_flag IN VARCHAR2
127999 ,p_actual_flag IN OUT VARCHAR2
128000 ,p_balance_type_code OUT VARCHAR2
128001 ,p_gain_or_loss_ref OUT VARCHAR2
128002
128003 --Cost Management Default Account
128004 , p_source_4 IN NUMBER
128005 --Receiving Accounting Line Type
128006 , p_source_5 IN VARCHAR2
128007 --DISTRIBUTION_IDENTIFIER
128008 , p_source_11 IN NUMBER
128009 --Distribution Type
128010 , p_source_12 IN VARCHAR2
128011 , p_source_12_meaning IN VARCHAR2
128012 --Entered Currency Code
128013 , p_source_15 IN VARCHAR2
128014 --Entered Amount
128015 , p_source_18 IN NUMBER
128016 --Currency Conversion Date
128017 , p_source_19 IN DATE
128018 --Currency Conversion Rate
128019 , p_source_20 IN NUMBER
128020 --Accounted Amount
128021 , p_source_22 IN NUMBER
128022 )
128023 IS
128024
128025 l_component_type VARCHAR2(80);
128026 l_component_code VARCHAR2(30);
128027 l_component_type_code VARCHAR2(1);
128028 l_component_appl_id INTEGER;
128029 l_amb_context_code VARCHAR2(30);
128030 l_entity_code VARCHAR2(30);
128031 l_event_class_code VARCHAR2(30);
128032 l_ae_header_id NUMBER;
128033 l_event_type_code VARCHAR2(30);
128034 l_line_definition_code VARCHAR2(30);
128035 l_line_definition_owner_code VARCHAR2(1);
128036 --
128037 -- adr variables
128038 l_segment VARCHAR2(30);
128039 l_ccid NUMBER;
128040 l_adr_transaction_coa_id NUMBER;
128041 l_adr_accounting_coa_id NUMBER;
128042 l_adr_flexfield_segment_code VARCHAR2(30);
128043 l_adr_flex_value_set_id NUMBER;
128044 l_adr_value_type_code VARCHAR2(30);
128045 l_adr_value_combination_id NUMBER;
128046 l_adr_value_segment_code VARCHAR2(30);
128047
128048 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
128049 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
128050 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
128051 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
128052
128053 -- 4262811 Variables ------------------------------------------------------------------------------------------
128054 l_entered_amt_idx NUMBER;
128055 l_accted_amt_idx NUMBER;
128056 l_acc_rev_flag VARCHAR2(1);
128057 l_accrual_line_num NUMBER;
128058 l_tmp_amt NUMBER;
128059 l_acc_rev_natural_side_code VARCHAR2(1);
128060
128061 l_num_entries NUMBER;
128062 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
128063 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
128064 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
128065 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
128066 l_recog_line_1 NUMBER;
128067 l_recog_line_2 NUMBER;
128068
128069 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
128070 l_bflow_applied_to_amt NUMBER; -- 5132302
128071 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
128072
128073 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
128074
128075 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
128076 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
128077
128078 ---------------------------------------------------------------------------------------------------------------
128079
128080
128081 --
128082 -- bulk performance
128083 --
128084 l_balance_type_code VARCHAR2(1);
128085 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
128086 l_log_module VARCHAR2(240);
128087
128088 --
128089 -- Upgrade strategy
128090 --
128091 l_actual_upg_option VARCHAR2(1);
128092 l_enc_upg_option VARCHAR2(1);
128093
128094 --
128095 BEGIN
128096 --
128097 IF g_log_enabled THEN
128098 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_232';
128099 END IF;
128100 --
128101 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
128102
128103 trace
128104 (p_msg => 'BEGIN of AcctLineType_232'
128105 ,p_level => C_LEVEL_PROCEDURE
128106 ,p_module => l_log_module);
128107
128108 END IF;
128109 --
128110 l_component_type := 'AMB_JLT';
128111 l_component_code := 'RECEIVING_INSPECTION';
128112 l_component_type_code := 'S';
128113 l_component_appl_id := 707;
128114 l_amb_context_code := 'DEFAULT';
128115 l_entity_code := 'RCV_ACCOUNTING_EVENTS';
128116 l_event_class_code := 'RETR_PRICE_ADJ_DEL';
128117 l_event_type_code := 'RETR_PRICE_ADJ_DEL_ALL';
128118 l_line_definition_owner_code := 'S';
128119 l_line_definition_code := 'RETR_PRICE_ADJ_DEL';
128120 --
128121 l_balance_type_code := 'A';
128122 l_segment := NULL;
128123 l_ccid := NULL;
128124 l_adr_transaction_coa_id := NULL;
128125 l_adr_accounting_coa_id := NULL;
128126 l_adr_flexfield_segment_code := NULL;
128127 l_adr_flex_value_set_id := NULL;
128128 l_adr_value_type_code := NULL;
128129 l_adr_value_combination_id := NULL;
128130 l_adr_value_segment_code := NULL;
128131
128132 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
128133 l_bflow_class_code := ''; -- 4219869 Business Flow
128134 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
128135 l_budgetary_control_flag := 'N';
128136
128137 l_bflow_applied_to_amt_idx := NULL; -- 5132302
128138 l_bflow_applied_to_amt := NULL; -- 5132302
128139 l_entered_amt_idx := NULL; -- 4262811
128140 l_accted_amt_idx := NULL; -- 4262811
128141 l_acc_rev_flag := NULL; -- 4262811
128142 l_accrual_line_num := NULL; -- 4262811
128143 l_tmp_amt := NULL; -- 4262811
128144 --
128145
128146 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
128147 l_balance_type_code <> 'B' THEN
128148 IF NVL(p_source_5,'
128149 ') = 'Receiving Inspection'
128150 THEN
128151
128152 --
128153 XLA_AE_LINES_PKG.SetNewLine;
128154
128155 p_balance_type_code := l_balance_type_code;
128156 -- set the flag so later we will know whether the gain loss line needs to be created
128157
128158 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
128159 p_actual_flag :='A';
128160 END IF;
128161
128162 --
128163 -- bulk performance
128164 --
128165 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
128166 p_header_num => 0); -- 4262811
128167 --
128168 -- set accounting line options
128169 --
128170 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
128171 p_natural_side_code => 'D'
128172 , p_gain_or_loss_flag => 'N'
128173 , p_gl_transfer_mode_code => 'S'
128174 , p_acct_entry_type_code => 'A'
128175 , p_switch_side_flag => 'Y'
128176 , p_merge_duplicate_code => 'N'
128177 );
128178 --
128179 l_acc_rev_natural_side_code := 'C'; -- 4262811
128180 --
128181 --
128182 -- set accounting line type info
128183 --
128184 xla_ae_lines_pkg.SetAcctLineType
128185 (p_component_type => l_component_type
128186 ,p_event_type_code => l_event_type_code
128187 ,p_line_definition_owner_code => l_line_definition_owner_code
128188 ,p_line_definition_code => l_line_definition_code
128189 ,p_accounting_line_code => l_component_code
128190 ,p_accounting_line_type_code => l_component_type_code
128191 ,p_accounting_line_appl_id => l_component_appl_id
128192 ,p_amb_context_code => l_amb_context_code
128193 ,p_entity_code => l_entity_code
128194 ,p_event_class_code => l_event_class_code);
128195 --
128196 -- set accounting class
128197 --
128198 xla_ae_lines_pkg.SetAcctClass(
128199 p_accounting_class_code => 'RECEIVING_INSPECTION'
128200 , p_ae_header_id => l_ae_header_id
128201 );
128202
128203 --
128204 -- set rounding class
128205 --
128206 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
128207 'RECEIVING_INSPECTION';
128208
128209 --
128210 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
128211 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
128212 --
128213 -- bulk performance
128214 --
128215 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
128216
128217 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
128218 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
128219
128220 -- 4955764
128221 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
128222 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
128223
128224 -- 4458381 Public Sector Enh
128225
128226 --
128227 -- set accounting attributes for the line type
128228 --
128229 l_entered_amt_idx := 3;
128230 l_accted_amt_idx := 8;
128231 l_bflow_applied_to_amt_idx := NULL; -- 5132302
128232 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
128233 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
128234 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
128235 l_rec_acct_attrs.array_char_value(2) := p_source_12;
128236 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
128237 l_rec_acct_attrs.array_num_value(3) := p_source_18;
128238 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
128239 l_rec_acct_attrs.array_char_value(4) := p_source_15;
128240 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
128241 l_rec_acct_attrs.array_date_value(5) := p_source_19;
128242 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
128243 l_rec_acct_attrs.array_num_value(6) := p_source_20;
128244 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
128245 l_rec_acct_attrs.array_num_value(7) := to_char(p_source_20);
128246 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
128247 l_rec_acct_attrs.array_num_value(8) := p_source_22;
128248
128249 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
128250 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
128251
128252 ---------------------------------------------------------------------------------------------------------------
128253 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
128254 ---------------------------------------------------------------------------------------------------------------
128255 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
128256
128257 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
128258 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
128259
128260 IF xla_accounting_cache_pkg.GetValueChar
128261 (p_source_code => 'LEDGER_CATEGORY_CODE'
128262 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
128263 AND l_bflow_method_code = 'PRIOR_ENTRY'
128264 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
128265 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
128266 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
128267 )
128268 THEN
128269 xla_ae_lines_pkg.BflowUpgEntry
128270 (p_business_method_code => l_bflow_method_code
128271 ,p_business_class_code => l_bflow_class_code
128272 ,p_balance_type => l_balance_type_code);
128273 ELSE
128274 NULL;
128275 -- No business flow processing for business flow method of NONE.
128276 END IF;
128277
128278 --
128279 -- call analytical criteria
128280 --
128281
128282 --
128283 -- call description
128284 --
128285 -- No description or it is inherited.
128286 --
128287 -- call ADRs
128288 -- Bug 4922099
128289 --
128290 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
128291 (NVL(l_actual_upg_option, 'N') = 'O') OR
128292 (NVL(l_enc_upg_option, 'N') = 'O')
128293 )
128294 THEN
128295 NULL;
128296 --
128297 --
128298
128299 l_ccid := AcctDerRule_4(
128300 p_application_id => p_application_id
128301 , p_ae_header_id => l_ae_header_id
128302 , p_source_4 => p_source_4
128303 , x_transaction_coa_id => l_adr_transaction_coa_id
128304 , x_accounting_coa_id => l_adr_accounting_coa_id
128305 , x_value_type_code => l_adr_value_type_code
128306 , p_side => 'NA'
128307 );
128308
128309 xla_ae_lines_pkg.set_ccid(
128310 p_code_combination_id => l_ccid
128311 , p_value_type_code => l_adr_value_type_code
128312 , p_transaction_coa_id => l_adr_transaction_coa_id
128313 , p_accounting_coa_id => l_adr_accounting_coa_id
128314 , p_adr_code => 'CST_DEFAULT'
128315 , p_adr_type_code => 'S'
128316 , p_component_type => l_component_type
128317 , p_component_code => l_component_code
128318 , p_component_type_code => l_component_type_code
128319 , p_component_appl_id => l_component_appl_id
128320 , p_amb_context_code => l_amb_context_code
128321 , p_side => 'NA'
128322 );
128323
128324
128325 --
128326 --
128327 END IF;
128328 --
128329 -- Bug 4922099
128330 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
128331 (NVL(l_enc_upg_option, 'N') = 'O')
128332 ) AND
128333 (l_bflow_method_code = 'PRIOR_ENTRY')
128334 )
128335 THEN
128336 IF
128337 --
128338 1 = 2
128339 --
128340 THEN
128341 xla_accounting_err_pkg.build_message
128342 (p_appli_s_name => 'XLA'
128343 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
128344 ,p_token_1 => 'LINE_NUMBER'
128345 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
128346 ,p_token_2 => 'LINE_TYPE_NAME'
128347 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
128348 l_component_type
128349 ,l_component_code
128350 ,l_component_type_code
128351 ,l_component_appl_id
128352 ,l_amb_context_code
128353 ,l_entity_code
128354 ,l_event_class_code
128355 )
128356 ,p_token_3 => 'OWNER'
128357 ,p_value_3 => xla_lookups_pkg.get_meaning(
128358 p_lookup_type => 'XLA_OWNER_TYPE'
128359 ,p_lookup_code => l_component_type_code
128360 )
128361 ,p_token_4 => 'PRODUCT_NAME'
128362 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
128363 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
128364 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
128365 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
128366 ,p_ae_header_id => NULL
128367 );
128368
128369 IF (C_LEVEL_ERROR>= g_log_level) THEN
128370 trace
128371 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
128372 ,p_level => C_LEVEL_ERROR
128373 ,p_module => l_log_module);
128374 END IF;
128375 END IF;
128376 END IF;
128377 --
128378 --
128379 ------------------------------------------------------------------------------------------------
128380 -- 4219869 Business Flow
128381 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
128382 -- Prior Entry. Currently, the following code is always generated.
128383 ------------------------------------------------------------------------------------------------
128384 XLA_AE_LINES_PKG.ValidateCurrentLine;
128385
128386 ------------------------------------------------------------------------------------
128387 -- 4219869 Business Flow
128388 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
128389 ------------------------------------------------------------------------------------
128390 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
128391
128392 ----------------------------------------------------------------------------------
128393 -- 4219869 Business Flow
128394 -- Update journal entry status -- Need to generate this within IF <condition>
128395 ----------------------------------------------------------------------------------
128396 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
128397 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
128398 ,p_balance_type_code => l_balance_type_code
128399 );
128400
128401 -------------------------------------------------------------------------------------------
128402 -- 4262811 - Generate the Accrual Reversal lines
128403 -------------------------------------------------------------------------------------------
128404 BEGIN
128405 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
128406 (g_array_event(p_event_id).array_value_num('header_index'));
128407 IF l_acc_rev_flag IS NULL THEN
128408 l_acc_rev_flag := 'N';
128409 END IF;
128410 EXCEPTION
128411 WHEN OTHERS THEN
128412 l_acc_rev_flag := 'N';
128413 END;
128414 --
128415 IF (l_acc_rev_flag = 'Y') THEN
128416
128417 -- 4645092 ------------------------------------------------------------------------------
128418 -- To allow MPA report to determine if it should generate report process
128419 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
128420 ------------------------------------------------------------------------------------------
128421
128422 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
128423 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
128424 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
128425 -- call ADRs
128426 -- Bug 4922099
128427 --
128428 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
128429 (NVL(l_actual_upg_option, 'N') = 'O') OR
128430 (NVL(l_enc_upg_option, 'N') = 'O')
128431 )
128432 THEN
128433 NULL;
128434 --
128435 --
128436
128437 l_ccid := AcctDerRule_4(
128438 p_application_id => p_application_id
128439 , p_ae_header_id => l_ae_header_id
128440 , p_source_4 => p_source_4
128441 , x_transaction_coa_id => l_adr_transaction_coa_id
128442 , x_accounting_coa_id => l_adr_accounting_coa_id
128443 , x_value_type_code => l_adr_value_type_code
128444 , p_side => 'NA'
128445 );
128446
128447 xla_ae_lines_pkg.set_ccid(
128448 p_code_combination_id => l_ccid
128449 , p_value_type_code => l_adr_value_type_code
128450 , p_transaction_coa_id => l_adr_transaction_coa_id
128451 , p_accounting_coa_id => l_adr_accounting_coa_id
128452 , p_adr_code => 'CST_DEFAULT'
128453 , p_adr_type_code => 'S'
128454 , p_component_type => l_component_type
128455 , p_component_code => l_component_code
128456 , p_component_type_code => l_component_type_code
128457 , p_component_appl_id => l_component_appl_id
128458 , p_amb_context_code => l_amb_context_code
128459 , p_side => 'NA'
128460 );
128461
128462
128463 --
128464 --
128465 END IF;
128466
128467 --
128468 -- Update the line information that should be overwritten
128469 --
128470 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
128471 p_header_num => 1);
128472 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
128473
128474 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
128475
128476 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
128477 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
128478 END IF;
128479
128480 --
128481 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
128482 --
128483 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
128484 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
128485 ELSE
128486 ---------------------------------------------------------------------------------------------------
128487 -- 4262811a Switch Sign
128488 ---------------------------------------------------------------------------------------------------
128489 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
128490 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
128491 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
128492 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
128493 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
128494 -- 5132302
128495 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
128496 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
128497
128498 END IF;
128499
128500 -- 4955764
128501 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
128502 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
128503
128504
128505 XLA_AE_LINES_PKG.ValidateCurrentLine;
128506 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
128507
128508 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
128509 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
128510 ,p_balance_type_code => l_balance_type_code);
128511
128512 END IF;
128513
128514 -----------------------------------------------------------------------------------------
128515 -- 4262811 Multiperiod Accounting
128516 -----------------------------------------------------------------------------------------
128517 -- No MPA option is assigned.
128518
128519
128520 END IF;
128521 END IF;
128522 --
128523
128524 --
128525 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
128526 trace
128527 (p_msg => 'END of AcctLineType_232'
128528 ,p_level => C_LEVEL_PROCEDURE
128529 ,p_module => l_log_module);
128530 END IF;
128531 --
128532 EXCEPTION
128533 WHEN xla_exceptions_pkg.application_exception THEN
128534 RAISE;
128535 WHEN OTHERS THEN
128536 xla_exceptions_pkg.raise_message
128537 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_232');
128538 END AcctLineType_232;
128539 --
128540
128541 ---------------------------------------
128542 --
128543 -- PRIVATE FUNCTION
128544 -- AcctLineType_233
128545 --
128546 ---------------------------------------
128547 PROCEDURE AcctLineType_233 (
128548 p_application_id IN NUMBER
128549 ,p_event_id IN NUMBER
128550 ,p_calculate_acctd_flag IN VARCHAR2
128551 ,p_calculate_g_l_flag IN VARCHAR2
128552 ,p_actual_flag IN OUT VARCHAR2
128553 ,p_balance_type_code OUT VARCHAR2
128554 ,p_gain_or_loss_ref OUT VARCHAR2
128555
128556 --Cost Management Default Account
128557 , p_source_4 IN NUMBER
128558 --Receiving Accounting Line Type
128559 , p_source_5 IN VARCHAR2
128560 --Applied to Application ID
128561 , p_source_6 IN NUMBER
128562 --Applied to Distribution Link Type
128563 , p_source_7 IN VARCHAR2
128564 --Applied to Entity Code
128565 , p_source_8 IN VARCHAR2
128566 --PO_DISTRIBUTION_ID
128567 , p_source_9 IN NUMBER
128568 --Applied To Purchase Document Identifier
128569 , p_source_10 IN NUMBER
128570 --DISTRIBUTION_IDENTIFIER
128571 , p_source_11 IN NUMBER
128572 --Distribution Type
128573 , p_source_12 IN VARCHAR2
128574 , p_source_12_meaning IN VARCHAR2
128575 --PO Budget Account
128576 , p_source_13 IN NUMBER
128577 --Encumbrance Reversal Amount Entered
128578 , p_source_14 IN NUMBER
128579 --Entered Currency Code
128580 , p_source_15 IN VARCHAR2
128581 --Transaction Encumbrance Reversal Amount
128582 , p_source_16 IN NUMBER
128583 --Entered Amount
128584 , p_source_18 IN NUMBER
128585 --Currency Conversion Date
128586 , p_source_19 IN DATE
128587 --Currency Conversion Rate
128588 , p_source_20 IN NUMBER
128589 --Currency Conversion Type
128590 , p_source_21 IN VARCHAR2
128591 --Accounted Amount
128592 , p_source_22 IN NUMBER
128593 --Purchasing Encumbrance Type Identifier
128594 , p_source_23 IN NUMBER
128595 --Costing Encumbrance Upgrade Option
128596 , p_source_27 IN VARCHAR2
128597 )
128598 IS
128599
128600 l_component_type VARCHAR2(80);
128601 l_component_code VARCHAR2(30);
128602 l_component_type_code VARCHAR2(1);
128603 l_component_appl_id INTEGER;
128604 l_amb_context_code VARCHAR2(30);
128605 l_entity_code VARCHAR2(30);
128606 l_event_class_code VARCHAR2(30);
128607 l_ae_header_id NUMBER;
128608 l_event_type_code VARCHAR2(30);
128609 l_line_definition_code VARCHAR2(30);
128610 l_line_definition_owner_code VARCHAR2(1);
128611 --
128612 -- adr variables
128613 l_segment VARCHAR2(30);
128614 l_ccid NUMBER;
128615 l_adr_transaction_coa_id NUMBER;
128616 l_adr_accounting_coa_id NUMBER;
128617 l_adr_flexfield_segment_code VARCHAR2(30);
128618 l_adr_flex_value_set_id NUMBER;
128619 l_adr_value_type_code VARCHAR2(30);
128620 l_adr_value_combination_id NUMBER;
128621 l_adr_value_segment_code VARCHAR2(30);
128622
128623 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
128624 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
128625 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
128626 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
128627
128628 -- 4262811 Variables ------------------------------------------------------------------------------------------
128629 l_entered_amt_idx NUMBER;
128630 l_accted_amt_idx NUMBER;
128631 l_acc_rev_flag VARCHAR2(1);
128632 l_accrual_line_num NUMBER;
128633 l_tmp_amt NUMBER;
128634 l_acc_rev_natural_side_code VARCHAR2(1);
128635
128636 l_num_entries NUMBER;
128637 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
128638 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
128639 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
128640 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
128641 l_recog_line_1 NUMBER;
128642 l_recog_line_2 NUMBER;
128643
128644 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
128645 l_bflow_applied_to_amt NUMBER; -- 5132302
128646 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
128647
128648 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
128649
128650 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
128651 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
128652
128653 ---------------------------------------------------------------------------------------------------------------
128654
128655
128656 --
128657 -- bulk performance
128658 --
128659 l_balance_type_code VARCHAR2(1);
128660 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
128661 l_log_module VARCHAR2(240);
128662
128663 --
128664 -- Upgrade strategy
128665 --
128666 l_actual_upg_option VARCHAR2(1);
128667 l_enc_upg_option VARCHAR2(1);
128668
128669 --
128670 BEGIN
128671 --
128672 IF g_log_enabled THEN
128673 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_233';
128674 END IF;
128675 --
128676 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
128677
128678 trace
128679 (p_msg => 'BEGIN of AcctLineType_233'
128680 ,p_level => C_LEVEL_PROCEDURE
128681 ,p_module => l_log_module);
128682
128683 END IF;
128684 --
128685 l_component_type := 'AMB_JLT';
128686 l_component_code := 'RECEIVING_INSPECTION';
128687 l_component_type_code := 'S';
128688 l_component_appl_id := 707;
128689 l_amb_context_code := 'DEFAULT';
128690 l_entity_code := 'RCV_ACCOUNTING_EVENTS';
128691 l_event_class_code := 'DELIVER_EXPENSE';
128692 l_event_type_code := 'DELIVER_EXPENSE_ALL';
128693 l_line_definition_owner_code := 'S';
128694 l_line_definition_code := 'DELIVER_EXPENSE';
128695 --
128696 l_balance_type_code := 'A';
128697 l_segment := NULL;
128698 l_ccid := NULL;
128699 l_adr_transaction_coa_id := NULL;
128700 l_adr_accounting_coa_id := NULL;
128701 l_adr_flexfield_segment_code := NULL;
128702 l_adr_flex_value_set_id := NULL;
128703 l_adr_value_type_code := NULL;
128704 l_adr_value_combination_id := NULL;
128705 l_adr_value_segment_code := NULL;
128706
128707 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
128708 l_bflow_class_code := ''; -- 4219869 Business Flow
128709 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
128710 l_budgetary_control_flag := 'N';
128711
128712 l_bflow_applied_to_amt_idx := NULL; -- 5132302
128713 l_bflow_applied_to_amt := NULL; -- 5132302
128714 l_entered_amt_idx := NULL; -- 4262811
128715 l_accted_amt_idx := NULL; -- 4262811
128716 l_acc_rev_flag := NULL; -- 4262811
128717 l_accrual_line_num := NULL; -- 4262811
128718 l_tmp_amt := NULL; -- 4262811
128719 --
128720
128721 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
128722 l_balance_type_code <> 'B' THEN
128723 IF NVL(p_source_5,'
128724 ') = 'Receiving Inspection'
128725 THEN
128726
128727 --
128728 XLA_AE_LINES_PKG.SetNewLine;
128729
128730 p_balance_type_code := l_balance_type_code;
128731 -- set the flag so later we will know whether the gain loss line needs to be created
128732
128733 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
128734 p_actual_flag :='A';
128735 END IF;
128736
128737 --
128738 -- bulk performance
128739 --
128740 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
128741 p_header_num => 0); -- 4262811
128742 --
128743 -- set accounting line options
128744 --
128745 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
128746 p_natural_side_code => 'D'
128747 , p_gain_or_loss_flag => 'N'
128748 , p_gl_transfer_mode_code => 'S'
128749 , p_acct_entry_type_code => 'A'
128750 , p_switch_side_flag => 'Y'
128751 , p_merge_duplicate_code => 'N'
128752 );
128753 --
128754 l_acc_rev_natural_side_code := 'C'; -- 4262811
128755 --
128756 --
128757 -- set accounting line type info
128758 --
128759 xla_ae_lines_pkg.SetAcctLineType
128760 (p_component_type => l_component_type
128761 ,p_event_type_code => l_event_type_code
128762 ,p_line_definition_owner_code => l_line_definition_owner_code
128763 ,p_line_definition_code => l_line_definition_code
128764 ,p_accounting_line_code => l_component_code
128765 ,p_accounting_line_type_code => l_component_type_code
128766 ,p_accounting_line_appl_id => l_component_appl_id
128767 ,p_amb_context_code => l_amb_context_code
128768 ,p_entity_code => l_entity_code
128769 ,p_event_class_code => l_event_class_code);
128770 --
128771 -- set accounting class
128772 --
128773 xla_ae_lines_pkg.SetAcctClass(
128774 p_accounting_class_code => 'RECEIVING_INSPECTION'
128775 , p_ae_header_id => l_ae_header_id
128776 );
128777
128778 --
128779 -- set rounding class
128780 --
128781 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
128782 'RECEIVING_INSPECTION';
128783
128784 --
128785 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
128786 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
128787 --
128788 -- bulk performance
128789 --
128790 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
128791
128792 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
128793 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
128794
128795 -- 4955764
128796 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
128797 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
128798
128799 -- 4458381 Public Sector Enh
128800
128801 --
128802 -- set accounting attributes for the line type
128803 --
128804 l_entered_amt_idx := 17;
128805 l_accted_amt_idx := 22;
128806 l_bflow_applied_to_amt_idx := NULL; -- 5132302
128807 l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
128808 l_rec_acct_attrs.array_num_value(1) := p_source_6;
128809 l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
128810 l_rec_acct_attrs.array_char_value(2) := p_source_7;
128811 l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
128812 l_rec_acct_attrs.array_char_value(3) := p_source_8;
128813 l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
128814 l_rec_acct_attrs.array_num_value(4) := to_char(p_source_9);
128815 l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
128816 l_rec_acct_attrs.array_num_value(5) := to_char(p_source_10);
128817 l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
128818 l_rec_acct_attrs.array_num_value(6) := to_char(p_source_11);
128819 l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
128820 l_rec_acct_attrs.array_char_value(7) := p_source_12;
128821 l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
128822 l_rec_acct_attrs.array_num_value(8) := TO_NUMBER(p_source_13);
128823 l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
128824 l_rec_acct_attrs.array_num_value(9) := p_source_14;
128825 l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
128826 l_rec_acct_attrs.array_char_value(10) := p_source_15;
128827 l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
128828 l_rec_acct_attrs.array_num_value(11) := p_source_16;
128829 l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
128830 l_rec_acct_attrs.array_num_value(12) := TO_NUMBER(p_source_13);
128831 l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
128832 l_rec_acct_attrs.array_num_value(13) := p_source_14;
128833 l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
128834 l_rec_acct_attrs.array_char_value(14) := p_source_15;
128835 l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
128836 l_rec_acct_attrs.array_num_value(15) := p_source_16;
128837 l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
128838 l_rec_acct_attrs.array_char_value(16) := p_source_27;
128839 l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
128840 l_rec_acct_attrs.array_num_value(17) := p_source_18;
128841 l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
128842 l_rec_acct_attrs.array_char_value(18) := p_source_15;
128843 l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
128844 l_rec_acct_attrs.array_date_value(19) := p_source_19;
128845 l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
128846 l_rec_acct_attrs.array_num_value(20) := p_source_20;
128847 l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
128848 l_rec_acct_attrs.array_char_value(21) := p_source_21;
128849 l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
128850 l_rec_acct_attrs.array_num_value(22) := p_source_22;
128851 l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
128852 l_rec_acct_attrs.array_num_value(23) := p_source_23;
128853 l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
128854 l_rec_acct_attrs.array_num_value(24) := p_source_23;
128855
128856 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
128857 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
128858
128859 ---------------------------------------------------------------------------------------------------------------
128860 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
128861 ---------------------------------------------------------------------------------------------------------------
128862 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
128863
128864 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
128865 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
128866
128867 IF xla_accounting_cache_pkg.GetValueChar
128868 (p_source_code => 'LEDGER_CATEGORY_CODE'
128869 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
128870 AND l_bflow_method_code = 'PRIOR_ENTRY'
128871 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
128872 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
128873 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
128874 )
128875 THEN
128876 xla_ae_lines_pkg.BflowUpgEntry
128877 (p_business_method_code => l_bflow_method_code
128878 ,p_business_class_code => l_bflow_class_code
128879 ,p_balance_type => l_balance_type_code);
128880 ELSE
128881 NULL;
128882 -- No business flow processing for business flow method of NONE.
128883 END IF;
128884
128885 --
128886 -- call analytical criteria
128887 --
128888
128889 --
128890 -- call description
128891 --
128892 -- No description or it is inherited.
128893 --
128894 -- call ADRs
128895 -- Bug 4922099
128896 --
128897 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
128898 (NVL(l_actual_upg_option, 'N') = 'O') OR
128899 (NVL(l_enc_upg_option, 'N') = 'O')
128900 )
128901 THEN
128902 NULL;
128903 --
128904 --
128905
128906 l_ccid := AcctDerRule_4(
128907 p_application_id => p_application_id
128908 , p_ae_header_id => l_ae_header_id
128909 , p_source_4 => p_source_4
128910 , x_transaction_coa_id => l_adr_transaction_coa_id
128911 , x_accounting_coa_id => l_adr_accounting_coa_id
128912 , x_value_type_code => l_adr_value_type_code
128913 , p_side => 'NA'
128914 );
128915
128916 xla_ae_lines_pkg.set_ccid(
128917 p_code_combination_id => l_ccid
128918 , p_value_type_code => l_adr_value_type_code
128919 , p_transaction_coa_id => l_adr_transaction_coa_id
128920 , p_accounting_coa_id => l_adr_accounting_coa_id
128921 , p_adr_code => 'CST_DEFAULT'
128922 , p_adr_type_code => 'S'
128923 , p_component_type => l_component_type
128924 , p_component_code => l_component_code
128925 , p_component_type_code => l_component_type_code
128926 , p_component_appl_id => l_component_appl_id
128927 , p_amb_context_code => l_amb_context_code
128928 , p_side => 'NA'
128929 );
128930
128931
128932 --
128933 --
128934 END IF;
128935 --
128936 -- Bug 4922099
128937 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
128938 (NVL(l_enc_upg_option, 'N') = 'O')
128939 ) AND
128940 (l_bflow_method_code = 'PRIOR_ENTRY')
128941 )
128942 THEN
128943 IF
128944 --
128945 1 = 2
128946 --
128947 THEN
128948 xla_accounting_err_pkg.build_message
128949 (p_appli_s_name => 'XLA'
128950 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
128951 ,p_token_1 => 'LINE_NUMBER'
128952 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
128953 ,p_token_2 => 'LINE_TYPE_NAME'
128954 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
128955 l_component_type
128956 ,l_component_code
128957 ,l_component_type_code
128958 ,l_component_appl_id
128959 ,l_amb_context_code
128960 ,l_entity_code
128961 ,l_event_class_code
128962 )
128963 ,p_token_3 => 'OWNER'
128964 ,p_value_3 => xla_lookups_pkg.get_meaning(
128965 p_lookup_type => 'XLA_OWNER_TYPE'
128966 ,p_lookup_code => l_component_type_code
128967 )
128968 ,p_token_4 => 'PRODUCT_NAME'
128969 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
128970 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
128971 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
128972 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
128973 ,p_ae_header_id => NULL
128974 );
128975
128976 IF (C_LEVEL_ERROR>= g_log_level) THEN
128977 trace
128978 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
128979 ,p_level => C_LEVEL_ERROR
128980 ,p_module => l_log_module);
128981 END IF;
128982 END IF;
128983 END IF;
128984 --
128985 --
128986 ------------------------------------------------------------------------------------------------
128987 -- 4219869 Business Flow
128988 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
128989 -- Prior Entry. Currently, the following code is always generated.
128990 ------------------------------------------------------------------------------------------------
128991 XLA_AE_LINES_PKG.ValidateCurrentLine;
128992
128993 ------------------------------------------------------------------------------------
128994 -- 4219869 Business Flow
128995 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
128996 ------------------------------------------------------------------------------------
128997 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
128998
128999 ----------------------------------------------------------------------------------
129000 -- 4219869 Business Flow
129001 -- Update journal entry status -- Need to generate this within IF <condition>
129002 ----------------------------------------------------------------------------------
129003 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
129004 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
129005 ,p_balance_type_code => l_balance_type_code
129006 );
129007
129008 -------------------------------------------------------------------------------------------
129009 -- 4262811 - Generate the Accrual Reversal lines
129010 -------------------------------------------------------------------------------------------
129011 BEGIN
129012 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
129013 (g_array_event(p_event_id).array_value_num('header_index'));
129014 IF l_acc_rev_flag IS NULL THEN
129015 l_acc_rev_flag := 'N';
129016 END IF;
129017 EXCEPTION
129018 WHEN OTHERS THEN
129019 l_acc_rev_flag := 'N';
129020 END;
129021 --
129022 IF (l_acc_rev_flag = 'Y') THEN
129023
129024 -- 4645092 ------------------------------------------------------------------------------
129025 -- To allow MPA report to determine if it should generate report process
129026 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
129027 ------------------------------------------------------------------------------------------
129028
129029 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
129030 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
129031 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
129032 -- call ADRs
129033 -- Bug 4922099
129034 --
129035 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
129036 (NVL(l_actual_upg_option, 'N') = 'O') OR
129037 (NVL(l_enc_upg_option, 'N') = 'O')
129038 )
129039 THEN
129040 NULL;
129041 --
129042 --
129043
129044 l_ccid := AcctDerRule_4(
129045 p_application_id => p_application_id
129046 , p_ae_header_id => l_ae_header_id
129047 , p_source_4 => p_source_4
129048 , x_transaction_coa_id => l_adr_transaction_coa_id
129049 , x_accounting_coa_id => l_adr_accounting_coa_id
129050 , x_value_type_code => l_adr_value_type_code
129051 , p_side => 'NA'
129052 );
129053
129054 xla_ae_lines_pkg.set_ccid(
129055 p_code_combination_id => l_ccid
129056 , p_value_type_code => l_adr_value_type_code
129057 , p_transaction_coa_id => l_adr_transaction_coa_id
129058 , p_accounting_coa_id => l_adr_accounting_coa_id
129059 , p_adr_code => 'CST_DEFAULT'
129060 , p_adr_type_code => 'S'
129061 , p_component_type => l_component_type
129062 , p_component_code => l_component_code
129063 , p_component_type_code => l_component_type_code
129064 , p_component_appl_id => l_component_appl_id
129065 , p_amb_context_code => l_amb_context_code
129066 , p_side => 'NA'
129067 );
129068
129069
129070 --
129071 --
129072 END IF;
129073
129074 --
129075 -- Update the line information that should be overwritten
129076 --
129077 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
129078 p_header_num => 1);
129079 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
129080
129081 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
129082
129083 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
129084 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
129085 END IF;
129086
129087 --
129088 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
129089 --
129090 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
129091 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
129092 ELSE
129093 ---------------------------------------------------------------------------------------------------
129094 -- 4262811a Switch Sign
129095 ---------------------------------------------------------------------------------------------------
129096 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
129097 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
129098 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
129099 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
129100 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
129101 -- 5132302
129102 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
129103 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
129104
129105 END IF;
129106
129107 -- 4955764
129108 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
129109 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
129110
129111
129112 XLA_AE_LINES_PKG.ValidateCurrentLine;
129113 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
129114
129115 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
129116 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
129117 ,p_balance_type_code => l_balance_type_code);
129118
129119 END IF;
129120
129121 -----------------------------------------------------------------------------------------
129122 -- 4262811 Multiperiod Accounting
129123 -----------------------------------------------------------------------------------------
129124 -- No MPA option is assigned.
129125
129126
129127 END IF;
129128 END IF;
129129 --
129130
129131 --
129132 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
129133 trace
129134 (p_msg => 'END of AcctLineType_233'
129135 ,p_level => C_LEVEL_PROCEDURE
129136 ,p_module => l_log_module);
129137 END IF;
129138 --
129139 EXCEPTION
129140 WHEN xla_exceptions_pkg.application_exception THEN
129141 RAISE;
129142 WHEN OTHERS THEN
129143 xla_exceptions_pkg.raise_message
129144 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_233');
129145 END AcctLineType_233;
129146 --
129147
129148 ---------------------------------------
129149 --
129150 -- PRIVATE FUNCTION
129151 -- AcctLineType_234
129152 --
129153 ---------------------------------------
129154 PROCEDURE AcctLineType_234 (
129155 p_application_id IN NUMBER
129156 ,p_event_id IN NUMBER
129157 ,p_calculate_acctd_flag IN VARCHAR2
129158 ,p_calculate_g_l_flag IN VARCHAR2
129159 ,p_actual_flag IN OUT VARCHAR2
129160 ,p_balance_type_code OUT VARCHAR2
129161 ,p_gain_or_loss_ref OUT VARCHAR2
129162
129163 --Cost Management Default Account
129164 , p_source_4 IN NUMBER
129165 --Receiving Accounting Line Type
129166 , p_source_5 IN VARCHAR2
129167 --DISTRIBUTION_IDENTIFIER
129168 , p_source_11 IN NUMBER
129169 --Distribution Type
129170 , p_source_12 IN VARCHAR2
129171 , p_source_12_meaning IN VARCHAR2
129172 --Entered Currency Code
129173 , p_source_15 IN VARCHAR2
129174 --Entered Amount
129175 , p_source_18 IN NUMBER
129176 --Currency Conversion Date
129177 , p_source_19 IN DATE
129178 --Currency Conversion Rate
129179 , p_source_20 IN NUMBER
129180 --Currency Conversion Type
129181 , p_source_21 IN VARCHAR2
129182 --Accounted Amount
129183 , p_source_22 IN NUMBER
129184 )
129185 IS
129186
129187 l_component_type VARCHAR2(80);
129188 l_component_code VARCHAR2(30);
129189 l_component_type_code VARCHAR2(1);
129190 l_component_appl_id INTEGER;
129191 l_amb_context_code VARCHAR2(30);
129192 l_entity_code VARCHAR2(30);
129193 l_event_class_code VARCHAR2(30);
129194 l_ae_header_id NUMBER;
129195 l_event_type_code VARCHAR2(30);
129196 l_line_definition_code VARCHAR2(30);
129197 l_line_definition_owner_code VARCHAR2(1);
129198 --
129199 -- adr variables
129200 l_segment VARCHAR2(30);
129201 l_ccid NUMBER;
129202 l_adr_transaction_coa_id NUMBER;
129203 l_adr_accounting_coa_id NUMBER;
129204 l_adr_flexfield_segment_code VARCHAR2(30);
129205 l_adr_flex_value_set_id NUMBER;
129206 l_adr_value_type_code VARCHAR2(30);
129207 l_adr_value_combination_id NUMBER;
129208 l_adr_value_segment_code VARCHAR2(30);
129209
129210 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
129211 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
129212 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
129213 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
129214
129215 -- 4262811 Variables ------------------------------------------------------------------------------------------
129216 l_entered_amt_idx NUMBER;
129217 l_accted_amt_idx NUMBER;
129218 l_acc_rev_flag VARCHAR2(1);
129219 l_accrual_line_num NUMBER;
129220 l_tmp_amt NUMBER;
129221 l_acc_rev_natural_side_code VARCHAR2(1);
129222
129223 l_num_entries NUMBER;
129224 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
129225 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
129226 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
129227 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
129228 l_recog_line_1 NUMBER;
129229 l_recog_line_2 NUMBER;
129230
129231 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
129232 l_bflow_applied_to_amt NUMBER; -- 5132302
129233 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
129234
129235 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
129236
129237 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
129238 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
129239
129240 ---------------------------------------------------------------------------------------------------------------
129241
129242
129243 --
129244 -- bulk performance
129245 --
129246 l_balance_type_code VARCHAR2(1);
129247 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
129248 l_log_module VARCHAR2(240);
129249
129250 --
129251 -- Upgrade strategy
129252 --
129253 l_actual_upg_option VARCHAR2(1);
129254 l_enc_upg_option VARCHAR2(1);
129255
129256 --
129257 BEGIN
129258 --
129259 IF g_log_enabled THEN
129260 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_234';
129261 END IF;
129262 --
129263 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
129264
129265 trace
129266 (p_msg => 'BEGIN of AcctLineType_234'
129267 ,p_level => C_LEVEL_PROCEDURE
129268 ,p_module => l_log_module);
129269
129270 END IF;
129271 --
129272 l_component_type := 'AMB_JLT';
129273 l_component_code := 'RECEIVING_INSPECTION';
129274 l_component_type_code := 'S';
129275 l_component_appl_id := 707;
129276 l_amb_context_code := 'DEFAULT';
129277 l_entity_code := 'RCV_ACCOUNTING_EVENTS';
129278 l_event_class_code := 'RETR_PRICE_ADJ_RCV';
129279 l_event_type_code := 'RETR_PRICE_ADJ_RCV_ALL';
129280 l_line_definition_owner_code := 'S';
129281 l_line_definition_code := 'RETR_PRICE_ADJ_RCV';
129282 --
129283 l_balance_type_code := 'A';
129284 l_segment := NULL;
129285 l_ccid := NULL;
129286 l_adr_transaction_coa_id := NULL;
129287 l_adr_accounting_coa_id := NULL;
129288 l_adr_flexfield_segment_code := NULL;
129289 l_adr_flex_value_set_id := NULL;
129290 l_adr_value_type_code := NULL;
129291 l_adr_value_combination_id := NULL;
129292 l_adr_value_segment_code := NULL;
129293
129294 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
129295 l_bflow_class_code := ''; -- 4219869 Business Flow
129296 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
129297 l_budgetary_control_flag := 'N';
129298
129299 l_bflow_applied_to_amt_idx := NULL; -- 5132302
129300 l_bflow_applied_to_amt := NULL; -- 5132302
129301 l_entered_amt_idx := NULL; -- 4262811
129302 l_accted_amt_idx := NULL; -- 4262811
129303 l_acc_rev_flag := NULL; -- 4262811
129304 l_accrual_line_num := NULL; -- 4262811
129305 l_tmp_amt := NULL; -- 4262811
129306 --
129307
129308 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
129309 l_balance_type_code <> 'B' THEN
129310 IF NVL(p_source_5,'
129311 ') = 'Receiving Inspection'
129312 THEN
129313
129314 --
129315 XLA_AE_LINES_PKG.SetNewLine;
129316
129317 p_balance_type_code := l_balance_type_code;
129318 -- set the flag so later we will know whether the gain loss line needs to be created
129319
129320 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
129321 p_actual_flag :='A';
129322 END IF;
129323
129324 --
129325 -- bulk performance
129326 --
129327 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
129328 p_header_num => 0); -- 4262811
129329 --
129330 -- set accounting line options
129331 --
129332 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
129333 p_natural_side_code => 'D'
129334 , p_gain_or_loss_flag => 'N'
129335 , p_gl_transfer_mode_code => 'S'
129336 , p_acct_entry_type_code => 'A'
129337 , p_switch_side_flag => 'Y'
129338 , p_merge_duplicate_code => 'N'
129339 );
129340 --
129341 l_acc_rev_natural_side_code := 'C'; -- 4262811
129342 --
129343 --
129344 -- set accounting line type info
129345 --
129346 xla_ae_lines_pkg.SetAcctLineType
129347 (p_component_type => l_component_type
129348 ,p_event_type_code => l_event_type_code
129349 ,p_line_definition_owner_code => l_line_definition_owner_code
129350 ,p_line_definition_code => l_line_definition_code
129351 ,p_accounting_line_code => l_component_code
129352 ,p_accounting_line_type_code => l_component_type_code
129353 ,p_accounting_line_appl_id => l_component_appl_id
129354 ,p_amb_context_code => l_amb_context_code
129355 ,p_entity_code => l_entity_code
129356 ,p_event_class_code => l_event_class_code);
129357 --
129358 -- set accounting class
129359 --
129360 xla_ae_lines_pkg.SetAcctClass(
129361 p_accounting_class_code => 'RECEIVING_INSPECTION'
129362 , p_ae_header_id => l_ae_header_id
129363 );
129364
129365 --
129366 -- set rounding class
129367 --
129368 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
129369 'RECEIVING_INSPECTION';
129370
129371 --
129372 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
129373 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
129374 --
129375 -- bulk performance
129376 --
129377 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
129378
129379 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
129380 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
129381
129382 -- 4955764
129383 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
129384 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
129385
129386 -- 4458381 Public Sector Enh
129387
129388 --
129389 -- set accounting attributes for the line type
129390 --
129391 l_entered_amt_idx := 3;
129392 l_accted_amt_idx := 8;
129393 l_bflow_applied_to_amt_idx := NULL; -- 5132302
129394 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
129395 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
129396 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
129397 l_rec_acct_attrs.array_char_value(2) := p_source_12;
129398 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
129399 l_rec_acct_attrs.array_num_value(3) := p_source_18;
129400 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
129401 l_rec_acct_attrs.array_char_value(4) := p_source_15;
129402 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
129403 l_rec_acct_attrs.array_date_value(5) := p_source_19;
129404 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
129405 l_rec_acct_attrs.array_num_value(6) := p_source_20;
129406 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
129407 l_rec_acct_attrs.array_char_value(7) := p_source_21;
129408 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
129409 l_rec_acct_attrs.array_num_value(8) := p_source_22;
129410
129411 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
129412 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
129413
129414 ---------------------------------------------------------------------------------------------------------------
129415 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
129416 ---------------------------------------------------------------------------------------------------------------
129417 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
129418
129419 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
129420 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
129421
129422 IF xla_accounting_cache_pkg.GetValueChar
129423 (p_source_code => 'LEDGER_CATEGORY_CODE'
129424 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
129425 AND l_bflow_method_code = 'PRIOR_ENTRY'
129426 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
129427 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
129428 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
129429 )
129430 THEN
129431 xla_ae_lines_pkg.BflowUpgEntry
129432 (p_business_method_code => l_bflow_method_code
129433 ,p_business_class_code => l_bflow_class_code
129434 ,p_balance_type => l_balance_type_code);
129435 ELSE
129436 NULL;
129437 -- No business flow processing for business flow method of NONE.
129438 END IF;
129439
129440 --
129441 -- call analytical criteria
129442 --
129443
129444 --
129445 -- call description
129446 --
129447 -- No description or it is inherited.
129448 --
129449 -- call ADRs
129450 -- Bug 4922099
129451 --
129452 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
129453 (NVL(l_actual_upg_option, 'N') = 'O') OR
129454 (NVL(l_enc_upg_option, 'N') = 'O')
129455 )
129456 THEN
129457 NULL;
129458 --
129459 --
129460
129461 l_ccid := AcctDerRule_4(
129462 p_application_id => p_application_id
129463 , p_ae_header_id => l_ae_header_id
129464 , p_source_4 => p_source_4
129465 , x_transaction_coa_id => l_adr_transaction_coa_id
129466 , x_accounting_coa_id => l_adr_accounting_coa_id
129467 , x_value_type_code => l_adr_value_type_code
129468 , p_side => 'NA'
129469 );
129470
129471 xla_ae_lines_pkg.set_ccid(
129472 p_code_combination_id => l_ccid
129473 , p_value_type_code => l_adr_value_type_code
129474 , p_transaction_coa_id => l_adr_transaction_coa_id
129475 , p_accounting_coa_id => l_adr_accounting_coa_id
129476 , p_adr_code => 'CST_DEFAULT'
129477 , p_adr_type_code => 'S'
129478 , p_component_type => l_component_type
129479 , p_component_code => l_component_code
129480 , p_component_type_code => l_component_type_code
129481 , p_component_appl_id => l_component_appl_id
129482 , p_amb_context_code => l_amb_context_code
129483 , p_side => 'NA'
129484 );
129485
129486
129487 --
129488 --
129489 END IF;
129490 --
129491 -- Bug 4922099
129492 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
129493 (NVL(l_enc_upg_option, 'N') = 'O')
129494 ) AND
129495 (l_bflow_method_code = 'PRIOR_ENTRY')
129496 )
129497 THEN
129498 IF
129499 --
129500 1 = 2
129501 --
129502 THEN
129503 xla_accounting_err_pkg.build_message
129504 (p_appli_s_name => 'XLA'
129505 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
129506 ,p_token_1 => 'LINE_NUMBER'
129507 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
129508 ,p_token_2 => 'LINE_TYPE_NAME'
129509 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
129510 l_component_type
129511 ,l_component_code
129512 ,l_component_type_code
129513 ,l_component_appl_id
129514 ,l_amb_context_code
129515 ,l_entity_code
129516 ,l_event_class_code
129517 )
129518 ,p_token_3 => 'OWNER'
129519 ,p_value_3 => xla_lookups_pkg.get_meaning(
129520 p_lookup_type => 'XLA_OWNER_TYPE'
129521 ,p_lookup_code => l_component_type_code
129522 )
129523 ,p_token_4 => 'PRODUCT_NAME'
129524 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
129525 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
129526 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
129527 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
129528 ,p_ae_header_id => NULL
129529 );
129530
129531 IF (C_LEVEL_ERROR>= g_log_level) THEN
129532 trace
129533 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
129534 ,p_level => C_LEVEL_ERROR
129535 ,p_module => l_log_module);
129536 END IF;
129537 END IF;
129538 END IF;
129539 --
129540 --
129541 ------------------------------------------------------------------------------------------------
129542 -- 4219869 Business Flow
129543 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
129544 -- Prior Entry. Currently, the following code is always generated.
129545 ------------------------------------------------------------------------------------------------
129546 XLA_AE_LINES_PKG.ValidateCurrentLine;
129547
129548 ------------------------------------------------------------------------------------
129549 -- 4219869 Business Flow
129550 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
129551 ------------------------------------------------------------------------------------
129552 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
129553
129554 ----------------------------------------------------------------------------------
129555 -- 4219869 Business Flow
129556 -- Update journal entry status -- Need to generate this within IF <condition>
129557 ----------------------------------------------------------------------------------
129558 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
129559 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
129560 ,p_balance_type_code => l_balance_type_code
129561 );
129562
129563 -------------------------------------------------------------------------------------------
129564 -- 4262811 - Generate the Accrual Reversal lines
129565 -------------------------------------------------------------------------------------------
129566 BEGIN
129567 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
129568 (g_array_event(p_event_id).array_value_num('header_index'));
129569 IF l_acc_rev_flag IS NULL THEN
129570 l_acc_rev_flag := 'N';
129571 END IF;
129572 EXCEPTION
129573 WHEN OTHERS THEN
129574 l_acc_rev_flag := 'N';
129575 END;
129576 --
129577 IF (l_acc_rev_flag = 'Y') THEN
129578
129579 -- 4645092 ------------------------------------------------------------------------------
129580 -- To allow MPA report to determine if it should generate report process
129581 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
129582 ------------------------------------------------------------------------------------------
129583
129584 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
129585 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
129586 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
129587 -- call ADRs
129588 -- Bug 4922099
129589 --
129590 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
129591 (NVL(l_actual_upg_option, 'N') = 'O') OR
129592 (NVL(l_enc_upg_option, 'N') = 'O')
129593 )
129594 THEN
129595 NULL;
129596 --
129597 --
129598
129599 l_ccid := AcctDerRule_4(
129600 p_application_id => p_application_id
129601 , p_ae_header_id => l_ae_header_id
129602 , p_source_4 => p_source_4
129603 , x_transaction_coa_id => l_adr_transaction_coa_id
129604 , x_accounting_coa_id => l_adr_accounting_coa_id
129605 , x_value_type_code => l_adr_value_type_code
129606 , p_side => 'NA'
129607 );
129608
129609 xla_ae_lines_pkg.set_ccid(
129610 p_code_combination_id => l_ccid
129611 , p_value_type_code => l_adr_value_type_code
129612 , p_transaction_coa_id => l_adr_transaction_coa_id
129613 , p_accounting_coa_id => l_adr_accounting_coa_id
129614 , p_adr_code => 'CST_DEFAULT'
129615 , p_adr_type_code => 'S'
129616 , p_component_type => l_component_type
129617 , p_component_code => l_component_code
129618 , p_component_type_code => l_component_type_code
129619 , p_component_appl_id => l_component_appl_id
129620 , p_amb_context_code => l_amb_context_code
129621 , p_side => 'NA'
129622 );
129623
129624
129625 --
129626 --
129627 END IF;
129628
129629 --
129630 -- Update the line information that should be overwritten
129631 --
129632 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
129633 p_header_num => 1);
129634 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
129635
129636 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
129637
129638 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
129639 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
129640 END IF;
129641
129642 --
129643 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
129644 --
129645 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
129646 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
129647 ELSE
129648 ---------------------------------------------------------------------------------------------------
129649 -- 4262811a Switch Sign
129650 ---------------------------------------------------------------------------------------------------
129651 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
129652 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
129653 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
129654 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
129655 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
129656 -- 5132302
129657 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
129658 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
129659
129660 END IF;
129661
129662 -- 4955764
129663 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
129664 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
129665
129666
129667 XLA_AE_LINES_PKG.ValidateCurrentLine;
129668 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
129669
129670 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
129671 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
129672 ,p_balance_type_code => l_balance_type_code);
129673
129674 END IF;
129675
129676 -----------------------------------------------------------------------------------------
129677 -- 4262811 Multiperiod Accounting
129678 -----------------------------------------------------------------------------------------
129679 -- No MPA option is assigned.
129680
129681
129682 END IF;
129683 END IF;
129684 --
129685
129686 --
129687 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
129688 trace
129689 (p_msg => 'END of AcctLineType_234'
129690 ,p_level => C_LEVEL_PROCEDURE
129691 ,p_module => l_log_module);
129692 END IF;
129693 --
129694 EXCEPTION
129695 WHEN xla_exceptions_pkg.application_exception THEN
129696 RAISE;
129697 WHEN OTHERS THEN
129698 xla_exceptions_pkg.raise_message
129699 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_234');
129700 END AcctLineType_234;
129701 --
129702
129703 ---------------------------------------
129704 --
129705 -- PRIVATE FUNCTION
129706 -- AcctLineType_235
129707 --
129708 ---------------------------------------
129709 PROCEDURE AcctLineType_235 (
129710 p_application_id IN NUMBER
129711 ,p_event_id IN NUMBER
129712 ,p_calculate_acctd_flag IN VARCHAR2
129713 ,p_calculate_g_l_flag IN VARCHAR2
129714 ,p_actual_flag IN OUT VARCHAR2
129715 ,p_balance_type_code OUT VARCHAR2
129716 ,p_gain_or_loss_ref OUT VARCHAR2
129717
129718 --Cost Management Default Account
129719 , p_source_4 IN NUMBER
129720 --DISTRIBUTION_IDENTIFIER
129721 , p_source_11 IN NUMBER
129722 --Distribution Type
129723 , p_source_12 IN VARCHAR2
129724 , p_source_12_meaning IN VARCHAR2
129725 --Entered Currency Code
129726 , p_source_15 IN VARCHAR2
129727 --Entered Amount
129728 , p_source_18 IN NUMBER
129729 --Currency Conversion Date
129730 , p_source_19 IN DATE
129731 --Currency Conversion Rate
129732 , p_source_20 IN NUMBER
129733 --Accounted Amount
129734 , p_source_22 IN NUMBER
129735 --Accounting Line Type
129736 , p_source_24 IN NUMBER
129737 )
129738 IS
129739
129740 l_component_type VARCHAR2(80);
129741 l_component_code VARCHAR2(30);
129742 l_component_type_code VARCHAR2(1);
129743 l_component_appl_id INTEGER;
129744 l_amb_context_code VARCHAR2(30);
129745 l_entity_code VARCHAR2(30);
129746 l_event_class_code VARCHAR2(30);
129747 l_ae_header_id NUMBER;
129748 l_event_type_code VARCHAR2(30);
129749 l_line_definition_code VARCHAR2(30);
129750 l_line_definition_owner_code VARCHAR2(1);
129751 --
129752 -- adr variables
129753 l_segment VARCHAR2(30);
129754 l_ccid NUMBER;
129755 l_adr_transaction_coa_id NUMBER;
129756 l_adr_accounting_coa_id NUMBER;
129757 l_adr_flexfield_segment_code VARCHAR2(30);
129758 l_adr_flex_value_set_id NUMBER;
129759 l_adr_value_type_code VARCHAR2(30);
129760 l_adr_value_combination_id NUMBER;
129761 l_adr_value_segment_code VARCHAR2(30);
129762
129763 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
129764 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
129765 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
129766 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
129767
129768 -- 4262811 Variables ------------------------------------------------------------------------------------------
129769 l_entered_amt_idx NUMBER;
129770 l_accted_amt_idx NUMBER;
129771 l_acc_rev_flag VARCHAR2(1);
129772 l_accrual_line_num NUMBER;
129773 l_tmp_amt NUMBER;
129774 l_acc_rev_natural_side_code VARCHAR2(1);
129775
129776 l_num_entries NUMBER;
129777 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
129778 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
129779 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
129780 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
129781 l_recog_line_1 NUMBER;
129782 l_recog_line_2 NUMBER;
129783
129784 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
129785 l_bflow_applied_to_amt NUMBER; -- 5132302
129786 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
129787
129788 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
129789
129790 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
129791 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
129792
129793 ---------------------------------------------------------------------------------------------------------------
129794
129795
129796 --
129797 -- bulk performance
129798 --
129799 l_balance_type_code VARCHAR2(1);
129800 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
129801 l_log_module VARCHAR2(240);
129802
129803 --
129804 -- Upgrade strategy
129805 --
129806 l_actual_upg_option VARCHAR2(1);
129807 l_enc_upg_option VARCHAR2(1);
129808
129809 --
129810 BEGIN
129811 --
129812 IF g_log_enabled THEN
129813 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_235';
129814 END IF;
129815 --
129816 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
129817
129818 trace
129819 (p_msg => 'BEGIN of AcctLineType_235'
129820 ,p_level => C_LEVEL_PROCEDURE
129821 ,p_module => l_log_module);
129822
129823 END IF;
129824 --
129825 l_component_type := 'AMB_JLT';
129826 l_component_code := 'RESOURCE_ABSORPTION';
129827 l_component_type_code := 'S';
129828 l_component_appl_id := 707;
129829 l_amb_context_code := 'DEFAULT';
129830 l_entity_code := 'WIP_ACCOUNTING_EVENTS';
129831 l_event_class_code := 'OSP';
129832 l_event_type_code := 'OSP_ALL';
129833 l_line_definition_owner_code := 'S';
129834 l_line_definition_code := 'OUTSIDE_PROCESSING';
129835 --
129836 l_balance_type_code := 'A';
129837 l_segment := NULL;
129838 l_ccid := NULL;
129839 l_adr_transaction_coa_id := NULL;
129840 l_adr_accounting_coa_id := NULL;
129841 l_adr_flexfield_segment_code := NULL;
129842 l_adr_flex_value_set_id := NULL;
129843 l_adr_value_type_code := NULL;
129844 l_adr_value_combination_id := NULL;
129845 l_adr_value_segment_code := NULL;
129846
129847 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
129848 l_bflow_class_code := ''; -- 4219869 Business Flow
129849 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
129850 l_budgetary_control_flag := 'N';
129851
129852 l_bflow_applied_to_amt_idx := NULL; -- 5132302
129853 l_bflow_applied_to_amt := NULL; -- 5132302
129854 l_entered_amt_idx := NULL; -- 4262811
129855 l_accted_amt_idx := NULL; -- 4262811
129856 l_acc_rev_flag := NULL; -- 4262811
129857 l_accrual_line_num := NULL; -- 4262811
129858 l_tmp_amt := NULL; -- 4262811
129859 --
129860
129861 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
129862 l_balance_type_code <> 'B' THEN
129863 IF NVL(p_source_24,9E125) = 4
129864 THEN
129865
129866 --
129867 XLA_AE_LINES_PKG.SetNewLine;
129868
129869 p_balance_type_code := l_balance_type_code;
129870 -- set the flag so later we will know whether the gain loss line needs to be created
129871
129872 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
129873 p_actual_flag :='A';
129874 END IF;
129875
129876 --
129877 -- bulk performance
129878 --
129879 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
129880 p_header_num => 0); -- 4262811
129881 --
129882 -- set accounting line options
129883 --
129884 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
129885 p_natural_side_code => 'D'
129886 , p_gain_or_loss_flag => 'N'
129887 , p_gl_transfer_mode_code => 'S'
129888 , p_acct_entry_type_code => 'A'
129889 , p_switch_side_flag => 'Y'
129890 , p_merge_duplicate_code => 'N'
129891 );
129892 --
129893 l_acc_rev_natural_side_code := 'C'; -- 4262811
129894 --
129895 --
129896 -- set accounting line type info
129897 --
129898 xla_ae_lines_pkg.SetAcctLineType
129899 (p_component_type => l_component_type
129900 ,p_event_type_code => l_event_type_code
129901 ,p_line_definition_owner_code => l_line_definition_owner_code
129902 ,p_line_definition_code => l_line_definition_code
129903 ,p_accounting_line_code => l_component_code
129904 ,p_accounting_line_type_code => l_component_type_code
129905 ,p_accounting_line_appl_id => l_component_appl_id
129906 ,p_amb_context_code => l_amb_context_code
129907 ,p_entity_code => l_entity_code
129908 ,p_event_class_code => l_event_class_code);
129909 --
129910 -- set accounting class
129911 --
129912 xla_ae_lines_pkg.SetAcctClass(
129913 p_accounting_class_code => 'RESOURCE_ABSORPTION'
129914 , p_ae_header_id => l_ae_header_id
129915 );
129916
129917 --
129918 -- set rounding class
129919 --
129920 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
129921 'RESOURCE_ABSORPTION';
129922
129923 --
129924 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
129925 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
129926 --
129927 -- bulk performance
129928 --
129929 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
129930
129931 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
129932 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
129933
129934 -- 4955764
129935 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
129936 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
129937
129938 -- 4458381 Public Sector Enh
129939
129940 --
129941 -- set accounting attributes for the line type
129942 --
129943 l_entered_amt_idx := 3;
129944 l_accted_amt_idx := 8;
129945 l_bflow_applied_to_amt_idx := NULL; -- 5132302
129946 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
129947 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
129948 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
129949 l_rec_acct_attrs.array_char_value(2) := p_source_12;
129950 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
129951 l_rec_acct_attrs.array_num_value(3) := p_source_18;
129952 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
129953 l_rec_acct_attrs.array_char_value(4) := p_source_15;
129954 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
129955 l_rec_acct_attrs.array_date_value(5) := p_source_19;
129956 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
129957 l_rec_acct_attrs.array_num_value(6) := p_source_20;
129958 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
129959 l_rec_acct_attrs.array_num_value(7) := to_char(p_source_20);
129960 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
129961 l_rec_acct_attrs.array_num_value(8) := p_source_22;
129962
129963 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
129964 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
129965
129966 ---------------------------------------------------------------------------------------------------------------
129967 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
129968 ---------------------------------------------------------------------------------------------------------------
129969 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
129970
129971 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
129972 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
129973
129974 IF xla_accounting_cache_pkg.GetValueChar
129975 (p_source_code => 'LEDGER_CATEGORY_CODE'
129976 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
129977 AND l_bflow_method_code = 'PRIOR_ENTRY'
129978 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
129979 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
129980 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
129981 )
129982 THEN
129983 xla_ae_lines_pkg.BflowUpgEntry
129984 (p_business_method_code => l_bflow_method_code
129985 ,p_business_class_code => l_bflow_class_code
129986 ,p_balance_type => l_balance_type_code);
129987 ELSE
129988 NULL;
129989 -- No business flow processing for business flow method of NONE.
129990 END IF;
129991
129992 --
129993 -- call analytical criteria
129994 --
129995
129996 --
129997 -- call description
129998 --
129999 -- No description or it is inherited.
130000 --
130001 -- call ADRs
130002 -- Bug 4922099
130003 --
130004 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
130005 (NVL(l_actual_upg_option, 'N') = 'O') OR
130006 (NVL(l_enc_upg_option, 'N') = 'O')
130007 )
130008 THEN
130009 NULL;
130010 --
130011 --
130012
130013 l_ccid := AcctDerRule_4(
130014 p_application_id => p_application_id
130015 , p_ae_header_id => l_ae_header_id
130016 , p_source_4 => p_source_4
130017 , x_transaction_coa_id => l_adr_transaction_coa_id
130018 , x_accounting_coa_id => l_adr_accounting_coa_id
130019 , x_value_type_code => l_adr_value_type_code
130020 , p_side => 'NA'
130021 );
130022
130023 xla_ae_lines_pkg.set_ccid(
130024 p_code_combination_id => l_ccid
130025 , p_value_type_code => l_adr_value_type_code
130026 , p_transaction_coa_id => l_adr_transaction_coa_id
130027 , p_accounting_coa_id => l_adr_accounting_coa_id
130028 , p_adr_code => 'CST_DEFAULT'
130029 , p_adr_type_code => 'S'
130030 , p_component_type => l_component_type
130031 , p_component_code => l_component_code
130032 , p_component_type_code => l_component_type_code
130033 , p_component_appl_id => l_component_appl_id
130034 , p_amb_context_code => l_amb_context_code
130035 , p_side => 'NA'
130036 );
130037
130038
130039 --
130040 --
130041 END IF;
130042 --
130043 -- Bug 4922099
130044 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
130045 (NVL(l_enc_upg_option, 'N') = 'O')
130046 ) AND
130047 (l_bflow_method_code = 'PRIOR_ENTRY')
130048 )
130049 THEN
130050 IF
130051 --
130052 1 = 2
130053 --
130054 THEN
130055 xla_accounting_err_pkg.build_message
130056 (p_appli_s_name => 'XLA'
130057 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
130058 ,p_token_1 => 'LINE_NUMBER'
130059 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
130060 ,p_token_2 => 'LINE_TYPE_NAME'
130061 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
130062 l_component_type
130063 ,l_component_code
130064 ,l_component_type_code
130065 ,l_component_appl_id
130066 ,l_amb_context_code
130067 ,l_entity_code
130068 ,l_event_class_code
130069 )
130070 ,p_token_3 => 'OWNER'
130071 ,p_value_3 => xla_lookups_pkg.get_meaning(
130072 p_lookup_type => 'XLA_OWNER_TYPE'
130073 ,p_lookup_code => l_component_type_code
130074 )
130075 ,p_token_4 => 'PRODUCT_NAME'
130076 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
130077 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
130078 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
130079 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
130080 ,p_ae_header_id => NULL
130081 );
130082
130083 IF (C_LEVEL_ERROR>= g_log_level) THEN
130084 trace
130085 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
130086 ,p_level => C_LEVEL_ERROR
130087 ,p_module => l_log_module);
130088 END IF;
130089 END IF;
130090 END IF;
130091 --
130092 --
130093 ------------------------------------------------------------------------------------------------
130094 -- 4219869 Business Flow
130095 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
130096 -- Prior Entry. Currently, the following code is always generated.
130097 ------------------------------------------------------------------------------------------------
130098 XLA_AE_LINES_PKG.ValidateCurrentLine;
130099
130100 ------------------------------------------------------------------------------------
130101 -- 4219869 Business Flow
130102 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
130103 ------------------------------------------------------------------------------------
130104 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
130105
130106 ----------------------------------------------------------------------------------
130107 -- 4219869 Business Flow
130108 -- Update journal entry status -- Need to generate this within IF <condition>
130109 ----------------------------------------------------------------------------------
130110 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
130111 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
130112 ,p_balance_type_code => l_balance_type_code
130113 );
130114
130115 -------------------------------------------------------------------------------------------
130116 -- 4262811 - Generate the Accrual Reversal lines
130117 -------------------------------------------------------------------------------------------
130118 BEGIN
130119 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
130120 (g_array_event(p_event_id).array_value_num('header_index'));
130121 IF l_acc_rev_flag IS NULL THEN
130122 l_acc_rev_flag := 'N';
130123 END IF;
130124 EXCEPTION
130125 WHEN OTHERS THEN
130126 l_acc_rev_flag := 'N';
130127 END;
130128 --
130129 IF (l_acc_rev_flag = 'Y') THEN
130130
130131 -- 4645092 ------------------------------------------------------------------------------
130132 -- To allow MPA report to determine if it should generate report process
130133 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
130134 ------------------------------------------------------------------------------------------
130135
130136 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
130137 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
130138 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
130139 -- call ADRs
130140 -- Bug 4922099
130141 --
130142 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
130143 (NVL(l_actual_upg_option, 'N') = 'O') OR
130144 (NVL(l_enc_upg_option, 'N') = 'O')
130145 )
130146 THEN
130147 NULL;
130148 --
130149 --
130150
130151 l_ccid := AcctDerRule_4(
130152 p_application_id => p_application_id
130153 , p_ae_header_id => l_ae_header_id
130154 , p_source_4 => p_source_4
130155 , x_transaction_coa_id => l_adr_transaction_coa_id
130156 , x_accounting_coa_id => l_adr_accounting_coa_id
130157 , x_value_type_code => l_adr_value_type_code
130158 , p_side => 'NA'
130159 );
130160
130161 xla_ae_lines_pkg.set_ccid(
130162 p_code_combination_id => l_ccid
130163 , p_value_type_code => l_adr_value_type_code
130164 , p_transaction_coa_id => l_adr_transaction_coa_id
130165 , p_accounting_coa_id => l_adr_accounting_coa_id
130166 , p_adr_code => 'CST_DEFAULT'
130167 , p_adr_type_code => 'S'
130168 , p_component_type => l_component_type
130169 , p_component_code => l_component_code
130170 , p_component_type_code => l_component_type_code
130171 , p_component_appl_id => l_component_appl_id
130172 , p_amb_context_code => l_amb_context_code
130173 , p_side => 'NA'
130174 );
130175
130176
130177 --
130178 --
130179 END IF;
130180
130181 --
130182 -- Update the line information that should be overwritten
130183 --
130184 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
130185 p_header_num => 1);
130186 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
130187
130188 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
130189
130190 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
130191 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
130192 END IF;
130193
130194 --
130195 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
130196 --
130197 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
130198 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
130199 ELSE
130200 ---------------------------------------------------------------------------------------------------
130201 -- 4262811a Switch Sign
130202 ---------------------------------------------------------------------------------------------------
130203 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
130204 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
130205 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
130206 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
130207 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
130208 -- 5132302
130209 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
130210 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
130211
130212 END IF;
130213
130214 -- 4955764
130215 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
130216 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
130217
130218
130219 XLA_AE_LINES_PKG.ValidateCurrentLine;
130220 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
130221
130222 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
130223 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
130224 ,p_balance_type_code => l_balance_type_code);
130225
130226 END IF;
130227
130228 -----------------------------------------------------------------------------------------
130229 -- 4262811 Multiperiod Accounting
130230 -----------------------------------------------------------------------------------------
130231 -- No MPA option is assigned.
130232
130233
130234 END IF;
130235 END IF;
130236 --
130237
130238 --
130239 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
130240 trace
130241 (p_msg => 'END of AcctLineType_235'
130242 ,p_level => C_LEVEL_PROCEDURE
130243 ,p_module => l_log_module);
130244 END IF;
130245 --
130246 EXCEPTION
130247 WHEN xla_exceptions_pkg.application_exception THEN
130248 RAISE;
130249 WHEN OTHERS THEN
130250 xla_exceptions_pkg.raise_message
130251 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_235');
130252 END AcctLineType_235;
130253 --
130254
130255 ---------------------------------------
130256 --
130257 -- PRIVATE FUNCTION
130258 -- AcctLineType_236
130259 --
130260 ---------------------------------------
130261 PROCEDURE AcctLineType_236 (
130262 p_application_id IN NUMBER
130263 ,p_event_id IN NUMBER
130264 ,p_calculate_acctd_flag IN VARCHAR2
130265 ,p_calculate_g_l_flag IN VARCHAR2
130266 ,p_actual_flag IN OUT VARCHAR2
130267 ,p_balance_type_code OUT VARCHAR2
130268 ,p_gain_or_loss_ref OUT VARCHAR2
130269
130270 --Cost Management Default Account
130271 , p_source_4 IN NUMBER
130272 --DISTRIBUTION_IDENTIFIER
130273 , p_source_11 IN NUMBER
130274 --Distribution Type
130275 , p_source_12 IN VARCHAR2
130276 , p_source_12_meaning IN VARCHAR2
130277 --Entered Currency Code
130278 , p_source_15 IN VARCHAR2
130279 --Entered Amount
130280 , p_source_18 IN NUMBER
130281 --Currency Conversion Date
130282 , p_source_19 IN DATE
130283 --Currency Conversion Rate
130284 , p_source_20 IN NUMBER
130285 --Currency Conversion Type
130286 , p_source_21 IN VARCHAR2
130287 --Accounted Amount
130288 , p_source_22 IN NUMBER
130289 --Accounting Line Type
130290 , p_source_24 IN NUMBER
130291 )
130292 IS
130293
130294 l_component_type VARCHAR2(80);
130295 l_component_code VARCHAR2(30);
130296 l_component_type_code VARCHAR2(1);
130297 l_component_appl_id INTEGER;
130298 l_amb_context_code VARCHAR2(30);
130299 l_entity_code VARCHAR2(30);
130300 l_event_class_code VARCHAR2(30);
130301 l_ae_header_id NUMBER;
130302 l_event_type_code VARCHAR2(30);
130303 l_line_definition_code VARCHAR2(30);
130304 l_line_definition_owner_code VARCHAR2(1);
130305 --
130306 -- adr variables
130307 l_segment VARCHAR2(30);
130308 l_ccid NUMBER;
130309 l_adr_transaction_coa_id NUMBER;
130310 l_adr_accounting_coa_id NUMBER;
130311 l_adr_flexfield_segment_code VARCHAR2(30);
130312 l_adr_flex_value_set_id NUMBER;
130313 l_adr_value_type_code VARCHAR2(30);
130314 l_adr_value_combination_id NUMBER;
130315 l_adr_value_segment_code VARCHAR2(30);
130316
130317 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
130318 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
130319 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
130320 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
130321
130322 -- 4262811 Variables ------------------------------------------------------------------------------------------
130323 l_entered_amt_idx NUMBER;
130324 l_accted_amt_idx NUMBER;
130325 l_acc_rev_flag VARCHAR2(1);
130326 l_accrual_line_num NUMBER;
130327 l_tmp_amt NUMBER;
130328 l_acc_rev_natural_side_code VARCHAR2(1);
130329
130330 l_num_entries NUMBER;
130331 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
130332 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
130333 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
130334 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
130335 l_recog_line_1 NUMBER;
130336 l_recog_line_2 NUMBER;
130337
130338 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
130339 l_bflow_applied_to_amt NUMBER; -- 5132302
130340 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
130341
130342 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
130343
130344 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
130345 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
130346
130347 ---------------------------------------------------------------------------------------------------------------
130348
130349
130350 --
130351 -- bulk performance
130352 --
130353 l_balance_type_code VARCHAR2(1);
130354 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
130355 l_log_module VARCHAR2(240);
130356
130357 --
130358 -- Upgrade strategy
130359 --
130360 l_actual_upg_option VARCHAR2(1);
130361 l_enc_upg_option VARCHAR2(1);
130362
130363 --
130364 BEGIN
130365 --
130366 IF g_log_enabled THEN
130367 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_236';
130368 END IF;
130369 --
130370 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
130371
130372 trace
130373 (p_msg => 'BEGIN of AcctLineType_236'
130374 ,p_level => C_LEVEL_PROCEDURE
130375 ,p_module => l_log_module);
130376
130377 END IF;
130378 --
130379 l_component_type := 'AMB_JLT';
130380 l_component_code := 'RESOURCE_ABSORPTION';
130381 l_component_type_code := 'S';
130382 l_component_appl_id := 707;
130383 l_amb_context_code := 'DEFAULT';
130384 l_entity_code := 'WIP_ACCOUNTING_EVENTS';
130385 l_event_class_code := 'ABSORPTION';
130386 l_event_type_code := 'ABSORPTION_ALL';
130387 l_line_definition_owner_code := 'S';
130388 l_line_definition_code := 'ABSORPTION';
130389 --
130390 l_balance_type_code := 'A';
130391 l_segment := NULL;
130392 l_ccid := NULL;
130393 l_adr_transaction_coa_id := NULL;
130394 l_adr_accounting_coa_id := NULL;
130395 l_adr_flexfield_segment_code := NULL;
130396 l_adr_flex_value_set_id := NULL;
130397 l_adr_value_type_code := NULL;
130398 l_adr_value_combination_id := NULL;
130399 l_adr_value_segment_code := NULL;
130400
130401 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
130402 l_bflow_class_code := ''; -- 4219869 Business Flow
130403 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
130404 l_budgetary_control_flag := 'N';
130405
130406 l_bflow_applied_to_amt_idx := NULL; -- 5132302
130407 l_bflow_applied_to_amt := NULL; -- 5132302
130408 l_entered_amt_idx := NULL; -- 4262811
130409 l_accted_amt_idx := NULL; -- 4262811
130410 l_acc_rev_flag := NULL; -- 4262811
130411 l_accrual_line_num := NULL; -- 4262811
130412 l_tmp_amt := NULL; -- 4262811
130413 --
130414
130415 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
130416 l_balance_type_code <> 'B' THEN
130417 IF NVL(p_source_24,9E125) = 4
130418 THEN
130419
130420 --
130421 XLA_AE_LINES_PKG.SetNewLine;
130422
130423 p_balance_type_code := l_balance_type_code;
130424 -- set the flag so later we will know whether the gain loss line needs to be created
130425
130426 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
130427 p_actual_flag :='A';
130428 END IF;
130429
130430 --
130431 -- bulk performance
130432 --
130433 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
130434 p_header_num => 0); -- 4262811
130435 --
130436 -- set accounting line options
130437 --
130438 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
130439 p_natural_side_code => 'D'
130440 , p_gain_or_loss_flag => 'N'
130441 , p_gl_transfer_mode_code => 'S'
130442 , p_acct_entry_type_code => 'A'
130443 , p_switch_side_flag => 'Y'
130444 , p_merge_duplicate_code => 'N'
130445 );
130446 --
130447 l_acc_rev_natural_side_code := 'C'; -- 4262811
130448 --
130449 --
130450 -- set accounting line type info
130451 --
130452 xla_ae_lines_pkg.SetAcctLineType
130453 (p_component_type => l_component_type
130454 ,p_event_type_code => l_event_type_code
130455 ,p_line_definition_owner_code => l_line_definition_owner_code
130456 ,p_line_definition_code => l_line_definition_code
130457 ,p_accounting_line_code => l_component_code
130458 ,p_accounting_line_type_code => l_component_type_code
130459 ,p_accounting_line_appl_id => l_component_appl_id
130460 ,p_amb_context_code => l_amb_context_code
130461 ,p_entity_code => l_entity_code
130462 ,p_event_class_code => l_event_class_code);
130463 --
130464 -- set accounting class
130465 --
130466 xla_ae_lines_pkg.SetAcctClass(
130467 p_accounting_class_code => 'RESOURCE_ABSORPTION'
130468 , p_ae_header_id => l_ae_header_id
130469 );
130470
130471 --
130472 -- set rounding class
130473 --
130474 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
130475 'RESOURCE_ABSORPTION';
130476
130477 --
130478 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
130479 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
130480 --
130481 -- bulk performance
130482 --
130483 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
130484
130485 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
130486 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
130487
130488 -- 4955764
130489 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
130490 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
130491
130492 -- 4458381 Public Sector Enh
130493
130494 --
130495 -- set accounting attributes for the line type
130496 --
130497 l_entered_amt_idx := 3;
130498 l_accted_amt_idx := 8;
130499 l_bflow_applied_to_amt_idx := NULL; -- 5132302
130500 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
130501 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
130502 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
130503 l_rec_acct_attrs.array_char_value(2) := p_source_12;
130504 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
130505 l_rec_acct_attrs.array_num_value(3) := p_source_18;
130506 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
130507 l_rec_acct_attrs.array_char_value(4) := p_source_15;
130508 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
130509 l_rec_acct_attrs.array_date_value(5) := p_source_19;
130510 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
130511 l_rec_acct_attrs.array_num_value(6) := p_source_20;
130512 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
130513 l_rec_acct_attrs.array_char_value(7) := p_source_21;
130514 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
130515 l_rec_acct_attrs.array_num_value(8) := p_source_22;
130516
130517 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
130518 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
130519
130520 ---------------------------------------------------------------------------------------------------------------
130521 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
130522 ---------------------------------------------------------------------------------------------------------------
130523 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
130524
130525 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
130526 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
130527
130528 IF xla_accounting_cache_pkg.GetValueChar
130529 (p_source_code => 'LEDGER_CATEGORY_CODE'
130530 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
130531 AND l_bflow_method_code = 'PRIOR_ENTRY'
130532 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
130533 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
130534 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
130535 )
130536 THEN
130537 xla_ae_lines_pkg.BflowUpgEntry
130538 (p_business_method_code => l_bflow_method_code
130539 ,p_business_class_code => l_bflow_class_code
130540 ,p_balance_type => l_balance_type_code);
130541 ELSE
130542 NULL;
130543 -- No business flow processing for business flow method of NONE.
130544 END IF;
130545
130546 --
130547 -- call analytical criteria
130548 --
130549
130550 --
130551 -- call description
130552 --
130553 -- No description or it is inherited.
130554 --
130555 -- call ADRs
130556 -- Bug 4922099
130557 --
130558 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
130559 (NVL(l_actual_upg_option, 'N') = 'O') OR
130560 (NVL(l_enc_upg_option, 'N') = 'O')
130561 )
130562 THEN
130563 NULL;
130564 --
130565 --
130566
130567 l_ccid := AcctDerRule_4(
130568 p_application_id => p_application_id
130569 , p_ae_header_id => l_ae_header_id
130570 , p_source_4 => p_source_4
130571 , x_transaction_coa_id => l_adr_transaction_coa_id
130572 , x_accounting_coa_id => l_adr_accounting_coa_id
130573 , x_value_type_code => l_adr_value_type_code
130574 , p_side => 'NA'
130575 );
130576
130577 xla_ae_lines_pkg.set_ccid(
130578 p_code_combination_id => l_ccid
130579 , p_value_type_code => l_adr_value_type_code
130580 , p_transaction_coa_id => l_adr_transaction_coa_id
130581 , p_accounting_coa_id => l_adr_accounting_coa_id
130582 , p_adr_code => 'CST_DEFAULT'
130583 , p_adr_type_code => 'S'
130584 , p_component_type => l_component_type
130585 , p_component_code => l_component_code
130586 , p_component_type_code => l_component_type_code
130587 , p_component_appl_id => l_component_appl_id
130588 , p_amb_context_code => l_amb_context_code
130589 , p_side => 'NA'
130590 );
130591
130592
130593 --
130594 --
130595 END IF;
130596 --
130597 -- Bug 4922099
130598 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
130599 (NVL(l_enc_upg_option, 'N') = 'O')
130600 ) AND
130601 (l_bflow_method_code = 'PRIOR_ENTRY')
130602 )
130603 THEN
130604 IF
130605 --
130606 1 = 2
130607 --
130608 THEN
130609 xla_accounting_err_pkg.build_message
130610 (p_appli_s_name => 'XLA'
130611 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
130612 ,p_token_1 => 'LINE_NUMBER'
130613 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
130614 ,p_token_2 => 'LINE_TYPE_NAME'
130615 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
130616 l_component_type
130617 ,l_component_code
130618 ,l_component_type_code
130619 ,l_component_appl_id
130620 ,l_amb_context_code
130621 ,l_entity_code
130622 ,l_event_class_code
130623 )
130624 ,p_token_3 => 'OWNER'
130625 ,p_value_3 => xla_lookups_pkg.get_meaning(
130626 p_lookup_type => 'XLA_OWNER_TYPE'
130627 ,p_lookup_code => l_component_type_code
130628 )
130629 ,p_token_4 => 'PRODUCT_NAME'
130630 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
130631 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
130632 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
130633 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
130634 ,p_ae_header_id => NULL
130635 );
130636
130637 IF (C_LEVEL_ERROR>= g_log_level) THEN
130638 trace
130639 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
130640 ,p_level => C_LEVEL_ERROR
130641 ,p_module => l_log_module);
130642 END IF;
130643 END IF;
130644 END IF;
130645 --
130646 --
130647 ------------------------------------------------------------------------------------------------
130648 -- 4219869 Business Flow
130649 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
130650 -- Prior Entry. Currently, the following code is always generated.
130651 ------------------------------------------------------------------------------------------------
130652 XLA_AE_LINES_PKG.ValidateCurrentLine;
130653
130654 ------------------------------------------------------------------------------------
130655 -- 4219869 Business Flow
130656 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
130657 ------------------------------------------------------------------------------------
130658 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
130659
130660 ----------------------------------------------------------------------------------
130661 -- 4219869 Business Flow
130662 -- Update journal entry status -- Need to generate this within IF <condition>
130663 ----------------------------------------------------------------------------------
130664 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
130665 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
130666 ,p_balance_type_code => l_balance_type_code
130667 );
130668
130669 -------------------------------------------------------------------------------------------
130670 -- 4262811 - Generate the Accrual Reversal lines
130671 -------------------------------------------------------------------------------------------
130672 BEGIN
130673 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
130674 (g_array_event(p_event_id).array_value_num('header_index'));
130675 IF l_acc_rev_flag IS NULL THEN
130676 l_acc_rev_flag := 'N';
130677 END IF;
130678 EXCEPTION
130679 WHEN OTHERS THEN
130680 l_acc_rev_flag := 'N';
130681 END;
130682 --
130683 IF (l_acc_rev_flag = 'Y') THEN
130684
130685 -- 4645092 ------------------------------------------------------------------------------
130686 -- To allow MPA report to determine if it should generate report process
130687 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
130688 ------------------------------------------------------------------------------------------
130689
130690 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
130691 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
130692 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
130693 -- call ADRs
130694 -- Bug 4922099
130695 --
130696 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
130697 (NVL(l_actual_upg_option, 'N') = 'O') OR
130698 (NVL(l_enc_upg_option, 'N') = 'O')
130699 )
130700 THEN
130701 NULL;
130702 --
130703 --
130704
130705 l_ccid := AcctDerRule_4(
130706 p_application_id => p_application_id
130707 , p_ae_header_id => l_ae_header_id
130708 , p_source_4 => p_source_4
130709 , x_transaction_coa_id => l_adr_transaction_coa_id
130710 , x_accounting_coa_id => l_adr_accounting_coa_id
130711 , x_value_type_code => l_adr_value_type_code
130712 , p_side => 'NA'
130713 );
130714
130715 xla_ae_lines_pkg.set_ccid(
130716 p_code_combination_id => l_ccid
130717 , p_value_type_code => l_adr_value_type_code
130718 , p_transaction_coa_id => l_adr_transaction_coa_id
130719 , p_accounting_coa_id => l_adr_accounting_coa_id
130720 , p_adr_code => 'CST_DEFAULT'
130721 , p_adr_type_code => 'S'
130722 , p_component_type => l_component_type
130723 , p_component_code => l_component_code
130724 , p_component_type_code => l_component_type_code
130725 , p_component_appl_id => l_component_appl_id
130726 , p_amb_context_code => l_amb_context_code
130727 , p_side => 'NA'
130728 );
130729
130730
130731 --
130732 --
130733 END IF;
130734
130735 --
130736 -- Update the line information that should be overwritten
130737 --
130738 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
130739 p_header_num => 1);
130740 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
130741
130742 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
130743
130744 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
130745 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
130746 END IF;
130747
130748 --
130749 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
130750 --
130751 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
130752 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
130753 ELSE
130754 ---------------------------------------------------------------------------------------------------
130755 -- 4262811a Switch Sign
130756 ---------------------------------------------------------------------------------------------------
130757 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
130758 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
130759 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
130760 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
130761 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
130762 -- 5132302
130763 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
130764 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
130765
130766 END IF;
130767
130768 -- 4955764
130769 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
130770 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
130771
130772
130773 XLA_AE_LINES_PKG.ValidateCurrentLine;
130774 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
130775
130776 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
130777 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
130778 ,p_balance_type_code => l_balance_type_code);
130779
130780 END IF;
130781
130782 -----------------------------------------------------------------------------------------
130783 -- 4262811 Multiperiod Accounting
130784 -----------------------------------------------------------------------------------------
130785 -- No MPA option is assigned.
130786
130787
130788 END IF;
130789 END IF;
130790 --
130791
130792 --
130793 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
130794 trace
130795 (p_msg => 'END of AcctLineType_236'
130796 ,p_level => C_LEVEL_PROCEDURE
130797 ,p_module => l_log_module);
130798 END IF;
130799 --
130800 EXCEPTION
130801 WHEN xla_exceptions_pkg.application_exception THEN
130802 RAISE;
130803 WHEN OTHERS THEN
130804 xla_exceptions_pkg.raise_message
130805 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_236');
130806 END AcctLineType_236;
130807 --
130808
130809 ---------------------------------------
130810 --
130811 -- PRIVATE FUNCTION
130812 -- AcctLineType_237
130813 --
130814 ---------------------------------------
130815 PROCEDURE AcctLineType_237 (
130816 p_application_id IN NUMBER
130817 ,p_event_id IN NUMBER
130818 ,p_calculate_acctd_flag IN VARCHAR2
130819 ,p_calculate_g_l_flag IN VARCHAR2
130820 ,p_actual_flag IN OUT VARCHAR2
130821 ,p_balance_type_code OUT VARCHAR2
130822 ,p_gain_or_loss_ref OUT VARCHAR2
130823
130824 --Cost Management Default Account
130825 , p_source_4 IN NUMBER
130826 --DISTRIBUTION_IDENTIFIER
130827 , p_source_11 IN NUMBER
130828 --Distribution Type
130829 , p_source_12 IN VARCHAR2
130830 , p_source_12_meaning IN VARCHAR2
130831 --Entered Currency Code
130832 , p_source_15 IN VARCHAR2
130833 --Entered Amount
130834 , p_source_18 IN NUMBER
130835 --Currency Conversion Date
130836 , p_source_19 IN DATE
130837 --Currency Conversion Rate
130838 , p_source_20 IN NUMBER
130839 --Currency Conversion Type
130840 , p_source_21 IN VARCHAR2
130841 --Accounted Amount
130842 , p_source_22 IN NUMBER
130843 --Accounting Line Type
130844 , p_source_24 IN NUMBER
130845 )
130846 IS
130847
130848 l_component_type VARCHAR2(80);
130849 l_component_code VARCHAR2(30);
130850 l_component_type_code VARCHAR2(1);
130851 l_component_appl_id INTEGER;
130852 l_amb_context_code VARCHAR2(30);
130853 l_entity_code VARCHAR2(30);
130854 l_event_class_code VARCHAR2(30);
130855 l_ae_header_id NUMBER;
130856 l_event_type_code VARCHAR2(30);
130857 l_line_definition_code VARCHAR2(30);
130858 l_line_definition_owner_code VARCHAR2(1);
130859 --
130860 -- adr variables
130861 l_segment VARCHAR2(30);
130862 l_ccid NUMBER;
130863 l_adr_transaction_coa_id NUMBER;
130864 l_adr_accounting_coa_id NUMBER;
130865 l_adr_flexfield_segment_code VARCHAR2(30);
130866 l_adr_flex_value_set_id NUMBER;
130867 l_adr_value_type_code VARCHAR2(30);
130868 l_adr_value_combination_id NUMBER;
130869 l_adr_value_segment_code VARCHAR2(30);
130870
130871 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
130872 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
130873 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
130874 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
130875
130876 -- 4262811 Variables ------------------------------------------------------------------------------------------
130877 l_entered_amt_idx NUMBER;
130878 l_accted_amt_idx NUMBER;
130879 l_acc_rev_flag VARCHAR2(1);
130880 l_accrual_line_num NUMBER;
130881 l_tmp_amt NUMBER;
130882 l_acc_rev_natural_side_code VARCHAR2(1);
130883
130884 l_num_entries NUMBER;
130885 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
130886 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
130887 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
130888 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
130889 l_recog_line_1 NUMBER;
130890 l_recog_line_2 NUMBER;
130891
130892 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
130893 l_bflow_applied_to_amt NUMBER; -- 5132302
130894 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
130895
130896 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
130897
130898 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
130899 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
130900
130901 ---------------------------------------------------------------------------------------------------------------
130902
130903
130904 --
130905 -- bulk performance
130906 --
130907 l_balance_type_code VARCHAR2(1);
130908 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
130909 l_log_module VARCHAR2(240);
130910
130911 --
130912 -- Upgrade strategy
130913 --
130914 l_actual_upg_option VARCHAR2(1);
130915 l_enc_upg_option VARCHAR2(1);
130916
130917 --
130918 BEGIN
130919 --
130920 IF g_log_enabled THEN
130921 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_237';
130922 END IF;
130923 --
130924 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
130925
130926 trace
130927 (p_msg => 'BEGIN of AcctLineType_237'
130928 ,p_level => C_LEVEL_PROCEDURE
130929 ,p_module => l_log_module);
130930
130931 END IF;
130932 --
130933 l_component_type := 'AMB_JLT';
130934 l_component_code := 'RESOURCE_RATE_VARIANCE';
130935 l_component_type_code := 'S';
130936 l_component_appl_id := 707;
130937 l_amb_context_code := 'DEFAULT';
130938 l_entity_code := 'WIP_ACCOUNTING_EVENTS';
130939 l_event_class_code := 'ABSORPTION';
130940 l_event_type_code := 'ABSORPTION_ALL';
130941 l_line_definition_owner_code := 'S';
130942 l_line_definition_code := 'ABSORPTION';
130943 --
130944 l_balance_type_code := 'A';
130945 l_segment := NULL;
130946 l_ccid := NULL;
130947 l_adr_transaction_coa_id := NULL;
130948 l_adr_accounting_coa_id := NULL;
130949 l_adr_flexfield_segment_code := NULL;
130950 l_adr_flex_value_set_id := NULL;
130951 l_adr_value_type_code := NULL;
130952 l_adr_value_combination_id := NULL;
130953 l_adr_value_segment_code := NULL;
130954
130955 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
130956 l_bflow_class_code := ''; -- 4219869 Business Flow
130957 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
130958 l_budgetary_control_flag := 'N';
130959
130960 l_bflow_applied_to_amt_idx := NULL; -- 5132302
130961 l_bflow_applied_to_amt := NULL; -- 5132302
130962 l_entered_amt_idx := NULL; -- 4262811
130963 l_accted_amt_idx := NULL; -- 4262811
130964 l_acc_rev_flag := NULL; -- 4262811
130965 l_accrual_line_num := NULL; -- 4262811
130966 l_tmp_amt := NULL; -- 4262811
130967 --
130968
130969 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
130970 l_balance_type_code <> 'B' THEN
130971 IF NVL(p_source_24,9E125) = 6
130972 THEN
130973
130974 --
130975 XLA_AE_LINES_PKG.SetNewLine;
130976
130977 p_balance_type_code := l_balance_type_code;
130978 -- set the flag so later we will know whether the gain loss line needs to be created
130979
130980 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
130981 p_actual_flag :='A';
130982 END IF;
130983
130984 --
130985 -- bulk performance
130986 --
130987 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
130988 p_header_num => 0); -- 4262811
130989 --
130990 -- set accounting line options
130991 --
130992 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
130993 p_natural_side_code => 'D'
130994 , p_gain_or_loss_flag => 'N'
130995 , p_gl_transfer_mode_code => 'S'
130996 , p_acct_entry_type_code => 'A'
130997 , p_switch_side_flag => 'Y'
130998 , p_merge_duplicate_code => 'N'
130999 );
131000 --
131001 l_acc_rev_natural_side_code := 'C'; -- 4262811
131002 --
131003 --
131004 -- set accounting line type info
131005 --
131006 xla_ae_lines_pkg.SetAcctLineType
131007 (p_component_type => l_component_type
131008 ,p_event_type_code => l_event_type_code
131009 ,p_line_definition_owner_code => l_line_definition_owner_code
131010 ,p_line_definition_code => l_line_definition_code
131011 ,p_accounting_line_code => l_component_code
131012 ,p_accounting_line_type_code => l_component_type_code
131013 ,p_accounting_line_appl_id => l_component_appl_id
131014 ,p_amb_context_code => l_amb_context_code
131015 ,p_entity_code => l_entity_code
131016 ,p_event_class_code => l_event_class_code);
131017 --
131018 -- set accounting class
131019 --
131020 xla_ae_lines_pkg.SetAcctClass(
131021 p_accounting_class_code => 'RESOURCE_RATE_VARIANCE'
131022 , p_ae_header_id => l_ae_header_id
131023 );
131024
131025 --
131026 -- set rounding class
131027 --
131028 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
131029 'RESOURCE_RATE_VARIANCE';
131030
131031 --
131032 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
131033 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
131034 --
131035 -- bulk performance
131036 --
131037 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
131038
131039 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
131040 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
131041
131042 -- 4955764
131043 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
131044 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
131045
131046 -- 4458381 Public Sector Enh
131047
131048 --
131049 -- set accounting attributes for the line type
131050 --
131051 l_entered_amt_idx := 3;
131052 l_accted_amt_idx := 8;
131053 l_bflow_applied_to_amt_idx := NULL; -- 5132302
131054 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
131055 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
131056 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
131057 l_rec_acct_attrs.array_char_value(2) := p_source_12;
131058 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
131059 l_rec_acct_attrs.array_num_value(3) := p_source_18;
131060 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
131061 l_rec_acct_attrs.array_char_value(4) := p_source_15;
131062 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
131063 l_rec_acct_attrs.array_date_value(5) := p_source_19;
131064 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
131065 l_rec_acct_attrs.array_num_value(6) := p_source_20;
131066 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
131067 l_rec_acct_attrs.array_char_value(7) := p_source_21;
131068 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
131069 l_rec_acct_attrs.array_num_value(8) := p_source_22;
131070
131071 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
131072 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
131073
131074 ---------------------------------------------------------------------------------------------------------------
131075 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
131076 ---------------------------------------------------------------------------------------------------------------
131077 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
131078
131079 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
131080 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
131081
131082 IF xla_accounting_cache_pkg.GetValueChar
131083 (p_source_code => 'LEDGER_CATEGORY_CODE'
131084 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
131085 AND l_bflow_method_code = 'PRIOR_ENTRY'
131086 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
131087 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
131088 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
131089 )
131090 THEN
131091 xla_ae_lines_pkg.BflowUpgEntry
131092 (p_business_method_code => l_bflow_method_code
131093 ,p_business_class_code => l_bflow_class_code
131094 ,p_balance_type => l_balance_type_code);
131095 ELSE
131096 NULL;
131097 -- No business flow processing for business flow method of NONE.
131098 END IF;
131099
131100 --
131101 -- call analytical criteria
131102 --
131103
131104 --
131105 -- call description
131106 --
131107 -- No description or it is inherited.
131108 --
131109 -- call ADRs
131110 -- Bug 4922099
131111 --
131112 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
131113 (NVL(l_actual_upg_option, 'N') = 'O') OR
131114 (NVL(l_enc_upg_option, 'N') = 'O')
131115 )
131116 THEN
131117 NULL;
131118 --
131119 --
131120
131121 l_ccid := AcctDerRule_4(
131122 p_application_id => p_application_id
131123 , p_ae_header_id => l_ae_header_id
131124 , p_source_4 => p_source_4
131125 , x_transaction_coa_id => l_adr_transaction_coa_id
131126 , x_accounting_coa_id => l_adr_accounting_coa_id
131127 , x_value_type_code => l_adr_value_type_code
131128 , p_side => 'NA'
131129 );
131130
131131 xla_ae_lines_pkg.set_ccid(
131132 p_code_combination_id => l_ccid
131133 , p_value_type_code => l_adr_value_type_code
131134 , p_transaction_coa_id => l_adr_transaction_coa_id
131135 , p_accounting_coa_id => l_adr_accounting_coa_id
131136 , p_adr_code => 'CST_DEFAULT'
131137 , p_adr_type_code => 'S'
131138 , p_component_type => l_component_type
131139 , p_component_code => l_component_code
131140 , p_component_type_code => l_component_type_code
131141 , p_component_appl_id => l_component_appl_id
131142 , p_amb_context_code => l_amb_context_code
131143 , p_side => 'NA'
131144 );
131145
131146
131147 --
131148 --
131149 END IF;
131150 --
131151 -- Bug 4922099
131152 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
131153 (NVL(l_enc_upg_option, 'N') = 'O')
131154 ) AND
131155 (l_bflow_method_code = 'PRIOR_ENTRY')
131156 )
131157 THEN
131158 IF
131159 --
131160 1 = 2
131161 --
131162 THEN
131163 xla_accounting_err_pkg.build_message
131164 (p_appli_s_name => 'XLA'
131165 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
131166 ,p_token_1 => 'LINE_NUMBER'
131167 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
131168 ,p_token_2 => 'LINE_TYPE_NAME'
131169 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
131170 l_component_type
131171 ,l_component_code
131172 ,l_component_type_code
131173 ,l_component_appl_id
131174 ,l_amb_context_code
131175 ,l_entity_code
131176 ,l_event_class_code
131177 )
131178 ,p_token_3 => 'OWNER'
131179 ,p_value_3 => xla_lookups_pkg.get_meaning(
131180 p_lookup_type => 'XLA_OWNER_TYPE'
131181 ,p_lookup_code => l_component_type_code
131182 )
131183 ,p_token_4 => 'PRODUCT_NAME'
131184 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
131185 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
131186 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
131187 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
131188 ,p_ae_header_id => NULL
131189 );
131190
131191 IF (C_LEVEL_ERROR>= g_log_level) THEN
131192 trace
131193 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
131194 ,p_level => C_LEVEL_ERROR
131195 ,p_module => l_log_module);
131196 END IF;
131197 END IF;
131198 END IF;
131199 --
131200 --
131201 ------------------------------------------------------------------------------------------------
131202 -- 4219869 Business Flow
131203 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
131204 -- Prior Entry. Currently, the following code is always generated.
131205 ------------------------------------------------------------------------------------------------
131206 XLA_AE_LINES_PKG.ValidateCurrentLine;
131207
131208 ------------------------------------------------------------------------------------
131209 -- 4219869 Business Flow
131210 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
131211 ------------------------------------------------------------------------------------
131212 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
131213
131214 ----------------------------------------------------------------------------------
131215 -- 4219869 Business Flow
131216 -- Update journal entry status -- Need to generate this within IF <condition>
131217 ----------------------------------------------------------------------------------
131218 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
131219 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
131220 ,p_balance_type_code => l_balance_type_code
131221 );
131222
131223 -------------------------------------------------------------------------------------------
131224 -- 4262811 - Generate the Accrual Reversal lines
131225 -------------------------------------------------------------------------------------------
131226 BEGIN
131227 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
131228 (g_array_event(p_event_id).array_value_num('header_index'));
131229 IF l_acc_rev_flag IS NULL THEN
131230 l_acc_rev_flag := 'N';
131231 END IF;
131232 EXCEPTION
131233 WHEN OTHERS THEN
131234 l_acc_rev_flag := 'N';
131235 END;
131236 --
131237 IF (l_acc_rev_flag = 'Y') THEN
131238
131239 -- 4645092 ------------------------------------------------------------------------------
131240 -- To allow MPA report to determine if it should generate report process
131241 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
131242 ------------------------------------------------------------------------------------------
131243
131244 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
131245 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
131246 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
131247 -- call ADRs
131248 -- Bug 4922099
131249 --
131250 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
131251 (NVL(l_actual_upg_option, 'N') = 'O') OR
131252 (NVL(l_enc_upg_option, 'N') = 'O')
131253 )
131254 THEN
131255 NULL;
131256 --
131257 --
131258
131259 l_ccid := AcctDerRule_4(
131260 p_application_id => p_application_id
131261 , p_ae_header_id => l_ae_header_id
131262 , p_source_4 => p_source_4
131263 , x_transaction_coa_id => l_adr_transaction_coa_id
131264 , x_accounting_coa_id => l_adr_accounting_coa_id
131265 , x_value_type_code => l_adr_value_type_code
131266 , p_side => 'NA'
131267 );
131268
131269 xla_ae_lines_pkg.set_ccid(
131270 p_code_combination_id => l_ccid
131271 , p_value_type_code => l_adr_value_type_code
131272 , p_transaction_coa_id => l_adr_transaction_coa_id
131273 , p_accounting_coa_id => l_adr_accounting_coa_id
131274 , p_adr_code => 'CST_DEFAULT'
131275 , p_adr_type_code => 'S'
131276 , p_component_type => l_component_type
131277 , p_component_code => l_component_code
131278 , p_component_type_code => l_component_type_code
131279 , p_component_appl_id => l_component_appl_id
131280 , p_amb_context_code => l_amb_context_code
131281 , p_side => 'NA'
131282 );
131283
131284
131285 --
131286 --
131287 END IF;
131288
131289 --
131290 -- Update the line information that should be overwritten
131291 --
131292 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
131293 p_header_num => 1);
131294 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
131295
131296 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
131297
131298 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
131299 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
131300 END IF;
131301
131302 --
131303 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
131304 --
131305 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
131306 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
131307 ELSE
131308 ---------------------------------------------------------------------------------------------------
131309 -- 4262811a Switch Sign
131310 ---------------------------------------------------------------------------------------------------
131311 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
131312 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
131313 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
131314 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
131315 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
131316 -- 5132302
131317 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
131318 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
131319
131320 END IF;
131321
131322 -- 4955764
131323 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
131324 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
131325
131326
131327 XLA_AE_LINES_PKG.ValidateCurrentLine;
131328 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
131329
131330 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
131331 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
131332 ,p_balance_type_code => l_balance_type_code);
131333
131334 END IF;
131335
131336 -----------------------------------------------------------------------------------------
131337 -- 4262811 Multiperiod Accounting
131338 -----------------------------------------------------------------------------------------
131339 -- No MPA option is assigned.
131340
131341
131342 END IF;
131343 END IF;
131344 --
131345
131346 --
131347 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
131348 trace
131349 (p_msg => 'END of AcctLineType_237'
131350 ,p_level => C_LEVEL_PROCEDURE
131351 ,p_module => l_log_module);
131352 END IF;
131353 --
131354 EXCEPTION
131355 WHEN xla_exceptions_pkg.application_exception THEN
131356 RAISE;
131357 WHEN OTHERS THEN
131358 xla_exceptions_pkg.raise_message
131359 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_237');
131360 END AcctLineType_237;
131361 --
131362
131363 ---------------------------------------
131364 --
131365 -- PRIVATE FUNCTION
131366 -- AcctLineType_238
131367 --
131368 ---------------------------------------
131369 PROCEDURE AcctLineType_238 (
131370 p_application_id IN NUMBER
131371 ,p_event_id IN NUMBER
131372 ,p_calculate_acctd_flag IN VARCHAR2
131373 ,p_calculate_g_l_flag IN VARCHAR2
131374 ,p_actual_flag IN OUT VARCHAR2
131375 ,p_balance_type_code OUT VARCHAR2
131376 ,p_gain_or_loss_ref OUT VARCHAR2
131377
131378 --Cost Management Default Account
131379 , p_source_4 IN NUMBER
131380 --Receiving Accounting Line Type
131381 , p_source_5 IN VARCHAR2
131382 --DISTRIBUTION_IDENTIFIER
131383 , p_source_11 IN NUMBER
131384 --Distribution Type
131385 , p_source_12 IN VARCHAR2
131386 , p_source_12_meaning IN VARCHAR2
131387 --Entered Currency Code
131388 , p_source_15 IN VARCHAR2
131389 --Entered Amount
131390 , p_source_18 IN NUMBER
131391 --Currency Conversion Date
131392 , p_source_19 IN DATE
131393 --Currency Conversion Rate
131394 , p_source_20 IN NUMBER
131395 --Currency Conversion Type
131396 , p_source_21 IN VARCHAR2
131397 --Accounted Amount
131398 , p_source_22 IN NUMBER
131399 )
131400 IS
131401
131402 l_component_type VARCHAR2(80);
131403 l_component_code VARCHAR2(30);
131404 l_component_type_code VARCHAR2(1);
131405 l_component_appl_id INTEGER;
131406 l_amb_context_code VARCHAR2(30);
131407 l_entity_code VARCHAR2(30);
131408 l_event_class_code VARCHAR2(30);
131409 l_ae_header_id NUMBER;
131410 l_event_type_code VARCHAR2(30);
131411 l_line_definition_code VARCHAR2(30);
131412 l_line_definition_owner_code VARCHAR2(1);
131413 --
131414 -- adr variables
131415 l_segment VARCHAR2(30);
131416 l_ccid NUMBER;
131417 l_adr_transaction_coa_id NUMBER;
131418 l_adr_accounting_coa_id NUMBER;
131419 l_adr_flexfield_segment_code VARCHAR2(30);
131420 l_adr_flex_value_set_id NUMBER;
131421 l_adr_value_type_code VARCHAR2(30);
131422 l_adr_value_combination_id NUMBER;
131423 l_adr_value_segment_code VARCHAR2(30);
131424
131425 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
131426 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
131427 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
131428 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
131429
131430 -- 4262811 Variables ------------------------------------------------------------------------------------------
131431 l_entered_amt_idx NUMBER;
131432 l_accted_amt_idx NUMBER;
131433 l_acc_rev_flag VARCHAR2(1);
131434 l_accrual_line_num NUMBER;
131435 l_tmp_amt NUMBER;
131436 l_acc_rev_natural_side_code VARCHAR2(1);
131437
131438 l_num_entries NUMBER;
131439 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
131440 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
131441 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
131442 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
131443 l_recog_line_1 NUMBER;
131444 l_recog_line_2 NUMBER;
131445
131446 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
131447 l_bflow_applied_to_amt NUMBER; -- 5132302
131448 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
131449
131450 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
131451
131452 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
131453 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
131454
131455 ---------------------------------------------------------------------------------------------------------------
131456
131457
131458 --
131459 -- bulk performance
131460 --
131461 l_balance_type_code VARCHAR2(1);
131462 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
131463 l_log_module VARCHAR2(240);
131464
131465 --
131466 -- Upgrade strategy
131467 --
131468 l_actual_upg_option VARCHAR2(1);
131469 l_enc_upg_option VARCHAR2(1);
131470
131471 --
131472 BEGIN
131473 --
131474 IF g_log_enabled THEN
131475 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_238';
131476 END IF;
131477 --
131478 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
131479
131480 trace
131481 (p_msg => 'BEGIN of AcctLineType_238'
131482 ,p_level => C_LEVEL_PROCEDURE
131483 ,p_module => l_log_module);
131484
131485 END IF;
131486 --
131487 l_component_type := 'AMB_JLT';
131488 l_component_code := 'RETROACTIVE_PRICE_ADJ';
131489 l_component_type_code := 'S';
131490 l_component_appl_id := 707;
131491 l_amb_context_code := 'DEFAULT';
131492 l_entity_code := 'RCV_ACCOUNTING_EVENTS';
131493 l_event_class_code := 'RETR_PRICE_ADJ_RCV';
131494 l_event_type_code := 'RETR_PRICE_ADJ_RCV_ALL';
131495 l_line_definition_owner_code := 'S';
131496 l_line_definition_code := 'RETR_PRICE_ADJ_RCV';
131497 --
131498 l_balance_type_code := 'A';
131499 l_segment := NULL;
131500 l_ccid := NULL;
131501 l_adr_transaction_coa_id := NULL;
131502 l_adr_accounting_coa_id := NULL;
131503 l_adr_flexfield_segment_code := NULL;
131504 l_adr_flex_value_set_id := NULL;
131505 l_adr_value_type_code := NULL;
131506 l_adr_value_combination_id := NULL;
131507 l_adr_value_segment_code := NULL;
131508
131509 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
131510 l_bflow_class_code := ''; -- 4219869 Business Flow
131511 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
131512 l_budgetary_control_flag := 'N';
131513
131514 l_bflow_applied_to_amt_idx := NULL; -- 5132302
131515 l_bflow_applied_to_amt := NULL; -- 5132302
131516 l_entered_amt_idx := NULL; -- 4262811
131517 l_accted_amt_idx := NULL; -- 4262811
131518 l_acc_rev_flag := NULL; -- 4262811
131519 l_accrual_line_num := NULL; -- 4262811
131520 l_tmp_amt := NULL; -- 4262811
131521 --
131522
131523 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
131524 l_balance_type_code <> 'B' THEN
131525 IF NVL(p_source_5,'
131526 ') = 'Retroprice Adjustment'
131527 THEN
131528
131529 --
131530 XLA_AE_LINES_PKG.SetNewLine;
131531
131532 p_balance_type_code := l_balance_type_code;
131533 -- set the flag so later we will know whether the gain loss line needs to be created
131534
131535 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
131536 p_actual_flag :='A';
131537 END IF;
131538
131539 --
131540 -- bulk performance
131541 --
131542 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
131543 p_header_num => 0); -- 4262811
131544 --
131545 -- set accounting line options
131546 --
131547 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
131548 p_natural_side_code => 'D'
131549 , p_gain_or_loss_flag => 'N'
131550 , p_gl_transfer_mode_code => 'S'
131551 , p_acct_entry_type_code => 'A'
131552 , p_switch_side_flag => 'Y'
131553 , p_merge_duplicate_code => 'N'
131554 );
131555 --
131556 l_acc_rev_natural_side_code := 'C'; -- 4262811
131557 --
131558 --
131559 -- set accounting line type info
131560 --
131561 xla_ae_lines_pkg.SetAcctLineType
131562 (p_component_type => l_component_type
131563 ,p_event_type_code => l_event_type_code
131564 ,p_line_definition_owner_code => l_line_definition_owner_code
131565 ,p_line_definition_code => l_line_definition_code
131566 ,p_accounting_line_code => l_component_code
131567 ,p_accounting_line_type_code => l_component_type_code
131568 ,p_accounting_line_appl_id => l_component_appl_id
131569 ,p_amb_context_code => l_amb_context_code
131570 ,p_entity_code => l_entity_code
131571 ,p_event_class_code => l_event_class_code);
131572 --
131573 -- set accounting class
131574 --
131575 xla_ae_lines_pkg.SetAcctClass(
131576 p_accounting_class_code => 'RETROACTIVE_PRICE_ADJUSTMENT'
131577 , p_ae_header_id => l_ae_header_id
131578 );
131579
131580 --
131581 -- set rounding class
131582 --
131583 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
131584 'RETROACTIVE_PRICE_ADJUSTMENT';
131585
131586 --
131587 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
131588 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
131589 --
131590 -- bulk performance
131591 --
131592 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
131593
131594 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
131595 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
131596
131597 -- 4955764
131598 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
131599 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
131600
131601 -- 4458381 Public Sector Enh
131602
131603 --
131604 -- set accounting attributes for the line type
131605 --
131606 l_entered_amt_idx := 3;
131607 l_accted_amt_idx := 8;
131608 l_bflow_applied_to_amt_idx := NULL; -- 5132302
131609 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
131610 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
131611 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
131612 l_rec_acct_attrs.array_char_value(2) := p_source_12;
131613 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
131614 l_rec_acct_attrs.array_num_value(3) := p_source_18;
131615 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
131616 l_rec_acct_attrs.array_char_value(4) := p_source_15;
131617 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
131618 l_rec_acct_attrs.array_date_value(5) := p_source_19;
131619 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
131620 l_rec_acct_attrs.array_num_value(6) := p_source_20;
131621 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
131622 l_rec_acct_attrs.array_char_value(7) := p_source_21;
131623 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
131624 l_rec_acct_attrs.array_num_value(8) := p_source_22;
131625
131626 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
131627 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
131628
131629 ---------------------------------------------------------------------------------------------------------------
131630 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
131631 ---------------------------------------------------------------------------------------------------------------
131632 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
131633
131634 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
131635 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
131636
131637 IF xla_accounting_cache_pkg.GetValueChar
131638 (p_source_code => 'LEDGER_CATEGORY_CODE'
131639 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
131640 AND l_bflow_method_code = 'PRIOR_ENTRY'
131641 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
131642 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
131643 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
131644 )
131645 THEN
131646 xla_ae_lines_pkg.BflowUpgEntry
131647 (p_business_method_code => l_bflow_method_code
131648 ,p_business_class_code => l_bflow_class_code
131649 ,p_balance_type => l_balance_type_code);
131650 ELSE
131651 NULL;
131652 -- No business flow processing for business flow method of NONE.
131653 END IF;
131654
131655 --
131656 -- call analytical criteria
131657 --
131658
131659 --
131660 -- call description
131661 --
131662 -- No description or it is inherited.
131663 --
131664 -- call ADRs
131665 -- Bug 4922099
131666 --
131667 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
131668 (NVL(l_actual_upg_option, 'N') = 'O') OR
131669 (NVL(l_enc_upg_option, 'N') = 'O')
131670 )
131671 THEN
131672 NULL;
131673 --
131674 --
131675
131676 l_ccid := AcctDerRule_4(
131677 p_application_id => p_application_id
131678 , p_ae_header_id => l_ae_header_id
131679 , p_source_4 => p_source_4
131680 , x_transaction_coa_id => l_adr_transaction_coa_id
131681 , x_accounting_coa_id => l_adr_accounting_coa_id
131682 , x_value_type_code => l_adr_value_type_code
131683 , p_side => 'NA'
131684 );
131685
131686 xla_ae_lines_pkg.set_ccid(
131687 p_code_combination_id => l_ccid
131688 , p_value_type_code => l_adr_value_type_code
131689 , p_transaction_coa_id => l_adr_transaction_coa_id
131690 , p_accounting_coa_id => l_adr_accounting_coa_id
131691 , p_adr_code => 'CST_DEFAULT'
131692 , p_adr_type_code => 'S'
131693 , p_component_type => l_component_type
131694 , p_component_code => l_component_code
131695 , p_component_type_code => l_component_type_code
131696 , p_component_appl_id => l_component_appl_id
131697 , p_amb_context_code => l_amb_context_code
131698 , p_side => 'NA'
131699 );
131700
131701
131702 --
131703 --
131704 END IF;
131705 --
131706 -- Bug 4922099
131707 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
131708 (NVL(l_enc_upg_option, 'N') = 'O')
131709 ) AND
131710 (l_bflow_method_code = 'PRIOR_ENTRY')
131711 )
131712 THEN
131713 IF
131714 --
131715 1 = 2
131716 --
131717 THEN
131718 xla_accounting_err_pkg.build_message
131719 (p_appli_s_name => 'XLA'
131720 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
131721 ,p_token_1 => 'LINE_NUMBER'
131722 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
131723 ,p_token_2 => 'LINE_TYPE_NAME'
131724 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
131725 l_component_type
131726 ,l_component_code
131727 ,l_component_type_code
131728 ,l_component_appl_id
131729 ,l_amb_context_code
131730 ,l_entity_code
131731 ,l_event_class_code
131732 )
131733 ,p_token_3 => 'OWNER'
131734 ,p_value_3 => xla_lookups_pkg.get_meaning(
131735 p_lookup_type => 'XLA_OWNER_TYPE'
131736 ,p_lookup_code => l_component_type_code
131737 )
131738 ,p_token_4 => 'PRODUCT_NAME'
131739 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
131740 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
131741 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
131742 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
131743 ,p_ae_header_id => NULL
131744 );
131745
131746 IF (C_LEVEL_ERROR>= g_log_level) THEN
131747 trace
131748 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
131749 ,p_level => C_LEVEL_ERROR
131750 ,p_module => l_log_module);
131751 END IF;
131752 END IF;
131753 END IF;
131754 --
131755 --
131756 ------------------------------------------------------------------------------------------------
131757 -- 4219869 Business Flow
131758 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
131759 -- Prior Entry. Currently, the following code is always generated.
131760 ------------------------------------------------------------------------------------------------
131761 XLA_AE_LINES_PKG.ValidateCurrentLine;
131762
131763 ------------------------------------------------------------------------------------
131764 -- 4219869 Business Flow
131765 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
131766 ------------------------------------------------------------------------------------
131767 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
131768
131769 ----------------------------------------------------------------------------------
131770 -- 4219869 Business Flow
131771 -- Update journal entry status -- Need to generate this within IF <condition>
131772 ----------------------------------------------------------------------------------
131773 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
131774 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
131775 ,p_balance_type_code => l_balance_type_code
131776 );
131777
131778 -------------------------------------------------------------------------------------------
131779 -- 4262811 - Generate the Accrual Reversal lines
131780 -------------------------------------------------------------------------------------------
131781 BEGIN
131782 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
131783 (g_array_event(p_event_id).array_value_num('header_index'));
131784 IF l_acc_rev_flag IS NULL THEN
131785 l_acc_rev_flag := 'N';
131786 END IF;
131787 EXCEPTION
131788 WHEN OTHERS THEN
131789 l_acc_rev_flag := 'N';
131790 END;
131791 --
131792 IF (l_acc_rev_flag = 'Y') THEN
131793
131794 -- 4645092 ------------------------------------------------------------------------------
131795 -- To allow MPA report to determine if it should generate report process
131796 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
131797 ------------------------------------------------------------------------------------------
131798
131799 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
131800 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
131801 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
131802 -- call ADRs
131803 -- Bug 4922099
131804 --
131805 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
131806 (NVL(l_actual_upg_option, 'N') = 'O') OR
131807 (NVL(l_enc_upg_option, 'N') = 'O')
131808 )
131809 THEN
131810 NULL;
131811 --
131812 --
131813
131814 l_ccid := AcctDerRule_4(
131815 p_application_id => p_application_id
131816 , p_ae_header_id => l_ae_header_id
131817 , p_source_4 => p_source_4
131818 , x_transaction_coa_id => l_adr_transaction_coa_id
131819 , x_accounting_coa_id => l_adr_accounting_coa_id
131820 , x_value_type_code => l_adr_value_type_code
131821 , p_side => 'NA'
131822 );
131823
131824 xla_ae_lines_pkg.set_ccid(
131825 p_code_combination_id => l_ccid
131826 , p_value_type_code => l_adr_value_type_code
131827 , p_transaction_coa_id => l_adr_transaction_coa_id
131828 , p_accounting_coa_id => l_adr_accounting_coa_id
131829 , p_adr_code => 'CST_DEFAULT'
131830 , p_adr_type_code => 'S'
131831 , p_component_type => l_component_type
131832 , p_component_code => l_component_code
131833 , p_component_type_code => l_component_type_code
131834 , p_component_appl_id => l_component_appl_id
131835 , p_amb_context_code => l_amb_context_code
131836 , p_side => 'NA'
131837 );
131838
131839
131840 --
131841 --
131842 END IF;
131843
131844 --
131845 -- Update the line information that should be overwritten
131846 --
131847 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
131848 p_header_num => 1);
131849 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
131850
131851 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
131852
131853 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
131854 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
131855 END IF;
131856
131857 --
131858 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
131859 --
131860 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
131861 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
131862 ELSE
131863 ---------------------------------------------------------------------------------------------------
131864 -- 4262811a Switch Sign
131865 ---------------------------------------------------------------------------------------------------
131866 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
131867 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
131868 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
131869 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
131870 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
131871 -- 5132302
131872 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
131873 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
131874
131875 END IF;
131876
131877 -- 4955764
131878 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
131879 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
131880
131881
131882 XLA_AE_LINES_PKG.ValidateCurrentLine;
131883 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
131884
131885 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
131886 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
131887 ,p_balance_type_code => l_balance_type_code);
131888
131889 END IF;
131890
131891 -----------------------------------------------------------------------------------------
131892 -- 4262811 Multiperiod Accounting
131893 -----------------------------------------------------------------------------------------
131894 -- No MPA option is assigned.
131895
131896
131897 END IF;
131898 END IF;
131899 --
131900
131901 --
131902 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
131903 trace
131904 (p_msg => 'END of AcctLineType_238'
131905 ,p_level => C_LEVEL_PROCEDURE
131906 ,p_module => l_log_module);
131907 END IF;
131908 --
131909 EXCEPTION
131910 WHEN xla_exceptions_pkg.application_exception THEN
131911 RAISE;
131912 WHEN OTHERS THEN
131913 xla_exceptions_pkg.raise_message
131914 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_238');
131915 END AcctLineType_238;
131916 --
131917
131918 ---------------------------------------
131919 --
131920 -- PRIVATE FUNCTION
131921 -- AcctLineType_239
131922 --
131923 ---------------------------------------
131924 PROCEDURE AcctLineType_239 (
131925 p_application_id IN NUMBER
131926 ,p_event_id IN NUMBER
131927 ,p_calculate_acctd_flag IN VARCHAR2
131928 ,p_calculate_g_l_flag IN VARCHAR2
131929 ,p_actual_flag IN OUT VARCHAR2
131930 ,p_balance_type_code OUT VARCHAR2
131931 ,p_gain_or_loss_ref OUT VARCHAR2
131932
131933 --Cost Management Default Account
131934 , p_source_4 IN NUMBER
131935 --Receiving Accounting Line Type
131936 , p_source_5 IN VARCHAR2
131937 --DISTRIBUTION_IDENTIFIER
131938 , p_source_11 IN NUMBER
131939 --Distribution Type
131940 , p_source_12 IN VARCHAR2
131941 , p_source_12_meaning IN VARCHAR2
131942 --Entered Currency Code
131943 , p_source_15 IN VARCHAR2
131944 --Entered Amount
131945 , p_source_18 IN NUMBER
131946 --Currency Conversion Date
131947 , p_source_19 IN DATE
131948 --Currency Conversion Rate
131949 , p_source_20 IN NUMBER
131950 --Accounted Amount
131951 , p_source_22 IN NUMBER
131952 )
131953 IS
131954
131955 l_component_type VARCHAR2(80);
131956 l_component_code VARCHAR2(30);
131957 l_component_type_code VARCHAR2(1);
131958 l_component_appl_id INTEGER;
131959 l_amb_context_code VARCHAR2(30);
131960 l_entity_code VARCHAR2(30);
131961 l_event_class_code VARCHAR2(30);
131962 l_ae_header_id NUMBER;
131963 l_event_type_code VARCHAR2(30);
131964 l_line_definition_code VARCHAR2(30);
131965 l_line_definition_owner_code VARCHAR2(1);
131966 --
131967 -- adr variables
131968 l_segment VARCHAR2(30);
131969 l_ccid NUMBER;
131970 l_adr_transaction_coa_id NUMBER;
131971 l_adr_accounting_coa_id NUMBER;
131972 l_adr_flexfield_segment_code VARCHAR2(30);
131973 l_adr_flex_value_set_id NUMBER;
131974 l_adr_value_type_code VARCHAR2(30);
131975 l_adr_value_combination_id NUMBER;
131976 l_adr_value_segment_code VARCHAR2(30);
131977
131978 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
131979 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
131980 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
131981 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
131982
131983 -- 4262811 Variables ------------------------------------------------------------------------------------------
131984 l_entered_amt_idx NUMBER;
131985 l_accted_amt_idx NUMBER;
131986 l_acc_rev_flag VARCHAR2(1);
131987 l_accrual_line_num NUMBER;
131988 l_tmp_amt NUMBER;
131989 l_acc_rev_natural_side_code VARCHAR2(1);
131990
131991 l_num_entries NUMBER;
131992 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
131993 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
131994 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
131995 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
131996 l_recog_line_1 NUMBER;
131997 l_recog_line_2 NUMBER;
131998
131999 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
132000 l_bflow_applied_to_amt NUMBER; -- 5132302
132001 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
132002
132003 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
132004
132005 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
132006 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
132007
132008 ---------------------------------------------------------------------------------------------------------------
132009
132010
132011 --
132012 -- bulk performance
132013 --
132014 l_balance_type_code VARCHAR2(1);
132015 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
132016 l_log_module VARCHAR2(240);
132017
132018 --
132019 -- Upgrade strategy
132020 --
132021 l_actual_upg_option VARCHAR2(1);
132022 l_enc_upg_option VARCHAR2(1);
132023
132024 --
132025 BEGIN
132026 --
132027 IF g_log_enabled THEN
132028 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_239';
132029 END IF;
132030 --
132031 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
132032
132033 trace
132034 (p_msg => 'BEGIN of AcctLineType_239'
132035 ,p_level => C_LEVEL_PROCEDURE
132036 ,p_module => l_log_module);
132037
132038 END IF;
132039 --
132040 l_component_type := 'AMB_JLT';
132041 l_component_code := 'RETROACTIVE_PRICE_ADJ';
132042 l_component_type_code := 'S';
132043 l_component_appl_id := 707;
132044 l_amb_context_code := 'DEFAULT';
132045 l_entity_code := 'RCV_ACCOUNTING_EVENTS';
132046 l_event_class_code := 'RETR_PRICE_ADJ_DEL';
132047 l_event_type_code := 'RETR_PRICE_ADJ_DEL_ALL';
132048 l_line_definition_owner_code := 'S';
132049 l_line_definition_code := 'RETR_PRICE_ADJ_DEL';
132050 --
132051 l_balance_type_code := 'A';
132052 l_segment := NULL;
132053 l_ccid := NULL;
132054 l_adr_transaction_coa_id := NULL;
132055 l_adr_accounting_coa_id := NULL;
132056 l_adr_flexfield_segment_code := NULL;
132057 l_adr_flex_value_set_id := NULL;
132058 l_adr_value_type_code := NULL;
132059 l_adr_value_combination_id := NULL;
132060 l_adr_value_segment_code := NULL;
132061
132062 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
132063 l_bflow_class_code := ''; -- 4219869 Business Flow
132064 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
132065 l_budgetary_control_flag := 'N';
132066
132067 l_bflow_applied_to_amt_idx := NULL; -- 5132302
132068 l_bflow_applied_to_amt := NULL; -- 5132302
132069 l_entered_amt_idx := NULL; -- 4262811
132070 l_accted_amt_idx := NULL; -- 4262811
132071 l_acc_rev_flag := NULL; -- 4262811
132072 l_accrual_line_num := NULL; -- 4262811
132073 l_tmp_amt := NULL; -- 4262811
132074 --
132075
132076 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
132077 l_balance_type_code <> 'B' THEN
132078 IF NVL(p_source_5,'
132079 ') = 'Retroprice Adjustment'
132080 THEN
132081
132082 --
132083 XLA_AE_LINES_PKG.SetNewLine;
132084
132085 p_balance_type_code := l_balance_type_code;
132086 -- set the flag so later we will know whether the gain loss line needs to be created
132087
132088 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
132089 p_actual_flag :='A';
132090 END IF;
132091
132092 --
132093 -- bulk performance
132094 --
132095 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
132096 p_header_num => 0); -- 4262811
132097 --
132098 -- set accounting line options
132099 --
132100 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
132101 p_natural_side_code => 'D'
132102 , p_gain_or_loss_flag => 'N'
132103 , p_gl_transfer_mode_code => 'S'
132104 , p_acct_entry_type_code => 'A'
132105 , p_switch_side_flag => 'Y'
132106 , p_merge_duplicate_code => 'N'
132107 );
132108 --
132109 l_acc_rev_natural_side_code := 'C'; -- 4262811
132110 --
132111 --
132112 -- set accounting line type info
132113 --
132114 xla_ae_lines_pkg.SetAcctLineType
132115 (p_component_type => l_component_type
132116 ,p_event_type_code => l_event_type_code
132117 ,p_line_definition_owner_code => l_line_definition_owner_code
132118 ,p_line_definition_code => l_line_definition_code
132119 ,p_accounting_line_code => l_component_code
132120 ,p_accounting_line_type_code => l_component_type_code
132121 ,p_accounting_line_appl_id => l_component_appl_id
132122 ,p_amb_context_code => l_amb_context_code
132123 ,p_entity_code => l_entity_code
132124 ,p_event_class_code => l_event_class_code);
132125 --
132126 -- set accounting class
132127 --
132128 xla_ae_lines_pkg.SetAcctClass(
132129 p_accounting_class_code => 'RETROACTIVE_PRICE_ADJUSTMENT'
132130 , p_ae_header_id => l_ae_header_id
132131 );
132132
132133 --
132134 -- set rounding class
132135 --
132136 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
132137 'RETROACTIVE_PRICE_ADJUSTMENT';
132138
132139 --
132140 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
132141 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
132142 --
132143 -- bulk performance
132144 --
132145 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
132146
132147 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
132148 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
132149
132150 -- 4955764
132151 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
132152 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
132153
132154 -- 4458381 Public Sector Enh
132155
132156 --
132157 -- set accounting attributes for the line type
132158 --
132159 l_entered_amt_idx := 3;
132160 l_accted_amt_idx := 8;
132161 l_bflow_applied_to_amt_idx := NULL; -- 5132302
132162 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
132163 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
132164 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
132165 l_rec_acct_attrs.array_char_value(2) := p_source_12;
132166 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
132167 l_rec_acct_attrs.array_num_value(3) := p_source_18;
132168 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
132169 l_rec_acct_attrs.array_char_value(4) := p_source_15;
132170 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
132171 l_rec_acct_attrs.array_date_value(5) := p_source_19;
132172 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
132173 l_rec_acct_attrs.array_num_value(6) := p_source_20;
132174 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
132175 l_rec_acct_attrs.array_num_value(7) := to_char(p_source_20);
132176 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
132177 l_rec_acct_attrs.array_num_value(8) := p_source_22;
132178
132179 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
132180 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
132181
132182 ---------------------------------------------------------------------------------------------------------------
132183 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
132184 ---------------------------------------------------------------------------------------------------------------
132185 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
132186
132187 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
132188 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
132189
132190 IF xla_accounting_cache_pkg.GetValueChar
132191 (p_source_code => 'LEDGER_CATEGORY_CODE'
132192 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
132193 AND l_bflow_method_code = 'PRIOR_ENTRY'
132194 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
132195 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
132196 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
132197 )
132198 THEN
132199 xla_ae_lines_pkg.BflowUpgEntry
132200 (p_business_method_code => l_bflow_method_code
132201 ,p_business_class_code => l_bflow_class_code
132202 ,p_balance_type => l_balance_type_code);
132203 ELSE
132204 NULL;
132205 -- No business flow processing for business flow method of NONE.
132206 END IF;
132207
132208 --
132209 -- call analytical criteria
132210 --
132211
132212 --
132213 -- call description
132214 --
132215 -- No description or it is inherited.
132216 --
132217 -- call ADRs
132218 -- Bug 4922099
132219 --
132220 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
132221 (NVL(l_actual_upg_option, 'N') = 'O') OR
132222 (NVL(l_enc_upg_option, 'N') = 'O')
132223 )
132224 THEN
132225 NULL;
132226 --
132227 --
132228
132229 l_ccid := AcctDerRule_4(
132230 p_application_id => p_application_id
132231 , p_ae_header_id => l_ae_header_id
132232 , p_source_4 => p_source_4
132233 , x_transaction_coa_id => l_adr_transaction_coa_id
132234 , x_accounting_coa_id => l_adr_accounting_coa_id
132235 , x_value_type_code => l_adr_value_type_code
132236 , p_side => 'NA'
132237 );
132238
132239 xla_ae_lines_pkg.set_ccid(
132240 p_code_combination_id => l_ccid
132241 , p_value_type_code => l_adr_value_type_code
132242 , p_transaction_coa_id => l_adr_transaction_coa_id
132243 , p_accounting_coa_id => l_adr_accounting_coa_id
132244 , p_adr_code => 'CST_DEFAULT'
132245 , p_adr_type_code => 'S'
132246 , p_component_type => l_component_type
132247 , p_component_code => l_component_code
132248 , p_component_type_code => l_component_type_code
132249 , p_component_appl_id => l_component_appl_id
132250 , p_amb_context_code => l_amb_context_code
132251 , p_side => 'NA'
132252 );
132253
132254
132255 --
132256 --
132257 END IF;
132258 --
132259 -- Bug 4922099
132260 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
132261 (NVL(l_enc_upg_option, 'N') = 'O')
132262 ) AND
132263 (l_bflow_method_code = 'PRIOR_ENTRY')
132264 )
132265 THEN
132266 IF
132267 --
132268 1 = 2
132269 --
132270 THEN
132271 xla_accounting_err_pkg.build_message
132272 (p_appli_s_name => 'XLA'
132273 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
132274 ,p_token_1 => 'LINE_NUMBER'
132275 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
132276 ,p_token_2 => 'LINE_TYPE_NAME'
132277 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
132278 l_component_type
132279 ,l_component_code
132280 ,l_component_type_code
132281 ,l_component_appl_id
132282 ,l_amb_context_code
132283 ,l_entity_code
132284 ,l_event_class_code
132285 )
132286 ,p_token_3 => 'OWNER'
132287 ,p_value_3 => xla_lookups_pkg.get_meaning(
132288 p_lookup_type => 'XLA_OWNER_TYPE'
132289 ,p_lookup_code => l_component_type_code
132290 )
132291 ,p_token_4 => 'PRODUCT_NAME'
132292 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
132293 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
132294 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
132295 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
132296 ,p_ae_header_id => NULL
132297 );
132298
132299 IF (C_LEVEL_ERROR>= g_log_level) THEN
132300 trace
132301 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
132302 ,p_level => C_LEVEL_ERROR
132303 ,p_module => l_log_module);
132304 END IF;
132305 END IF;
132306 END IF;
132307 --
132308 --
132309 ------------------------------------------------------------------------------------------------
132310 -- 4219869 Business Flow
132311 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
132312 -- Prior Entry. Currently, the following code is always generated.
132313 ------------------------------------------------------------------------------------------------
132314 XLA_AE_LINES_PKG.ValidateCurrentLine;
132315
132316 ------------------------------------------------------------------------------------
132317 -- 4219869 Business Flow
132318 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
132319 ------------------------------------------------------------------------------------
132320 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
132321
132322 ----------------------------------------------------------------------------------
132323 -- 4219869 Business Flow
132324 -- Update journal entry status -- Need to generate this within IF <condition>
132325 ----------------------------------------------------------------------------------
132326 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
132327 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
132328 ,p_balance_type_code => l_balance_type_code
132329 );
132330
132331 -------------------------------------------------------------------------------------------
132332 -- 4262811 - Generate the Accrual Reversal lines
132333 -------------------------------------------------------------------------------------------
132334 BEGIN
132335 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
132336 (g_array_event(p_event_id).array_value_num('header_index'));
132337 IF l_acc_rev_flag IS NULL THEN
132338 l_acc_rev_flag := 'N';
132339 END IF;
132340 EXCEPTION
132341 WHEN OTHERS THEN
132342 l_acc_rev_flag := 'N';
132343 END;
132344 --
132345 IF (l_acc_rev_flag = 'Y') THEN
132346
132347 -- 4645092 ------------------------------------------------------------------------------
132348 -- To allow MPA report to determine if it should generate report process
132349 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
132350 ------------------------------------------------------------------------------------------
132351
132352 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
132353 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
132354 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
132355 -- call ADRs
132356 -- Bug 4922099
132357 --
132358 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
132359 (NVL(l_actual_upg_option, 'N') = 'O') OR
132360 (NVL(l_enc_upg_option, 'N') = 'O')
132361 )
132362 THEN
132363 NULL;
132364 --
132365 --
132366
132367 l_ccid := AcctDerRule_4(
132368 p_application_id => p_application_id
132369 , p_ae_header_id => l_ae_header_id
132370 , p_source_4 => p_source_4
132371 , x_transaction_coa_id => l_adr_transaction_coa_id
132372 , x_accounting_coa_id => l_adr_accounting_coa_id
132373 , x_value_type_code => l_adr_value_type_code
132374 , p_side => 'NA'
132375 );
132376
132377 xla_ae_lines_pkg.set_ccid(
132378 p_code_combination_id => l_ccid
132379 , p_value_type_code => l_adr_value_type_code
132380 , p_transaction_coa_id => l_adr_transaction_coa_id
132381 , p_accounting_coa_id => l_adr_accounting_coa_id
132382 , p_adr_code => 'CST_DEFAULT'
132383 , p_adr_type_code => 'S'
132384 , p_component_type => l_component_type
132385 , p_component_code => l_component_code
132386 , p_component_type_code => l_component_type_code
132387 , p_component_appl_id => l_component_appl_id
132388 , p_amb_context_code => l_amb_context_code
132389 , p_side => 'NA'
132390 );
132391
132392
132393 --
132394 --
132395 END IF;
132396
132397 --
132398 -- Update the line information that should be overwritten
132399 --
132400 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
132401 p_header_num => 1);
132402 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
132403
132404 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
132405
132406 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
132407 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
132408 END IF;
132409
132410 --
132411 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
132412 --
132413 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
132414 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
132415 ELSE
132416 ---------------------------------------------------------------------------------------------------
132417 -- 4262811a Switch Sign
132418 ---------------------------------------------------------------------------------------------------
132419 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
132420 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
132421 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
132422 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
132423 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
132424 -- 5132302
132425 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
132426 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
132427
132428 END IF;
132429
132430 -- 4955764
132431 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
132432 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
132433
132434
132435 XLA_AE_LINES_PKG.ValidateCurrentLine;
132436 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
132437
132438 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
132439 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
132440 ,p_balance_type_code => l_balance_type_code);
132441
132442 END IF;
132443
132444 -----------------------------------------------------------------------------------------
132445 -- 4262811 Multiperiod Accounting
132446 -----------------------------------------------------------------------------------------
132447 -- No MPA option is assigned.
132448
132449
132450 END IF;
132451 END IF;
132452 --
132453
132454 --
132455 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
132456 trace
132457 (p_msg => 'END of AcctLineType_239'
132458 ,p_level => C_LEVEL_PROCEDURE
132459 ,p_module => l_log_module);
132460 END IF;
132461 --
132462 EXCEPTION
132463 WHEN xla_exceptions_pkg.application_exception THEN
132464 RAISE;
132465 WHEN OTHERS THEN
132466 xla_exceptions_pkg.raise_message
132467 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_239');
132468 END AcctLineType_239;
132469 --
132470
132471 ---------------------------------------
132472 --
132473 -- PRIVATE FUNCTION
132474 -- AcctLineType_240
132475 --
132476 ---------------------------------------
132477 PROCEDURE AcctLineType_240 (
132478 p_application_id IN NUMBER
132479 ,p_event_id IN NUMBER
132480 ,p_calculate_acctd_flag IN VARCHAR2
132481 ,p_calculate_g_l_flag IN VARCHAR2
132482 ,p_actual_flag IN OUT VARCHAR2
132483 ,p_balance_type_code OUT VARCHAR2
132484 ,p_gain_or_loss_ref OUT VARCHAR2
132485
132486 --Cost Management Default Account
132487 , p_source_4 IN NUMBER
132488 --Applied to Application ID
132489 , p_source_6 IN NUMBER
132490 --Applied to Distribution Link Type
132491 , p_source_7 IN VARCHAR2
132492 --Applied to Entity Code
132493 , p_source_8 IN VARCHAR2
132494 --Applied To Purchase Document Identifier
132495 , p_source_10 IN NUMBER
132496 --DISTRIBUTION_IDENTIFIER
132497 , p_source_11 IN NUMBER
132498 --Distribution Type
132499 , p_source_12 IN VARCHAR2
132500 , p_source_12_meaning IN VARCHAR2
132501 --PO Budget Account
132502 , p_source_13 IN NUMBER
132503 --Encumbrance Reversal Amount Entered
132504 , p_source_14 IN NUMBER
132505 --Entered Currency Code
132506 , p_source_15 IN VARCHAR2
132507 --Transaction Encumbrance Reversal Amount
132508 , p_source_16 IN NUMBER
132509 --Entered Amount
132510 , p_source_18 IN NUMBER
132511 --Currency Conversion Date
132512 , p_source_19 IN DATE
132513 --Currency Conversion Rate
132514 , p_source_20 IN NUMBER
132515 --Currency Conversion Type
132516 , p_source_21 IN VARCHAR2
132517 --Accounted Amount
132518 , p_source_22 IN NUMBER
132519 --Purchasing Encumbrance Type Identifier
132520 , p_source_23 IN NUMBER
132521 --Accounting Line Type
132522 , p_source_24 IN NUMBER
132523 --Costing Encumbrance Upgrade Option
132524 , p_source_27 IN VARCHAR2
132525 --TXN_PO_DISTRIBUTION_ID
132526 , p_source_28 IN NUMBER
132527 )
132528 IS
132529
132530 l_component_type VARCHAR2(80);
132531 l_component_code VARCHAR2(30);
132532 l_component_type_code VARCHAR2(1);
132533 l_component_appl_id INTEGER;
132534 l_amb_context_code VARCHAR2(30);
132535 l_entity_code VARCHAR2(30);
132536 l_event_class_code VARCHAR2(30);
132537 l_ae_header_id NUMBER;
132538 l_event_type_code VARCHAR2(30);
132539 l_line_definition_code VARCHAR2(30);
132540 l_line_definition_owner_code VARCHAR2(1);
132541 --
132542 -- adr variables
132543 l_segment VARCHAR2(30);
132544 l_ccid NUMBER;
132545 l_adr_transaction_coa_id NUMBER;
132546 l_adr_accounting_coa_id NUMBER;
132547 l_adr_flexfield_segment_code VARCHAR2(30);
132548 l_adr_flex_value_set_id NUMBER;
132549 l_adr_value_type_code VARCHAR2(30);
132550 l_adr_value_combination_id NUMBER;
132551 l_adr_value_segment_code VARCHAR2(30);
132552
132553 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
132554 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
132555 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
132556 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
132557
132558 -- 4262811 Variables ------------------------------------------------------------------------------------------
132559 l_entered_amt_idx NUMBER;
132560 l_accted_amt_idx NUMBER;
132561 l_acc_rev_flag VARCHAR2(1);
132562 l_accrual_line_num NUMBER;
132563 l_tmp_amt NUMBER;
132564 l_acc_rev_natural_side_code VARCHAR2(1);
132565
132566 l_num_entries NUMBER;
132567 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
132568 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
132569 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
132570 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
132571 l_recog_line_1 NUMBER;
132572 l_recog_line_2 NUMBER;
132573
132574 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
132575 l_bflow_applied_to_amt NUMBER; -- 5132302
132576 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
132577
132578 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
132579
132580 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
132581 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
132582
132583 ---------------------------------------------------------------------------------------------------------------
132584
132585
132586 --
132587 -- bulk performance
132588 --
132589 l_balance_type_code VARCHAR2(1);
132590 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
132591 l_log_module VARCHAR2(240);
132592
132593 --
132594 -- Upgrade strategy
132595 --
132596 l_actual_upg_option VARCHAR2(1);
132597 l_enc_upg_option VARCHAR2(1);
132598
132599 --
132600 BEGIN
132601 --
132602 IF g_log_enabled THEN
132603 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_240';
132604 END IF;
132605 --
132606 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
132607
132608 trace
132609 (p_msg => 'BEGIN of AcctLineType_240'
132610 ,p_level => C_LEVEL_PROCEDURE
132611 ,p_module => l_log_module);
132612
132613 END IF;
132614 --
132615 l_component_type := 'AMB_JLT';
132616 l_component_code := 'SHIKYU_VARIANCE';
132617 l_component_type_code := 'S';
132618 l_component_appl_id := 707;
132619 l_amb_context_code := 'DEFAULT';
132620 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
132621 l_event_class_code := 'PURCHASE_ORDER';
132622 l_event_type_code := 'PURCHASE_ORDER_ALL';
132623 l_line_definition_owner_code := 'S';
132624 l_line_definition_code := 'PURCHASE_ORDER';
132625 --
132626 l_balance_type_code := 'A';
132627 l_segment := NULL;
132628 l_ccid := NULL;
132629 l_adr_transaction_coa_id := NULL;
132630 l_adr_accounting_coa_id := NULL;
132631 l_adr_flexfield_segment_code := NULL;
132632 l_adr_flex_value_set_id := NULL;
132633 l_adr_value_type_code := NULL;
132634 l_adr_value_combination_id := NULL;
132635 l_adr_value_segment_code := NULL;
132636
132637 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
132638 l_bflow_class_code := ''; -- 4219869 Business Flow
132639 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
132640 l_budgetary_control_flag := 'N';
132641
132642 l_bflow_applied_to_amt_idx := NULL; -- 5132302
132643 l_bflow_applied_to_amt := NULL; -- 5132302
132644 l_entered_amt_idx := NULL; -- 4262811
132645 l_accted_amt_idx := NULL; -- 4262811
132646 l_acc_rev_flag := NULL; -- 4262811
132647 l_accrual_line_num := NULL; -- 4262811
132648 l_tmp_amt := NULL; -- 4262811
132649 --
132650
132651 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
132652 l_balance_type_code <> 'B' THEN
132653 IF NVL(p_source_24,9E125) = 33
132654 THEN
132655
132656 --
132657 XLA_AE_LINES_PKG.SetNewLine;
132658
132659 p_balance_type_code := l_balance_type_code;
132660 -- set the flag so later we will know whether the gain loss line needs to be created
132661
132662 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
132663 p_actual_flag :='A';
132664 END IF;
132665
132666 --
132667 -- bulk performance
132668 --
132669 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
132670 p_header_num => 0); -- 4262811
132671 --
132672 -- set accounting line options
132673 --
132674 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
132675 p_natural_side_code => 'D'
132676 , p_gain_or_loss_flag => 'N'
132677 , p_gl_transfer_mode_code => 'S'
132678 , p_acct_entry_type_code => 'A'
132679 , p_switch_side_flag => 'Y'
132680 , p_merge_duplicate_code => 'N'
132681 );
132682 --
132683 l_acc_rev_natural_side_code := 'C'; -- 4262811
132684 --
132685 --
132686 -- set accounting line type info
132687 --
132688 xla_ae_lines_pkg.SetAcctLineType
132689 (p_component_type => l_component_type
132690 ,p_event_type_code => l_event_type_code
132691 ,p_line_definition_owner_code => l_line_definition_owner_code
132692 ,p_line_definition_code => l_line_definition_code
132693 ,p_accounting_line_code => l_component_code
132694 ,p_accounting_line_type_code => l_component_type_code
132695 ,p_accounting_line_appl_id => l_component_appl_id
132696 ,p_amb_context_code => l_amb_context_code
132697 ,p_entity_code => l_entity_code
132698 ,p_event_class_code => l_event_class_code);
132699 --
132700 -- set accounting class
132701 --
132702 xla_ae_lines_pkg.SetAcctClass(
132703 p_accounting_class_code => 'SHIKYU_VARIANCE'
132704 , p_ae_header_id => l_ae_header_id
132705 );
132706
132707 --
132708 -- set rounding class
132709 --
132710 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
132711 'SHIKYU_VARIANCE';
132712
132713 --
132714 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
132715 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
132716 --
132717 -- bulk performance
132718 --
132719 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
132720
132721 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
132722 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
132723
132724 -- 4955764
132725 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
132726 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
132727
132728 -- 4458381 Public Sector Enh
132729
132730 --
132731 -- set accounting attributes for the line type
132732 --
132733 l_entered_amt_idx := 17;
132734 l_accted_amt_idx := 22;
132735 l_bflow_applied_to_amt_idx := NULL; -- 5132302
132736 l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
132737 l_rec_acct_attrs.array_num_value(1) := p_source_6;
132738 l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
132739 l_rec_acct_attrs.array_char_value(2) := p_source_7;
132740 l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
132741 l_rec_acct_attrs.array_char_value(3) := p_source_8;
132742 l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
132743 l_rec_acct_attrs.array_num_value(4) := to_char(p_source_28);
132744 l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
132745 l_rec_acct_attrs.array_num_value(5) := to_char(p_source_10);
132746 l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
132747 l_rec_acct_attrs.array_num_value(6) := to_char(p_source_11);
132748 l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
132749 l_rec_acct_attrs.array_char_value(7) := p_source_12;
132750 l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
132751 l_rec_acct_attrs.array_num_value(8) := TO_NUMBER(p_source_13);
132752 l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
132753 l_rec_acct_attrs.array_num_value(9) := p_source_14;
132754 l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
132755 l_rec_acct_attrs.array_char_value(10) := p_source_15;
132756 l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
132757 l_rec_acct_attrs.array_num_value(11) := p_source_16;
132758 l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
132759 l_rec_acct_attrs.array_num_value(12) := TO_NUMBER(p_source_13);
132760 l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
132761 l_rec_acct_attrs.array_num_value(13) := p_source_14;
132762 l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
132763 l_rec_acct_attrs.array_char_value(14) := p_source_15;
132764 l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
132765 l_rec_acct_attrs.array_num_value(15) := p_source_16;
132766 l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
132767 l_rec_acct_attrs.array_char_value(16) := p_source_27;
132768 l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
132769 l_rec_acct_attrs.array_num_value(17) := p_source_18;
132770 l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
132771 l_rec_acct_attrs.array_char_value(18) := p_source_15;
132772 l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
132773 l_rec_acct_attrs.array_date_value(19) := p_source_19;
132774 l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
132775 l_rec_acct_attrs.array_num_value(20) := p_source_20;
132776 l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
132777 l_rec_acct_attrs.array_char_value(21) := p_source_21;
132778 l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
132779 l_rec_acct_attrs.array_num_value(22) := p_source_22;
132780 l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
132781 l_rec_acct_attrs.array_num_value(23) := p_source_23;
132782 l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
132783 l_rec_acct_attrs.array_num_value(24) := p_source_23;
132784
132785 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
132786 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
132787
132788 ---------------------------------------------------------------------------------------------------------------
132789 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
132790 ---------------------------------------------------------------------------------------------------------------
132791 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
132792
132793 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
132794 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
132795
132796 IF xla_accounting_cache_pkg.GetValueChar
132797 (p_source_code => 'LEDGER_CATEGORY_CODE'
132798 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
132799 AND l_bflow_method_code = 'PRIOR_ENTRY'
132800 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
132801 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
132802 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
132803 )
132804 THEN
132805 xla_ae_lines_pkg.BflowUpgEntry
132806 (p_business_method_code => l_bflow_method_code
132807 ,p_business_class_code => l_bflow_class_code
132808 ,p_balance_type => l_balance_type_code);
132809 ELSE
132810 NULL;
132811 -- No business flow processing for business flow method of NONE.
132812 END IF;
132813
132814 --
132815 -- call analytical criteria
132816 --
132817
132818 --
132819 -- call description
132820 --
132821 -- No description or it is inherited.
132822 --
132823 -- call ADRs
132824 -- Bug 4922099
132825 --
132826 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
132827 (NVL(l_actual_upg_option, 'N') = 'O') OR
132828 (NVL(l_enc_upg_option, 'N') = 'O')
132829 )
132830 THEN
132831 NULL;
132832 --
132833 --
132834
132835 l_ccid := AcctDerRule_4(
132836 p_application_id => p_application_id
132837 , p_ae_header_id => l_ae_header_id
132838 , p_source_4 => p_source_4
132839 , x_transaction_coa_id => l_adr_transaction_coa_id
132840 , x_accounting_coa_id => l_adr_accounting_coa_id
132841 , x_value_type_code => l_adr_value_type_code
132842 , p_side => 'NA'
132843 );
132844
132845 xla_ae_lines_pkg.set_ccid(
132846 p_code_combination_id => l_ccid
132847 , p_value_type_code => l_adr_value_type_code
132848 , p_transaction_coa_id => l_adr_transaction_coa_id
132849 , p_accounting_coa_id => l_adr_accounting_coa_id
132850 , p_adr_code => 'CST_DEFAULT'
132851 , p_adr_type_code => 'S'
132852 , p_component_type => l_component_type
132853 , p_component_code => l_component_code
132854 , p_component_type_code => l_component_type_code
132855 , p_component_appl_id => l_component_appl_id
132856 , p_amb_context_code => l_amb_context_code
132857 , p_side => 'NA'
132858 );
132859
132860
132861 --
132862 --
132863 END IF;
132864 --
132865 -- Bug 4922099
132866 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
132867 (NVL(l_enc_upg_option, 'N') = 'O')
132868 ) AND
132869 (l_bflow_method_code = 'PRIOR_ENTRY')
132870 )
132871 THEN
132872 IF
132873 --
132874 1 = 2
132875 --
132876 THEN
132877 xla_accounting_err_pkg.build_message
132878 (p_appli_s_name => 'XLA'
132879 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
132880 ,p_token_1 => 'LINE_NUMBER'
132881 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
132882 ,p_token_2 => 'LINE_TYPE_NAME'
132883 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
132884 l_component_type
132885 ,l_component_code
132886 ,l_component_type_code
132887 ,l_component_appl_id
132888 ,l_amb_context_code
132889 ,l_entity_code
132890 ,l_event_class_code
132891 )
132892 ,p_token_3 => 'OWNER'
132893 ,p_value_3 => xla_lookups_pkg.get_meaning(
132894 p_lookup_type => 'XLA_OWNER_TYPE'
132895 ,p_lookup_code => l_component_type_code
132896 )
132897 ,p_token_4 => 'PRODUCT_NAME'
132898 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
132899 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
132900 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
132901 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
132902 ,p_ae_header_id => NULL
132903 );
132904
132905 IF (C_LEVEL_ERROR>= g_log_level) THEN
132906 trace
132907 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
132908 ,p_level => C_LEVEL_ERROR
132909 ,p_module => l_log_module);
132910 END IF;
132911 END IF;
132912 END IF;
132913 --
132914 --
132915 ------------------------------------------------------------------------------------------------
132916 -- 4219869 Business Flow
132917 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
132918 -- Prior Entry. Currently, the following code is always generated.
132919 ------------------------------------------------------------------------------------------------
132920 XLA_AE_LINES_PKG.ValidateCurrentLine;
132921
132922 ------------------------------------------------------------------------------------
132923 -- 4219869 Business Flow
132924 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
132925 ------------------------------------------------------------------------------------
132926 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
132927
132928 ----------------------------------------------------------------------------------
132929 -- 4219869 Business Flow
132930 -- Update journal entry status -- Need to generate this within IF <condition>
132931 ----------------------------------------------------------------------------------
132932 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
132933 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
132934 ,p_balance_type_code => l_balance_type_code
132935 );
132936
132937 -------------------------------------------------------------------------------------------
132938 -- 4262811 - Generate the Accrual Reversal lines
132939 -------------------------------------------------------------------------------------------
132940 BEGIN
132941 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
132942 (g_array_event(p_event_id).array_value_num('header_index'));
132943 IF l_acc_rev_flag IS NULL THEN
132944 l_acc_rev_flag := 'N';
132945 END IF;
132946 EXCEPTION
132947 WHEN OTHERS THEN
132948 l_acc_rev_flag := 'N';
132949 END;
132950 --
132951 IF (l_acc_rev_flag = 'Y') THEN
132952
132953 -- 4645092 ------------------------------------------------------------------------------
132954 -- To allow MPA report to determine if it should generate report process
132955 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
132956 ------------------------------------------------------------------------------------------
132957
132958 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
132959 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
132960 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
132961 -- call ADRs
132962 -- Bug 4922099
132963 --
132964 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
132965 (NVL(l_actual_upg_option, 'N') = 'O') OR
132966 (NVL(l_enc_upg_option, 'N') = 'O')
132967 )
132968 THEN
132969 NULL;
132970 --
132971 --
132972
132973 l_ccid := AcctDerRule_4(
132974 p_application_id => p_application_id
132975 , p_ae_header_id => l_ae_header_id
132976 , p_source_4 => p_source_4
132977 , x_transaction_coa_id => l_adr_transaction_coa_id
132978 , x_accounting_coa_id => l_adr_accounting_coa_id
132979 , x_value_type_code => l_adr_value_type_code
132980 , p_side => 'NA'
132981 );
132982
132983 xla_ae_lines_pkg.set_ccid(
132984 p_code_combination_id => l_ccid
132985 , p_value_type_code => l_adr_value_type_code
132986 , p_transaction_coa_id => l_adr_transaction_coa_id
132987 , p_accounting_coa_id => l_adr_accounting_coa_id
132988 , p_adr_code => 'CST_DEFAULT'
132989 , p_adr_type_code => 'S'
132990 , p_component_type => l_component_type
132991 , p_component_code => l_component_code
132992 , p_component_type_code => l_component_type_code
132993 , p_component_appl_id => l_component_appl_id
132994 , p_amb_context_code => l_amb_context_code
132995 , p_side => 'NA'
132996 );
132997
132998
132999 --
133000 --
133001 END IF;
133002
133003 --
133004 -- Update the line information that should be overwritten
133005 --
133006 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
133007 p_header_num => 1);
133008 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
133009
133010 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
133011
133012 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
133013 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
133014 END IF;
133015
133016 --
133017 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
133018 --
133019 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
133020 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
133021 ELSE
133022 ---------------------------------------------------------------------------------------------------
133023 -- 4262811a Switch Sign
133024 ---------------------------------------------------------------------------------------------------
133025 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
133026 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
133027 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
133028 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
133029 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
133030 -- 5132302
133031 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
133032 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
133033
133034 END IF;
133035
133036 -- 4955764
133037 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
133038 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
133039
133040
133041 XLA_AE_LINES_PKG.ValidateCurrentLine;
133042 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
133043
133044 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
133045 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
133046 ,p_balance_type_code => l_balance_type_code);
133047
133048 END IF;
133049
133050 -----------------------------------------------------------------------------------------
133051 -- 4262811 Multiperiod Accounting
133052 -----------------------------------------------------------------------------------------
133053 -- No MPA option is assigned.
133054
133055
133056 END IF;
133057 END IF;
133058 --
133059
133060 --
133061 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
133062 trace
133063 (p_msg => 'END of AcctLineType_240'
133064 ,p_level => C_LEVEL_PROCEDURE
133065 ,p_module => l_log_module);
133066 END IF;
133067 --
133068 EXCEPTION
133069 WHEN xla_exceptions_pkg.application_exception THEN
133070 RAISE;
133071 WHEN OTHERS THEN
133072 xla_exceptions_pkg.raise_message
133073 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_240');
133074 END AcctLineType_240;
133075 --
133076
133077 ---------------------------------------
133078 --
133079 -- PRIVATE FUNCTION
133080 -- AcctLineType_241
133081 --
133082 ---------------------------------------
133083 PROCEDURE AcctLineType_241 (
133084 p_application_id IN NUMBER
133085 ,p_event_id IN NUMBER
133086 ,p_calculate_acctd_flag IN VARCHAR2
133087 ,p_calculate_g_l_flag IN VARCHAR2
133088 ,p_actual_flag IN OUT VARCHAR2
133089 ,p_balance_type_code OUT VARCHAR2
133090 ,p_gain_or_loss_ref OUT VARCHAR2
133091
133092 --Cost Management Default Account
133093 , p_source_4 IN NUMBER
133094 --DISTRIBUTION_IDENTIFIER
133095 , p_source_11 IN NUMBER
133096 --Distribution Type
133097 , p_source_12 IN VARCHAR2
133098 , p_source_12_meaning IN VARCHAR2
133099 --Entered Currency Code
133100 , p_source_15 IN VARCHAR2
133101 --Entered Amount
133102 , p_source_18 IN NUMBER
133103 --Currency Conversion Date
133104 , p_source_19 IN DATE
133105 --Currency Conversion Rate
133106 , p_source_20 IN NUMBER
133107 --Currency Conversion Type
133108 , p_source_21 IN VARCHAR2
133109 --Accounted Amount
133110 , p_source_22 IN NUMBER
133111 --Accounting Line Type
133112 , p_source_24 IN NUMBER
133113 )
133114 IS
133115
133116 l_component_type VARCHAR2(80);
133117 l_component_code VARCHAR2(30);
133118 l_component_type_code VARCHAR2(1);
133119 l_component_appl_id INTEGER;
133120 l_amb_context_code VARCHAR2(30);
133121 l_entity_code VARCHAR2(30);
133122 l_event_class_code VARCHAR2(30);
133123 l_ae_header_id NUMBER;
133124 l_event_type_code VARCHAR2(30);
133125 l_line_definition_code VARCHAR2(30);
133126 l_line_definition_owner_code VARCHAR2(1);
133127 --
133128 -- adr variables
133129 l_segment VARCHAR2(30);
133130 l_ccid NUMBER;
133131 l_adr_transaction_coa_id NUMBER;
133132 l_adr_accounting_coa_id NUMBER;
133133 l_adr_flexfield_segment_code VARCHAR2(30);
133134 l_adr_flex_value_set_id NUMBER;
133135 l_adr_value_type_code VARCHAR2(30);
133136 l_adr_value_combination_id NUMBER;
133137 l_adr_value_segment_code VARCHAR2(30);
133138
133139 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
133140 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
133141 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
133142 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
133143
133144 -- 4262811 Variables ------------------------------------------------------------------------------------------
133145 l_entered_amt_idx NUMBER;
133146 l_accted_amt_idx NUMBER;
133147 l_acc_rev_flag VARCHAR2(1);
133148 l_accrual_line_num NUMBER;
133149 l_tmp_amt NUMBER;
133150 l_acc_rev_natural_side_code VARCHAR2(1);
133151
133152 l_num_entries NUMBER;
133153 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
133154 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
133155 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
133156 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
133157 l_recog_line_1 NUMBER;
133158 l_recog_line_2 NUMBER;
133159
133160 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
133161 l_bflow_applied_to_amt NUMBER; -- 5132302
133162 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
133163
133164 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
133165
133166 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
133167 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
133168
133169 ---------------------------------------------------------------------------------------------------------------
133170
133171
133172 --
133173 -- bulk performance
133174 --
133175 l_balance_type_code VARCHAR2(1);
133176 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
133177 l_log_module VARCHAR2(240);
133178
133179 --
133180 -- Upgrade strategy
133181 --
133182 l_actual_upg_option VARCHAR2(1);
133183 l_enc_upg_option VARCHAR2(1);
133184
133185 --
133186 BEGIN
133187 --
133188 IF g_log_enabled THEN
133189 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_241';
133190 END IF;
133191 --
133192 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
133193
133194 trace
133195 (p_msg => 'BEGIN of AcctLineType_241'
133196 ,p_level => C_LEVEL_PROCEDURE
133197 ,p_module => l_log_module);
133198
133199 END IF;
133200 --
133201 l_component_type := 'AMB_JLT';
133202 l_component_code := 'WIP_VALUATION';
133203 l_component_type_code := 'S';
133204 l_component_appl_id := 707;
133205 l_amb_context_code := 'DEFAULT';
133206 l_entity_code := 'WIP_ACCOUNTING_EVENTS';
133207 l_event_class_code := 'ABSORPTION';
133208 l_event_type_code := 'ABSORPTION_ALL';
133209 l_line_definition_owner_code := 'S';
133210 l_line_definition_code := 'ABSORPTION';
133211 --
133212 l_balance_type_code := 'A';
133213 l_segment := NULL;
133214 l_ccid := NULL;
133215 l_adr_transaction_coa_id := NULL;
133216 l_adr_accounting_coa_id := NULL;
133217 l_adr_flexfield_segment_code := NULL;
133218 l_adr_flex_value_set_id := NULL;
133219 l_adr_value_type_code := NULL;
133220 l_adr_value_combination_id := NULL;
133221 l_adr_value_segment_code := NULL;
133222
133223 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
133224 l_bflow_class_code := ''; -- 4219869 Business Flow
133225 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
133226 l_budgetary_control_flag := 'N';
133227
133228 l_bflow_applied_to_amt_idx := NULL; -- 5132302
133229 l_bflow_applied_to_amt := NULL; -- 5132302
133230 l_entered_amt_idx := NULL; -- 4262811
133231 l_accted_amt_idx := NULL; -- 4262811
133232 l_acc_rev_flag := NULL; -- 4262811
133233 l_accrual_line_num := NULL; -- 4262811
133234 l_tmp_amt := NULL; -- 4262811
133235 --
133236
133237 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
133238 l_balance_type_code <> 'B' THEN
133239 IF NVL(p_source_24,9E125) = 7
133240 THEN
133241
133242 --
133243 XLA_AE_LINES_PKG.SetNewLine;
133244
133245 p_balance_type_code := l_balance_type_code;
133246 -- set the flag so later we will know whether the gain loss line needs to be created
133247
133248 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
133249 p_actual_flag :='A';
133250 END IF;
133251
133252 --
133253 -- bulk performance
133254 --
133255 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
133256 p_header_num => 0); -- 4262811
133257 --
133258 -- set accounting line options
133259 --
133260 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
133261 p_natural_side_code => 'D'
133262 , p_gain_or_loss_flag => 'N'
133263 , p_gl_transfer_mode_code => 'S'
133264 , p_acct_entry_type_code => 'A'
133265 , p_switch_side_flag => 'Y'
133266 , p_merge_duplicate_code => 'N'
133267 );
133268 --
133269 l_acc_rev_natural_side_code := 'C'; -- 4262811
133270 --
133271 --
133272 -- set accounting line type info
133273 --
133274 xla_ae_lines_pkg.SetAcctLineType
133275 (p_component_type => l_component_type
133276 ,p_event_type_code => l_event_type_code
133277 ,p_line_definition_owner_code => l_line_definition_owner_code
133278 ,p_line_definition_code => l_line_definition_code
133279 ,p_accounting_line_code => l_component_code
133280 ,p_accounting_line_type_code => l_component_type_code
133281 ,p_accounting_line_appl_id => l_component_appl_id
133282 ,p_amb_context_code => l_amb_context_code
133283 ,p_entity_code => l_entity_code
133284 ,p_event_class_code => l_event_class_code);
133285 --
133286 -- set accounting class
133287 --
133288 xla_ae_lines_pkg.SetAcctClass(
133289 p_accounting_class_code => 'WIP_VALUATION'
133290 , p_ae_header_id => l_ae_header_id
133291 );
133292
133293 --
133294 -- set rounding class
133295 --
133296 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
133297 'WIP_VALUATION';
133298
133299 --
133300 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
133301 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
133302 --
133303 -- bulk performance
133304 --
133305 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
133306
133307 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
133308 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
133309
133310 -- 4955764
133311 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
133312 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
133313
133314 -- 4458381 Public Sector Enh
133315
133316 --
133317 -- set accounting attributes for the line type
133318 --
133319 l_entered_amt_idx := 3;
133320 l_accted_amt_idx := 8;
133321 l_bflow_applied_to_amt_idx := NULL; -- 5132302
133322 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
133323 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
133324 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
133325 l_rec_acct_attrs.array_char_value(2) := p_source_12;
133326 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
133327 l_rec_acct_attrs.array_num_value(3) := p_source_18;
133328 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
133329 l_rec_acct_attrs.array_char_value(4) := p_source_15;
133330 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
133331 l_rec_acct_attrs.array_date_value(5) := p_source_19;
133332 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
133333 l_rec_acct_attrs.array_num_value(6) := p_source_20;
133334 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
133335 l_rec_acct_attrs.array_char_value(7) := p_source_21;
133336 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
133337 l_rec_acct_attrs.array_num_value(8) := p_source_22;
133338
133339 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
133340 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
133341
133342 ---------------------------------------------------------------------------------------------------------------
133343 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
133344 ---------------------------------------------------------------------------------------------------------------
133345 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
133346
133347 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
133348 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
133349
133350 IF xla_accounting_cache_pkg.GetValueChar
133351 (p_source_code => 'LEDGER_CATEGORY_CODE'
133352 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
133353 AND l_bflow_method_code = 'PRIOR_ENTRY'
133354 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
133355 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
133356 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
133357 )
133358 THEN
133359 xla_ae_lines_pkg.BflowUpgEntry
133360 (p_business_method_code => l_bflow_method_code
133361 ,p_business_class_code => l_bflow_class_code
133362 ,p_balance_type => l_balance_type_code);
133363 ELSE
133364 NULL;
133365 -- No business flow processing for business flow method of NONE.
133366 END IF;
133367
133368 --
133369 -- call analytical criteria
133370 --
133371
133372 --
133373 -- call description
133374 --
133375 -- No description or it is inherited.
133376 --
133377 -- call ADRs
133378 -- Bug 4922099
133379 --
133380 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
133381 (NVL(l_actual_upg_option, 'N') = 'O') OR
133382 (NVL(l_enc_upg_option, 'N') = 'O')
133383 )
133384 THEN
133385 NULL;
133386 --
133387 --
133388
133389 l_ccid := AcctDerRule_4(
133390 p_application_id => p_application_id
133391 , p_ae_header_id => l_ae_header_id
133392 , p_source_4 => p_source_4
133393 , x_transaction_coa_id => l_adr_transaction_coa_id
133394 , x_accounting_coa_id => l_adr_accounting_coa_id
133395 , x_value_type_code => l_adr_value_type_code
133396 , p_side => 'NA'
133397 );
133398
133399 xla_ae_lines_pkg.set_ccid(
133400 p_code_combination_id => l_ccid
133401 , p_value_type_code => l_adr_value_type_code
133402 , p_transaction_coa_id => l_adr_transaction_coa_id
133403 , p_accounting_coa_id => l_adr_accounting_coa_id
133404 , p_adr_code => 'CST_DEFAULT'
133405 , p_adr_type_code => 'S'
133406 , p_component_type => l_component_type
133407 , p_component_code => l_component_code
133408 , p_component_type_code => l_component_type_code
133409 , p_component_appl_id => l_component_appl_id
133410 , p_amb_context_code => l_amb_context_code
133411 , p_side => 'NA'
133412 );
133413
133414
133415 --
133416 --
133417 END IF;
133418 --
133419 -- Bug 4922099
133420 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
133421 (NVL(l_enc_upg_option, 'N') = 'O')
133422 ) AND
133423 (l_bflow_method_code = 'PRIOR_ENTRY')
133424 )
133425 THEN
133426 IF
133427 --
133428 1 = 2
133429 --
133430 THEN
133431 xla_accounting_err_pkg.build_message
133432 (p_appli_s_name => 'XLA'
133433 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
133434 ,p_token_1 => 'LINE_NUMBER'
133435 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
133436 ,p_token_2 => 'LINE_TYPE_NAME'
133437 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
133438 l_component_type
133439 ,l_component_code
133440 ,l_component_type_code
133441 ,l_component_appl_id
133442 ,l_amb_context_code
133443 ,l_entity_code
133444 ,l_event_class_code
133445 )
133446 ,p_token_3 => 'OWNER'
133447 ,p_value_3 => xla_lookups_pkg.get_meaning(
133448 p_lookup_type => 'XLA_OWNER_TYPE'
133449 ,p_lookup_code => l_component_type_code
133450 )
133451 ,p_token_4 => 'PRODUCT_NAME'
133452 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
133453 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
133454 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
133455 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
133456 ,p_ae_header_id => NULL
133457 );
133458
133459 IF (C_LEVEL_ERROR>= g_log_level) THEN
133460 trace
133461 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
133462 ,p_level => C_LEVEL_ERROR
133463 ,p_module => l_log_module);
133464 END IF;
133465 END IF;
133466 END IF;
133467 --
133468 --
133469 ------------------------------------------------------------------------------------------------
133470 -- 4219869 Business Flow
133471 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
133472 -- Prior Entry. Currently, the following code is always generated.
133473 ------------------------------------------------------------------------------------------------
133474 XLA_AE_LINES_PKG.ValidateCurrentLine;
133475
133476 ------------------------------------------------------------------------------------
133477 -- 4219869 Business Flow
133478 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
133479 ------------------------------------------------------------------------------------
133480 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
133481
133482 ----------------------------------------------------------------------------------
133483 -- 4219869 Business Flow
133484 -- Update journal entry status -- Need to generate this within IF <condition>
133485 ----------------------------------------------------------------------------------
133486 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
133487 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
133488 ,p_balance_type_code => l_balance_type_code
133489 );
133490
133491 -------------------------------------------------------------------------------------------
133492 -- 4262811 - Generate the Accrual Reversal lines
133493 -------------------------------------------------------------------------------------------
133494 BEGIN
133495 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
133496 (g_array_event(p_event_id).array_value_num('header_index'));
133497 IF l_acc_rev_flag IS NULL THEN
133498 l_acc_rev_flag := 'N';
133499 END IF;
133500 EXCEPTION
133501 WHEN OTHERS THEN
133502 l_acc_rev_flag := 'N';
133503 END;
133504 --
133505 IF (l_acc_rev_flag = 'Y') THEN
133506
133507 -- 4645092 ------------------------------------------------------------------------------
133508 -- To allow MPA report to determine if it should generate report process
133509 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
133510 ------------------------------------------------------------------------------------------
133511
133512 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
133513 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
133514 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
133515 -- call ADRs
133516 -- Bug 4922099
133517 --
133518 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
133519 (NVL(l_actual_upg_option, 'N') = 'O') OR
133520 (NVL(l_enc_upg_option, 'N') = 'O')
133521 )
133522 THEN
133523 NULL;
133524 --
133525 --
133526
133527 l_ccid := AcctDerRule_4(
133528 p_application_id => p_application_id
133529 , p_ae_header_id => l_ae_header_id
133530 , p_source_4 => p_source_4
133531 , x_transaction_coa_id => l_adr_transaction_coa_id
133532 , x_accounting_coa_id => l_adr_accounting_coa_id
133533 , x_value_type_code => l_adr_value_type_code
133534 , p_side => 'NA'
133535 );
133536
133537 xla_ae_lines_pkg.set_ccid(
133538 p_code_combination_id => l_ccid
133539 , p_value_type_code => l_adr_value_type_code
133540 , p_transaction_coa_id => l_adr_transaction_coa_id
133541 , p_accounting_coa_id => l_adr_accounting_coa_id
133542 , p_adr_code => 'CST_DEFAULT'
133543 , p_adr_type_code => 'S'
133544 , p_component_type => l_component_type
133545 , p_component_code => l_component_code
133546 , p_component_type_code => l_component_type_code
133547 , p_component_appl_id => l_component_appl_id
133548 , p_amb_context_code => l_amb_context_code
133549 , p_side => 'NA'
133550 );
133551
133552
133553 --
133554 --
133555 END IF;
133556
133557 --
133558 -- Update the line information that should be overwritten
133559 --
133560 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
133561 p_header_num => 1);
133562 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
133563
133564 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
133565
133566 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
133567 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
133568 END IF;
133569
133570 --
133571 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
133572 --
133573 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
133574 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
133575 ELSE
133576 ---------------------------------------------------------------------------------------------------
133577 -- 4262811a Switch Sign
133578 ---------------------------------------------------------------------------------------------------
133579 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
133580 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
133581 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
133582 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
133583 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
133584 -- 5132302
133585 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
133586 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
133587
133588 END IF;
133589
133590 -- 4955764
133591 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
133592 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
133593
133594
133595 XLA_AE_LINES_PKG.ValidateCurrentLine;
133596 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
133597
133598 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
133599 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
133600 ,p_balance_type_code => l_balance_type_code);
133601
133602 END IF;
133603
133604 -----------------------------------------------------------------------------------------
133605 -- 4262811 Multiperiod Accounting
133606 -----------------------------------------------------------------------------------------
133607 -- No MPA option is assigned.
133608
133609
133610 END IF;
133611 END IF;
133612 --
133613
133614 --
133615 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
133616 trace
133617 (p_msg => 'END of AcctLineType_241'
133618 ,p_level => C_LEVEL_PROCEDURE
133619 ,p_module => l_log_module);
133620 END IF;
133621 --
133622 EXCEPTION
133623 WHEN xla_exceptions_pkg.application_exception THEN
133624 RAISE;
133625 WHEN OTHERS THEN
133626 xla_exceptions_pkg.raise_message
133627 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_241');
133628 END AcctLineType_241;
133629 --
133630
133631 ---------------------------------------
133632 --
133633 -- PRIVATE FUNCTION
133634 -- AcctLineType_242
133635 --
133636 ---------------------------------------
133637 PROCEDURE AcctLineType_242 (
133638 p_application_id IN NUMBER
133639 ,p_event_id IN NUMBER
133640 ,p_calculate_acctd_flag IN VARCHAR2
133641 ,p_calculate_g_l_flag IN VARCHAR2
133642 ,p_actual_flag IN OUT VARCHAR2
133643 ,p_balance_type_code OUT VARCHAR2
133644 ,p_gain_or_loss_ref OUT VARCHAR2
133645
133646 --Cost Management Default Account
133647 , p_source_4 IN NUMBER
133648 --DISTRIBUTION_IDENTIFIER
133649 , p_source_11 IN NUMBER
133650 --Distribution Type
133651 , p_source_12 IN VARCHAR2
133652 , p_source_12_meaning IN VARCHAR2
133653 --Entered Currency Code
133654 , p_source_15 IN VARCHAR2
133655 --Entered Amount
133656 , p_source_18 IN NUMBER
133657 --Currency Conversion Date
133658 , p_source_19 IN DATE
133659 --Currency Conversion Rate
133660 , p_source_20 IN NUMBER
133661 --Currency Conversion Type
133662 , p_source_21 IN VARCHAR2
133663 --Accounted Amount
133664 , p_source_22 IN NUMBER
133665 --Accounting Line Type
133666 , p_source_24 IN NUMBER
133667 )
133668 IS
133669
133670 l_component_type VARCHAR2(80);
133671 l_component_code VARCHAR2(30);
133672 l_component_type_code VARCHAR2(1);
133673 l_component_appl_id INTEGER;
133674 l_amb_context_code VARCHAR2(30);
133675 l_entity_code VARCHAR2(30);
133676 l_event_class_code VARCHAR2(30);
133677 l_ae_header_id NUMBER;
133678 l_event_type_code VARCHAR2(30);
133679 l_line_definition_code VARCHAR2(30);
133680 l_line_definition_owner_code VARCHAR2(1);
133681 --
133682 -- adr variables
133683 l_segment VARCHAR2(30);
133684 l_ccid NUMBER;
133685 l_adr_transaction_coa_id NUMBER;
133686 l_adr_accounting_coa_id NUMBER;
133687 l_adr_flexfield_segment_code VARCHAR2(30);
133688 l_adr_flex_value_set_id NUMBER;
133689 l_adr_value_type_code VARCHAR2(30);
133690 l_adr_value_combination_id NUMBER;
133691 l_adr_value_segment_code VARCHAR2(30);
133692
133693 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
133694 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
133695 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
133696 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
133697
133698 -- 4262811 Variables ------------------------------------------------------------------------------------------
133699 l_entered_amt_idx NUMBER;
133700 l_accted_amt_idx NUMBER;
133701 l_acc_rev_flag VARCHAR2(1);
133702 l_accrual_line_num NUMBER;
133703 l_tmp_amt NUMBER;
133704 l_acc_rev_natural_side_code VARCHAR2(1);
133705
133706 l_num_entries NUMBER;
133707 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
133708 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
133709 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
133710 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
133711 l_recog_line_1 NUMBER;
133712 l_recog_line_2 NUMBER;
133713
133714 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
133715 l_bflow_applied_to_amt NUMBER; -- 5132302
133716 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
133717
133718 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
133719
133720 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
133721 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
133722
133723 ---------------------------------------------------------------------------------------------------------------
133724
133725
133726 --
133727 -- bulk performance
133728 --
133729 l_balance_type_code VARCHAR2(1);
133730 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
133731 l_log_module VARCHAR2(240);
133732
133733 --
133734 -- Upgrade strategy
133735 --
133736 l_actual_upg_option VARCHAR2(1);
133737 l_enc_upg_option VARCHAR2(1);
133738
133739 --
133740 BEGIN
133741 --
133742 IF g_log_enabled THEN
133743 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_242';
133744 END IF;
133745 --
133746 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
133747
133748 trace
133749 (p_msg => 'BEGIN of AcctLineType_242'
133750 ,p_level => C_LEVEL_PROCEDURE
133751 ,p_module => l_log_module);
133752
133753 END IF;
133754 --
133755 l_component_type := 'AMB_JLT';
133756 l_component_code := 'WIP_VALUATION';
133757 l_component_type_code := 'S';
133758 l_component_appl_id := 707;
133759 l_amb_context_code := 'DEFAULT';
133760 l_entity_code := 'WIP_ACCOUNTING_EVENTS';
133761 l_event_class_code := 'VARIANCE';
133762 l_event_type_code := 'VARIANCE_ALL';
133763 l_line_definition_owner_code := 'S';
133764 l_line_definition_code := 'VARIANCE';
133765 --
133766 l_balance_type_code := 'A';
133767 l_segment := NULL;
133768 l_ccid := NULL;
133769 l_adr_transaction_coa_id := NULL;
133770 l_adr_accounting_coa_id := NULL;
133771 l_adr_flexfield_segment_code := NULL;
133772 l_adr_flex_value_set_id := NULL;
133773 l_adr_value_type_code := NULL;
133774 l_adr_value_combination_id := NULL;
133775 l_adr_value_segment_code := NULL;
133776
133777 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
133778 l_bflow_class_code := ''; -- 4219869 Business Flow
133779 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
133780 l_budgetary_control_flag := 'N';
133781
133782 l_bflow_applied_to_amt_idx := NULL; -- 5132302
133783 l_bflow_applied_to_amt := NULL; -- 5132302
133784 l_entered_amt_idx := NULL; -- 4262811
133785 l_accted_amt_idx := NULL; -- 4262811
133786 l_acc_rev_flag := NULL; -- 4262811
133787 l_accrual_line_num := NULL; -- 4262811
133788 l_tmp_amt := NULL; -- 4262811
133789 --
133790
133791 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
133792 l_balance_type_code <> 'B' THEN
133793 IF NVL(p_source_24,9E125) = 7
133794 THEN
133795
133796 --
133797 XLA_AE_LINES_PKG.SetNewLine;
133798
133799 p_balance_type_code := l_balance_type_code;
133800 -- set the flag so later we will know whether the gain loss line needs to be created
133801
133802 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
133803 p_actual_flag :='A';
133804 END IF;
133805
133806 --
133807 -- bulk performance
133808 --
133809 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
133810 p_header_num => 0); -- 4262811
133811 --
133812 -- set accounting line options
133813 --
133814 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
133815 p_natural_side_code => 'D'
133816 , p_gain_or_loss_flag => 'N'
133817 , p_gl_transfer_mode_code => 'S'
133818 , p_acct_entry_type_code => 'A'
133819 , p_switch_side_flag => 'Y'
133820 , p_merge_duplicate_code => 'N'
133821 );
133822 --
133823 l_acc_rev_natural_side_code := 'C'; -- 4262811
133824 --
133825 --
133826 -- set accounting line type info
133827 --
133828 xla_ae_lines_pkg.SetAcctLineType
133829 (p_component_type => l_component_type
133830 ,p_event_type_code => l_event_type_code
133831 ,p_line_definition_owner_code => l_line_definition_owner_code
133832 ,p_line_definition_code => l_line_definition_code
133833 ,p_accounting_line_code => l_component_code
133834 ,p_accounting_line_type_code => l_component_type_code
133835 ,p_accounting_line_appl_id => l_component_appl_id
133836 ,p_amb_context_code => l_amb_context_code
133837 ,p_entity_code => l_entity_code
133838 ,p_event_class_code => l_event_class_code);
133839 --
133840 -- set accounting class
133841 --
133842 xla_ae_lines_pkg.SetAcctClass(
133843 p_accounting_class_code => 'WIP_VALUATION'
133844 , p_ae_header_id => l_ae_header_id
133845 );
133846
133847 --
133848 -- set rounding class
133849 --
133850 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
133851 'WIP_VALUATION';
133852
133853 --
133854 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
133855 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
133856 --
133857 -- bulk performance
133858 --
133859 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
133860
133861 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
133862 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
133863
133864 -- 4955764
133865 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
133866 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
133867
133868 -- 4458381 Public Sector Enh
133869
133870 --
133871 -- set accounting attributes for the line type
133872 --
133873 l_entered_amt_idx := 3;
133874 l_accted_amt_idx := 8;
133875 l_bflow_applied_to_amt_idx := NULL; -- 5132302
133876 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
133877 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
133878 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
133879 l_rec_acct_attrs.array_char_value(2) := p_source_12;
133880 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
133881 l_rec_acct_attrs.array_num_value(3) := p_source_18;
133882 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
133883 l_rec_acct_attrs.array_char_value(4) := p_source_15;
133884 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
133885 l_rec_acct_attrs.array_date_value(5) := p_source_19;
133886 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
133887 l_rec_acct_attrs.array_num_value(6) := p_source_20;
133888 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
133889 l_rec_acct_attrs.array_char_value(7) := p_source_21;
133890 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
133891 l_rec_acct_attrs.array_num_value(8) := p_source_22;
133892
133893 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
133894 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
133895
133896 ---------------------------------------------------------------------------------------------------------------
133897 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
133898 ---------------------------------------------------------------------------------------------------------------
133899 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
133900
133901 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
133902 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
133903
133904 IF xla_accounting_cache_pkg.GetValueChar
133905 (p_source_code => 'LEDGER_CATEGORY_CODE'
133906 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
133907 AND l_bflow_method_code = 'PRIOR_ENTRY'
133908 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
133909 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
133910 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
133911 )
133912 THEN
133913 xla_ae_lines_pkg.BflowUpgEntry
133914 (p_business_method_code => l_bflow_method_code
133915 ,p_business_class_code => l_bflow_class_code
133916 ,p_balance_type => l_balance_type_code);
133917 ELSE
133918 NULL;
133919 -- No business flow processing for business flow method of NONE.
133920 END IF;
133921
133922 --
133923 -- call analytical criteria
133924 --
133925
133926 --
133927 -- call description
133928 --
133929 -- No description or it is inherited.
133930 --
133931 -- call ADRs
133932 -- Bug 4922099
133933 --
133934 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
133935 (NVL(l_actual_upg_option, 'N') = 'O') OR
133936 (NVL(l_enc_upg_option, 'N') = 'O')
133937 )
133938 THEN
133939 NULL;
133940 --
133941 --
133942
133943 l_ccid := AcctDerRule_4(
133944 p_application_id => p_application_id
133945 , p_ae_header_id => l_ae_header_id
133946 , p_source_4 => p_source_4
133947 , x_transaction_coa_id => l_adr_transaction_coa_id
133948 , x_accounting_coa_id => l_adr_accounting_coa_id
133949 , x_value_type_code => l_adr_value_type_code
133950 , p_side => 'NA'
133951 );
133952
133953 xla_ae_lines_pkg.set_ccid(
133954 p_code_combination_id => l_ccid
133955 , p_value_type_code => l_adr_value_type_code
133956 , p_transaction_coa_id => l_adr_transaction_coa_id
133957 , p_accounting_coa_id => l_adr_accounting_coa_id
133958 , p_adr_code => 'CST_DEFAULT'
133959 , p_adr_type_code => 'S'
133960 , p_component_type => l_component_type
133961 , p_component_code => l_component_code
133962 , p_component_type_code => l_component_type_code
133963 , p_component_appl_id => l_component_appl_id
133964 , p_amb_context_code => l_amb_context_code
133965 , p_side => 'NA'
133966 );
133967
133968
133969 --
133970 --
133971 END IF;
133972 --
133973 -- Bug 4922099
133974 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
133975 (NVL(l_enc_upg_option, 'N') = 'O')
133976 ) AND
133977 (l_bflow_method_code = 'PRIOR_ENTRY')
133978 )
133979 THEN
133980 IF
133981 --
133982 1 = 2
133983 --
133984 THEN
133985 xla_accounting_err_pkg.build_message
133986 (p_appli_s_name => 'XLA'
133987 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
133988 ,p_token_1 => 'LINE_NUMBER'
133989 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
133990 ,p_token_2 => 'LINE_TYPE_NAME'
133991 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
133992 l_component_type
133993 ,l_component_code
133994 ,l_component_type_code
133995 ,l_component_appl_id
133996 ,l_amb_context_code
133997 ,l_entity_code
133998 ,l_event_class_code
133999 )
134000 ,p_token_3 => 'OWNER'
134001 ,p_value_3 => xla_lookups_pkg.get_meaning(
134002 p_lookup_type => 'XLA_OWNER_TYPE'
134003 ,p_lookup_code => l_component_type_code
134004 )
134005 ,p_token_4 => 'PRODUCT_NAME'
134006 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
134007 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
134008 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
134009 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
134010 ,p_ae_header_id => NULL
134011 );
134012
134013 IF (C_LEVEL_ERROR>= g_log_level) THEN
134014 trace
134015 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
134016 ,p_level => C_LEVEL_ERROR
134017 ,p_module => l_log_module);
134018 END IF;
134019 END IF;
134020 END IF;
134021 --
134022 --
134023 ------------------------------------------------------------------------------------------------
134024 -- 4219869 Business Flow
134025 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
134026 -- Prior Entry. Currently, the following code is always generated.
134027 ------------------------------------------------------------------------------------------------
134028 XLA_AE_LINES_PKG.ValidateCurrentLine;
134029
134030 ------------------------------------------------------------------------------------
134031 -- 4219869 Business Flow
134032 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
134033 ------------------------------------------------------------------------------------
134034 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
134035
134036 ----------------------------------------------------------------------------------
134037 -- 4219869 Business Flow
134038 -- Update journal entry status -- Need to generate this within IF <condition>
134039 ----------------------------------------------------------------------------------
134040 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
134041 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
134042 ,p_balance_type_code => l_balance_type_code
134043 );
134044
134045 -------------------------------------------------------------------------------------------
134046 -- 4262811 - Generate the Accrual Reversal lines
134047 -------------------------------------------------------------------------------------------
134048 BEGIN
134049 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
134050 (g_array_event(p_event_id).array_value_num('header_index'));
134051 IF l_acc_rev_flag IS NULL THEN
134052 l_acc_rev_flag := 'N';
134053 END IF;
134054 EXCEPTION
134055 WHEN OTHERS THEN
134056 l_acc_rev_flag := 'N';
134057 END;
134058 --
134059 IF (l_acc_rev_flag = 'Y') THEN
134060
134061 -- 4645092 ------------------------------------------------------------------------------
134062 -- To allow MPA report to determine if it should generate report process
134063 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
134064 ------------------------------------------------------------------------------------------
134065
134066 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
134067 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
134068 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
134069 -- call ADRs
134070 -- Bug 4922099
134071 --
134072 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
134073 (NVL(l_actual_upg_option, 'N') = 'O') OR
134074 (NVL(l_enc_upg_option, 'N') = 'O')
134075 )
134076 THEN
134077 NULL;
134078 --
134079 --
134080
134081 l_ccid := AcctDerRule_4(
134082 p_application_id => p_application_id
134083 , p_ae_header_id => l_ae_header_id
134084 , p_source_4 => p_source_4
134085 , x_transaction_coa_id => l_adr_transaction_coa_id
134086 , x_accounting_coa_id => l_adr_accounting_coa_id
134087 , x_value_type_code => l_adr_value_type_code
134088 , p_side => 'NA'
134089 );
134090
134091 xla_ae_lines_pkg.set_ccid(
134092 p_code_combination_id => l_ccid
134093 , p_value_type_code => l_adr_value_type_code
134094 , p_transaction_coa_id => l_adr_transaction_coa_id
134095 , p_accounting_coa_id => l_adr_accounting_coa_id
134096 , p_adr_code => 'CST_DEFAULT'
134097 , p_adr_type_code => 'S'
134098 , p_component_type => l_component_type
134099 , p_component_code => l_component_code
134100 , p_component_type_code => l_component_type_code
134101 , p_component_appl_id => l_component_appl_id
134102 , p_amb_context_code => l_amb_context_code
134103 , p_side => 'NA'
134104 );
134105
134106
134107 --
134108 --
134109 END IF;
134110
134111 --
134112 -- Update the line information that should be overwritten
134113 --
134114 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
134115 p_header_num => 1);
134116 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
134117
134118 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
134119
134120 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
134121 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
134122 END IF;
134123
134124 --
134125 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
134126 --
134127 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
134128 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
134129 ELSE
134130 ---------------------------------------------------------------------------------------------------
134131 -- 4262811a Switch Sign
134132 ---------------------------------------------------------------------------------------------------
134133 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
134134 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
134135 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
134136 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
134137 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
134138 -- 5132302
134139 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
134140 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
134141
134142 END IF;
134143
134144 -- 4955764
134145 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
134146 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
134147
134148
134149 XLA_AE_LINES_PKG.ValidateCurrentLine;
134150 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
134151
134152 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
134153 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
134154 ,p_balance_type_code => l_balance_type_code);
134155
134156 END IF;
134157
134158 -----------------------------------------------------------------------------------------
134159 -- 4262811 Multiperiod Accounting
134160 -----------------------------------------------------------------------------------------
134161 -- No MPA option is assigned.
134162
134163
134164 END IF;
134165 END IF;
134166 --
134167
134168 --
134169 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
134170 trace
134171 (p_msg => 'END of AcctLineType_242'
134172 ,p_level => C_LEVEL_PROCEDURE
134173 ,p_module => l_log_module);
134174 END IF;
134175 --
134176 EXCEPTION
134177 WHEN xla_exceptions_pkg.application_exception THEN
134178 RAISE;
134179 WHEN OTHERS THEN
134180 xla_exceptions_pkg.raise_message
134181 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_242');
134182 END AcctLineType_242;
134183 --
134184
134185 ---------------------------------------
134186 --
134187 -- PRIVATE FUNCTION
134188 -- AcctLineType_243
134189 --
134190 ---------------------------------------
134191 PROCEDURE AcctLineType_243 (
134192 p_application_id IN NUMBER
134193 ,p_event_id IN NUMBER
134194 ,p_calculate_acctd_flag IN VARCHAR2
134195 ,p_calculate_g_l_flag IN VARCHAR2
134196 ,p_actual_flag IN OUT VARCHAR2
134197 ,p_balance_type_code OUT VARCHAR2
134198 ,p_gain_or_loss_ref OUT VARCHAR2
134199
134200 --Cost Management Default Account
134201 , p_source_4 IN NUMBER
134202 --DISTRIBUTION_IDENTIFIER
134203 , p_source_11 IN NUMBER
134204 --Distribution Type
134205 , p_source_12 IN VARCHAR2
134206 , p_source_12_meaning IN VARCHAR2
134207 --Entered Currency Code
134208 , p_source_15 IN VARCHAR2
134209 --Entered Amount
134210 , p_source_18 IN NUMBER
134211 --Currency Conversion Date
134212 , p_source_19 IN DATE
134213 --Currency Conversion Rate
134214 , p_source_20 IN NUMBER
134215 --Currency Conversion Type
134216 , p_source_21 IN VARCHAR2
134217 --Accounted Amount
134218 , p_source_22 IN NUMBER
134219 --Accounting Line Type
134220 , p_source_24 IN NUMBER
134221 )
134222 IS
134223
134224 l_component_type VARCHAR2(80);
134225 l_component_code VARCHAR2(30);
134226 l_component_type_code VARCHAR2(1);
134227 l_component_appl_id INTEGER;
134228 l_amb_context_code VARCHAR2(30);
134229 l_entity_code VARCHAR2(30);
134230 l_event_class_code VARCHAR2(30);
134231 l_ae_header_id NUMBER;
134232 l_event_type_code VARCHAR2(30);
134233 l_line_definition_code VARCHAR2(30);
134234 l_line_definition_owner_code VARCHAR2(1);
134235 --
134236 -- adr variables
134237 l_segment VARCHAR2(30);
134238 l_ccid NUMBER;
134239 l_adr_transaction_coa_id NUMBER;
134240 l_adr_accounting_coa_id NUMBER;
134241 l_adr_flexfield_segment_code VARCHAR2(30);
134242 l_adr_flex_value_set_id NUMBER;
134243 l_adr_value_type_code VARCHAR2(30);
134244 l_adr_value_combination_id NUMBER;
134245 l_adr_value_segment_code VARCHAR2(30);
134246
134247 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
134248 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
134249 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
134250 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
134251
134252 -- 4262811 Variables ------------------------------------------------------------------------------------------
134253 l_entered_amt_idx NUMBER;
134254 l_accted_amt_idx NUMBER;
134255 l_acc_rev_flag VARCHAR2(1);
134256 l_accrual_line_num NUMBER;
134257 l_tmp_amt NUMBER;
134258 l_acc_rev_natural_side_code VARCHAR2(1);
134259
134260 l_num_entries NUMBER;
134261 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
134262 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
134263 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
134264 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
134265 l_recog_line_1 NUMBER;
134266 l_recog_line_2 NUMBER;
134267
134268 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
134269 l_bflow_applied_to_amt NUMBER; -- 5132302
134270 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
134271
134272 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
134273
134274 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
134275 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
134276
134277 ---------------------------------------------------------------------------------------------------------------
134278
134279
134280 --
134281 -- bulk performance
134282 --
134283 l_balance_type_code VARCHAR2(1);
134284 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
134285 l_log_module VARCHAR2(240);
134286
134287 --
134288 -- Upgrade strategy
134289 --
134290 l_actual_upg_option VARCHAR2(1);
134291 l_enc_upg_option VARCHAR2(1);
134292
134293 --
134294 BEGIN
134295 --
134296 IF g_log_enabled THEN
134297 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_243';
134298 END IF;
134299 --
134300 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
134301
134302 trace
134303 (p_msg => 'BEGIN of AcctLineType_243'
134304 ,p_level => C_LEVEL_PROCEDURE
134305 ,p_module => l_log_module);
134306
134307 END IF;
134308 --
134309 l_component_type := 'AMB_JLT';
134310 l_component_code := 'WIP_VALUATION';
134311 l_component_type_code := 'S';
134312 l_component_appl_id := 707;
134313 l_amb_context_code := 'DEFAULT';
134314 l_entity_code := 'WIP_ACCOUNTING_EVENTS';
134315 l_event_class_code := 'WIP_COST_UPD';
134316 l_event_type_code := 'WIP_COST_UPD_ALL';
134317 l_line_definition_owner_code := 'S';
134318 l_line_definition_code := 'COST_UPDATE';
134319 --
134320 l_balance_type_code := 'A';
134321 l_segment := NULL;
134322 l_ccid := NULL;
134323 l_adr_transaction_coa_id := NULL;
134324 l_adr_accounting_coa_id := NULL;
134325 l_adr_flexfield_segment_code := NULL;
134326 l_adr_flex_value_set_id := NULL;
134327 l_adr_value_type_code := NULL;
134328 l_adr_value_combination_id := NULL;
134329 l_adr_value_segment_code := NULL;
134330
134331 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
134332 l_bflow_class_code := ''; -- 4219869 Business Flow
134333 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
134334 l_budgetary_control_flag := 'N';
134335
134336 l_bflow_applied_to_amt_idx := NULL; -- 5132302
134337 l_bflow_applied_to_amt := NULL; -- 5132302
134338 l_entered_amt_idx := NULL; -- 4262811
134339 l_accted_amt_idx := NULL; -- 4262811
134340 l_acc_rev_flag := NULL; -- 4262811
134341 l_accrual_line_num := NULL; -- 4262811
134342 l_tmp_amt := NULL; -- 4262811
134343 --
134344
134345 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
134346 l_balance_type_code <> 'B' THEN
134347 IF NVL(p_source_24,9E125) = 7
134348 THEN
134349
134350 --
134351 XLA_AE_LINES_PKG.SetNewLine;
134352
134353 p_balance_type_code := l_balance_type_code;
134354 -- set the flag so later we will know whether the gain loss line needs to be created
134355
134356 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
134357 p_actual_flag :='A';
134358 END IF;
134359
134360 --
134361 -- bulk performance
134362 --
134363 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
134364 p_header_num => 0); -- 4262811
134365 --
134366 -- set accounting line options
134367 --
134368 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
134369 p_natural_side_code => 'D'
134370 , p_gain_or_loss_flag => 'N'
134371 , p_gl_transfer_mode_code => 'S'
134372 , p_acct_entry_type_code => 'A'
134373 , p_switch_side_flag => 'Y'
134374 , p_merge_duplicate_code => 'N'
134375 );
134376 --
134377 l_acc_rev_natural_side_code := 'C'; -- 4262811
134378 --
134379 --
134380 -- set accounting line type info
134381 --
134382 xla_ae_lines_pkg.SetAcctLineType
134383 (p_component_type => l_component_type
134384 ,p_event_type_code => l_event_type_code
134385 ,p_line_definition_owner_code => l_line_definition_owner_code
134386 ,p_line_definition_code => l_line_definition_code
134387 ,p_accounting_line_code => l_component_code
134388 ,p_accounting_line_type_code => l_component_type_code
134389 ,p_accounting_line_appl_id => l_component_appl_id
134390 ,p_amb_context_code => l_amb_context_code
134391 ,p_entity_code => l_entity_code
134392 ,p_event_class_code => l_event_class_code);
134393 --
134394 -- set accounting class
134395 --
134396 xla_ae_lines_pkg.SetAcctClass(
134397 p_accounting_class_code => 'WIP_VALUATION'
134398 , p_ae_header_id => l_ae_header_id
134399 );
134400
134401 --
134402 -- set rounding class
134403 --
134404 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
134405 'WIP_VALUATION';
134406
134407 --
134408 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
134409 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
134410 --
134411 -- bulk performance
134412 --
134413 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
134414
134415 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
134416 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
134417
134418 -- 4955764
134419 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
134420 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
134421
134422 -- 4458381 Public Sector Enh
134423
134424 --
134425 -- set accounting attributes for the line type
134426 --
134427 l_entered_amt_idx := 3;
134428 l_accted_amt_idx := 8;
134429 l_bflow_applied_to_amt_idx := NULL; -- 5132302
134430 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
134431 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
134432 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
134433 l_rec_acct_attrs.array_char_value(2) := p_source_12;
134434 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
134435 l_rec_acct_attrs.array_num_value(3) := p_source_18;
134436 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
134437 l_rec_acct_attrs.array_char_value(4) := p_source_15;
134438 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
134439 l_rec_acct_attrs.array_date_value(5) := p_source_19;
134440 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
134441 l_rec_acct_attrs.array_num_value(6) := p_source_20;
134442 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
134443 l_rec_acct_attrs.array_char_value(7) := p_source_21;
134444 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
134445 l_rec_acct_attrs.array_num_value(8) := p_source_22;
134446
134447 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
134448 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
134449
134450 ---------------------------------------------------------------------------------------------------------------
134451 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
134452 ---------------------------------------------------------------------------------------------------------------
134453 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
134454
134455 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
134456 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
134457
134458 IF xla_accounting_cache_pkg.GetValueChar
134459 (p_source_code => 'LEDGER_CATEGORY_CODE'
134460 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
134461 AND l_bflow_method_code = 'PRIOR_ENTRY'
134462 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
134463 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
134464 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
134465 )
134466 THEN
134467 xla_ae_lines_pkg.BflowUpgEntry
134468 (p_business_method_code => l_bflow_method_code
134469 ,p_business_class_code => l_bflow_class_code
134470 ,p_balance_type => l_balance_type_code);
134471 ELSE
134472 NULL;
134473 -- No business flow processing for business flow method of NONE.
134474 END IF;
134475
134476 --
134477 -- call analytical criteria
134478 --
134479
134480 --
134481 -- call description
134482 --
134483 -- No description or it is inherited.
134484 --
134485 -- call ADRs
134486 -- Bug 4922099
134487 --
134488 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
134489 (NVL(l_actual_upg_option, 'N') = 'O') OR
134490 (NVL(l_enc_upg_option, 'N') = 'O')
134491 )
134492 THEN
134493 NULL;
134494 --
134495 --
134496
134497 l_ccid := AcctDerRule_4(
134498 p_application_id => p_application_id
134499 , p_ae_header_id => l_ae_header_id
134500 , p_source_4 => p_source_4
134501 , x_transaction_coa_id => l_adr_transaction_coa_id
134502 , x_accounting_coa_id => l_adr_accounting_coa_id
134503 , x_value_type_code => l_adr_value_type_code
134504 , p_side => 'NA'
134505 );
134506
134507 xla_ae_lines_pkg.set_ccid(
134508 p_code_combination_id => l_ccid
134509 , p_value_type_code => l_adr_value_type_code
134510 , p_transaction_coa_id => l_adr_transaction_coa_id
134511 , p_accounting_coa_id => l_adr_accounting_coa_id
134512 , p_adr_code => 'CST_DEFAULT'
134513 , p_adr_type_code => 'S'
134514 , p_component_type => l_component_type
134515 , p_component_code => l_component_code
134516 , p_component_type_code => l_component_type_code
134517 , p_component_appl_id => l_component_appl_id
134518 , p_amb_context_code => l_amb_context_code
134519 , p_side => 'NA'
134520 );
134521
134522
134523 --
134524 --
134525 END IF;
134526 --
134527 -- Bug 4922099
134528 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
134529 (NVL(l_enc_upg_option, 'N') = 'O')
134530 ) AND
134531 (l_bflow_method_code = 'PRIOR_ENTRY')
134532 )
134533 THEN
134534 IF
134535 --
134536 1 = 2
134537 --
134538 THEN
134539 xla_accounting_err_pkg.build_message
134540 (p_appli_s_name => 'XLA'
134541 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
134542 ,p_token_1 => 'LINE_NUMBER'
134543 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
134544 ,p_token_2 => 'LINE_TYPE_NAME'
134545 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
134546 l_component_type
134547 ,l_component_code
134548 ,l_component_type_code
134549 ,l_component_appl_id
134550 ,l_amb_context_code
134551 ,l_entity_code
134552 ,l_event_class_code
134553 )
134554 ,p_token_3 => 'OWNER'
134555 ,p_value_3 => xla_lookups_pkg.get_meaning(
134556 p_lookup_type => 'XLA_OWNER_TYPE'
134557 ,p_lookup_code => l_component_type_code
134558 )
134559 ,p_token_4 => 'PRODUCT_NAME'
134560 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
134561 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
134562 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
134563 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
134564 ,p_ae_header_id => NULL
134565 );
134566
134567 IF (C_LEVEL_ERROR>= g_log_level) THEN
134568 trace
134569 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
134570 ,p_level => C_LEVEL_ERROR
134571 ,p_module => l_log_module);
134572 END IF;
134573 END IF;
134574 END IF;
134575 --
134576 --
134577 ------------------------------------------------------------------------------------------------
134578 -- 4219869 Business Flow
134579 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
134580 -- Prior Entry. Currently, the following code is always generated.
134581 ------------------------------------------------------------------------------------------------
134582 XLA_AE_LINES_PKG.ValidateCurrentLine;
134583
134584 ------------------------------------------------------------------------------------
134585 -- 4219869 Business Flow
134586 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
134587 ------------------------------------------------------------------------------------
134588 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
134589
134590 ----------------------------------------------------------------------------------
134591 -- 4219869 Business Flow
134592 -- Update journal entry status -- Need to generate this within IF <condition>
134593 ----------------------------------------------------------------------------------
134594 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
134595 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
134596 ,p_balance_type_code => l_balance_type_code
134597 );
134598
134599 -------------------------------------------------------------------------------------------
134600 -- 4262811 - Generate the Accrual Reversal lines
134601 -------------------------------------------------------------------------------------------
134602 BEGIN
134603 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
134604 (g_array_event(p_event_id).array_value_num('header_index'));
134605 IF l_acc_rev_flag IS NULL THEN
134606 l_acc_rev_flag := 'N';
134607 END IF;
134608 EXCEPTION
134609 WHEN OTHERS THEN
134610 l_acc_rev_flag := 'N';
134611 END;
134612 --
134613 IF (l_acc_rev_flag = 'Y') THEN
134614
134615 -- 4645092 ------------------------------------------------------------------------------
134616 -- To allow MPA report to determine if it should generate report process
134617 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
134618 ------------------------------------------------------------------------------------------
134619
134620 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
134621 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
134622 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
134623 -- call ADRs
134624 -- Bug 4922099
134625 --
134626 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
134627 (NVL(l_actual_upg_option, 'N') = 'O') OR
134628 (NVL(l_enc_upg_option, 'N') = 'O')
134629 )
134630 THEN
134631 NULL;
134632 --
134633 --
134634
134635 l_ccid := AcctDerRule_4(
134636 p_application_id => p_application_id
134637 , p_ae_header_id => l_ae_header_id
134638 , p_source_4 => p_source_4
134639 , x_transaction_coa_id => l_adr_transaction_coa_id
134640 , x_accounting_coa_id => l_adr_accounting_coa_id
134641 , x_value_type_code => l_adr_value_type_code
134642 , p_side => 'NA'
134643 );
134644
134645 xla_ae_lines_pkg.set_ccid(
134646 p_code_combination_id => l_ccid
134647 , p_value_type_code => l_adr_value_type_code
134648 , p_transaction_coa_id => l_adr_transaction_coa_id
134649 , p_accounting_coa_id => l_adr_accounting_coa_id
134650 , p_adr_code => 'CST_DEFAULT'
134651 , p_adr_type_code => 'S'
134652 , p_component_type => l_component_type
134653 , p_component_code => l_component_code
134654 , p_component_type_code => l_component_type_code
134655 , p_component_appl_id => l_component_appl_id
134656 , p_amb_context_code => l_amb_context_code
134657 , p_side => 'NA'
134658 );
134659
134660
134661 --
134662 --
134663 END IF;
134664
134665 --
134666 -- Update the line information that should be overwritten
134667 --
134668 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
134669 p_header_num => 1);
134670 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
134671
134672 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
134673
134674 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
134675 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
134676 END IF;
134677
134678 --
134679 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
134680 --
134681 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
134682 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
134683 ELSE
134684 ---------------------------------------------------------------------------------------------------
134685 -- 4262811a Switch Sign
134686 ---------------------------------------------------------------------------------------------------
134687 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
134688 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
134689 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
134690 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
134691 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
134692 -- 5132302
134693 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
134694 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
134695
134696 END IF;
134697
134698 -- 4955764
134699 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
134700 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
134701
134702
134703 XLA_AE_LINES_PKG.ValidateCurrentLine;
134704 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
134705
134706 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
134707 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
134708 ,p_balance_type_code => l_balance_type_code);
134709
134710 END IF;
134711
134712 -----------------------------------------------------------------------------------------
134713 -- 4262811 Multiperiod Accounting
134714 -----------------------------------------------------------------------------------------
134715 -- No MPA option is assigned.
134716
134717
134718 END IF;
134719 END IF;
134720 --
134721
134722 --
134723 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
134724 trace
134725 (p_msg => 'END of AcctLineType_243'
134726 ,p_level => C_LEVEL_PROCEDURE
134727 ,p_module => l_log_module);
134728 END IF;
134729 --
134730 EXCEPTION
134731 WHEN xla_exceptions_pkg.application_exception THEN
134732 RAISE;
134733 WHEN OTHERS THEN
134734 xla_exceptions_pkg.raise_message
134735 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_243');
134736 END AcctLineType_243;
134737 --
134738
134739 ---------------------------------------
134740 --
134741 -- PRIVATE FUNCTION
134742 -- AcctLineType_244
134743 --
134744 ---------------------------------------
134745 PROCEDURE AcctLineType_244 (
134746 p_application_id IN NUMBER
134747 ,p_event_id IN NUMBER
134748 ,p_calculate_acctd_flag IN VARCHAR2
134749 ,p_calculate_g_l_flag IN VARCHAR2
134750 ,p_actual_flag IN OUT VARCHAR2
134751 ,p_balance_type_code OUT VARCHAR2
134752 ,p_gain_or_loss_ref OUT VARCHAR2
134753
134754 --Cost Management Default Account
134755 , p_source_4 IN NUMBER
134756 --DISTRIBUTION_IDENTIFIER
134757 , p_source_11 IN NUMBER
134758 --Distribution Type
134759 , p_source_12 IN VARCHAR2
134760 , p_source_12_meaning IN VARCHAR2
134761 --Entered Currency Code
134762 , p_source_15 IN VARCHAR2
134763 --Entered Amount
134764 , p_source_18 IN NUMBER
134765 --Currency Conversion Date
134766 , p_source_19 IN DATE
134767 --Currency Conversion Rate
134768 , p_source_20 IN NUMBER
134769 --Currency Conversion Type
134770 , p_source_21 IN VARCHAR2
134771 --Accounted Amount
134772 , p_source_22 IN NUMBER
134773 --Accounting Line Type
134774 , p_source_24 IN NUMBER
134775 )
134776 IS
134777
134778 l_component_type VARCHAR2(80);
134779 l_component_code VARCHAR2(30);
134780 l_component_type_code VARCHAR2(1);
134781 l_component_appl_id INTEGER;
134782 l_amb_context_code VARCHAR2(30);
134783 l_entity_code VARCHAR2(30);
134784 l_event_class_code VARCHAR2(30);
134785 l_ae_header_id NUMBER;
134786 l_event_type_code VARCHAR2(30);
134787 l_line_definition_code VARCHAR2(30);
134788 l_line_definition_owner_code VARCHAR2(1);
134789 --
134790 -- adr variables
134791 l_segment VARCHAR2(30);
134792 l_ccid NUMBER;
134793 l_adr_transaction_coa_id NUMBER;
134794 l_adr_accounting_coa_id NUMBER;
134795 l_adr_flexfield_segment_code VARCHAR2(30);
134796 l_adr_flex_value_set_id NUMBER;
134797 l_adr_value_type_code VARCHAR2(30);
134798 l_adr_value_combination_id NUMBER;
134799 l_adr_value_segment_code VARCHAR2(30);
134800
134801 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
134802 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
134803 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
134804 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
134805
134806 -- 4262811 Variables ------------------------------------------------------------------------------------------
134807 l_entered_amt_idx NUMBER;
134808 l_accted_amt_idx NUMBER;
134809 l_acc_rev_flag VARCHAR2(1);
134810 l_accrual_line_num NUMBER;
134811 l_tmp_amt NUMBER;
134812 l_acc_rev_natural_side_code VARCHAR2(1);
134813
134814 l_num_entries NUMBER;
134815 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
134816 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
134817 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
134818 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
134819 l_recog_line_1 NUMBER;
134820 l_recog_line_2 NUMBER;
134821
134822 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
134823 l_bflow_applied_to_amt NUMBER; -- 5132302
134824 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
134825
134826 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
134827
134828 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
134829 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
134830
134831 ---------------------------------------------------------------------------------------------------------------
134832
134833
134834 --
134835 -- bulk performance
134836 --
134837 l_balance_type_code VARCHAR2(1);
134838 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
134839 l_log_module VARCHAR2(240);
134840
134841 --
134842 -- Upgrade strategy
134843 --
134844 l_actual_upg_option VARCHAR2(1);
134845 l_enc_upg_option VARCHAR2(1);
134846
134847 --
134848 BEGIN
134849 --
134850 IF g_log_enabled THEN
134851 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_244';
134852 END IF;
134853 --
134854 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
134855
134856 trace
134857 (p_msg => 'BEGIN of AcctLineType_244'
134858 ,p_level => C_LEVEL_PROCEDURE
134859 ,p_module => l_log_module);
134860
134861 END IF;
134862 --
134863 l_component_type := 'AMB_JLT';
134864 l_component_code := 'WIP_VALUATION';
134865 l_component_type_code := 'S';
134866 l_component_appl_id := 707;
134867 l_amb_context_code := 'DEFAULT';
134868 l_entity_code := 'WIP_ACCOUNTING_EVENTS';
134869 l_event_class_code := 'WIP_LOT';
134870 l_event_type_code := 'WIP_LOT_ALL';
134871 l_line_definition_owner_code := 'S';
134872 l_line_definition_code := 'WIP_LOT';
134873 --
134874 l_balance_type_code := 'A';
134875 l_segment := NULL;
134876 l_ccid := NULL;
134877 l_adr_transaction_coa_id := NULL;
134878 l_adr_accounting_coa_id := NULL;
134879 l_adr_flexfield_segment_code := NULL;
134880 l_adr_flex_value_set_id := NULL;
134881 l_adr_value_type_code := NULL;
134882 l_adr_value_combination_id := NULL;
134883 l_adr_value_segment_code := NULL;
134884
134885 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
134886 l_bflow_class_code := ''; -- 4219869 Business Flow
134887 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
134888 l_budgetary_control_flag := 'N';
134889
134890 l_bflow_applied_to_amt_idx := NULL; -- 5132302
134891 l_bflow_applied_to_amt := NULL; -- 5132302
134892 l_entered_amt_idx := NULL; -- 4262811
134893 l_accted_amt_idx := NULL; -- 4262811
134894 l_acc_rev_flag := NULL; -- 4262811
134895 l_accrual_line_num := NULL; -- 4262811
134896 l_tmp_amt := NULL; -- 4262811
134897 --
134898
134899 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
134900 l_balance_type_code <> 'B' THEN
134901 IF NVL(p_source_24,9E125) = 21 OR
134902 NVL(p_source_24,9E125) = 22 OR
134903 NVL(p_source_24,9E125) = 23 OR
134904 NVL(p_source_24,9E125) = 24 OR
134905 NVL(p_source_24,9E125) = 26 OR
134906 NVL(p_source_24,9E125) = 28
134907 THEN
134908
134909 --
134910 XLA_AE_LINES_PKG.SetNewLine;
134911
134912 p_balance_type_code := l_balance_type_code;
134913 -- set the flag so later we will know whether the gain loss line needs to be created
134914
134915 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
134916 p_actual_flag :='A';
134917 END IF;
134918
134919 --
134920 -- bulk performance
134921 --
134922 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
134923 p_header_num => 0); -- 4262811
134924 --
134925 -- set accounting line options
134926 --
134927 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
134928 p_natural_side_code => 'D'
134929 , p_gain_or_loss_flag => 'N'
134930 , p_gl_transfer_mode_code => 'S'
134931 , p_acct_entry_type_code => 'A'
134932 , p_switch_side_flag => 'Y'
134933 , p_merge_duplicate_code => 'N'
134934 );
134935 --
134936 l_acc_rev_natural_side_code := 'C'; -- 4262811
134937 --
134938 --
134939 -- set accounting line type info
134940 --
134941 xla_ae_lines_pkg.SetAcctLineType
134942 (p_component_type => l_component_type
134943 ,p_event_type_code => l_event_type_code
134944 ,p_line_definition_owner_code => l_line_definition_owner_code
134945 ,p_line_definition_code => l_line_definition_code
134946 ,p_accounting_line_code => l_component_code
134947 ,p_accounting_line_type_code => l_component_type_code
134948 ,p_accounting_line_appl_id => l_component_appl_id
134949 ,p_amb_context_code => l_amb_context_code
134950 ,p_entity_code => l_entity_code
134951 ,p_event_class_code => l_event_class_code);
134952 --
134953 -- set accounting class
134954 --
134955 xla_ae_lines_pkg.SetAcctClass(
134956 p_accounting_class_code => 'WIP_VALUATION'
134957 , p_ae_header_id => l_ae_header_id
134958 );
134959
134960 --
134961 -- set rounding class
134962 --
134963 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
134964 'WIP_VALUATION';
134965
134966 --
134967 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
134968 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
134969 --
134970 -- bulk performance
134971 --
134972 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
134973
134974 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
134975 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
134976
134977 -- 4955764
134978 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
134979 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
134980
134981 -- 4458381 Public Sector Enh
134982
134983 --
134984 -- set accounting attributes for the line type
134985 --
134986 l_entered_amt_idx := 3;
134987 l_accted_amt_idx := 8;
134988 l_bflow_applied_to_amt_idx := NULL; -- 5132302
134989 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
134990 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
134991 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
134992 l_rec_acct_attrs.array_char_value(2) := p_source_12;
134993 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
134994 l_rec_acct_attrs.array_num_value(3) := p_source_18;
134995 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
134996 l_rec_acct_attrs.array_char_value(4) := p_source_15;
134997 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
134998 l_rec_acct_attrs.array_date_value(5) := p_source_19;
134999 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
135000 l_rec_acct_attrs.array_num_value(6) := p_source_20;
135001 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
135002 l_rec_acct_attrs.array_char_value(7) := p_source_21;
135003 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
135004 l_rec_acct_attrs.array_num_value(8) := p_source_22;
135005
135006 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
135007 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
135008
135009 ---------------------------------------------------------------------------------------------------------------
135010 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
135011 ---------------------------------------------------------------------------------------------------------------
135012 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
135013
135014 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
135015 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
135016
135017 IF xla_accounting_cache_pkg.GetValueChar
135018 (p_source_code => 'LEDGER_CATEGORY_CODE'
135019 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
135020 AND l_bflow_method_code = 'PRIOR_ENTRY'
135021 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
135022 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
135023 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
135024 )
135025 THEN
135026 xla_ae_lines_pkg.BflowUpgEntry
135027 (p_business_method_code => l_bflow_method_code
135028 ,p_business_class_code => l_bflow_class_code
135029 ,p_balance_type => l_balance_type_code);
135030 ELSE
135031 NULL;
135032 -- No business flow processing for business flow method of NONE.
135033 END IF;
135034
135035 --
135036 -- call analytical criteria
135037 --
135038
135039 --
135040 -- call description
135041 --
135042 -- No description or it is inherited.
135043 --
135044 -- call ADRs
135045 -- Bug 4922099
135046 --
135047 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
135048 (NVL(l_actual_upg_option, 'N') = 'O') OR
135049 (NVL(l_enc_upg_option, 'N') = 'O')
135050 )
135051 THEN
135052 NULL;
135053 --
135054 --
135055
135056 l_ccid := AcctDerRule_4(
135057 p_application_id => p_application_id
135058 , p_ae_header_id => l_ae_header_id
135059 , p_source_4 => p_source_4
135060 , x_transaction_coa_id => l_adr_transaction_coa_id
135061 , x_accounting_coa_id => l_adr_accounting_coa_id
135062 , x_value_type_code => l_adr_value_type_code
135063 , p_side => 'NA'
135064 );
135065
135066 xla_ae_lines_pkg.set_ccid(
135067 p_code_combination_id => l_ccid
135068 , p_value_type_code => l_adr_value_type_code
135069 , p_transaction_coa_id => l_adr_transaction_coa_id
135070 , p_accounting_coa_id => l_adr_accounting_coa_id
135071 , p_adr_code => 'CST_DEFAULT'
135072 , p_adr_type_code => 'S'
135073 , p_component_type => l_component_type
135074 , p_component_code => l_component_code
135075 , p_component_type_code => l_component_type_code
135076 , p_component_appl_id => l_component_appl_id
135077 , p_amb_context_code => l_amb_context_code
135078 , p_side => 'NA'
135079 );
135080
135081
135082 --
135083 --
135084 END IF;
135085 --
135086 -- Bug 4922099
135087 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
135088 (NVL(l_enc_upg_option, 'N') = 'O')
135089 ) AND
135090 (l_bflow_method_code = 'PRIOR_ENTRY')
135091 )
135092 THEN
135093 IF
135094 --
135095 1 = 2
135096 --
135097 THEN
135098 xla_accounting_err_pkg.build_message
135099 (p_appli_s_name => 'XLA'
135100 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
135101 ,p_token_1 => 'LINE_NUMBER'
135102 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
135103 ,p_token_2 => 'LINE_TYPE_NAME'
135104 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
135105 l_component_type
135106 ,l_component_code
135107 ,l_component_type_code
135108 ,l_component_appl_id
135109 ,l_amb_context_code
135110 ,l_entity_code
135111 ,l_event_class_code
135112 )
135113 ,p_token_3 => 'OWNER'
135114 ,p_value_3 => xla_lookups_pkg.get_meaning(
135115 p_lookup_type => 'XLA_OWNER_TYPE'
135116 ,p_lookup_code => l_component_type_code
135117 )
135118 ,p_token_4 => 'PRODUCT_NAME'
135119 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
135120 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
135121 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
135122 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
135123 ,p_ae_header_id => NULL
135124 );
135125
135126 IF (C_LEVEL_ERROR>= g_log_level) THEN
135127 trace
135128 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
135129 ,p_level => C_LEVEL_ERROR
135130 ,p_module => l_log_module);
135131 END IF;
135132 END IF;
135133 END IF;
135134 --
135135 --
135136 ------------------------------------------------------------------------------------------------
135137 -- 4219869 Business Flow
135138 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
135139 -- Prior Entry. Currently, the following code is always generated.
135140 ------------------------------------------------------------------------------------------------
135141 XLA_AE_LINES_PKG.ValidateCurrentLine;
135142
135143 ------------------------------------------------------------------------------------
135144 -- 4219869 Business Flow
135145 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
135146 ------------------------------------------------------------------------------------
135147 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
135148
135149 ----------------------------------------------------------------------------------
135150 -- 4219869 Business Flow
135151 -- Update journal entry status -- Need to generate this within IF <condition>
135152 ----------------------------------------------------------------------------------
135153 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
135154 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
135155 ,p_balance_type_code => l_balance_type_code
135156 );
135157
135158 -------------------------------------------------------------------------------------------
135159 -- 4262811 - Generate the Accrual Reversal lines
135160 -------------------------------------------------------------------------------------------
135161 BEGIN
135162 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
135163 (g_array_event(p_event_id).array_value_num('header_index'));
135164 IF l_acc_rev_flag IS NULL THEN
135165 l_acc_rev_flag := 'N';
135166 END IF;
135167 EXCEPTION
135168 WHEN OTHERS THEN
135169 l_acc_rev_flag := 'N';
135170 END;
135171 --
135172 IF (l_acc_rev_flag = 'Y') THEN
135173
135174 -- 4645092 ------------------------------------------------------------------------------
135175 -- To allow MPA report to determine if it should generate report process
135176 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
135177 ------------------------------------------------------------------------------------------
135178
135179 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
135180 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
135181 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
135182 -- call ADRs
135183 -- Bug 4922099
135184 --
135185 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
135186 (NVL(l_actual_upg_option, 'N') = 'O') OR
135187 (NVL(l_enc_upg_option, 'N') = 'O')
135188 )
135189 THEN
135190 NULL;
135191 --
135192 --
135193
135194 l_ccid := AcctDerRule_4(
135195 p_application_id => p_application_id
135196 , p_ae_header_id => l_ae_header_id
135197 , p_source_4 => p_source_4
135198 , x_transaction_coa_id => l_adr_transaction_coa_id
135199 , x_accounting_coa_id => l_adr_accounting_coa_id
135200 , x_value_type_code => l_adr_value_type_code
135201 , p_side => 'NA'
135202 );
135203
135204 xla_ae_lines_pkg.set_ccid(
135205 p_code_combination_id => l_ccid
135206 , p_value_type_code => l_adr_value_type_code
135207 , p_transaction_coa_id => l_adr_transaction_coa_id
135208 , p_accounting_coa_id => l_adr_accounting_coa_id
135209 , p_adr_code => 'CST_DEFAULT'
135210 , p_adr_type_code => 'S'
135211 , p_component_type => l_component_type
135212 , p_component_code => l_component_code
135213 , p_component_type_code => l_component_type_code
135214 , p_component_appl_id => l_component_appl_id
135215 , p_amb_context_code => l_amb_context_code
135216 , p_side => 'NA'
135217 );
135218
135219
135220 --
135221 --
135222 END IF;
135223
135224 --
135225 -- Update the line information that should be overwritten
135226 --
135227 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
135228 p_header_num => 1);
135229 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
135230
135231 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
135232
135233 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
135234 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
135235 END IF;
135236
135237 --
135238 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
135239 --
135240 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
135241 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
135242 ELSE
135243 ---------------------------------------------------------------------------------------------------
135244 -- 4262811a Switch Sign
135245 ---------------------------------------------------------------------------------------------------
135246 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
135247 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
135248 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
135249 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
135250 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
135251 -- 5132302
135252 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
135253 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
135254
135255 END IF;
135256
135257 -- 4955764
135258 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
135259 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
135260
135261
135262 XLA_AE_LINES_PKG.ValidateCurrentLine;
135263 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
135264
135265 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
135266 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
135267 ,p_balance_type_code => l_balance_type_code);
135268
135269 END IF;
135270
135271 -----------------------------------------------------------------------------------------
135272 -- 4262811 Multiperiod Accounting
135273 -----------------------------------------------------------------------------------------
135274 -- No MPA option is assigned.
135275
135276
135277 END IF;
135278 END IF;
135279 --
135280
135281 --
135282 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
135283 trace
135284 (p_msg => 'END of AcctLineType_244'
135285 ,p_level => C_LEVEL_PROCEDURE
135286 ,p_module => l_log_module);
135287 END IF;
135288 --
135289 EXCEPTION
135290 WHEN xla_exceptions_pkg.application_exception THEN
135291 RAISE;
135292 WHEN OTHERS THEN
135293 xla_exceptions_pkg.raise_message
135294 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_244');
135295 END AcctLineType_244;
135296 --
135297
135298 ---------------------------------------
135299 --
135300 -- PRIVATE FUNCTION
135301 -- AcctLineType_245
135302 --
135303 ---------------------------------------
135304 PROCEDURE AcctLineType_245 (
135305 p_application_id IN NUMBER
135306 ,p_event_id IN NUMBER
135307 ,p_calculate_acctd_flag IN VARCHAR2
135308 ,p_calculate_g_l_flag IN VARCHAR2
135309 ,p_actual_flag IN OUT VARCHAR2
135310 ,p_balance_type_code OUT VARCHAR2
135311 ,p_gain_or_loss_ref OUT VARCHAR2
135312
135313 --Cost Management Default Account
135314 , p_source_4 IN NUMBER
135315 --DISTRIBUTION_IDENTIFIER
135316 , p_source_11 IN NUMBER
135317 --Distribution Type
135318 , p_source_12 IN VARCHAR2
135319 , p_source_12_meaning IN VARCHAR2
135320 --Entered Currency Code
135321 , p_source_15 IN VARCHAR2
135322 --Entered Amount
135323 , p_source_18 IN NUMBER
135324 --Currency Conversion Date
135325 , p_source_19 IN DATE
135326 --Currency Conversion Rate
135327 , p_source_20 IN NUMBER
135328 --Currency Conversion Type
135329 , p_source_21 IN VARCHAR2
135330 --Accounted Amount
135331 , p_source_22 IN NUMBER
135332 --Accounting Line Type
135333 , p_source_24 IN NUMBER
135334 )
135335 IS
135336
135337 l_component_type VARCHAR2(80);
135338 l_component_code VARCHAR2(30);
135339 l_component_type_code VARCHAR2(1);
135340 l_component_appl_id INTEGER;
135341 l_amb_context_code VARCHAR2(30);
135342 l_entity_code VARCHAR2(30);
135343 l_event_class_code VARCHAR2(30);
135344 l_ae_header_id NUMBER;
135345 l_event_type_code VARCHAR2(30);
135346 l_line_definition_code VARCHAR2(30);
135347 l_line_definition_owner_code VARCHAR2(1);
135348 --
135349 -- adr variables
135350 l_segment VARCHAR2(30);
135351 l_ccid NUMBER;
135352 l_adr_transaction_coa_id NUMBER;
135353 l_adr_accounting_coa_id NUMBER;
135354 l_adr_flexfield_segment_code VARCHAR2(30);
135355 l_adr_flex_value_set_id NUMBER;
135356 l_adr_value_type_code VARCHAR2(30);
135357 l_adr_value_combination_id NUMBER;
135358 l_adr_value_segment_code VARCHAR2(30);
135359
135360 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
135361 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
135362 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
135363 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
135364
135365 -- 4262811 Variables ------------------------------------------------------------------------------------------
135366 l_entered_amt_idx NUMBER;
135367 l_accted_amt_idx NUMBER;
135368 l_acc_rev_flag VARCHAR2(1);
135369 l_accrual_line_num NUMBER;
135370 l_tmp_amt NUMBER;
135371 l_acc_rev_natural_side_code VARCHAR2(1);
135372
135373 l_num_entries NUMBER;
135374 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
135375 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
135376 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
135377 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
135378 l_recog_line_1 NUMBER;
135379 l_recog_line_2 NUMBER;
135380
135381 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
135382 l_bflow_applied_to_amt NUMBER; -- 5132302
135383 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
135384
135385 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
135386
135387 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
135388 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
135389
135390 ---------------------------------------------------------------------------------------------------------------
135391
135392
135393 --
135394 -- bulk performance
135395 --
135396 l_balance_type_code VARCHAR2(1);
135397 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
135398 l_log_module VARCHAR2(240);
135399
135400 --
135401 -- Upgrade strategy
135402 --
135403 l_actual_upg_option VARCHAR2(1);
135404 l_enc_upg_option VARCHAR2(1);
135405
135406 --
135407 BEGIN
135408 --
135409 IF g_log_enabled THEN
135410 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_245';
135411 END IF;
135412 --
135413 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
135414
135415 trace
135416 (p_msg => 'BEGIN of AcctLineType_245'
135417 ,p_level => C_LEVEL_PROCEDURE
135418 ,p_module => l_log_module);
135419
135420 END IF;
135421 --
135422 l_component_type := 'AMB_JLT';
135423 l_component_code := 'WIP_VALUATION';
135424 l_component_type_code := 'S';
135425 l_component_appl_id := 707;
135426 l_amb_context_code := 'DEFAULT';
135427 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
135428 l_event_class_code := 'WIP_MTL';
135429 l_event_type_code := 'WIP_MTL_ALL';
135430 l_line_definition_owner_code := 'S';
135431 l_line_definition_code := 'WIP_MTL';
135432 --
135433 l_balance_type_code := 'A';
135434 l_segment := NULL;
135435 l_ccid := NULL;
135436 l_adr_transaction_coa_id := NULL;
135437 l_adr_accounting_coa_id := NULL;
135438 l_adr_flexfield_segment_code := NULL;
135439 l_adr_flex_value_set_id := NULL;
135440 l_adr_value_type_code := NULL;
135441 l_adr_value_combination_id := NULL;
135442 l_adr_value_segment_code := NULL;
135443
135444 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
135445 l_bflow_class_code := ''; -- 4219869 Business Flow
135446 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
135447 l_budgetary_control_flag := 'N';
135448
135449 l_bflow_applied_to_amt_idx := NULL; -- 5132302
135450 l_bflow_applied_to_amt := NULL; -- 5132302
135451 l_entered_amt_idx := NULL; -- 4262811
135452 l_accted_amt_idx := NULL; -- 4262811
135453 l_acc_rev_flag := NULL; -- 4262811
135454 l_accrual_line_num := NULL; -- 4262811
135455 l_tmp_amt := NULL; -- 4262811
135456 --
135457
135458 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
135459 l_balance_type_code <> 'B' THEN
135460 IF NVL(p_source_24,9E125) = 7
135461 THEN
135462
135463 --
135464 XLA_AE_LINES_PKG.SetNewLine;
135465
135466 p_balance_type_code := l_balance_type_code;
135467 -- set the flag so later we will know whether the gain loss line needs to be created
135468
135469 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
135470 p_actual_flag :='A';
135471 END IF;
135472
135473 --
135474 -- bulk performance
135475 --
135476 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
135477 p_header_num => 0); -- 4262811
135478 --
135479 -- set accounting line options
135480 --
135481 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
135482 p_natural_side_code => 'D'
135483 , p_gain_or_loss_flag => 'N'
135484 , p_gl_transfer_mode_code => 'S'
135485 , p_acct_entry_type_code => 'A'
135486 , p_switch_side_flag => 'Y'
135487 , p_merge_duplicate_code => 'N'
135488 );
135489 --
135490 l_acc_rev_natural_side_code := 'C'; -- 4262811
135491 --
135492 --
135493 -- set accounting line type info
135494 --
135495 xla_ae_lines_pkg.SetAcctLineType
135496 (p_component_type => l_component_type
135497 ,p_event_type_code => l_event_type_code
135498 ,p_line_definition_owner_code => l_line_definition_owner_code
135499 ,p_line_definition_code => l_line_definition_code
135500 ,p_accounting_line_code => l_component_code
135501 ,p_accounting_line_type_code => l_component_type_code
135502 ,p_accounting_line_appl_id => l_component_appl_id
135503 ,p_amb_context_code => l_amb_context_code
135504 ,p_entity_code => l_entity_code
135505 ,p_event_class_code => l_event_class_code);
135506 --
135507 -- set accounting class
135508 --
135509 xla_ae_lines_pkg.SetAcctClass(
135510 p_accounting_class_code => 'WIP_VALUATION'
135511 , p_ae_header_id => l_ae_header_id
135512 );
135513
135514 --
135515 -- set rounding class
135516 --
135517 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
135518 'WIP_VALUATION';
135519
135520 --
135521 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
135522 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
135523 --
135524 -- bulk performance
135525 --
135526 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
135527
135528 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
135529 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
135530
135531 -- 4955764
135532 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
135533 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
135534
135535 -- 4458381 Public Sector Enh
135536
135537 --
135538 -- set accounting attributes for the line type
135539 --
135540 l_entered_amt_idx := 3;
135541 l_accted_amt_idx := 8;
135542 l_bflow_applied_to_amt_idx := NULL; -- 5132302
135543 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
135544 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
135545 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
135546 l_rec_acct_attrs.array_char_value(2) := p_source_12;
135547 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
135548 l_rec_acct_attrs.array_num_value(3) := p_source_18;
135549 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
135550 l_rec_acct_attrs.array_char_value(4) := p_source_15;
135551 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
135552 l_rec_acct_attrs.array_date_value(5) := p_source_19;
135553 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
135554 l_rec_acct_attrs.array_num_value(6) := p_source_20;
135555 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
135556 l_rec_acct_attrs.array_char_value(7) := p_source_21;
135557 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
135558 l_rec_acct_attrs.array_num_value(8) := p_source_22;
135559
135560 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
135561 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
135562
135563 ---------------------------------------------------------------------------------------------------------------
135564 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
135565 ---------------------------------------------------------------------------------------------------------------
135566 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
135567
135568 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
135569 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
135570
135571 IF xla_accounting_cache_pkg.GetValueChar
135572 (p_source_code => 'LEDGER_CATEGORY_CODE'
135573 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
135574 AND l_bflow_method_code = 'PRIOR_ENTRY'
135575 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
135576 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
135577 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
135578 )
135579 THEN
135580 xla_ae_lines_pkg.BflowUpgEntry
135581 (p_business_method_code => l_bflow_method_code
135582 ,p_business_class_code => l_bflow_class_code
135583 ,p_balance_type => l_balance_type_code);
135584 ELSE
135585 NULL;
135586 -- No business flow processing for business flow method of NONE.
135587 END IF;
135588
135589 --
135590 -- call analytical criteria
135591 --
135592
135593 --
135594 -- call description
135595 --
135596 -- No description or it is inherited.
135597 --
135598 -- call ADRs
135599 -- Bug 4922099
135600 --
135601 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
135602 (NVL(l_actual_upg_option, 'N') = 'O') OR
135603 (NVL(l_enc_upg_option, 'N') = 'O')
135604 )
135605 THEN
135606 NULL;
135607 --
135608 --
135609
135610 l_ccid := AcctDerRule_4(
135611 p_application_id => p_application_id
135612 , p_ae_header_id => l_ae_header_id
135613 , p_source_4 => p_source_4
135614 , x_transaction_coa_id => l_adr_transaction_coa_id
135615 , x_accounting_coa_id => l_adr_accounting_coa_id
135616 , x_value_type_code => l_adr_value_type_code
135617 , p_side => 'NA'
135618 );
135619
135620 xla_ae_lines_pkg.set_ccid(
135621 p_code_combination_id => l_ccid
135622 , p_value_type_code => l_adr_value_type_code
135623 , p_transaction_coa_id => l_adr_transaction_coa_id
135624 , p_accounting_coa_id => l_adr_accounting_coa_id
135625 , p_adr_code => 'CST_DEFAULT'
135626 , p_adr_type_code => 'S'
135627 , p_component_type => l_component_type
135628 , p_component_code => l_component_code
135629 , p_component_type_code => l_component_type_code
135630 , p_component_appl_id => l_component_appl_id
135631 , p_amb_context_code => l_amb_context_code
135632 , p_side => 'NA'
135633 );
135634
135635
135636 --
135637 --
135638 END IF;
135639 --
135640 -- Bug 4922099
135641 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
135642 (NVL(l_enc_upg_option, 'N') = 'O')
135643 ) AND
135644 (l_bflow_method_code = 'PRIOR_ENTRY')
135645 )
135646 THEN
135647 IF
135648 --
135649 1 = 2
135650 --
135651 THEN
135652 xla_accounting_err_pkg.build_message
135653 (p_appli_s_name => 'XLA'
135654 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
135655 ,p_token_1 => 'LINE_NUMBER'
135656 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
135657 ,p_token_2 => 'LINE_TYPE_NAME'
135658 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
135659 l_component_type
135660 ,l_component_code
135661 ,l_component_type_code
135662 ,l_component_appl_id
135663 ,l_amb_context_code
135664 ,l_entity_code
135665 ,l_event_class_code
135666 )
135667 ,p_token_3 => 'OWNER'
135668 ,p_value_3 => xla_lookups_pkg.get_meaning(
135669 p_lookup_type => 'XLA_OWNER_TYPE'
135670 ,p_lookup_code => l_component_type_code
135671 )
135672 ,p_token_4 => 'PRODUCT_NAME'
135673 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
135674 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
135675 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
135676 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
135677 ,p_ae_header_id => NULL
135678 );
135679
135680 IF (C_LEVEL_ERROR>= g_log_level) THEN
135681 trace
135682 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
135683 ,p_level => C_LEVEL_ERROR
135684 ,p_module => l_log_module);
135685 END IF;
135686 END IF;
135687 END IF;
135688 --
135689 --
135690 ------------------------------------------------------------------------------------------------
135691 -- 4219869 Business Flow
135692 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
135693 -- Prior Entry. Currently, the following code is always generated.
135694 ------------------------------------------------------------------------------------------------
135695 XLA_AE_LINES_PKG.ValidateCurrentLine;
135696
135697 ------------------------------------------------------------------------------------
135698 -- 4219869 Business Flow
135699 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
135700 ------------------------------------------------------------------------------------
135701 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
135702
135703 ----------------------------------------------------------------------------------
135704 -- 4219869 Business Flow
135705 -- Update journal entry status -- Need to generate this within IF <condition>
135706 ----------------------------------------------------------------------------------
135707 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
135708 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
135709 ,p_balance_type_code => l_balance_type_code
135710 );
135711
135712 -------------------------------------------------------------------------------------------
135713 -- 4262811 - Generate the Accrual Reversal lines
135714 -------------------------------------------------------------------------------------------
135715 BEGIN
135716 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
135717 (g_array_event(p_event_id).array_value_num('header_index'));
135718 IF l_acc_rev_flag IS NULL THEN
135719 l_acc_rev_flag := 'N';
135720 END IF;
135721 EXCEPTION
135722 WHEN OTHERS THEN
135723 l_acc_rev_flag := 'N';
135724 END;
135725 --
135726 IF (l_acc_rev_flag = 'Y') THEN
135727
135728 -- 4645092 ------------------------------------------------------------------------------
135729 -- To allow MPA report to determine if it should generate report process
135730 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
135731 ------------------------------------------------------------------------------------------
135732
135733 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
135734 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
135735 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
135736 -- call ADRs
135737 -- Bug 4922099
135738 --
135739 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
135740 (NVL(l_actual_upg_option, 'N') = 'O') OR
135741 (NVL(l_enc_upg_option, 'N') = 'O')
135742 )
135743 THEN
135744 NULL;
135745 --
135746 --
135747
135748 l_ccid := AcctDerRule_4(
135749 p_application_id => p_application_id
135750 , p_ae_header_id => l_ae_header_id
135751 , p_source_4 => p_source_4
135752 , x_transaction_coa_id => l_adr_transaction_coa_id
135753 , x_accounting_coa_id => l_adr_accounting_coa_id
135754 , x_value_type_code => l_adr_value_type_code
135755 , p_side => 'NA'
135756 );
135757
135758 xla_ae_lines_pkg.set_ccid(
135759 p_code_combination_id => l_ccid
135760 , p_value_type_code => l_adr_value_type_code
135761 , p_transaction_coa_id => l_adr_transaction_coa_id
135762 , p_accounting_coa_id => l_adr_accounting_coa_id
135763 , p_adr_code => 'CST_DEFAULT'
135764 , p_adr_type_code => 'S'
135765 , p_component_type => l_component_type
135766 , p_component_code => l_component_code
135767 , p_component_type_code => l_component_type_code
135768 , p_component_appl_id => l_component_appl_id
135769 , p_amb_context_code => l_amb_context_code
135770 , p_side => 'NA'
135771 );
135772
135773
135774 --
135775 --
135776 END IF;
135777
135778 --
135779 -- Update the line information that should be overwritten
135780 --
135781 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
135782 p_header_num => 1);
135783 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
135784
135785 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
135786
135787 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
135788 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
135789 END IF;
135790
135791 --
135792 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
135793 --
135794 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
135795 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
135796 ELSE
135797 ---------------------------------------------------------------------------------------------------
135798 -- 4262811a Switch Sign
135799 ---------------------------------------------------------------------------------------------------
135800 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
135801 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
135802 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
135803 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
135804 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
135805 -- 5132302
135806 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
135807 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
135808
135809 END IF;
135810
135811 -- 4955764
135812 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
135813 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
135814
135815
135816 XLA_AE_LINES_PKG.ValidateCurrentLine;
135817 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
135818
135819 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
135820 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
135821 ,p_balance_type_code => l_balance_type_code);
135822
135823 END IF;
135824
135825 -----------------------------------------------------------------------------------------
135826 -- 4262811 Multiperiod Accounting
135827 -----------------------------------------------------------------------------------------
135828 -- No MPA option is assigned.
135829
135830
135831 END IF;
135832 END IF;
135833 --
135834
135835 --
135836 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
135837 trace
135838 (p_msg => 'END of AcctLineType_245'
135839 ,p_level => C_LEVEL_PROCEDURE
135840 ,p_module => l_log_module);
135841 END IF;
135842 --
135843 EXCEPTION
135844 WHEN xla_exceptions_pkg.application_exception THEN
135845 RAISE;
135846 WHEN OTHERS THEN
135847 xla_exceptions_pkg.raise_message
135848 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_245');
135849 END AcctLineType_245;
135850 --
135851
135852 ---------------------------------------
135853 --
135854 -- PRIVATE FUNCTION
135855 -- AcctLineType_246
135856 --
135857 ---------------------------------------
135858 PROCEDURE AcctLineType_246 (
135859 p_application_id IN NUMBER
135860 ,p_event_id IN NUMBER
135861 ,p_calculate_acctd_flag IN VARCHAR2
135862 ,p_calculate_g_l_flag IN VARCHAR2
135863 ,p_actual_flag IN OUT VARCHAR2
135864 ,p_balance_type_code OUT VARCHAR2
135865 ,p_gain_or_loss_ref OUT VARCHAR2
135866
135867 --Cost Management Default Account
135868 , p_source_4 IN NUMBER
135869 --DISTRIBUTION_IDENTIFIER
135870 , p_source_11 IN NUMBER
135871 --Distribution Type
135872 , p_source_12 IN VARCHAR2
135873 , p_source_12_meaning IN VARCHAR2
135874 --Entered Currency Code
135875 , p_source_15 IN VARCHAR2
135876 --Entered Amount
135877 , p_source_18 IN NUMBER
135878 --Currency Conversion Date
135879 , p_source_19 IN DATE
135880 --Currency Conversion Rate
135881 , p_source_20 IN NUMBER
135882 --Accounted Amount
135883 , p_source_22 IN NUMBER
135884 --Accounting Line Type
135885 , p_source_24 IN NUMBER
135886 )
135887 IS
135888
135889 l_component_type VARCHAR2(80);
135890 l_component_code VARCHAR2(30);
135891 l_component_type_code VARCHAR2(1);
135892 l_component_appl_id INTEGER;
135893 l_amb_context_code VARCHAR2(30);
135894 l_entity_code VARCHAR2(30);
135895 l_event_class_code VARCHAR2(30);
135896 l_ae_header_id NUMBER;
135897 l_event_type_code VARCHAR2(30);
135898 l_line_definition_code VARCHAR2(30);
135899 l_line_definition_owner_code VARCHAR2(1);
135900 --
135901 -- adr variables
135902 l_segment VARCHAR2(30);
135903 l_ccid NUMBER;
135904 l_adr_transaction_coa_id NUMBER;
135905 l_adr_accounting_coa_id NUMBER;
135906 l_adr_flexfield_segment_code VARCHAR2(30);
135907 l_adr_flex_value_set_id NUMBER;
135908 l_adr_value_type_code VARCHAR2(30);
135909 l_adr_value_combination_id NUMBER;
135910 l_adr_value_segment_code VARCHAR2(30);
135911
135912 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
135913 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
135914 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
135915 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
135916
135917 -- 4262811 Variables ------------------------------------------------------------------------------------------
135918 l_entered_amt_idx NUMBER;
135919 l_accted_amt_idx NUMBER;
135920 l_acc_rev_flag VARCHAR2(1);
135921 l_accrual_line_num NUMBER;
135922 l_tmp_amt NUMBER;
135923 l_acc_rev_natural_side_code VARCHAR2(1);
135924
135925 l_num_entries NUMBER;
135926 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
135927 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
135928 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
135929 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
135930 l_recog_line_1 NUMBER;
135931 l_recog_line_2 NUMBER;
135932
135933 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
135934 l_bflow_applied_to_amt NUMBER; -- 5132302
135935 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
135936
135937 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
135938
135939 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
135940 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
135941
135942 ---------------------------------------------------------------------------------------------------------------
135943
135944
135945 --
135946 -- bulk performance
135947 --
135948 l_balance_type_code VARCHAR2(1);
135949 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
135950 l_log_module VARCHAR2(240);
135951
135952 --
135953 -- Upgrade strategy
135954 --
135955 l_actual_upg_option VARCHAR2(1);
135956 l_enc_upg_option VARCHAR2(1);
135957
135958 --
135959 BEGIN
135960 --
135961 IF g_log_enabled THEN
135962 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_246';
135963 END IF;
135964 --
135965 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
135966
135967 trace
135968 (p_msg => 'BEGIN of AcctLineType_246'
135969 ,p_level => C_LEVEL_PROCEDURE
135970 ,p_module => l_log_module);
135971
135972 END IF;
135973 --
135974 l_component_type := 'AMB_JLT';
135975 l_component_code := 'WIP_VALUATION';
135976 l_component_type_code := 'S';
135977 l_component_appl_id := 707;
135978 l_amb_context_code := 'DEFAULT';
135979 l_entity_code := 'WIP_ACCOUNTING_EVENTS';
135980 l_event_class_code := 'OSP';
135981 l_event_type_code := 'OSP_ALL';
135982 l_line_definition_owner_code := 'S';
135983 l_line_definition_code := 'OUTSIDE_PROCESSING';
135984 --
135985 l_balance_type_code := 'A';
135986 l_segment := NULL;
135987 l_ccid := NULL;
135988 l_adr_transaction_coa_id := NULL;
135989 l_adr_accounting_coa_id := NULL;
135990 l_adr_flexfield_segment_code := NULL;
135991 l_adr_flex_value_set_id := NULL;
135992 l_adr_value_type_code := NULL;
135993 l_adr_value_combination_id := NULL;
135994 l_adr_value_segment_code := NULL;
135995
135996 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
135997 l_bflow_class_code := ''; -- 4219869 Business Flow
135998 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
135999 l_budgetary_control_flag := 'N';
136000
136001 l_bflow_applied_to_amt_idx := NULL; -- 5132302
136002 l_bflow_applied_to_amt := NULL; -- 5132302
136003 l_entered_amt_idx := NULL; -- 4262811
136004 l_accted_amt_idx := NULL; -- 4262811
136005 l_acc_rev_flag := NULL; -- 4262811
136006 l_accrual_line_num := NULL; -- 4262811
136007 l_tmp_amt := NULL; -- 4262811
136008 --
136009
136010 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
136011 l_balance_type_code <> 'B' THEN
136012 IF NVL(p_source_24,9E125) = 7
136013 THEN
136014
136015 --
136016 XLA_AE_LINES_PKG.SetNewLine;
136017
136018 p_balance_type_code := l_balance_type_code;
136019 -- set the flag so later we will know whether the gain loss line needs to be created
136020
136021 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
136022 p_actual_flag :='A';
136023 END IF;
136024
136025 --
136026 -- bulk performance
136027 --
136028 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
136029 p_header_num => 0); -- 4262811
136030 --
136031 -- set accounting line options
136032 --
136033 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
136034 p_natural_side_code => 'D'
136035 , p_gain_or_loss_flag => 'N'
136036 , p_gl_transfer_mode_code => 'S'
136037 , p_acct_entry_type_code => 'A'
136038 , p_switch_side_flag => 'Y'
136039 , p_merge_duplicate_code => 'N'
136040 );
136041 --
136042 l_acc_rev_natural_side_code := 'C'; -- 4262811
136043 --
136044 --
136045 -- set accounting line type info
136046 --
136047 xla_ae_lines_pkg.SetAcctLineType
136048 (p_component_type => l_component_type
136049 ,p_event_type_code => l_event_type_code
136050 ,p_line_definition_owner_code => l_line_definition_owner_code
136051 ,p_line_definition_code => l_line_definition_code
136052 ,p_accounting_line_code => l_component_code
136053 ,p_accounting_line_type_code => l_component_type_code
136054 ,p_accounting_line_appl_id => l_component_appl_id
136055 ,p_amb_context_code => l_amb_context_code
136056 ,p_entity_code => l_entity_code
136057 ,p_event_class_code => l_event_class_code);
136058 --
136059 -- set accounting class
136060 --
136061 xla_ae_lines_pkg.SetAcctClass(
136062 p_accounting_class_code => 'WIP_VALUATION'
136063 , p_ae_header_id => l_ae_header_id
136064 );
136065
136066 --
136067 -- set rounding class
136068 --
136069 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
136070 'WIP_VALUATION';
136071
136072 --
136073 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
136074 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
136075 --
136076 -- bulk performance
136077 --
136078 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
136079
136080 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
136081 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
136082
136083 -- 4955764
136084 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
136085 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
136086
136087 -- 4458381 Public Sector Enh
136088
136089 --
136090 -- set accounting attributes for the line type
136091 --
136092 l_entered_amt_idx := 3;
136093 l_accted_amt_idx := 8;
136094 l_bflow_applied_to_amt_idx := NULL; -- 5132302
136095 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
136096 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
136097 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
136098 l_rec_acct_attrs.array_char_value(2) := p_source_12;
136099 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
136100 l_rec_acct_attrs.array_num_value(3) := p_source_18;
136101 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
136102 l_rec_acct_attrs.array_char_value(4) := p_source_15;
136103 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
136104 l_rec_acct_attrs.array_date_value(5) := p_source_19;
136105 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
136106 l_rec_acct_attrs.array_num_value(6) := p_source_20;
136107 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
136108 l_rec_acct_attrs.array_num_value(7) := to_char(p_source_20);
136109 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
136110 l_rec_acct_attrs.array_num_value(8) := p_source_22;
136111
136112 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
136113 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
136114
136115 ---------------------------------------------------------------------------------------------------------------
136116 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
136117 ---------------------------------------------------------------------------------------------------------------
136118 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
136119
136120 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
136121 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
136122
136123 IF xla_accounting_cache_pkg.GetValueChar
136124 (p_source_code => 'LEDGER_CATEGORY_CODE'
136125 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
136126 AND l_bflow_method_code = 'PRIOR_ENTRY'
136127 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
136128 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
136129 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
136130 )
136131 THEN
136132 xla_ae_lines_pkg.BflowUpgEntry
136133 (p_business_method_code => l_bflow_method_code
136134 ,p_business_class_code => l_bflow_class_code
136135 ,p_balance_type => l_balance_type_code);
136136 ELSE
136137 NULL;
136138 -- No business flow processing for business flow method of NONE.
136139 END IF;
136140
136141 --
136142 -- call analytical criteria
136143 --
136144
136145 --
136146 -- call description
136147 --
136148 -- No description or it is inherited.
136149 --
136150 -- call ADRs
136151 -- Bug 4922099
136152 --
136153 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
136154 (NVL(l_actual_upg_option, 'N') = 'O') OR
136155 (NVL(l_enc_upg_option, 'N') = 'O')
136156 )
136157 THEN
136158 NULL;
136159 --
136160 --
136161
136162 l_ccid := AcctDerRule_4(
136163 p_application_id => p_application_id
136164 , p_ae_header_id => l_ae_header_id
136165 , p_source_4 => p_source_4
136166 , x_transaction_coa_id => l_adr_transaction_coa_id
136167 , x_accounting_coa_id => l_adr_accounting_coa_id
136168 , x_value_type_code => l_adr_value_type_code
136169 , p_side => 'NA'
136170 );
136171
136172 xla_ae_lines_pkg.set_ccid(
136173 p_code_combination_id => l_ccid
136174 , p_value_type_code => l_adr_value_type_code
136175 , p_transaction_coa_id => l_adr_transaction_coa_id
136176 , p_accounting_coa_id => l_adr_accounting_coa_id
136177 , p_adr_code => 'CST_DEFAULT'
136178 , p_adr_type_code => 'S'
136179 , p_component_type => l_component_type
136180 , p_component_code => l_component_code
136181 , p_component_type_code => l_component_type_code
136182 , p_component_appl_id => l_component_appl_id
136183 , p_amb_context_code => l_amb_context_code
136184 , p_side => 'NA'
136185 );
136186
136187
136188 --
136189 --
136190 END IF;
136191 --
136192 -- Bug 4922099
136193 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
136194 (NVL(l_enc_upg_option, 'N') = 'O')
136195 ) AND
136196 (l_bflow_method_code = 'PRIOR_ENTRY')
136197 )
136198 THEN
136199 IF
136200 --
136201 1 = 2
136202 --
136203 THEN
136204 xla_accounting_err_pkg.build_message
136205 (p_appli_s_name => 'XLA'
136206 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
136207 ,p_token_1 => 'LINE_NUMBER'
136208 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
136209 ,p_token_2 => 'LINE_TYPE_NAME'
136210 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
136211 l_component_type
136212 ,l_component_code
136213 ,l_component_type_code
136214 ,l_component_appl_id
136215 ,l_amb_context_code
136216 ,l_entity_code
136217 ,l_event_class_code
136218 )
136219 ,p_token_3 => 'OWNER'
136220 ,p_value_3 => xla_lookups_pkg.get_meaning(
136221 p_lookup_type => 'XLA_OWNER_TYPE'
136222 ,p_lookup_code => l_component_type_code
136223 )
136224 ,p_token_4 => 'PRODUCT_NAME'
136225 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
136226 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
136227 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
136228 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
136229 ,p_ae_header_id => NULL
136230 );
136231
136232 IF (C_LEVEL_ERROR>= g_log_level) THEN
136233 trace
136234 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
136235 ,p_level => C_LEVEL_ERROR
136236 ,p_module => l_log_module);
136237 END IF;
136238 END IF;
136239 END IF;
136240 --
136241 --
136242 ------------------------------------------------------------------------------------------------
136243 -- 4219869 Business Flow
136244 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
136245 -- Prior Entry. Currently, the following code is always generated.
136246 ------------------------------------------------------------------------------------------------
136247 XLA_AE_LINES_PKG.ValidateCurrentLine;
136248
136249 ------------------------------------------------------------------------------------
136250 -- 4219869 Business Flow
136251 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
136252 ------------------------------------------------------------------------------------
136253 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
136254
136255 ----------------------------------------------------------------------------------
136256 -- 4219869 Business Flow
136257 -- Update journal entry status -- Need to generate this within IF <condition>
136258 ----------------------------------------------------------------------------------
136259 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
136260 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
136261 ,p_balance_type_code => l_balance_type_code
136262 );
136263
136264 -------------------------------------------------------------------------------------------
136265 -- 4262811 - Generate the Accrual Reversal lines
136266 -------------------------------------------------------------------------------------------
136267 BEGIN
136268 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
136269 (g_array_event(p_event_id).array_value_num('header_index'));
136270 IF l_acc_rev_flag IS NULL THEN
136271 l_acc_rev_flag := 'N';
136272 END IF;
136273 EXCEPTION
136274 WHEN OTHERS THEN
136275 l_acc_rev_flag := 'N';
136276 END;
136277 --
136278 IF (l_acc_rev_flag = 'Y') THEN
136279
136280 -- 4645092 ------------------------------------------------------------------------------
136281 -- To allow MPA report to determine if it should generate report process
136282 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
136283 ------------------------------------------------------------------------------------------
136284
136285 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
136286 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
136287 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
136288 -- call ADRs
136289 -- Bug 4922099
136290 --
136291 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
136292 (NVL(l_actual_upg_option, 'N') = 'O') OR
136293 (NVL(l_enc_upg_option, 'N') = 'O')
136294 )
136295 THEN
136296 NULL;
136297 --
136298 --
136299
136300 l_ccid := AcctDerRule_4(
136301 p_application_id => p_application_id
136302 , p_ae_header_id => l_ae_header_id
136303 , p_source_4 => p_source_4
136304 , x_transaction_coa_id => l_adr_transaction_coa_id
136305 , x_accounting_coa_id => l_adr_accounting_coa_id
136306 , x_value_type_code => l_adr_value_type_code
136307 , p_side => 'NA'
136308 );
136309
136310 xla_ae_lines_pkg.set_ccid(
136311 p_code_combination_id => l_ccid
136312 , p_value_type_code => l_adr_value_type_code
136313 , p_transaction_coa_id => l_adr_transaction_coa_id
136314 , p_accounting_coa_id => l_adr_accounting_coa_id
136315 , p_adr_code => 'CST_DEFAULT'
136316 , p_adr_type_code => 'S'
136317 , p_component_type => l_component_type
136318 , p_component_code => l_component_code
136319 , p_component_type_code => l_component_type_code
136320 , p_component_appl_id => l_component_appl_id
136321 , p_amb_context_code => l_amb_context_code
136322 , p_side => 'NA'
136323 );
136324
136325
136326 --
136327 --
136328 END IF;
136329
136330 --
136331 -- Update the line information that should be overwritten
136332 --
136333 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
136334 p_header_num => 1);
136335 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
136336
136337 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
136338
136339 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
136340 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
136341 END IF;
136342
136343 --
136344 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
136345 --
136346 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
136347 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
136348 ELSE
136349 ---------------------------------------------------------------------------------------------------
136350 -- 4262811a Switch Sign
136351 ---------------------------------------------------------------------------------------------------
136352 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
136353 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
136354 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
136355 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
136356 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
136357 -- 5132302
136358 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
136359 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
136360
136361 END IF;
136362
136363 -- 4955764
136364 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
136365 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
136366
136367
136368 XLA_AE_LINES_PKG.ValidateCurrentLine;
136369 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
136370
136371 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
136372 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
136373 ,p_balance_type_code => l_balance_type_code);
136374
136375 END IF;
136376
136377 -----------------------------------------------------------------------------------------
136378 -- 4262811 Multiperiod Accounting
136379 -----------------------------------------------------------------------------------------
136380 -- No MPA option is assigned.
136381
136382
136383 END IF;
136384 END IF;
136385 --
136386
136387 --
136388 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
136389 trace
136390 (p_msg => 'END of AcctLineType_246'
136391 ,p_level => C_LEVEL_PROCEDURE
136392 ,p_module => l_log_module);
136393 END IF;
136394 --
136395 EXCEPTION
136396 WHEN xla_exceptions_pkg.application_exception THEN
136397 RAISE;
136398 WHEN OTHERS THEN
136399 xla_exceptions_pkg.raise_message
136400 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_246');
136401 END AcctLineType_246;
136402 --
136403
136404 ---------------------------------------
136405 --
136406 -- PRIVATE FUNCTION
136407 -- AcctLineType_247
136408 --
136409 ---------------------------------------
136410 PROCEDURE AcctLineType_247 (
136411 p_application_id IN NUMBER
136412 ,p_event_id IN NUMBER
136413 ,p_calculate_acctd_flag IN VARCHAR2
136414 ,p_calculate_g_l_flag IN VARCHAR2
136415 ,p_actual_flag IN OUT VARCHAR2
136416 ,p_balance_type_code OUT VARCHAR2
136417 ,p_gain_or_loss_ref OUT VARCHAR2
136418
136419 --Cost Management Default Account
136420 , p_source_4 IN NUMBER
136421 --DISTRIBUTION_IDENTIFIER
136422 , p_source_11 IN NUMBER
136423 --Distribution Type
136424 , p_source_12 IN VARCHAR2
136425 , p_source_12_meaning IN VARCHAR2
136426 --Entered Currency Code
136427 , p_source_15 IN VARCHAR2
136428 --Entered Amount
136429 , p_source_18 IN NUMBER
136430 --Currency Conversion Date
136431 , p_source_19 IN DATE
136432 --Currency Conversion Rate
136433 , p_source_20 IN NUMBER
136434 --Currency Conversion Type
136435 , p_source_21 IN VARCHAR2
136436 --Accounted Amount
136437 , p_source_22 IN NUMBER
136438 --Accounting Line Type
136439 , p_source_24 IN NUMBER
136440 )
136441 IS
136442
136443 l_component_type VARCHAR2(80);
136444 l_component_code VARCHAR2(30);
136445 l_component_type_code VARCHAR2(1);
136446 l_component_appl_id INTEGER;
136447 l_amb_context_code VARCHAR2(30);
136448 l_entity_code VARCHAR2(30);
136449 l_event_class_code VARCHAR2(30);
136450 l_ae_header_id NUMBER;
136451 l_event_type_code VARCHAR2(30);
136452 l_line_definition_code VARCHAR2(30);
136453 l_line_definition_owner_code VARCHAR2(1);
136454 --
136455 -- adr variables
136456 l_segment VARCHAR2(30);
136457 l_ccid NUMBER;
136458 l_adr_transaction_coa_id NUMBER;
136459 l_adr_accounting_coa_id NUMBER;
136460 l_adr_flexfield_segment_code VARCHAR2(30);
136461 l_adr_flex_value_set_id NUMBER;
136462 l_adr_value_type_code VARCHAR2(30);
136463 l_adr_value_combination_id NUMBER;
136464 l_adr_value_segment_code VARCHAR2(30);
136465
136466 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
136467 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
136468 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
136469 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
136470
136471 -- 4262811 Variables ------------------------------------------------------------------------------------------
136472 l_entered_amt_idx NUMBER;
136473 l_accted_amt_idx NUMBER;
136474 l_acc_rev_flag VARCHAR2(1);
136475 l_accrual_line_num NUMBER;
136476 l_tmp_amt NUMBER;
136477 l_acc_rev_natural_side_code VARCHAR2(1);
136478
136479 l_num_entries NUMBER;
136480 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
136481 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
136482 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
136483 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
136484 l_recog_line_1 NUMBER;
136485 l_recog_line_2 NUMBER;
136486
136487 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
136488 l_bflow_applied_to_amt NUMBER; -- 5132302
136489 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
136490
136491 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
136492
136493 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
136494 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
136495
136496 ---------------------------------------------------------------------------------------------------------------
136497
136498
136499 --
136500 -- bulk performance
136501 --
136502 l_balance_type_code VARCHAR2(1);
136503 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
136504 l_log_module VARCHAR2(240);
136505
136506 --
136507 -- Upgrade strategy
136508 --
136509 l_actual_upg_option VARCHAR2(1);
136510 l_enc_upg_option VARCHAR2(1);
136511
136512 --
136513 BEGIN
136514 --
136515 IF g_log_enabled THEN
136516 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_247';
136517 END IF;
136518 --
136519 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
136520
136521 trace
136522 (p_msg => 'BEGIN of AcctLineType_247'
136523 ,p_level => C_LEVEL_PROCEDURE
136524 ,p_module => l_log_module);
136525
136526 END IF;
136527 --
136528 l_component_type := 'AMB_JLT';
136529 l_component_code := 'WIP_VARIANCE';
136530 l_component_type_code := 'S';
136531 l_component_appl_id := 707;
136532 l_amb_context_code := 'DEFAULT';
136533 l_entity_code := 'WIP_ACCOUNTING_EVENTS';
136534 l_event_class_code := 'VARIANCE';
136535 l_event_type_code := 'VARIANCE_ALL';
136536 l_line_definition_owner_code := 'S';
136537 l_line_definition_code := 'VARIANCE';
136538 --
136539 l_balance_type_code := 'A';
136540 l_segment := NULL;
136541 l_ccid := NULL;
136542 l_adr_transaction_coa_id := NULL;
136543 l_adr_accounting_coa_id := NULL;
136544 l_adr_flexfield_segment_code := NULL;
136545 l_adr_flex_value_set_id := NULL;
136546 l_adr_value_type_code := NULL;
136547 l_adr_value_combination_id := NULL;
136548 l_adr_value_segment_code := NULL;
136549
136550 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
136551 l_bflow_class_code := ''; -- 4219869 Business Flow
136552 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
136553 l_budgetary_control_flag := 'N';
136554
136555 l_bflow_applied_to_amt_idx := NULL; -- 5132302
136556 l_bflow_applied_to_amt := NULL; -- 5132302
136557 l_entered_amt_idx := NULL; -- 4262811
136558 l_accted_amt_idx := NULL; -- 4262811
136559 l_acc_rev_flag := NULL; -- 4262811
136560 l_accrual_line_num := NULL; -- 4262811
136561 l_tmp_amt := NULL; -- 4262811
136562 --
136563
136564 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
136565 l_balance_type_code <> 'B' THEN
136566 IF NVL(p_source_24,9E125) = 8
136567 THEN
136568
136569 --
136570 XLA_AE_LINES_PKG.SetNewLine;
136571
136572 p_balance_type_code := l_balance_type_code;
136573 -- set the flag so later we will know whether the gain loss line needs to be created
136574
136575 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
136576 p_actual_flag :='A';
136577 END IF;
136578
136579 --
136580 -- bulk performance
136581 --
136582 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
136583 p_header_num => 0); -- 4262811
136584 --
136585 -- set accounting line options
136586 --
136587 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
136588 p_natural_side_code => 'D'
136589 , p_gain_or_loss_flag => 'N'
136590 , p_gl_transfer_mode_code => 'S'
136591 , p_acct_entry_type_code => 'A'
136592 , p_switch_side_flag => 'Y'
136593 , p_merge_duplicate_code => 'N'
136594 );
136595 --
136596 l_acc_rev_natural_side_code := 'C'; -- 4262811
136597 --
136598 --
136599 -- set accounting line type info
136600 --
136601 xla_ae_lines_pkg.SetAcctLineType
136602 (p_component_type => l_component_type
136603 ,p_event_type_code => l_event_type_code
136604 ,p_line_definition_owner_code => l_line_definition_owner_code
136605 ,p_line_definition_code => l_line_definition_code
136606 ,p_accounting_line_code => l_component_code
136607 ,p_accounting_line_type_code => l_component_type_code
136608 ,p_accounting_line_appl_id => l_component_appl_id
136609 ,p_amb_context_code => l_amb_context_code
136610 ,p_entity_code => l_entity_code
136611 ,p_event_class_code => l_event_class_code);
136612 --
136613 -- set accounting class
136614 --
136615 xla_ae_lines_pkg.SetAcctClass(
136616 p_accounting_class_code => 'WIP_VARIANCE'
136617 , p_ae_header_id => l_ae_header_id
136618 );
136619
136620 --
136621 -- set rounding class
136622 --
136623 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
136624 'WIP_VARIANCE';
136625
136626 --
136627 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
136628 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
136629 --
136630 -- bulk performance
136631 --
136632 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
136633
136634 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
136635 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
136636
136637 -- 4955764
136638 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
136639 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
136640
136641 -- 4458381 Public Sector Enh
136642
136643 --
136644 -- set accounting attributes for the line type
136645 --
136646 l_entered_amt_idx := 3;
136647 l_accted_amt_idx := 8;
136648 l_bflow_applied_to_amt_idx := NULL; -- 5132302
136649 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
136650 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
136651 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
136652 l_rec_acct_attrs.array_char_value(2) := p_source_12;
136653 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
136654 l_rec_acct_attrs.array_num_value(3) := p_source_18;
136655 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
136656 l_rec_acct_attrs.array_char_value(4) := p_source_15;
136657 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
136658 l_rec_acct_attrs.array_date_value(5) := p_source_19;
136659 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
136660 l_rec_acct_attrs.array_num_value(6) := p_source_20;
136661 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
136662 l_rec_acct_attrs.array_char_value(7) := p_source_21;
136663 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
136664 l_rec_acct_attrs.array_num_value(8) := p_source_22;
136665
136666 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
136667 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
136668
136669 ---------------------------------------------------------------------------------------------------------------
136670 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
136671 ---------------------------------------------------------------------------------------------------------------
136672 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
136673
136674 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
136675 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
136676
136677 IF xla_accounting_cache_pkg.GetValueChar
136678 (p_source_code => 'LEDGER_CATEGORY_CODE'
136679 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
136680 AND l_bflow_method_code = 'PRIOR_ENTRY'
136681 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
136682 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
136683 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
136684 )
136685 THEN
136686 xla_ae_lines_pkg.BflowUpgEntry
136687 (p_business_method_code => l_bflow_method_code
136688 ,p_business_class_code => l_bflow_class_code
136689 ,p_balance_type => l_balance_type_code);
136690 ELSE
136691 NULL;
136692 -- No business flow processing for business flow method of NONE.
136693 END IF;
136694
136695 --
136696 -- call analytical criteria
136697 --
136698
136699 --
136700 -- call description
136701 --
136702 -- No description or it is inherited.
136703 --
136704 -- call ADRs
136705 -- Bug 4922099
136706 --
136707 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
136708 (NVL(l_actual_upg_option, 'N') = 'O') OR
136709 (NVL(l_enc_upg_option, 'N') = 'O')
136710 )
136711 THEN
136712 NULL;
136713 --
136714 --
136715
136716 l_ccid := AcctDerRule_4(
136717 p_application_id => p_application_id
136718 , p_ae_header_id => l_ae_header_id
136719 , p_source_4 => p_source_4
136720 , x_transaction_coa_id => l_adr_transaction_coa_id
136721 , x_accounting_coa_id => l_adr_accounting_coa_id
136722 , x_value_type_code => l_adr_value_type_code
136723 , p_side => 'NA'
136724 );
136725
136726 xla_ae_lines_pkg.set_ccid(
136727 p_code_combination_id => l_ccid
136728 , p_value_type_code => l_adr_value_type_code
136729 , p_transaction_coa_id => l_adr_transaction_coa_id
136730 , p_accounting_coa_id => l_adr_accounting_coa_id
136731 , p_adr_code => 'CST_DEFAULT'
136732 , p_adr_type_code => 'S'
136733 , p_component_type => l_component_type
136734 , p_component_code => l_component_code
136735 , p_component_type_code => l_component_type_code
136736 , p_component_appl_id => l_component_appl_id
136737 , p_amb_context_code => l_amb_context_code
136738 , p_side => 'NA'
136739 );
136740
136741
136742 --
136743 --
136744 END IF;
136745 --
136746 -- Bug 4922099
136747 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
136748 (NVL(l_enc_upg_option, 'N') = 'O')
136749 ) AND
136750 (l_bflow_method_code = 'PRIOR_ENTRY')
136751 )
136752 THEN
136753 IF
136754 --
136755 1 = 2
136756 --
136757 THEN
136758 xla_accounting_err_pkg.build_message
136759 (p_appli_s_name => 'XLA'
136760 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
136761 ,p_token_1 => 'LINE_NUMBER'
136762 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
136763 ,p_token_2 => 'LINE_TYPE_NAME'
136764 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
136765 l_component_type
136766 ,l_component_code
136767 ,l_component_type_code
136768 ,l_component_appl_id
136769 ,l_amb_context_code
136770 ,l_entity_code
136771 ,l_event_class_code
136772 )
136773 ,p_token_3 => 'OWNER'
136774 ,p_value_3 => xla_lookups_pkg.get_meaning(
136775 p_lookup_type => 'XLA_OWNER_TYPE'
136776 ,p_lookup_code => l_component_type_code
136777 )
136778 ,p_token_4 => 'PRODUCT_NAME'
136779 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
136780 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
136781 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
136782 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
136783 ,p_ae_header_id => NULL
136784 );
136785
136786 IF (C_LEVEL_ERROR>= g_log_level) THEN
136787 trace
136788 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
136789 ,p_level => C_LEVEL_ERROR
136790 ,p_module => l_log_module);
136791 END IF;
136792 END IF;
136793 END IF;
136794 --
136795 --
136796 ------------------------------------------------------------------------------------------------
136797 -- 4219869 Business Flow
136798 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
136799 -- Prior Entry. Currently, the following code is always generated.
136800 ------------------------------------------------------------------------------------------------
136801 XLA_AE_LINES_PKG.ValidateCurrentLine;
136802
136803 ------------------------------------------------------------------------------------
136804 -- 4219869 Business Flow
136805 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
136806 ------------------------------------------------------------------------------------
136807 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
136808
136809 ----------------------------------------------------------------------------------
136810 -- 4219869 Business Flow
136811 -- Update journal entry status -- Need to generate this within IF <condition>
136812 ----------------------------------------------------------------------------------
136813 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
136814 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
136815 ,p_balance_type_code => l_balance_type_code
136816 );
136817
136818 -------------------------------------------------------------------------------------------
136819 -- 4262811 - Generate the Accrual Reversal lines
136820 -------------------------------------------------------------------------------------------
136821 BEGIN
136822 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
136823 (g_array_event(p_event_id).array_value_num('header_index'));
136824 IF l_acc_rev_flag IS NULL THEN
136825 l_acc_rev_flag := 'N';
136826 END IF;
136827 EXCEPTION
136828 WHEN OTHERS THEN
136829 l_acc_rev_flag := 'N';
136830 END;
136831 --
136832 IF (l_acc_rev_flag = 'Y') THEN
136833
136834 -- 4645092 ------------------------------------------------------------------------------
136835 -- To allow MPA report to determine if it should generate report process
136836 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
136837 ------------------------------------------------------------------------------------------
136838
136839 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
136840 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
136841 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
136842 -- call ADRs
136843 -- Bug 4922099
136844 --
136845 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
136846 (NVL(l_actual_upg_option, 'N') = 'O') OR
136847 (NVL(l_enc_upg_option, 'N') = 'O')
136848 )
136849 THEN
136850 NULL;
136851 --
136852 --
136853
136854 l_ccid := AcctDerRule_4(
136855 p_application_id => p_application_id
136856 , p_ae_header_id => l_ae_header_id
136857 , p_source_4 => p_source_4
136858 , x_transaction_coa_id => l_adr_transaction_coa_id
136859 , x_accounting_coa_id => l_adr_accounting_coa_id
136860 , x_value_type_code => l_adr_value_type_code
136861 , p_side => 'NA'
136862 );
136863
136864 xla_ae_lines_pkg.set_ccid(
136865 p_code_combination_id => l_ccid
136866 , p_value_type_code => l_adr_value_type_code
136867 , p_transaction_coa_id => l_adr_transaction_coa_id
136868 , p_accounting_coa_id => l_adr_accounting_coa_id
136869 , p_adr_code => 'CST_DEFAULT'
136870 , p_adr_type_code => 'S'
136871 , p_component_type => l_component_type
136872 , p_component_code => l_component_code
136873 , p_component_type_code => l_component_type_code
136874 , p_component_appl_id => l_component_appl_id
136875 , p_amb_context_code => l_amb_context_code
136876 , p_side => 'NA'
136877 );
136878
136879
136880 --
136881 --
136882 END IF;
136883
136884 --
136885 -- Update the line information that should be overwritten
136886 --
136887 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
136888 p_header_num => 1);
136889 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
136890
136891 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
136892
136893 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
136894 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
136895 END IF;
136896
136897 --
136898 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
136899 --
136900 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
136901 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
136902 ELSE
136903 ---------------------------------------------------------------------------------------------------
136904 -- 4262811a Switch Sign
136905 ---------------------------------------------------------------------------------------------------
136906 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
136907 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
136908 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
136909 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
136910 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
136911 -- 5132302
136912 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
136913 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
136914
136915 END IF;
136916
136917 -- 4955764
136918 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
136919 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
136920
136921
136922 XLA_AE_LINES_PKG.ValidateCurrentLine;
136923 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
136924
136925 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
136926 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
136927 ,p_balance_type_code => l_balance_type_code);
136928
136929 END IF;
136930
136931 -----------------------------------------------------------------------------------------
136932 -- 4262811 Multiperiod Accounting
136933 -----------------------------------------------------------------------------------------
136934 -- No MPA option is assigned.
136935
136936
136937 END IF;
136938 END IF;
136939 --
136940
136941 --
136942 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
136943 trace
136944 (p_msg => 'END of AcctLineType_247'
136945 ,p_level => C_LEVEL_PROCEDURE
136946 ,p_module => l_log_module);
136947 END IF;
136948 --
136949 EXCEPTION
136950 WHEN xla_exceptions_pkg.application_exception THEN
136951 RAISE;
136952 WHEN OTHERS THEN
136953 xla_exceptions_pkg.raise_message
136954 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_247');
136955 END AcctLineType_247;
136956 --
136957
136958 ---------------------------------------
136959 --
136960 -- PRIVATE FUNCTION
136961 -- AcctLineType_248
136962 --
136963 ---------------------------------------
136964 PROCEDURE AcctLineType_248 (
136965 p_application_id IN NUMBER
136966 ,p_event_id IN NUMBER
136967 ,p_calculate_acctd_flag IN VARCHAR2
136968 ,p_calculate_g_l_flag IN VARCHAR2
136969 ,p_actual_flag IN OUT VARCHAR2
136970 ,p_balance_type_code OUT VARCHAR2
136971 ,p_gain_or_loss_ref OUT VARCHAR2
136972
136973 --Write-Off Variance Account
136974 , p_source_2 IN NUMBER
136975 --Distribution Type
136976 , p_source_12 IN VARCHAR2
136977 , p_source_12_meaning IN VARCHAR2
136978 --Entered Currency Code
136979 , p_source_15 IN VARCHAR2
136980 --Entered Amount
136981 , p_source_18 IN NUMBER
136982 --Currency Conversion Date
136983 , p_source_19 IN DATE
136984 --Currency Conversion Rate
136985 , p_source_20 IN NUMBER
136986 --Currency Conversion Type
136987 , p_source_21 IN VARCHAR2
136988 --Accounted Amount
136989 , p_source_22 IN NUMBER
136990 --Line Number
136991 , p_source_25 IN NUMBER
136992 --WRITE_OFF_ID
136993 , p_source_26 IN NUMBER
136994 )
136995 IS
136996
136997 l_component_type VARCHAR2(80);
136998 l_component_code VARCHAR2(30);
136999 l_component_type_code VARCHAR2(1);
137000 l_component_appl_id INTEGER;
137001 l_amb_context_code VARCHAR2(30);
137002 l_entity_code VARCHAR2(30);
137003 l_event_class_code VARCHAR2(30);
137004 l_ae_header_id NUMBER;
137005 l_event_type_code VARCHAR2(30);
137006 l_line_definition_code VARCHAR2(30);
137007 l_line_definition_owner_code VARCHAR2(1);
137008 --
137009 -- adr variables
137010 l_segment VARCHAR2(30);
137011 l_ccid NUMBER;
137012 l_adr_transaction_coa_id NUMBER;
137013 l_adr_accounting_coa_id NUMBER;
137014 l_adr_flexfield_segment_code VARCHAR2(30);
137015 l_adr_flex_value_set_id NUMBER;
137016 l_adr_value_type_code VARCHAR2(30);
137017 l_adr_value_combination_id NUMBER;
137018 l_adr_value_segment_code VARCHAR2(30);
137019
137020 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
137021 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
137022 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
137023 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
137024
137025 -- 4262811 Variables ------------------------------------------------------------------------------------------
137026 l_entered_amt_idx NUMBER;
137027 l_accted_amt_idx NUMBER;
137028 l_acc_rev_flag VARCHAR2(1);
137029 l_accrual_line_num NUMBER;
137030 l_tmp_amt NUMBER;
137031 l_acc_rev_natural_side_code VARCHAR2(1);
137032
137033 l_num_entries NUMBER;
137034 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
137035 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
137036 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
137037 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
137038 l_recog_line_1 NUMBER;
137039 l_recog_line_2 NUMBER;
137040
137041 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
137042 l_bflow_applied_to_amt NUMBER; -- 5132302
137043 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
137044
137045 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
137046
137047 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
137048 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
137049
137050 ---------------------------------------------------------------------------------------------------------------
137051
137052
137053 --
137054 -- bulk performance
137055 --
137056 l_balance_type_code VARCHAR2(1);
137057 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
137058 l_log_module VARCHAR2(240);
137059
137060 --
137061 -- Upgrade strategy
137062 --
137063 l_actual_upg_option VARCHAR2(1);
137064 l_enc_upg_option VARCHAR2(1);
137065
137066 --
137067 BEGIN
137068 --
137069 IF g_log_enabled THEN
137070 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_248';
137071 END IF;
137072 --
137073 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
137074
137075 trace
137076 (p_msg => 'BEGIN of AcctLineType_248'
137077 ,p_level => C_LEVEL_PROCEDURE
137078 ,p_module => l_log_module);
137079
137080 END IF;
137081 --
137082 l_component_type := 'AMB_JLT';
137083 l_component_code := 'WO_VARIANCE';
137084 l_component_type_code := 'S';
137085 l_component_appl_id := 707;
137086 l_amb_context_code := 'DEFAULT';
137087 l_entity_code := 'WO_ACCOUNTING_EVENTS';
137088 l_event_class_code := 'ACCRUAL_WRITE_OFF';
137089 l_event_type_code := 'ACCRUAL_WRITE_OFF_ALL';
137090 l_line_definition_owner_code := 'S';
137091 l_line_definition_code := 'ACCRUAL_WRITE_OFF';
137092 --
137093 l_balance_type_code := 'A';
137094 l_segment := NULL;
137095 l_ccid := NULL;
137096 l_adr_transaction_coa_id := NULL;
137097 l_adr_accounting_coa_id := NULL;
137098 l_adr_flexfield_segment_code := NULL;
137099 l_adr_flex_value_set_id := NULL;
137100 l_adr_value_type_code := NULL;
137101 l_adr_value_combination_id := NULL;
137102 l_adr_value_segment_code := NULL;
137103
137104 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
137105 l_bflow_class_code := ''; -- 4219869 Business Flow
137106 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
137107 l_budgetary_control_flag := 'N';
137108
137109 l_bflow_applied_to_amt_idx := NULL; -- 5132302
137110 l_bflow_applied_to_amt := NULL; -- 5132302
137111 l_entered_amt_idx := NULL; -- 4262811
137112 l_accted_amt_idx := NULL; -- 4262811
137113 l_acc_rev_flag := NULL; -- 4262811
137114 l_accrual_line_num := NULL; -- 4262811
137115 l_tmp_amt := NULL; -- 4262811
137116 --
137117
137118 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
137119 l_balance_type_code <> 'B' THEN
137120 IF NVL(p_source_25,9E125) = 2
137121 THEN
137122
137123 --
137124 XLA_AE_LINES_PKG.SetNewLine;
137125
137126 p_balance_type_code := l_balance_type_code;
137127 -- set the flag so later we will know whether the gain loss line needs to be created
137128
137129 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
137130 p_actual_flag :='A';
137131 END IF;
137132
137133 --
137134 -- bulk performance
137135 --
137136 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
137137 p_header_num => 0); -- 4262811
137138 --
137139 -- set accounting line options
137140 --
137141 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
137142 p_natural_side_code => 'D'
137143 , p_gain_or_loss_flag => 'N'
137144 , p_gl_transfer_mode_code => 'S'
137145 , p_acct_entry_type_code => 'A'
137146 , p_switch_side_flag => 'Y'
137147 , p_merge_duplicate_code => 'N'
137148 );
137149 --
137150 l_acc_rev_natural_side_code := 'C'; -- 4262811
137151 --
137152 --
137153 -- set accounting line type info
137154 --
137155 xla_ae_lines_pkg.SetAcctLineType
137156 (p_component_type => l_component_type
137157 ,p_event_type_code => l_event_type_code
137158 ,p_line_definition_owner_code => l_line_definition_owner_code
137159 ,p_line_definition_code => l_line_definition_code
137160 ,p_accounting_line_code => l_component_code
137161 ,p_accounting_line_type_code => l_component_type_code
137162 ,p_accounting_line_appl_id => l_component_appl_id
137163 ,p_amb_context_code => l_amb_context_code
137164 ,p_entity_code => l_entity_code
137165 ,p_event_class_code => l_event_class_code);
137166 --
137167 -- set accounting class
137168 --
137169 xla_ae_lines_pkg.SetAcctClass(
137170 p_accounting_class_code => 'WRITE_OFF_VARIANCE'
137171 , p_ae_header_id => l_ae_header_id
137172 );
137173
137174 --
137175 -- set rounding class
137176 --
137177 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
137178 'WRITE_OFF_VARIANCE';
137179
137180 --
137181 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
137182 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
137183 --
137184 -- bulk performance
137185 --
137186 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
137187
137188 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
137189 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
137190
137191 -- 4955764
137192 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
137193 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
137194
137195 -- 4458381 Public Sector Enh
137196
137197 --
137198 -- set accounting attributes for the line type
137199 --
137200 l_entered_amt_idx := 3;
137201 l_accted_amt_idx := 8;
137202 l_bflow_applied_to_amt_idx := NULL; -- 5132302
137203 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
137204 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_26);
137205 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
137206 l_rec_acct_attrs.array_char_value(2) := p_source_12;
137207 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
137208 l_rec_acct_attrs.array_num_value(3) := p_source_18;
137209 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
137210 l_rec_acct_attrs.array_char_value(4) := p_source_15;
137211 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
137212 l_rec_acct_attrs.array_date_value(5) := p_source_19;
137213 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
137214 l_rec_acct_attrs.array_num_value(6) := p_source_20;
137215 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
137216 l_rec_acct_attrs.array_char_value(7) := p_source_21;
137217 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
137218 l_rec_acct_attrs.array_num_value(8) := p_source_22;
137219
137220 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
137221 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
137222
137223 ---------------------------------------------------------------------------------------------------------------
137224 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
137225 ---------------------------------------------------------------------------------------------------------------
137226 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
137227
137228 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
137229 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
137230
137231 IF xla_accounting_cache_pkg.GetValueChar
137232 (p_source_code => 'LEDGER_CATEGORY_CODE'
137233 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
137234 AND l_bflow_method_code = 'PRIOR_ENTRY'
137235 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
137236 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
137237 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
137238 )
137239 THEN
137240 xla_ae_lines_pkg.BflowUpgEntry
137241 (p_business_method_code => l_bflow_method_code
137242 ,p_business_class_code => l_bflow_class_code
137243 ,p_balance_type => l_balance_type_code);
137244 ELSE
137245 NULL;
137246 -- No business flow processing for business flow method of NONE.
137247 END IF;
137248
137249 --
137250 -- call analytical criteria
137251 --
137252
137253 --
137254 -- call description
137255 --
137256 -- No description or it is inherited.
137257 --
137258 -- call ADRs
137259 -- Bug 4922099
137260 --
137261 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
137262 (NVL(l_actual_upg_option, 'N') = 'O') OR
137263 (NVL(l_enc_upg_option, 'N') = 'O')
137264 )
137265 THEN
137266 NULL;
137267 --
137268 --
137269
137270 l_ccid := AcctDerRule_2(
137271 p_application_id => p_application_id
137272 , p_ae_header_id => l_ae_header_id
137273 , p_source_2 => p_source_2
137274 , x_transaction_coa_id => l_adr_transaction_coa_id
137275 , x_accounting_coa_id => l_adr_accounting_coa_id
137276 , x_value_type_code => l_adr_value_type_code
137277 , p_side => 'NA'
137278 );
137279
137280 xla_ae_lines_pkg.set_ccid(
137281 p_code_combination_id => l_ccid
137282 , p_value_type_code => l_adr_value_type_code
137283 , p_transaction_coa_id => l_adr_transaction_coa_id
137284 , p_accounting_coa_id => l_adr_accounting_coa_id
137285 , p_adr_code => 'CST_AWO_ERV'
137286 , p_adr_type_code => 'S'
137287 , p_component_type => l_component_type
137288 , p_component_code => l_component_code
137289 , p_component_type_code => l_component_type_code
137290 , p_component_appl_id => l_component_appl_id
137291 , p_amb_context_code => l_amb_context_code
137292 , p_side => 'NA'
137293 );
137294
137295
137296 --
137297 --
137298 END IF;
137299 --
137300 -- Bug 4922099
137301 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
137302 (NVL(l_enc_upg_option, 'N') = 'O')
137303 ) AND
137304 (l_bflow_method_code = 'PRIOR_ENTRY')
137305 )
137306 THEN
137307 IF
137308 --
137309 1 = 2
137310 --
137311 THEN
137312 xla_accounting_err_pkg.build_message
137313 (p_appli_s_name => 'XLA'
137314 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
137315 ,p_token_1 => 'LINE_NUMBER'
137316 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
137317 ,p_token_2 => 'LINE_TYPE_NAME'
137318 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
137319 l_component_type
137320 ,l_component_code
137321 ,l_component_type_code
137322 ,l_component_appl_id
137323 ,l_amb_context_code
137324 ,l_entity_code
137325 ,l_event_class_code
137326 )
137327 ,p_token_3 => 'OWNER'
137328 ,p_value_3 => xla_lookups_pkg.get_meaning(
137329 p_lookup_type => 'XLA_OWNER_TYPE'
137330 ,p_lookup_code => l_component_type_code
137331 )
137332 ,p_token_4 => 'PRODUCT_NAME'
137333 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
137334 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
137335 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
137336 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
137337 ,p_ae_header_id => NULL
137338 );
137339
137340 IF (C_LEVEL_ERROR>= g_log_level) THEN
137341 trace
137342 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
137343 ,p_level => C_LEVEL_ERROR
137344 ,p_module => l_log_module);
137345 END IF;
137346 END IF;
137347 END IF;
137348 --
137349 --
137350 ------------------------------------------------------------------------------------------------
137351 -- 4219869 Business Flow
137352 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
137353 -- Prior Entry. Currently, the following code is always generated.
137354 ------------------------------------------------------------------------------------------------
137355 XLA_AE_LINES_PKG.ValidateCurrentLine;
137356
137357 ------------------------------------------------------------------------------------
137358 -- 4219869 Business Flow
137359 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
137360 ------------------------------------------------------------------------------------
137361 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
137362
137363 ----------------------------------------------------------------------------------
137364 -- 4219869 Business Flow
137365 -- Update journal entry status -- Need to generate this within IF <condition>
137366 ----------------------------------------------------------------------------------
137367 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
137368 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
137369 ,p_balance_type_code => l_balance_type_code
137370 );
137371
137372 -------------------------------------------------------------------------------------------
137373 -- 4262811 - Generate the Accrual Reversal lines
137374 -------------------------------------------------------------------------------------------
137375 BEGIN
137376 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
137377 (g_array_event(p_event_id).array_value_num('header_index'));
137378 IF l_acc_rev_flag IS NULL THEN
137379 l_acc_rev_flag := 'N';
137380 END IF;
137381 EXCEPTION
137382 WHEN OTHERS THEN
137383 l_acc_rev_flag := 'N';
137384 END;
137385 --
137386 IF (l_acc_rev_flag = 'Y') THEN
137387
137388 -- 4645092 ------------------------------------------------------------------------------
137389 -- To allow MPA report to determine if it should generate report process
137390 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
137391 ------------------------------------------------------------------------------------------
137392
137393 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
137394 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
137395 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
137396 -- call ADRs
137397 -- Bug 4922099
137398 --
137399 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
137400 (NVL(l_actual_upg_option, 'N') = 'O') OR
137401 (NVL(l_enc_upg_option, 'N') = 'O')
137402 )
137403 THEN
137404 NULL;
137405 --
137406 --
137407
137408 l_ccid := AcctDerRule_2(
137409 p_application_id => p_application_id
137410 , p_ae_header_id => l_ae_header_id
137411 , p_source_2 => p_source_2
137412 , x_transaction_coa_id => l_adr_transaction_coa_id
137413 , x_accounting_coa_id => l_adr_accounting_coa_id
137414 , x_value_type_code => l_adr_value_type_code
137415 , p_side => 'NA'
137416 );
137417
137418 xla_ae_lines_pkg.set_ccid(
137419 p_code_combination_id => l_ccid
137420 , p_value_type_code => l_adr_value_type_code
137421 , p_transaction_coa_id => l_adr_transaction_coa_id
137422 , p_accounting_coa_id => l_adr_accounting_coa_id
137423 , p_adr_code => 'CST_AWO_ERV'
137424 , p_adr_type_code => 'S'
137425 , p_component_type => l_component_type
137426 , p_component_code => l_component_code
137427 , p_component_type_code => l_component_type_code
137428 , p_component_appl_id => l_component_appl_id
137429 , p_amb_context_code => l_amb_context_code
137430 , p_side => 'NA'
137431 );
137432
137433
137434 --
137435 --
137436 END IF;
137437
137438 --
137439 -- Update the line information that should be overwritten
137440 --
137441 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
137442 p_header_num => 1);
137443 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
137444
137445 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
137446
137447 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
137448 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
137449 END IF;
137450
137451 --
137452 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
137453 --
137454 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
137455 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
137456 ELSE
137457 ---------------------------------------------------------------------------------------------------
137458 -- 4262811a Switch Sign
137459 ---------------------------------------------------------------------------------------------------
137460 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
137461 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
137462 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
137463 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
137464 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
137465 -- 5132302
137466 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
137467 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
137468
137469 END IF;
137470
137471 -- 4955764
137472 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
137473 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
137474
137475
137476 XLA_AE_LINES_PKG.ValidateCurrentLine;
137477 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
137478
137479 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
137480 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
137481 ,p_balance_type_code => l_balance_type_code);
137482
137483 END IF;
137484
137485 -----------------------------------------------------------------------------------------
137486 -- 4262811 Multiperiod Accounting
137487 -----------------------------------------------------------------------------------------
137488 -- No MPA option is assigned.
137489
137490
137491 END IF;
137492 END IF;
137493 --
137494
137495 --
137496 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
137497 trace
137498 (p_msg => 'END of AcctLineType_248'
137499 ,p_level => C_LEVEL_PROCEDURE
137500 ,p_module => l_log_module);
137501 END IF;
137502 --
137503 EXCEPTION
137504 WHEN xla_exceptions_pkg.application_exception THEN
137505 RAISE;
137506 WHEN OTHERS THEN
137507 xla_exceptions_pkg.raise_message
137508 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_248');
137509 END AcctLineType_248;
137510 --
137511
137512 ---------------------------------------
137513 --
137514 -- PRIVATE FUNCTION
137515 -- AcctLineType_249
137516 --
137517 ---------------------------------------
137518 PROCEDURE AcctLineType_249 (
137519 p_application_id IN NUMBER
137520 ,p_event_id IN NUMBER
137521 ,p_calculate_acctd_flag IN VARCHAR2
137522 ,p_calculate_g_l_flag IN VARCHAR2
137523 ,p_actual_flag IN OUT VARCHAR2
137524 ,p_balance_type_code OUT VARCHAR2
137525 ,p_gain_or_loss_ref OUT VARCHAR2
137526
137527 --Accrual Account for the Write Off
137528 , p_source_1 IN NUMBER
137529 --Distribution Type
137530 , p_source_12 IN VARCHAR2
137531 , p_source_12_meaning IN VARCHAR2
137532 --Entered Currency Code
137533 , p_source_15 IN VARCHAR2
137534 --Entered Amount
137535 , p_source_18 IN NUMBER
137536 --Currency Conversion Date
137537 , p_source_19 IN DATE
137538 --Currency Conversion Rate
137539 , p_source_20 IN NUMBER
137540 --Currency Conversion Type
137541 , p_source_21 IN VARCHAR2
137542 --Accounted Amount
137543 , p_source_22 IN NUMBER
137544 --Line Number
137545 , p_source_25 IN NUMBER
137546 --WRITE_OFF_ID
137547 , p_source_26 IN NUMBER
137548 )
137549 IS
137550
137551 l_component_type VARCHAR2(80);
137552 l_component_code VARCHAR2(30);
137553 l_component_type_code VARCHAR2(1);
137554 l_component_appl_id INTEGER;
137555 l_amb_context_code VARCHAR2(30);
137556 l_entity_code VARCHAR2(30);
137557 l_event_class_code VARCHAR2(30);
137558 l_ae_header_id NUMBER;
137559 l_event_type_code VARCHAR2(30);
137560 l_line_definition_code VARCHAR2(30);
137561 l_line_definition_owner_code VARCHAR2(1);
137562 --
137563 -- adr variables
137564 l_segment VARCHAR2(30);
137565 l_ccid NUMBER;
137566 l_adr_transaction_coa_id NUMBER;
137567 l_adr_accounting_coa_id NUMBER;
137568 l_adr_flexfield_segment_code VARCHAR2(30);
137569 l_adr_flex_value_set_id NUMBER;
137570 l_adr_value_type_code VARCHAR2(30);
137571 l_adr_value_combination_id NUMBER;
137572 l_adr_value_segment_code VARCHAR2(30);
137573
137574 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
137575 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
137576 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
137577 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
137578
137579 -- 4262811 Variables ------------------------------------------------------------------------------------------
137580 l_entered_amt_idx NUMBER;
137581 l_accted_amt_idx NUMBER;
137582 l_acc_rev_flag VARCHAR2(1);
137583 l_accrual_line_num NUMBER;
137584 l_tmp_amt NUMBER;
137585 l_acc_rev_natural_side_code VARCHAR2(1);
137586
137587 l_num_entries NUMBER;
137588 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
137589 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
137590 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
137591 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
137592 l_recog_line_1 NUMBER;
137593 l_recog_line_2 NUMBER;
137594
137595 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
137596 l_bflow_applied_to_amt NUMBER; -- 5132302
137597 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
137598
137599 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
137600
137601 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
137602 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
137603
137604 ---------------------------------------------------------------------------------------------------------------
137605
137606
137607 --
137608 -- bulk performance
137609 --
137610 l_balance_type_code VARCHAR2(1);
137611 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
137612 l_log_module VARCHAR2(240);
137613
137614 --
137615 -- Upgrade strategy
137616 --
137617 l_actual_upg_option VARCHAR2(1);
137618 l_enc_upg_option VARCHAR2(1);
137619
137620 --
137621 BEGIN
137622 --
137623 IF g_log_enabled THEN
137624 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_249';
137625 END IF;
137626 --
137627 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
137628
137629 trace
137630 (p_msg => 'BEGIN of AcctLineType_249'
137631 ,p_level => C_LEVEL_PROCEDURE
137632 ,p_module => l_log_module);
137633
137634 END IF;
137635 --
137636 l_component_type := 'AMB_JLT';
137637 l_component_code := 'WO_VAR_OFFSET_ACCRUAL';
137638 l_component_type_code := 'S';
137639 l_component_appl_id := 707;
137640 l_amb_context_code := 'DEFAULT';
137641 l_entity_code := 'WO_ACCOUNTING_EVENTS';
137642 l_event_class_code := 'ACCRUAL_WRITE_OFF';
137643 l_event_type_code := 'ACCRUAL_WRITE_OFF_ALL';
137644 l_line_definition_owner_code := 'S';
137645 l_line_definition_code := 'ACCRUAL_WRITE_OFF';
137646 --
137647 l_balance_type_code := 'A';
137648 l_segment := NULL;
137649 l_ccid := NULL;
137650 l_adr_transaction_coa_id := NULL;
137651 l_adr_accounting_coa_id := NULL;
137652 l_adr_flexfield_segment_code := NULL;
137653 l_adr_flex_value_set_id := NULL;
137654 l_adr_value_type_code := NULL;
137655 l_adr_value_combination_id := NULL;
137656 l_adr_value_segment_code := NULL;
137657
137658 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
137659 l_bflow_class_code := ''; -- 4219869 Business Flow
137660 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
137661 l_budgetary_control_flag := 'N';
137662
137663 l_bflow_applied_to_amt_idx := NULL; -- 5132302
137664 l_bflow_applied_to_amt := NULL; -- 5132302
137665 l_entered_amt_idx := NULL; -- 4262811
137666 l_accted_amt_idx := NULL; -- 4262811
137667 l_acc_rev_flag := NULL; -- 4262811
137668 l_accrual_line_num := NULL; -- 4262811
137669 l_tmp_amt := NULL; -- 4262811
137670 --
137671
137672 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
137673 l_balance_type_code <> 'B' THEN
137674 IF NVL(p_source_25,9E125) = 2
137675 THEN
137676
137677 --
137678 XLA_AE_LINES_PKG.SetNewLine;
137679
137680 p_balance_type_code := l_balance_type_code;
137681 -- set the flag so later we will know whether the gain loss line needs to be created
137682
137683 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
137684 p_actual_flag :='A';
137685 END IF;
137686
137687 --
137688 -- bulk performance
137689 --
137690 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
137691 p_header_num => 0); -- 4262811
137692 --
137693 -- set accounting line options
137694 --
137695 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
137696 p_natural_side_code => 'C'
137697 , p_gain_or_loss_flag => 'N'
137698 , p_gl_transfer_mode_code => 'S'
137699 , p_acct_entry_type_code => 'A'
137700 , p_switch_side_flag => 'Y'
137701 , p_merge_duplicate_code => 'N'
137702 );
137703 --
137704 l_acc_rev_natural_side_code := 'D'; -- 4262811
137705 --
137706 --
137707 -- set accounting line type info
137708 --
137709 xla_ae_lines_pkg.SetAcctLineType
137710 (p_component_type => l_component_type
137711 ,p_event_type_code => l_event_type_code
137712 ,p_line_definition_owner_code => l_line_definition_owner_code
137713 ,p_line_definition_code => l_line_definition_code
137714 ,p_accounting_line_code => l_component_code
137715 ,p_accounting_line_type_code => l_component_type_code
137716 ,p_accounting_line_appl_id => l_component_appl_id
137717 ,p_amb_context_code => l_amb_context_code
137718 ,p_entity_code => l_entity_code
137719 ,p_event_class_code => l_event_class_code);
137720 --
137721 -- set accounting class
137722 --
137723 xla_ae_lines_pkg.SetAcctClass(
137724 p_accounting_class_code => 'ACCRUAL'
137725 , p_ae_header_id => l_ae_header_id
137726 );
137727
137728 --
137729 -- set rounding class
137730 --
137731 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
137732 'ACCRUAL';
137733
137734 --
137735 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
137736 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
137737 --
137738 -- bulk performance
137739 --
137740 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
137741
137742 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
137743 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
137744
137745 -- 4955764
137746 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
137747 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
137748
137749 -- 4458381 Public Sector Enh
137750
137751 --
137752 -- set accounting attributes for the line type
137753 --
137754 l_entered_amt_idx := 3;
137755 l_accted_amt_idx := 8;
137756 l_bflow_applied_to_amt_idx := NULL; -- 5132302
137757 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
137758 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_26);
137759 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
137760 l_rec_acct_attrs.array_char_value(2) := p_source_12;
137761 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
137762 l_rec_acct_attrs.array_num_value(3) := p_source_18;
137763 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
137764 l_rec_acct_attrs.array_char_value(4) := p_source_15;
137765 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
137766 l_rec_acct_attrs.array_date_value(5) := p_source_19;
137767 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
137768 l_rec_acct_attrs.array_num_value(6) := p_source_20;
137769 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
137770 l_rec_acct_attrs.array_char_value(7) := p_source_21;
137771 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
137772 l_rec_acct_attrs.array_num_value(8) := p_source_22;
137773
137774 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
137775 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
137776
137777 ---------------------------------------------------------------------------------------------------------------
137778 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
137779 ---------------------------------------------------------------------------------------------------------------
137780 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
137781
137782 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
137783 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
137784
137785 IF xla_accounting_cache_pkg.GetValueChar
137786 (p_source_code => 'LEDGER_CATEGORY_CODE'
137787 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
137788 AND l_bflow_method_code = 'PRIOR_ENTRY'
137789 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
137790 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
137791 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
137792 )
137793 THEN
137794 xla_ae_lines_pkg.BflowUpgEntry
137795 (p_business_method_code => l_bflow_method_code
137796 ,p_business_class_code => l_bflow_class_code
137797 ,p_balance_type => l_balance_type_code);
137798 ELSE
137799 NULL;
137800 -- No business flow processing for business flow method of NONE.
137801 END IF;
137802
137803 --
137804 -- call analytical criteria
137805 --
137806
137807 --
137808 -- call description
137809 --
137810 -- No description or it is inherited.
137811 --
137812 -- call ADRs
137813 -- Bug 4922099
137814 --
137815 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
137816 (NVL(l_actual_upg_option, 'N') = 'O') OR
137817 (NVL(l_enc_upg_option, 'N') = 'O')
137818 )
137819 THEN
137820 NULL;
137821 --
137822 --
137823
137824 l_ccid := AcctDerRule_1(
137825 p_application_id => p_application_id
137826 , p_ae_header_id => l_ae_header_id
137827 , p_source_1 => p_source_1
137828 , x_transaction_coa_id => l_adr_transaction_coa_id
137829 , x_accounting_coa_id => l_adr_accounting_coa_id
137830 , x_value_type_code => l_adr_value_type_code
137831 , p_side => 'NA'
137832 );
137833
137834 xla_ae_lines_pkg.set_ccid(
137835 p_code_combination_id => l_ccid
137836 , p_value_type_code => l_adr_value_type_code
137837 , p_transaction_coa_id => l_adr_transaction_coa_id
137838 , p_accounting_coa_id => l_adr_accounting_coa_id
137839 , p_adr_code => 'CST_AWO_ACCRUAL'
137840 , p_adr_type_code => 'S'
137841 , p_component_type => l_component_type
137842 , p_component_code => l_component_code
137843 , p_component_type_code => l_component_type_code
137844 , p_component_appl_id => l_component_appl_id
137845 , p_amb_context_code => l_amb_context_code
137846 , p_side => 'NA'
137847 );
137848
137849
137850 --
137851 --
137852 END IF;
137853 --
137854 -- Bug 4922099
137855 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
137856 (NVL(l_enc_upg_option, 'N') = 'O')
137857 ) AND
137858 (l_bflow_method_code = 'PRIOR_ENTRY')
137859 )
137860 THEN
137861 IF
137862 --
137863 1 = 2
137864 --
137865 THEN
137866 xla_accounting_err_pkg.build_message
137867 (p_appli_s_name => 'XLA'
137868 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
137869 ,p_token_1 => 'LINE_NUMBER'
137870 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
137871 ,p_token_2 => 'LINE_TYPE_NAME'
137872 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
137873 l_component_type
137874 ,l_component_code
137875 ,l_component_type_code
137876 ,l_component_appl_id
137877 ,l_amb_context_code
137878 ,l_entity_code
137879 ,l_event_class_code
137880 )
137881 ,p_token_3 => 'OWNER'
137882 ,p_value_3 => xla_lookups_pkg.get_meaning(
137883 p_lookup_type => 'XLA_OWNER_TYPE'
137884 ,p_lookup_code => l_component_type_code
137885 )
137886 ,p_token_4 => 'PRODUCT_NAME'
137887 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
137888 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
137889 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
137890 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
137891 ,p_ae_header_id => NULL
137892 );
137893
137894 IF (C_LEVEL_ERROR>= g_log_level) THEN
137895 trace
137896 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
137897 ,p_level => C_LEVEL_ERROR
137898 ,p_module => l_log_module);
137899 END IF;
137900 END IF;
137901 END IF;
137902 --
137903 --
137904 ------------------------------------------------------------------------------------------------
137905 -- 4219869 Business Flow
137906 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
137907 -- Prior Entry. Currently, the following code is always generated.
137908 ------------------------------------------------------------------------------------------------
137909 XLA_AE_LINES_PKG.ValidateCurrentLine;
137910
137911 ------------------------------------------------------------------------------------
137912 -- 4219869 Business Flow
137913 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
137914 ------------------------------------------------------------------------------------
137915 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
137916
137917 ----------------------------------------------------------------------------------
137918 -- 4219869 Business Flow
137919 -- Update journal entry status -- Need to generate this within IF <condition>
137920 ----------------------------------------------------------------------------------
137921 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
137922 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
137923 ,p_balance_type_code => l_balance_type_code
137924 );
137925
137926 -------------------------------------------------------------------------------------------
137927 -- 4262811 - Generate the Accrual Reversal lines
137928 -------------------------------------------------------------------------------------------
137929 BEGIN
137930 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
137931 (g_array_event(p_event_id).array_value_num('header_index'));
137932 IF l_acc_rev_flag IS NULL THEN
137933 l_acc_rev_flag := 'N';
137934 END IF;
137935 EXCEPTION
137936 WHEN OTHERS THEN
137937 l_acc_rev_flag := 'N';
137938 END;
137939 --
137940 IF (l_acc_rev_flag = 'Y') THEN
137941
137942 -- 4645092 ------------------------------------------------------------------------------
137943 -- To allow MPA report to determine if it should generate report process
137944 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
137945 ------------------------------------------------------------------------------------------
137946
137947 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
137948 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
137949 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
137950 -- call ADRs
137951 -- Bug 4922099
137952 --
137953 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
137954 (NVL(l_actual_upg_option, 'N') = 'O') OR
137955 (NVL(l_enc_upg_option, 'N') = 'O')
137956 )
137957 THEN
137958 NULL;
137959 --
137960 --
137961
137962 l_ccid := AcctDerRule_1(
137963 p_application_id => p_application_id
137964 , p_ae_header_id => l_ae_header_id
137965 , p_source_1 => p_source_1
137966 , x_transaction_coa_id => l_adr_transaction_coa_id
137967 , x_accounting_coa_id => l_adr_accounting_coa_id
137968 , x_value_type_code => l_adr_value_type_code
137969 , p_side => 'NA'
137970 );
137971
137972 xla_ae_lines_pkg.set_ccid(
137973 p_code_combination_id => l_ccid
137974 , p_value_type_code => l_adr_value_type_code
137975 , p_transaction_coa_id => l_adr_transaction_coa_id
137976 , p_accounting_coa_id => l_adr_accounting_coa_id
137977 , p_adr_code => 'CST_AWO_ACCRUAL'
137978 , p_adr_type_code => 'S'
137979 , p_component_type => l_component_type
137980 , p_component_code => l_component_code
137981 , p_component_type_code => l_component_type_code
137982 , p_component_appl_id => l_component_appl_id
137983 , p_amb_context_code => l_amb_context_code
137984 , p_side => 'NA'
137985 );
137986
137987
137988 --
137989 --
137990 END IF;
137991
137992 --
137993 -- Update the line information that should be overwritten
137994 --
137995 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
137996 p_header_num => 1);
137997 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
137998
137999 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
138000
138001 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
138002 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
138003 END IF;
138004
138005 --
138006 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
138007 --
138008 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
138009 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
138010 ELSE
138011 ---------------------------------------------------------------------------------------------------
138012 -- 4262811a Switch Sign
138013 ---------------------------------------------------------------------------------------------------
138014 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
138015 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
138016 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
138017 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
138018 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
138019 -- 5132302
138020 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
138021 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
138022
138023 END IF;
138024
138025 -- 4955764
138026 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
138027 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
138028
138029
138030 XLA_AE_LINES_PKG.ValidateCurrentLine;
138031 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
138032
138033 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
138034 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
138035 ,p_balance_type_code => l_balance_type_code);
138036
138037 END IF;
138038
138039 -----------------------------------------------------------------------------------------
138040 -- 4262811 Multiperiod Accounting
138041 -----------------------------------------------------------------------------------------
138042 -- No MPA option is assigned.
138043
138044
138045 END IF;
138046 END IF;
138047 --
138048
138049 --
138050 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
138051 trace
138052 (p_msg => 'END of AcctLineType_249'
138053 ,p_level => C_LEVEL_PROCEDURE
138054 ,p_module => l_log_module);
138055 END IF;
138056 --
138057 EXCEPTION
138058 WHEN xla_exceptions_pkg.application_exception THEN
138059 RAISE;
138060 WHEN OTHERS THEN
138061 xla_exceptions_pkg.raise_message
138062 (p_location => 'XLA_00707_AAD_S_000007_PKG.AcctLineType_249');
138063 END AcctLineType_249;
138064 --
138065
138066 ---------------------------------------
138067 --
138068 -- PRIVATE PROCEDURE
138069 -- insert_sources_250
138070 --
138071 ----------------------------------------
138072 --
138073 PROCEDURE insert_sources_250(
138074 p_target_ledger_id IN NUMBER
138075 , p_language IN VARCHAR2
138076 , p_sla_ledger_id IN NUMBER
138077 , p_pad_start_date IN DATE
138078 , p_pad_end_date IN DATE
138079 )
138080 IS
138081
138082 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'ABSORPTION_ALL';
138083 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'ABSORPTION';
138084 p_apps_owner VARCHAR2(30);
138085 l_log_module VARCHAR2(240);
138086 BEGIN
138087 IF g_log_enabled THEN
138088 l_log_module := C_DEFAULT_MODULE||'.insert_sources_250';
138089 END IF;
138090 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
138091
138092 trace
138093 (p_msg => 'BEGIN of insert_sources_250'
138094 ,p_level => C_LEVEL_PROCEDURE
138095 ,p_module => l_log_module);
138096
138097 END IF;
138098
138099 -- select APPS owner
138100 SELECT oracle_username
138101 INTO p_apps_owner
138102 FROM fnd_oracle_userid
138103 WHERE read_only_flag = 'U'
138104 ;
138105
138106 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
138107 trace
138108 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
138109 ' - p_language = '||p_language||
138110 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
138111 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
138112 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
138113 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
138114 ,p_level => C_LEVEL_STATEMENT
138115 ,p_module => l_log_module);
138116 END IF;
138117
138118
138119 --
138120 INSERT INTO xla_diag_sources --hdr2
138121 (
138122 event_id
138123 , ledger_id
138124 , sla_ledger_id
138125 , description_language
138126 , object_name
138127 , object_type_code
138128 , line_number
138129 , source_application_id
138130 , source_type_code
138131 , source_code
138132 , source_value
138133 , source_meaning
138134 , created_by
138135 , creation_date
138136 , last_update_date
138137 , last_updated_by
138138 , last_update_login
138139 , program_update_date
138140 , program_application_id
138141 , program_id
138142 , request_id
138143 )
138144 SELECT
138145 event_id
138146 , p_target_ledger_id
138147 , p_sla_ledger_id
138148 , p_language
138149 , object_name
138150 , object_type_code
138151 , line_number
138152 , source_application_id
138153 , source_type_code
138154 , source_code
138155 , SUBSTR(source_value ,1,1996)
138156 , SUBSTR(source_meaning ,1,200)
138157 , xla_environment_pkg.g_Usr_Id
138158 , TRUNC(SYSDATE)
138159 , TRUNC(SYSDATE)
138160 , xla_environment_pkg.g_Usr_Id
138161 , xla_environment_pkg.g_Login_Id
138162 , TRUNC(SYSDATE)
138163 , xla_environment_pkg.g_Prog_Appl_Id
138164 , xla_environment_pkg.g_Prog_Id
138165 , xla_environment_pkg.g_Req_Id
138166 FROM (
138167 SELECT xet.event_id event_id
138168 , 0 line_number
138169 , CASE r
138170 WHEN 1 THEN 'CST_XLA_WIP_HEADERS_V'
138171 WHEN 2 THEN 'CST_XLA_WIP_HEADERS_V'
138172 WHEN 3 THEN 'CST_XLA_WIP_HEADERS_V'
138173 WHEN 4 THEN 'CST_XLA_WIP_HEADERS_V'
138174 WHEN 5 THEN 'CST_XLA_WIP_HEADERS_V'
138175 WHEN 6 THEN 'CST_XLA_WIP_HEADERS_V'
138176
138177 ELSE null
138178 END object_name
138179 , CASE r
138180 WHEN 1 THEN 'HEADER'
138181 WHEN 2 THEN 'HEADER'
138182 WHEN 3 THEN 'HEADER'
138183 WHEN 4 THEN 'HEADER'
138184 WHEN 5 THEN 'HEADER'
138185 WHEN 6 THEN 'HEADER'
138186
138187 ELSE null
138188 END object_type_code
138189 , CASE r
138190 WHEN 1 THEN '707'
138191 WHEN 2 THEN '707'
138192 WHEN 3 THEN '707'
138193 WHEN 4 THEN '707'
138194 WHEN 5 THEN '707'
138195 WHEN 6 THEN '707'
138196
138197 ELSE null
138198 END source_application_id
138199 , 'S' source_type_code
138200 , CASE r
138201 WHEN 1 THEN 'DISTRIBUTION_TYPE'
138202 WHEN 2 THEN 'CURRENCY_CODE'
138203 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE'
138204 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE'
138205 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE'
138206 WHEN 6 THEN 'TRANSFER_TO_GL_INDICATOR'
138207
138208 ELSE null
138209 END source_code
138210 , CASE r
138211 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
138212 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
138213 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
138214 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
138215 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
138216 WHEN 6 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
138217
138218 ELSE null
138219 END source_value
138220 , CASE r
138221 WHEN 1 THEN fvl12.meaning
138222 WHEN 6 THEN fvl38.meaning
138223
138224 ELSE null
138225 END source_meaning
138226 FROM xla_events_gt xet
138227 , CST_XLA_WIP_HEADERS_V h1
138228 , fnd_lookup_values fvl12
138229 , fnd_lookup_values fvl38
138230 ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
138231 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
138232 AND xet.event_class_code = C_EVENT_CLASS_CODE
138233 AND h1.event_id = xet.event_id
138234 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
138235 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
138236 AND fvl12.view_application_id(+) = 700
138237 AND fvl12.language(+) = USERENV('LANG')
138238 AND fvl38.lookup_type(+) = 'YES_NO'
138239 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
138240 AND fvl38.view_application_id(+) = 0
138241 AND fvl38.language(+) = USERENV('LANG')
138242
138243 )
138244 ;
138245 --
138246 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
138247
138248 trace
138249 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
138250 ,p_level => C_LEVEL_STATEMENT
138251 ,p_module => l_log_module);
138252
138253 END IF;
138254 --
138255
138256
138257
138258 --
138259 INSERT INTO xla_diag_sources --line2
138260 (
138261 event_id
138262 , ledger_id
138263 , sla_ledger_id
138264 , description_language
138265 , object_name
138266 , object_type_code
138267 , line_number
138268 , source_application_id
138269 , source_type_code
138270 , source_code
138271 , source_value
138272 , source_meaning
138273 , created_by
138274 , creation_date
138275 , last_update_date
138276 , last_updated_by
138277 , last_update_login
138278 , program_update_date
138279 , program_application_id
138280 , program_id
138281 , request_id
138282 )
138283 SELECT event_id
138284 , p_target_ledger_id
138285 , p_sla_ledger_id
138286 , p_language
138287 , object_name
138288 , object_type_code
138289 , line_number
138290 , source_application_id
138291 , source_type_code
138292 , source_code
138293 , SUBSTR(source_value,1,1996)
138294 , SUBSTR(source_meaning ,1,200)
138295 , xla_environment_pkg.g_Usr_Id
138296 , TRUNC(SYSDATE)
138297 , TRUNC(SYSDATE)
138298 , xla_environment_pkg.g_Usr_Id
138299 , xla_environment_pkg.g_Login_Id
138300 , TRUNC(SYSDATE)
138301 , xla_environment_pkg.g_Prog_Appl_Id
138302 , xla_environment_pkg.g_Prog_Id
138303 , xla_environment_pkg.g_Req_Id
138304 FROM (
138305 SELECT xet.event_id event_id
138306 , l2.line_number line_number
138307 , CASE r
138308 WHEN 1 THEN 'CST_XLA_WIP_LINES_V'
138309 WHEN 2 THEN 'CST_XLA_WIP_LINES_V'
138310 WHEN 3 THEN 'CST_XLA_WIP_LINES_V'
138311 WHEN 4 THEN 'CST_XLA_WIP_LINES_V'
138312 WHEN 5 THEN 'CST_XLA_WIP_LINES_V'
138313
138314 ELSE null
138315 END object_name
138316 , CASE r
138317 WHEN 1 THEN 'LINE'
138318 WHEN 2 THEN 'LINE'
138319 WHEN 3 THEN 'LINE'
138320 WHEN 4 THEN 'LINE'
138321 WHEN 5 THEN 'LINE'
138322
138323 ELSE null
138324 END object_type_code
138325 , CASE r
138326 WHEN 1 THEN '707'
138327 WHEN 2 THEN '707'
138328 WHEN 3 THEN '707'
138329 WHEN 4 THEN '707'
138330 WHEN 5 THEN '707'
138331
138332 ELSE null
138333 END source_application_id
138334 , 'S' source_type_code
138335 , CASE r
138336 WHEN 1 THEN 'CODE_COMBINATION_ID'
138337 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER'
138338 WHEN 3 THEN 'ENTERED_AMOUNT'
138339 WHEN 4 THEN 'ACCOUNTED_AMOUNT'
138340 WHEN 5 THEN 'ACCOUNTING_LINE_TYPE_CODE'
138341
138342 ELSE null
138343 END source_code
138344 , CASE r
138345 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
138346 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
138347 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
138348 WHEN 4 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
138349 WHEN 5 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
138350
138351 ELSE null
138352 END source_value
138353 , null source_meaning
138354 FROM xla_events_gt xet
138355 , CST_XLA_WIP_LINES_V l2
138356 , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
138357 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
138358 AND xet.event_class_code = C_EVENT_CLASS_CODE
138359 AND l2.event_id = xet.event_id
138360
138361 )
138362 ;
138363 --
138364 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
138365
138366 trace
138367 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
138368 ,p_level => C_LEVEL_STATEMENT
138369 ,p_module => l_log_module);
138370
138371 END IF;
138372
138373
138374 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
138375 trace
138376 (p_msg => 'END of insert_sources_250'
138377 ,p_level => C_LEVEL_PROCEDURE
138378 ,p_module => l_log_module);
138379 END IF;
138380 EXCEPTION
138381 WHEN xla_exceptions_pkg.application_exception THEN
138382 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
138383 trace
138384 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
138385 ,p_level => C_LEVEL_EXCEPTION
138386 ,p_module => l_log_module);
138387 END IF;
138388 RAISE;
138389 WHEN OTHERS THEN
138390 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
138391 trace
138392 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
138393 ,p_level => C_LEVEL_EXCEPTION
138394 ,p_module => l_log_module);
138395 END IF;
138396 xla_exceptions_pkg.raise_message
138397 (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_250');
138398 END insert_sources_250;
138399 --
138400
138401 ---------------------------------------
138402 --
138403 -- PRIVATE FUNCTION
138404 -- EventClass_250
138405 --
138406 ----------------------------------------
138407 --
138408 FUNCTION EventClass_250
138409 (p_application_id IN NUMBER
138410 ,p_base_ledger_id IN NUMBER
138411 ,p_target_ledger_id IN NUMBER
138412 ,p_language IN VARCHAR2
138413 ,p_currency_code IN VARCHAR2
138414 ,p_sla_ledger_id IN NUMBER
138415 ,p_pad_start_date IN DATE
138416 ,p_pad_end_date IN DATE
138417 ,p_primary_ledger_id IN NUMBER)
138418 RETURN BOOLEAN IS
138419 --
138420 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'ABSORPTION_ALL';
138421 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'ABSORPTION';
138422
138423 l_calculate_acctd_flag VARCHAR2(1) :='N';
138424 l_calculate_g_l_flag VARCHAR2(1) :='N';
138425 --
138426 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
138427 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
138428 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
138429 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
138430 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
138431 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
138432 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
138433 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
138434 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
138435 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
138436 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
138437 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
138438 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
138439 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
138440 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
138441 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
138442 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
138443 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
138444 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
138445 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
138446 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
138447 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
138448 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
138449 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
138450 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
138451 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
138452
138453 l_event_id NUMBER;
138454 l_previous_event_id NUMBER;
138455 l_first_event_id NUMBER;
138456 l_last_event_id NUMBER;
138457
138458 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
138459 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
138460 --
138461 --
138462 l_result BOOLEAN := TRUE;
138463 l_rows NUMBER := 1000;
138464 l_event_type_name VARCHAR2(80) := 'All';
138465 l_event_class_name VARCHAR2(80) := 'WIP Absorption';
138466 l_description VARCHAR2(4000);
138467 l_transaction_reversal NUMBER;
138468 l_ae_header_id NUMBER;
138469 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
138470 l_log_module VARCHAR2(240);
138471 --
138472 l_acct_reversal_source VARCHAR2(30);
138473 l_trx_reversal_source VARCHAR2(30);
138474
138475 l_continue_with_lines BOOLEAN := TRUE;
138476 --
138477 l_acc_rev_gl_date_source DATE; -- 4262811
138478 --
138479 type t_array_event_id is table of number index by binary_integer;
138480
138481 l_rec_array_event t_rec_array_event;
138482 l_null_rec_array_event t_rec_array_event;
138483 l_array_ae_header_id xla_number_array_type;
138484 l_actual_flag VARCHAR2(1) := NULL;
138485 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
138486 l_balance_type_code VARCHAR2(1) :=NULL;
138487 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
138488
138489 --
138490 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
138491 --
138492
138493 TYPE t_array_source_12 IS TABLE OF CST_XLA_WIP_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
138494 TYPE t_array_source_15 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
138495 TYPE t_array_source_19 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
138496 TYPE t_array_source_20 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
138497 TYPE t_array_source_21 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
138498 TYPE t_array_source_38 IS TABLE OF CST_XLA_WIP_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
138499
138500 TYPE t_array_source_4 IS TABLE OF CST_XLA_WIP_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
138501 TYPE t_array_source_11 IS TABLE OF CST_XLA_WIP_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
138502 TYPE t_array_source_18 IS TABLE OF CST_XLA_WIP_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
138503 TYPE t_array_source_22 IS TABLE OF CST_XLA_WIP_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
138504 TYPE t_array_source_24 IS TABLE OF CST_XLA_WIP_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
138505
138506 l_array_source_12 t_array_source_12;
138507 l_array_source_12_meaning t_array_lookup_meaning;
138508 l_array_source_15 t_array_source_15;
138509 l_array_source_19 t_array_source_19;
138510 l_array_source_20 t_array_source_20;
138511 l_array_source_21 t_array_source_21;
138512 l_array_source_38 t_array_source_38;
138513 l_array_source_38_meaning t_array_lookup_meaning;
138514
138515 l_array_source_4 t_array_source_4;
138516 l_array_source_11 t_array_source_11;
138517 l_array_source_18 t_array_source_18;
138518 l_array_source_22 t_array_source_22;
138519 l_array_source_24 t_array_source_24;
138520
138521 --
138522 CURSOR header_cur
138523 IS
138524 SELECT /*+ leading(xet) cardinality(xet,1) */
138525 -- Event Class Code: ABSORPTION
138526 xet.entity_id
138527 ,xet.legal_entity_id
138528 ,xet.entity_code
138529 ,xet.transaction_number
138530 ,xet.event_id
138531 ,xet.event_class_code
138532 ,xet.event_type_code
138533 ,xet.event_number
138534 ,xet.event_date
138535 ,xet.transaction_date
138536 ,xet.reference_num_1
138537 ,xet.reference_num_2
138538 ,xet.reference_num_3
138539 ,xet.reference_num_4
138540 ,xet.reference_char_1
138541 ,xet.reference_char_2
138542 ,xet.reference_char_3
138543 ,xet.reference_char_4
138544 ,xet.reference_date_1
138545 ,xet.reference_date_2
138546 ,xet.reference_date_3
138547 ,xet.reference_date_4
138548 ,xet.event_created_by
138549 ,xet.budgetary_control_flag
138550 , h1.DISTRIBUTION_TYPE source_12
138551 , fvl12.meaning source_12_meaning
138552 , h1.CURRENCY_CODE source_15
138553 , h1.CURRENCY_CONVERSION_DATE source_19
138554 , h1.CURRENCY_CONVERSION_RATE source_20
138555 , h1.CURRENCY_CONVERSION_TYPE source_21
138556 , h1.TRANSFER_TO_GL_INDICATOR source_38
138557 , fvl38.meaning source_38_meaning
138558 FROM xla_events_gt xet
138559 , CST_XLA_WIP_HEADERS_V h1
138560 , fnd_lookup_values fvl12
138561 , fnd_lookup_values fvl38
138562 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
138563 and xet.event_class_code = C_EVENT_CLASS_CODE
138564 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
138565 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
138566 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
138567 AND fvl12.view_application_id(+) = 700
138568 AND fvl12.language(+) = USERENV('LANG')
138569 AND fvl38.lookup_type(+) = 'YES_NO'
138570 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
138571 AND fvl38.view_application_id(+) = 0
138572 AND fvl38.language(+) = USERENV('LANG')
138573
138574 ORDER BY event_id
138575 ;
138576
138577
138578 --
138579 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
138580 IS
138581 SELECT /*+ leading(xet) cardinality(xet,1) */
138582 -- Event Class Code: ABSORPTION
138583 xet.entity_id
138584 ,xet.legal_entity_id
138585 ,xet.entity_code
138586 ,xet.transaction_number
138587 ,xet.event_id
138588 ,xet.event_class_code
138589 ,xet.event_type_code
138590 ,xet.event_number
138591 ,xet.event_date
138592 ,xet.transaction_date
138593 ,xet.reference_num_1
138594 ,xet.reference_num_2
138595 ,xet.reference_num_3
138596 ,xet.reference_num_4
138597 ,xet.reference_char_1
138598 ,xet.reference_char_2
138599 ,xet.reference_char_3
138600 ,xet.reference_char_4
138601 ,xet.reference_date_1
138602 ,xet.reference_date_2
138603 ,xet.reference_date_3
138604 ,xet.reference_date_4
138605 ,xet.event_created_by
138606 ,xet.budgetary_control_flag
138607 , l2.LINE_NUMBER
138608 , l2.CODE_COMBINATION_ID source_4
138609 , l2.DISTRIBUTION_IDENTIFIER source_11
138610 , l2.ENTERED_AMOUNT source_18
138611 , l2.ACCOUNTED_AMOUNT source_22
138612 , l2.ACCOUNTING_LINE_TYPE_CODE source_24
138613 FROM xla_events_gt xet
138614 , CST_XLA_WIP_LINES_V l2
138615 WHERE xet.event_id between x_first_event_id and x_last_event_id
138616 and xet.event_date between p_pad_start_date and p_pad_end_date
138617 and xet.event_class_code = C_EVENT_CLASS_CODE
138618 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
138619 ;
138620
138621 --
138622 BEGIN
138623 IF g_log_enabled THEN
138624 l_log_module := C_DEFAULT_MODULE||'.EventClass_250';
138625 END IF;
138626 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
138627 trace
138628 (p_msg => 'BEGIN of EventClass_250'
138629 ,p_level => C_LEVEL_PROCEDURE
138630 ,p_module => l_log_module);
138631 END IF;
138632
138633 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
138634 trace
138635 (p_msg => 'p_application_id = '||p_application_id||
138636 ' - p_base_ledger_id = '||p_base_ledger_id||
138637 ' - p_target_ledger_id = '||p_target_ledger_id||
138638 ' - p_language = '||p_language||
138639 ' - p_currency_code = '||p_currency_code||
138640 ' - p_sla_ledger_id = '||p_sla_ledger_id
138641 ,p_level => C_LEVEL_STATEMENT
138642 ,p_module => l_log_module);
138643 END IF;
138644 --
138645 -- initialze arrays
138646 --
138647 g_array_event.DELETE;
138648 l_rec_array_event := l_null_rec_array_event;
138649 --
138650 --------------------------------------
138651 -- 4262811 Initialze MPA Line Number
138652 --------------------------------------
138653 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
138654
138655 --
138656
138657 --
138658 OPEN header_cur;
138659 --
138660 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
138661 trace
138662 (p_msg => 'SQL - FETCH header_cur'
138663 ,p_level => C_LEVEL_STATEMENT
138664 ,p_module => l_log_module);
138665 END IF;
138666 --
138667 LOOP
138668 FETCH header_cur BULK COLLECT INTO
138669 l_array_entity_id
138670 , l_array_legal_entity_id
138671 , l_array_entity_code
138672 , l_array_transaction_num
138673 , l_array_event_id
138674 , l_array_class_code
138675 , l_array_event_type
138676 , l_array_event_number
138677 , l_array_event_date
138678 , l_array_transaction_date
138679 , l_array_reference_num_1
138680 , l_array_reference_num_2
138681 , l_array_reference_num_3
138682 , l_array_reference_num_4
138683 , l_array_reference_char_1
138684 , l_array_reference_char_2
138685 , l_array_reference_char_3
138686 , l_array_reference_char_4
138687 , l_array_reference_date_1
138688 , l_array_reference_date_2
138689 , l_array_reference_date_3
138690 , l_array_reference_date_4
138691 , l_array_event_created_by
138692 , l_array_budgetary_control_flag
138693 , l_array_source_12
138694 , l_array_source_12_meaning
138695 , l_array_source_15
138696 , l_array_source_19
138697 , l_array_source_20
138698 , l_array_source_21
138699 , l_array_source_38
138700 , l_array_source_38_meaning
138701 LIMIT l_rows;
138702 --
138703 IF (C_LEVEL_EVENT >= g_log_level) THEN
138704 trace
138705 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
138706 ,p_level => C_LEVEL_EVENT
138707 ,p_module => l_log_module);
138708 END IF;
138709 --
138710 EXIT WHEN l_array_entity_id.COUNT = 0;
138711
138712 -- initialize arrays
138713 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
138714 XLA_AE_LINES_PKG.g_rec_lines := NULL;
138715
138716 --
138717 -- Bug 4458708
138718 --
138719 XLA_AE_LINES_PKG.g_LineNumber := 0;
138720
138721
138722 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
138723 g_last_hdr_idx := l_array_event_id.LAST;
138724 --
138725 -- loop for the headers. Each iteration is for each header extract row
138726 -- fetched in header cursor
138727 --
138728 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
138729
138730 --
138731 -- set event info as cache for other routines to refer event attributes
138732 --
138733 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
138734 (p_application_id => p_application_id
138735 ,p_primary_ledger_id => p_primary_ledger_id
138736 ,p_base_ledger_id => p_base_ledger_id
138737 ,p_target_ledger_id => p_target_ledger_id
138738 ,p_entity_id => l_array_entity_id(hdr_idx)
138739 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
138740 ,p_entity_code => l_array_entity_code(hdr_idx)
138741 ,p_transaction_num => l_array_transaction_num(hdr_idx)
138742 ,p_event_id => l_array_event_id(hdr_idx)
138743 ,p_event_class_code => l_array_class_code(hdr_idx)
138744 ,p_event_type_code => l_array_event_type(hdr_idx)
138745 ,p_event_number => l_array_event_number(hdr_idx)
138746 ,p_event_date => l_array_event_date(hdr_idx)
138747 ,p_transaction_date => l_array_transaction_date(hdr_idx)
138748 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
138749 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
138750 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
138751 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
138752 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
138753 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
138754 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
138755 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
138756 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
138757 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
138758 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
138759 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
138760 ,p_event_created_by => l_array_event_created_by(hdr_idx)
138761 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
138762
138763 --
138764 -- set the status of entry to C_VALID (0)
138765 --
138766 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
138767
138768 --
138769 -- initialize a row for ae header
138770 --
138771 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
138772
138773 l_event_id := l_array_event_id(hdr_idx);
138774
138775 --
138776 -- storing the hdr_idx for event. May be used by line cursor.
138777 --
138778 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
138779
138780 --
138781 -- store sources from header extract. This can be improved to
138782 -- store only those sources from header extract that may be used in lines
138783 --
138784
138785 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
138786 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
138787 g_array_event(l_event_id).array_value_char('source_15') := l_array_source_15(hdr_idx);
138788 g_array_event(l_event_id).array_value_date('source_19') := l_array_source_19(hdr_idx);
138789 g_array_event(l_event_id).array_value_num('source_20') := l_array_source_20(hdr_idx);
138790 g_array_event(l_event_id).array_value_char('source_21') := l_array_source_21(hdr_idx);
138791 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
138792 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
138793
138794 --
138795 -- initilaize the status of ae headers for diffrent balance types
138796 -- the status is initialised to C_NOT_CREATED (2)
138797 --
138798 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
138799 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
138800 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
138801
138802 --
138803 -- call api to validate and store accounting attributes for header
138804 --
138805
138806 ------------------------------------------------------------
138807 -- Accrual Reversal : to get date for Standard Source (NONE)
138808 ------------------------------------------------------------
138809 l_acc_rev_gl_date_source := NULL;
138810
138811 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
138812 l_rec_acct_attrs.array_date_value(1) :=
138813 xla_ae_sources_pkg.GetSystemSourceDate(
138814 p_source_code => 'XLA_REFERENCE_DATE_1'
138815 , p_source_type_code => 'Y'
138816 , p_source_application_id => 602
138817 );
138818 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_TRANSFER_FLAG';
138819 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
138820
138821
138822 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
138823
138824 XLA_AE_HEADER_PKG.SetJeCategoryName;
138825
138826 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
138827 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
138828 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
138829 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
138830 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
138831
138832
138833 -- No header level analytical criteria
138834
138835 --
138836 --accounting attribute enhancement, bug 3612931
138837 --
138838 l_trx_reversal_source := SUBSTR(NULL, 1,30);
138839
138840 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
138841 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
138842
138843 xla_accounting_err_pkg.build_message
138844 (p_appli_s_name => 'XLA'
138845 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
138846 ,p_token_1 => 'ACCT_ATTR_NAME'
138847 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
138848 ,p_token_2 => 'PRODUCT_NAME'
138849 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
138850 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
138851 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
138852 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
138853
138854 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
138855 --
138856 -- following sets the accounting attributes needed to reverse
138857 -- accounting for a distributeion
138858 --
138859 xla_ae_lines_pkg.SetTrxReversalAttrs
138860 (p_event_id => l_event_id
138861 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
138862 ,p_trx_reversal_source => l_trx_reversal_source);
138863
138864 END IF;
138865
138866
138867 ----------------------------------------------------------------
138868 -- 4262811 - update the header statuses to invalid in need be
138869 ----------------------------------------------------------------
138870 --
138871 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
138872
138873
138874 -----------------------------------------------
138875 -- No accrual reversal for the event class/type
138876 -----------------------------------------------
138877 ----------------------------------------------------------------
138878
138879 --
138880 -- this ends the header loop iteration for one bulk fetch
138881 --
138882 END LOOP;
138883
138884 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
138885 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
138886
138887 --
138888 -- insert dummy rows into lines gt table that were created due to
138889 -- transaction reversals
138890 --
138891 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
138892 l_result := XLA_AE_LINES_PKG.InsertLines;
138893 END IF;
138894
138895 --
138896 -- reset the temp_line_num for each set of events fetched from header
138897 -- cursor rather than doing it for each new event in line cursor
138898 -- Bug 3939231
138899 --
138900 xla_ae_lines_pkg.g_temp_line_num := 0;
138901
138902
138903
138904 --
138905 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
138906 --
138907 --
138908 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
138909
138910 trace
138911 (p_msg => 'SQL - FETCH line_cur'
138912 ,p_level => C_LEVEL_STATEMENT
138913 ,p_module => l_log_module);
138914
138915 END IF;
138916 --
138917 --
138918 LOOP
138919 --
138920 FETCH line_cur BULK COLLECT INTO
138921 l_array_entity_id
138922 , l_array_legal_entity_id
138923 , l_array_entity_code
138924 , l_array_transaction_num
138925 , l_array_event_id
138926 , l_array_class_code
138927 , l_array_event_type
138928 , l_array_event_number
138929 , l_array_event_date
138930 , l_array_transaction_date
138931 , l_array_reference_num_1
138932 , l_array_reference_num_2
138933 , l_array_reference_num_3
138934 , l_array_reference_num_4
138935 , l_array_reference_char_1
138936 , l_array_reference_char_2
138937 , l_array_reference_char_3
138938 , l_array_reference_char_4
138939 , l_array_reference_date_1
138940 , l_array_reference_date_2
138941 , l_array_reference_date_3
138942 , l_array_reference_date_4
138943 , l_array_event_created_by
138944 , l_array_budgetary_control_flag
138945 , l_array_extract_line_num
138946 , l_array_source_4
138947 , l_array_source_11
138948 , l_array_source_18
138949 , l_array_source_22
138950 , l_array_source_24
138951 LIMIT l_rows;
138952
138953 --
138954 IF (C_LEVEL_EVENT >= g_log_level) THEN
138955 trace
138956 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
138957 ,p_level => C_LEVEL_EVENT
138958 ,p_module => l_log_module);
138959 END IF;
138960 --
138961 EXIT WHEN l_array_entity_id.count = 0;
138962
138963 XLA_AE_LINES_PKG.g_rec_lines := null;
138964
138965 --
138966 -- Bug 4458708
138967 --
138968 XLA_AE_LINES_PKG.g_LineNumber := 0;
138969 --
138970 --
138971
138972 FOR Idx IN 1..l_array_event_id.count LOOP
138973 --
138974 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
138975 --
138976 l_event_id := l_array_event_id(idx); -- 5648433
138977
138978 --
138979 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
138980 --
138981
138982 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
138983 (g_array_event(l_event_id).array_value_num('header_index'))
138984 ,'N'
138985 ) <> 'Y'
138986 THEN
138987 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
138988 trace
138989 (p_msg => 'Trancaction revesal option is not Y '
138990 ,p_level => C_LEVEL_STATEMENT
138991 ,p_module => l_log_module);
138992 END IF;
138993
138994 --
138995 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
138996 --
138997 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
138998 --
138999 -- set event info as cache for other routines to refer event attributes
139000 --
139001
139002 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
139003 l_previous_event_id := l_event_id;
139004
139005 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
139006 (p_application_id => p_application_id
139007 ,p_primary_ledger_id => p_primary_ledger_id
139008 ,p_base_ledger_id => p_base_ledger_id
139009 ,p_target_ledger_id => p_target_ledger_id
139010 ,p_entity_id => l_array_entity_id(Idx)
139011 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
139012 ,p_entity_code => l_array_entity_code(Idx)
139013 ,p_transaction_num => l_array_transaction_num(Idx)
139014 ,p_event_id => l_array_event_id(Idx)
139015 ,p_event_class_code => l_array_class_code(Idx)
139016 ,p_event_type_code => l_array_event_type(Idx)
139017 ,p_event_number => l_array_event_number(Idx)
139018 ,p_event_date => l_array_event_date(Idx)
139019 ,p_transaction_date => l_array_transaction_date(Idx)
139020 ,p_reference_num_1 => l_array_reference_num_1(Idx)
139021 ,p_reference_num_2 => l_array_reference_num_2(Idx)
139022 ,p_reference_num_3 => l_array_reference_num_3(Idx)
139023 ,p_reference_num_4 => l_array_reference_num_4(Idx)
139024 ,p_reference_char_1 => l_array_reference_char_1(Idx)
139025 ,p_reference_char_2 => l_array_reference_char_2(Idx)
139026 ,p_reference_char_3 => l_array_reference_char_3(Idx)
139027 ,p_reference_char_4 => l_array_reference_char_4(Idx)
139028 ,p_reference_date_1 => l_array_reference_date_1(Idx)
139029 ,p_reference_date_2 => l_array_reference_date_2(Idx)
139030 ,p_reference_date_3 => l_array_reference_date_3(Idx)
139031 ,p_reference_date_4 => l_array_reference_date_4(Idx)
139032 ,p_event_created_by => l_array_event_created_by(Idx)
139033 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
139034 --
139035 END IF;
139036
139037
139038
139039 --
139040 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
139041
139042 l_acct_reversal_source := SUBSTR(NULL, 1,30);
139043
139044 IF l_continue_with_lines THEN
139045 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
139046 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
139047
139048 xla_accounting_err_pkg.build_message
139049 (p_appli_s_name => 'XLA'
139050 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
139051 ,p_token_1 => 'LINE_NUMBER'
139052 ,p_value_1 => l_array_extract_line_num(Idx)
139053 ,p_token_2 => 'PRODUCT_NAME'
139054 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
139055 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
139056 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
139057 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
139058
139059 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
139060 --
139061 -- following sets the accounting attributes needed to reverse
139062 -- accounting for a distributeion
139063 --
139064
139065 --
139066 -- 5217187
139067 --
139068 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
139069 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
139070 g_array_event(l_event_id).array_value_num('header_index'));
139071 --
139072 --
139073
139074 -- No reversal code generated
139075
139076 xla_ae_lines_pkg.SetAcctReversalAttrs
139077 (p_event_id => l_event_id
139078 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
139079 ,p_calculate_acctd_flag => l_calculate_acctd_flag
139080 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
139081 END IF;
139082
139083 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
139084 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
139085
139086 --
139087 AcctLineType_46 (
139088 p_application_id => p_application_id
139089 ,p_event_id => l_event_id
139090 ,p_calculate_acctd_flag => l_calculate_acctd_flag
139091 ,p_calculate_g_l_flag => l_calculate_g_l_flag
139092 ,p_actual_flag => l_actual_flag
139093 ,p_balance_type_code => l_balance_type_code
139094 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
139095
139096 , p_source_4 => l_array_source_4(Idx)
139097 , p_source_11 => l_array_source_11(Idx)
139098 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
139099 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
139100 , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
139101 , p_source_18 => l_array_source_18(Idx)
139102 , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
139103 , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
139104 , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
139105 , p_source_22 => l_array_source_22(Idx)
139106 , p_source_24 => l_array_source_24(Idx)
139107 );
139108 If(l_balance_type_code = 'A') THEN
139109 l_actual_gain_loss_ref := l_gain_or_loss_ref;
139110 END IF;
139111
139112 --
139113
139114
139115 --
139116 AcctLineType_205 (
139117 p_application_id => p_application_id
139118 ,p_event_id => l_event_id
139119 ,p_calculate_acctd_flag => l_calculate_acctd_flag
139120 ,p_calculate_g_l_flag => l_calculate_g_l_flag
139121 ,p_actual_flag => l_actual_flag
139122 ,p_balance_type_code => l_balance_type_code
139123 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
139124
139125 , p_source_4 => l_array_source_4(Idx)
139126 , p_source_11 => l_array_source_11(Idx)
139127 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
139128 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
139129 , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
139130 , p_source_18 => l_array_source_18(Idx)
139131 , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
139132 , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
139133 , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
139134 , p_source_22 => l_array_source_22(Idx)
139135 , p_source_24 => l_array_source_24(Idx)
139136 );
139137 If(l_balance_type_code = 'A') THEN
139138 l_actual_gain_loss_ref := l_gain_or_loss_ref;
139139 END IF;
139140
139141 --
139142
139143
139144 --
139145 AcctLineType_236 (
139146 p_application_id => p_application_id
139147 ,p_event_id => l_event_id
139148 ,p_calculate_acctd_flag => l_calculate_acctd_flag
139149 ,p_calculate_g_l_flag => l_calculate_g_l_flag
139150 ,p_actual_flag => l_actual_flag
139151 ,p_balance_type_code => l_balance_type_code
139152 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
139153
139154 , p_source_4 => l_array_source_4(Idx)
139155 , p_source_11 => l_array_source_11(Idx)
139156 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
139157 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
139158 , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
139159 , p_source_18 => l_array_source_18(Idx)
139160 , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
139161 , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
139162 , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
139163 , p_source_22 => l_array_source_22(Idx)
139164 , p_source_24 => l_array_source_24(Idx)
139165 );
139166 If(l_balance_type_code = 'A') THEN
139167 l_actual_gain_loss_ref := l_gain_or_loss_ref;
139168 END IF;
139169
139170 --
139171
139172
139173 --
139174 AcctLineType_237 (
139175 p_application_id => p_application_id
139176 ,p_event_id => l_event_id
139177 ,p_calculate_acctd_flag => l_calculate_acctd_flag
139178 ,p_calculate_g_l_flag => l_calculate_g_l_flag
139179 ,p_actual_flag => l_actual_flag
139180 ,p_balance_type_code => l_balance_type_code
139181 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
139182
139183 , p_source_4 => l_array_source_4(Idx)
139184 , p_source_11 => l_array_source_11(Idx)
139185 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
139186 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
139187 , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
139188 , p_source_18 => l_array_source_18(Idx)
139189 , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
139190 , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
139191 , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
139192 , p_source_22 => l_array_source_22(Idx)
139193 , p_source_24 => l_array_source_24(Idx)
139194 );
139195 If(l_balance_type_code = 'A') THEN
139196 l_actual_gain_loss_ref := l_gain_or_loss_ref;
139197 END IF;
139198
139199 --
139200
139201
139202 --
139203 AcctLineType_241 (
139204 p_application_id => p_application_id
139205 ,p_event_id => l_event_id
139206 ,p_calculate_acctd_flag => l_calculate_acctd_flag
139207 ,p_calculate_g_l_flag => l_calculate_g_l_flag
139208 ,p_actual_flag => l_actual_flag
139209 ,p_balance_type_code => l_balance_type_code
139210 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
139211
139212 , p_source_4 => l_array_source_4(Idx)
139213 , p_source_11 => l_array_source_11(Idx)
139214 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
139215 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
139216 , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
139217 , p_source_18 => l_array_source_18(Idx)
139218 , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
139219 , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
139220 , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
139221 , p_source_22 => l_array_source_22(Idx)
139222 , p_source_24 => l_array_source_24(Idx)
139223 );
139224 If(l_balance_type_code = 'A') THEN
139225 l_actual_gain_loss_ref := l_gain_or_loss_ref;
139226 END IF;
139227
139228 --
139229
139230 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
139231 -- or secondary ledger that has different currency with primary
139232 -- or alc that is calculated by sla
139233 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
139234 (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'))
139235
139236 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
139237 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
139238 AND (l_actual_flag = 'A')) THEN
139239 XLA_AE_LINES_PKG.CreateGainOrLossLines(
139240 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
139241 ,p_application_id => p_application_id
139242 ,p_amb_context_code => 'DEFAULT'
139243 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
139244 ,p_event_class_code => C_EVENT_CLASS_CODE
139245 ,p_event_type_code => C_EVENT_TYPE_CODE
139246
139247 ,p_gain_ccid => -1
139248 ,p_loss_ccid => -1
139249
139250 ,p_actual_flag => l_actual_flag
139251 ,p_enc_flag => null
139252 ,p_actual_g_l_ref => l_actual_gain_loss_ref
139253 ,p_enc_g_l_ref => null
139254 );
139255 END IF;
139256 END IF;
139257 END IF;
139258
139259 ELSE
139260 --
139261 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
139262 --
139263 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
139264 trace
139265 (p_msg => 'Trancaction revesal option is Y'
139266 ,p_level => C_LEVEL_STATEMENT
139267 ,p_module => l_log_module);
139268 END IF;
139269 END IF;
139270
139271 END LOOP;
139272 l_result := XLA_AE_LINES_PKG.InsertLines ;
139273 end loop;
139274 close line_cur;
139275
139276
139277 --
139278 -- insert headers into xla_ae_headers_gt table
139279 --
139280 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
139281
139282 -- insert into errors table here.
139283
139284 END LOOP;
139285
139286 --
139287 -- 4865292
139288 --
139289 -- Compare g_hdr_extract_count with event count in
139290 -- CreateHeadersAndLines.
139291 --
139292 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
139293
139294 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
139295 trace (p_msg => '# rows extracted from header extract objects '
139296 || ' (running total): '
139297 || g_hdr_extract_count
139298 ,p_level => C_LEVEL_STATEMENT
139299 ,p_module => l_log_module);
139300 END IF;
139301
139302 CLOSE header_cur;
139303 --
139304
139305 --
139306 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
139307 trace
139308 (p_msg => 'END of EventClass_250'
139309 ,p_level => C_LEVEL_PROCEDURE
139310 ,p_module => l_log_module);
139311 END IF;
139312 --
139313 RETURN l_result;
139314 EXCEPTION
139315 WHEN xla_exceptions_pkg.application_exception THEN
139316
139317 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
139318
139319
139320 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
139321
139322 RAISE;
139323
139324 WHEN NO_DATA_FOUND THEN
139325
139326 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
139327 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
139328
139329 FOR header_record IN header_cur
139330 LOOP
139331 l_array_header_events(header_record.event_id) := header_record.event_id;
139332 END LOOP;
139333
139334 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
139335 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
139336
139337 fnd_file.put_line(fnd_file.LOG, ' ');
139338 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
139339 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
139340 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
139341
139342 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
139343 LOOP
139344 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
139345 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
139346 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
139347 END IF;
139348 END LOOP;
139349
139350 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
139351 fnd_file.put_line(fnd_file.LOG, ' ');
139352
139353
139354 xla_exceptions_pkg.raise_message
139355 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_250');
139356
139357
139358 WHEN OTHERS THEN
139359 xla_exceptions_pkg.raise_message
139360 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_250');
139361 END EventClass_250;
139362 --
139363
139364 ---------------------------------------
139365 --
139366 -- PRIVATE PROCEDURE
139367 -- insert_sources_251
139368 --
139369 ----------------------------------------
139370 --
139371 PROCEDURE insert_sources_251(
139372 p_target_ledger_id IN NUMBER
139373 , p_language IN VARCHAR2
139374 , p_sla_ledger_id IN NUMBER
139375 , p_pad_start_date IN DATE
139376 , p_pad_end_date IN DATE
139377 )
139378 IS
139379
139380 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'ACCRUAL_WRITE_OFF_ALL';
139381 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'ACCRUAL_WRITE_OFF';
139382 p_apps_owner VARCHAR2(30);
139383 l_log_module VARCHAR2(240);
139384 BEGIN
139385 IF g_log_enabled THEN
139386 l_log_module := C_DEFAULT_MODULE||'.insert_sources_251';
139387 END IF;
139388 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
139389
139390 trace
139391 (p_msg => 'BEGIN of insert_sources_251'
139392 ,p_level => C_LEVEL_PROCEDURE
139393 ,p_module => l_log_module);
139394
139395 END IF;
139396
139397 -- select APPS owner
139398 SELECT oracle_username
139399 INTO p_apps_owner
139400 FROM fnd_oracle_userid
139401 WHERE read_only_flag = 'U'
139402 ;
139403
139404 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
139405 trace
139406 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
139407 ' - p_language = '||p_language||
139408 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
139409 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
139410 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
139411 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
139412 ,p_level => C_LEVEL_STATEMENT
139413 ,p_module => l_log_module);
139414 END IF;
139415
139416
139417 --
139418 INSERT INTO xla_diag_sources --hdr2
139419 (
139420 event_id
139421 , ledger_id
139422 , sla_ledger_id
139423 , description_language
139424 , object_name
139425 , object_type_code
139426 , line_number
139427 , source_application_id
139428 , source_type_code
139429 , source_code
139430 , source_value
139431 , source_meaning
139432 , created_by
139433 , creation_date
139434 , last_update_date
139435 , last_updated_by
139436 , last_update_login
139437 , program_update_date
139438 , program_application_id
139439 , program_id
139440 , request_id
139441 )
139442 SELECT
139443 event_id
139444 , p_target_ledger_id
139445 , p_sla_ledger_id
139446 , p_language
139447 , object_name
139448 , object_type_code
139449 , line_number
139450 , source_application_id
139451 , source_type_code
139452 , source_code
139453 , SUBSTR(source_value ,1,1996)
139454 , SUBSTR(source_meaning ,1,200)
139455 , xla_environment_pkg.g_Usr_Id
139456 , TRUNC(SYSDATE)
139457 , TRUNC(SYSDATE)
139458 , xla_environment_pkg.g_Usr_Id
139459 , xla_environment_pkg.g_Login_Id
139460 , TRUNC(SYSDATE)
139461 , xla_environment_pkg.g_Prog_Appl_Id
139462 , xla_environment_pkg.g_Prog_Id
139463 , xla_environment_pkg.g_Req_Id
139464 FROM (
139465 SELECT xet.event_id event_id
139466 , 0 line_number
139467 , CASE r
139468 WHEN 1 THEN 'CST_XLA_AWO_HEADERS_V'
139469 WHEN 2 THEN 'CST_XLA_AWO_HEADERS_V'
139470 WHEN 3 THEN 'CST_XLA_AWO_HEADERS_V'
139471 WHEN 4 THEN 'CST_XLA_AWO_HEADERS_V'
139472 WHEN 5 THEN 'CST_XLA_AWO_HEADERS_V'
139473 WHEN 6 THEN 'CST_XLA_AWO_HEADERS_V'
139474
139475 ELSE null
139476 END object_name
139477 , CASE r
139478 WHEN 1 THEN 'HEADER'
139479 WHEN 2 THEN 'HEADER'
139480 WHEN 3 THEN 'HEADER'
139481 WHEN 4 THEN 'HEADER'
139482 WHEN 5 THEN 'HEADER'
139483 WHEN 6 THEN 'HEADER'
139484
139485 ELSE null
139486 END object_type_code
139487 , CASE r
139488 WHEN 1 THEN '707'
139489 WHEN 2 THEN '707'
139490 WHEN 3 THEN '707'
139491 WHEN 4 THEN '707'
139492 WHEN 5 THEN '707'
139493 WHEN 6 THEN '707'
139494
139495 ELSE null
139496 END source_application_id
139497 , 'S' source_type_code
139498 , CASE r
139499 WHEN 1 THEN 'WO_ACCRUAL_ACCOUNT_ID'
139500 WHEN 2 THEN 'WO_ERV_ACCOUNT_ID'
139501 WHEN 3 THEN 'WO_OFFSET_ACCOUNT_ID'
139502 WHEN 4 THEN 'DISTRIBUTION_TYPE'
139503 WHEN 5 THEN 'WRITE_OFF_ID'
139504 WHEN 6 THEN 'TRANSFER_TO_GL_INDICATOR'
139505
139506 ELSE null
139507 END source_code
139508 , CASE r
139509 WHEN 1 THEN TO_CHAR(h1.WO_ACCRUAL_ACCOUNT_ID)
139510 WHEN 2 THEN TO_CHAR(h1.WO_ERV_ACCOUNT_ID)
139511 WHEN 3 THEN TO_CHAR(h1.WO_OFFSET_ACCOUNT_ID)
139512 WHEN 4 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
139513 WHEN 5 THEN TO_CHAR(h1.WRITE_OFF_ID)
139514 WHEN 6 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
139515
139516 ELSE null
139517 END source_value
139518 , CASE r
139519 WHEN 4 THEN fvl12.meaning
139520 WHEN 6 THEN fvl38.meaning
139521
139522 ELSE null
139523 END source_meaning
139524 FROM xla_events_gt xet
139525 , CST_XLA_AWO_HEADERS_V h1
139526 , fnd_lookup_values fvl12
139527 , fnd_lookup_values fvl38
139528 ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
139529 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
139530 AND xet.event_class_code = C_EVENT_CLASS_CODE
139531 AND h1.event_id = xet.event_id
139532 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
139533 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
139534 AND fvl12.view_application_id(+) = 700
139535 AND fvl12.language(+) = USERENV('LANG')
139536 AND fvl38.lookup_type(+) = 'YES_NO'
139537 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
139538 AND fvl38.view_application_id(+) = 0
139539 AND fvl38.language(+) = USERENV('LANG')
139540
139541 )
139542 ;
139543 --
139544 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
139545
139546 trace
139547 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
139548 ,p_level => C_LEVEL_STATEMENT
139549 ,p_module => l_log_module);
139550
139551 END IF;
139552 --
139553
139554
139555
139556 --
139557 INSERT INTO xla_diag_sources --line2
139558 (
139559 event_id
139560 , ledger_id
139561 , sla_ledger_id
139562 , description_language
139563 , object_name
139564 , object_type_code
139565 , line_number
139566 , source_application_id
139567 , source_type_code
139568 , source_code
139569 , source_value
139570 , source_meaning
139571 , created_by
139572 , creation_date
139573 , last_update_date
139574 , last_updated_by
139575 , last_update_login
139576 , program_update_date
139577 , program_application_id
139578 , program_id
139579 , request_id
139580 )
139581 SELECT event_id
139582 , p_target_ledger_id
139583 , p_sla_ledger_id
139584 , p_language
139585 , object_name
139586 , object_type_code
139587 , line_number
139588 , source_application_id
139589 , source_type_code
139590 , source_code
139591 , SUBSTR(source_value,1,1996)
139592 , SUBSTR(source_meaning ,1,200)
139593 , xla_environment_pkg.g_Usr_Id
139594 , TRUNC(SYSDATE)
139595 , TRUNC(SYSDATE)
139596 , xla_environment_pkg.g_Usr_Id
139597 , xla_environment_pkg.g_Login_Id
139598 , TRUNC(SYSDATE)
139599 , xla_environment_pkg.g_Prog_Appl_Id
139600 , xla_environment_pkg.g_Prog_Id
139601 , xla_environment_pkg.g_Req_Id
139602 FROM (
139603 SELECT xet.event_id event_id
139604 , l2.line_number line_number
139605 , CASE r
139606 WHEN 1 THEN 'CST_XLA_AWO_LINES_V'
139607 WHEN 2 THEN 'CST_XLA_AWO_LINES_V'
139608 WHEN 3 THEN 'CST_XLA_AWO_LINES_V'
139609 WHEN 4 THEN 'CST_XLA_AWO_LINES_V'
139610 WHEN 5 THEN 'CST_XLA_AWO_LINES_V'
139611 WHEN 6 THEN 'CST_XLA_AWO_LINES_V'
139612 WHEN 7 THEN 'CST_XLA_AWO_LINES_V'
139613
139614 ELSE null
139615 END object_name
139616 , CASE r
139617 WHEN 1 THEN 'LINE'
139618 WHEN 2 THEN 'LINE'
139619 WHEN 3 THEN 'LINE'
139620 WHEN 4 THEN 'LINE'
139621 WHEN 5 THEN 'LINE'
139622 WHEN 6 THEN 'LINE'
139623 WHEN 7 THEN 'LINE'
139624
139625 ELSE null
139626 END object_type_code
139627 , CASE r
139628 WHEN 1 THEN '707'
139629 WHEN 2 THEN '707'
139630 WHEN 3 THEN '707'
139631 WHEN 4 THEN '707'
139632 WHEN 5 THEN '707'
139633 WHEN 6 THEN '707'
139634 WHEN 7 THEN '707'
139635
139636 ELSE null
139637 END source_application_id
139638 , 'S' source_type_code
139639 , CASE r
139640 WHEN 1 THEN 'CURRENCY_CODE'
139641 WHEN 2 THEN 'ENTERED_AMOUNT'
139642 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE'
139643 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE'
139644 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE'
139645 WHEN 6 THEN 'ACCOUNTED_AMOUNT'
139646 WHEN 7 THEN 'LINE_NUMBER'
139647
139648 ELSE null
139649 END source_code
139650 , CASE r
139651 WHEN 1 THEN TO_CHAR(l2.CURRENCY_CODE)
139652 WHEN 2 THEN TO_CHAR(l2.ENTERED_AMOUNT)
139653 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
139654 WHEN 4 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
139655 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
139656 WHEN 6 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
139657 WHEN 7 THEN TO_CHAR(l2.LINE_NUMBER)
139658
139659 ELSE null
139660 END source_value
139661 , null source_meaning
139662 FROM xla_events_gt xet
139663 , CST_XLA_AWO_LINES_V l2
139664 , (select rownum r from all_objects where rownum <= 7 and owner = p_apps_owner)
139665 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
139666 AND xet.event_class_code = C_EVENT_CLASS_CODE
139667 AND l2.event_id = xet.event_id
139668
139669 )
139670 ;
139671 --
139672 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
139673
139674 trace
139675 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
139676 ,p_level => C_LEVEL_STATEMENT
139677 ,p_module => l_log_module);
139678
139679 END IF;
139680
139681
139682 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
139683 trace
139684 (p_msg => 'END of insert_sources_251'
139685 ,p_level => C_LEVEL_PROCEDURE
139686 ,p_module => l_log_module);
139687 END IF;
139688 EXCEPTION
139689 WHEN xla_exceptions_pkg.application_exception THEN
139690 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
139691 trace
139692 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
139693 ,p_level => C_LEVEL_EXCEPTION
139694 ,p_module => l_log_module);
139695 END IF;
139696 RAISE;
139697 WHEN OTHERS THEN
139698 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
139699 trace
139700 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
139701 ,p_level => C_LEVEL_EXCEPTION
139702 ,p_module => l_log_module);
139703 END IF;
139704 xla_exceptions_pkg.raise_message
139705 (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_251');
139706 END insert_sources_251;
139707 --
139708
139709 ---------------------------------------
139710 --
139711 -- PRIVATE FUNCTION
139712 -- EventClass_251
139713 --
139714 ----------------------------------------
139715 --
139716 FUNCTION EventClass_251
139717 (p_application_id IN NUMBER
139718 ,p_base_ledger_id IN NUMBER
139719 ,p_target_ledger_id IN NUMBER
139720 ,p_language IN VARCHAR2
139721 ,p_currency_code IN VARCHAR2
139722 ,p_sla_ledger_id IN NUMBER
139723 ,p_pad_start_date IN DATE
139724 ,p_pad_end_date IN DATE
139725 ,p_primary_ledger_id IN NUMBER)
139726 RETURN BOOLEAN IS
139727 --
139728 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'ACCRUAL_WRITE_OFF_ALL';
139729 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'ACCRUAL_WRITE_OFF';
139730
139731 l_calculate_acctd_flag VARCHAR2(1) :='N';
139732 l_calculate_g_l_flag VARCHAR2(1) :='N';
139733 --
139734 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
139735 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
139736 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
139737 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
139738 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
139739 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
139740 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
139741 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
139742 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
139743 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
139744 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
139745 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
139746 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
139747 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
139748 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
139749 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
139750 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
139751 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
139752 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
139753 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
139754 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
139755 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
139756 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
139757 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
139758 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
139759 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
139760
139761 l_event_id NUMBER;
139762 l_previous_event_id NUMBER;
139763 l_first_event_id NUMBER;
139764 l_last_event_id NUMBER;
139765
139766 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
139767 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
139768 --
139769 --
139770 l_result BOOLEAN := TRUE;
139771 l_rows NUMBER := 1000;
139772 l_event_type_name VARCHAR2(80) := 'All';
139773 l_event_class_name VARCHAR2(80) := 'Accrual Write Off';
139774 l_description VARCHAR2(4000);
139775 l_transaction_reversal NUMBER;
139776 l_ae_header_id NUMBER;
139777 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
139778 l_log_module VARCHAR2(240);
139779 --
139780 l_acct_reversal_source VARCHAR2(30);
139781 l_trx_reversal_source VARCHAR2(30);
139782
139783 l_continue_with_lines BOOLEAN := TRUE;
139784 --
139785 l_acc_rev_gl_date_source DATE; -- 4262811
139786 --
139787 type t_array_event_id is table of number index by binary_integer;
139788
139789 l_rec_array_event t_rec_array_event;
139790 l_null_rec_array_event t_rec_array_event;
139791 l_array_ae_header_id xla_number_array_type;
139792 l_actual_flag VARCHAR2(1) := NULL;
139793 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
139794 l_balance_type_code VARCHAR2(1) :=NULL;
139795 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
139796
139797 --
139798 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
139799 --
139800
139801 TYPE t_array_source_1 IS TABLE OF CST_XLA_AWO_HEADERS_V.WO_ACCRUAL_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
139802 TYPE t_array_source_2 IS TABLE OF CST_XLA_AWO_HEADERS_V.WO_ERV_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
139803 TYPE t_array_source_3 IS TABLE OF CST_XLA_AWO_HEADERS_V.WO_OFFSET_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
139804 TYPE t_array_source_12 IS TABLE OF CST_XLA_AWO_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
139805 TYPE t_array_source_26 IS TABLE OF CST_XLA_AWO_HEADERS_V.WRITE_OFF_ID%TYPE INDEX BY BINARY_INTEGER;
139806 TYPE t_array_source_38 IS TABLE OF CST_XLA_AWO_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
139807
139808 TYPE t_array_source_15 IS TABLE OF CST_XLA_AWO_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
139809 TYPE t_array_source_18 IS TABLE OF CST_XLA_AWO_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
139810 TYPE t_array_source_19 IS TABLE OF CST_XLA_AWO_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
139811 TYPE t_array_source_20 IS TABLE OF CST_XLA_AWO_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
139812 TYPE t_array_source_21 IS TABLE OF CST_XLA_AWO_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
139813 TYPE t_array_source_22 IS TABLE OF CST_XLA_AWO_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
139814 TYPE t_array_source_25 IS TABLE OF CST_XLA_AWO_LINES_V.LINE_NUMBER%TYPE INDEX BY BINARY_INTEGER;
139815
139816 l_array_source_1 t_array_source_1;
139817 l_array_source_2 t_array_source_2;
139818 l_array_source_3 t_array_source_3;
139819 l_array_source_12 t_array_source_12;
139820 l_array_source_12_meaning t_array_lookup_meaning;
139821 l_array_source_26 t_array_source_26;
139822 l_array_source_38 t_array_source_38;
139823 l_array_source_38_meaning t_array_lookup_meaning;
139824
139825 l_array_source_15 t_array_source_15;
139826 l_array_source_18 t_array_source_18;
139827 l_array_source_19 t_array_source_19;
139828 l_array_source_20 t_array_source_20;
139829 l_array_source_21 t_array_source_21;
139830 l_array_source_22 t_array_source_22;
139831 l_array_source_25 t_array_source_25;
139832
139833 --
139834 CURSOR header_cur
139835 IS
139836 SELECT /*+ leading(xet) cardinality(xet,1) */
139837 -- Event Class Code: ACCRUAL_WRITE_OFF
139838 xet.entity_id
139839 ,xet.legal_entity_id
139840 ,xet.entity_code
139841 ,xet.transaction_number
139842 ,xet.event_id
139843 ,xet.event_class_code
139844 ,xet.event_type_code
139845 ,xet.event_number
139846 ,xet.event_date
139847 ,xet.transaction_date
139848 ,xet.reference_num_1
139849 ,xet.reference_num_2
139850 ,xet.reference_num_3
139851 ,xet.reference_num_4
139852 ,xet.reference_char_1
139853 ,xet.reference_char_2
139854 ,xet.reference_char_3
139855 ,xet.reference_char_4
139856 ,xet.reference_date_1
139857 ,xet.reference_date_2
139858 ,xet.reference_date_3
139859 ,xet.reference_date_4
139860 ,xet.event_created_by
139861 ,xet.budgetary_control_flag
139862 , h1.WO_ACCRUAL_ACCOUNT_ID source_1
139863 , h1.WO_ERV_ACCOUNT_ID source_2
139864 , h1.WO_OFFSET_ACCOUNT_ID source_3
139865 , h1.DISTRIBUTION_TYPE source_12
139866 , fvl12.meaning source_12_meaning
139867 , h1.WRITE_OFF_ID source_26
139868 , h1.TRANSFER_TO_GL_INDICATOR source_38
139869 , fvl38.meaning source_38_meaning
139870 FROM xla_events_gt xet
139871 , CST_XLA_AWO_HEADERS_V h1
139872 , fnd_lookup_values fvl12
139873 , fnd_lookup_values fvl38
139874 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
139875 and xet.event_class_code = C_EVENT_CLASS_CODE
139876 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
139877 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
139878 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
139879 AND fvl12.view_application_id(+) = 700
139880 AND fvl12.language(+) = USERENV('LANG')
139881 AND fvl38.lookup_type(+) = 'YES_NO'
139882 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
139883 AND fvl38.view_application_id(+) = 0
139884 AND fvl38.language(+) = USERENV('LANG')
139885
139886 ORDER BY event_id
139887 ;
139888
139889
139890 --
139891 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
139892 IS
139893 SELECT /*+ leading(xet) cardinality(xet,1) */
139894 -- Event Class Code: ACCRUAL_WRITE_OFF
139895 xet.entity_id
139896 ,xet.legal_entity_id
139897 ,xet.entity_code
139898 ,xet.transaction_number
139899 ,xet.event_id
139900 ,xet.event_class_code
139901 ,xet.event_type_code
139902 ,xet.event_number
139903 ,xet.event_date
139904 ,xet.transaction_date
139905 ,xet.reference_num_1
139906 ,xet.reference_num_2
139907 ,xet.reference_num_3
139908 ,xet.reference_num_4
139909 ,xet.reference_char_1
139910 ,xet.reference_char_2
139911 ,xet.reference_char_3
139912 ,xet.reference_char_4
139913 ,xet.reference_date_1
139914 ,xet.reference_date_2
139915 ,xet.reference_date_3
139916 ,xet.reference_date_4
139917 ,xet.event_created_by
139918 ,xet.budgetary_control_flag
139919 , l2.LINE_NUMBER
139920 , l2.CURRENCY_CODE source_15
139921 , l2.ENTERED_AMOUNT source_18
139922 , l2.CURRENCY_CONVERSION_DATE source_19
139923 , l2.CURRENCY_CONVERSION_RATE source_20
139924 , l2.CURRENCY_CONVERSION_TYPE source_21
139925 , l2.ACCOUNTED_AMOUNT source_22
139926 , l2.LINE_NUMBER source_25
139927 FROM xla_events_gt xet
139928 , CST_XLA_AWO_LINES_V l2
139929 WHERE xet.event_id between x_first_event_id and x_last_event_id
139930 and xet.event_date between p_pad_start_date and p_pad_end_date
139931 and xet.event_class_code = C_EVENT_CLASS_CODE
139932 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
139933 ;
139934
139935 --
139936 BEGIN
139937 IF g_log_enabled THEN
139938 l_log_module := C_DEFAULT_MODULE||'.EventClass_251';
139939 END IF;
139940 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
139941 trace
139942 (p_msg => 'BEGIN of EventClass_251'
139943 ,p_level => C_LEVEL_PROCEDURE
139944 ,p_module => l_log_module);
139945 END IF;
139946
139947 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
139948 trace
139949 (p_msg => 'p_application_id = '||p_application_id||
139950 ' - p_base_ledger_id = '||p_base_ledger_id||
139951 ' - p_target_ledger_id = '||p_target_ledger_id||
139952 ' - p_language = '||p_language||
139953 ' - p_currency_code = '||p_currency_code||
139954 ' - p_sla_ledger_id = '||p_sla_ledger_id
139955 ,p_level => C_LEVEL_STATEMENT
139956 ,p_module => l_log_module);
139957 END IF;
139958 --
139959 -- initialze arrays
139960 --
139961 g_array_event.DELETE;
139962 l_rec_array_event := l_null_rec_array_event;
139963 --
139964 --------------------------------------
139965 -- 4262811 Initialze MPA Line Number
139966 --------------------------------------
139967 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
139968
139969 --
139970
139971 --
139972 OPEN header_cur;
139973 --
139974 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
139975 trace
139976 (p_msg => 'SQL - FETCH header_cur'
139977 ,p_level => C_LEVEL_STATEMENT
139978 ,p_module => l_log_module);
139979 END IF;
139980 --
139981 LOOP
139982 FETCH header_cur BULK COLLECT INTO
139983 l_array_entity_id
139984 , l_array_legal_entity_id
139985 , l_array_entity_code
139986 , l_array_transaction_num
139987 , l_array_event_id
139988 , l_array_class_code
139989 , l_array_event_type
139990 , l_array_event_number
139991 , l_array_event_date
139992 , l_array_transaction_date
139993 , l_array_reference_num_1
139994 , l_array_reference_num_2
139995 , l_array_reference_num_3
139996 , l_array_reference_num_4
139997 , l_array_reference_char_1
139998 , l_array_reference_char_2
139999 , l_array_reference_char_3
140000 , l_array_reference_char_4
140001 , l_array_reference_date_1
140002 , l_array_reference_date_2
140003 , l_array_reference_date_3
140004 , l_array_reference_date_4
140005 , l_array_event_created_by
140006 , l_array_budgetary_control_flag
140007 , l_array_source_1
140008 , l_array_source_2
140009 , l_array_source_3
140010 , l_array_source_12
140011 , l_array_source_12_meaning
140012 , l_array_source_26
140013 , l_array_source_38
140014 , l_array_source_38_meaning
140015 LIMIT l_rows;
140016 --
140017 IF (C_LEVEL_EVENT >= g_log_level) THEN
140018 trace
140019 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
140020 ,p_level => C_LEVEL_EVENT
140021 ,p_module => l_log_module);
140022 END IF;
140023 --
140024 EXIT WHEN l_array_entity_id.COUNT = 0;
140025
140026 -- initialize arrays
140027 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
140028 XLA_AE_LINES_PKG.g_rec_lines := NULL;
140029
140030 --
140031 -- Bug 4458708
140032 --
140033 XLA_AE_LINES_PKG.g_LineNumber := 0;
140034
140035
140036 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
140037 g_last_hdr_idx := l_array_event_id.LAST;
140038 --
140039 -- loop for the headers. Each iteration is for each header extract row
140040 -- fetched in header cursor
140041 --
140042 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
140043
140044 --
140045 -- set event info as cache for other routines to refer event attributes
140046 --
140047 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
140048 (p_application_id => p_application_id
140049 ,p_primary_ledger_id => p_primary_ledger_id
140050 ,p_base_ledger_id => p_base_ledger_id
140051 ,p_target_ledger_id => p_target_ledger_id
140052 ,p_entity_id => l_array_entity_id(hdr_idx)
140053 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
140054 ,p_entity_code => l_array_entity_code(hdr_idx)
140055 ,p_transaction_num => l_array_transaction_num(hdr_idx)
140056 ,p_event_id => l_array_event_id(hdr_idx)
140057 ,p_event_class_code => l_array_class_code(hdr_idx)
140058 ,p_event_type_code => l_array_event_type(hdr_idx)
140059 ,p_event_number => l_array_event_number(hdr_idx)
140060 ,p_event_date => l_array_event_date(hdr_idx)
140061 ,p_transaction_date => l_array_transaction_date(hdr_idx)
140062 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
140063 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
140064 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
140065 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
140066 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
140067 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
140068 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
140069 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
140070 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
140071 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
140072 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
140073 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
140074 ,p_event_created_by => l_array_event_created_by(hdr_idx)
140075 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
140076
140077 --
140078 -- set the status of entry to C_VALID (0)
140079 --
140080 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
140081
140082 --
140083 -- initialize a row for ae header
140084 --
140085 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
140086
140087 l_event_id := l_array_event_id(hdr_idx);
140088
140089 --
140090 -- storing the hdr_idx for event. May be used by line cursor.
140091 --
140092 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
140093
140094 --
140095 -- store sources from header extract. This can be improved to
140096 -- store only those sources from header extract that may be used in lines
140097 --
140098
140099 g_array_event(l_event_id).array_value_num('source_1') := l_array_source_1(hdr_idx);
140100 g_array_event(l_event_id).array_value_num('source_2') := l_array_source_2(hdr_idx);
140101 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
140102 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
140103 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
140104 g_array_event(l_event_id).array_value_num('source_26') := l_array_source_26(hdr_idx);
140105 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
140106 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
140107
140108 --
140109 -- initilaize the status of ae headers for diffrent balance types
140110 -- the status is initialised to C_NOT_CREATED (2)
140111 --
140112 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
140113 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
140114 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
140115
140116 --
140117 -- call api to validate and store accounting attributes for header
140118 --
140119
140120 ------------------------------------------------------------
140121 -- Accrual Reversal : to get date for Standard Source (NONE)
140122 ------------------------------------------------------------
140123 l_acc_rev_gl_date_source := NULL;
140124
140125 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
140126 l_rec_acct_attrs.array_date_value(1) :=
140127 xla_ae_sources_pkg.GetSystemSourceDate(
140128 p_source_code => 'XLA_REFERENCE_DATE_1'
140129 , p_source_type_code => 'Y'
140130 , p_source_application_id => 602
140131 );
140132 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_TRANSFER_FLAG';
140133 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
140134
140135
140136 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
140137
140138 XLA_AE_HEADER_PKG.SetJeCategoryName;
140139
140140 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
140141 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
140142 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
140143 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
140144 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
140145
140146
140147 -- No header level analytical criteria
140148
140149 --
140150 --accounting attribute enhancement, bug 3612931
140151 --
140152 l_trx_reversal_source := SUBSTR(NULL, 1,30);
140153
140154 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
140155 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
140156
140157 xla_accounting_err_pkg.build_message
140158 (p_appli_s_name => 'XLA'
140159 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
140160 ,p_token_1 => 'ACCT_ATTR_NAME'
140161 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
140162 ,p_token_2 => 'PRODUCT_NAME'
140163 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
140164 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
140165 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
140166 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
140167
140168 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
140169 --
140170 -- following sets the accounting attributes needed to reverse
140171 -- accounting for a distributeion
140172 --
140173 xla_ae_lines_pkg.SetTrxReversalAttrs
140174 (p_event_id => l_event_id
140175 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
140176 ,p_trx_reversal_source => l_trx_reversal_source);
140177
140178 END IF;
140179
140180
140181 ----------------------------------------------------------------
140182 -- 4262811 - update the header statuses to invalid in need be
140183 ----------------------------------------------------------------
140184 --
140185 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
140186
140187
140188 -----------------------------------------------
140189 -- No accrual reversal for the event class/type
140190 -----------------------------------------------
140191 ----------------------------------------------------------------
140192
140193 --
140194 -- this ends the header loop iteration for one bulk fetch
140195 --
140196 END LOOP;
140197
140198 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
140199 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
140200
140201 --
140202 -- insert dummy rows into lines gt table that were created due to
140203 -- transaction reversals
140204 --
140205 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
140206 l_result := XLA_AE_LINES_PKG.InsertLines;
140207 END IF;
140208
140209 --
140210 -- reset the temp_line_num for each set of events fetched from header
140211 -- cursor rather than doing it for each new event in line cursor
140212 -- Bug 3939231
140213 --
140214 xla_ae_lines_pkg.g_temp_line_num := 0;
140215
140216
140217
140218 --
140219 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
140220 --
140221 --
140222 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
140223
140224 trace
140225 (p_msg => 'SQL - FETCH line_cur'
140226 ,p_level => C_LEVEL_STATEMENT
140227 ,p_module => l_log_module);
140228
140229 END IF;
140230 --
140231 --
140232 LOOP
140233 --
140234 FETCH line_cur BULK COLLECT INTO
140235 l_array_entity_id
140236 , l_array_legal_entity_id
140237 , l_array_entity_code
140238 , l_array_transaction_num
140239 , l_array_event_id
140240 , l_array_class_code
140241 , l_array_event_type
140242 , l_array_event_number
140243 , l_array_event_date
140244 , l_array_transaction_date
140245 , l_array_reference_num_1
140246 , l_array_reference_num_2
140247 , l_array_reference_num_3
140248 , l_array_reference_num_4
140249 , l_array_reference_char_1
140250 , l_array_reference_char_2
140251 , l_array_reference_char_3
140252 , l_array_reference_char_4
140253 , l_array_reference_date_1
140254 , l_array_reference_date_2
140255 , l_array_reference_date_3
140256 , l_array_reference_date_4
140257 , l_array_event_created_by
140258 , l_array_budgetary_control_flag
140259 , l_array_extract_line_num
140260 , l_array_source_15
140261 , l_array_source_18
140262 , l_array_source_19
140263 , l_array_source_20
140264 , l_array_source_21
140265 , l_array_source_22
140266 , l_array_source_25
140267 LIMIT l_rows;
140268
140269 --
140270 IF (C_LEVEL_EVENT >= g_log_level) THEN
140271 trace
140272 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
140273 ,p_level => C_LEVEL_EVENT
140274 ,p_module => l_log_module);
140275 END IF;
140276 --
140277 EXIT WHEN l_array_entity_id.count = 0;
140278
140279 XLA_AE_LINES_PKG.g_rec_lines := null;
140280
140281 --
140282 -- Bug 4458708
140283 --
140284 XLA_AE_LINES_PKG.g_LineNumber := 0;
140285 --
140286 --
140287
140288 FOR Idx IN 1..l_array_event_id.count LOOP
140289 --
140290 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
140291 --
140292 l_event_id := l_array_event_id(idx); -- 5648433
140293
140294 --
140295 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
140296 --
140297
140298 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
140299 (g_array_event(l_event_id).array_value_num('header_index'))
140300 ,'N'
140301 ) <> 'Y'
140302 THEN
140303 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
140304 trace
140305 (p_msg => 'Trancaction revesal option is not Y '
140306 ,p_level => C_LEVEL_STATEMENT
140307 ,p_module => l_log_module);
140308 END IF;
140309
140310 --
140311 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
140312 --
140313 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
140314 --
140315 -- set event info as cache for other routines to refer event attributes
140316 --
140317
140318 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
140319 l_previous_event_id := l_event_id;
140320
140321 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
140322 (p_application_id => p_application_id
140323 ,p_primary_ledger_id => p_primary_ledger_id
140324 ,p_base_ledger_id => p_base_ledger_id
140325 ,p_target_ledger_id => p_target_ledger_id
140326 ,p_entity_id => l_array_entity_id(Idx)
140327 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
140328 ,p_entity_code => l_array_entity_code(Idx)
140329 ,p_transaction_num => l_array_transaction_num(Idx)
140330 ,p_event_id => l_array_event_id(Idx)
140331 ,p_event_class_code => l_array_class_code(Idx)
140332 ,p_event_type_code => l_array_event_type(Idx)
140333 ,p_event_number => l_array_event_number(Idx)
140334 ,p_event_date => l_array_event_date(Idx)
140335 ,p_transaction_date => l_array_transaction_date(Idx)
140336 ,p_reference_num_1 => l_array_reference_num_1(Idx)
140337 ,p_reference_num_2 => l_array_reference_num_2(Idx)
140338 ,p_reference_num_3 => l_array_reference_num_3(Idx)
140339 ,p_reference_num_4 => l_array_reference_num_4(Idx)
140340 ,p_reference_char_1 => l_array_reference_char_1(Idx)
140341 ,p_reference_char_2 => l_array_reference_char_2(Idx)
140342 ,p_reference_char_3 => l_array_reference_char_3(Idx)
140343 ,p_reference_char_4 => l_array_reference_char_4(Idx)
140344 ,p_reference_date_1 => l_array_reference_date_1(Idx)
140345 ,p_reference_date_2 => l_array_reference_date_2(Idx)
140346 ,p_reference_date_3 => l_array_reference_date_3(Idx)
140347 ,p_reference_date_4 => l_array_reference_date_4(Idx)
140348 ,p_event_created_by => l_array_event_created_by(Idx)
140349 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
140350 --
140351 END IF;
140352
140353
140354
140355 --
140356 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
140357
140358 l_acct_reversal_source := SUBSTR(NULL, 1,30);
140359
140360 IF l_continue_with_lines THEN
140361 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
140362 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
140363
140364 xla_accounting_err_pkg.build_message
140365 (p_appli_s_name => 'XLA'
140366 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
140367 ,p_token_1 => 'LINE_NUMBER'
140368 ,p_value_1 => l_array_extract_line_num(Idx)
140369 ,p_token_2 => 'PRODUCT_NAME'
140370 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
140371 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
140372 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
140373 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
140374
140375 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
140376 --
140377 -- following sets the accounting attributes needed to reverse
140378 -- accounting for a distributeion
140379 --
140380
140381 --
140382 -- 5217187
140383 --
140384 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
140385 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
140386 g_array_event(l_event_id).array_value_num('header_index'));
140387 --
140388 --
140389
140390 -- No reversal code generated
140391
140392 xla_ae_lines_pkg.SetAcctReversalAttrs
140393 (p_event_id => l_event_id
140394 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
140395 ,p_calculate_acctd_flag => l_calculate_acctd_flag
140396 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
140397 END IF;
140398
140399 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
140400 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
140401
140402 --
140403 AcctLineType_7 (
140404 p_application_id => p_application_id
140405 ,p_event_id => l_event_id
140406 ,p_calculate_acctd_flag => l_calculate_acctd_flag
140407 ,p_calculate_g_l_flag => l_calculate_g_l_flag
140408 ,p_actual_flag => l_actual_flag
140409 ,p_balance_type_code => l_balance_type_code
140410 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
140411
140412 , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
140413 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
140414 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
140415 , p_source_15 => l_array_source_15(Idx)
140416 , p_source_18 => l_array_source_18(Idx)
140417 , p_source_19 => l_array_source_19(Idx)
140418 , p_source_20 => l_array_source_20(Idx)
140419 , p_source_21 => l_array_source_21(Idx)
140420 , p_source_22 => l_array_source_22(Idx)
140421 , p_source_25 => l_array_source_25(Idx)
140422 , p_source_26 => g_array_event(l_event_id).array_value_num('source_26')
140423 );
140424 If(l_balance_type_code = 'A') THEN
140425 l_actual_gain_loss_ref := l_gain_or_loss_ref;
140426 END IF;
140427
140428 --
140429
140430
140431 --
140432 AcctLineType_203 (
140433 p_application_id => p_application_id
140434 ,p_event_id => l_event_id
140435 ,p_calculate_acctd_flag => l_calculate_acctd_flag
140436 ,p_calculate_g_l_flag => l_calculate_g_l_flag
140437 ,p_actual_flag => l_actual_flag
140438 ,p_balance_type_code => l_balance_type_code
140439 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
140440
140441 , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
140442 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
140443 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
140444 , p_source_15 => l_array_source_15(Idx)
140445 , p_source_18 => l_array_source_18(Idx)
140446 , p_source_19 => l_array_source_19(Idx)
140447 , p_source_20 => l_array_source_20(Idx)
140448 , p_source_21 => l_array_source_21(Idx)
140449 , p_source_22 => l_array_source_22(Idx)
140450 , p_source_25 => l_array_source_25(Idx)
140451 , p_source_26 => g_array_event(l_event_id).array_value_num('source_26')
140452 );
140453 If(l_balance_type_code = 'A') THEN
140454 l_actual_gain_loss_ref := l_gain_or_loss_ref;
140455 END IF;
140456
140457 --
140458
140459
140460 --
140461 AcctLineType_248 (
140462 p_application_id => p_application_id
140463 ,p_event_id => l_event_id
140464 ,p_calculate_acctd_flag => l_calculate_acctd_flag
140465 ,p_calculate_g_l_flag => l_calculate_g_l_flag
140466 ,p_actual_flag => l_actual_flag
140467 ,p_balance_type_code => l_balance_type_code
140468 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
140469
140470 , p_source_2 => g_array_event(l_event_id).array_value_num('source_2')
140471 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
140472 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
140473 , p_source_15 => l_array_source_15(Idx)
140474 , p_source_18 => l_array_source_18(Idx)
140475 , p_source_19 => l_array_source_19(Idx)
140476 , p_source_20 => l_array_source_20(Idx)
140477 , p_source_21 => l_array_source_21(Idx)
140478 , p_source_22 => l_array_source_22(Idx)
140479 , p_source_25 => l_array_source_25(Idx)
140480 , p_source_26 => g_array_event(l_event_id).array_value_num('source_26')
140481 );
140482 If(l_balance_type_code = 'A') THEN
140483 l_actual_gain_loss_ref := l_gain_or_loss_ref;
140484 END IF;
140485
140486 --
140487
140488
140489 --
140490 AcctLineType_249 (
140491 p_application_id => p_application_id
140492 ,p_event_id => l_event_id
140493 ,p_calculate_acctd_flag => l_calculate_acctd_flag
140494 ,p_calculate_g_l_flag => l_calculate_g_l_flag
140495 ,p_actual_flag => l_actual_flag
140496 ,p_balance_type_code => l_balance_type_code
140497 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
140498
140499 , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
140500 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
140501 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
140502 , p_source_15 => l_array_source_15(Idx)
140503 , p_source_18 => l_array_source_18(Idx)
140504 , p_source_19 => l_array_source_19(Idx)
140505 , p_source_20 => l_array_source_20(Idx)
140506 , p_source_21 => l_array_source_21(Idx)
140507 , p_source_22 => l_array_source_22(Idx)
140508 , p_source_25 => l_array_source_25(Idx)
140509 , p_source_26 => g_array_event(l_event_id).array_value_num('source_26')
140510 );
140511 If(l_balance_type_code = 'A') THEN
140512 l_actual_gain_loss_ref := l_gain_or_loss_ref;
140513 END IF;
140514
140515 --
140516
140517 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
140518 -- or secondary ledger that has different currency with primary
140519 -- or alc that is calculated by sla
140520 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
140521 (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'))
140522
140523 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
140524 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
140525 AND (l_actual_flag = 'A')) THEN
140526 XLA_AE_LINES_PKG.CreateGainOrLossLines(
140527 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
140528 ,p_application_id => p_application_id
140529 ,p_amb_context_code => 'DEFAULT'
140530 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
140531 ,p_event_class_code => C_EVENT_CLASS_CODE
140532 ,p_event_type_code => C_EVENT_TYPE_CODE
140533
140534 ,p_gain_ccid => -1
140535 ,p_loss_ccid => -1
140536
140537 ,p_actual_flag => l_actual_flag
140538 ,p_enc_flag => null
140539 ,p_actual_g_l_ref => l_actual_gain_loss_ref
140540 ,p_enc_g_l_ref => null
140541 );
140542 END IF;
140543 END IF;
140544 END IF;
140545
140546 ELSE
140547 --
140548 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
140549 --
140550 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
140551 trace
140552 (p_msg => 'Trancaction revesal option is Y'
140553 ,p_level => C_LEVEL_STATEMENT
140554 ,p_module => l_log_module);
140555 END IF;
140556 END IF;
140557
140558 END LOOP;
140559 l_result := XLA_AE_LINES_PKG.InsertLines ;
140560 end loop;
140561 close line_cur;
140562
140563
140564 --
140565 -- insert headers into xla_ae_headers_gt table
140566 --
140567 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
140568
140569 -- insert into errors table here.
140570
140571 END LOOP;
140572
140573 --
140574 -- 4865292
140575 --
140576 -- Compare g_hdr_extract_count with event count in
140577 -- CreateHeadersAndLines.
140578 --
140579 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
140580
140581 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
140582 trace (p_msg => '# rows extracted from header extract objects '
140583 || ' (running total): '
140584 || g_hdr_extract_count
140585 ,p_level => C_LEVEL_STATEMENT
140586 ,p_module => l_log_module);
140587 END IF;
140588
140589 CLOSE header_cur;
140590 --
140591
140592 --
140593 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
140594 trace
140595 (p_msg => 'END of EventClass_251'
140596 ,p_level => C_LEVEL_PROCEDURE
140597 ,p_module => l_log_module);
140598 END IF;
140599 --
140600 RETURN l_result;
140601 EXCEPTION
140602 WHEN xla_exceptions_pkg.application_exception THEN
140603
140604 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
140605
140606
140607 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
140608
140609 RAISE;
140610
140611 WHEN NO_DATA_FOUND THEN
140612
140613 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
140614 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
140615
140616 FOR header_record IN header_cur
140617 LOOP
140618 l_array_header_events(header_record.event_id) := header_record.event_id;
140619 END LOOP;
140620
140621 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
140622 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
140623
140624 fnd_file.put_line(fnd_file.LOG, ' ');
140625 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
140626 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
140627 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
140628
140629 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
140630 LOOP
140631 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
140632 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
140633 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
140634 END IF;
140635 END LOOP;
140636
140637 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
140638 fnd_file.put_line(fnd_file.LOG, ' ');
140639
140640
140641 xla_exceptions_pkg.raise_message
140642 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_251');
140643
140644
140645 WHEN OTHERS THEN
140646 xla_exceptions_pkg.raise_message
140647 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_251');
140648 END EventClass_251;
140649 --
140650
140651 ---------------------------------------
140652 --
140653 -- PRIVATE PROCEDURE
140654 -- insert_sources_252
140655 --
140656 ----------------------------------------
140657 --
140658 PROCEDURE insert_sources_252(
140659 p_target_ledger_id IN NUMBER
140660 , p_language IN VARCHAR2
140661 , p_sla_ledger_id IN NUMBER
140662 , p_pad_start_date IN DATE
140663 , p_pad_end_date IN DATE
140664 )
140665 IS
140666
140667 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'CON_INV_OWNR_TXFR_ALL';
140668 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'CON_INV_OWNR_TXFR';
140669 p_apps_owner VARCHAR2(30);
140670 l_log_module VARCHAR2(240);
140671 BEGIN
140672 IF g_log_enabled THEN
140673 l_log_module := C_DEFAULT_MODULE||'.insert_sources_252';
140674 END IF;
140675 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
140676
140677 trace
140678 (p_msg => 'BEGIN of insert_sources_252'
140679 ,p_level => C_LEVEL_PROCEDURE
140680 ,p_module => l_log_module);
140681
140682 END IF;
140683
140684 -- select APPS owner
140685 SELECT oracle_username
140686 INTO p_apps_owner
140687 FROM fnd_oracle_userid
140688 WHERE read_only_flag = 'U'
140689 ;
140690
140691 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
140692 trace
140693 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
140694 ' - p_language = '||p_language||
140695 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
140696 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
140697 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
140698 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
140699 ,p_level => C_LEVEL_STATEMENT
140700 ,p_module => l_log_module);
140701 END IF;
140702
140703
140704 --
140705 INSERT INTO xla_diag_sources --hdr2
140706 (
140707 event_id
140708 , ledger_id
140709 , sla_ledger_id
140710 , description_language
140711 , object_name
140712 , object_type_code
140713 , line_number
140714 , source_application_id
140715 , source_type_code
140716 , source_code
140717 , source_value
140718 , source_meaning
140719 , created_by
140720 , creation_date
140721 , last_update_date
140722 , last_updated_by
140723 , last_update_login
140724 , program_update_date
140725 , program_application_id
140726 , program_id
140727 , request_id
140728 )
140729 SELECT
140730 event_id
140731 , p_target_ledger_id
140732 , p_sla_ledger_id
140733 , p_language
140734 , object_name
140735 , object_type_code
140736 , line_number
140737 , source_application_id
140738 , source_type_code
140739 , source_code
140740 , SUBSTR(source_value ,1,1996)
140741 , SUBSTR(source_meaning ,1,200)
140742 , xla_environment_pkg.g_Usr_Id
140743 , TRUNC(SYSDATE)
140744 , TRUNC(SYSDATE)
140745 , xla_environment_pkg.g_Usr_Id
140746 , xla_environment_pkg.g_Login_Id
140747 , TRUNC(SYSDATE)
140748 , xla_environment_pkg.g_Prog_Appl_Id
140749 , xla_environment_pkg.g_Prog_Id
140750 , xla_environment_pkg.g_Req_Id
140751 FROM (
140752 SELECT xet.event_id event_id
140753 , 0 line_number
140754 , CASE r
140755 WHEN 1 THEN 'CST_XLA_INV_HEADERS_V'
140756 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V'
140757
140758 ELSE null
140759 END object_name
140760 , CASE r
140761 WHEN 1 THEN 'HEADER'
140762 WHEN 2 THEN 'HEADER'
140763
140764 ELSE null
140765 END object_type_code
140766 , CASE r
140767 WHEN 1 THEN '707'
140768 WHEN 2 THEN '707'
140769
140770 ELSE null
140771 END source_application_id
140772 , 'S' source_type_code
140773 , CASE r
140774 WHEN 1 THEN 'DISTRIBUTION_TYPE'
140775 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR'
140776
140777 ELSE null
140778 END source_code
140779 , CASE r
140780 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
140781 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
140782
140783 ELSE null
140784 END source_value
140785 , CASE r
140786 WHEN 1 THEN fvl12.meaning
140787 WHEN 2 THEN fvl38.meaning
140788
140789 ELSE null
140790 END source_meaning
140791 FROM xla_events_gt xet
140792 , CST_XLA_INV_HEADERS_V h1
140793 , fnd_lookup_values fvl12
140794 , fnd_lookup_values fvl38
140795 ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
140796 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
140797 AND xet.event_class_code = C_EVENT_CLASS_CODE
140798 AND h1.event_id = xet.event_id
140799 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
140800 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
140801 AND fvl12.view_application_id(+) = 700
140802 AND fvl12.language(+) = USERENV('LANG')
140803 AND fvl38.lookup_type(+) = 'YES_NO'
140804 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
140805 AND fvl38.view_application_id(+) = 0
140806 AND fvl38.language(+) = USERENV('LANG')
140807
140808 )
140809 ;
140810 --
140811 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
140812
140813 trace
140814 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
140815 ,p_level => C_LEVEL_STATEMENT
140816 ,p_module => l_log_module);
140817
140818 END IF;
140819 --
140820
140821
140822
140823 --
140824 INSERT INTO xla_diag_sources --line2
140825 (
140826 event_id
140827 , ledger_id
140828 , sla_ledger_id
140829 , description_language
140830 , object_name
140831 , object_type_code
140832 , line_number
140833 , source_application_id
140834 , source_type_code
140835 , source_code
140836 , source_value
140837 , source_meaning
140838 , created_by
140839 , creation_date
140840 , last_update_date
140841 , last_updated_by
140842 , last_update_login
140843 , program_update_date
140844 , program_application_id
140845 , program_id
140846 , request_id
140847 )
140848 SELECT event_id
140849 , p_target_ledger_id
140850 , p_sla_ledger_id
140851 , p_language
140852 , object_name
140853 , object_type_code
140854 , line_number
140855 , source_application_id
140856 , source_type_code
140857 , source_code
140858 , SUBSTR(source_value,1,1996)
140859 , SUBSTR(source_meaning ,1,200)
140860 , xla_environment_pkg.g_Usr_Id
140861 , TRUNC(SYSDATE)
140862 , TRUNC(SYSDATE)
140863 , xla_environment_pkg.g_Usr_Id
140864 , xla_environment_pkg.g_Login_Id
140865 , TRUNC(SYSDATE)
140866 , xla_environment_pkg.g_Prog_Appl_Id
140867 , xla_environment_pkg.g_Prog_Id
140868 , xla_environment_pkg.g_Req_Id
140869 FROM (
140870 SELECT xet.event_id event_id
140871 , l2.line_number line_number
140872 , CASE r
140873 WHEN 1 THEN 'CST_XLA_INV_LINES_V'
140874 WHEN 2 THEN 'CST_XLA_INV_LINES_V'
140875 WHEN 3 THEN 'CST_XLA_INV_LINES_V'
140876 WHEN 4 THEN 'CST_XLA_INV_LINES_V'
140877 WHEN 5 THEN 'CST_XLA_INV_LINES_V'
140878 WHEN 6 THEN 'CST_XLA_INV_LINES_V'
140879 WHEN 7 THEN 'CST_XLA_INV_LINES_V'
140880 WHEN 8 THEN 'CST_XLA_INV_LINES_V'
140881 WHEN 9 THEN 'CST_XLA_INV_LINES_V'
140882
140883 ELSE null
140884 END object_name
140885 , CASE r
140886 WHEN 1 THEN 'LINE'
140887 WHEN 2 THEN 'LINE'
140888 WHEN 3 THEN 'LINE'
140889 WHEN 4 THEN 'LINE'
140890 WHEN 5 THEN 'LINE'
140891 WHEN 6 THEN 'LINE'
140892 WHEN 7 THEN 'LINE'
140893 WHEN 8 THEN 'LINE'
140894 WHEN 9 THEN 'LINE'
140895
140896 ELSE null
140897 END object_type_code
140898 , CASE r
140899 WHEN 1 THEN '707'
140900 WHEN 2 THEN '707'
140901 WHEN 3 THEN '707'
140902 WHEN 4 THEN '707'
140903 WHEN 5 THEN '707'
140904 WHEN 6 THEN '707'
140905 WHEN 7 THEN '707'
140906 WHEN 8 THEN '707'
140907 WHEN 9 THEN '707'
140908
140909 ELSE null
140910 END source_application_id
140911 , 'S' source_type_code
140912 , CASE r
140913 WHEN 1 THEN 'CODE_COMBINATION_ID'
140914 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER'
140915 WHEN 3 THEN 'CURRENCY_CODE'
140916 WHEN 4 THEN 'ENTERED_AMOUNT'
140917 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE'
140918 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE'
140919 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE'
140920 WHEN 8 THEN 'ACCOUNTED_AMOUNT'
140921 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE'
140922
140923 ELSE null
140924 END source_code
140925 , CASE r
140926 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
140927 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
140928 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
140929 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
140930 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
140931 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
140932 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
140933 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
140934 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
140935
140936 ELSE null
140937 END source_value
140938 , null source_meaning
140939 FROM xla_events_gt xet
140940 , CST_XLA_INV_LINES_V l2
140941 , (select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
140942 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
140943 AND xet.event_class_code = C_EVENT_CLASS_CODE
140944 AND l2.event_id = xet.event_id
140945
140946 )
140947 ;
140948 --
140949 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
140950
140951 trace
140952 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
140953 ,p_level => C_LEVEL_STATEMENT
140954 ,p_module => l_log_module);
140955
140956 END IF;
140957
140958
140959 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
140960 trace
140961 (p_msg => 'END of insert_sources_252'
140962 ,p_level => C_LEVEL_PROCEDURE
140963 ,p_module => l_log_module);
140964 END IF;
140965 EXCEPTION
140966 WHEN xla_exceptions_pkg.application_exception THEN
140967 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
140968 trace
140969 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
140970 ,p_level => C_LEVEL_EXCEPTION
140971 ,p_module => l_log_module);
140972 END IF;
140973 RAISE;
140974 WHEN OTHERS THEN
140975 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
140976 trace
140977 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
140978 ,p_level => C_LEVEL_EXCEPTION
140979 ,p_module => l_log_module);
140980 END IF;
140981 xla_exceptions_pkg.raise_message
140982 (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_252');
140983 END insert_sources_252;
140984 --
140985
140986 ---------------------------------------
140987 --
140988 -- PRIVATE FUNCTION
140989 -- EventClass_252
140990 --
140991 ----------------------------------------
140992 --
140993 FUNCTION EventClass_252
140994 (p_application_id IN NUMBER
140995 ,p_base_ledger_id IN NUMBER
140996 ,p_target_ledger_id IN NUMBER
140997 ,p_language IN VARCHAR2
140998 ,p_currency_code IN VARCHAR2
140999 ,p_sla_ledger_id IN NUMBER
141000 ,p_pad_start_date IN DATE
141001 ,p_pad_end_date IN DATE
141002 ,p_primary_ledger_id IN NUMBER)
141003 RETURN BOOLEAN IS
141004 --
141005 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'CON_INV_OWNR_TXFR_ALL';
141006 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'CON_INV_OWNR_TXFR';
141007
141008 l_calculate_acctd_flag VARCHAR2(1) :='N';
141009 l_calculate_g_l_flag VARCHAR2(1) :='N';
141010 --
141011 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
141012 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
141013 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
141014 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
141015 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
141016 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
141017 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
141018 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
141019 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
141020 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
141021 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
141022 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
141023 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
141024 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
141025 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
141026 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
141027 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
141028 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
141029 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
141030 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
141031 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
141032 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
141033 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
141034 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
141035 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
141036 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
141037
141038 l_event_id NUMBER;
141039 l_previous_event_id NUMBER;
141040 l_first_event_id NUMBER;
141041 l_last_event_id NUMBER;
141042
141043 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
141044 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
141045 --
141046 --
141047 l_result BOOLEAN := TRUE;
141048 l_rows NUMBER := 1000;
141049 l_event_type_name VARCHAR2(80) := 'All';
141050 l_event_class_name VARCHAR2(80) := 'Consigned Inventory Ownership Transfer';
141051 l_description VARCHAR2(4000);
141052 l_transaction_reversal NUMBER;
141053 l_ae_header_id NUMBER;
141054 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
141055 l_log_module VARCHAR2(240);
141056 --
141057 l_acct_reversal_source VARCHAR2(30);
141058 l_trx_reversal_source VARCHAR2(30);
141059
141060 l_continue_with_lines BOOLEAN := TRUE;
141061 --
141062 l_acc_rev_gl_date_source DATE; -- 4262811
141063 --
141064 type t_array_event_id is table of number index by binary_integer;
141065
141066 l_rec_array_event t_rec_array_event;
141067 l_null_rec_array_event t_rec_array_event;
141068 l_array_ae_header_id xla_number_array_type;
141069 l_actual_flag VARCHAR2(1) := NULL;
141070 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
141071 l_balance_type_code VARCHAR2(1) :=NULL;
141072 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
141073
141074 --
141075 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
141076 --
141077
141078 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
141079 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
141080
141081 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
141082 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
141083 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
141084 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
141085 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
141086 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
141087 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
141088 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
141089 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
141090
141091 l_array_source_12 t_array_source_12;
141092 l_array_source_12_meaning t_array_lookup_meaning;
141093 l_array_source_38 t_array_source_38;
141094 l_array_source_38_meaning t_array_lookup_meaning;
141095
141096 l_array_source_4 t_array_source_4;
141097 l_array_source_11 t_array_source_11;
141098 l_array_source_15 t_array_source_15;
141099 l_array_source_18 t_array_source_18;
141100 l_array_source_19 t_array_source_19;
141101 l_array_source_20 t_array_source_20;
141102 l_array_source_21 t_array_source_21;
141103 l_array_source_22 t_array_source_22;
141104 l_array_source_24 t_array_source_24;
141105
141106 --
141107 CURSOR header_cur
141108 IS
141109 SELECT /*+ leading(xet) cardinality(xet,1) */
141110 -- Event Class Code: CON_INV_OWNR_TXFR
141111 xet.entity_id
141112 ,xet.legal_entity_id
141113 ,xet.entity_code
141114 ,xet.transaction_number
141115 ,xet.event_id
141116 ,xet.event_class_code
141117 ,xet.event_type_code
141118 ,xet.event_number
141119 ,xet.event_date
141120 ,xet.transaction_date
141121 ,xet.reference_num_1
141122 ,xet.reference_num_2
141123 ,xet.reference_num_3
141124 ,xet.reference_num_4
141125 ,xet.reference_char_1
141126 ,xet.reference_char_2
141127 ,xet.reference_char_3
141128 ,xet.reference_char_4
141129 ,xet.reference_date_1
141130 ,xet.reference_date_2
141131 ,xet.reference_date_3
141132 ,xet.reference_date_4
141133 ,xet.event_created_by
141134 ,xet.budgetary_control_flag
141135 , h1.DISTRIBUTION_TYPE source_12
141136 , fvl12.meaning source_12_meaning
141137 , h1.TRANSFER_TO_GL_INDICATOR source_38
141138 , fvl38.meaning source_38_meaning
141139 FROM xla_events_gt xet
141140 , CST_XLA_INV_HEADERS_V h1
141141 , fnd_lookup_values fvl12
141142 , fnd_lookup_values fvl38
141143 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
141144 and xet.event_class_code = C_EVENT_CLASS_CODE
141145 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
141146 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
141147 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
141148 AND fvl12.view_application_id(+) = 700
141149 AND fvl12.language(+) = USERENV('LANG')
141150 AND fvl38.lookup_type(+) = 'YES_NO'
141151 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
141152 AND fvl38.view_application_id(+) = 0
141153 AND fvl38.language(+) = USERENV('LANG')
141154
141155 ORDER BY event_id
141156 ;
141157
141158
141159 --
141160 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
141161 IS
141162 SELECT /*+ leading(xet) cardinality(xet,1) */
141163 -- Event Class Code: CON_INV_OWNR_TXFR
141164 xet.entity_id
141165 ,xet.legal_entity_id
141166 ,xet.entity_code
141167 ,xet.transaction_number
141168 ,xet.event_id
141169 ,xet.event_class_code
141170 ,xet.event_type_code
141171 ,xet.event_number
141172 ,xet.event_date
141173 ,xet.transaction_date
141174 ,xet.reference_num_1
141175 ,xet.reference_num_2
141176 ,xet.reference_num_3
141177 ,xet.reference_num_4
141178 ,xet.reference_char_1
141179 ,xet.reference_char_2
141180 ,xet.reference_char_3
141181 ,xet.reference_char_4
141182 ,xet.reference_date_1
141183 ,xet.reference_date_2
141184 ,xet.reference_date_3
141185 ,xet.reference_date_4
141186 ,xet.event_created_by
141187 ,xet.budgetary_control_flag
141188 , l2.LINE_NUMBER
141189 , l2.CODE_COMBINATION_ID source_4
141190 , l2.DISTRIBUTION_IDENTIFIER source_11
141191 , l2.CURRENCY_CODE source_15
141192 , l2.ENTERED_AMOUNT source_18
141193 , l2.CURRENCY_CONVERSION_DATE source_19
141194 , l2.CURRENCY_CONVERSION_RATE source_20
141195 , l2.CURRENCY_CONVERSION_TYPE source_21
141196 , l2.ACCOUNTED_AMOUNT source_22
141197 , l2.ACCOUNTING_LINE_TYPE_CODE source_24
141198 FROM xla_events_gt xet
141199 , CST_XLA_INV_LINES_V l2
141200 WHERE xet.event_id between x_first_event_id and x_last_event_id
141201 and xet.event_date between p_pad_start_date and p_pad_end_date
141202 and xet.event_class_code = C_EVENT_CLASS_CODE
141203 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
141204 ;
141205
141206 --
141207 BEGIN
141208 IF g_log_enabled THEN
141209 l_log_module := C_DEFAULT_MODULE||'.EventClass_252';
141210 END IF;
141211 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
141212 trace
141213 (p_msg => 'BEGIN of EventClass_252'
141214 ,p_level => C_LEVEL_PROCEDURE
141215 ,p_module => l_log_module);
141216 END IF;
141217
141218 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
141219 trace
141220 (p_msg => 'p_application_id = '||p_application_id||
141221 ' - p_base_ledger_id = '||p_base_ledger_id||
141222 ' - p_target_ledger_id = '||p_target_ledger_id||
141223 ' - p_language = '||p_language||
141224 ' - p_currency_code = '||p_currency_code||
141225 ' - p_sla_ledger_id = '||p_sla_ledger_id
141226 ,p_level => C_LEVEL_STATEMENT
141227 ,p_module => l_log_module);
141228 END IF;
141229 --
141230 -- initialze arrays
141231 --
141232 g_array_event.DELETE;
141233 l_rec_array_event := l_null_rec_array_event;
141234 --
141235 --------------------------------------
141236 -- 4262811 Initialze MPA Line Number
141237 --------------------------------------
141238 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
141239
141240 --
141241
141242 --
141243 OPEN header_cur;
141244 --
141245 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
141246 trace
141247 (p_msg => 'SQL - FETCH header_cur'
141248 ,p_level => C_LEVEL_STATEMENT
141249 ,p_module => l_log_module);
141250 END IF;
141251 --
141252 LOOP
141253 FETCH header_cur BULK COLLECT INTO
141254 l_array_entity_id
141255 , l_array_legal_entity_id
141256 , l_array_entity_code
141257 , l_array_transaction_num
141258 , l_array_event_id
141259 , l_array_class_code
141260 , l_array_event_type
141261 , l_array_event_number
141262 , l_array_event_date
141263 , l_array_transaction_date
141264 , l_array_reference_num_1
141265 , l_array_reference_num_2
141266 , l_array_reference_num_3
141267 , l_array_reference_num_4
141268 , l_array_reference_char_1
141269 , l_array_reference_char_2
141270 , l_array_reference_char_3
141271 , l_array_reference_char_4
141272 , l_array_reference_date_1
141273 , l_array_reference_date_2
141274 , l_array_reference_date_3
141275 , l_array_reference_date_4
141276 , l_array_event_created_by
141277 , l_array_budgetary_control_flag
141278 , l_array_source_12
141279 , l_array_source_12_meaning
141280 , l_array_source_38
141281 , l_array_source_38_meaning
141282 LIMIT l_rows;
141283 --
141284 IF (C_LEVEL_EVENT >= g_log_level) THEN
141285 trace
141286 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
141287 ,p_level => C_LEVEL_EVENT
141288 ,p_module => l_log_module);
141289 END IF;
141290 --
141291 EXIT WHEN l_array_entity_id.COUNT = 0;
141292
141293 -- initialize arrays
141294 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
141295 XLA_AE_LINES_PKG.g_rec_lines := NULL;
141296
141297 --
141298 -- Bug 4458708
141299 --
141300 XLA_AE_LINES_PKG.g_LineNumber := 0;
141301
141302
141303 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
141304 g_last_hdr_idx := l_array_event_id.LAST;
141305 --
141306 -- loop for the headers. Each iteration is for each header extract row
141307 -- fetched in header cursor
141308 --
141309 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
141310
141311 --
141312 -- set event info as cache for other routines to refer event attributes
141313 --
141314 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
141315 (p_application_id => p_application_id
141316 ,p_primary_ledger_id => p_primary_ledger_id
141317 ,p_base_ledger_id => p_base_ledger_id
141318 ,p_target_ledger_id => p_target_ledger_id
141319 ,p_entity_id => l_array_entity_id(hdr_idx)
141320 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
141321 ,p_entity_code => l_array_entity_code(hdr_idx)
141322 ,p_transaction_num => l_array_transaction_num(hdr_idx)
141323 ,p_event_id => l_array_event_id(hdr_idx)
141324 ,p_event_class_code => l_array_class_code(hdr_idx)
141325 ,p_event_type_code => l_array_event_type(hdr_idx)
141326 ,p_event_number => l_array_event_number(hdr_idx)
141327 ,p_event_date => l_array_event_date(hdr_idx)
141328 ,p_transaction_date => l_array_transaction_date(hdr_idx)
141329 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
141330 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
141331 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
141332 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
141333 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
141334 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
141335 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
141336 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
141337 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
141338 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
141339 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
141340 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
141341 ,p_event_created_by => l_array_event_created_by(hdr_idx)
141342 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
141343
141344 --
141345 -- set the status of entry to C_VALID (0)
141346 --
141347 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
141348
141349 --
141350 -- initialize a row for ae header
141351 --
141352 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
141353
141354 l_event_id := l_array_event_id(hdr_idx);
141355
141356 --
141357 -- storing the hdr_idx for event. May be used by line cursor.
141358 --
141359 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
141360
141361 --
141362 -- store sources from header extract. This can be improved to
141363 -- store only those sources from header extract that may be used in lines
141364 --
141365
141366 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
141367 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
141368 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
141369 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
141370
141371 --
141372 -- initilaize the status of ae headers for diffrent balance types
141373 -- the status is initialised to C_NOT_CREATED (2)
141374 --
141375 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
141376 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
141377 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
141378
141379 --
141380 -- call api to validate and store accounting attributes for header
141381 --
141382
141383 ------------------------------------------------------------
141384 -- Accrual Reversal : to get date for Standard Source (NONE)
141385 ------------------------------------------------------------
141386 l_acc_rev_gl_date_source := NULL;
141387
141388 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
141389 l_rec_acct_attrs.array_date_value(1) :=
141390 xla_ae_sources_pkg.GetSystemSourceDate(
141391 p_source_code => 'XLA_REFERENCE_DATE_1'
141392 , p_source_type_code => 'Y'
141393 , p_source_application_id => 602
141394 );
141395 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_TRANSFER_FLAG';
141396 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
141397
141398
141399 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
141400
141401 XLA_AE_HEADER_PKG.SetJeCategoryName;
141402
141403 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
141404 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
141405 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
141406 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
141407 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
141408
141409
141410 -- No header level analytical criteria
141411
141412 --
141413 --accounting attribute enhancement, bug 3612931
141414 --
141415 l_trx_reversal_source := SUBSTR(NULL, 1,30);
141416
141417 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
141418 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
141419
141420 xla_accounting_err_pkg.build_message
141421 (p_appli_s_name => 'XLA'
141422 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
141423 ,p_token_1 => 'ACCT_ATTR_NAME'
141424 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
141425 ,p_token_2 => 'PRODUCT_NAME'
141426 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
141427 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
141428 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
141429 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
141430
141431 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
141432 --
141433 -- following sets the accounting attributes needed to reverse
141434 -- accounting for a distributeion
141435 --
141436 xla_ae_lines_pkg.SetTrxReversalAttrs
141437 (p_event_id => l_event_id
141438 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
141439 ,p_trx_reversal_source => l_trx_reversal_source);
141440
141441 END IF;
141442
141443
141444 ----------------------------------------------------------------
141445 -- 4262811 - update the header statuses to invalid in need be
141446 ----------------------------------------------------------------
141447 --
141448 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
141449
141450
141451 -----------------------------------------------
141452 -- No accrual reversal for the event class/type
141453 -----------------------------------------------
141454 ----------------------------------------------------------------
141455
141456 --
141457 -- this ends the header loop iteration for one bulk fetch
141458 --
141459 END LOOP;
141460
141461 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
141462 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
141463
141464 --
141465 -- insert dummy rows into lines gt table that were created due to
141466 -- transaction reversals
141467 --
141468 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
141469 l_result := XLA_AE_LINES_PKG.InsertLines;
141470 END IF;
141471
141472 --
141473 -- reset the temp_line_num for each set of events fetched from header
141474 -- cursor rather than doing it for each new event in line cursor
141475 -- Bug 3939231
141476 --
141477 xla_ae_lines_pkg.g_temp_line_num := 0;
141478
141479
141480
141481 --
141482 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
141483 --
141484 --
141485 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
141486
141487 trace
141488 (p_msg => 'SQL - FETCH line_cur'
141489 ,p_level => C_LEVEL_STATEMENT
141490 ,p_module => l_log_module);
141491
141492 END IF;
141493 --
141494 --
141495 LOOP
141496 --
141497 FETCH line_cur BULK COLLECT INTO
141498 l_array_entity_id
141499 , l_array_legal_entity_id
141500 , l_array_entity_code
141501 , l_array_transaction_num
141502 , l_array_event_id
141503 , l_array_class_code
141504 , l_array_event_type
141505 , l_array_event_number
141506 , l_array_event_date
141507 , l_array_transaction_date
141508 , l_array_reference_num_1
141509 , l_array_reference_num_2
141510 , l_array_reference_num_3
141511 , l_array_reference_num_4
141512 , l_array_reference_char_1
141513 , l_array_reference_char_2
141514 , l_array_reference_char_3
141515 , l_array_reference_char_4
141516 , l_array_reference_date_1
141517 , l_array_reference_date_2
141518 , l_array_reference_date_3
141519 , l_array_reference_date_4
141520 , l_array_event_created_by
141521 , l_array_budgetary_control_flag
141522 , l_array_extract_line_num
141523 , l_array_source_4
141524 , l_array_source_11
141525 , l_array_source_15
141526 , l_array_source_18
141527 , l_array_source_19
141528 , l_array_source_20
141529 , l_array_source_21
141530 , l_array_source_22
141531 , l_array_source_24
141532 LIMIT l_rows;
141533
141534 --
141535 IF (C_LEVEL_EVENT >= g_log_level) THEN
141536 trace
141537 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
141538 ,p_level => C_LEVEL_EVENT
141539 ,p_module => l_log_module);
141540 END IF;
141541 --
141542 EXIT WHEN l_array_entity_id.count = 0;
141543
141544 XLA_AE_LINES_PKG.g_rec_lines := null;
141545
141546 --
141547 -- Bug 4458708
141548 --
141549 XLA_AE_LINES_PKG.g_LineNumber := 0;
141550 --
141551 --
141552
141553 FOR Idx IN 1..l_array_event_id.count LOOP
141554 --
141555 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
141556 --
141557 l_event_id := l_array_event_id(idx); -- 5648433
141558
141559 --
141560 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
141561 --
141562
141563 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
141564 (g_array_event(l_event_id).array_value_num('header_index'))
141565 ,'N'
141566 ) <> 'Y'
141567 THEN
141568 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
141569 trace
141570 (p_msg => 'Trancaction revesal option is not Y '
141571 ,p_level => C_LEVEL_STATEMENT
141572 ,p_module => l_log_module);
141573 END IF;
141574
141575 --
141576 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
141577 --
141578 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
141579 --
141580 -- set event info as cache for other routines to refer event attributes
141581 --
141582
141583 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
141584 l_previous_event_id := l_event_id;
141585
141586 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
141587 (p_application_id => p_application_id
141588 ,p_primary_ledger_id => p_primary_ledger_id
141589 ,p_base_ledger_id => p_base_ledger_id
141590 ,p_target_ledger_id => p_target_ledger_id
141591 ,p_entity_id => l_array_entity_id(Idx)
141592 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
141593 ,p_entity_code => l_array_entity_code(Idx)
141594 ,p_transaction_num => l_array_transaction_num(Idx)
141595 ,p_event_id => l_array_event_id(Idx)
141596 ,p_event_class_code => l_array_class_code(Idx)
141597 ,p_event_type_code => l_array_event_type(Idx)
141598 ,p_event_number => l_array_event_number(Idx)
141599 ,p_event_date => l_array_event_date(Idx)
141600 ,p_transaction_date => l_array_transaction_date(Idx)
141601 ,p_reference_num_1 => l_array_reference_num_1(Idx)
141602 ,p_reference_num_2 => l_array_reference_num_2(Idx)
141603 ,p_reference_num_3 => l_array_reference_num_3(Idx)
141604 ,p_reference_num_4 => l_array_reference_num_4(Idx)
141605 ,p_reference_char_1 => l_array_reference_char_1(Idx)
141606 ,p_reference_char_2 => l_array_reference_char_2(Idx)
141607 ,p_reference_char_3 => l_array_reference_char_3(Idx)
141608 ,p_reference_char_4 => l_array_reference_char_4(Idx)
141609 ,p_reference_date_1 => l_array_reference_date_1(Idx)
141610 ,p_reference_date_2 => l_array_reference_date_2(Idx)
141611 ,p_reference_date_3 => l_array_reference_date_3(Idx)
141612 ,p_reference_date_4 => l_array_reference_date_4(Idx)
141613 ,p_event_created_by => l_array_event_created_by(Idx)
141614 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
141615 --
141616 END IF;
141617
141618
141619
141620 --
141621 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
141622
141623 l_acct_reversal_source := SUBSTR(NULL, 1,30);
141624
141625 IF l_continue_with_lines THEN
141626 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
141627 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
141628
141629 xla_accounting_err_pkg.build_message
141630 (p_appli_s_name => 'XLA'
141631 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
141632 ,p_token_1 => 'LINE_NUMBER'
141633 ,p_value_1 => l_array_extract_line_num(Idx)
141634 ,p_token_2 => 'PRODUCT_NAME'
141635 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
141636 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
141637 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
141638 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
141639
141640 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
141641 --
141642 -- following sets the accounting attributes needed to reverse
141643 -- accounting for a distributeion
141644 --
141645
141646 --
141647 -- 5217187
141648 --
141649 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
141650 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
141651 g_array_event(l_event_id).array_value_num('header_index'));
141652 --
141653 --
141654
141655 -- No reversal code generated
141656
141657 xla_ae_lines_pkg.SetAcctReversalAttrs
141658 (p_event_id => l_event_id
141659 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
141660 ,p_calculate_acctd_flag => l_calculate_acctd_flag
141661 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
141662 END IF;
141663
141664 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
141665 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
141666
141667 --
141668 AcctLineType_6 (
141669 p_application_id => p_application_id
141670 ,p_event_id => l_event_id
141671 ,p_calculate_acctd_flag => l_calculate_acctd_flag
141672 ,p_calculate_g_l_flag => l_calculate_g_l_flag
141673 ,p_actual_flag => l_actual_flag
141674 ,p_balance_type_code => l_balance_type_code
141675 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
141676
141677 , p_source_4 => l_array_source_4(Idx)
141678 , p_source_11 => l_array_source_11(Idx)
141679 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
141680 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
141681 , p_source_15 => l_array_source_15(Idx)
141682 , p_source_18 => l_array_source_18(Idx)
141683 , p_source_19 => l_array_source_19(Idx)
141684 , p_source_20 => l_array_source_20(Idx)
141685 , p_source_21 => l_array_source_21(Idx)
141686 , p_source_22 => l_array_source_22(Idx)
141687 , p_source_24 => l_array_source_24(Idx)
141688 );
141689 If(l_balance_type_code = 'A') THEN
141690 l_actual_gain_loss_ref := l_gain_or_loss_ref;
141691 END IF;
141692
141693 --
141694
141695
141696 --
141697 AcctLineType_42 (
141698 p_application_id => p_application_id
141699 ,p_event_id => l_event_id
141700 ,p_calculate_acctd_flag => l_calculate_acctd_flag
141701 ,p_calculate_g_l_flag => l_calculate_g_l_flag
141702 ,p_actual_flag => l_actual_flag
141703 ,p_balance_type_code => l_balance_type_code
141704 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
141705
141706 , p_source_4 => l_array_source_4(Idx)
141707 , p_source_11 => l_array_source_11(Idx)
141708 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
141709 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
141710 , p_source_15 => l_array_source_15(Idx)
141711 , p_source_18 => l_array_source_18(Idx)
141712 , p_source_19 => l_array_source_19(Idx)
141713 , p_source_20 => l_array_source_20(Idx)
141714 , p_source_21 => l_array_source_21(Idx)
141715 , p_source_22 => l_array_source_22(Idx)
141716 , p_source_24 => l_array_source_24(Idx)
141717 );
141718 If(l_balance_type_code = 'A') THEN
141719 l_actual_gain_loss_ref := l_gain_or_loss_ref;
141720 END IF;
141721
141722 --
141723
141724
141725 --
141726 AcctLineType_129 (
141727 p_application_id => p_application_id
141728 ,p_event_id => l_event_id
141729 ,p_calculate_acctd_flag => l_calculate_acctd_flag
141730 ,p_calculate_g_l_flag => l_calculate_g_l_flag
141731 ,p_actual_flag => l_actual_flag
141732 ,p_balance_type_code => l_balance_type_code
141733 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
141734
141735 , p_source_4 => l_array_source_4(Idx)
141736 , p_source_11 => l_array_source_11(Idx)
141737 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
141738 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
141739 , p_source_15 => l_array_source_15(Idx)
141740 , p_source_18 => l_array_source_18(Idx)
141741 , p_source_19 => l_array_source_19(Idx)
141742 , p_source_20 => l_array_source_20(Idx)
141743 , p_source_21 => l_array_source_21(Idx)
141744 , p_source_22 => l_array_source_22(Idx)
141745 , p_source_24 => l_array_source_24(Idx)
141746 );
141747 If(l_balance_type_code = 'A') THEN
141748 l_actual_gain_loss_ref := l_gain_or_loss_ref;
141749 END IF;
141750
141751 --
141752
141753
141754 --
141755 AcctLineType_158 (
141756 p_application_id => p_application_id
141757 ,p_event_id => l_event_id
141758 ,p_calculate_acctd_flag => l_calculate_acctd_flag
141759 ,p_calculate_g_l_flag => l_calculate_g_l_flag
141760 ,p_actual_flag => l_actual_flag
141761 ,p_balance_type_code => l_balance_type_code
141762 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
141763
141764 , p_source_4 => l_array_source_4(Idx)
141765 , p_source_11 => l_array_source_11(Idx)
141766 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
141767 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
141768 , p_source_15 => l_array_source_15(Idx)
141769 , p_source_18 => l_array_source_18(Idx)
141770 , p_source_19 => l_array_source_19(Idx)
141771 , p_source_20 => l_array_source_20(Idx)
141772 , p_source_21 => l_array_source_21(Idx)
141773 , p_source_22 => l_array_source_22(Idx)
141774 , p_source_24 => l_array_source_24(Idx)
141775 );
141776 If(l_balance_type_code = 'A') THEN
141777 l_actual_gain_loss_ref := l_gain_or_loss_ref;
141778 END IF;
141779
141780 --
141781
141782
141783 --
141784 AcctLineType_211 (
141785 p_application_id => p_application_id
141786 ,p_event_id => l_event_id
141787 ,p_calculate_acctd_flag => l_calculate_acctd_flag
141788 ,p_calculate_g_l_flag => l_calculate_g_l_flag
141789 ,p_actual_flag => l_actual_flag
141790 ,p_balance_type_code => l_balance_type_code
141791 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
141792
141793 , p_source_4 => l_array_source_4(Idx)
141794 , p_source_11 => l_array_source_11(Idx)
141795 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
141796 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
141797 , p_source_15 => l_array_source_15(Idx)
141798 , p_source_18 => l_array_source_18(Idx)
141799 , p_source_19 => l_array_source_19(Idx)
141800 , p_source_20 => l_array_source_20(Idx)
141801 , p_source_21 => l_array_source_21(Idx)
141802 , p_source_22 => l_array_source_22(Idx)
141803 , p_source_24 => l_array_source_24(Idx)
141804 );
141805 If(l_balance_type_code = 'A') THEN
141806 l_actual_gain_loss_ref := l_gain_or_loss_ref;
141807 END IF;
141808
141809 --
141810
141811 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
141812 -- or secondary ledger that has different currency with primary
141813 -- or alc that is calculated by sla
141814 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
141815 (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'))
141816
141817 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
141818 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
141819 AND (l_actual_flag = 'A')) THEN
141820 XLA_AE_LINES_PKG.CreateGainOrLossLines(
141821 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
141822 ,p_application_id => p_application_id
141823 ,p_amb_context_code => 'DEFAULT'
141824 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
141825 ,p_event_class_code => C_EVENT_CLASS_CODE
141826 ,p_event_type_code => C_EVENT_TYPE_CODE
141827
141828 ,p_gain_ccid => -1
141829 ,p_loss_ccid => -1
141830
141831 ,p_actual_flag => l_actual_flag
141832 ,p_enc_flag => null
141833 ,p_actual_g_l_ref => l_actual_gain_loss_ref
141834 ,p_enc_g_l_ref => null
141835 );
141836 END IF;
141837 END IF;
141838 END IF;
141839
141840 ELSE
141841 --
141842 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
141843 --
141844 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
141845 trace
141846 (p_msg => 'Trancaction revesal option is Y'
141847 ,p_level => C_LEVEL_STATEMENT
141848 ,p_module => l_log_module);
141849 END IF;
141850 END IF;
141851
141852 END LOOP;
141853 l_result := XLA_AE_LINES_PKG.InsertLines ;
141854 end loop;
141855 close line_cur;
141856
141857
141858 --
141859 -- insert headers into xla_ae_headers_gt table
141860 --
141861 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
141862
141863 -- insert into errors table here.
141864
141865 END LOOP;
141866
141867 --
141868 -- 4865292
141869 --
141870 -- Compare g_hdr_extract_count with event count in
141871 -- CreateHeadersAndLines.
141872 --
141873 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
141874
141875 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
141876 trace (p_msg => '# rows extracted from header extract objects '
141877 || ' (running total): '
141878 || g_hdr_extract_count
141879 ,p_level => C_LEVEL_STATEMENT
141880 ,p_module => l_log_module);
141881 END IF;
141882
141883 CLOSE header_cur;
141884 --
141885
141886 --
141887 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
141888 trace
141889 (p_msg => 'END of EventClass_252'
141890 ,p_level => C_LEVEL_PROCEDURE
141891 ,p_module => l_log_module);
141892 END IF;
141893 --
141894 RETURN l_result;
141895 EXCEPTION
141896 WHEN xla_exceptions_pkg.application_exception THEN
141897
141898 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
141899
141900
141901 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
141902
141903 RAISE;
141904
141905 WHEN NO_DATA_FOUND THEN
141906
141907 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
141908 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
141909
141910 FOR header_record IN header_cur
141911 LOOP
141912 l_array_header_events(header_record.event_id) := header_record.event_id;
141913 END LOOP;
141914
141915 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
141916 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
141917
141918 fnd_file.put_line(fnd_file.LOG, ' ');
141919 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
141920 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
141921 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
141922
141923 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
141924 LOOP
141925 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
141926 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
141927 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
141928 END IF;
141929 END LOOP;
141930
141931 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
141932 fnd_file.put_line(fnd_file.LOG, ' ');
141933
141934
141935 xla_exceptions_pkg.raise_message
141936 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_252');
141937
141938
141939 WHEN OTHERS THEN
141940 xla_exceptions_pkg.raise_message
141941 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_252');
141942 END EventClass_252;
141943 --
141944
141945 ---------------------------------------
141946 --
141947 -- PRIVATE PROCEDURE
141948 -- insert_sources_253
141949 --
141950 ----------------------------------------
141951 --
141952 PROCEDURE insert_sources_253(
141953 p_target_ledger_id IN NUMBER
141954 , p_language IN VARCHAR2
141955 , p_sla_ledger_id IN NUMBER
141956 , p_pad_start_date IN DATE
141957 , p_pad_end_date IN DATE
141958 )
141959 IS
141960
141961 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'DELIVER_EXPENSE_ALL';
141962 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'DELIVER_EXPENSE';
141963 p_apps_owner VARCHAR2(30);
141964 l_log_module VARCHAR2(240);
141965 BEGIN
141966 IF g_log_enabled THEN
141967 l_log_module := C_DEFAULT_MODULE||'.insert_sources_253';
141968 END IF;
141969 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
141970
141971 trace
141972 (p_msg => 'BEGIN of insert_sources_253'
141973 ,p_level => C_LEVEL_PROCEDURE
141974 ,p_module => l_log_module);
141975
141976 END IF;
141977
141978 -- select APPS owner
141979 SELECT oracle_username
141980 INTO p_apps_owner
141981 FROM fnd_oracle_userid
141982 WHERE read_only_flag = 'U'
141983 ;
141984
141985 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
141986 trace
141987 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
141988 ' - p_language = '||p_language||
141989 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
141990 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
141991 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
141992 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
141993 ,p_level => C_LEVEL_STATEMENT
141994 ,p_module => l_log_module);
141995 END IF;
141996
141997
141998 --
141999 INSERT INTO xla_diag_sources --hdr2
142000 (
142001 event_id
142002 , ledger_id
142003 , sla_ledger_id
142004 , description_language
142005 , object_name
142006 , object_type_code
142007 , line_number
142008 , source_application_id
142009 , source_type_code
142010 , source_code
142011 , source_value
142012 , source_meaning
142013 , created_by
142014 , creation_date
142015 , last_update_date
142016 , last_updated_by
142017 , last_update_login
142018 , program_update_date
142019 , program_application_id
142020 , program_id
142021 , request_id
142022 )
142023 SELECT
142024 event_id
142025 , p_target_ledger_id
142026 , p_sla_ledger_id
142027 , p_language
142028 , object_name
142029 , object_type_code
142030 , line_number
142031 , source_application_id
142032 , source_type_code
142033 , source_code
142034 , SUBSTR(source_value ,1,1996)
142035 , SUBSTR(source_meaning ,1,200)
142036 , xla_environment_pkg.g_Usr_Id
142037 , TRUNC(SYSDATE)
142038 , TRUNC(SYSDATE)
142039 , xla_environment_pkg.g_Usr_Id
142040 , xla_environment_pkg.g_Login_Id
142041 , TRUNC(SYSDATE)
142042 , xla_environment_pkg.g_Prog_Appl_Id
142043 , xla_environment_pkg.g_Prog_Id
142044 , xla_environment_pkg.g_Req_Id
142045 FROM (
142046 SELECT xet.event_id event_id
142047 , 0 line_number
142048 , CASE r
142049 WHEN 1 THEN 'CST_XLA_RCV_REF_V'
142050 WHEN 2 THEN 'CST_XLA_RCV_REF_V'
142051 WHEN 3 THEN 'CST_XLA_RCV_REF_V'
142052 WHEN 4 THEN 'CST_XLA_RCV_REF_V'
142053 WHEN 5 THEN 'CST_XLA_RCV_REF_V'
142054 WHEN 6 THEN 'CST_XLA_RCV_HEADERS_V'
142055 WHEN 7 THEN 'PO_DISTS_REF_V'
142056 WHEN 8 THEN 'CST_XLA_RCV_REF_V'
142057 WHEN 9 THEN 'CST_XLA_RCV_HEADERS_V'
142058 WHEN 10 THEN 'CST_XLA_RCV_REF_V'
142059 WHEN 11 THEN 'CST_XLA_RCV_HEADERS_V'
142060 WHEN 12 THEN 'CST_XLA_RCV_HEADERS_V'
142061 WHEN 13 THEN 'CST_XLA_RCV_HEADERS_V'
142062 WHEN 14 THEN 'PO_HEADERS_REF_V'
142063 WHEN 15 THEN 'PSA_CST_XLA_UPG_V'
142064 WHEN 16 THEN 'CST_XLA_RCV_HEADERS_V'
142065
142066 ELSE null
142067 END object_name
142068 , CASE r
142069 WHEN 1 THEN 'HEADER'
142070 WHEN 2 THEN 'HEADER'
142071 WHEN 3 THEN 'HEADER'
142072 WHEN 4 THEN 'HEADER'
142073 WHEN 5 THEN 'HEADER'
142074 WHEN 6 THEN 'HEADER'
142075 WHEN 7 THEN 'HEADER'
142076 WHEN 8 THEN 'HEADER'
142077 WHEN 9 THEN 'HEADER'
142078 WHEN 10 THEN 'HEADER'
142079 WHEN 11 THEN 'HEADER'
142080 WHEN 12 THEN 'HEADER'
142081 WHEN 13 THEN 'HEADER'
142082 WHEN 14 THEN 'HEADER'
142083 WHEN 15 THEN 'HEADER'
142084 WHEN 16 THEN 'HEADER'
142085
142086 ELSE null
142087 END object_type_code
142088 , CASE r
142089 WHEN 1 THEN '707'
142090 WHEN 2 THEN '707'
142091 WHEN 3 THEN '707'
142092 WHEN 4 THEN '707'
142093 WHEN 5 THEN '707'
142094 WHEN 6 THEN '707'
142095 WHEN 7 THEN '201'
142096 WHEN 8 THEN '707'
142097 WHEN 9 THEN '707'
142098 WHEN 10 THEN '707'
142099 WHEN 11 THEN '707'
142100 WHEN 12 THEN '707'
142101 WHEN 13 THEN '707'
142102 WHEN 14 THEN '201'
142103 WHEN 15 THEN '707'
142104 WHEN 16 THEN '707'
142105
142106 ELSE null
142107 END source_application_id
142108 , 'S' source_type_code
142109 , CASE r
142110 WHEN 1 THEN 'APPLIED_TO_APPL_ID'
142111 WHEN 2 THEN 'APPLIED_TO_DIST_LINK_TYPE'
142112 WHEN 3 THEN 'APPLIED_TO_ENTITY_CODE'
142113 WHEN 4 THEN 'PO_DISTRIBUTION_ID'
142114 WHEN 5 THEN 'APPLIED_TO_PO_DOC_ID'
142115 WHEN 6 THEN 'DISTRIBUTION_TYPE'
142116 WHEN 7 THEN 'PO_BUDGET_ACCOUNT'
142117 WHEN 8 THEN 'ENCUM_REVERSAL_AMOUNT_ENTERED'
142118 WHEN 9 THEN 'CURRENCY_CODE'
142119 WHEN 10 THEN 'ENCUMBRANCE_REVERSAL_AMOUNT'
142120 WHEN 11 THEN 'CURRENCY_CONVERSION_DATE'
142121 WHEN 12 THEN 'CURRENCY_CONVERSION_RATE'
142122 WHEN 13 THEN 'CURRENCY_CONVERSION_TYPE'
142123 WHEN 14 THEN 'PURCH_ENCUMBRANCE_TYPE_ID'
142124 WHEN 15 THEN 'CST_ENCUM_UPG_OPTION'
142125 WHEN 16 THEN 'TRANSFER_TO_GL_INDICATOR'
142126
142127 ELSE null
142128 END source_code
142129 , CASE r
142130 WHEN 1 THEN TO_CHAR(h3.APPLIED_TO_APPL_ID)
142131 WHEN 2 THEN TO_CHAR(h3.APPLIED_TO_DIST_LINK_TYPE)
142132 WHEN 3 THEN TO_CHAR(h3.APPLIED_TO_ENTITY_CODE)
142133 WHEN 4 THEN TO_CHAR(h3.PO_DISTRIBUTION_ID)
142134 WHEN 5 THEN TO_CHAR(h3.APPLIED_TO_PO_DOC_ID)
142135 WHEN 6 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
142136 WHEN 7 THEN TO_CHAR(h4.PO_BUDGET_ACCOUNT)
142137 WHEN 8 THEN TO_CHAR(h3.ENCUM_REVERSAL_AMOUNT_ENTERED)
142138 WHEN 9 THEN TO_CHAR(h1.CURRENCY_CODE)
142139 WHEN 10 THEN TO_CHAR(h3.ENCUMBRANCE_REVERSAL_AMOUNT)
142140 WHEN 11 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
142141 WHEN 12 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
142142 WHEN 13 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
142143 WHEN 14 THEN TO_CHAR(h5.PURCH_ENCUMBRANCE_TYPE_ID)
142144 WHEN 15 THEN TO_CHAR(h6.CST_ENCUM_UPG_OPTION)
142145 WHEN 16 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
142146
142147 ELSE null
142148 END source_value
142149 , CASE r
142150 WHEN 6 THEN fvl12.meaning
142151 WHEN 16 THEN fvl38.meaning
142152
142153 ELSE null
142154 END source_meaning
142155 FROM xla_events_gt xet
142156 , CST_XLA_RCV_HEADERS_V h1
142157 , CST_XLA_RCV_REF_V h3
142158 , PO_DISTS_REF_V h4
142159 , PO_HEADERS_REF_V h5
142160 , PSA_CST_XLA_UPG_V h6
142161 , fnd_lookup_values fvl12
142162 , fnd_lookup_values fvl38
142163 ,(select rownum r from all_objects where rownum <= 16 and owner = p_apps_owner)
142164 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
142165 AND xet.event_class_code = C_EVENT_CLASS_CODE
142166 AND h1.event_id = xet.event_id
142167 AND h3.ref_rcv_accounting_event_id = h1.rcv_accounting_event_id AND h3.po_header_id = h4.po_header_id (+) and h3.po_distribution_id = h4.po_distribution_id (+) AND h3.po_header_id = h5.po_header_id (+) AND h3.rcv_transaction_id = h6.transaction_id (+) AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
142168 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
142169 AND fvl12.view_application_id(+) = 700
142170 AND fvl12.language(+) = USERENV('LANG')
142171 AND fvl38.lookup_type(+) = 'YES_NO'
142172 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
142173 AND fvl38.view_application_id(+) = 0
142174 AND fvl38.language(+) = USERENV('LANG')
142175
142176 )
142177 ;
142178 --
142179 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
142180
142181 trace
142182 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
142183 ,p_level => C_LEVEL_STATEMENT
142184 ,p_module => l_log_module);
142185
142186 END IF;
142187 --
142188
142189
142190
142191 --
142192 INSERT INTO xla_diag_sources --line2
142193 (
142194 event_id
142195 , ledger_id
142196 , sla_ledger_id
142197 , description_language
142198 , object_name
142199 , object_type_code
142200 , line_number
142201 , source_application_id
142202 , source_type_code
142203 , source_code
142204 , source_value
142205 , source_meaning
142206 , created_by
142207 , creation_date
142208 , last_update_date
142209 , last_updated_by
142210 , last_update_login
142211 , program_update_date
142212 , program_application_id
142213 , program_id
142214 , request_id
142215 )
142216 SELECT event_id
142217 , p_target_ledger_id
142218 , p_sla_ledger_id
142219 , p_language
142220 , object_name
142221 , object_type_code
142222 , line_number
142223 , source_application_id
142224 , source_type_code
142225 , source_code
142226 , SUBSTR(source_value,1,1996)
142227 , SUBSTR(source_meaning ,1,200)
142228 , xla_environment_pkg.g_Usr_Id
142229 , TRUNC(SYSDATE)
142230 , TRUNC(SYSDATE)
142231 , xla_environment_pkg.g_Usr_Id
142232 , xla_environment_pkg.g_Login_Id
142233 , TRUNC(SYSDATE)
142234 , xla_environment_pkg.g_Prog_Appl_Id
142235 , xla_environment_pkg.g_Prog_Id
142236 , xla_environment_pkg.g_Req_Id
142237 FROM (
142238 SELECT xet.event_id event_id
142239 , l2.line_number line_number
142240 , CASE r
142241 WHEN 1 THEN 'CST_XLA_RCV_LINES_V'
142242 WHEN 2 THEN 'CST_XLA_RCV_LINES_V'
142243 WHEN 3 THEN 'CST_XLA_RCV_LINES_V'
142244 WHEN 4 THEN 'CST_XLA_RCV_LINES_V'
142245 WHEN 5 THEN 'CST_XLA_RCV_LINES_V'
142246
142247 ELSE null
142248 END object_name
142249 , CASE r
142250 WHEN 1 THEN 'LINE'
142251 WHEN 2 THEN 'LINE'
142252 WHEN 3 THEN 'LINE'
142253 WHEN 4 THEN 'LINE'
142254 WHEN 5 THEN 'LINE'
142255
142256 ELSE null
142257 END object_type_code
142258 , CASE r
142259 WHEN 1 THEN '707'
142260 WHEN 2 THEN '707'
142261 WHEN 3 THEN '707'
142262 WHEN 4 THEN '707'
142263 WHEN 5 THEN '707'
142264
142265 ELSE null
142266 END source_application_id
142267 , 'S' source_type_code
142268 , CASE r
142269 WHEN 1 THEN 'CODE_COMBINATION_ID'
142270 WHEN 2 THEN 'RCV_ACCOUNTING_LINE_TYPE'
142271 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER'
142272 WHEN 4 THEN 'ENTERED_AMOUNT'
142273 WHEN 5 THEN 'ACCOUNTED_AMOUNT'
142274
142275 ELSE null
142276 END source_code
142277 , CASE r
142278 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
142279 WHEN 2 THEN TO_CHAR(l2.RCV_ACCOUNTING_LINE_TYPE)
142280 WHEN 3 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
142281 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
142282 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
142283
142284 ELSE null
142285 END source_value
142286 , null source_meaning
142287 FROM xla_events_gt xet
142288 , CST_XLA_RCV_LINES_V l2
142289 , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
142290 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
142291 AND xet.event_class_code = C_EVENT_CLASS_CODE
142292 AND l2.event_id = xet.event_id
142293
142294 )
142295 ;
142296 --
142297 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
142298
142299 trace
142300 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
142301 ,p_level => C_LEVEL_STATEMENT
142302 ,p_module => l_log_module);
142303
142304 END IF;
142305
142306
142307 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
142308 trace
142309 (p_msg => 'END of insert_sources_253'
142310 ,p_level => C_LEVEL_PROCEDURE
142311 ,p_module => l_log_module);
142312 END IF;
142313 EXCEPTION
142314 WHEN xla_exceptions_pkg.application_exception THEN
142315 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
142316 trace
142317 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
142318 ,p_level => C_LEVEL_EXCEPTION
142319 ,p_module => l_log_module);
142320 END IF;
142321 RAISE;
142322 WHEN OTHERS THEN
142323 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
142324 trace
142325 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
142326 ,p_level => C_LEVEL_EXCEPTION
142327 ,p_module => l_log_module);
142328 END IF;
142329 xla_exceptions_pkg.raise_message
142330 (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_253');
142331 END insert_sources_253;
142332 --
142333
142334 ---------------------------------------
142335 --
142336 -- PRIVATE FUNCTION
142337 -- EventClass_253
142338 --
142339 ----------------------------------------
142340 --
142341 FUNCTION EventClass_253
142342 (p_application_id IN NUMBER
142343 ,p_base_ledger_id IN NUMBER
142344 ,p_target_ledger_id IN NUMBER
142345 ,p_language IN VARCHAR2
142346 ,p_currency_code IN VARCHAR2
142347 ,p_sla_ledger_id IN NUMBER
142348 ,p_pad_start_date IN DATE
142349 ,p_pad_end_date IN DATE
142350 ,p_primary_ledger_id IN NUMBER)
142351 RETURN BOOLEAN IS
142352 --
142353 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'DELIVER_EXPENSE_ALL';
142354 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'DELIVER_EXPENSE';
142355
142356 l_calculate_acctd_flag VARCHAR2(1) :='N';
142357 l_calculate_g_l_flag VARCHAR2(1) :='N';
142358 --
142359 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
142360 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
142361 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
142362 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
142363 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
142364 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
142365 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
142366 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
142367 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
142368 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
142369 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
142370 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
142371 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
142372 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
142373 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
142374 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
142375 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
142376 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
142377 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
142378 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
142379 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
142380 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
142381 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
142382 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
142383 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
142384 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
142385
142386 l_event_id NUMBER;
142387 l_previous_event_id NUMBER;
142388 l_first_event_id NUMBER;
142389 l_last_event_id NUMBER;
142390
142391 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
142392 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
142393 --
142394 --
142395 l_result BOOLEAN := TRUE;
142396 l_rows NUMBER := 1000;
142397 l_event_type_name VARCHAR2(80) := 'All';
142398 l_event_class_name VARCHAR2(80) := 'Delivery to Expense Destination';
142399 l_description VARCHAR2(4000);
142400 l_transaction_reversal NUMBER;
142401 l_ae_header_id NUMBER;
142402 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
142403 l_log_module VARCHAR2(240);
142404 --
142405 l_acct_reversal_source VARCHAR2(30);
142406 l_trx_reversal_source VARCHAR2(30);
142407
142408 l_continue_with_lines BOOLEAN := TRUE;
142409 --
142410 l_acc_rev_gl_date_source DATE; -- 4262811
142411 --
142412 type t_array_event_id is table of number index by binary_integer;
142413
142414 l_rec_array_event t_rec_array_event;
142415 l_null_rec_array_event t_rec_array_event;
142416 l_array_ae_header_id xla_number_array_type;
142417 l_actual_flag VARCHAR2(1) := NULL;
142418 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
142419 l_balance_type_code VARCHAR2(1) :=NULL;
142420 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
142421
142422 --
142423 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
142424 --
142425
142426 TYPE t_array_source_6 IS TABLE OF CST_XLA_RCV_REF_V.APPLIED_TO_APPL_ID%TYPE INDEX BY BINARY_INTEGER;
142427 TYPE t_array_source_7 IS TABLE OF CST_XLA_RCV_REF_V.APPLIED_TO_DIST_LINK_TYPE%TYPE INDEX BY BINARY_INTEGER;
142428 TYPE t_array_source_8 IS TABLE OF CST_XLA_RCV_REF_V.APPLIED_TO_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
142429 TYPE t_array_source_9 IS TABLE OF CST_XLA_RCV_REF_V.PO_DISTRIBUTION_ID%TYPE INDEX BY BINARY_INTEGER;
142430 TYPE t_array_source_10 IS TABLE OF CST_XLA_RCV_REF_V.APPLIED_TO_PO_DOC_ID%TYPE INDEX BY BINARY_INTEGER;
142431 TYPE t_array_source_12 IS TABLE OF CST_XLA_RCV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
142432 TYPE t_array_source_13 IS TABLE OF PO_DISTS_REF_V.PO_BUDGET_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
142433 TYPE t_array_source_14 IS TABLE OF CST_XLA_RCV_REF_V.ENCUM_REVERSAL_AMOUNT_ENTERED%TYPE INDEX BY BINARY_INTEGER;
142434 TYPE t_array_source_15 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
142435 TYPE t_array_source_16 IS TABLE OF CST_XLA_RCV_REF_V.ENCUMBRANCE_REVERSAL_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
142436 TYPE t_array_source_19 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
142437 TYPE t_array_source_20 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
142438 TYPE t_array_source_21 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
142439 TYPE t_array_source_23 IS TABLE OF PO_HEADERS_REF_V.PURCH_ENCUMBRANCE_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
142440 TYPE t_array_source_27 IS TABLE OF PSA_CST_XLA_UPG_V.CST_ENCUM_UPG_OPTION%TYPE INDEX BY BINARY_INTEGER;
142441 TYPE t_array_source_38 IS TABLE OF CST_XLA_RCV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
142442
142443 TYPE t_array_source_4 IS TABLE OF CST_XLA_RCV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
142444 TYPE t_array_source_5 IS TABLE OF CST_XLA_RCV_LINES_V.RCV_ACCOUNTING_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
142445 TYPE t_array_source_11 IS TABLE OF CST_XLA_RCV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
142446 TYPE t_array_source_18 IS TABLE OF CST_XLA_RCV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
142447 TYPE t_array_source_22 IS TABLE OF CST_XLA_RCV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
142448
142449 l_array_source_6 t_array_source_6;
142450 l_array_source_7 t_array_source_7;
142451 l_array_source_8 t_array_source_8;
142452 l_array_source_9 t_array_source_9;
142453 l_array_source_10 t_array_source_10;
142454 l_array_source_12 t_array_source_12;
142455 l_array_source_12_meaning t_array_lookup_meaning;
142456 l_array_source_13 t_array_source_13;
142457 l_array_source_14 t_array_source_14;
142458 l_array_source_15 t_array_source_15;
142459 l_array_source_16 t_array_source_16;
142460 l_array_source_19 t_array_source_19;
142461 l_array_source_20 t_array_source_20;
142462 l_array_source_21 t_array_source_21;
142463 l_array_source_23 t_array_source_23;
142464 l_array_source_27 t_array_source_27;
142465 l_array_source_38 t_array_source_38;
142466 l_array_source_38_meaning t_array_lookup_meaning;
142467
142468 l_array_source_4 t_array_source_4;
142469 l_array_source_5 t_array_source_5;
142470 l_array_source_11 t_array_source_11;
142471 l_array_source_18 t_array_source_18;
142472 l_array_source_22 t_array_source_22;
142473
142474 --
142475 CURSOR header_cur
142476 IS
142477 SELECT /*+ leading(xet) cardinality(xet,1) */
142478 -- Event Class Code: DELIVER_EXPENSE
142479 xet.entity_id
142480 ,xet.legal_entity_id
142481 ,xet.entity_code
142482 ,xet.transaction_number
142483 ,xet.event_id
142484 ,xet.event_class_code
142485 ,xet.event_type_code
142486 ,xet.event_number
142487 ,xet.event_date
142488 ,xet.transaction_date
142489 ,xet.reference_num_1
142490 ,xet.reference_num_2
142491 ,xet.reference_num_3
142492 ,xet.reference_num_4
142493 ,xet.reference_char_1
142494 ,xet.reference_char_2
142495 ,xet.reference_char_3
142496 ,xet.reference_char_4
142497 ,xet.reference_date_1
142498 ,xet.reference_date_2
142499 ,xet.reference_date_3
142500 ,xet.reference_date_4
142501 ,xet.event_created_by
142502 ,xet.budgetary_control_flag
142503 , h3.APPLIED_TO_APPL_ID source_6
142504 , h3.APPLIED_TO_DIST_LINK_TYPE source_7
142505 , h3.APPLIED_TO_ENTITY_CODE source_8
142506 , h3.PO_DISTRIBUTION_ID source_9
142507 , h3.APPLIED_TO_PO_DOC_ID source_10
142508 , h1.DISTRIBUTION_TYPE source_12
142509 , fvl12.meaning source_12_meaning
142510 , h4.PO_BUDGET_ACCOUNT source_13
142511 , h3.ENCUM_REVERSAL_AMOUNT_ENTERED source_14
142512 , h1.CURRENCY_CODE source_15
142513 , h3.ENCUMBRANCE_REVERSAL_AMOUNT source_16
142514 , h1.CURRENCY_CONVERSION_DATE source_19
142515 , h1.CURRENCY_CONVERSION_RATE source_20
142516 , h1.CURRENCY_CONVERSION_TYPE source_21
142517 , h5.PURCH_ENCUMBRANCE_TYPE_ID source_23
142518 , h6.CST_ENCUM_UPG_OPTION source_27
142519 , h1.TRANSFER_TO_GL_INDICATOR source_38
142520 , fvl38.meaning source_38_meaning
142521 FROM xla_events_gt xet
142522 , CST_XLA_RCV_HEADERS_V h1
142523 , CST_XLA_RCV_REF_V h3
142524 , PO_DISTS_REF_V h4
142525 , PO_HEADERS_REF_V h5
142526 , PSA_CST_XLA_UPG_V h6
142527 , fnd_lookup_values fvl12
142528 , fnd_lookup_values fvl38
142529 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
142530 and xet.event_class_code = C_EVENT_CLASS_CODE
142531 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
142532 AND h3.REF_RCV_ACCOUNTING_EVENT_ID = h1.RCV_ACCOUNTING_EVENT_ID AND h3.po_header_id = h4.po_header_id (+) AND h3.po_distribution_id = h4.po_distribution_id (+) AND h3.po_header_id = h5.po_header_id (+) AND h3.rcv_transaction_id = h6.transaction_id (+) AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
142533 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
142534 AND fvl12.view_application_id(+) = 700
142535 AND fvl12.language(+) = USERENV('LANG')
142536 AND fvl38.lookup_type(+) = 'YES_NO'
142537 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
142538 AND fvl38.view_application_id(+) = 0
142539 AND fvl38.language(+) = USERENV('LANG')
142540
142541 ORDER BY event_id
142542 ;
142543
142544
142545 --
142546 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
142547 IS
142548 SELECT /*+ leading(xet) cardinality(xet,1) */
142549 -- Event Class Code: DELIVER_EXPENSE
142550 xet.entity_id
142551 ,xet.legal_entity_id
142552 ,xet.entity_code
142553 ,xet.transaction_number
142554 ,xet.event_id
142555 ,xet.event_class_code
142556 ,xet.event_type_code
142557 ,xet.event_number
142558 ,xet.event_date
142559 ,xet.transaction_date
142560 ,xet.reference_num_1
142561 ,xet.reference_num_2
142562 ,xet.reference_num_3
142563 ,xet.reference_num_4
142564 ,xet.reference_char_1
142565 ,xet.reference_char_2
142566 ,xet.reference_char_3
142567 ,xet.reference_char_4
142568 ,xet.reference_date_1
142569 ,xet.reference_date_2
142570 ,xet.reference_date_3
142571 ,xet.reference_date_4
142572 ,xet.event_created_by
142573 ,xet.budgetary_control_flag
142574 , l2.LINE_NUMBER
142575 , l2.CODE_COMBINATION_ID source_4
142576 , l2.RCV_ACCOUNTING_LINE_TYPE source_5
142577 , l2.DISTRIBUTION_IDENTIFIER source_11
142578 , l2.ENTERED_AMOUNT source_18
142579 , l2.ACCOUNTED_AMOUNT source_22
142580 FROM xla_events_gt xet
142581 , CST_XLA_RCV_LINES_V l2
142582 WHERE xet.event_id between x_first_event_id and x_last_event_id
142583 and xet.event_date between p_pad_start_date and p_pad_end_date
142584 and xet.event_class_code = C_EVENT_CLASS_CODE
142585 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
142586 ;
142587
142588 --
142589 BEGIN
142590 IF g_log_enabled THEN
142591 l_log_module := C_DEFAULT_MODULE||'.EventClass_253';
142592 END IF;
142593 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
142594 trace
142595 (p_msg => 'BEGIN of EventClass_253'
142596 ,p_level => C_LEVEL_PROCEDURE
142597 ,p_module => l_log_module);
142598 END IF;
142599
142600 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
142601 trace
142602 (p_msg => 'p_application_id = '||p_application_id||
142603 ' - p_base_ledger_id = '||p_base_ledger_id||
142604 ' - p_target_ledger_id = '||p_target_ledger_id||
142605 ' - p_language = '||p_language||
142606 ' - p_currency_code = '||p_currency_code||
142607 ' - p_sla_ledger_id = '||p_sla_ledger_id
142608 ,p_level => C_LEVEL_STATEMENT
142609 ,p_module => l_log_module);
142610 END IF;
142611 --
142612 -- initialze arrays
142613 --
142614 g_array_event.DELETE;
142615 l_rec_array_event := l_null_rec_array_event;
142616 --
142617 --------------------------------------
142618 -- 4262811 Initialze MPA Line Number
142619 --------------------------------------
142620 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
142621
142622 --
142623
142624 --
142625 OPEN header_cur;
142626 --
142627 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
142628 trace
142629 (p_msg => 'SQL - FETCH header_cur'
142630 ,p_level => C_LEVEL_STATEMENT
142631 ,p_module => l_log_module);
142632 END IF;
142633 --
142634 LOOP
142635 FETCH header_cur BULK COLLECT INTO
142636 l_array_entity_id
142637 , l_array_legal_entity_id
142638 , l_array_entity_code
142639 , l_array_transaction_num
142640 , l_array_event_id
142641 , l_array_class_code
142642 , l_array_event_type
142643 , l_array_event_number
142644 , l_array_event_date
142645 , l_array_transaction_date
142646 , l_array_reference_num_1
142647 , l_array_reference_num_2
142648 , l_array_reference_num_3
142649 , l_array_reference_num_4
142650 , l_array_reference_char_1
142651 , l_array_reference_char_2
142652 , l_array_reference_char_3
142653 , l_array_reference_char_4
142654 , l_array_reference_date_1
142655 , l_array_reference_date_2
142656 , l_array_reference_date_3
142657 , l_array_reference_date_4
142658 , l_array_event_created_by
142659 , l_array_budgetary_control_flag
142660 , l_array_source_6
142661 , l_array_source_7
142662 , l_array_source_8
142663 , l_array_source_9
142664 , l_array_source_10
142665 , l_array_source_12
142666 , l_array_source_12_meaning
142667 , l_array_source_13
142668 , l_array_source_14
142669 , l_array_source_15
142670 , l_array_source_16
142671 , l_array_source_19
142672 , l_array_source_20
142673 , l_array_source_21
142674 , l_array_source_23
142675 , l_array_source_27
142676 , l_array_source_38
142677 , l_array_source_38_meaning
142678 LIMIT l_rows;
142679 --
142680 IF (C_LEVEL_EVENT >= g_log_level) THEN
142681 trace
142682 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
142683 ,p_level => C_LEVEL_EVENT
142684 ,p_module => l_log_module);
142685 END IF;
142686 --
142687 EXIT WHEN l_array_entity_id.COUNT = 0;
142688
142689 -- initialize arrays
142690 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
142691 XLA_AE_LINES_PKG.g_rec_lines := NULL;
142692
142693 --
142694 -- Bug 4458708
142695 --
142696 XLA_AE_LINES_PKG.g_LineNumber := 0;
142697
142698
142699 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
142700 g_last_hdr_idx := l_array_event_id.LAST;
142701 --
142702 -- loop for the headers. Each iteration is for each header extract row
142703 -- fetched in header cursor
142704 --
142705 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
142706
142707 --
142708 -- set event info as cache for other routines to refer event attributes
142709 --
142710 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
142711 (p_application_id => p_application_id
142712 ,p_primary_ledger_id => p_primary_ledger_id
142713 ,p_base_ledger_id => p_base_ledger_id
142714 ,p_target_ledger_id => p_target_ledger_id
142715 ,p_entity_id => l_array_entity_id(hdr_idx)
142716 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
142717 ,p_entity_code => l_array_entity_code(hdr_idx)
142718 ,p_transaction_num => l_array_transaction_num(hdr_idx)
142719 ,p_event_id => l_array_event_id(hdr_idx)
142720 ,p_event_class_code => l_array_class_code(hdr_idx)
142721 ,p_event_type_code => l_array_event_type(hdr_idx)
142722 ,p_event_number => l_array_event_number(hdr_idx)
142723 ,p_event_date => l_array_event_date(hdr_idx)
142724 ,p_transaction_date => l_array_transaction_date(hdr_idx)
142725 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
142726 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
142727 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
142728 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
142729 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
142730 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
142731 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
142732 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
142733 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
142734 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
142735 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
142736 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
142737 ,p_event_created_by => l_array_event_created_by(hdr_idx)
142738 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
142739
142740 --
142741 -- set the status of entry to C_VALID (0)
142742 --
142743 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
142744
142745 --
142746 -- initialize a row for ae header
142747 --
142748 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
142749
142750 l_event_id := l_array_event_id(hdr_idx);
142751
142752 --
142753 -- storing the hdr_idx for event. May be used by line cursor.
142754 --
142755 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
142756
142757 --
142758 -- store sources from header extract. This can be improved to
142759 -- store only those sources from header extract that may be used in lines
142760 --
142761
142762 g_array_event(l_event_id).array_value_num('source_6') := l_array_source_6(hdr_idx);
142763 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
142764 g_array_event(l_event_id).array_value_char('source_8') := l_array_source_8(hdr_idx);
142765 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
142766 g_array_event(l_event_id).array_value_num('source_10') := l_array_source_10(hdr_idx);
142767 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
142768 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
142769 g_array_event(l_event_id).array_value_num('source_13') := l_array_source_13(hdr_idx);
142770 g_array_event(l_event_id).array_value_num('source_14') := l_array_source_14(hdr_idx);
142771 g_array_event(l_event_id).array_value_char('source_15') := l_array_source_15(hdr_idx);
142772 g_array_event(l_event_id).array_value_num('source_16') := l_array_source_16(hdr_idx);
142773 g_array_event(l_event_id).array_value_date('source_19') := l_array_source_19(hdr_idx);
142774 g_array_event(l_event_id).array_value_num('source_20') := l_array_source_20(hdr_idx);
142775 g_array_event(l_event_id).array_value_char('source_21') := l_array_source_21(hdr_idx);
142776 g_array_event(l_event_id).array_value_num('source_23') := l_array_source_23(hdr_idx);
142777 g_array_event(l_event_id).array_value_char('source_27') := l_array_source_27(hdr_idx);
142778 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
142779 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
142780
142781 --
142782 -- initilaize the status of ae headers for diffrent balance types
142783 -- the status is initialised to C_NOT_CREATED (2)
142784 --
142785 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
142786 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
142787 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
142788
142789 --
142790 -- call api to validate and store accounting attributes for header
142791 --
142792
142793 ------------------------------------------------------------
142794 -- Accrual Reversal : to get date for Standard Source (NONE)
142795 ------------------------------------------------------------
142796 l_acc_rev_gl_date_source := NULL;
142797
142798 l_rec_acct_attrs.array_acct_attr_code(1) := 'ENCUMBRANCE_TYPE_ID';
142799 l_rec_acct_attrs.array_num_value(1) := g_array_event(l_event_id).array_value_num('source_23');
142800 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_DATE';
142801 l_rec_acct_attrs.array_date_value(2) :=
142802 xla_ae_sources_pkg.GetSystemSourceDate(
142803 p_source_code => 'XLA_REFERENCE_DATE_1'
142804 , p_source_type_code => 'Y'
142805 , p_source_application_id => 602
142806 );
142807 l_rec_acct_attrs.array_acct_attr_code(3) := 'GL_TRANSFER_FLAG';
142808 l_rec_acct_attrs.array_char_value(3) := g_array_event(l_event_id).array_value_char('source_38');
142809
142810
142811 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
142812
142813 XLA_AE_HEADER_PKG.SetJeCategoryName;
142814
142815 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
142816 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
142817 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
142818 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
142819 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
142820
142821
142822 -- No header level analytical criteria
142823
142824 --
142825 --accounting attribute enhancement, bug 3612931
142826 --
142827 l_trx_reversal_source := SUBSTR(NULL, 1,30);
142828
142829 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
142830 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
142831
142832 xla_accounting_err_pkg.build_message
142833 (p_appli_s_name => 'XLA'
142834 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
142835 ,p_token_1 => 'ACCT_ATTR_NAME'
142836 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
142837 ,p_token_2 => 'PRODUCT_NAME'
142838 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
142839 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
142840 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
142841 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
142842
142843 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
142844 --
142845 -- following sets the accounting attributes needed to reverse
142846 -- accounting for a distributeion
142847 --
142848 xla_ae_lines_pkg.SetTrxReversalAttrs
142849 (p_event_id => l_event_id
142850 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
142851 ,p_trx_reversal_source => l_trx_reversal_source);
142852
142853 END IF;
142854
142855
142856 ----------------------------------------------------------------
142857 -- 4262811 - update the header statuses to invalid in need be
142858 ----------------------------------------------------------------
142859 --
142860 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
142861
142862
142863 -----------------------------------------------
142864 -- No accrual reversal for the event class/type
142865 -----------------------------------------------
142866 ----------------------------------------------------------------
142867
142868 --
142869 -- this ends the header loop iteration for one bulk fetch
142870 --
142871 END LOOP;
142872
142873 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
142874 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
142875
142876 --
142877 -- insert dummy rows into lines gt table that were created due to
142878 -- transaction reversals
142879 --
142880 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
142881 l_result := XLA_AE_LINES_PKG.InsertLines;
142882 END IF;
142883
142884 --
142885 -- reset the temp_line_num for each set of events fetched from header
142886 -- cursor rather than doing it for each new event in line cursor
142887 -- Bug 3939231
142888 --
142889 xla_ae_lines_pkg.g_temp_line_num := 0;
142890
142891
142892
142893 --
142894 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
142895 --
142896 --
142897 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
142898
142899 trace
142900 (p_msg => 'SQL - FETCH line_cur'
142901 ,p_level => C_LEVEL_STATEMENT
142902 ,p_module => l_log_module);
142903
142904 END IF;
142905 --
142906 --
142907 LOOP
142908 --
142909 FETCH line_cur BULK COLLECT INTO
142910 l_array_entity_id
142911 , l_array_legal_entity_id
142912 , l_array_entity_code
142913 , l_array_transaction_num
142914 , l_array_event_id
142915 , l_array_class_code
142916 , l_array_event_type
142917 , l_array_event_number
142918 , l_array_event_date
142919 , l_array_transaction_date
142920 , l_array_reference_num_1
142921 , l_array_reference_num_2
142922 , l_array_reference_num_3
142923 , l_array_reference_num_4
142924 , l_array_reference_char_1
142925 , l_array_reference_char_2
142926 , l_array_reference_char_3
142927 , l_array_reference_char_4
142928 , l_array_reference_date_1
142929 , l_array_reference_date_2
142930 , l_array_reference_date_3
142931 , l_array_reference_date_4
142932 , l_array_event_created_by
142933 , l_array_budgetary_control_flag
142934 , l_array_extract_line_num
142935 , l_array_source_4
142936 , l_array_source_5
142937 , l_array_source_11
142938 , l_array_source_18
142939 , l_array_source_22
142940 LIMIT l_rows;
142941
142942 --
142943 IF (C_LEVEL_EVENT >= g_log_level) THEN
142944 trace
142945 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
142946 ,p_level => C_LEVEL_EVENT
142947 ,p_module => l_log_module);
142948 END IF;
142949 --
142950 EXIT WHEN l_array_entity_id.count = 0;
142951
142952 XLA_AE_LINES_PKG.g_rec_lines := null;
142953
142954 --
142955 -- Bug 4458708
142956 --
142957 XLA_AE_LINES_PKG.g_LineNumber := 0;
142958 --
142959 --
142960
142961 FOR Idx IN 1..l_array_event_id.count LOOP
142962 --
142963 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
142964 --
142965 l_event_id := l_array_event_id(idx); -- 5648433
142966
142967 --
142968 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
142969 --
142970
142971 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
142972 (g_array_event(l_event_id).array_value_num('header_index'))
142973 ,'N'
142974 ) <> 'Y'
142975 THEN
142976 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
142977 trace
142978 (p_msg => 'Trancaction revesal option is not Y '
142979 ,p_level => C_LEVEL_STATEMENT
142980 ,p_module => l_log_module);
142981 END IF;
142982
142983 --
142984 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
142985 --
142986 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
142987 --
142988 -- set event info as cache for other routines to refer event attributes
142989 --
142990
142991 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
142992 l_previous_event_id := l_event_id;
142993
142994 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
142995 (p_application_id => p_application_id
142996 ,p_primary_ledger_id => p_primary_ledger_id
142997 ,p_base_ledger_id => p_base_ledger_id
142998 ,p_target_ledger_id => p_target_ledger_id
142999 ,p_entity_id => l_array_entity_id(Idx)
143000 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
143001 ,p_entity_code => l_array_entity_code(Idx)
143002 ,p_transaction_num => l_array_transaction_num(Idx)
143003 ,p_event_id => l_array_event_id(Idx)
143004 ,p_event_class_code => l_array_class_code(Idx)
143005 ,p_event_type_code => l_array_event_type(Idx)
143006 ,p_event_number => l_array_event_number(Idx)
143007 ,p_event_date => l_array_event_date(Idx)
143008 ,p_transaction_date => l_array_transaction_date(Idx)
143009 ,p_reference_num_1 => l_array_reference_num_1(Idx)
143010 ,p_reference_num_2 => l_array_reference_num_2(Idx)
143011 ,p_reference_num_3 => l_array_reference_num_3(Idx)
143012 ,p_reference_num_4 => l_array_reference_num_4(Idx)
143013 ,p_reference_char_1 => l_array_reference_char_1(Idx)
143014 ,p_reference_char_2 => l_array_reference_char_2(Idx)
143015 ,p_reference_char_3 => l_array_reference_char_3(Idx)
143016 ,p_reference_char_4 => l_array_reference_char_4(Idx)
143017 ,p_reference_date_1 => l_array_reference_date_1(Idx)
143018 ,p_reference_date_2 => l_array_reference_date_2(Idx)
143019 ,p_reference_date_3 => l_array_reference_date_3(Idx)
143020 ,p_reference_date_4 => l_array_reference_date_4(Idx)
143021 ,p_event_created_by => l_array_event_created_by(Idx)
143022 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
143023 --
143024 END IF;
143025
143026
143027
143028 --
143029 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
143030
143031 l_acct_reversal_source := SUBSTR(NULL, 1,30);
143032
143033 IF l_continue_with_lines THEN
143034 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
143035 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
143036
143037 xla_accounting_err_pkg.build_message
143038 (p_appli_s_name => 'XLA'
143039 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
143040 ,p_token_1 => 'LINE_NUMBER'
143041 ,p_value_1 => l_array_extract_line_num(Idx)
143042 ,p_token_2 => 'PRODUCT_NAME'
143043 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
143044 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
143045 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
143046 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
143047
143048 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
143049 --
143050 -- following sets the accounting attributes needed to reverse
143051 -- accounting for a distributeion
143052 --
143053
143054 --
143055 -- 5217187
143056 --
143057 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
143058 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
143059 g_array_event(l_event_id).array_value_num('header_index'));
143060 --
143061 --
143062
143063 -- No reversal code generated
143064
143065 xla_ae_lines_pkg.SetAcctReversalAttrs
143066 (p_event_id => l_event_id
143067 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
143068 ,p_calculate_acctd_flag => l_calculate_acctd_flag
143069 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
143070 END IF;
143071
143072 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
143073 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
143074
143075 --
143076 AcctLineType_12 (
143077 p_application_id => p_application_id
143078 ,p_event_id => l_event_id
143079 ,p_calculate_acctd_flag => l_calculate_acctd_flag
143080 ,p_calculate_g_l_flag => l_calculate_g_l_flag
143081 ,p_actual_flag => l_actual_flag
143082 ,p_balance_type_code => l_balance_type_code
143083 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
143084
143085 , p_source_4 => l_array_source_4(Idx)
143086 , p_source_5 => l_array_source_5(Idx)
143087 , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
143088 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
143089 , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
143090 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
143091 , p_source_10 => g_array_event(l_event_id).array_value_num('source_10')
143092 , p_source_11 => l_array_source_11(Idx)
143093 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
143094 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
143095 , p_source_13 => g_array_event(l_event_id).array_value_num('source_13')
143096 , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
143097 , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
143098 , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
143099 , p_source_18 => l_array_source_18(Idx)
143100 , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
143101 , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
143102 , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
143103 , p_source_22 => l_array_source_22(Idx)
143104 , p_source_23 => g_array_event(l_event_id).array_value_num('source_23')
143105 , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
143106 );
143107 If(l_balance_type_code = 'A') THEN
143108 l_actual_gain_loss_ref := l_gain_or_loss_ref;
143109 END IF;
143110
143111 --
143112
143113
143114 --
143115 AcctLineType_233 (
143116 p_application_id => p_application_id
143117 ,p_event_id => l_event_id
143118 ,p_calculate_acctd_flag => l_calculate_acctd_flag
143119 ,p_calculate_g_l_flag => l_calculate_g_l_flag
143120 ,p_actual_flag => l_actual_flag
143121 ,p_balance_type_code => l_balance_type_code
143122 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
143123
143124 , p_source_4 => l_array_source_4(Idx)
143125 , p_source_5 => l_array_source_5(Idx)
143126 , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
143127 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
143128 , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
143129 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
143130 , p_source_10 => g_array_event(l_event_id).array_value_num('source_10')
143131 , p_source_11 => l_array_source_11(Idx)
143132 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
143133 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
143134 , p_source_13 => g_array_event(l_event_id).array_value_num('source_13')
143135 , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
143136 , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
143137 , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
143138 , p_source_18 => l_array_source_18(Idx)
143139 , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
143140 , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
143141 , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
143142 , p_source_22 => l_array_source_22(Idx)
143143 , p_source_23 => g_array_event(l_event_id).array_value_num('source_23')
143144 , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
143145 );
143146 If(l_balance_type_code = 'A') THEN
143147 l_actual_gain_loss_ref := l_gain_or_loss_ref;
143148 END IF;
143149
143150 --
143151
143152 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
143153 -- or secondary ledger that has different currency with primary
143154 -- or alc that is calculated by sla
143155 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
143156 (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'))
143157
143158 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
143159 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
143160 AND (l_actual_flag = 'A')) THEN
143161 XLA_AE_LINES_PKG.CreateGainOrLossLines(
143162 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
143163 ,p_application_id => p_application_id
143164 ,p_amb_context_code => 'DEFAULT'
143165 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
143166 ,p_event_class_code => C_EVENT_CLASS_CODE
143167 ,p_event_type_code => C_EVENT_TYPE_CODE
143168
143169 ,p_gain_ccid => -1
143170 ,p_loss_ccid => -1
143171
143172 ,p_actual_flag => l_actual_flag
143173 ,p_enc_flag => null
143174 ,p_actual_g_l_ref => l_actual_gain_loss_ref
143175 ,p_enc_g_l_ref => null
143176 );
143177 END IF;
143178 END IF;
143179 END IF;
143180
143181 ELSE
143182 --
143183 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
143184 --
143185 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
143186 trace
143187 (p_msg => 'Trancaction revesal option is Y'
143188 ,p_level => C_LEVEL_STATEMENT
143189 ,p_module => l_log_module);
143190 END IF;
143191 END IF;
143192
143193 END LOOP;
143194 l_result := XLA_AE_LINES_PKG.InsertLines ;
143195 end loop;
143196 close line_cur;
143197
143198
143199 --
143200 -- insert headers into xla_ae_headers_gt table
143201 --
143202 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
143203
143204 -- insert into errors table here.
143205
143206 END LOOP;
143207
143208 --
143209 -- 4865292
143210 --
143211 -- Compare g_hdr_extract_count with event count in
143212 -- CreateHeadersAndLines.
143213 --
143214 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
143215
143216 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
143217 trace (p_msg => '# rows extracted from header extract objects '
143218 || ' (running total): '
143219 || g_hdr_extract_count
143220 ,p_level => C_LEVEL_STATEMENT
143221 ,p_module => l_log_module);
143222 END IF;
143223
143224 CLOSE header_cur;
143225 --
143226
143227 --
143228 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
143229 trace
143230 (p_msg => 'END of EventClass_253'
143231 ,p_level => C_LEVEL_PROCEDURE
143232 ,p_module => l_log_module);
143233 END IF;
143234 --
143235 RETURN l_result;
143236 EXCEPTION
143237 WHEN xla_exceptions_pkg.application_exception THEN
143238
143239 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
143240
143241
143242 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
143243
143244 RAISE;
143245
143246 WHEN NO_DATA_FOUND THEN
143247
143248 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
143249 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
143250
143251 FOR header_record IN header_cur
143252 LOOP
143253 l_array_header_events(header_record.event_id) := header_record.event_id;
143254 END LOOP;
143255
143256 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
143257 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
143258
143259 fnd_file.put_line(fnd_file.LOG, ' ');
143260 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
143261 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
143262 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
143263
143264 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
143265 LOOP
143266 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
143267 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
143268 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
143269 END IF;
143270 END LOOP;
143271
143272 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
143273 fnd_file.put_line(fnd_file.LOG, ' ');
143274
143275
143276 xla_exceptions_pkg.raise_message
143277 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_253');
143278
143279
143280 WHEN OTHERS THEN
143281 xla_exceptions_pkg.raise_message
143282 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_253');
143283 END EventClass_253;
143284 --
143285
143286 ---------------------------------------
143287 --
143288 -- PRIVATE PROCEDURE
143289 -- insert_sources_254
143290 --
143291 ----------------------------------------
143292 --
143293 PROCEDURE insert_sources_254(
143294 p_target_ledger_id IN NUMBER
143295 , p_language IN VARCHAR2
143296 , p_sla_ledger_id IN NUMBER
143297 , p_pad_start_date IN DATE
143298 , p_pad_end_date IN DATE
143299 )
143300 IS
143301
143302 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'DIR_INTERORG_RCPT_ALL';
143303 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'DIR_INTERORG_RCPT';
143304 p_apps_owner VARCHAR2(30);
143305 l_log_module VARCHAR2(240);
143306 BEGIN
143307 IF g_log_enabled THEN
143308 l_log_module := C_DEFAULT_MODULE||'.insert_sources_254';
143309 END IF;
143310 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
143311
143312 trace
143313 (p_msg => 'BEGIN of insert_sources_254'
143314 ,p_level => C_LEVEL_PROCEDURE
143315 ,p_module => l_log_module);
143316
143317 END IF;
143318
143319 -- select APPS owner
143320 SELECT oracle_username
143321 INTO p_apps_owner
143322 FROM fnd_oracle_userid
143323 WHERE read_only_flag = 'U'
143324 ;
143325
143326 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
143327 trace
143328 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
143329 ' - p_language = '||p_language||
143330 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
143331 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
143332 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
143333 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
143334 ,p_level => C_LEVEL_STATEMENT
143335 ,p_module => l_log_module);
143336 END IF;
143337
143338
143339 --
143340 INSERT INTO xla_diag_sources --hdr2
143341 (
143342 event_id
143343 , ledger_id
143344 , sla_ledger_id
143345 , description_language
143346 , object_name
143347 , object_type_code
143348 , line_number
143349 , source_application_id
143350 , source_type_code
143351 , source_code
143352 , source_value
143353 , source_meaning
143354 , created_by
143355 , creation_date
143356 , last_update_date
143357 , last_updated_by
143358 , last_update_login
143359 , program_update_date
143360 , program_application_id
143361 , program_id
143362 , request_id
143363 )
143364 SELECT
143365 event_id
143366 , p_target_ledger_id
143367 , p_sla_ledger_id
143368 , p_language
143369 , object_name
143370 , object_type_code
143371 , line_number
143372 , source_application_id
143373 , source_type_code
143374 , source_code
143375 , SUBSTR(source_value ,1,1996)
143376 , SUBSTR(source_meaning ,1,200)
143377 , xla_environment_pkg.g_Usr_Id
143378 , TRUNC(SYSDATE)
143379 , TRUNC(SYSDATE)
143380 , xla_environment_pkg.g_Usr_Id
143381 , xla_environment_pkg.g_Login_Id
143382 , TRUNC(SYSDATE)
143383 , xla_environment_pkg.g_Prog_Appl_Id
143384 , xla_environment_pkg.g_Prog_Id
143385 , xla_environment_pkg.g_Req_Id
143386 FROM (
143387 SELECT xet.event_id event_id
143388 , 0 line_number
143389 , CASE r
143390 WHEN 1 THEN 'CST_XLA_INV_REF_V'
143391 WHEN 2 THEN 'CST_XLA_INV_REF_V'
143392 WHEN 3 THEN 'CST_XLA_INV_REF_V'
143393 WHEN 4 THEN 'CST_XLA_INV_HEADERS_V'
143394 WHEN 5 THEN 'CST_XLA_INV_REF_V'
143395 WHEN 6 THEN 'CST_XLA_INV_REF_V'
143396 WHEN 7 THEN 'PSA_CST_XLA_UPG_V'
143397 WHEN 8 THEN 'CST_XLA_INV_REF_V'
143398 WHEN 9 THEN 'CST_XLA_INV_REF_V'
143399 WHEN 10 THEN 'PO_REQ_DISTS_REF_V'
143400 WHEN 11 THEN 'PO_REQ_HEADERS_REF_V'
143401 WHEN 12 THEN 'CST_XLA_INV_HEADERS_V'
143402
143403 ELSE null
143404 END object_name
143405 , CASE r
143406 WHEN 1 THEN 'HEADER'
143407 WHEN 2 THEN 'HEADER'
143408 WHEN 3 THEN 'HEADER'
143409 WHEN 4 THEN 'HEADER'
143410 WHEN 5 THEN 'HEADER'
143411 WHEN 6 THEN 'HEADER'
143412 WHEN 7 THEN 'HEADER'
143413 WHEN 8 THEN 'HEADER'
143414 WHEN 9 THEN 'HEADER'
143415 WHEN 10 THEN 'HEADER'
143416 WHEN 11 THEN 'HEADER'
143417 WHEN 12 THEN 'HEADER'
143418
143419 ELSE null
143420 END object_type_code
143421 , CASE r
143422 WHEN 1 THEN '707'
143423 WHEN 2 THEN '707'
143424 WHEN 3 THEN '707'
143425 WHEN 4 THEN '707'
143426 WHEN 5 THEN '707'
143427 WHEN 6 THEN '707'
143428 WHEN 7 THEN '707'
143429 WHEN 8 THEN '707'
143430 WHEN 9 THEN '707'
143431 WHEN 10 THEN '201'
143432 WHEN 11 THEN '201'
143433 WHEN 12 THEN '707'
143434
143435 ELSE null
143436 END source_application_id
143437 , 'S' source_type_code
143438 , CASE r
143439 WHEN 1 THEN 'APPLIED_TO_APPL_ID'
143440 WHEN 2 THEN 'APPLIED_TO_DIST_LINK_TYPE'
143441 WHEN 3 THEN 'APPLIED_TO_ENTITY_CODE'
143442 WHEN 4 THEN 'DISTRIBUTION_TYPE'
143443 WHEN 5 THEN 'ENCUM_REVERSAL_AMOUNT_ENTERED'
143444 WHEN 6 THEN 'ENCUMBRANCE_REVERSAL_AMOUNT'
143445 WHEN 7 THEN 'CST_ENCUM_UPG_OPTION'
143446 WHEN 8 THEN 'TXN_PO_DISTRIBUTION_ID'
143447 WHEN 9 THEN 'TXN_PO_HEADER_ID'
143448 WHEN 10 THEN 'REQ_BUDGET_ACCOUNT'
143449 WHEN 11 THEN 'REQ_ENCUMBRANCE_TYPE_ID'
143450 WHEN 12 THEN 'TRANSFER_TO_GL_INDICATOR'
143451
143452 ELSE null
143453 END source_code
143454 , CASE r
143455 WHEN 1 THEN TO_CHAR(h3.APPLIED_TO_APPL_ID)
143456 WHEN 2 THEN TO_CHAR(h3.APPLIED_TO_DIST_LINK_TYPE)
143457 WHEN 3 THEN TO_CHAR(h3.APPLIED_TO_ENTITY_CODE)
143458 WHEN 4 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
143459 WHEN 5 THEN TO_CHAR(h3.ENCUM_REVERSAL_AMOUNT_ENTERED)
143460 WHEN 6 THEN TO_CHAR(h3.ENCUMBRANCE_REVERSAL_AMOUNT)
143461 WHEN 7 THEN TO_CHAR(h6.CST_ENCUM_UPG_OPTION)
143462 WHEN 8 THEN TO_CHAR(h3.TXN_PO_DISTRIBUTION_ID)
143463 WHEN 9 THEN TO_CHAR(h3.TXN_PO_HEADER_ID)
143464 WHEN 10 THEN TO_CHAR(h4.REQ_BUDGET_ACCOUNT)
143465 WHEN 11 THEN TO_CHAR(h5.REQ_ENCUMBRANCE_TYPE_ID)
143466 WHEN 12 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
143467
143468 ELSE null
143469 END source_value
143470 , CASE r
143471 WHEN 4 THEN fvl12.meaning
143472 WHEN 12 THEN fvl38.meaning
143473
143474 ELSE null
143475 END source_meaning
143476 FROM xla_events_gt xet
143477 , CST_XLA_INV_HEADERS_V h1
143478 , CST_XLA_INV_REF_V h3
143479 , PO_REQ_DISTS_REF_V h4
143480 , PO_REQ_HEADERS_REF_V h5
143481 , PSA_CST_XLA_UPG_V h6
143482 , fnd_lookup_values fvl12
143483 , fnd_lookup_values fvl38
143484 ,(select rownum r from all_objects where rownum <= 12 and owner = p_apps_owner)
143485 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
143486 AND xet.event_class_code = C_EVENT_CLASS_CODE
143487 AND h1.event_id = xet.event_id
143488 AND h3.ref_transaction_id = h1.transaction_id AND h3.bus_flow_req_dist_id=h4.req_distribution_id (+) AND h3.bus_flow_req_id = h5.req_id (+) AND h3.rcv_transaction_id = h6.transaction_id (+) AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
143489 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
143490 AND fvl12.view_application_id(+) = 700
143491 AND fvl12.language(+) = USERENV('LANG')
143492 AND fvl38.lookup_type(+) = 'YES_NO'
143493 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
143494 AND fvl38.view_application_id(+) = 0
143495 AND fvl38.language(+) = USERENV('LANG')
143496
143497 )
143498 ;
143499 --
143500 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
143501
143502 trace
143503 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
143504 ,p_level => C_LEVEL_STATEMENT
143505 ,p_module => l_log_module);
143506
143507 END IF;
143508 --
143509
143510
143511
143512 --
143513 INSERT INTO xla_diag_sources --line2
143514 (
143515 event_id
143516 , ledger_id
143517 , sla_ledger_id
143518 , description_language
143519 , object_name
143520 , object_type_code
143521 , line_number
143522 , source_application_id
143523 , source_type_code
143524 , source_code
143525 , source_value
143526 , source_meaning
143527 , created_by
143528 , creation_date
143529 , last_update_date
143530 , last_updated_by
143531 , last_update_login
143532 , program_update_date
143533 , program_application_id
143534 , program_id
143535 , request_id
143536 )
143537 SELECT event_id
143538 , p_target_ledger_id
143539 , p_sla_ledger_id
143540 , p_language
143541 , object_name
143542 , object_type_code
143543 , line_number
143544 , source_application_id
143545 , source_type_code
143546 , source_code
143547 , SUBSTR(source_value,1,1996)
143548 , SUBSTR(source_meaning ,1,200)
143549 , xla_environment_pkg.g_Usr_Id
143550 , TRUNC(SYSDATE)
143551 , TRUNC(SYSDATE)
143552 , xla_environment_pkg.g_Usr_Id
143553 , xla_environment_pkg.g_Login_Id
143554 , TRUNC(SYSDATE)
143555 , xla_environment_pkg.g_Prog_Appl_Id
143556 , xla_environment_pkg.g_Prog_Id
143557 , xla_environment_pkg.g_Req_Id
143558 FROM (
143559 SELECT xet.event_id event_id
143560 , l2.line_number line_number
143561 , CASE r
143562 WHEN 1 THEN 'CST_XLA_INV_LINES_V'
143563 WHEN 2 THEN 'CST_XLA_INV_LINES_V'
143564 WHEN 3 THEN 'CST_XLA_INV_LINES_V'
143565 WHEN 4 THEN 'CST_XLA_INV_LINES_V'
143566 WHEN 5 THEN 'CST_XLA_INV_LINES_V'
143567 WHEN 6 THEN 'CST_XLA_INV_LINES_V'
143568 WHEN 7 THEN 'CST_XLA_INV_LINES_V'
143569 WHEN 8 THEN 'CST_XLA_INV_LINES_V'
143570 WHEN 9 THEN 'CST_XLA_INV_LINES_V'
143571
143572 ELSE null
143573 END object_name
143574 , CASE r
143575 WHEN 1 THEN 'LINE'
143576 WHEN 2 THEN 'LINE'
143577 WHEN 3 THEN 'LINE'
143578 WHEN 4 THEN 'LINE'
143579 WHEN 5 THEN 'LINE'
143580 WHEN 6 THEN 'LINE'
143581 WHEN 7 THEN 'LINE'
143582 WHEN 8 THEN 'LINE'
143583 WHEN 9 THEN 'LINE'
143584
143585 ELSE null
143586 END object_type_code
143587 , CASE r
143588 WHEN 1 THEN '707'
143589 WHEN 2 THEN '707'
143590 WHEN 3 THEN '707'
143591 WHEN 4 THEN '707'
143592 WHEN 5 THEN '707'
143593 WHEN 6 THEN '707'
143594 WHEN 7 THEN '707'
143595 WHEN 8 THEN '707'
143596 WHEN 9 THEN '707'
143597
143598 ELSE null
143599 END source_application_id
143600 , 'S' source_type_code
143601 , CASE r
143602 WHEN 1 THEN 'CODE_COMBINATION_ID'
143603 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER'
143604 WHEN 3 THEN 'CURRENCY_CODE'
143605 WHEN 4 THEN 'ENTERED_AMOUNT'
143606 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE'
143607 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE'
143608 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE'
143609 WHEN 8 THEN 'ACCOUNTED_AMOUNT'
143610 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE'
143611
143612 ELSE null
143613 END source_code
143614 , CASE r
143615 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
143616 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
143617 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
143618 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
143619 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
143620 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
143621 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
143622 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
143623 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
143624
143625 ELSE null
143626 END source_value
143627 , null source_meaning
143628 FROM xla_events_gt xet
143629 , CST_XLA_INV_LINES_V l2
143630 , (select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
143631 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
143632 AND xet.event_class_code = C_EVENT_CLASS_CODE
143633 AND l2.event_id = xet.event_id
143634
143635 )
143636 ;
143637 --
143638 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
143639
143640 trace
143641 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
143642 ,p_level => C_LEVEL_STATEMENT
143643 ,p_module => l_log_module);
143644
143645 END IF;
143646
143647
143648 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
143649 trace
143650 (p_msg => 'END of insert_sources_254'
143651 ,p_level => C_LEVEL_PROCEDURE
143652 ,p_module => l_log_module);
143653 END IF;
143654 EXCEPTION
143655 WHEN xla_exceptions_pkg.application_exception THEN
143656 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
143657 trace
143658 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
143659 ,p_level => C_LEVEL_EXCEPTION
143660 ,p_module => l_log_module);
143661 END IF;
143662 RAISE;
143663 WHEN OTHERS THEN
143664 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
143665 trace
143666 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
143667 ,p_level => C_LEVEL_EXCEPTION
143668 ,p_module => l_log_module);
143669 END IF;
143670 xla_exceptions_pkg.raise_message
143671 (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_254');
143672 END insert_sources_254;
143673 --
143674
143675 ---------------------------------------
143676 --
143677 -- PRIVATE FUNCTION
143678 -- EventClass_254
143679 --
143680 ----------------------------------------
143681 --
143682 FUNCTION EventClass_254
143683 (p_application_id IN NUMBER
143684 ,p_base_ledger_id IN NUMBER
143685 ,p_target_ledger_id IN NUMBER
143686 ,p_language IN VARCHAR2
143687 ,p_currency_code IN VARCHAR2
143688 ,p_sla_ledger_id IN NUMBER
143689 ,p_pad_start_date IN DATE
143690 ,p_pad_end_date IN DATE
143691 ,p_primary_ledger_id IN NUMBER)
143692 RETURN BOOLEAN IS
143693 --
143694 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'DIR_INTERORG_RCPT_ALL';
143695 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'DIR_INTERORG_RCPT';
143696
143697 l_calculate_acctd_flag VARCHAR2(1) :='N';
143698 l_calculate_g_l_flag VARCHAR2(1) :='N';
143699 --
143700 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
143701 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
143702 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
143703 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
143704 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
143705 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
143706 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
143707 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
143708 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
143709 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
143710 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
143711 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
143712 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
143713 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
143714 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
143715 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
143716 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
143717 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
143718 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
143719 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
143720 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
143721 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
143722 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
143723 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
143724 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
143725 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
143726
143727 l_event_id NUMBER;
143728 l_previous_event_id NUMBER;
143729 l_first_event_id NUMBER;
143730 l_last_event_id NUMBER;
143731
143732 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
143733 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
143734 --
143735 --
143736 l_result BOOLEAN := TRUE;
143737 l_rows NUMBER := 1000;
143738 l_event_type_name VARCHAR2(80) := 'All';
143739 l_event_class_name VARCHAR2(80) := 'Direct Interorg Receipt';
143740 l_description VARCHAR2(4000);
143741 l_transaction_reversal NUMBER;
143742 l_ae_header_id NUMBER;
143743 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
143744 l_log_module VARCHAR2(240);
143745 --
143746 l_acct_reversal_source VARCHAR2(30);
143747 l_trx_reversal_source VARCHAR2(30);
143748
143749 l_continue_with_lines BOOLEAN := TRUE;
143750 --
143751 l_acc_rev_gl_date_source DATE; -- 4262811
143752 --
143753 type t_array_event_id is table of number index by binary_integer;
143754
143755 l_rec_array_event t_rec_array_event;
143756 l_null_rec_array_event t_rec_array_event;
143757 l_array_ae_header_id xla_number_array_type;
143758 l_actual_flag VARCHAR2(1) := NULL;
143759 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
143760 l_balance_type_code VARCHAR2(1) :=NULL;
143761 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
143762
143763 --
143764 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
143765 --
143766
143767 TYPE t_array_source_6 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_APPL_ID%TYPE INDEX BY BINARY_INTEGER;
143768 TYPE t_array_source_7 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_DIST_LINK_TYPE%TYPE INDEX BY BINARY_INTEGER;
143769 TYPE t_array_source_8 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
143770 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
143771 TYPE t_array_source_14 IS TABLE OF CST_XLA_INV_REF_V.ENCUM_REVERSAL_AMOUNT_ENTERED%TYPE INDEX BY BINARY_INTEGER;
143772 TYPE t_array_source_16 IS TABLE OF CST_XLA_INV_REF_V.ENCUMBRANCE_REVERSAL_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
143773 TYPE t_array_source_27 IS TABLE OF PSA_CST_XLA_UPG_V.CST_ENCUM_UPG_OPTION%TYPE INDEX BY BINARY_INTEGER;
143774 TYPE t_array_source_28 IS TABLE OF CST_XLA_INV_REF_V.TXN_PO_DISTRIBUTION_ID%TYPE INDEX BY BINARY_INTEGER;
143775 TYPE t_array_source_29 IS TABLE OF CST_XLA_INV_REF_V.TXN_PO_HEADER_ID%TYPE INDEX BY BINARY_INTEGER;
143776 TYPE t_array_source_30 IS TABLE OF PO_REQ_DISTS_REF_V.REQ_BUDGET_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
143777 TYPE t_array_source_31 IS TABLE OF PO_REQ_HEADERS_REF_V.REQ_ENCUMBRANCE_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
143778 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
143779
143780 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
143781 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
143782 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
143783 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
143784 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
143785 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
143786 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
143787 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
143788 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
143789
143790 l_array_source_6 t_array_source_6;
143791 l_array_source_7 t_array_source_7;
143792 l_array_source_8 t_array_source_8;
143793 l_array_source_12 t_array_source_12;
143794 l_array_source_12_meaning t_array_lookup_meaning;
143795 l_array_source_14 t_array_source_14;
143796 l_array_source_16 t_array_source_16;
143797 l_array_source_27 t_array_source_27;
143798 l_array_source_28 t_array_source_28;
143799 l_array_source_29 t_array_source_29;
143800 l_array_source_30 t_array_source_30;
143801 l_array_source_31 t_array_source_31;
143802 l_array_source_38 t_array_source_38;
143803 l_array_source_38_meaning t_array_lookup_meaning;
143804
143805 l_array_source_4 t_array_source_4;
143806 l_array_source_11 t_array_source_11;
143807 l_array_source_15 t_array_source_15;
143808 l_array_source_18 t_array_source_18;
143809 l_array_source_19 t_array_source_19;
143810 l_array_source_20 t_array_source_20;
143811 l_array_source_21 t_array_source_21;
143812 l_array_source_22 t_array_source_22;
143813 l_array_source_24 t_array_source_24;
143814
143815 --
143816 CURSOR header_cur
143817 IS
143818 SELECT /*+ leading(xet) cardinality(xet,1) */
143819 -- Event Class Code: DIR_INTERORG_RCPT
143820 xet.entity_id
143821 ,xet.legal_entity_id
143822 ,xet.entity_code
143823 ,xet.transaction_number
143824 ,xet.event_id
143825 ,xet.event_class_code
143826 ,xet.event_type_code
143827 ,xet.event_number
143828 ,xet.event_date
143829 ,xet.transaction_date
143830 ,xet.reference_num_1
143831 ,xet.reference_num_2
143832 ,xet.reference_num_3
143833 ,xet.reference_num_4
143834 ,xet.reference_char_1
143835 ,xet.reference_char_2
143836 ,xet.reference_char_3
143837 ,xet.reference_char_4
143838 ,xet.reference_date_1
143839 ,xet.reference_date_2
143840 ,xet.reference_date_3
143841 ,xet.reference_date_4
143842 ,xet.event_created_by
143843 ,xet.budgetary_control_flag
143844 , h3.APPLIED_TO_APPL_ID source_6
143845 , h3.APPLIED_TO_DIST_LINK_TYPE source_7
143846 , h3.APPLIED_TO_ENTITY_CODE source_8
143847 , h1.DISTRIBUTION_TYPE source_12
143848 , fvl12.meaning source_12_meaning
143849 , h3.ENCUM_REVERSAL_AMOUNT_ENTERED source_14
143850 , h3.ENCUMBRANCE_REVERSAL_AMOUNT source_16
143851 , h6.CST_ENCUM_UPG_OPTION source_27
143852 , h3.TXN_PO_DISTRIBUTION_ID source_28
143853 , h3.TXN_PO_HEADER_ID source_29
143854 , h4.REQ_BUDGET_ACCOUNT source_30
143855 , h5.REQ_ENCUMBRANCE_TYPE_ID source_31
143856 , h1.TRANSFER_TO_GL_INDICATOR source_38
143857 , fvl38.meaning source_38_meaning
143858 FROM xla_events_gt xet
143859 , CST_XLA_INV_HEADERS_V h1
143860 , CST_XLA_INV_REF_V h3
143861 , PO_REQ_DISTS_REF_V h4
143862 , PO_REQ_HEADERS_REF_V h5
143863 , PSA_CST_XLA_UPG_V h6
143864 , fnd_lookup_values fvl12
143865 , fnd_lookup_values fvl38
143866 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
143867 and xet.event_class_code = C_EVENT_CLASS_CODE
143868 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
143869 AND h3.ref_transaction_id = h1.transaction_id AND h3.BUS_FLOW_REQ_DIST_ID=h4.REQ_DISTRIBUTION_ID (+) AND h3.BUS_FLOW_REQ_ID = h5.REQ_ID (+) AND h3.rcv_transaction_id = h6.transaction_id (+) AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
143870 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
143871 AND fvl12.view_application_id(+) = 700
143872 AND fvl12.language(+) = USERENV('LANG')
143873 AND fvl38.lookup_type(+) = 'YES_NO'
143874 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
143875 AND fvl38.view_application_id(+) = 0
143876 AND fvl38.language(+) = USERENV('LANG')
143877
143878 ORDER BY event_id
143879 ;
143880
143881
143882 --
143883 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
143884 IS
143885 SELECT /*+ leading(xet) cardinality(xet,1) */
143886 -- Event Class Code: DIR_INTERORG_RCPT
143887 xet.entity_id
143888 ,xet.legal_entity_id
143889 ,xet.entity_code
143890 ,xet.transaction_number
143891 ,xet.event_id
143892 ,xet.event_class_code
143893 ,xet.event_type_code
143894 ,xet.event_number
143895 ,xet.event_date
143896 ,xet.transaction_date
143897 ,xet.reference_num_1
143898 ,xet.reference_num_2
143899 ,xet.reference_num_3
143900 ,xet.reference_num_4
143901 ,xet.reference_char_1
143902 ,xet.reference_char_2
143903 ,xet.reference_char_3
143904 ,xet.reference_char_4
143905 ,xet.reference_date_1
143906 ,xet.reference_date_2
143907 ,xet.reference_date_3
143908 ,xet.reference_date_4
143909 ,xet.event_created_by
143910 ,xet.budgetary_control_flag
143911 , l2.LINE_NUMBER
143912 , l2.CODE_COMBINATION_ID source_4
143913 , l2.DISTRIBUTION_IDENTIFIER source_11
143914 , l2.CURRENCY_CODE source_15
143915 , l2.ENTERED_AMOUNT source_18
143916 , l2.CURRENCY_CONVERSION_DATE source_19
143917 , l2.CURRENCY_CONVERSION_RATE source_20
143918 , l2.CURRENCY_CONVERSION_TYPE source_21
143919 , l2.ACCOUNTED_AMOUNT source_22
143920 , l2.ACCOUNTING_LINE_TYPE_CODE source_24
143921 FROM xla_events_gt xet
143922 , CST_XLA_INV_LINES_V l2
143923 WHERE xet.event_id between x_first_event_id and x_last_event_id
143924 and xet.event_date between p_pad_start_date and p_pad_end_date
143925 and xet.event_class_code = C_EVENT_CLASS_CODE
143926 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
143927 ;
143928
143929 --
143930 BEGIN
143931 IF g_log_enabled THEN
143932 l_log_module := C_DEFAULT_MODULE||'.EventClass_254';
143933 END IF;
143934 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
143935 trace
143936 (p_msg => 'BEGIN of EventClass_254'
143937 ,p_level => C_LEVEL_PROCEDURE
143938 ,p_module => l_log_module);
143939 END IF;
143940
143941 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
143942 trace
143943 (p_msg => 'p_application_id = '||p_application_id||
143944 ' - p_base_ledger_id = '||p_base_ledger_id||
143945 ' - p_target_ledger_id = '||p_target_ledger_id||
143946 ' - p_language = '||p_language||
143947 ' - p_currency_code = '||p_currency_code||
143948 ' - p_sla_ledger_id = '||p_sla_ledger_id
143949 ,p_level => C_LEVEL_STATEMENT
143950 ,p_module => l_log_module);
143951 END IF;
143952 --
143953 -- initialze arrays
143954 --
143955 g_array_event.DELETE;
143956 l_rec_array_event := l_null_rec_array_event;
143957 --
143958 --------------------------------------
143959 -- 4262811 Initialze MPA Line Number
143960 --------------------------------------
143961 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
143962
143963 --
143964
143965 --
143966 OPEN header_cur;
143967 --
143968 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
143969 trace
143970 (p_msg => 'SQL - FETCH header_cur'
143971 ,p_level => C_LEVEL_STATEMENT
143972 ,p_module => l_log_module);
143973 END IF;
143974 --
143975 LOOP
143976 FETCH header_cur BULK COLLECT INTO
143977 l_array_entity_id
143978 , l_array_legal_entity_id
143979 , l_array_entity_code
143980 , l_array_transaction_num
143981 , l_array_event_id
143982 , l_array_class_code
143983 , l_array_event_type
143984 , l_array_event_number
143985 , l_array_event_date
143986 , l_array_transaction_date
143987 , l_array_reference_num_1
143988 , l_array_reference_num_2
143989 , l_array_reference_num_3
143990 , l_array_reference_num_4
143991 , l_array_reference_char_1
143992 , l_array_reference_char_2
143993 , l_array_reference_char_3
143994 , l_array_reference_char_4
143995 , l_array_reference_date_1
143996 , l_array_reference_date_2
143997 , l_array_reference_date_3
143998 , l_array_reference_date_4
143999 , l_array_event_created_by
144000 , l_array_budgetary_control_flag
144001 , l_array_source_6
144002 , l_array_source_7
144003 , l_array_source_8
144004 , l_array_source_12
144005 , l_array_source_12_meaning
144006 , l_array_source_14
144007 , l_array_source_16
144008 , l_array_source_27
144009 , l_array_source_28
144010 , l_array_source_29
144011 , l_array_source_30
144012 , l_array_source_31
144013 , l_array_source_38
144014 , l_array_source_38_meaning
144015 LIMIT l_rows;
144016 --
144017 IF (C_LEVEL_EVENT >= g_log_level) THEN
144018 trace
144019 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
144020 ,p_level => C_LEVEL_EVENT
144021 ,p_module => l_log_module);
144022 END IF;
144023 --
144024 EXIT WHEN l_array_entity_id.COUNT = 0;
144025
144026 -- initialize arrays
144027 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
144028 XLA_AE_LINES_PKG.g_rec_lines := NULL;
144029
144030 --
144031 -- Bug 4458708
144032 --
144033 XLA_AE_LINES_PKG.g_LineNumber := 0;
144034
144035
144036 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
144037 g_last_hdr_idx := l_array_event_id.LAST;
144038 --
144039 -- loop for the headers. Each iteration is for each header extract row
144040 -- fetched in header cursor
144041 --
144042 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
144043
144044 --
144045 -- set event info as cache for other routines to refer event attributes
144046 --
144047 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
144048 (p_application_id => p_application_id
144049 ,p_primary_ledger_id => p_primary_ledger_id
144050 ,p_base_ledger_id => p_base_ledger_id
144051 ,p_target_ledger_id => p_target_ledger_id
144052 ,p_entity_id => l_array_entity_id(hdr_idx)
144053 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
144054 ,p_entity_code => l_array_entity_code(hdr_idx)
144055 ,p_transaction_num => l_array_transaction_num(hdr_idx)
144056 ,p_event_id => l_array_event_id(hdr_idx)
144057 ,p_event_class_code => l_array_class_code(hdr_idx)
144058 ,p_event_type_code => l_array_event_type(hdr_idx)
144059 ,p_event_number => l_array_event_number(hdr_idx)
144060 ,p_event_date => l_array_event_date(hdr_idx)
144061 ,p_transaction_date => l_array_transaction_date(hdr_idx)
144062 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
144063 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
144064 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
144065 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
144066 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
144067 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
144068 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
144069 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
144070 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
144071 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
144072 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
144073 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
144074 ,p_event_created_by => l_array_event_created_by(hdr_idx)
144075 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
144076
144077 --
144078 -- set the status of entry to C_VALID (0)
144079 --
144080 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
144081
144082 --
144083 -- initialize a row for ae header
144084 --
144085 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
144086
144087 l_event_id := l_array_event_id(hdr_idx);
144088
144089 --
144090 -- storing the hdr_idx for event. May be used by line cursor.
144091 --
144092 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
144093
144094 --
144095 -- store sources from header extract. This can be improved to
144096 -- store only those sources from header extract that may be used in lines
144097 --
144098
144099 g_array_event(l_event_id).array_value_num('source_6') := l_array_source_6(hdr_idx);
144100 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
144101 g_array_event(l_event_id).array_value_char('source_8') := l_array_source_8(hdr_idx);
144102 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
144103 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
144104 g_array_event(l_event_id).array_value_num('source_14') := l_array_source_14(hdr_idx);
144105 g_array_event(l_event_id).array_value_num('source_16') := l_array_source_16(hdr_idx);
144106 g_array_event(l_event_id).array_value_char('source_27') := l_array_source_27(hdr_idx);
144107 g_array_event(l_event_id).array_value_num('source_28') := l_array_source_28(hdr_idx);
144108 g_array_event(l_event_id).array_value_num('source_29') := l_array_source_29(hdr_idx);
144109 g_array_event(l_event_id).array_value_num('source_30') := l_array_source_30(hdr_idx);
144110 g_array_event(l_event_id).array_value_num('source_31') := l_array_source_31(hdr_idx);
144111 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
144112 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
144113
144114 --
144115 -- initilaize the status of ae headers for diffrent balance types
144116 -- the status is initialised to C_NOT_CREATED (2)
144117 --
144118 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
144119 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
144120 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
144121
144122 --
144123 -- call api to validate and store accounting attributes for header
144124 --
144125
144126 ------------------------------------------------------------
144127 -- Accrual Reversal : to get date for Standard Source (NONE)
144128 ------------------------------------------------------------
144129 l_acc_rev_gl_date_source := NULL;
144130
144131 l_rec_acct_attrs.array_acct_attr_code(1) := 'ENCUMBRANCE_TYPE_ID';
144132 l_rec_acct_attrs.array_num_value(1) := g_array_event(l_event_id).array_value_num('source_31');
144133 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_DATE';
144134 l_rec_acct_attrs.array_date_value(2) :=
144135 xla_ae_sources_pkg.GetSystemSourceDate(
144136 p_source_code => 'XLA_REFERENCE_DATE_1'
144137 , p_source_type_code => 'Y'
144138 , p_source_application_id => 602
144139 );
144140 l_rec_acct_attrs.array_acct_attr_code(3) := 'GL_TRANSFER_FLAG';
144141 l_rec_acct_attrs.array_char_value(3) := g_array_event(l_event_id).array_value_char('source_38');
144142
144143
144144 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
144145
144146 XLA_AE_HEADER_PKG.SetJeCategoryName;
144147
144148 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
144149 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
144150 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
144151 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
144152 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
144153
144154
144155 -- No header level analytical criteria
144156
144157 --
144158 --accounting attribute enhancement, bug 3612931
144159 --
144160 l_trx_reversal_source := SUBSTR(NULL, 1,30);
144161
144162 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
144163 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
144164
144165 xla_accounting_err_pkg.build_message
144166 (p_appli_s_name => 'XLA'
144167 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
144168 ,p_token_1 => 'ACCT_ATTR_NAME'
144169 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
144170 ,p_token_2 => 'PRODUCT_NAME'
144171 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
144172 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
144173 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
144174 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
144175
144176 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
144177 --
144178 -- following sets the accounting attributes needed to reverse
144179 -- accounting for a distributeion
144180 --
144181 xla_ae_lines_pkg.SetTrxReversalAttrs
144182 (p_event_id => l_event_id
144183 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
144184 ,p_trx_reversal_source => l_trx_reversal_source);
144185
144186 END IF;
144187
144188
144189 ----------------------------------------------------------------
144190 -- 4262811 - update the header statuses to invalid in need be
144191 ----------------------------------------------------------------
144192 --
144193 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
144194
144195
144196 -----------------------------------------------
144197 -- No accrual reversal for the event class/type
144198 -----------------------------------------------
144199 ----------------------------------------------------------------
144200
144201 --
144202 -- this ends the header loop iteration for one bulk fetch
144203 --
144204 END LOOP;
144205
144206 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
144207 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
144208
144209 --
144210 -- insert dummy rows into lines gt table that were created due to
144211 -- transaction reversals
144212 --
144213 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
144214 l_result := XLA_AE_LINES_PKG.InsertLines;
144215 END IF;
144216
144217 --
144218 -- reset the temp_line_num for each set of events fetched from header
144219 -- cursor rather than doing it for each new event in line cursor
144220 -- Bug 3939231
144221 --
144222 xla_ae_lines_pkg.g_temp_line_num := 0;
144223
144224
144225
144226 --
144227 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
144228 --
144229 --
144230 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
144231
144232 trace
144233 (p_msg => 'SQL - FETCH line_cur'
144234 ,p_level => C_LEVEL_STATEMENT
144235 ,p_module => l_log_module);
144236
144237 END IF;
144238 --
144239 --
144240 LOOP
144241 --
144242 FETCH line_cur BULK COLLECT INTO
144243 l_array_entity_id
144244 , l_array_legal_entity_id
144245 , l_array_entity_code
144246 , l_array_transaction_num
144247 , l_array_event_id
144248 , l_array_class_code
144249 , l_array_event_type
144250 , l_array_event_number
144251 , l_array_event_date
144252 , l_array_transaction_date
144253 , l_array_reference_num_1
144254 , l_array_reference_num_2
144255 , l_array_reference_num_3
144256 , l_array_reference_num_4
144257 , l_array_reference_char_1
144258 , l_array_reference_char_2
144259 , l_array_reference_char_3
144260 , l_array_reference_char_4
144261 , l_array_reference_date_1
144262 , l_array_reference_date_2
144263 , l_array_reference_date_3
144264 , l_array_reference_date_4
144265 , l_array_event_created_by
144266 , l_array_budgetary_control_flag
144267 , l_array_extract_line_num
144268 , l_array_source_4
144269 , l_array_source_11
144270 , l_array_source_15
144271 , l_array_source_18
144272 , l_array_source_19
144273 , l_array_source_20
144274 , l_array_source_21
144275 , l_array_source_22
144276 , l_array_source_24
144277 LIMIT l_rows;
144278
144279 --
144280 IF (C_LEVEL_EVENT >= g_log_level) THEN
144281 trace
144282 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
144283 ,p_level => C_LEVEL_EVENT
144284 ,p_module => l_log_module);
144285 END IF;
144286 --
144287 EXIT WHEN l_array_entity_id.count = 0;
144288
144289 XLA_AE_LINES_PKG.g_rec_lines := null;
144290
144291 --
144292 -- Bug 4458708
144293 --
144294 XLA_AE_LINES_PKG.g_LineNumber := 0;
144295 --
144296 --
144297
144298 FOR Idx IN 1..l_array_event_id.count LOOP
144299 --
144300 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
144301 --
144302 l_event_id := l_array_event_id(idx); -- 5648433
144303
144304 --
144305 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
144306 --
144307
144308 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
144309 (g_array_event(l_event_id).array_value_num('header_index'))
144310 ,'N'
144311 ) <> 'Y'
144312 THEN
144313 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
144314 trace
144315 (p_msg => 'Trancaction revesal option is not Y '
144316 ,p_level => C_LEVEL_STATEMENT
144317 ,p_module => l_log_module);
144318 END IF;
144319
144320 --
144321 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
144322 --
144323 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
144324 --
144325 -- set event info as cache for other routines to refer event attributes
144326 --
144327
144328 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
144329 l_previous_event_id := l_event_id;
144330
144331 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
144332 (p_application_id => p_application_id
144333 ,p_primary_ledger_id => p_primary_ledger_id
144334 ,p_base_ledger_id => p_base_ledger_id
144335 ,p_target_ledger_id => p_target_ledger_id
144336 ,p_entity_id => l_array_entity_id(Idx)
144337 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
144338 ,p_entity_code => l_array_entity_code(Idx)
144339 ,p_transaction_num => l_array_transaction_num(Idx)
144340 ,p_event_id => l_array_event_id(Idx)
144341 ,p_event_class_code => l_array_class_code(Idx)
144342 ,p_event_type_code => l_array_event_type(Idx)
144343 ,p_event_number => l_array_event_number(Idx)
144344 ,p_event_date => l_array_event_date(Idx)
144345 ,p_transaction_date => l_array_transaction_date(Idx)
144346 ,p_reference_num_1 => l_array_reference_num_1(Idx)
144347 ,p_reference_num_2 => l_array_reference_num_2(Idx)
144348 ,p_reference_num_3 => l_array_reference_num_3(Idx)
144349 ,p_reference_num_4 => l_array_reference_num_4(Idx)
144350 ,p_reference_char_1 => l_array_reference_char_1(Idx)
144351 ,p_reference_char_2 => l_array_reference_char_2(Idx)
144352 ,p_reference_char_3 => l_array_reference_char_3(Idx)
144353 ,p_reference_char_4 => l_array_reference_char_4(Idx)
144354 ,p_reference_date_1 => l_array_reference_date_1(Idx)
144355 ,p_reference_date_2 => l_array_reference_date_2(Idx)
144356 ,p_reference_date_3 => l_array_reference_date_3(Idx)
144357 ,p_reference_date_4 => l_array_reference_date_4(Idx)
144358 ,p_event_created_by => l_array_event_created_by(Idx)
144359 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
144360 --
144361 END IF;
144362
144363
144364
144365 --
144366 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
144367
144368 l_acct_reversal_source := SUBSTR(NULL, 1,30);
144369
144370 IF l_continue_with_lines THEN
144371 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
144372 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
144373
144374 xla_accounting_err_pkg.build_message
144375 (p_appli_s_name => 'XLA'
144376 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
144377 ,p_token_1 => 'LINE_NUMBER'
144378 ,p_value_1 => l_array_extract_line_num(Idx)
144379 ,p_token_2 => 'PRODUCT_NAME'
144380 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
144381 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
144382 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
144383 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
144384
144385 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
144386 --
144387 -- following sets the accounting attributes needed to reverse
144388 -- accounting for a distributeion
144389 --
144390
144391 --
144392 -- 5217187
144393 --
144394 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
144395 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
144396 g_array_event(l_event_id).array_value_num('header_index'));
144397 --
144398 --
144399
144400 -- No reversal code generated
144401
144402 xla_ae_lines_pkg.SetAcctReversalAttrs
144403 (p_event_id => l_event_id
144404 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
144405 ,p_calculate_acctd_flag => l_calculate_acctd_flag
144406 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
144407 END IF;
144408
144409 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
144410 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
144411
144412 --
144413 AcctLineType_27 (
144414 p_application_id => p_application_id
144415 ,p_event_id => l_event_id
144416 ,p_calculate_acctd_flag => l_calculate_acctd_flag
144417 ,p_calculate_g_l_flag => l_calculate_g_l_flag
144418 ,p_actual_flag => l_actual_flag
144419 ,p_balance_type_code => l_balance_type_code
144420 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
144421
144422 , p_source_4 => l_array_source_4(Idx)
144423 , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
144424 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
144425 , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
144426 , p_source_11 => l_array_source_11(Idx)
144427 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
144428 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
144429 , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
144430 , p_source_15 => l_array_source_15(Idx)
144431 , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
144432 , p_source_18 => l_array_source_18(Idx)
144433 , p_source_19 => l_array_source_19(Idx)
144434 , p_source_20 => l_array_source_20(Idx)
144435 , p_source_21 => l_array_source_21(Idx)
144436 , p_source_22 => l_array_source_22(Idx)
144437 , p_source_24 => l_array_source_24(Idx)
144438 , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
144439 , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
144440 , p_source_29 => g_array_event(l_event_id).array_value_num('source_29')
144441 , p_source_30 => g_array_event(l_event_id).array_value_num('source_30')
144442 , p_source_31 => g_array_event(l_event_id).array_value_num('source_31')
144443 );
144444 If(l_balance_type_code = 'A') THEN
144445 l_actual_gain_loss_ref := l_gain_or_loss_ref;
144446 END IF;
144447
144448 --
144449
144450
144451 --
144452 AcctLineType_69 (
144453 p_application_id => p_application_id
144454 ,p_event_id => l_event_id
144455 ,p_calculate_acctd_flag => l_calculate_acctd_flag
144456 ,p_calculate_g_l_flag => l_calculate_g_l_flag
144457 ,p_actual_flag => l_actual_flag
144458 ,p_balance_type_code => l_balance_type_code
144459 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
144460
144461 , p_source_4 => l_array_source_4(Idx)
144462 , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
144463 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
144464 , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
144465 , p_source_11 => l_array_source_11(Idx)
144466 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
144467 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
144468 , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
144469 , p_source_15 => l_array_source_15(Idx)
144470 , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
144471 , p_source_18 => l_array_source_18(Idx)
144472 , p_source_19 => l_array_source_19(Idx)
144473 , p_source_20 => l_array_source_20(Idx)
144474 , p_source_21 => l_array_source_21(Idx)
144475 , p_source_22 => l_array_source_22(Idx)
144476 , p_source_24 => l_array_source_24(Idx)
144477 , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
144478 , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
144479 , p_source_29 => g_array_event(l_event_id).array_value_num('source_29')
144480 , p_source_30 => g_array_event(l_event_id).array_value_num('source_30')
144481 , p_source_31 => g_array_event(l_event_id).array_value_num('source_31')
144482 );
144483 If(l_balance_type_code = 'A') THEN
144484 l_actual_gain_loss_ref := l_gain_or_loss_ref;
144485 END IF;
144486
144487 --
144488
144489
144490 --
144491 AcctLineType_73 (
144492 p_application_id => p_application_id
144493 ,p_event_id => l_event_id
144494 ,p_calculate_acctd_flag => l_calculate_acctd_flag
144495 ,p_calculate_g_l_flag => l_calculate_g_l_flag
144496 ,p_actual_flag => l_actual_flag
144497 ,p_balance_type_code => l_balance_type_code
144498 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
144499
144500 , p_source_4 => l_array_source_4(Idx)
144501 , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
144502 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
144503 , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
144504 , p_source_11 => l_array_source_11(Idx)
144505 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
144506 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
144507 , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
144508 , p_source_15 => l_array_source_15(Idx)
144509 , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
144510 , p_source_18 => l_array_source_18(Idx)
144511 , p_source_19 => l_array_source_19(Idx)
144512 , p_source_20 => l_array_source_20(Idx)
144513 , p_source_21 => l_array_source_21(Idx)
144514 , p_source_22 => l_array_source_22(Idx)
144515 , p_source_24 => l_array_source_24(Idx)
144516 , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
144517 , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
144518 , p_source_29 => g_array_event(l_event_id).array_value_num('source_29')
144519 , p_source_30 => g_array_event(l_event_id).array_value_num('source_30')
144520 , p_source_31 => g_array_event(l_event_id).array_value_num('source_31')
144521 );
144522 If(l_balance_type_code = 'A') THEN
144523 l_actual_gain_loss_ref := l_gain_or_loss_ref;
144524 END IF;
144525
144526 --
144527
144528
144529 --
144530 AcctLineType_100 (
144531 p_application_id => p_application_id
144532 ,p_event_id => l_event_id
144533 ,p_calculate_acctd_flag => l_calculate_acctd_flag
144534 ,p_calculate_g_l_flag => l_calculate_g_l_flag
144535 ,p_actual_flag => l_actual_flag
144536 ,p_balance_type_code => l_balance_type_code
144537 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
144538
144539 , p_source_4 => l_array_source_4(Idx)
144540 , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
144541 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
144542 , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
144543 , p_source_11 => l_array_source_11(Idx)
144544 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
144545 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
144546 , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
144547 , p_source_15 => l_array_source_15(Idx)
144548 , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
144549 , p_source_18 => l_array_source_18(Idx)
144550 , p_source_19 => l_array_source_19(Idx)
144551 , p_source_20 => l_array_source_20(Idx)
144552 , p_source_21 => l_array_source_21(Idx)
144553 , p_source_22 => l_array_source_22(Idx)
144554 , p_source_24 => l_array_source_24(Idx)
144555 , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
144556 , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
144557 , p_source_29 => g_array_event(l_event_id).array_value_num('source_29')
144558 , p_source_30 => g_array_event(l_event_id).array_value_num('source_30')
144559 , p_source_31 => g_array_event(l_event_id).array_value_num('source_31')
144560 );
144561 If(l_balance_type_code = 'A') THEN
144562 l_actual_gain_loss_ref := l_gain_or_loss_ref;
144563 END IF;
144564
144565 --
144566
144567
144568 --
144569 AcctLineType_113 (
144570 p_application_id => p_application_id
144571 ,p_event_id => l_event_id
144572 ,p_calculate_acctd_flag => l_calculate_acctd_flag
144573 ,p_calculate_g_l_flag => l_calculate_g_l_flag
144574 ,p_actual_flag => l_actual_flag
144575 ,p_balance_type_code => l_balance_type_code
144576 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
144577
144578 , p_source_4 => l_array_source_4(Idx)
144579 , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
144580 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
144581 , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
144582 , p_source_11 => l_array_source_11(Idx)
144583 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
144584 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
144585 , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
144586 , p_source_15 => l_array_source_15(Idx)
144587 , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
144588 , p_source_18 => l_array_source_18(Idx)
144589 , p_source_19 => l_array_source_19(Idx)
144590 , p_source_20 => l_array_source_20(Idx)
144591 , p_source_21 => l_array_source_21(Idx)
144592 , p_source_22 => l_array_source_22(Idx)
144593 , p_source_24 => l_array_source_24(Idx)
144594 , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
144595 , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
144596 , p_source_29 => g_array_event(l_event_id).array_value_num('source_29')
144597 , p_source_30 => g_array_event(l_event_id).array_value_num('source_30')
144598 , p_source_31 => g_array_event(l_event_id).array_value_num('source_31')
144599 );
144600 If(l_balance_type_code = 'A') THEN
144601 l_actual_gain_loss_ref := l_gain_or_loss_ref;
144602 END IF;
144603
144604 --
144605
144606
144607 --
144608 AcctLineType_151 (
144609 p_application_id => p_application_id
144610 ,p_event_id => l_event_id
144611 ,p_calculate_acctd_flag => l_calculate_acctd_flag
144612 ,p_calculate_g_l_flag => l_calculate_g_l_flag
144613 ,p_actual_flag => l_actual_flag
144614 ,p_balance_type_code => l_balance_type_code
144615 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
144616
144617 , p_source_4 => l_array_source_4(Idx)
144618 , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
144619 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
144620 , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
144621 , p_source_11 => l_array_source_11(Idx)
144622 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
144623 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
144624 , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
144625 , p_source_15 => l_array_source_15(Idx)
144626 , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
144627 , p_source_18 => l_array_source_18(Idx)
144628 , p_source_19 => l_array_source_19(Idx)
144629 , p_source_20 => l_array_source_20(Idx)
144630 , p_source_21 => l_array_source_21(Idx)
144631 , p_source_22 => l_array_source_22(Idx)
144632 , p_source_24 => l_array_source_24(Idx)
144633 , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
144634 , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
144635 , p_source_29 => g_array_event(l_event_id).array_value_num('source_29')
144636 , p_source_30 => g_array_event(l_event_id).array_value_num('source_30')
144637 , p_source_31 => g_array_event(l_event_id).array_value_num('source_31')
144638 );
144639 If(l_balance_type_code = 'A') THEN
144640 l_actual_gain_loss_ref := l_gain_or_loss_ref;
144641 END IF;
144642
144643 --
144644
144645
144646 --
144647 AcctLineType_160 (
144648 p_application_id => p_application_id
144649 ,p_event_id => l_event_id
144650 ,p_calculate_acctd_flag => l_calculate_acctd_flag
144651 ,p_calculate_g_l_flag => l_calculate_g_l_flag
144652 ,p_actual_flag => l_actual_flag
144653 ,p_balance_type_code => l_balance_type_code
144654 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
144655
144656 , p_source_4 => l_array_source_4(Idx)
144657 , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
144658 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
144659 , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
144660 , p_source_11 => l_array_source_11(Idx)
144661 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
144662 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
144663 , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
144664 , p_source_15 => l_array_source_15(Idx)
144665 , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
144666 , p_source_18 => l_array_source_18(Idx)
144667 , p_source_19 => l_array_source_19(Idx)
144668 , p_source_20 => l_array_source_20(Idx)
144669 , p_source_21 => l_array_source_21(Idx)
144670 , p_source_22 => l_array_source_22(Idx)
144671 , p_source_24 => l_array_source_24(Idx)
144672 , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
144673 , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
144674 , p_source_29 => g_array_event(l_event_id).array_value_num('source_29')
144675 , p_source_30 => g_array_event(l_event_id).array_value_num('source_30')
144676 , p_source_31 => g_array_event(l_event_id).array_value_num('source_31')
144677 );
144678 If(l_balance_type_code = 'A') THEN
144679 l_actual_gain_loss_ref := l_gain_or_loss_ref;
144680 END IF;
144681
144682 --
144683
144684
144685 --
144686 AcctLineType_204 (
144687 p_application_id => p_application_id
144688 ,p_event_id => l_event_id
144689 ,p_calculate_acctd_flag => l_calculate_acctd_flag
144690 ,p_calculate_g_l_flag => l_calculate_g_l_flag
144691 ,p_actual_flag => l_actual_flag
144692 ,p_balance_type_code => l_balance_type_code
144693 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
144694
144695 , p_source_4 => l_array_source_4(Idx)
144696 , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
144697 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
144698 , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
144699 , p_source_11 => l_array_source_11(Idx)
144700 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
144701 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
144702 , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
144703 , p_source_15 => l_array_source_15(Idx)
144704 , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
144705 , p_source_18 => l_array_source_18(Idx)
144706 , p_source_19 => l_array_source_19(Idx)
144707 , p_source_20 => l_array_source_20(Idx)
144708 , p_source_21 => l_array_source_21(Idx)
144709 , p_source_22 => l_array_source_22(Idx)
144710 , p_source_24 => l_array_source_24(Idx)
144711 , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
144712 , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
144713 , p_source_29 => g_array_event(l_event_id).array_value_num('source_29')
144714 , p_source_30 => g_array_event(l_event_id).array_value_num('source_30')
144715 , p_source_31 => g_array_event(l_event_id).array_value_num('source_31')
144716 );
144717 If(l_balance_type_code = 'A') THEN
144718 l_actual_gain_loss_ref := l_gain_or_loss_ref;
144719 END IF;
144720
144721 --
144722
144723
144724 --
144725 AcctLineType_223 (
144726 p_application_id => p_application_id
144727 ,p_event_id => l_event_id
144728 ,p_calculate_acctd_flag => l_calculate_acctd_flag
144729 ,p_calculate_g_l_flag => l_calculate_g_l_flag
144730 ,p_actual_flag => l_actual_flag
144731 ,p_balance_type_code => l_balance_type_code
144732 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
144733
144734 , p_source_4 => l_array_source_4(Idx)
144735 , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
144736 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
144737 , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
144738 , p_source_11 => l_array_source_11(Idx)
144739 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
144740 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
144741 , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
144742 , p_source_15 => l_array_source_15(Idx)
144743 , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
144744 , p_source_18 => l_array_source_18(Idx)
144745 , p_source_19 => l_array_source_19(Idx)
144746 , p_source_20 => l_array_source_20(Idx)
144747 , p_source_21 => l_array_source_21(Idx)
144748 , p_source_22 => l_array_source_22(Idx)
144749 , p_source_24 => l_array_source_24(Idx)
144750 , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
144751 , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
144752 , p_source_29 => g_array_event(l_event_id).array_value_num('source_29')
144753 , p_source_30 => g_array_event(l_event_id).array_value_num('source_30')
144754 , p_source_31 => g_array_event(l_event_id).array_value_num('source_31')
144755 );
144756 If(l_balance_type_code = 'A') THEN
144757 l_actual_gain_loss_ref := l_gain_or_loss_ref;
144758 END IF;
144759
144760 --
144761
144762 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
144763 -- or secondary ledger that has different currency with primary
144764 -- or alc that is calculated by sla
144765 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
144766 (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'))
144767
144768 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
144769 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
144770 AND (l_actual_flag = 'A')) THEN
144771 XLA_AE_LINES_PKG.CreateGainOrLossLines(
144772 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
144773 ,p_application_id => p_application_id
144774 ,p_amb_context_code => 'DEFAULT'
144775 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
144776 ,p_event_class_code => C_EVENT_CLASS_CODE
144777 ,p_event_type_code => C_EVENT_TYPE_CODE
144778
144779 ,p_gain_ccid => -1
144780 ,p_loss_ccid => -1
144781
144782 ,p_actual_flag => l_actual_flag
144783 ,p_enc_flag => null
144784 ,p_actual_g_l_ref => l_actual_gain_loss_ref
144785 ,p_enc_g_l_ref => null
144786 );
144787 END IF;
144788 END IF;
144789 END IF;
144790
144791 ELSE
144792 --
144793 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
144794 --
144795 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
144796 trace
144797 (p_msg => 'Trancaction revesal option is Y'
144798 ,p_level => C_LEVEL_STATEMENT
144799 ,p_module => l_log_module);
144800 END IF;
144801 END IF;
144802
144803 END LOOP;
144804 l_result := XLA_AE_LINES_PKG.InsertLines ;
144805 end loop;
144806 close line_cur;
144807
144808
144809 --
144810 -- insert headers into xla_ae_headers_gt table
144811 --
144812 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
144813
144814 -- insert into errors table here.
144815
144816 END LOOP;
144817
144818 --
144819 -- 4865292
144820 --
144821 -- Compare g_hdr_extract_count with event count in
144822 -- CreateHeadersAndLines.
144823 --
144824 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
144825
144826 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
144827 trace (p_msg => '# rows extracted from header extract objects '
144828 || ' (running total): '
144829 || g_hdr_extract_count
144830 ,p_level => C_LEVEL_STATEMENT
144831 ,p_module => l_log_module);
144832 END IF;
144833
144834 CLOSE header_cur;
144835 --
144836
144837 --
144838 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
144839 trace
144840 (p_msg => 'END of EventClass_254'
144841 ,p_level => C_LEVEL_PROCEDURE
144842 ,p_module => l_log_module);
144843 END IF;
144844 --
144845 RETURN l_result;
144846 EXCEPTION
144847 WHEN xla_exceptions_pkg.application_exception THEN
144848
144849 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
144850
144851
144852 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
144853
144854 RAISE;
144855
144856 WHEN NO_DATA_FOUND THEN
144857
144858 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
144859 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
144860
144861 FOR header_record IN header_cur
144862 LOOP
144863 l_array_header_events(header_record.event_id) := header_record.event_id;
144864 END LOOP;
144865
144866 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
144867 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
144868
144869 fnd_file.put_line(fnd_file.LOG, ' ');
144870 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
144871 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
144872 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
144873
144874 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
144875 LOOP
144876 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
144877 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
144878 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
144879 END IF;
144880 END LOOP;
144881
144882 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
144883 fnd_file.put_line(fnd_file.LOG, ' ');
144884
144885
144886 xla_exceptions_pkg.raise_message
144887 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_254');
144888
144889
144890 WHEN OTHERS THEN
144891 xla_exceptions_pkg.raise_message
144892 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_254');
144893 END EventClass_254;
144894 --
144895
144896 ---------------------------------------
144897 --
144898 -- PRIVATE PROCEDURE
144899 -- insert_sources_255
144900 --
144901 ----------------------------------------
144902 --
144903 PROCEDURE insert_sources_255(
144904 p_target_ledger_id IN NUMBER
144905 , p_language IN VARCHAR2
144906 , p_sla_ledger_id IN NUMBER
144907 , p_pad_start_date IN DATE
144908 , p_pad_end_date IN DATE
144909 )
144910 IS
144911
144912 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'DIR_INTERORG_SHIP_ALL';
144913 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'DIR_INTERORG_SHIP';
144914 p_apps_owner VARCHAR2(30);
144915 l_log_module VARCHAR2(240);
144916 BEGIN
144917 IF g_log_enabled THEN
144918 l_log_module := C_DEFAULT_MODULE||'.insert_sources_255';
144919 END IF;
144920 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
144921
144922 trace
144923 (p_msg => 'BEGIN of insert_sources_255'
144924 ,p_level => C_LEVEL_PROCEDURE
144925 ,p_module => l_log_module);
144926
144927 END IF;
144928
144929 -- select APPS owner
144930 SELECT oracle_username
144931 INTO p_apps_owner
144932 FROM fnd_oracle_userid
144933 WHERE read_only_flag = 'U'
144934 ;
144935
144936 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
144937 trace
144938 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
144939 ' - p_language = '||p_language||
144940 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
144941 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
144942 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
144943 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
144944 ,p_level => C_LEVEL_STATEMENT
144945 ,p_module => l_log_module);
144946 END IF;
144947
144948
144949 --
144950 INSERT INTO xla_diag_sources --hdr2
144951 (
144952 event_id
144953 , ledger_id
144954 , sla_ledger_id
144955 , description_language
144956 , object_name
144957 , object_type_code
144958 , line_number
144959 , source_application_id
144960 , source_type_code
144961 , source_code
144962 , source_value
144963 , source_meaning
144964 , created_by
144965 , creation_date
144966 , last_update_date
144967 , last_updated_by
144968 , last_update_login
144969 , program_update_date
144970 , program_application_id
144971 , program_id
144972 , request_id
144973 )
144974 SELECT
144975 event_id
144976 , p_target_ledger_id
144977 , p_sla_ledger_id
144978 , p_language
144979 , object_name
144980 , object_type_code
144981 , line_number
144982 , source_application_id
144983 , source_type_code
144984 , source_code
144985 , SUBSTR(source_value ,1,1996)
144986 , SUBSTR(source_meaning ,1,200)
144987 , xla_environment_pkg.g_Usr_Id
144988 , TRUNC(SYSDATE)
144989 , TRUNC(SYSDATE)
144990 , xla_environment_pkg.g_Usr_Id
144991 , xla_environment_pkg.g_Login_Id
144992 , TRUNC(SYSDATE)
144993 , xla_environment_pkg.g_Prog_Appl_Id
144994 , xla_environment_pkg.g_Prog_Id
144995 , xla_environment_pkg.g_Req_Id
144996 FROM (
144997 SELECT xet.event_id event_id
144998 , 0 line_number
144999 , CASE r
145000 WHEN 1 THEN 'CST_XLA_INV_HEADERS_V'
145001 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V'
145002
145003 ELSE null
145004 END object_name
145005 , CASE r
145006 WHEN 1 THEN 'HEADER'
145007 WHEN 2 THEN 'HEADER'
145008
145009 ELSE null
145010 END object_type_code
145011 , CASE r
145012 WHEN 1 THEN '707'
145013 WHEN 2 THEN '707'
145014
145015 ELSE null
145016 END source_application_id
145017 , 'S' source_type_code
145018 , CASE r
145019 WHEN 1 THEN 'DISTRIBUTION_TYPE'
145020 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR'
145021
145022 ELSE null
145023 END source_code
145024 , CASE r
145025 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
145026 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
145027
145028 ELSE null
145029 END source_value
145030 , CASE r
145031 WHEN 1 THEN fvl12.meaning
145032 WHEN 2 THEN fvl38.meaning
145033
145034 ELSE null
145035 END source_meaning
145036 FROM xla_events_gt xet
145037 , CST_XLA_INV_HEADERS_V h1
145038 , fnd_lookup_values fvl12
145039 , fnd_lookup_values fvl38
145040 ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
145041 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
145042 AND xet.event_class_code = C_EVENT_CLASS_CODE
145043 AND h1.event_id = xet.event_id
145044 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
145045 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
145046 AND fvl12.view_application_id(+) = 700
145047 AND fvl12.language(+) = USERENV('LANG')
145048 AND fvl38.lookup_type(+) = 'YES_NO'
145049 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
145050 AND fvl38.view_application_id(+) = 0
145051 AND fvl38.language(+) = USERENV('LANG')
145052
145053 )
145054 ;
145055 --
145056 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
145057
145058 trace
145059 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
145060 ,p_level => C_LEVEL_STATEMENT
145061 ,p_module => l_log_module);
145062
145063 END IF;
145064 --
145065
145066
145067
145068 --
145069 INSERT INTO xla_diag_sources --line2
145070 (
145071 event_id
145072 , ledger_id
145073 , sla_ledger_id
145074 , description_language
145075 , object_name
145076 , object_type_code
145077 , line_number
145078 , source_application_id
145079 , source_type_code
145080 , source_code
145081 , source_value
145082 , source_meaning
145083 , created_by
145084 , creation_date
145085 , last_update_date
145086 , last_updated_by
145087 , last_update_login
145088 , program_update_date
145089 , program_application_id
145090 , program_id
145091 , request_id
145092 )
145093 SELECT event_id
145094 , p_target_ledger_id
145095 , p_sla_ledger_id
145096 , p_language
145097 , object_name
145098 , object_type_code
145099 , line_number
145100 , source_application_id
145101 , source_type_code
145102 , source_code
145103 , SUBSTR(source_value,1,1996)
145104 , SUBSTR(source_meaning ,1,200)
145105 , xla_environment_pkg.g_Usr_Id
145106 , TRUNC(SYSDATE)
145107 , TRUNC(SYSDATE)
145108 , xla_environment_pkg.g_Usr_Id
145109 , xla_environment_pkg.g_Login_Id
145110 , TRUNC(SYSDATE)
145111 , xla_environment_pkg.g_Prog_Appl_Id
145112 , xla_environment_pkg.g_Prog_Id
145113 , xla_environment_pkg.g_Req_Id
145114 FROM (
145115 SELECT xet.event_id event_id
145116 , l2.line_number line_number
145117 , CASE r
145118 WHEN 1 THEN 'CST_XLA_INV_LINES_V'
145119 WHEN 2 THEN 'CST_XLA_INV_LINES_V'
145120 WHEN 3 THEN 'CST_XLA_INV_LINES_V'
145121 WHEN 4 THEN 'CST_XLA_INV_LINES_V'
145122 WHEN 5 THEN 'CST_XLA_INV_LINES_V'
145123 WHEN 6 THEN 'CST_XLA_INV_LINES_V'
145124 WHEN 7 THEN 'CST_XLA_INV_LINES_V'
145125 WHEN 8 THEN 'CST_XLA_INV_LINES_V'
145126 WHEN 9 THEN 'CST_XLA_INV_LINES_V'
145127
145128 ELSE null
145129 END object_name
145130 , CASE r
145131 WHEN 1 THEN 'LINE'
145132 WHEN 2 THEN 'LINE'
145133 WHEN 3 THEN 'LINE'
145134 WHEN 4 THEN 'LINE'
145135 WHEN 5 THEN 'LINE'
145136 WHEN 6 THEN 'LINE'
145137 WHEN 7 THEN 'LINE'
145138 WHEN 8 THEN 'LINE'
145139 WHEN 9 THEN 'LINE'
145140
145141 ELSE null
145142 END object_type_code
145143 , CASE r
145144 WHEN 1 THEN '707'
145145 WHEN 2 THEN '707'
145146 WHEN 3 THEN '707'
145147 WHEN 4 THEN '707'
145148 WHEN 5 THEN '707'
145149 WHEN 6 THEN '707'
145150 WHEN 7 THEN '707'
145151 WHEN 8 THEN '707'
145152 WHEN 9 THEN '707'
145153
145154 ELSE null
145155 END source_application_id
145156 , 'S' source_type_code
145157 , CASE r
145158 WHEN 1 THEN 'CODE_COMBINATION_ID'
145159 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER'
145160 WHEN 3 THEN 'CURRENCY_CODE'
145161 WHEN 4 THEN 'ENTERED_AMOUNT'
145162 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE'
145163 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE'
145164 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE'
145165 WHEN 8 THEN 'ACCOUNTED_AMOUNT'
145166 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE'
145167
145168 ELSE null
145169 END source_code
145170 , CASE r
145171 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
145172 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
145173 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
145174 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
145175 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
145176 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
145177 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
145178 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
145179 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
145180
145181 ELSE null
145182 END source_value
145183 , null source_meaning
145184 FROM xla_events_gt xet
145185 , CST_XLA_INV_LINES_V l2
145186 , (select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
145187 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
145188 AND xet.event_class_code = C_EVENT_CLASS_CODE
145189 AND l2.event_id = xet.event_id
145190
145191 )
145192 ;
145193 --
145194 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
145195
145196 trace
145197 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
145198 ,p_level => C_LEVEL_STATEMENT
145199 ,p_module => l_log_module);
145200
145201 END IF;
145202
145203
145204 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
145205 trace
145206 (p_msg => 'END of insert_sources_255'
145207 ,p_level => C_LEVEL_PROCEDURE
145208 ,p_module => l_log_module);
145209 END IF;
145210 EXCEPTION
145211 WHEN xla_exceptions_pkg.application_exception THEN
145212 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
145213 trace
145214 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
145215 ,p_level => C_LEVEL_EXCEPTION
145216 ,p_module => l_log_module);
145217 END IF;
145218 RAISE;
145219 WHEN OTHERS THEN
145220 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
145221 trace
145222 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
145223 ,p_level => C_LEVEL_EXCEPTION
145224 ,p_module => l_log_module);
145225 END IF;
145226 xla_exceptions_pkg.raise_message
145227 (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_255');
145228 END insert_sources_255;
145229 --
145230
145231 ---------------------------------------
145232 --
145233 -- PRIVATE FUNCTION
145234 -- EventClass_255
145235 --
145236 ----------------------------------------
145237 --
145238 FUNCTION EventClass_255
145239 (p_application_id IN NUMBER
145240 ,p_base_ledger_id IN NUMBER
145241 ,p_target_ledger_id IN NUMBER
145242 ,p_language IN VARCHAR2
145243 ,p_currency_code IN VARCHAR2
145244 ,p_sla_ledger_id IN NUMBER
145245 ,p_pad_start_date IN DATE
145246 ,p_pad_end_date IN DATE
145247 ,p_primary_ledger_id IN NUMBER)
145248 RETURN BOOLEAN IS
145249 --
145250 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'DIR_INTERORG_SHIP_ALL';
145251 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'DIR_INTERORG_SHIP';
145252
145253 l_calculate_acctd_flag VARCHAR2(1) :='N';
145254 l_calculate_g_l_flag VARCHAR2(1) :='N';
145255 --
145256 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
145257 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
145258 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
145259 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
145260 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
145261 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
145262 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
145263 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
145264 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
145265 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
145266 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
145267 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
145268 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
145269 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
145270 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
145271 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
145272 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
145273 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
145274 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
145275 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
145276 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
145277 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
145278 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
145279 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
145280 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
145281 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
145282
145283 l_event_id NUMBER;
145284 l_previous_event_id NUMBER;
145285 l_first_event_id NUMBER;
145286 l_last_event_id NUMBER;
145287
145288 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
145289 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
145290 --
145291 --
145292 l_result BOOLEAN := TRUE;
145293 l_rows NUMBER := 1000;
145294 l_event_type_name VARCHAR2(80) := 'All';
145295 l_event_class_name VARCHAR2(80) := 'Direct Interorg Shipment';
145296 l_description VARCHAR2(4000);
145297 l_transaction_reversal NUMBER;
145298 l_ae_header_id NUMBER;
145299 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
145300 l_log_module VARCHAR2(240);
145301 --
145302 l_acct_reversal_source VARCHAR2(30);
145303 l_trx_reversal_source VARCHAR2(30);
145304
145305 l_continue_with_lines BOOLEAN := TRUE;
145306 --
145307 l_acc_rev_gl_date_source DATE; -- 4262811
145308 --
145309 type t_array_event_id is table of number index by binary_integer;
145310
145311 l_rec_array_event t_rec_array_event;
145312 l_null_rec_array_event t_rec_array_event;
145313 l_array_ae_header_id xla_number_array_type;
145314 l_actual_flag VARCHAR2(1) := NULL;
145315 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
145316 l_balance_type_code VARCHAR2(1) :=NULL;
145317 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
145318
145319 --
145320 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
145321 --
145322
145323 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
145324 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
145325
145326 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
145327 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
145328 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
145329 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
145330 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
145331 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
145332 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
145333 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
145334 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
145335
145336 l_array_source_12 t_array_source_12;
145337 l_array_source_12_meaning t_array_lookup_meaning;
145338 l_array_source_38 t_array_source_38;
145339 l_array_source_38_meaning t_array_lookup_meaning;
145340
145341 l_array_source_4 t_array_source_4;
145342 l_array_source_11 t_array_source_11;
145343 l_array_source_15 t_array_source_15;
145344 l_array_source_18 t_array_source_18;
145345 l_array_source_19 t_array_source_19;
145346 l_array_source_20 t_array_source_20;
145347 l_array_source_21 t_array_source_21;
145348 l_array_source_22 t_array_source_22;
145349 l_array_source_24 t_array_source_24;
145350
145351 --
145352 CURSOR header_cur
145353 IS
145354 SELECT /*+ leading(xet) cardinality(xet,1) */
145355 -- Event Class Code: DIR_INTERORG_SHIP
145356 xet.entity_id
145357 ,xet.legal_entity_id
145358 ,xet.entity_code
145359 ,xet.transaction_number
145360 ,xet.event_id
145361 ,xet.event_class_code
145362 ,xet.event_type_code
145363 ,xet.event_number
145364 ,xet.event_date
145365 ,xet.transaction_date
145366 ,xet.reference_num_1
145367 ,xet.reference_num_2
145368 ,xet.reference_num_3
145369 ,xet.reference_num_4
145370 ,xet.reference_char_1
145371 ,xet.reference_char_2
145372 ,xet.reference_char_3
145373 ,xet.reference_char_4
145374 ,xet.reference_date_1
145375 ,xet.reference_date_2
145376 ,xet.reference_date_3
145377 ,xet.reference_date_4
145378 ,xet.event_created_by
145379 ,xet.budgetary_control_flag
145380 , h1.DISTRIBUTION_TYPE source_12
145381 , fvl12.meaning source_12_meaning
145382 , h1.TRANSFER_TO_GL_INDICATOR source_38
145383 , fvl38.meaning source_38_meaning
145384 FROM xla_events_gt xet
145385 , CST_XLA_INV_HEADERS_V h1
145386 , fnd_lookup_values fvl12
145387 , fnd_lookup_values fvl38
145388 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
145389 and xet.event_class_code = C_EVENT_CLASS_CODE
145390 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
145391 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
145392 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
145393 AND fvl12.view_application_id(+) = 700
145394 AND fvl12.language(+) = USERENV('LANG')
145395 AND fvl38.lookup_type(+) = 'YES_NO'
145396 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
145397 AND fvl38.view_application_id(+) = 0
145398 AND fvl38.language(+) = USERENV('LANG')
145399
145400 ORDER BY event_id
145401 ;
145402
145403
145404 --
145405 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
145406 IS
145407 SELECT /*+ leading(xet) cardinality(xet,1) */
145408 -- Event Class Code: DIR_INTERORG_SHIP
145409 xet.entity_id
145410 ,xet.legal_entity_id
145411 ,xet.entity_code
145412 ,xet.transaction_number
145413 ,xet.event_id
145414 ,xet.event_class_code
145415 ,xet.event_type_code
145416 ,xet.event_number
145417 ,xet.event_date
145418 ,xet.transaction_date
145419 ,xet.reference_num_1
145420 ,xet.reference_num_2
145421 ,xet.reference_num_3
145422 ,xet.reference_num_4
145423 ,xet.reference_char_1
145424 ,xet.reference_char_2
145425 ,xet.reference_char_3
145426 ,xet.reference_char_4
145427 ,xet.reference_date_1
145428 ,xet.reference_date_2
145429 ,xet.reference_date_3
145430 ,xet.reference_date_4
145431 ,xet.event_created_by
145432 ,xet.budgetary_control_flag
145433 , l2.LINE_NUMBER
145434 , l2.CODE_COMBINATION_ID source_4
145435 , l2.DISTRIBUTION_IDENTIFIER source_11
145436 , l2.CURRENCY_CODE source_15
145437 , l2.ENTERED_AMOUNT source_18
145438 , l2.CURRENCY_CONVERSION_DATE source_19
145439 , l2.CURRENCY_CONVERSION_RATE source_20
145440 , l2.CURRENCY_CONVERSION_TYPE source_21
145441 , l2.ACCOUNTED_AMOUNT source_22
145442 , l2.ACCOUNTING_LINE_TYPE_CODE source_24
145443 FROM xla_events_gt xet
145444 , CST_XLA_INV_LINES_V l2
145445 WHERE xet.event_id between x_first_event_id and x_last_event_id
145446 and xet.event_date between p_pad_start_date and p_pad_end_date
145447 and xet.event_class_code = C_EVENT_CLASS_CODE
145448 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
145449 ;
145450
145451 --
145452 BEGIN
145453 IF g_log_enabled THEN
145454 l_log_module := C_DEFAULT_MODULE||'.EventClass_255';
145455 END IF;
145456 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
145457 trace
145458 (p_msg => 'BEGIN of EventClass_255'
145459 ,p_level => C_LEVEL_PROCEDURE
145460 ,p_module => l_log_module);
145461 END IF;
145462
145463 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
145464 trace
145465 (p_msg => 'p_application_id = '||p_application_id||
145466 ' - p_base_ledger_id = '||p_base_ledger_id||
145467 ' - p_target_ledger_id = '||p_target_ledger_id||
145468 ' - p_language = '||p_language||
145469 ' - p_currency_code = '||p_currency_code||
145470 ' - p_sla_ledger_id = '||p_sla_ledger_id
145471 ,p_level => C_LEVEL_STATEMENT
145472 ,p_module => l_log_module);
145473 END IF;
145474 --
145475 -- initialze arrays
145476 --
145477 g_array_event.DELETE;
145478 l_rec_array_event := l_null_rec_array_event;
145479 --
145480 --------------------------------------
145481 -- 4262811 Initialze MPA Line Number
145482 --------------------------------------
145483 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
145484
145485 --
145486
145487 --
145488 OPEN header_cur;
145489 --
145490 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
145491 trace
145492 (p_msg => 'SQL - FETCH header_cur'
145493 ,p_level => C_LEVEL_STATEMENT
145494 ,p_module => l_log_module);
145495 END IF;
145496 --
145497 LOOP
145498 FETCH header_cur BULK COLLECT INTO
145499 l_array_entity_id
145500 , l_array_legal_entity_id
145501 , l_array_entity_code
145502 , l_array_transaction_num
145503 , l_array_event_id
145504 , l_array_class_code
145505 , l_array_event_type
145506 , l_array_event_number
145507 , l_array_event_date
145508 , l_array_transaction_date
145509 , l_array_reference_num_1
145510 , l_array_reference_num_2
145511 , l_array_reference_num_3
145512 , l_array_reference_num_4
145513 , l_array_reference_char_1
145514 , l_array_reference_char_2
145515 , l_array_reference_char_3
145516 , l_array_reference_char_4
145517 , l_array_reference_date_1
145518 , l_array_reference_date_2
145519 , l_array_reference_date_3
145520 , l_array_reference_date_4
145521 , l_array_event_created_by
145522 , l_array_budgetary_control_flag
145523 , l_array_source_12
145524 , l_array_source_12_meaning
145525 , l_array_source_38
145526 , l_array_source_38_meaning
145527 LIMIT l_rows;
145528 --
145529 IF (C_LEVEL_EVENT >= g_log_level) THEN
145530 trace
145531 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
145532 ,p_level => C_LEVEL_EVENT
145533 ,p_module => l_log_module);
145534 END IF;
145535 --
145536 EXIT WHEN l_array_entity_id.COUNT = 0;
145537
145538 -- initialize arrays
145539 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
145540 XLA_AE_LINES_PKG.g_rec_lines := NULL;
145541
145542 --
145543 -- Bug 4458708
145544 --
145545 XLA_AE_LINES_PKG.g_LineNumber := 0;
145546
145547
145548 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
145549 g_last_hdr_idx := l_array_event_id.LAST;
145550 --
145551 -- loop for the headers. Each iteration is for each header extract row
145552 -- fetched in header cursor
145553 --
145554 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
145555
145556 --
145557 -- set event info as cache for other routines to refer event attributes
145558 --
145559 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
145560 (p_application_id => p_application_id
145561 ,p_primary_ledger_id => p_primary_ledger_id
145562 ,p_base_ledger_id => p_base_ledger_id
145563 ,p_target_ledger_id => p_target_ledger_id
145564 ,p_entity_id => l_array_entity_id(hdr_idx)
145565 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
145566 ,p_entity_code => l_array_entity_code(hdr_idx)
145567 ,p_transaction_num => l_array_transaction_num(hdr_idx)
145568 ,p_event_id => l_array_event_id(hdr_idx)
145569 ,p_event_class_code => l_array_class_code(hdr_idx)
145570 ,p_event_type_code => l_array_event_type(hdr_idx)
145571 ,p_event_number => l_array_event_number(hdr_idx)
145572 ,p_event_date => l_array_event_date(hdr_idx)
145573 ,p_transaction_date => l_array_transaction_date(hdr_idx)
145574 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
145575 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
145576 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
145577 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
145578 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
145579 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
145580 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
145581 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
145582 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
145583 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
145584 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
145585 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
145586 ,p_event_created_by => l_array_event_created_by(hdr_idx)
145587 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
145588
145589 --
145590 -- set the status of entry to C_VALID (0)
145591 --
145592 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
145593
145594 --
145595 -- initialize a row for ae header
145596 --
145597 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
145598
145599 l_event_id := l_array_event_id(hdr_idx);
145600
145601 --
145602 -- storing the hdr_idx for event. May be used by line cursor.
145603 --
145604 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
145605
145606 --
145607 -- store sources from header extract. This can be improved to
145608 -- store only those sources from header extract that may be used in lines
145609 --
145610
145611 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
145612 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
145613 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
145614 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
145615
145616 --
145617 -- initilaize the status of ae headers for diffrent balance types
145618 -- the status is initialised to C_NOT_CREATED (2)
145619 --
145620 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
145621 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
145622 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
145623
145624 --
145625 -- call api to validate and store accounting attributes for header
145626 --
145627
145628 ------------------------------------------------------------
145629 -- Accrual Reversal : to get date for Standard Source (NONE)
145630 ------------------------------------------------------------
145631 l_acc_rev_gl_date_source := NULL;
145632
145633 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
145634 l_rec_acct_attrs.array_date_value(1) :=
145635 xla_ae_sources_pkg.GetSystemSourceDate(
145636 p_source_code => 'XLA_REFERENCE_DATE_1'
145637 , p_source_type_code => 'Y'
145638 , p_source_application_id => 602
145639 );
145640 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_TRANSFER_FLAG';
145641 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
145642
145643
145644 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
145645
145646 XLA_AE_HEADER_PKG.SetJeCategoryName;
145647
145648 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
145649 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
145650 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
145651 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
145652 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
145653
145654
145655 -- No header level analytical criteria
145656
145657 --
145658 --accounting attribute enhancement, bug 3612931
145659 --
145660 l_trx_reversal_source := SUBSTR(NULL, 1,30);
145661
145662 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
145663 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
145664
145665 xla_accounting_err_pkg.build_message
145666 (p_appli_s_name => 'XLA'
145667 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
145668 ,p_token_1 => 'ACCT_ATTR_NAME'
145669 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
145670 ,p_token_2 => 'PRODUCT_NAME'
145671 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
145672 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
145673 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
145674 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
145675
145676 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
145677 --
145678 -- following sets the accounting attributes needed to reverse
145679 -- accounting for a distributeion
145680 --
145681 xla_ae_lines_pkg.SetTrxReversalAttrs
145682 (p_event_id => l_event_id
145683 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
145684 ,p_trx_reversal_source => l_trx_reversal_source);
145685
145686 END IF;
145687
145688
145689 ----------------------------------------------------------------
145690 -- 4262811 - update the header statuses to invalid in need be
145691 ----------------------------------------------------------------
145692 --
145693 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
145694
145695
145696 -----------------------------------------------
145697 -- No accrual reversal for the event class/type
145698 -----------------------------------------------
145699 ----------------------------------------------------------------
145700
145701 --
145702 -- this ends the header loop iteration for one bulk fetch
145703 --
145704 END LOOP;
145705
145706 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
145707 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
145708
145709 --
145710 -- insert dummy rows into lines gt table that were created due to
145711 -- transaction reversals
145712 --
145713 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
145714 l_result := XLA_AE_LINES_PKG.InsertLines;
145715 END IF;
145716
145717 --
145718 -- reset the temp_line_num for each set of events fetched from header
145719 -- cursor rather than doing it for each new event in line cursor
145720 -- Bug 3939231
145721 --
145722 xla_ae_lines_pkg.g_temp_line_num := 0;
145723
145724
145725
145726 --
145727 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
145728 --
145729 --
145730 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
145731
145732 trace
145733 (p_msg => 'SQL - FETCH line_cur'
145734 ,p_level => C_LEVEL_STATEMENT
145735 ,p_module => l_log_module);
145736
145737 END IF;
145738 --
145739 --
145740 LOOP
145741 --
145742 FETCH line_cur BULK COLLECT INTO
145743 l_array_entity_id
145744 , l_array_legal_entity_id
145745 , l_array_entity_code
145746 , l_array_transaction_num
145747 , l_array_event_id
145748 , l_array_class_code
145749 , l_array_event_type
145750 , l_array_event_number
145751 , l_array_event_date
145752 , l_array_transaction_date
145753 , l_array_reference_num_1
145754 , l_array_reference_num_2
145755 , l_array_reference_num_3
145756 , l_array_reference_num_4
145757 , l_array_reference_char_1
145758 , l_array_reference_char_2
145759 , l_array_reference_char_3
145760 , l_array_reference_char_4
145761 , l_array_reference_date_1
145762 , l_array_reference_date_2
145763 , l_array_reference_date_3
145764 , l_array_reference_date_4
145765 , l_array_event_created_by
145766 , l_array_budgetary_control_flag
145767 , l_array_extract_line_num
145768 , l_array_source_4
145769 , l_array_source_11
145770 , l_array_source_15
145771 , l_array_source_18
145772 , l_array_source_19
145773 , l_array_source_20
145774 , l_array_source_21
145775 , l_array_source_22
145776 , l_array_source_24
145777 LIMIT l_rows;
145778
145779 --
145780 IF (C_LEVEL_EVENT >= g_log_level) THEN
145781 trace
145782 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
145783 ,p_level => C_LEVEL_EVENT
145784 ,p_module => l_log_module);
145785 END IF;
145786 --
145787 EXIT WHEN l_array_entity_id.count = 0;
145788
145789 XLA_AE_LINES_PKG.g_rec_lines := null;
145790
145791 --
145792 -- Bug 4458708
145793 --
145794 XLA_AE_LINES_PKG.g_LineNumber := 0;
145795 --
145796 --
145797
145798 FOR Idx IN 1..l_array_event_id.count LOOP
145799 --
145800 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
145801 --
145802 l_event_id := l_array_event_id(idx); -- 5648433
145803
145804 --
145805 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
145806 --
145807
145808 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
145809 (g_array_event(l_event_id).array_value_num('header_index'))
145810 ,'N'
145811 ) <> 'Y'
145812 THEN
145813 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
145814 trace
145815 (p_msg => 'Trancaction revesal option is not Y '
145816 ,p_level => C_LEVEL_STATEMENT
145817 ,p_module => l_log_module);
145818 END IF;
145819
145820 --
145821 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
145822 --
145823 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
145824 --
145825 -- set event info as cache for other routines to refer event attributes
145826 --
145827
145828 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
145829 l_previous_event_id := l_event_id;
145830
145831 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
145832 (p_application_id => p_application_id
145833 ,p_primary_ledger_id => p_primary_ledger_id
145834 ,p_base_ledger_id => p_base_ledger_id
145835 ,p_target_ledger_id => p_target_ledger_id
145836 ,p_entity_id => l_array_entity_id(Idx)
145837 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
145838 ,p_entity_code => l_array_entity_code(Idx)
145839 ,p_transaction_num => l_array_transaction_num(Idx)
145840 ,p_event_id => l_array_event_id(Idx)
145841 ,p_event_class_code => l_array_class_code(Idx)
145842 ,p_event_type_code => l_array_event_type(Idx)
145843 ,p_event_number => l_array_event_number(Idx)
145844 ,p_event_date => l_array_event_date(Idx)
145845 ,p_transaction_date => l_array_transaction_date(Idx)
145846 ,p_reference_num_1 => l_array_reference_num_1(Idx)
145847 ,p_reference_num_2 => l_array_reference_num_2(Idx)
145848 ,p_reference_num_3 => l_array_reference_num_3(Idx)
145849 ,p_reference_num_4 => l_array_reference_num_4(Idx)
145850 ,p_reference_char_1 => l_array_reference_char_1(Idx)
145851 ,p_reference_char_2 => l_array_reference_char_2(Idx)
145852 ,p_reference_char_3 => l_array_reference_char_3(Idx)
145853 ,p_reference_char_4 => l_array_reference_char_4(Idx)
145854 ,p_reference_date_1 => l_array_reference_date_1(Idx)
145855 ,p_reference_date_2 => l_array_reference_date_2(Idx)
145856 ,p_reference_date_3 => l_array_reference_date_3(Idx)
145857 ,p_reference_date_4 => l_array_reference_date_4(Idx)
145858 ,p_event_created_by => l_array_event_created_by(Idx)
145859 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
145860 --
145861 END IF;
145862
145863
145864
145865 --
145866 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
145867
145868 l_acct_reversal_source := SUBSTR(NULL, 1,30);
145869
145870 IF l_continue_with_lines THEN
145871 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
145872 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
145873
145874 xla_accounting_err_pkg.build_message
145875 (p_appli_s_name => 'XLA'
145876 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
145877 ,p_token_1 => 'LINE_NUMBER'
145878 ,p_value_1 => l_array_extract_line_num(Idx)
145879 ,p_token_2 => 'PRODUCT_NAME'
145880 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
145881 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
145882 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
145883 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
145884
145885 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
145886 --
145887 -- following sets the accounting attributes needed to reverse
145888 -- accounting for a distributeion
145889 --
145890
145891 --
145892 -- 5217187
145893 --
145894 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
145895 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
145896 g_array_event(l_event_id).array_value_num('header_index'));
145897 --
145898 --
145899
145900 -- No reversal code generated
145901
145902 xla_ae_lines_pkg.SetAcctReversalAttrs
145903 (p_event_id => l_event_id
145904 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
145905 ,p_calculate_acctd_flag => l_calculate_acctd_flag
145906 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
145907 END IF;
145908
145909 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
145910 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
145911
145912 --
145913 AcctLineType_60 (
145914 p_application_id => p_application_id
145915 ,p_event_id => l_event_id
145916 ,p_calculate_acctd_flag => l_calculate_acctd_flag
145917 ,p_calculate_g_l_flag => l_calculate_g_l_flag
145918 ,p_actual_flag => l_actual_flag
145919 ,p_balance_type_code => l_balance_type_code
145920 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
145921
145922 , p_source_4 => l_array_source_4(Idx)
145923 , p_source_11 => l_array_source_11(Idx)
145924 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
145925 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
145926 , p_source_15 => l_array_source_15(Idx)
145927 , p_source_18 => l_array_source_18(Idx)
145928 , p_source_19 => l_array_source_19(Idx)
145929 , p_source_20 => l_array_source_20(Idx)
145930 , p_source_21 => l_array_source_21(Idx)
145931 , p_source_22 => l_array_source_22(Idx)
145932 , p_source_24 => l_array_source_24(Idx)
145933 );
145934 If(l_balance_type_code = 'A') THEN
145935 l_actual_gain_loss_ref := l_gain_or_loss_ref;
145936 END IF;
145937
145938 --
145939
145940
145941 --
145942 AcctLineType_78 (
145943 p_application_id => p_application_id
145944 ,p_event_id => l_event_id
145945 ,p_calculate_acctd_flag => l_calculate_acctd_flag
145946 ,p_calculate_g_l_flag => l_calculate_g_l_flag
145947 ,p_actual_flag => l_actual_flag
145948 ,p_balance_type_code => l_balance_type_code
145949 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
145950
145951 , p_source_4 => l_array_source_4(Idx)
145952 , p_source_11 => l_array_source_11(Idx)
145953 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
145954 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
145955 , p_source_15 => l_array_source_15(Idx)
145956 , p_source_18 => l_array_source_18(Idx)
145957 , p_source_19 => l_array_source_19(Idx)
145958 , p_source_20 => l_array_source_20(Idx)
145959 , p_source_21 => l_array_source_21(Idx)
145960 , p_source_22 => l_array_source_22(Idx)
145961 , p_source_24 => l_array_source_24(Idx)
145962 );
145963 If(l_balance_type_code = 'A') THEN
145964 l_actual_gain_loss_ref := l_gain_or_loss_ref;
145965 END IF;
145966
145967 --
145968
145969
145970 --
145971 AcctLineType_84 (
145972 p_application_id => p_application_id
145973 ,p_event_id => l_event_id
145974 ,p_calculate_acctd_flag => l_calculate_acctd_flag
145975 ,p_calculate_g_l_flag => l_calculate_g_l_flag
145976 ,p_actual_flag => l_actual_flag
145977 ,p_balance_type_code => l_balance_type_code
145978 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
145979
145980 , p_source_4 => l_array_source_4(Idx)
145981 , p_source_11 => l_array_source_11(Idx)
145982 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
145983 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
145984 , p_source_15 => l_array_source_15(Idx)
145985 , p_source_18 => l_array_source_18(Idx)
145986 , p_source_19 => l_array_source_19(Idx)
145987 , p_source_20 => l_array_source_20(Idx)
145988 , p_source_21 => l_array_source_21(Idx)
145989 , p_source_22 => l_array_source_22(Idx)
145990 , p_source_24 => l_array_source_24(Idx)
145991 );
145992 If(l_balance_type_code = 'A') THEN
145993 l_actual_gain_loss_ref := l_gain_or_loss_ref;
145994 END IF;
145995
145996 --
145997
145998
145999 --
146000 AcctLineType_93 (
146001 p_application_id => p_application_id
146002 ,p_event_id => l_event_id
146003 ,p_calculate_acctd_flag => l_calculate_acctd_flag
146004 ,p_calculate_g_l_flag => l_calculate_g_l_flag
146005 ,p_actual_flag => l_actual_flag
146006 ,p_balance_type_code => l_balance_type_code
146007 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
146008
146009 , p_source_4 => l_array_source_4(Idx)
146010 , p_source_11 => l_array_source_11(Idx)
146011 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
146012 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
146013 , p_source_15 => l_array_source_15(Idx)
146014 , p_source_18 => l_array_source_18(Idx)
146015 , p_source_19 => l_array_source_19(Idx)
146016 , p_source_20 => l_array_source_20(Idx)
146017 , p_source_21 => l_array_source_21(Idx)
146018 , p_source_22 => l_array_source_22(Idx)
146019 , p_source_24 => l_array_source_24(Idx)
146020 );
146021 If(l_balance_type_code = 'A') THEN
146022 l_actual_gain_loss_ref := l_gain_or_loss_ref;
146023 END IF;
146024
146025 --
146026
146027
146028 --
146029 AcctLineType_116 (
146030 p_application_id => p_application_id
146031 ,p_event_id => l_event_id
146032 ,p_calculate_acctd_flag => l_calculate_acctd_flag
146033 ,p_calculate_g_l_flag => l_calculate_g_l_flag
146034 ,p_actual_flag => l_actual_flag
146035 ,p_balance_type_code => l_balance_type_code
146036 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
146037
146038 , p_source_4 => l_array_source_4(Idx)
146039 , p_source_11 => l_array_source_11(Idx)
146040 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
146041 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
146042 , p_source_15 => l_array_source_15(Idx)
146043 , p_source_18 => l_array_source_18(Idx)
146044 , p_source_19 => l_array_source_19(Idx)
146045 , p_source_20 => l_array_source_20(Idx)
146046 , p_source_21 => l_array_source_21(Idx)
146047 , p_source_22 => l_array_source_22(Idx)
146048 , p_source_24 => l_array_source_24(Idx)
146049 );
146050 If(l_balance_type_code = 'A') THEN
146051 l_actual_gain_loss_ref := l_gain_or_loss_ref;
146052 END IF;
146053
146054 --
146055
146056
146057 --
146058 AcctLineType_130 (
146059 p_application_id => p_application_id
146060 ,p_event_id => l_event_id
146061 ,p_calculate_acctd_flag => l_calculate_acctd_flag
146062 ,p_calculate_g_l_flag => l_calculate_g_l_flag
146063 ,p_actual_flag => l_actual_flag
146064 ,p_balance_type_code => l_balance_type_code
146065 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
146066
146067 , p_source_4 => l_array_source_4(Idx)
146068 , p_source_11 => l_array_source_11(Idx)
146069 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
146070 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
146071 , p_source_15 => l_array_source_15(Idx)
146072 , p_source_18 => l_array_source_18(Idx)
146073 , p_source_19 => l_array_source_19(Idx)
146074 , p_source_20 => l_array_source_20(Idx)
146075 , p_source_21 => l_array_source_21(Idx)
146076 , p_source_22 => l_array_source_22(Idx)
146077 , p_source_24 => l_array_source_24(Idx)
146078 );
146079 If(l_balance_type_code = 'A') THEN
146080 l_actual_gain_loss_ref := l_gain_or_loss_ref;
146081 END IF;
146082
146083 --
146084
146085
146086 --
146087 AcctLineType_164 (
146088 p_application_id => p_application_id
146089 ,p_event_id => l_event_id
146090 ,p_calculate_acctd_flag => l_calculate_acctd_flag
146091 ,p_calculate_g_l_flag => l_calculate_g_l_flag
146092 ,p_actual_flag => l_actual_flag
146093 ,p_balance_type_code => l_balance_type_code
146094 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
146095
146096 , p_source_4 => l_array_source_4(Idx)
146097 , p_source_11 => l_array_source_11(Idx)
146098 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
146099 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
146100 , p_source_15 => l_array_source_15(Idx)
146101 , p_source_18 => l_array_source_18(Idx)
146102 , p_source_19 => l_array_source_19(Idx)
146103 , p_source_20 => l_array_source_20(Idx)
146104 , p_source_21 => l_array_source_21(Idx)
146105 , p_source_22 => l_array_source_22(Idx)
146106 , p_source_24 => l_array_source_24(Idx)
146107 );
146108 If(l_balance_type_code = 'A') THEN
146109 l_actual_gain_loss_ref := l_gain_or_loss_ref;
146110 END IF;
146111
146112 --
146113
146114
146115 --
146116 AcctLineType_178 (
146117 p_application_id => p_application_id
146118 ,p_event_id => l_event_id
146119 ,p_calculate_acctd_flag => l_calculate_acctd_flag
146120 ,p_calculate_g_l_flag => l_calculate_g_l_flag
146121 ,p_actual_flag => l_actual_flag
146122 ,p_balance_type_code => l_balance_type_code
146123 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
146124
146125 , p_source_4 => l_array_source_4(Idx)
146126 , p_source_11 => l_array_source_11(Idx)
146127 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
146128 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
146129 , p_source_15 => l_array_source_15(Idx)
146130 , p_source_18 => l_array_source_18(Idx)
146131 , p_source_19 => l_array_source_19(Idx)
146132 , p_source_20 => l_array_source_20(Idx)
146133 , p_source_21 => l_array_source_21(Idx)
146134 , p_source_22 => l_array_source_22(Idx)
146135 , p_source_24 => l_array_source_24(Idx)
146136 );
146137 If(l_balance_type_code = 'A') THEN
146138 l_actual_gain_loss_ref := l_gain_or_loss_ref;
146139 END IF;
146140
146141 --
146142
146143
146144 --
146145 AcctLineType_218 (
146146 p_application_id => p_application_id
146147 ,p_event_id => l_event_id
146148 ,p_calculate_acctd_flag => l_calculate_acctd_flag
146149 ,p_calculate_g_l_flag => l_calculate_g_l_flag
146150 ,p_actual_flag => l_actual_flag
146151 ,p_balance_type_code => l_balance_type_code
146152 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
146153
146154 , p_source_4 => l_array_source_4(Idx)
146155 , p_source_11 => l_array_source_11(Idx)
146156 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
146157 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
146158 , p_source_15 => l_array_source_15(Idx)
146159 , p_source_18 => l_array_source_18(Idx)
146160 , p_source_19 => l_array_source_19(Idx)
146161 , p_source_20 => l_array_source_20(Idx)
146162 , p_source_21 => l_array_source_21(Idx)
146163 , p_source_22 => l_array_source_22(Idx)
146164 , p_source_24 => l_array_source_24(Idx)
146165 );
146166 If(l_balance_type_code = 'A') THEN
146167 l_actual_gain_loss_ref := l_gain_or_loss_ref;
146168 END IF;
146169
146170 --
146171
146172 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
146173 -- or secondary ledger that has different currency with primary
146174 -- or alc that is calculated by sla
146175 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
146176 (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'))
146177
146178 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
146179 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
146180 AND (l_actual_flag = 'A')) THEN
146181 XLA_AE_LINES_PKG.CreateGainOrLossLines(
146182 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
146183 ,p_application_id => p_application_id
146184 ,p_amb_context_code => 'DEFAULT'
146185 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
146186 ,p_event_class_code => C_EVENT_CLASS_CODE
146187 ,p_event_type_code => C_EVENT_TYPE_CODE
146188
146189 ,p_gain_ccid => -1
146190 ,p_loss_ccid => -1
146191
146192 ,p_actual_flag => l_actual_flag
146193 ,p_enc_flag => null
146194 ,p_actual_g_l_ref => l_actual_gain_loss_ref
146195 ,p_enc_g_l_ref => null
146196 );
146197 END IF;
146198 END IF;
146199 END IF;
146200
146201 ELSE
146202 --
146203 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
146204 --
146205 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
146206 trace
146207 (p_msg => 'Trancaction revesal option is Y'
146208 ,p_level => C_LEVEL_STATEMENT
146209 ,p_module => l_log_module);
146210 END IF;
146211 END IF;
146212
146213 END LOOP;
146214 l_result := XLA_AE_LINES_PKG.InsertLines ;
146215 end loop;
146216 close line_cur;
146217
146218
146219 --
146220 -- insert headers into xla_ae_headers_gt table
146221 --
146222 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
146223
146224 -- insert into errors table here.
146225
146226 END LOOP;
146227
146228 --
146229 -- 4865292
146230 --
146231 -- Compare g_hdr_extract_count with event count in
146232 -- CreateHeadersAndLines.
146233 --
146234 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
146235
146236 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
146237 trace (p_msg => '# rows extracted from header extract objects '
146238 || ' (running total): '
146239 || g_hdr_extract_count
146240 ,p_level => C_LEVEL_STATEMENT
146241 ,p_module => l_log_module);
146242 END IF;
146243
146244 CLOSE header_cur;
146245 --
146246
146247 --
146248 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
146249 trace
146250 (p_msg => 'END of EventClass_255'
146251 ,p_level => C_LEVEL_PROCEDURE
146252 ,p_module => l_log_module);
146253 END IF;
146254 --
146255 RETURN l_result;
146256 EXCEPTION
146257 WHEN xla_exceptions_pkg.application_exception THEN
146258
146259 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
146260
146261
146262 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
146263
146264 RAISE;
146265
146266 WHEN NO_DATA_FOUND THEN
146267
146268 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
146269 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
146270
146271 FOR header_record IN header_cur
146272 LOOP
146273 l_array_header_events(header_record.event_id) := header_record.event_id;
146274 END LOOP;
146275
146276 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
146277 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
146278
146279 fnd_file.put_line(fnd_file.LOG, ' ');
146280 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
146281 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
146282 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
146283
146284 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
146285 LOOP
146286 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
146287 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
146288 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
146289 END IF;
146290 END LOOP;
146291
146292 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
146293 fnd_file.put_line(fnd_file.LOG, ' ');
146294
146295
146296 xla_exceptions_pkg.raise_message
146297 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_255');
146298
146299
146300 WHEN OTHERS THEN
146301 xla_exceptions_pkg.raise_message
146302 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_255');
146303 END EventClass_255;
146304 --
146305
146306 ---------------------------------------
146307 --
146308 -- PRIVATE PROCEDURE
146309 -- insert_sources_256
146310 --
146311 ----------------------------------------
146312 --
146313 PROCEDURE insert_sources_256(
146314 p_target_ledger_id IN NUMBER
146315 , p_language IN VARCHAR2
146316 , p_sla_ledger_id IN NUMBER
146317 , p_pad_start_date IN DATE
146318 , p_pad_end_date IN DATE
146319 )
146320 IS
146321
146322 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'FOB_RCPT_RECIPIENT_RCPT_ALL';
146323 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'FOB_RCPT_RECIPIENT_RCPT';
146324 p_apps_owner VARCHAR2(30);
146325 l_log_module VARCHAR2(240);
146326 BEGIN
146327 IF g_log_enabled THEN
146328 l_log_module := C_DEFAULT_MODULE||'.insert_sources_256';
146329 END IF;
146330 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
146331
146332 trace
146333 (p_msg => 'BEGIN of insert_sources_256'
146334 ,p_level => C_LEVEL_PROCEDURE
146335 ,p_module => l_log_module);
146336
146337 END IF;
146338
146339 -- select APPS owner
146340 SELECT oracle_username
146341 INTO p_apps_owner
146342 FROM fnd_oracle_userid
146343 WHERE read_only_flag = 'U'
146344 ;
146345
146346 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
146347 trace
146348 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
146349 ' - p_language = '||p_language||
146350 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
146351 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
146352 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
146353 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
146354 ,p_level => C_LEVEL_STATEMENT
146355 ,p_module => l_log_module);
146356 END IF;
146357
146358
146359 --
146360 INSERT INTO xla_diag_sources --hdr2
146361 (
146362 event_id
146363 , ledger_id
146364 , sla_ledger_id
146365 , description_language
146366 , object_name
146367 , object_type_code
146368 , line_number
146369 , source_application_id
146370 , source_type_code
146371 , source_code
146372 , source_value
146373 , source_meaning
146374 , created_by
146375 , creation_date
146376 , last_update_date
146377 , last_updated_by
146378 , last_update_login
146379 , program_update_date
146380 , program_application_id
146381 , program_id
146382 , request_id
146383 )
146384 SELECT
146385 event_id
146386 , p_target_ledger_id
146387 , p_sla_ledger_id
146388 , p_language
146389 , object_name
146390 , object_type_code
146391 , line_number
146392 , source_application_id
146393 , source_type_code
146394 , source_code
146395 , SUBSTR(source_value ,1,1996)
146396 , SUBSTR(source_meaning ,1,200)
146397 , xla_environment_pkg.g_Usr_Id
146398 , TRUNC(SYSDATE)
146399 , TRUNC(SYSDATE)
146400 , xla_environment_pkg.g_Usr_Id
146401 , xla_environment_pkg.g_Login_Id
146402 , TRUNC(SYSDATE)
146403 , xla_environment_pkg.g_Prog_Appl_Id
146404 , xla_environment_pkg.g_Prog_Id
146405 , xla_environment_pkg.g_Req_Id
146406 FROM (
146407 SELECT xet.event_id event_id
146408 , 0 line_number
146409 , CASE r
146410 WHEN 1 THEN 'CST_XLA_INV_REF_V'
146411 WHEN 2 THEN 'CST_XLA_INV_REF_V'
146412 WHEN 3 THEN 'CST_XLA_INV_REF_V'
146413 WHEN 4 THEN 'CST_XLA_INV_HEADERS_V'
146414 WHEN 5 THEN 'CST_XLA_INV_REF_V'
146415 WHEN 6 THEN 'CST_XLA_INV_REF_V'
146416 WHEN 7 THEN 'PSA_CST_XLA_UPG_V'
146417 WHEN 8 THEN 'CST_XLA_INV_REF_V'
146418 WHEN 9 THEN 'CST_XLA_INV_REF_V'
146419 WHEN 10 THEN 'PO_REQ_DISTS_REF_V'
146420 WHEN 11 THEN 'PO_REQ_HEADERS_REF_V'
146421 WHEN 12 THEN 'CST_XLA_INV_HEADERS_V'
146422
146423 ELSE null
146424 END object_name
146425 , CASE r
146426 WHEN 1 THEN 'HEADER'
146427 WHEN 2 THEN 'HEADER'
146428 WHEN 3 THEN 'HEADER'
146429 WHEN 4 THEN 'HEADER'
146430 WHEN 5 THEN 'HEADER'
146431 WHEN 6 THEN 'HEADER'
146432 WHEN 7 THEN 'HEADER'
146433 WHEN 8 THEN 'HEADER'
146434 WHEN 9 THEN 'HEADER'
146435 WHEN 10 THEN 'HEADER'
146436 WHEN 11 THEN 'HEADER'
146437 WHEN 12 THEN 'HEADER'
146438
146439 ELSE null
146440 END object_type_code
146441 , CASE r
146442 WHEN 1 THEN '707'
146443 WHEN 2 THEN '707'
146444 WHEN 3 THEN '707'
146445 WHEN 4 THEN '707'
146446 WHEN 5 THEN '707'
146447 WHEN 6 THEN '707'
146448 WHEN 7 THEN '707'
146449 WHEN 8 THEN '707'
146450 WHEN 9 THEN '707'
146451 WHEN 10 THEN '201'
146452 WHEN 11 THEN '201'
146453 WHEN 12 THEN '707'
146454
146455 ELSE null
146456 END source_application_id
146457 , 'S' source_type_code
146458 , CASE r
146459 WHEN 1 THEN 'APPLIED_TO_APPL_ID'
146460 WHEN 2 THEN 'APPLIED_TO_DIST_LINK_TYPE'
146461 WHEN 3 THEN 'APPLIED_TO_ENTITY_CODE'
146462 WHEN 4 THEN 'DISTRIBUTION_TYPE'
146463 WHEN 5 THEN 'ENCUM_REVERSAL_AMOUNT_ENTERED'
146464 WHEN 6 THEN 'ENCUMBRANCE_REVERSAL_AMOUNT'
146465 WHEN 7 THEN 'CST_ENCUM_UPG_OPTION'
146466 WHEN 8 THEN 'TXN_PO_DISTRIBUTION_ID'
146467 WHEN 9 THEN 'TXN_PO_HEADER_ID'
146468 WHEN 10 THEN 'REQ_BUDGET_ACCOUNT'
146469 WHEN 11 THEN 'REQ_ENCUMBRANCE_TYPE_ID'
146470 WHEN 12 THEN 'TRANSFER_TO_GL_INDICATOR'
146471
146472 ELSE null
146473 END source_code
146474 , CASE r
146475 WHEN 1 THEN TO_CHAR(h3.APPLIED_TO_APPL_ID)
146476 WHEN 2 THEN TO_CHAR(h3.APPLIED_TO_DIST_LINK_TYPE)
146477 WHEN 3 THEN TO_CHAR(h3.APPLIED_TO_ENTITY_CODE)
146478 WHEN 4 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
146479 WHEN 5 THEN TO_CHAR(h3.ENCUM_REVERSAL_AMOUNT_ENTERED)
146480 WHEN 6 THEN TO_CHAR(h3.ENCUMBRANCE_REVERSAL_AMOUNT)
146481 WHEN 7 THEN TO_CHAR(h6.CST_ENCUM_UPG_OPTION)
146482 WHEN 8 THEN TO_CHAR(h3.TXN_PO_DISTRIBUTION_ID)
146483 WHEN 9 THEN TO_CHAR(h3.TXN_PO_HEADER_ID)
146484 WHEN 10 THEN TO_CHAR(h4.REQ_BUDGET_ACCOUNT)
146485 WHEN 11 THEN TO_CHAR(h5.REQ_ENCUMBRANCE_TYPE_ID)
146486 WHEN 12 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
146487
146488 ELSE null
146489 END source_value
146490 , CASE r
146491 WHEN 4 THEN fvl12.meaning
146492 WHEN 12 THEN fvl38.meaning
146493
146494 ELSE null
146495 END source_meaning
146496 FROM xla_events_gt xet
146497 , CST_XLA_INV_HEADERS_V h1
146498 , CST_XLA_INV_REF_V h3
146499 , PO_REQ_DISTS_REF_V h4
146500 , PO_REQ_HEADERS_REF_V h5
146501 , PSA_CST_XLA_UPG_V h6
146502 , fnd_lookup_values fvl12
146503 , fnd_lookup_values fvl38
146504 ,(select rownum r from all_objects where rownum <= 12 and owner = p_apps_owner)
146505 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
146506 AND xet.event_class_code = C_EVENT_CLASS_CODE
146507 AND h1.event_id = xet.event_id
146508 AND h3.ref_transaction_id = h1.transaction_id AND h3.bus_flow_req_dist_id=h4.req_distribution_id (+) AND h3.bus_flow_req_id = h5.req_id (+) AND h3.rcv_transaction_id = h6.transaction_id (+) AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
146509 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
146510 AND fvl12.view_application_id(+) = 700
146511 AND fvl12.language(+) = USERENV('LANG')
146512 AND fvl38.lookup_type(+) = 'YES_NO'
146513 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
146514 AND fvl38.view_application_id(+) = 0
146515 AND fvl38.language(+) = USERENV('LANG')
146516
146517 )
146518 ;
146519 --
146520 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
146521
146522 trace
146523 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
146524 ,p_level => C_LEVEL_STATEMENT
146525 ,p_module => l_log_module);
146526
146527 END IF;
146528 --
146529
146530
146531
146532 --
146533 INSERT INTO xla_diag_sources --line2
146534 (
146535 event_id
146536 , ledger_id
146537 , sla_ledger_id
146538 , description_language
146539 , object_name
146540 , object_type_code
146541 , line_number
146542 , source_application_id
146543 , source_type_code
146544 , source_code
146545 , source_value
146546 , source_meaning
146547 , created_by
146548 , creation_date
146549 , last_update_date
146550 , last_updated_by
146551 , last_update_login
146552 , program_update_date
146553 , program_application_id
146554 , program_id
146555 , request_id
146556 )
146557 SELECT event_id
146558 , p_target_ledger_id
146559 , p_sla_ledger_id
146560 , p_language
146561 , object_name
146562 , object_type_code
146563 , line_number
146564 , source_application_id
146565 , source_type_code
146566 , source_code
146567 , SUBSTR(source_value,1,1996)
146568 , SUBSTR(source_meaning ,1,200)
146569 , xla_environment_pkg.g_Usr_Id
146570 , TRUNC(SYSDATE)
146571 , TRUNC(SYSDATE)
146572 , xla_environment_pkg.g_Usr_Id
146573 , xla_environment_pkg.g_Login_Id
146574 , TRUNC(SYSDATE)
146575 , xla_environment_pkg.g_Prog_Appl_Id
146576 , xla_environment_pkg.g_Prog_Id
146577 , xla_environment_pkg.g_Req_Id
146578 FROM (
146579 SELECT xet.event_id event_id
146580 , l2.line_number line_number
146581 , CASE r
146582 WHEN 1 THEN 'CST_XLA_INV_LINES_V'
146583 WHEN 2 THEN 'CST_XLA_INV_LINES_V'
146584 WHEN 3 THEN 'CST_XLA_INV_LINES_V'
146585 WHEN 4 THEN 'CST_XLA_INV_LINES_V'
146586 WHEN 5 THEN 'CST_XLA_INV_LINES_V'
146587 WHEN 6 THEN 'CST_XLA_INV_LINES_V'
146588 WHEN 7 THEN 'CST_XLA_INV_LINES_V'
146589 WHEN 8 THEN 'CST_XLA_INV_LINES_V'
146590 WHEN 9 THEN 'CST_XLA_INV_LINES_V'
146591
146592 ELSE null
146593 END object_name
146594 , CASE r
146595 WHEN 1 THEN 'LINE'
146596 WHEN 2 THEN 'LINE'
146597 WHEN 3 THEN 'LINE'
146598 WHEN 4 THEN 'LINE'
146599 WHEN 5 THEN 'LINE'
146600 WHEN 6 THEN 'LINE'
146601 WHEN 7 THEN 'LINE'
146602 WHEN 8 THEN 'LINE'
146603 WHEN 9 THEN 'LINE'
146604
146605 ELSE null
146606 END object_type_code
146607 , CASE r
146608 WHEN 1 THEN '707'
146609 WHEN 2 THEN '707'
146610 WHEN 3 THEN '707'
146611 WHEN 4 THEN '707'
146612 WHEN 5 THEN '707'
146613 WHEN 6 THEN '707'
146614 WHEN 7 THEN '707'
146615 WHEN 8 THEN '707'
146616 WHEN 9 THEN '707'
146617
146618 ELSE null
146619 END source_application_id
146620 , 'S' source_type_code
146621 , CASE r
146622 WHEN 1 THEN 'CODE_COMBINATION_ID'
146623 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER'
146624 WHEN 3 THEN 'CURRENCY_CODE'
146625 WHEN 4 THEN 'ENTERED_AMOUNT'
146626 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE'
146627 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE'
146628 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE'
146629 WHEN 8 THEN 'ACCOUNTED_AMOUNT'
146630 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE'
146631
146632 ELSE null
146633 END source_code
146634 , CASE r
146635 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
146636 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
146637 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
146638 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
146639 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
146640 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
146641 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
146642 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
146643 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
146644
146645 ELSE null
146646 END source_value
146647 , null source_meaning
146648 FROM xla_events_gt xet
146649 , CST_XLA_INV_LINES_V l2
146650 , (select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
146651 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
146652 AND xet.event_class_code = C_EVENT_CLASS_CODE
146653 AND l2.event_id = xet.event_id
146654
146655 )
146656 ;
146657 --
146658 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
146659
146660 trace
146661 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
146662 ,p_level => C_LEVEL_STATEMENT
146663 ,p_module => l_log_module);
146664
146665 END IF;
146666
146667
146668 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
146669 trace
146670 (p_msg => 'END of insert_sources_256'
146671 ,p_level => C_LEVEL_PROCEDURE
146672 ,p_module => l_log_module);
146673 END IF;
146674 EXCEPTION
146675 WHEN xla_exceptions_pkg.application_exception THEN
146676 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
146677 trace
146678 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
146679 ,p_level => C_LEVEL_EXCEPTION
146680 ,p_module => l_log_module);
146681 END IF;
146682 RAISE;
146683 WHEN OTHERS THEN
146684 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
146685 trace
146686 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
146687 ,p_level => C_LEVEL_EXCEPTION
146688 ,p_module => l_log_module);
146689 END IF;
146690 xla_exceptions_pkg.raise_message
146691 (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_256');
146692 END insert_sources_256;
146693 --
146694
146695 ---------------------------------------
146696 --
146697 -- PRIVATE FUNCTION
146698 -- EventClass_256
146699 --
146700 ----------------------------------------
146701 --
146702 FUNCTION EventClass_256
146703 (p_application_id IN NUMBER
146704 ,p_base_ledger_id IN NUMBER
146705 ,p_target_ledger_id IN NUMBER
146706 ,p_language IN VARCHAR2
146707 ,p_currency_code IN VARCHAR2
146708 ,p_sla_ledger_id IN NUMBER
146709 ,p_pad_start_date IN DATE
146710 ,p_pad_end_date IN DATE
146711 ,p_primary_ledger_id IN NUMBER)
146712 RETURN BOOLEAN IS
146713 --
146714 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'FOB_RCPT_RECIPIENT_RCPT_ALL';
146715 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'FOB_RCPT_RECIPIENT_RCPT';
146716
146717 l_calculate_acctd_flag VARCHAR2(1) :='N';
146718 l_calculate_g_l_flag VARCHAR2(1) :='N';
146719 --
146720 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
146721 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
146722 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
146723 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
146724 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
146725 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
146726 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
146727 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
146728 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
146729 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
146730 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
146731 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
146732 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
146733 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
146734 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
146735 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
146736 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
146737 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
146738 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
146739 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
146740 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
146741 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
146742 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
146743 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
146744 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
146745 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
146746
146747 l_event_id NUMBER;
146748 l_previous_event_id NUMBER;
146749 l_first_event_id NUMBER;
146750 l_last_event_id NUMBER;
146751
146752 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
146753 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
146754 --
146755 --
146756 l_result BOOLEAN := TRUE;
146757 l_rows NUMBER := 1000;
146758 l_event_type_name VARCHAR2(80) := 'All';
146759 l_event_class_name VARCHAR2(80) := 'Recipient-side Intransit Interorg Receipt for FOB Receipt';
146760 l_description VARCHAR2(4000);
146761 l_transaction_reversal NUMBER;
146762 l_ae_header_id NUMBER;
146763 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
146764 l_log_module VARCHAR2(240);
146765 --
146766 l_acct_reversal_source VARCHAR2(30);
146767 l_trx_reversal_source VARCHAR2(30);
146768
146769 l_continue_with_lines BOOLEAN := TRUE;
146770 --
146771 l_acc_rev_gl_date_source DATE; -- 4262811
146772 --
146773 type t_array_event_id is table of number index by binary_integer;
146774
146775 l_rec_array_event t_rec_array_event;
146776 l_null_rec_array_event t_rec_array_event;
146777 l_array_ae_header_id xla_number_array_type;
146778 l_actual_flag VARCHAR2(1) := NULL;
146779 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
146780 l_balance_type_code VARCHAR2(1) :=NULL;
146781 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
146782
146783 --
146784 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
146785 --
146786
146787 TYPE t_array_source_6 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_APPL_ID%TYPE INDEX BY BINARY_INTEGER;
146788 TYPE t_array_source_7 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_DIST_LINK_TYPE%TYPE INDEX BY BINARY_INTEGER;
146789 TYPE t_array_source_8 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
146790 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
146791 TYPE t_array_source_14 IS TABLE OF CST_XLA_INV_REF_V.ENCUM_REVERSAL_AMOUNT_ENTERED%TYPE INDEX BY BINARY_INTEGER;
146792 TYPE t_array_source_16 IS TABLE OF CST_XLA_INV_REF_V.ENCUMBRANCE_REVERSAL_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
146793 TYPE t_array_source_27 IS TABLE OF PSA_CST_XLA_UPG_V.CST_ENCUM_UPG_OPTION%TYPE INDEX BY BINARY_INTEGER;
146794 TYPE t_array_source_28 IS TABLE OF CST_XLA_INV_REF_V.TXN_PO_DISTRIBUTION_ID%TYPE INDEX BY BINARY_INTEGER;
146795 TYPE t_array_source_29 IS TABLE OF CST_XLA_INV_REF_V.TXN_PO_HEADER_ID%TYPE INDEX BY BINARY_INTEGER;
146796 TYPE t_array_source_30 IS TABLE OF PO_REQ_DISTS_REF_V.REQ_BUDGET_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
146797 TYPE t_array_source_31 IS TABLE OF PO_REQ_HEADERS_REF_V.REQ_ENCUMBRANCE_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
146798 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
146799
146800 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
146801 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
146802 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
146803 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
146804 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
146805 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
146806 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
146807 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
146808 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
146809
146810 l_array_source_6 t_array_source_6;
146811 l_array_source_7 t_array_source_7;
146812 l_array_source_8 t_array_source_8;
146813 l_array_source_12 t_array_source_12;
146814 l_array_source_12_meaning t_array_lookup_meaning;
146815 l_array_source_14 t_array_source_14;
146816 l_array_source_16 t_array_source_16;
146817 l_array_source_27 t_array_source_27;
146818 l_array_source_28 t_array_source_28;
146819 l_array_source_29 t_array_source_29;
146820 l_array_source_30 t_array_source_30;
146821 l_array_source_31 t_array_source_31;
146822 l_array_source_38 t_array_source_38;
146823 l_array_source_38_meaning t_array_lookup_meaning;
146824
146825 l_array_source_4 t_array_source_4;
146826 l_array_source_11 t_array_source_11;
146827 l_array_source_15 t_array_source_15;
146828 l_array_source_18 t_array_source_18;
146829 l_array_source_19 t_array_source_19;
146830 l_array_source_20 t_array_source_20;
146831 l_array_source_21 t_array_source_21;
146832 l_array_source_22 t_array_source_22;
146833 l_array_source_24 t_array_source_24;
146834
146835 --
146836 CURSOR header_cur
146837 IS
146838 SELECT /*+ leading(xet) cardinality(xet,1) */
146839 -- Event Class Code: FOB_RCPT_RECIPIENT_RCPT
146840 xet.entity_id
146841 ,xet.legal_entity_id
146842 ,xet.entity_code
146843 ,xet.transaction_number
146844 ,xet.event_id
146845 ,xet.event_class_code
146846 ,xet.event_type_code
146847 ,xet.event_number
146848 ,xet.event_date
146849 ,xet.transaction_date
146850 ,xet.reference_num_1
146851 ,xet.reference_num_2
146852 ,xet.reference_num_3
146853 ,xet.reference_num_4
146854 ,xet.reference_char_1
146855 ,xet.reference_char_2
146856 ,xet.reference_char_3
146857 ,xet.reference_char_4
146858 ,xet.reference_date_1
146859 ,xet.reference_date_2
146860 ,xet.reference_date_3
146861 ,xet.reference_date_4
146862 ,xet.event_created_by
146863 ,xet.budgetary_control_flag
146864 , h3.APPLIED_TO_APPL_ID source_6
146865 , h3.APPLIED_TO_DIST_LINK_TYPE source_7
146866 , h3.APPLIED_TO_ENTITY_CODE source_8
146867 , h1.DISTRIBUTION_TYPE source_12
146868 , fvl12.meaning source_12_meaning
146869 , h3.ENCUM_REVERSAL_AMOUNT_ENTERED source_14
146870 , h3.ENCUMBRANCE_REVERSAL_AMOUNT source_16
146871 , h6.CST_ENCUM_UPG_OPTION source_27
146872 , h3.TXN_PO_DISTRIBUTION_ID source_28
146873 , h3.TXN_PO_HEADER_ID source_29
146874 , h4.REQ_BUDGET_ACCOUNT source_30
146875 , h5.REQ_ENCUMBRANCE_TYPE_ID source_31
146876 , h1.TRANSFER_TO_GL_INDICATOR source_38
146877 , fvl38.meaning source_38_meaning
146878 FROM xla_events_gt xet
146879 , CST_XLA_INV_HEADERS_V h1
146880 , CST_XLA_INV_REF_V h3
146881 , PO_REQ_DISTS_REF_V h4
146882 , PO_REQ_HEADERS_REF_V h5
146883 , PSA_CST_XLA_UPG_V h6
146884 , fnd_lookup_values fvl12
146885 , fnd_lookup_values fvl38
146886 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
146887 and xet.event_class_code = C_EVENT_CLASS_CODE
146888 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
146889 AND h3.ref_transaction_id = h1.transaction_id AND h3.BUS_FLOW_REQ_DIST_ID=h4.REQ_DISTRIBUTION_ID (+) AND h3.BUS_FLOW_REQ_ID = h5.REQ_ID (+) AND h3.rcv_transaction_id = h6.transaction_id (+) AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
146890 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
146891 AND fvl12.view_application_id(+) = 700
146892 AND fvl12.language(+) = USERENV('LANG')
146893 AND fvl38.lookup_type(+) = 'YES_NO'
146894 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
146895 AND fvl38.view_application_id(+) = 0
146896 AND fvl38.language(+) = USERENV('LANG')
146897
146898 ORDER BY event_id
146899 ;
146900
146901
146902 --
146903 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
146904 IS
146905 SELECT /*+ leading(xet) cardinality(xet,1) */
146906 -- Event Class Code: FOB_RCPT_RECIPIENT_RCPT
146907 xet.entity_id
146908 ,xet.legal_entity_id
146909 ,xet.entity_code
146910 ,xet.transaction_number
146911 ,xet.event_id
146912 ,xet.event_class_code
146913 ,xet.event_type_code
146914 ,xet.event_number
146915 ,xet.event_date
146916 ,xet.transaction_date
146917 ,xet.reference_num_1
146918 ,xet.reference_num_2
146919 ,xet.reference_num_3
146920 ,xet.reference_num_4
146921 ,xet.reference_char_1
146922 ,xet.reference_char_2
146923 ,xet.reference_char_3
146924 ,xet.reference_char_4
146925 ,xet.reference_date_1
146926 ,xet.reference_date_2
146927 ,xet.reference_date_3
146928 ,xet.reference_date_4
146929 ,xet.event_created_by
146930 ,xet.budgetary_control_flag
146931 , l2.LINE_NUMBER
146932 , l2.CODE_COMBINATION_ID source_4
146933 , l2.DISTRIBUTION_IDENTIFIER source_11
146934 , l2.CURRENCY_CODE source_15
146935 , l2.ENTERED_AMOUNT source_18
146936 , l2.CURRENCY_CONVERSION_DATE source_19
146937 , l2.CURRENCY_CONVERSION_RATE source_20
146938 , l2.CURRENCY_CONVERSION_TYPE source_21
146939 , l2.ACCOUNTED_AMOUNT source_22
146940 , l2.ACCOUNTING_LINE_TYPE_CODE source_24
146941 FROM xla_events_gt xet
146942 , CST_XLA_INV_LINES_V l2
146943 WHERE xet.event_id between x_first_event_id and x_last_event_id
146944 and xet.event_date between p_pad_start_date and p_pad_end_date
146945 and xet.event_class_code = C_EVENT_CLASS_CODE
146946 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
146947 ;
146948
146949 --
146950 BEGIN
146951 IF g_log_enabled THEN
146952 l_log_module := C_DEFAULT_MODULE||'.EventClass_256';
146953 END IF;
146954 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
146955 trace
146956 (p_msg => 'BEGIN of EventClass_256'
146957 ,p_level => C_LEVEL_PROCEDURE
146958 ,p_module => l_log_module);
146959 END IF;
146960
146961 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
146962 trace
146963 (p_msg => 'p_application_id = '||p_application_id||
146964 ' - p_base_ledger_id = '||p_base_ledger_id||
146965 ' - p_target_ledger_id = '||p_target_ledger_id||
146966 ' - p_language = '||p_language||
146967 ' - p_currency_code = '||p_currency_code||
146968 ' - p_sla_ledger_id = '||p_sla_ledger_id
146969 ,p_level => C_LEVEL_STATEMENT
146970 ,p_module => l_log_module);
146971 END IF;
146972 --
146973 -- initialze arrays
146974 --
146975 g_array_event.DELETE;
146976 l_rec_array_event := l_null_rec_array_event;
146977 --
146978 --------------------------------------
146979 -- 4262811 Initialze MPA Line Number
146980 --------------------------------------
146981 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
146982
146983 --
146984
146985 --
146986 OPEN header_cur;
146987 --
146988 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
146989 trace
146990 (p_msg => 'SQL - FETCH header_cur'
146991 ,p_level => C_LEVEL_STATEMENT
146992 ,p_module => l_log_module);
146993 END IF;
146994 --
146995 LOOP
146996 FETCH header_cur BULK COLLECT INTO
146997 l_array_entity_id
146998 , l_array_legal_entity_id
146999 , l_array_entity_code
147000 , l_array_transaction_num
147001 , l_array_event_id
147002 , l_array_class_code
147003 , l_array_event_type
147004 , l_array_event_number
147005 , l_array_event_date
147006 , l_array_transaction_date
147007 , l_array_reference_num_1
147008 , l_array_reference_num_2
147009 , l_array_reference_num_3
147010 , l_array_reference_num_4
147011 , l_array_reference_char_1
147012 , l_array_reference_char_2
147013 , l_array_reference_char_3
147014 , l_array_reference_char_4
147015 , l_array_reference_date_1
147016 , l_array_reference_date_2
147017 , l_array_reference_date_3
147018 , l_array_reference_date_4
147019 , l_array_event_created_by
147020 , l_array_budgetary_control_flag
147021 , l_array_source_6
147022 , l_array_source_7
147023 , l_array_source_8
147024 , l_array_source_12
147025 , l_array_source_12_meaning
147026 , l_array_source_14
147027 , l_array_source_16
147028 , l_array_source_27
147029 , l_array_source_28
147030 , l_array_source_29
147031 , l_array_source_30
147032 , l_array_source_31
147033 , l_array_source_38
147034 , l_array_source_38_meaning
147035 LIMIT l_rows;
147036 --
147037 IF (C_LEVEL_EVENT >= g_log_level) THEN
147038 trace
147039 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
147040 ,p_level => C_LEVEL_EVENT
147041 ,p_module => l_log_module);
147042 END IF;
147043 --
147044 EXIT WHEN l_array_entity_id.COUNT = 0;
147045
147046 -- initialize arrays
147047 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
147048 XLA_AE_LINES_PKG.g_rec_lines := NULL;
147049
147050 --
147051 -- Bug 4458708
147052 --
147053 XLA_AE_LINES_PKG.g_LineNumber := 0;
147054
147055
147056 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
147057 g_last_hdr_idx := l_array_event_id.LAST;
147058 --
147059 -- loop for the headers. Each iteration is for each header extract row
147060 -- fetched in header cursor
147061 --
147062 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
147063
147064 --
147065 -- set event info as cache for other routines to refer event attributes
147066 --
147067 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
147068 (p_application_id => p_application_id
147069 ,p_primary_ledger_id => p_primary_ledger_id
147070 ,p_base_ledger_id => p_base_ledger_id
147071 ,p_target_ledger_id => p_target_ledger_id
147072 ,p_entity_id => l_array_entity_id(hdr_idx)
147073 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
147074 ,p_entity_code => l_array_entity_code(hdr_idx)
147075 ,p_transaction_num => l_array_transaction_num(hdr_idx)
147076 ,p_event_id => l_array_event_id(hdr_idx)
147077 ,p_event_class_code => l_array_class_code(hdr_idx)
147078 ,p_event_type_code => l_array_event_type(hdr_idx)
147079 ,p_event_number => l_array_event_number(hdr_idx)
147080 ,p_event_date => l_array_event_date(hdr_idx)
147081 ,p_transaction_date => l_array_transaction_date(hdr_idx)
147082 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
147083 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
147084 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
147085 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
147086 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
147087 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
147088 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
147089 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
147090 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
147091 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
147092 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
147093 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
147094 ,p_event_created_by => l_array_event_created_by(hdr_idx)
147095 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
147096
147097 --
147098 -- set the status of entry to C_VALID (0)
147099 --
147100 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
147101
147102 --
147103 -- initialize a row for ae header
147104 --
147105 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
147106
147107 l_event_id := l_array_event_id(hdr_idx);
147108
147109 --
147110 -- storing the hdr_idx for event. May be used by line cursor.
147111 --
147112 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
147113
147114 --
147115 -- store sources from header extract. This can be improved to
147116 -- store only those sources from header extract that may be used in lines
147117 --
147118
147119 g_array_event(l_event_id).array_value_num('source_6') := l_array_source_6(hdr_idx);
147120 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
147121 g_array_event(l_event_id).array_value_char('source_8') := l_array_source_8(hdr_idx);
147122 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
147123 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
147124 g_array_event(l_event_id).array_value_num('source_14') := l_array_source_14(hdr_idx);
147125 g_array_event(l_event_id).array_value_num('source_16') := l_array_source_16(hdr_idx);
147126 g_array_event(l_event_id).array_value_char('source_27') := l_array_source_27(hdr_idx);
147127 g_array_event(l_event_id).array_value_num('source_28') := l_array_source_28(hdr_idx);
147128 g_array_event(l_event_id).array_value_num('source_29') := l_array_source_29(hdr_idx);
147129 g_array_event(l_event_id).array_value_num('source_30') := l_array_source_30(hdr_idx);
147130 g_array_event(l_event_id).array_value_num('source_31') := l_array_source_31(hdr_idx);
147131 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
147132 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
147133
147134 --
147135 -- initilaize the status of ae headers for diffrent balance types
147136 -- the status is initialised to C_NOT_CREATED (2)
147137 --
147138 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
147139 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
147140 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
147141
147142 --
147143 -- call api to validate and store accounting attributes for header
147144 --
147145
147146 ------------------------------------------------------------
147147 -- Accrual Reversal : to get date for Standard Source (NONE)
147148 ------------------------------------------------------------
147149 l_acc_rev_gl_date_source := NULL;
147150
147151 l_rec_acct_attrs.array_acct_attr_code(1) := 'ENCUMBRANCE_TYPE_ID';
147152 l_rec_acct_attrs.array_num_value(1) := g_array_event(l_event_id).array_value_num('source_31');
147153 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_DATE';
147154 l_rec_acct_attrs.array_date_value(2) :=
147155 xla_ae_sources_pkg.GetSystemSourceDate(
147156 p_source_code => 'XLA_REFERENCE_DATE_1'
147157 , p_source_type_code => 'Y'
147158 , p_source_application_id => 602
147159 );
147160 l_rec_acct_attrs.array_acct_attr_code(3) := 'GL_TRANSFER_FLAG';
147161 l_rec_acct_attrs.array_char_value(3) := g_array_event(l_event_id).array_value_char('source_38');
147162
147163
147164 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
147165
147166 XLA_AE_HEADER_PKG.SetJeCategoryName;
147167
147168 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
147169 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
147170 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
147171 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
147172 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
147173
147174
147175 -- No header level analytical criteria
147176
147177 --
147178 --accounting attribute enhancement, bug 3612931
147179 --
147180 l_trx_reversal_source := SUBSTR(NULL, 1,30);
147181
147182 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
147183 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
147184
147185 xla_accounting_err_pkg.build_message
147186 (p_appli_s_name => 'XLA'
147187 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
147188 ,p_token_1 => 'ACCT_ATTR_NAME'
147189 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
147190 ,p_token_2 => 'PRODUCT_NAME'
147191 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
147192 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
147193 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
147194 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
147195
147196 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
147197 --
147198 -- following sets the accounting attributes needed to reverse
147199 -- accounting for a distributeion
147200 --
147201 xla_ae_lines_pkg.SetTrxReversalAttrs
147202 (p_event_id => l_event_id
147203 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
147204 ,p_trx_reversal_source => l_trx_reversal_source);
147205
147206 END IF;
147207
147208
147209 ----------------------------------------------------------------
147210 -- 4262811 - update the header statuses to invalid in need be
147211 ----------------------------------------------------------------
147212 --
147213 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
147214
147215
147216 -----------------------------------------------
147217 -- No accrual reversal for the event class/type
147218 -----------------------------------------------
147219 ----------------------------------------------------------------
147220
147221 --
147222 -- this ends the header loop iteration for one bulk fetch
147223 --
147224 END LOOP;
147225
147226 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
147227 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
147228
147229 --
147230 -- insert dummy rows into lines gt table that were created due to
147231 -- transaction reversals
147232 --
147233 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
147234 l_result := XLA_AE_LINES_PKG.InsertLines;
147235 END IF;
147236
147237 --
147238 -- reset the temp_line_num for each set of events fetched from header
147239 -- cursor rather than doing it for each new event in line cursor
147240 -- Bug 3939231
147241 --
147242 xla_ae_lines_pkg.g_temp_line_num := 0;
147243
147244
147245
147246 --
147247 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
147248 --
147249 --
147250 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
147251
147252 trace
147253 (p_msg => 'SQL - FETCH line_cur'
147254 ,p_level => C_LEVEL_STATEMENT
147255 ,p_module => l_log_module);
147256
147257 END IF;
147258 --
147259 --
147260 LOOP
147261 --
147262 FETCH line_cur BULK COLLECT INTO
147263 l_array_entity_id
147264 , l_array_legal_entity_id
147265 , l_array_entity_code
147266 , l_array_transaction_num
147267 , l_array_event_id
147268 , l_array_class_code
147269 , l_array_event_type
147270 , l_array_event_number
147271 , l_array_event_date
147272 , l_array_transaction_date
147273 , l_array_reference_num_1
147274 , l_array_reference_num_2
147275 , l_array_reference_num_3
147276 , l_array_reference_num_4
147277 , l_array_reference_char_1
147278 , l_array_reference_char_2
147279 , l_array_reference_char_3
147280 , l_array_reference_char_4
147281 , l_array_reference_date_1
147282 , l_array_reference_date_2
147283 , l_array_reference_date_3
147284 , l_array_reference_date_4
147285 , l_array_event_created_by
147286 , l_array_budgetary_control_flag
147287 , l_array_extract_line_num
147288 , l_array_source_4
147289 , l_array_source_11
147290 , l_array_source_15
147291 , l_array_source_18
147292 , l_array_source_19
147293 , l_array_source_20
147294 , l_array_source_21
147295 , l_array_source_22
147296 , l_array_source_24
147297 LIMIT l_rows;
147298
147299 --
147300 IF (C_LEVEL_EVENT >= g_log_level) THEN
147301 trace
147302 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
147303 ,p_level => C_LEVEL_EVENT
147304 ,p_module => l_log_module);
147305 END IF;
147306 --
147307 EXIT WHEN l_array_entity_id.count = 0;
147308
147309 XLA_AE_LINES_PKG.g_rec_lines := null;
147310
147311 --
147312 -- Bug 4458708
147313 --
147314 XLA_AE_LINES_PKG.g_LineNumber := 0;
147315 --
147316 --
147317
147318 FOR Idx IN 1..l_array_event_id.count LOOP
147319 --
147320 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
147321 --
147322 l_event_id := l_array_event_id(idx); -- 5648433
147323
147324 --
147325 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
147326 --
147327
147328 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
147329 (g_array_event(l_event_id).array_value_num('header_index'))
147330 ,'N'
147331 ) <> 'Y'
147332 THEN
147333 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
147334 trace
147335 (p_msg => 'Trancaction revesal option is not Y '
147336 ,p_level => C_LEVEL_STATEMENT
147337 ,p_module => l_log_module);
147338 END IF;
147339
147340 --
147341 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
147342 --
147343 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
147344 --
147345 -- set event info as cache for other routines to refer event attributes
147346 --
147347
147348 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
147349 l_previous_event_id := l_event_id;
147350
147351 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
147352 (p_application_id => p_application_id
147353 ,p_primary_ledger_id => p_primary_ledger_id
147354 ,p_base_ledger_id => p_base_ledger_id
147355 ,p_target_ledger_id => p_target_ledger_id
147356 ,p_entity_id => l_array_entity_id(Idx)
147357 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
147358 ,p_entity_code => l_array_entity_code(Idx)
147359 ,p_transaction_num => l_array_transaction_num(Idx)
147360 ,p_event_id => l_array_event_id(Idx)
147361 ,p_event_class_code => l_array_class_code(Idx)
147362 ,p_event_type_code => l_array_event_type(Idx)
147363 ,p_event_number => l_array_event_number(Idx)
147364 ,p_event_date => l_array_event_date(Idx)
147365 ,p_transaction_date => l_array_transaction_date(Idx)
147366 ,p_reference_num_1 => l_array_reference_num_1(Idx)
147367 ,p_reference_num_2 => l_array_reference_num_2(Idx)
147368 ,p_reference_num_3 => l_array_reference_num_3(Idx)
147369 ,p_reference_num_4 => l_array_reference_num_4(Idx)
147370 ,p_reference_char_1 => l_array_reference_char_1(Idx)
147371 ,p_reference_char_2 => l_array_reference_char_2(Idx)
147372 ,p_reference_char_3 => l_array_reference_char_3(Idx)
147373 ,p_reference_char_4 => l_array_reference_char_4(Idx)
147374 ,p_reference_date_1 => l_array_reference_date_1(Idx)
147375 ,p_reference_date_2 => l_array_reference_date_2(Idx)
147376 ,p_reference_date_3 => l_array_reference_date_3(Idx)
147377 ,p_reference_date_4 => l_array_reference_date_4(Idx)
147378 ,p_event_created_by => l_array_event_created_by(Idx)
147379 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
147380 --
147381 END IF;
147382
147383
147384
147385 --
147386 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
147387
147388 l_acct_reversal_source := SUBSTR(NULL, 1,30);
147389
147390 IF l_continue_with_lines THEN
147391 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
147392 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
147393
147394 xla_accounting_err_pkg.build_message
147395 (p_appli_s_name => 'XLA'
147396 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
147397 ,p_token_1 => 'LINE_NUMBER'
147398 ,p_value_1 => l_array_extract_line_num(Idx)
147399 ,p_token_2 => 'PRODUCT_NAME'
147400 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
147401 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
147402 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
147403 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
147404
147405 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
147406 --
147407 -- following sets the accounting attributes needed to reverse
147408 -- accounting for a distributeion
147409 --
147410
147411 --
147412 -- 5217187
147413 --
147414 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
147415 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
147416 g_array_event(l_event_id).array_value_num('header_index'));
147417 --
147418 --
147419
147420 -- No reversal code generated
147421
147422 xla_ae_lines_pkg.SetAcctReversalAttrs
147423 (p_event_id => l_event_id
147424 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
147425 ,p_calculate_acctd_flag => l_calculate_acctd_flag
147426 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
147427 END IF;
147428
147429 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
147430 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
147431
147432 --
147433 AcctLineType_34 (
147434 p_application_id => p_application_id
147435 ,p_event_id => l_event_id
147436 ,p_calculate_acctd_flag => l_calculate_acctd_flag
147437 ,p_calculate_g_l_flag => l_calculate_g_l_flag
147438 ,p_actual_flag => l_actual_flag
147439 ,p_balance_type_code => l_balance_type_code
147440 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
147441
147442 , p_source_4 => l_array_source_4(Idx)
147443 , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
147444 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
147445 , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
147446 , p_source_11 => l_array_source_11(Idx)
147447 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
147448 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
147449 , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
147450 , p_source_15 => l_array_source_15(Idx)
147451 , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
147452 , p_source_18 => l_array_source_18(Idx)
147453 , p_source_19 => l_array_source_19(Idx)
147454 , p_source_20 => l_array_source_20(Idx)
147455 , p_source_21 => l_array_source_21(Idx)
147456 , p_source_22 => l_array_source_22(Idx)
147457 , p_source_24 => l_array_source_24(Idx)
147458 , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
147459 , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
147460 , p_source_29 => g_array_event(l_event_id).array_value_num('source_29')
147461 , p_source_30 => g_array_event(l_event_id).array_value_num('source_30')
147462 , p_source_31 => g_array_event(l_event_id).array_value_num('source_31')
147463 );
147464 If(l_balance_type_code = 'A') THEN
147465 l_actual_gain_loss_ref := l_gain_or_loss_ref;
147466 END IF;
147467
147468 --
147469
147470
147471 --
147472 AcctLineType_54 (
147473 p_application_id => p_application_id
147474 ,p_event_id => l_event_id
147475 ,p_calculate_acctd_flag => l_calculate_acctd_flag
147476 ,p_calculate_g_l_flag => l_calculate_g_l_flag
147477 ,p_actual_flag => l_actual_flag
147478 ,p_balance_type_code => l_balance_type_code
147479 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
147480
147481 , p_source_4 => l_array_source_4(Idx)
147482 , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
147483 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
147484 , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
147485 , p_source_11 => l_array_source_11(Idx)
147486 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
147487 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
147488 , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
147489 , p_source_15 => l_array_source_15(Idx)
147490 , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
147491 , p_source_18 => l_array_source_18(Idx)
147492 , p_source_19 => l_array_source_19(Idx)
147493 , p_source_20 => l_array_source_20(Idx)
147494 , p_source_21 => l_array_source_21(Idx)
147495 , p_source_22 => l_array_source_22(Idx)
147496 , p_source_24 => l_array_source_24(Idx)
147497 , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
147498 , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
147499 , p_source_29 => g_array_event(l_event_id).array_value_num('source_29')
147500 , p_source_30 => g_array_event(l_event_id).array_value_num('source_30')
147501 , p_source_31 => g_array_event(l_event_id).array_value_num('source_31')
147502 );
147503 If(l_balance_type_code = 'A') THEN
147504 l_actual_gain_loss_ref := l_gain_or_loss_ref;
147505 END IF;
147506
147507 --
147508
147509
147510 --
147511 AcctLineType_72 (
147512 p_application_id => p_application_id
147513 ,p_event_id => l_event_id
147514 ,p_calculate_acctd_flag => l_calculate_acctd_flag
147515 ,p_calculate_g_l_flag => l_calculate_g_l_flag
147516 ,p_actual_flag => l_actual_flag
147517 ,p_balance_type_code => l_balance_type_code
147518 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
147519
147520 , p_source_4 => l_array_source_4(Idx)
147521 , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
147522 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
147523 , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
147524 , p_source_11 => l_array_source_11(Idx)
147525 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
147526 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
147527 , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
147528 , p_source_15 => l_array_source_15(Idx)
147529 , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
147530 , p_source_18 => l_array_source_18(Idx)
147531 , p_source_19 => l_array_source_19(Idx)
147532 , p_source_20 => l_array_source_20(Idx)
147533 , p_source_21 => l_array_source_21(Idx)
147534 , p_source_22 => l_array_source_22(Idx)
147535 , p_source_24 => l_array_source_24(Idx)
147536 , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
147537 , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
147538 , p_source_29 => g_array_event(l_event_id).array_value_num('source_29')
147539 , p_source_30 => g_array_event(l_event_id).array_value_num('source_30')
147540 , p_source_31 => g_array_event(l_event_id).array_value_num('source_31')
147541 );
147542 If(l_balance_type_code = 'A') THEN
147543 l_actual_gain_loss_ref := l_gain_or_loss_ref;
147544 END IF;
147545
147546 --
147547
147548
147549 --
147550 AcctLineType_152 (
147551 p_application_id => p_application_id
147552 ,p_event_id => l_event_id
147553 ,p_calculate_acctd_flag => l_calculate_acctd_flag
147554 ,p_calculate_g_l_flag => l_calculate_g_l_flag
147555 ,p_actual_flag => l_actual_flag
147556 ,p_balance_type_code => l_balance_type_code
147557 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
147558
147559 , p_source_4 => l_array_source_4(Idx)
147560 , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
147561 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
147562 , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
147563 , p_source_11 => l_array_source_11(Idx)
147564 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
147565 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
147566 , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
147567 , p_source_15 => l_array_source_15(Idx)
147568 , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
147569 , p_source_18 => l_array_source_18(Idx)
147570 , p_source_19 => l_array_source_19(Idx)
147571 , p_source_20 => l_array_source_20(Idx)
147572 , p_source_21 => l_array_source_21(Idx)
147573 , p_source_22 => l_array_source_22(Idx)
147574 , p_source_24 => l_array_source_24(Idx)
147575 , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
147576 , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
147577 , p_source_29 => g_array_event(l_event_id).array_value_num('source_29')
147578 , p_source_30 => g_array_event(l_event_id).array_value_num('source_30')
147579 , p_source_31 => g_array_event(l_event_id).array_value_num('source_31')
147580 );
147581 If(l_balance_type_code = 'A') THEN
147582 l_actual_gain_loss_ref := l_gain_or_loss_ref;
147583 END IF;
147584
147585 --
147586
147587
147588 --
147589 AcctLineType_171 (
147590 p_application_id => p_application_id
147591 ,p_event_id => l_event_id
147592 ,p_calculate_acctd_flag => l_calculate_acctd_flag
147593 ,p_calculate_g_l_flag => l_calculate_g_l_flag
147594 ,p_actual_flag => l_actual_flag
147595 ,p_balance_type_code => l_balance_type_code
147596 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
147597
147598 , p_source_4 => l_array_source_4(Idx)
147599 , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
147600 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
147601 , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
147602 , p_source_11 => l_array_source_11(Idx)
147603 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
147604 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
147605 , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
147606 , p_source_15 => l_array_source_15(Idx)
147607 , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
147608 , p_source_18 => l_array_source_18(Idx)
147609 , p_source_19 => l_array_source_19(Idx)
147610 , p_source_20 => l_array_source_20(Idx)
147611 , p_source_21 => l_array_source_21(Idx)
147612 , p_source_22 => l_array_source_22(Idx)
147613 , p_source_24 => l_array_source_24(Idx)
147614 , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
147615 , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
147616 , p_source_29 => g_array_event(l_event_id).array_value_num('source_29')
147617 , p_source_30 => g_array_event(l_event_id).array_value_num('source_30')
147618 , p_source_31 => g_array_event(l_event_id).array_value_num('source_31')
147619 );
147620 If(l_balance_type_code = 'A') THEN
147621 l_actual_gain_loss_ref := l_gain_or_loss_ref;
147622 END IF;
147623
147624 --
147625
147626
147627 --
147628 AcctLineType_184 (
147629 p_application_id => p_application_id
147630 ,p_event_id => l_event_id
147631 ,p_calculate_acctd_flag => l_calculate_acctd_flag
147632 ,p_calculate_g_l_flag => l_calculate_g_l_flag
147633 ,p_actual_flag => l_actual_flag
147634 ,p_balance_type_code => l_balance_type_code
147635 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
147636
147637 , p_source_4 => l_array_source_4(Idx)
147638 , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
147639 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
147640 , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
147641 , p_source_11 => l_array_source_11(Idx)
147642 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
147643 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
147644 , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
147645 , p_source_15 => l_array_source_15(Idx)
147646 , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
147647 , p_source_18 => l_array_source_18(Idx)
147648 , p_source_19 => l_array_source_19(Idx)
147649 , p_source_20 => l_array_source_20(Idx)
147650 , p_source_21 => l_array_source_21(Idx)
147651 , p_source_22 => l_array_source_22(Idx)
147652 , p_source_24 => l_array_source_24(Idx)
147653 , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
147654 , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
147655 , p_source_29 => g_array_event(l_event_id).array_value_num('source_29')
147656 , p_source_30 => g_array_event(l_event_id).array_value_num('source_30')
147657 , p_source_31 => g_array_event(l_event_id).array_value_num('source_31')
147658 );
147659 If(l_balance_type_code = 'A') THEN
147660 l_actual_gain_loss_ref := l_gain_or_loss_ref;
147661 END IF;
147662
147663 --
147664
147665
147666 --
147667 AcctLineType_209 (
147668 p_application_id => p_application_id
147669 ,p_event_id => l_event_id
147670 ,p_calculate_acctd_flag => l_calculate_acctd_flag
147671 ,p_calculate_g_l_flag => l_calculate_g_l_flag
147672 ,p_actual_flag => l_actual_flag
147673 ,p_balance_type_code => l_balance_type_code
147674 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
147675
147676 , p_source_4 => l_array_source_4(Idx)
147677 , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
147678 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
147679 , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
147680 , p_source_11 => l_array_source_11(Idx)
147681 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
147682 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
147683 , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
147684 , p_source_15 => l_array_source_15(Idx)
147685 , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
147686 , p_source_18 => l_array_source_18(Idx)
147687 , p_source_19 => l_array_source_19(Idx)
147688 , p_source_20 => l_array_source_20(Idx)
147689 , p_source_21 => l_array_source_21(Idx)
147690 , p_source_22 => l_array_source_22(Idx)
147691 , p_source_24 => l_array_source_24(Idx)
147692 , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
147693 , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
147694 , p_source_29 => g_array_event(l_event_id).array_value_num('source_29')
147695 , p_source_30 => g_array_event(l_event_id).array_value_num('source_30')
147696 , p_source_31 => g_array_event(l_event_id).array_value_num('source_31')
147697 );
147698 If(l_balance_type_code = 'A') THEN
147699 l_actual_gain_loss_ref := l_gain_or_loss_ref;
147700 END IF;
147701
147702 --
147703
147704
147705 --
147706 AcctLineType_216 (
147707 p_application_id => p_application_id
147708 ,p_event_id => l_event_id
147709 ,p_calculate_acctd_flag => l_calculate_acctd_flag
147710 ,p_calculate_g_l_flag => l_calculate_g_l_flag
147711 ,p_actual_flag => l_actual_flag
147712 ,p_balance_type_code => l_balance_type_code
147713 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
147714
147715 , p_source_4 => l_array_source_4(Idx)
147716 , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
147717 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
147718 , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
147719 , p_source_11 => l_array_source_11(Idx)
147720 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
147721 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
147722 , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
147723 , p_source_15 => l_array_source_15(Idx)
147724 , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
147725 , p_source_18 => l_array_source_18(Idx)
147726 , p_source_19 => l_array_source_19(Idx)
147727 , p_source_20 => l_array_source_20(Idx)
147728 , p_source_21 => l_array_source_21(Idx)
147729 , p_source_22 => l_array_source_22(Idx)
147730 , p_source_24 => l_array_source_24(Idx)
147731 , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
147732 , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
147733 , p_source_29 => g_array_event(l_event_id).array_value_num('source_29')
147734 , p_source_30 => g_array_event(l_event_id).array_value_num('source_30')
147735 , p_source_31 => g_array_event(l_event_id).array_value_num('source_31')
147736 );
147737 If(l_balance_type_code = 'A') THEN
147738 l_actual_gain_loss_ref := l_gain_or_loss_ref;
147739 END IF;
147740
147741 --
147742
147743 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
147744 -- or secondary ledger that has different currency with primary
147745 -- or alc that is calculated by sla
147746 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
147747 (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'))
147748
147749 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
147750 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
147751 AND (l_actual_flag = 'A')) THEN
147752 XLA_AE_LINES_PKG.CreateGainOrLossLines(
147753 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
147754 ,p_application_id => p_application_id
147755 ,p_amb_context_code => 'DEFAULT'
147756 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
147757 ,p_event_class_code => C_EVENT_CLASS_CODE
147758 ,p_event_type_code => C_EVENT_TYPE_CODE
147759
147760 ,p_gain_ccid => -1
147761 ,p_loss_ccid => -1
147762
147763 ,p_actual_flag => l_actual_flag
147764 ,p_enc_flag => null
147765 ,p_actual_g_l_ref => l_actual_gain_loss_ref
147766 ,p_enc_g_l_ref => null
147767 );
147768 END IF;
147769 END IF;
147770 END IF;
147771
147772 ELSE
147773 --
147774 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
147775 --
147776 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
147777 trace
147778 (p_msg => 'Trancaction revesal option is Y'
147779 ,p_level => C_LEVEL_STATEMENT
147780 ,p_module => l_log_module);
147781 END IF;
147782 END IF;
147783
147784 END LOOP;
147785 l_result := XLA_AE_LINES_PKG.InsertLines ;
147786 end loop;
147787 close line_cur;
147788
147789
147790 --
147791 -- insert headers into xla_ae_headers_gt table
147792 --
147793 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
147794
147795 -- insert into errors table here.
147796
147797 END LOOP;
147798
147799 --
147800 -- 4865292
147801 --
147802 -- Compare g_hdr_extract_count with event count in
147803 -- CreateHeadersAndLines.
147804 --
147805 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
147806
147807 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
147808 trace (p_msg => '# rows extracted from header extract objects '
147809 || ' (running total): '
147810 || g_hdr_extract_count
147811 ,p_level => C_LEVEL_STATEMENT
147812 ,p_module => l_log_module);
147813 END IF;
147814
147815 CLOSE header_cur;
147816 --
147817
147818 --
147819 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
147820 trace
147821 (p_msg => 'END of EventClass_256'
147822 ,p_level => C_LEVEL_PROCEDURE
147823 ,p_module => l_log_module);
147824 END IF;
147825 --
147826 RETURN l_result;
147827 EXCEPTION
147828 WHEN xla_exceptions_pkg.application_exception THEN
147829
147830 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
147831
147832
147833 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
147834
147835 RAISE;
147836
147837 WHEN NO_DATA_FOUND THEN
147838
147839 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
147840 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
147841
147842 FOR header_record IN header_cur
147843 LOOP
147844 l_array_header_events(header_record.event_id) := header_record.event_id;
147845 END LOOP;
147846
147847 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
147848 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
147849
147850 fnd_file.put_line(fnd_file.LOG, ' ');
147851 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
147852 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
147853 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
147854
147855 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
147856 LOOP
147857 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
147858 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
147859 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
147860 END IF;
147861 END LOOP;
147862
147863 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
147864 fnd_file.put_line(fnd_file.LOG, ' ');
147865
147866
147867 xla_exceptions_pkg.raise_message
147868 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_256');
147869
147870
147871 WHEN OTHERS THEN
147872 xla_exceptions_pkg.raise_message
147873 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_256');
147874 END EventClass_256;
147875 --
147876
147877 ---------------------------------------
147878 --
147879 -- PRIVATE PROCEDURE
147880 -- insert_sources_257
147881 --
147882 ----------------------------------------
147883 --
147884 PROCEDURE insert_sources_257(
147885 p_target_ledger_id IN NUMBER
147886 , p_language IN VARCHAR2
147887 , p_sla_ledger_id IN NUMBER
147888 , p_pad_start_date IN DATE
147889 , p_pad_end_date IN DATE
147890 )
147891 IS
147892
147893 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'FOB_RCPT_SENDER_RCPT_ALL';
147894 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'FOB_RCPT_SENDER_RCPT';
147895 p_apps_owner VARCHAR2(30);
147896 l_log_module VARCHAR2(240);
147897 BEGIN
147898 IF g_log_enabled THEN
147899 l_log_module := C_DEFAULT_MODULE||'.insert_sources_257';
147900 END IF;
147901 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
147902
147903 trace
147904 (p_msg => 'BEGIN of insert_sources_257'
147905 ,p_level => C_LEVEL_PROCEDURE
147906 ,p_module => l_log_module);
147907
147908 END IF;
147909
147910 -- select APPS owner
147911 SELECT oracle_username
147912 INTO p_apps_owner
147913 FROM fnd_oracle_userid
147914 WHERE read_only_flag = 'U'
147915 ;
147916
147917 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
147918 trace
147919 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
147920 ' - p_language = '||p_language||
147921 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
147922 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
147923 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
147924 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
147925 ,p_level => C_LEVEL_STATEMENT
147926 ,p_module => l_log_module);
147927 END IF;
147928
147929
147930 --
147931 INSERT INTO xla_diag_sources --hdr2
147932 (
147933 event_id
147934 , ledger_id
147935 , sla_ledger_id
147936 , description_language
147937 , object_name
147938 , object_type_code
147939 , line_number
147940 , source_application_id
147941 , source_type_code
147942 , source_code
147943 , source_value
147944 , source_meaning
147945 , created_by
147946 , creation_date
147947 , last_update_date
147948 , last_updated_by
147949 , last_update_login
147950 , program_update_date
147951 , program_application_id
147952 , program_id
147953 , request_id
147954 )
147955 SELECT
147956 event_id
147957 , p_target_ledger_id
147958 , p_sla_ledger_id
147959 , p_language
147960 , object_name
147961 , object_type_code
147962 , line_number
147963 , source_application_id
147964 , source_type_code
147965 , source_code
147966 , SUBSTR(source_value ,1,1996)
147967 , SUBSTR(source_meaning ,1,200)
147968 , xla_environment_pkg.g_Usr_Id
147969 , TRUNC(SYSDATE)
147970 , TRUNC(SYSDATE)
147971 , xla_environment_pkg.g_Usr_Id
147972 , xla_environment_pkg.g_Login_Id
147973 , TRUNC(SYSDATE)
147974 , xla_environment_pkg.g_Prog_Appl_Id
147975 , xla_environment_pkg.g_Prog_Id
147976 , xla_environment_pkg.g_Req_Id
147977 FROM (
147978 SELECT xet.event_id event_id
147979 , 0 line_number
147980 , CASE r
147981 WHEN 1 THEN 'CST_XLA_INV_HEADERS_V'
147982 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V'
147983
147984 ELSE null
147985 END object_name
147986 , CASE r
147987 WHEN 1 THEN 'HEADER'
147988 WHEN 2 THEN 'HEADER'
147989
147990 ELSE null
147991 END object_type_code
147992 , CASE r
147993 WHEN 1 THEN '707'
147994 WHEN 2 THEN '707'
147995
147996 ELSE null
147997 END source_application_id
147998 , 'S' source_type_code
147999 , CASE r
148000 WHEN 1 THEN 'DISTRIBUTION_TYPE'
148001 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR'
148002
148003 ELSE null
148004 END source_code
148005 , CASE r
148006 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
148007 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
148008
148009 ELSE null
148010 END source_value
148011 , CASE r
148012 WHEN 1 THEN fvl12.meaning
148013 WHEN 2 THEN fvl38.meaning
148014
148015 ELSE null
148016 END source_meaning
148017 FROM xla_events_gt xet
148018 , CST_XLA_INV_HEADERS_V h1
148019 , fnd_lookup_values fvl12
148020 , fnd_lookup_values fvl38
148021 ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
148022 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
148023 AND xet.event_class_code = C_EVENT_CLASS_CODE
148024 AND h1.event_id = xet.event_id
148025 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
148026 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
148027 AND fvl12.view_application_id(+) = 700
148028 AND fvl12.language(+) = USERENV('LANG')
148029 AND fvl38.lookup_type(+) = 'YES_NO'
148030 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
148031 AND fvl38.view_application_id(+) = 0
148032 AND fvl38.language(+) = USERENV('LANG')
148033
148034 )
148035 ;
148036 --
148037 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
148038
148039 trace
148040 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
148041 ,p_level => C_LEVEL_STATEMENT
148042 ,p_module => l_log_module);
148043
148044 END IF;
148045 --
148046
148047
148048
148049 --
148050 INSERT INTO xla_diag_sources --line2
148051 (
148052 event_id
148053 , ledger_id
148054 , sla_ledger_id
148055 , description_language
148056 , object_name
148057 , object_type_code
148058 , line_number
148059 , source_application_id
148060 , source_type_code
148061 , source_code
148062 , source_value
148063 , source_meaning
148064 , created_by
148065 , creation_date
148066 , last_update_date
148067 , last_updated_by
148068 , last_update_login
148069 , program_update_date
148070 , program_application_id
148071 , program_id
148072 , request_id
148073 )
148074 SELECT event_id
148075 , p_target_ledger_id
148076 , p_sla_ledger_id
148077 , p_language
148078 , object_name
148079 , object_type_code
148080 , line_number
148081 , source_application_id
148082 , source_type_code
148083 , source_code
148084 , SUBSTR(source_value,1,1996)
148085 , SUBSTR(source_meaning ,1,200)
148086 , xla_environment_pkg.g_Usr_Id
148087 , TRUNC(SYSDATE)
148088 , TRUNC(SYSDATE)
148089 , xla_environment_pkg.g_Usr_Id
148090 , xla_environment_pkg.g_Login_Id
148091 , TRUNC(SYSDATE)
148092 , xla_environment_pkg.g_Prog_Appl_Id
148093 , xla_environment_pkg.g_Prog_Id
148094 , xla_environment_pkg.g_Req_Id
148095 FROM (
148096 SELECT xet.event_id event_id
148097 , l2.line_number line_number
148098 , CASE r
148099 WHEN 1 THEN 'CST_XLA_INV_LINES_V'
148100 WHEN 2 THEN 'CST_XLA_INV_LINES_V'
148101 WHEN 3 THEN 'CST_XLA_INV_LINES_V'
148102 WHEN 4 THEN 'CST_XLA_INV_LINES_V'
148103 WHEN 5 THEN 'CST_XLA_INV_LINES_V'
148104 WHEN 6 THEN 'CST_XLA_INV_LINES_V'
148105 WHEN 7 THEN 'CST_XLA_INV_LINES_V'
148106 WHEN 8 THEN 'CST_XLA_INV_LINES_V'
148107 WHEN 9 THEN 'CST_XLA_INV_LINES_V'
148108
148109 ELSE null
148110 END object_name
148111 , CASE r
148112 WHEN 1 THEN 'LINE'
148113 WHEN 2 THEN 'LINE'
148114 WHEN 3 THEN 'LINE'
148115 WHEN 4 THEN 'LINE'
148116 WHEN 5 THEN 'LINE'
148117 WHEN 6 THEN 'LINE'
148118 WHEN 7 THEN 'LINE'
148119 WHEN 8 THEN 'LINE'
148120 WHEN 9 THEN 'LINE'
148121
148122 ELSE null
148123 END object_type_code
148124 , CASE r
148125 WHEN 1 THEN '707'
148126 WHEN 2 THEN '707'
148127 WHEN 3 THEN '707'
148128 WHEN 4 THEN '707'
148129 WHEN 5 THEN '707'
148130 WHEN 6 THEN '707'
148131 WHEN 7 THEN '707'
148132 WHEN 8 THEN '707'
148133 WHEN 9 THEN '707'
148134
148135 ELSE null
148136 END source_application_id
148137 , 'S' source_type_code
148138 , CASE r
148139 WHEN 1 THEN 'CODE_COMBINATION_ID'
148140 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER'
148141 WHEN 3 THEN 'CURRENCY_CODE'
148142 WHEN 4 THEN 'ENTERED_AMOUNT'
148143 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE'
148144 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE'
148145 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE'
148146 WHEN 8 THEN 'ACCOUNTED_AMOUNT'
148147 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE'
148148
148149 ELSE null
148150 END source_code
148151 , CASE r
148152 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
148153 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
148154 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
148155 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
148156 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
148157 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
148158 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
148159 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
148160 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
148161
148162 ELSE null
148163 END source_value
148164 , null source_meaning
148165 FROM xla_events_gt xet
148166 , CST_XLA_INV_LINES_V l2
148167 , (select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
148168 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
148169 AND xet.event_class_code = C_EVENT_CLASS_CODE
148170 AND l2.event_id = xet.event_id
148171
148172 )
148173 ;
148174 --
148175 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
148176
148177 trace
148178 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
148179 ,p_level => C_LEVEL_STATEMENT
148180 ,p_module => l_log_module);
148181
148182 END IF;
148183
148184
148185 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
148186 trace
148187 (p_msg => 'END of insert_sources_257'
148188 ,p_level => C_LEVEL_PROCEDURE
148189 ,p_module => l_log_module);
148190 END IF;
148191 EXCEPTION
148192 WHEN xla_exceptions_pkg.application_exception THEN
148193 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
148194 trace
148195 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
148196 ,p_level => C_LEVEL_EXCEPTION
148197 ,p_module => l_log_module);
148198 END IF;
148199 RAISE;
148200 WHEN OTHERS THEN
148201 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
148202 trace
148203 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
148204 ,p_level => C_LEVEL_EXCEPTION
148205 ,p_module => l_log_module);
148206 END IF;
148207 xla_exceptions_pkg.raise_message
148208 (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_257');
148209 END insert_sources_257;
148210 --
148211
148212 ---------------------------------------
148213 --
148214 -- PRIVATE FUNCTION
148215 -- EventClass_257
148216 --
148217 ----------------------------------------
148218 --
148219 FUNCTION EventClass_257
148220 (p_application_id IN NUMBER
148221 ,p_base_ledger_id IN NUMBER
148222 ,p_target_ledger_id IN NUMBER
148223 ,p_language IN VARCHAR2
148224 ,p_currency_code IN VARCHAR2
148225 ,p_sla_ledger_id IN NUMBER
148226 ,p_pad_start_date IN DATE
148227 ,p_pad_end_date IN DATE
148228 ,p_primary_ledger_id IN NUMBER)
148229 RETURN BOOLEAN IS
148230 --
148231 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'FOB_RCPT_SENDER_RCPT_ALL';
148232 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'FOB_RCPT_SENDER_RCPT';
148233
148234 l_calculate_acctd_flag VARCHAR2(1) :='N';
148235 l_calculate_g_l_flag VARCHAR2(1) :='N';
148236 --
148237 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
148238 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
148239 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
148240 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
148241 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
148242 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
148243 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
148244 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
148245 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
148246 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
148247 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
148248 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
148249 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
148250 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
148251 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
148252 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
148253 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
148254 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
148255 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
148256 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
148257 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
148258 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
148259 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
148260 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
148261 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
148262 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
148263
148264 l_event_id NUMBER;
148265 l_previous_event_id NUMBER;
148266 l_first_event_id NUMBER;
148267 l_last_event_id NUMBER;
148268
148269 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
148270 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
148271 --
148272 --
148273 l_result BOOLEAN := TRUE;
148274 l_rows NUMBER := 1000;
148275 l_event_type_name VARCHAR2(80) := 'All';
148276 l_event_class_name VARCHAR2(80) := 'Sender-side Intransit Interorg Receipt for FOB Receipt';
148277 l_description VARCHAR2(4000);
148278 l_transaction_reversal NUMBER;
148279 l_ae_header_id NUMBER;
148280 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
148281 l_log_module VARCHAR2(240);
148282 --
148283 l_acct_reversal_source VARCHAR2(30);
148284 l_trx_reversal_source VARCHAR2(30);
148285
148286 l_continue_with_lines BOOLEAN := TRUE;
148287 --
148288 l_acc_rev_gl_date_source DATE; -- 4262811
148289 --
148290 type t_array_event_id is table of number index by binary_integer;
148291
148292 l_rec_array_event t_rec_array_event;
148293 l_null_rec_array_event t_rec_array_event;
148294 l_array_ae_header_id xla_number_array_type;
148295 l_actual_flag VARCHAR2(1) := NULL;
148296 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
148297 l_balance_type_code VARCHAR2(1) :=NULL;
148298 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
148299
148300 --
148301 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
148302 --
148303
148304 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
148305 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
148306
148307 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
148308 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
148309 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
148310 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
148311 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
148312 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
148313 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
148314 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
148315 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
148316
148317 l_array_source_12 t_array_source_12;
148318 l_array_source_12_meaning t_array_lookup_meaning;
148319 l_array_source_38 t_array_source_38;
148320 l_array_source_38_meaning t_array_lookup_meaning;
148321
148322 l_array_source_4 t_array_source_4;
148323 l_array_source_11 t_array_source_11;
148324 l_array_source_15 t_array_source_15;
148325 l_array_source_18 t_array_source_18;
148326 l_array_source_19 t_array_source_19;
148327 l_array_source_20 t_array_source_20;
148328 l_array_source_21 t_array_source_21;
148329 l_array_source_22 t_array_source_22;
148330 l_array_source_24 t_array_source_24;
148331
148332 --
148333 CURSOR header_cur
148334 IS
148335 SELECT /*+ leading(xet) cardinality(xet,1) */
148336 -- Event Class Code: FOB_RCPT_SENDER_RCPT
148337 xet.entity_id
148338 ,xet.legal_entity_id
148339 ,xet.entity_code
148340 ,xet.transaction_number
148341 ,xet.event_id
148342 ,xet.event_class_code
148343 ,xet.event_type_code
148344 ,xet.event_number
148345 ,xet.event_date
148346 ,xet.transaction_date
148347 ,xet.reference_num_1
148348 ,xet.reference_num_2
148349 ,xet.reference_num_3
148350 ,xet.reference_num_4
148351 ,xet.reference_char_1
148352 ,xet.reference_char_2
148353 ,xet.reference_char_3
148354 ,xet.reference_char_4
148355 ,xet.reference_date_1
148356 ,xet.reference_date_2
148357 ,xet.reference_date_3
148358 ,xet.reference_date_4
148359 ,xet.event_created_by
148360 ,xet.budgetary_control_flag
148361 , h1.DISTRIBUTION_TYPE source_12
148362 , fvl12.meaning source_12_meaning
148363 , h1.TRANSFER_TO_GL_INDICATOR source_38
148364 , fvl38.meaning source_38_meaning
148365 FROM xla_events_gt xet
148366 , CST_XLA_INV_HEADERS_V h1
148367 , fnd_lookup_values fvl12
148368 , fnd_lookup_values fvl38
148369 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
148370 and xet.event_class_code = C_EVENT_CLASS_CODE
148371 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
148372 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
148373 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
148374 AND fvl12.view_application_id(+) = 700
148375 AND fvl12.language(+) = USERENV('LANG')
148376 AND fvl38.lookup_type(+) = 'YES_NO'
148377 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
148378 AND fvl38.view_application_id(+) = 0
148379 AND fvl38.language(+) = USERENV('LANG')
148380
148381 ORDER BY event_id
148382 ;
148383
148384
148385 --
148386 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
148387 IS
148388 SELECT /*+ leading(xet) cardinality(xet,1) */
148389 -- Event Class Code: FOB_RCPT_SENDER_RCPT
148390 xet.entity_id
148391 ,xet.legal_entity_id
148392 ,xet.entity_code
148393 ,xet.transaction_number
148394 ,xet.event_id
148395 ,xet.event_class_code
148396 ,xet.event_type_code
148397 ,xet.event_number
148398 ,xet.event_date
148399 ,xet.transaction_date
148400 ,xet.reference_num_1
148401 ,xet.reference_num_2
148402 ,xet.reference_num_3
148403 ,xet.reference_num_4
148404 ,xet.reference_char_1
148405 ,xet.reference_char_2
148406 ,xet.reference_char_3
148407 ,xet.reference_char_4
148408 ,xet.reference_date_1
148409 ,xet.reference_date_2
148410 ,xet.reference_date_3
148411 ,xet.reference_date_4
148412 ,xet.event_created_by
148413 ,xet.budgetary_control_flag
148414 , l2.LINE_NUMBER
148415 , l2.CODE_COMBINATION_ID source_4
148416 , l2.DISTRIBUTION_IDENTIFIER source_11
148417 , l2.CURRENCY_CODE source_15
148418 , l2.ENTERED_AMOUNT source_18
148419 , l2.CURRENCY_CONVERSION_DATE source_19
148420 , l2.CURRENCY_CONVERSION_RATE source_20
148421 , l2.CURRENCY_CONVERSION_TYPE source_21
148422 , l2.ACCOUNTED_AMOUNT source_22
148423 , l2.ACCOUNTING_LINE_TYPE_CODE source_24
148424 FROM xla_events_gt xet
148425 , CST_XLA_INV_LINES_V l2
148426 WHERE xet.event_id between x_first_event_id and x_last_event_id
148427 and xet.event_date between p_pad_start_date and p_pad_end_date
148428 and xet.event_class_code = C_EVENT_CLASS_CODE
148429 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
148430 ;
148431
148432 --
148433 BEGIN
148434 IF g_log_enabled THEN
148435 l_log_module := C_DEFAULT_MODULE||'.EventClass_257';
148436 END IF;
148437 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
148438 trace
148439 (p_msg => 'BEGIN of EventClass_257'
148440 ,p_level => C_LEVEL_PROCEDURE
148441 ,p_module => l_log_module);
148442 END IF;
148443
148444 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
148445 trace
148446 (p_msg => 'p_application_id = '||p_application_id||
148447 ' - p_base_ledger_id = '||p_base_ledger_id||
148448 ' - p_target_ledger_id = '||p_target_ledger_id||
148449 ' - p_language = '||p_language||
148450 ' - p_currency_code = '||p_currency_code||
148451 ' - p_sla_ledger_id = '||p_sla_ledger_id
148452 ,p_level => C_LEVEL_STATEMENT
148453 ,p_module => l_log_module);
148454 END IF;
148455 --
148456 -- initialze arrays
148457 --
148458 g_array_event.DELETE;
148459 l_rec_array_event := l_null_rec_array_event;
148460 --
148461 --------------------------------------
148462 -- 4262811 Initialze MPA Line Number
148463 --------------------------------------
148464 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
148465
148466 --
148467
148468 --
148469 OPEN header_cur;
148470 --
148471 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
148472 trace
148473 (p_msg => 'SQL - FETCH header_cur'
148474 ,p_level => C_LEVEL_STATEMENT
148475 ,p_module => l_log_module);
148476 END IF;
148477 --
148478 LOOP
148479 FETCH header_cur BULK COLLECT INTO
148480 l_array_entity_id
148481 , l_array_legal_entity_id
148482 , l_array_entity_code
148483 , l_array_transaction_num
148484 , l_array_event_id
148485 , l_array_class_code
148486 , l_array_event_type
148487 , l_array_event_number
148488 , l_array_event_date
148489 , l_array_transaction_date
148490 , l_array_reference_num_1
148491 , l_array_reference_num_2
148492 , l_array_reference_num_3
148493 , l_array_reference_num_4
148494 , l_array_reference_char_1
148495 , l_array_reference_char_2
148496 , l_array_reference_char_3
148497 , l_array_reference_char_4
148498 , l_array_reference_date_1
148499 , l_array_reference_date_2
148500 , l_array_reference_date_3
148501 , l_array_reference_date_4
148502 , l_array_event_created_by
148503 , l_array_budgetary_control_flag
148504 , l_array_source_12
148505 , l_array_source_12_meaning
148506 , l_array_source_38
148507 , l_array_source_38_meaning
148508 LIMIT l_rows;
148509 --
148510 IF (C_LEVEL_EVENT >= g_log_level) THEN
148511 trace
148512 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
148513 ,p_level => C_LEVEL_EVENT
148514 ,p_module => l_log_module);
148515 END IF;
148516 --
148517 EXIT WHEN l_array_entity_id.COUNT = 0;
148518
148519 -- initialize arrays
148520 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
148521 XLA_AE_LINES_PKG.g_rec_lines := NULL;
148522
148523 --
148524 -- Bug 4458708
148525 --
148526 XLA_AE_LINES_PKG.g_LineNumber := 0;
148527
148528
148529 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
148530 g_last_hdr_idx := l_array_event_id.LAST;
148531 --
148532 -- loop for the headers. Each iteration is for each header extract row
148533 -- fetched in header cursor
148534 --
148535 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
148536
148537 --
148538 -- set event info as cache for other routines to refer event attributes
148539 --
148540 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
148541 (p_application_id => p_application_id
148542 ,p_primary_ledger_id => p_primary_ledger_id
148543 ,p_base_ledger_id => p_base_ledger_id
148544 ,p_target_ledger_id => p_target_ledger_id
148545 ,p_entity_id => l_array_entity_id(hdr_idx)
148546 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
148547 ,p_entity_code => l_array_entity_code(hdr_idx)
148548 ,p_transaction_num => l_array_transaction_num(hdr_idx)
148549 ,p_event_id => l_array_event_id(hdr_idx)
148550 ,p_event_class_code => l_array_class_code(hdr_idx)
148551 ,p_event_type_code => l_array_event_type(hdr_idx)
148552 ,p_event_number => l_array_event_number(hdr_idx)
148553 ,p_event_date => l_array_event_date(hdr_idx)
148554 ,p_transaction_date => l_array_transaction_date(hdr_idx)
148555 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
148556 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
148557 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
148558 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
148559 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
148560 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
148561 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
148562 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
148563 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
148564 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
148565 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
148566 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
148567 ,p_event_created_by => l_array_event_created_by(hdr_idx)
148568 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
148569
148570 --
148571 -- set the status of entry to C_VALID (0)
148572 --
148573 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
148574
148575 --
148576 -- initialize a row for ae header
148577 --
148578 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
148579
148580 l_event_id := l_array_event_id(hdr_idx);
148581
148582 --
148583 -- storing the hdr_idx for event. May be used by line cursor.
148584 --
148585 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
148586
148587 --
148588 -- store sources from header extract. This can be improved to
148589 -- store only those sources from header extract that may be used in lines
148590 --
148591
148592 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
148593 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
148594 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
148595 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
148596
148597 --
148598 -- initilaize the status of ae headers for diffrent balance types
148599 -- the status is initialised to C_NOT_CREATED (2)
148600 --
148601 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
148602 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
148603 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
148604
148605 --
148606 -- call api to validate and store accounting attributes for header
148607 --
148608
148609 ------------------------------------------------------------
148610 -- Accrual Reversal : to get date for Standard Source (NONE)
148611 ------------------------------------------------------------
148612 l_acc_rev_gl_date_source := NULL;
148613
148614 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
148615 l_rec_acct_attrs.array_date_value(1) :=
148616 xla_ae_sources_pkg.GetSystemSourceDate(
148617 p_source_code => 'XLA_REFERENCE_DATE_1'
148618 , p_source_type_code => 'Y'
148619 , p_source_application_id => 602
148620 );
148621 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_TRANSFER_FLAG';
148622 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
148623
148624
148625 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
148626
148627 XLA_AE_HEADER_PKG.SetJeCategoryName;
148628
148629 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
148630 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
148631 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
148632 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
148633 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
148634
148635
148636 -- No header level analytical criteria
148637
148638 --
148639 --accounting attribute enhancement, bug 3612931
148640 --
148641 l_trx_reversal_source := SUBSTR(NULL, 1,30);
148642
148643 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
148644 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
148645
148646 xla_accounting_err_pkg.build_message
148647 (p_appli_s_name => 'XLA'
148648 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
148649 ,p_token_1 => 'ACCT_ATTR_NAME'
148650 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
148651 ,p_token_2 => 'PRODUCT_NAME'
148652 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
148653 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
148654 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
148655 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
148656
148657 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
148658 --
148659 -- following sets the accounting attributes needed to reverse
148660 -- accounting for a distributeion
148661 --
148662 xla_ae_lines_pkg.SetTrxReversalAttrs
148663 (p_event_id => l_event_id
148664 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
148665 ,p_trx_reversal_source => l_trx_reversal_source);
148666
148667 END IF;
148668
148669
148670 ----------------------------------------------------------------
148671 -- 4262811 - update the header statuses to invalid in need be
148672 ----------------------------------------------------------------
148673 --
148674 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
148675
148676
148677 -----------------------------------------------
148678 -- No accrual reversal for the event class/type
148679 -----------------------------------------------
148680 ----------------------------------------------------------------
148681
148682 --
148683 -- this ends the header loop iteration for one bulk fetch
148684 --
148685 END LOOP;
148686
148687 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
148688 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
148689
148690 --
148691 -- insert dummy rows into lines gt table that were created due to
148692 -- transaction reversals
148693 --
148694 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
148695 l_result := XLA_AE_LINES_PKG.InsertLines;
148696 END IF;
148697
148698 --
148699 -- reset the temp_line_num for each set of events fetched from header
148700 -- cursor rather than doing it for each new event in line cursor
148701 -- Bug 3939231
148702 --
148703 xla_ae_lines_pkg.g_temp_line_num := 0;
148704
148705
148706
148707 --
148708 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
148709 --
148710 --
148711 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
148712
148713 trace
148714 (p_msg => 'SQL - FETCH line_cur'
148715 ,p_level => C_LEVEL_STATEMENT
148716 ,p_module => l_log_module);
148717
148718 END IF;
148719 --
148720 --
148721 LOOP
148722 --
148723 FETCH line_cur BULK COLLECT INTO
148724 l_array_entity_id
148725 , l_array_legal_entity_id
148726 , l_array_entity_code
148727 , l_array_transaction_num
148728 , l_array_event_id
148729 , l_array_class_code
148730 , l_array_event_type
148731 , l_array_event_number
148732 , l_array_event_date
148733 , l_array_transaction_date
148734 , l_array_reference_num_1
148735 , l_array_reference_num_2
148736 , l_array_reference_num_3
148737 , l_array_reference_num_4
148738 , l_array_reference_char_1
148739 , l_array_reference_char_2
148740 , l_array_reference_char_3
148741 , l_array_reference_char_4
148742 , l_array_reference_date_1
148743 , l_array_reference_date_2
148744 , l_array_reference_date_3
148745 , l_array_reference_date_4
148746 , l_array_event_created_by
148747 , l_array_budgetary_control_flag
148748 , l_array_extract_line_num
148749 , l_array_source_4
148750 , l_array_source_11
148751 , l_array_source_15
148752 , l_array_source_18
148753 , l_array_source_19
148754 , l_array_source_20
148755 , l_array_source_21
148756 , l_array_source_22
148757 , l_array_source_24
148758 LIMIT l_rows;
148759
148760 --
148761 IF (C_LEVEL_EVENT >= g_log_level) THEN
148762 trace
148763 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
148764 ,p_level => C_LEVEL_EVENT
148765 ,p_module => l_log_module);
148766 END IF;
148767 --
148768 EXIT WHEN l_array_entity_id.count = 0;
148769
148770 XLA_AE_LINES_PKG.g_rec_lines := null;
148771
148772 --
148773 -- Bug 4458708
148774 --
148775 XLA_AE_LINES_PKG.g_LineNumber := 0;
148776 --
148777 --
148778
148779 FOR Idx IN 1..l_array_event_id.count LOOP
148780 --
148781 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
148782 --
148783 l_event_id := l_array_event_id(idx); -- 5648433
148784
148785 --
148786 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
148787 --
148788
148789 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
148790 (g_array_event(l_event_id).array_value_num('header_index'))
148791 ,'N'
148792 ) <> 'Y'
148793 THEN
148794 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
148795 trace
148796 (p_msg => 'Trancaction revesal option is not Y '
148797 ,p_level => C_LEVEL_STATEMENT
148798 ,p_module => l_log_module);
148799 END IF;
148800
148801 --
148802 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
148803 --
148804 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
148805 --
148806 -- set event info as cache for other routines to refer event attributes
148807 --
148808
148809 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
148810 l_previous_event_id := l_event_id;
148811
148812 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
148813 (p_application_id => p_application_id
148814 ,p_primary_ledger_id => p_primary_ledger_id
148815 ,p_base_ledger_id => p_base_ledger_id
148816 ,p_target_ledger_id => p_target_ledger_id
148817 ,p_entity_id => l_array_entity_id(Idx)
148818 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
148819 ,p_entity_code => l_array_entity_code(Idx)
148820 ,p_transaction_num => l_array_transaction_num(Idx)
148821 ,p_event_id => l_array_event_id(Idx)
148822 ,p_event_class_code => l_array_class_code(Idx)
148823 ,p_event_type_code => l_array_event_type(Idx)
148824 ,p_event_number => l_array_event_number(Idx)
148825 ,p_event_date => l_array_event_date(Idx)
148826 ,p_transaction_date => l_array_transaction_date(Idx)
148827 ,p_reference_num_1 => l_array_reference_num_1(Idx)
148828 ,p_reference_num_2 => l_array_reference_num_2(Idx)
148829 ,p_reference_num_3 => l_array_reference_num_3(Idx)
148830 ,p_reference_num_4 => l_array_reference_num_4(Idx)
148831 ,p_reference_char_1 => l_array_reference_char_1(Idx)
148832 ,p_reference_char_2 => l_array_reference_char_2(Idx)
148833 ,p_reference_char_3 => l_array_reference_char_3(Idx)
148834 ,p_reference_char_4 => l_array_reference_char_4(Idx)
148835 ,p_reference_date_1 => l_array_reference_date_1(Idx)
148836 ,p_reference_date_2 => l_array_reference_date_2(Idx)
148837 ,p_reference_date_3 => l_array_reference_date_3(Idx)
148838 ,p_reference_date_4 => l_array_reference_date_4(Idx)
148839 ,p_event_created_by => l_array_event_created_by(Idx)
148840 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
148841 --
148842 END IF;
148843
148844
148845
148846 --
148847 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
148848
148849 l_acct_reversal_source := SUBSTR(NULL, 1,30);
148850
148851 IF l_continue_with_lines THEN
148852 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
148853 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
148854
148855 xla_accounting_err_pkg.build_message
148856 (p_appli_s_name => 'XLA'
148857 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
148858 ,p_token_1 => 'LINE_NUMBER'
148859 ,p_value_1 => l_array_extract_line_num(Idx)
148860 ,p_token_2 => 'PRODUCT_NAME'
148861 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
148862 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
148863 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
148864 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
148865
148866 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
148867 --
148868 -- following sets the accounting attributes needed to reverse
148869 -- accounting for a distributeion
148870 --
148871
148872 --
148873 -- 5217187
148874 --
148875 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
148876 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
148877 g_array_event(l_event_id).array_value_num('header_index'));
148878 --
148879 --
148880
148881 -- No reversal code generated
148882
148883 xla_ae_lines_pkg.SetAcctReversalAttrs
148884 (p_event_id => l_event_id
148885 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
148886 ,p_calculate_acctd_flag => l_calculate_acctd_flag
148887 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
148888 END IF;
148889
148890 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
148891 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
148892
148893 --
148894 AcctLineType_17 (
148895 p_application_id => p_application_id
148896 ,p_event_id => l_event_id
148897 ,p_calculate_acctd_flag => l_calculate_acctd_flag
148898 ,p_calculate_g_l_flag => l_calculate_g_l_flag
148899 ,p_actual_flag => l_actual_flag
148900 ,p_balance_type_code => l_balance_type_code
148901 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
148902
148903 , p_source_4 => l_array_source_4(Idx)
148904 , p_source_11 => l_array_source_11(Idx)
148905 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
148906 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
148907 , p_source_15 => l_array_source_15(Idx)
148908 , p_source_18 => l_array_source_18(Idx)
148909 , p_source_19 => l_array_source_19(Idx)
148910 , p_source_20 => l_array_source_20(Idx)
148911 , p_source_21 => l_array_source_21(Idx)
148912 , p_source_22 => l_array_source_22(Idx)
148913 , p_source_24 => l_array_source_24(Idx)
148914 );
148915 If(l_balance_type_code = 'A') THEN
148916 l_actual_gain_loss_ref := l_gain_or_loss_ref;
148917 END IF;
148918
148919 --
148920
148921
148922 --
148923 AcctLineType_62 (
148924 p_application_id => p_application_id
148925 ,p_event_id => l_event_id
148926 ,p_calculate_acctd_flag => l_calculate_acctd_flag
148927 ,p_calculate_g_l_flag => l_calculate_g_l_flag
148928 ,p_actual_flag => l_actual_flag
148929 ,p_balance_type_code => l_balance_type_code
148930 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
148931
148932 , p_source_4 => l_array_source_4(Idx)
148933 , p_source_11 => l_array_source_11(Idx)
148934 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
148935 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
148936 , p_source_15 => l_array_source_15(Idx)
148937 , p_source_18 => l_array_source_18(Idx)
148938 , p_source_19 => l_array_source_19(Idx)
148939 , p_source_20 => l_array_source_20(Idx)
148940 , p_source_21 => l_array_source_21(Idx)
148941 , p_source_22 => l_array_source_22(Idx)
148942 , p_source_24 => l_array_source_24(Idx)
148943 );
148944 If(l_balance_type_code = 'A') THEN
148945 l_actual_gain_loss_ref := l_gain_or_loss_ref;
148946 END IF;
148947
148948 --
148949
148950
148951 --
148952 AcctLineType_88 (
148953 p_application_id => p_application_id
148954 ,p_event_id => l_event_id
148955 ,p_calculate_acctd_flag => l_calculate_acctd_flag
148956 ,p_calculate_g_l_flag => l_calculate_g_l_flag
148957 ,p_actual_flag => l_actual_flag
148958 ,p_balance_type_code => l_balance_type_code
148959 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
148960
148961 , p_source_4 => l_array_source_4(Idx)
148962 , p_source_11 => l_array_source_11(Idx)
148963 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
148964 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
148965 , p_source_15 => l_array_source_15(Idx)
148966 , p_source_18 => l_array_source_18(Idx)
148967 , p_source_19 => l_array_source_19(Idx)
148968 , p_source_20 => l_array_source_20(Idx)
148969 , p_source_21 => l_array_source_21(Idx)
148970 , p_source_22 => l_array_source_22(Idx)
148971 , p_source_24 => l_array_source_24(Idx)
148972 );
148973 If(l_balance_type_code = 'A') THEN
148974 l_actual_gain_loss_ref := l_gain_or_loss_ref;
148975 END IF;
148976
148977 --
148978
148979
148980 --
148981 AcctLineType_96 (
148982 p_application_id => p_application_id
148983 ,p_event_id => l_event_id
148984 ,p_calculate_acctd_flag => l_calculate_acctd_flag
148985 ,p_calculate_g_l_flag => l_calculate_g_l_flag
148986 ,p_actual_flag => l_actual_flag
148987 ,p_balance_type_code => l_balance_type_code
148988 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
148989
148990 , p_source_4 => l_array_source_4(Idx)
148991 , p_source_11 => l_array_source_11(Idx)
148992 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
148993 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
148994 , p_source_15 => l_array_source_15(Idx)
148995 , p_source_18 => l_array_source_18(Idx)
148996 , p_source_19 => l_array_source_19(Idx)
148997 , p_source_20 => l_array_source_20(Idx)
148998 , p_source_21 => l_array_source_21(Idx)
148999 , p_source_22 => l_array_source_22(Idx)
149000 , p_source_24 => l_array_source_24(Idx)
149001 );
149002 If(l_balance_type_code = 'A') THEN
149003 l_actual_gain_loss_ref := l_gain_or_loss_ref;
149004 END IF;
149005
149006 --
149007
149008
149009 --
149010 AcctLineType_107 (
149011 p_application_id => p_application_id
149012 ,p_event_id => l_event_id
149013 ,p_calculate_acctd_flag => l_calculate_acctd_flag
149014 ,p_calculate_g_l_flag => l_calculate_g_l_flag
149015 ,p_actual_flag => l_actual_flag
149016 ,p_balance_type_code => l_balance_type_code
149017 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
149018
149019 , p_source_4 => l_array_source_4(Idx)
149020 , p_source_11 => l_array_source_11(Idx)
149021 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
149022 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
149023 , p_source_15 => l_array_source_15(Idx)
149024 , p_source_18 => l_array_source_18(Idx)
149025 , p_source_19 => l_array_source_19(Idx)
149026 , p_source_20 => l_array_source_20(Idx)
149027 , p_source_21 => l_array_source_21(Idx)
149028 , p_source_22 => l_array_source_22(Idx)
149029 , p_source_24 => l_array_source_24(Idx)
149030 );
149031 If(l_balance_type_code = 'A') THEN
149032 l_actual_gain_loss_ref := l_gain_or_loss_ref;
149033 END IF;
149034
149035 --
149036
149037
149038 --
149039 AcctLineType_122 (
149040 p_application_id => p_application_id
149041 ,p_event_id => l_event_id
149042 ,p_calculate_acctd_flag => l_calculate_acctd_flag
149043 ,p_calculate_g_l_flag => l_calculate_g_l_flag
149044 ,p_actual_flag => l_actual_flag
149045 ,p_balance_type_code => l_balance_type_code
149046 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
149047
149048 , p_source_4 => l_array_source_4(Idx)
149049 , p_source_11 => l_array_source_11(Idx)
149050 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
149051 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
149052 , p_source_15 => l_array_source_15(Idx)
149053 , p_source_18 => l_array_source_18(Idx)
149054 , p_source_19 => l_array_source_19(Idx)
149055 , p_source_20 => l_array_source_20(Idx)
149056 , p_source_21 => l_array_source_21(Idx)
149057 , p_source_22 => l_array_source_22(Idx)
149058 , p_source_24 => l_array_source_24(Idx)
149059 );
149060 If(l_balance_type_code = 'A') THEN
149061 l_actual_gain_loss_ref := l_gain_or_loss_ref;
149062 END IF;
149063
149064 --
149065
149066
149067 --
149068 AcctLineType_189 (
149069 p_application_id => p_application_id
149070 ,p_event_id => l_event_id
149071 ,p_calculate_acctd_flag => l_calculate_acctd_flag
149072 ,p_calculate_g_l_flag => l_calculate_g_l_flag
149073 ,p_actual_flag => l_actual_flag
149074 ,p_balance_type_code => l_balance_type_code
149075 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
149076
149077 , p_source_4 => l_array_source_4(Idx)
149078 , p_source_11 => l_array_source_11(Idx)
149079 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
149080 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
149081 , p_source_15 => l_array_source_15(Idx)
149082 , p_source_18 => l_array_source_18(Idx)
149083 , p_source_19 => l_array_source_19(Idx)
149084 , p_source_20 => l_array_source_20(Idx)
149085 , p_source_21 => l_array_source_21(Idx)
149086 , p_source_22 => l_array_source_22(Idx)
149087 , p_source_24 => l_array_source_24(Idx)
149088 );
149089 If(l_balance_type_code = 'A') THEN
149090 l_actual_gain_loss_ref := l_gain_or_loss_ref;
149091 END IF;
149092
149093 --
149094
149095 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
149096 -- or secondary ledger that has different currency with primary
149097 -- or alc that is calculated by sla
149098 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
149099 (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'))
149100
149101 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
149102 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
149103 AND (l_actual_flag = 'A')) THEN
149104 XLA_AE_LINES_PKG.CreateGainOrLossLines(
149105 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
149106 ,p_application_id => p_application_id
149107 ,p_amb_context_code => 'DEFAULT'
149108 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
149109 ,p_event_class_code => C_EVENT_CLASS_CODE
149110 ,p_event_type_code => C_EVENT_TYPE_CODE
149111
149112 ,p_gain_ccid => -1
149113 ,p_loss_ccid => -1
149114
149115 ,p_actual_flag => l_actual_flag
149116 ,p_enc_flag => null
149117 ,p_actual_g_l_ref => l_actual_gain_loss_ref
149118 ,p_enc_g_l_ref => null
149119 );
149120 END IF;
149121 END IF;
149122 END IF;
149123
149124 ELSE
149125 --
149126 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
149127 --
149128 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
149129 trace
149130 (p_msg => 'Trancaction revesal option is Y'
149131 ,p_level => C_LEVEL_STATEMENT
149132 ,p_module => l_log_module);
149133 END IF;
149134 END IF;
149135
149136 END LOOP;
149137 l_result := XLA_AE_LINES_PKG.InsertLines ;
149138 end loop;
149139 close line_cur;
149140
149141
149142 --
149143 -- insert headers into xla_ae_headers_gt table
149144 --
149145 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
149146
149147 -- insert into errors table here.
149148
149149 END LOOP;
149150
149151 --
149152 -- 4865292
149153 --
149154 -- Compare g_hdr_extract_count with event count in
149155 -- CreateHeadersAndLines.
149156 --
149157 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
149158
149159 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
149160 trace (p_msg => '# rows extracted from header extract objects '
149161 || ' (running total): '
149162 || g_hdr_extract_count
149163 ,p_level => C_LEVEL_STATEMENT
149164 ,p_module => l_log_module);
149165 END IF;
149166
149167 CLOSE header_cur;
149168 --
149169
149170 --
149171 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
149172 trace
149173 (p_msg => 'END of EventClass_257'
149174 ,p_level => C_LEVEL_PROCEDURE
149175 ,p_module => l_log_module);
149176 END IF;
149177 --
149178 RETURN l_result;
149179 EXCEPTION
149180 WHEN xla_exceptions_pkg.application_exception THEN
149181
149182 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
149183
149184
149185 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
149186
149187 RAISE;
149188
149189 WHEN NO_DATA_FOUND THEN
149190
149191 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
149192 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
149193
149194 FOR header_record IN header_cur
149195 LOOP
149196 l_array_header_events(header_record.event_id) := header_record.event_id;
149197 END LOOP;
149198
149199 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
149200 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
149201
149202 fnd_file.put_line(fnd_file.LOG, ' ');
149203 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
149204 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
149205 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
149206
149207 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
149208 LOOP
149209 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
149210 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
149211 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
149212 END IF;
149213 END LOOP;
149214
149215 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
149216 fnd_file.put_line(fnd_file.LOG, ' ');
149217
149218
149219 xla_exceptions_pkg.raise_message
149220 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_257');
149221
149222
149223 WHEN OTHERS THEN
149224 xla_exceptions_pkg.raise_message
149225 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_257');
149226 END EventClass_257;
149227 --
149228
149229 ---------------------------------------
149230 --
149231 -- PRIVATE PROCEDURE
149232 -- insert_sources_258
149233 --
149234 ----------------------------------------
149235 --
149236 PROCEDURE insert_sources_258(
149237 p_target_ledger_id IN NUMBER
149238 , p_language IN VARCHAR2
149239 , p_sla_ledger_id IN NUMBER
149240 , p_pad_start_date IN DATE
149241 , p_pad_end_date IN DATE
149242 )
149243 IS
149244
149245 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'FOB_RCPT_SENDER_SHIP_ALL';
149246 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'FOB_RCPT_SENDER_SHIP';
149247 p_apps_owner VARCHAR2(30);
149248 l_log_module VARCHAR2(240);
149249 BEGIN
149250 IF g_log_enabled THEN
149251 l_log_module := C_DEFAULT_MODULE||'.insert_sources_258';
149252 END IF;
149253 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
149254
149255 trace
149256 (p_msg => 'BEGIN of insert_sources_258'
149257 ,p_level => C_LEVEL_PROCEDURE
149258 ,p_module => l_log_module);
149259
149260 END IF;
149261
149262 -- select APPS owner
149263 SELECT oracle_username
149264 INTO p_apps_owner
149265 FROM fnd_oracle_userid
149266 WHERE read_only_flag = 'U'
149267 ;
149268
149269 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
149270 trace
149271 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
149272 ' - p_language = '||p_language||
149273 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
149274 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
149275 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
149276 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
149277 ,p_level => C_LEVEL_STATEMENT
149278 ,p_module => l_log_module);
149279 END IF;
149280
149281
149282 --
149283 INSERT INTO xla_diag_sources --hdr2
149284 (
149285 event_id
149286 , ledger_id
149287 , sla_ledger_id
149288 , description_language
149289 , object_name
149290 , object_type_code
149291 , line_number
149292 , source_application_id
149293 , source_type_code
149294 , source_code
149295 , source_value
149296 , source_meaning
149297 , created_by
149298 , creation_date
149299 , last_update_date
149300 , last_updated_by
149301 , last_update_login
149302 , program_update_date
149303 , program_application_id
149304 , program_id
149305 , request_id
149306 )
149307 SELECT
149308 event_id
149309 , p_target_ledger_id
149310 , p_sla_ledger_id
149311 , p_language
149312 , object_name
149313 , object_type_code
149314 , line_number
149315 , source_application_id
149316 , source_type_code
149317 , source_code
149318 , SUBSTR(source_value ,1,1996)
149319 , SUBSTR(source_meaning ,1,200)
149320 , xla_environment_pkg.g_Usr_Id
149321 , TRUNC(SYSDATE)
149322 , TRUNC(SYSDATE)
149323 , xla_environment_pkg.g_Usr_Id
149324 , xla_environment_pkg.g_Login_Id
149325 , TRUNC(SYSDATE)
149326 , xla_environment_pkg.g_Prog_Appl_Id
149327 , xla_environment_pkg.g_Prog_Id
149328 , xla_environment_pkg.g_Req_Id
149329 FROM (
149330 SELECT xet.event_id event_id
149331 , 0 line_number
149332 , CASE r
149333 WHEN 1 THEN 'CST_XLA_INV_HEADERS_V'
149334 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V'
149335
149336 ELSE null
149337 END object_name
149338 , CASE r
149339 WHEN 1 THEN 'HEADER'
149340 WHEN 2 THEN 'HEADER'
149341
149342 ELSE null
149343 END object_type_code
149344 , CASE r
149345 WHEN 1 THEN '707'
149346 WHEN 2 THEN '707'
149347
149348 ELSE null
149349 END source_application_id
149350 , 'S' source_type_code
149351 , CASE r
149352 WHEN 1 THEN 'DISTRIBUTION_TYPE'
149353 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR'
149354
149355 ELSE null
149356 END source_code
149357 , CASE r
149358 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
149359 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
149360
149361 ELSE null
149362 END source_value
149363 , CASE r
149364 WHEN 1 THEN fvl12.meaning
149365 WHEN 2 THEN fvl38.meaning
149366
149367 ELSE null
149368 END source_meaning
149369 FROM xla_events_gt xet
149370 , CST_XLA_INV_HEADERS_V h1
149371 , fnd_lookup_values fvl12
149372 , fnd_lookup_values fvl38
149373 ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
149374 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
149375 AND xet.event_class_code = C_EVENT_CLASS_CODE
149376 AND h1.event_id = xet.event_id
149377 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
149378 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
149379 AND fvl12.view_application_id(+) = 700
149380 AND fvl12.language(+) = USERENV('LANG')
149381 AND fvl38.lookup_type(+) = 'YES_NO'
149382 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
149383 AND fvl38.view_application_id(+) = 0
149384 AND fvl38.language(+) = USERENV('LANG')
149385
149386 )
149387 ;
149388 --
149389 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
149390
149391 trace
149392 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
149393 ,p_level => C_LEVEL_STATEMENT
149394 ,p_module => l_log_module);
149395
149396 END IF;
149397 --
149398
149399
149400
149401 --
149402 INSERT INTO xla_diag_sources --line2
149403 (
149404 event_id
149405 , ledger_id
149406 , sla_ledger_id
149407 , description_language
149408 , object_name
149409 , object_type_code
149410 , line_number
149411 , source_application_id
149412 , source_type_code
149413 , source_code
149414 , source_value
149415 , source_meaning
149416 , created_by
149417 , creation_date
149418 , last_update_date
149419 , last_updated_by
149420 , last_update_login
149421 , program_update_date
149422 , program_application_id
149423 , program_id
149424 , request_id
149425 )
149426 SELECT event_id
149427 , p_target_ledger_id
149428 , p_sla_ledger_id
149429 , p_language
149430 , object_name
149431 , object_type_code
149432 , line_number
149433 , source_application_id
149434 , source_type_code
149435 , source_code
149436 , SUBSTR(source_value,1,1996)
149437 , SUBSTR(source_meaning ,1,200)
149438 , xla_environment_pkg.g_Usr_Id
149439 , TRUNC(SYSDATE)
149440 , TRUNC(SYSDATE)
149441 , xla_environment_pkg.g_Usr_Id
149442 , xla_environment_pkg.g_Login_Id
149443 , TRUNC(SYSDATE)
149444 , xla_environment_pkg.g_Prog_Appl_Id
149445 , xla_environment_pkg.g_Prog_Id
149446 , xla_environment_pkg.g_Req_Id
149447 FROM (
149448 SELECT xet.event_id event_id
149449 , l2.line_number line_number
149450 , CASE r
149451 WHEN 1 THEN 'CST_XLA_INV_LINES_V'
149452 WHEN 2 THEN 'CST_XLA_INV_LINES_V'
149453 WHEN 3 THEN 'CST_XLA_INV_LINES_V'
149454 WHEN 4 THEN 'CST_XLA_INV_LINES_V'
149455 WHEN 5 THEN 'CST_XLA_INV_LINES_V'
149456 WHEN 6 THEN 'CST_XLA_INV_LINES_V'
149457 WHEN 7 THEN 'CST_XLA_INV_LINES_V'
149458 WHEN 8 THEN 'CST_XLA_INV_LINES_V'
149459 WHEN 9 THEN 'CST_XLA_INV_LINES_V'
149460
149461 ELSE null
149462 END object_name
149463 , CASE r
149464 WHEN 1 THEN 'LINE'
149465 WHEN 2 THEN 'LINE'
149466 WHEN 3 THEN 'LINE'
149467 WHEN 4 THEN 'LINE'
149468 WHEN 5 THEN 'LINE'
149469 WHEN 6 THEN 'LINE'
149470 WHEN 7 THEN 'LINE'
149471 WHEN 8 THEN 'LINE'
149472 WHEN 9 THEN 'LINE'
149473
149474 ELSE null
149475 END object_type_code
149476 , CASE r
149477 WHEN 1 THEN '707'
149478 WHEN 2 THEN '707'
149479 WHEN 3 THEN '707'
149480 WHEN 4 THEN '707'
149481 WHEN 5 THEN '707'
149482 WHEN 6 THEN '707'
149483 WHEN 7 THEN '707'
149484 WHEN 8 THEN '707'
149485 WHEN 9 THEN '707'
149486
149487 ELSE null
149488 END source_application_id
149489 , 'S' source_type_code
149490 , CASE r
149491 WHEN 1 THEN 'CODE_COMBINATION_ID'
149492 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER'
149493 WHEN 3 THEN 'CURRENCY_CODE'
149494 WHEN 4 THEN 'ENTERED_AMOUNT'
149495 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE'
149496 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE'
149497 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE'
149498 WHEN 8 THEN 'ACCOUNTED_AMOUNT'
149499 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE'
149500
149501 ELSE null
149502 END source_code
149503 , CASE r
149504 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
149505 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
149506 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
149507 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
149508 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
149509 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
149510 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
149511 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
149512 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
149513
149514 ELSE null
149515 END source_value
149516 , null source_meaning
149517 FROM xla_events_gt xet
149518 , CST_XLA_INV_LINES_V l2
149519 , (select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
149520 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
149521 AND xet.event_class_code = C_EVENT_CLASS_CODE
149522 AND l2.event_id = xet.event_id
149523
149524 )
149525 ;
149526 --
149527 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
149528
149529 trace
149530 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
149531 ,p_level => C_LEVEL_STATEMENT
149532 ,p_module => l_log_module);
149533
149534 END IF;
149535
149536
149537 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
149538 trace
149539 (p_msg => 'END of insert_sources_258'
149540 ,p_level => C_LEVEL_PROCEDURE
149541 ,p_module => l_log_module);
149542 END IF;
149543 EXCEPTION
149544 WHEN xla_exceptions_pkg.application_exception THEN
149545 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
149546 trace
149547 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
149548 ,p_level => C_LEVEL_EXCEPTION
149549 ,p_module => l_log_module);
149550 END IF;
149551 RAISE;
149552 WHEN OTHERS THEN
149553 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
149554 trace
149555 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
149556 ,p_level => C_LEVEL_EXCEPTION
149557 ,p_module => l_log_module);
149558 END IF;
149559 xla_exceptions_pkg.raise_message
149560 (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_258');
149561 END insert_sources_258;
149562 --
149563
149564 ---------------------------------------
149565 --
149566 -- PRIVATE FUNCTION
149567 -- EventClass_258
149568 --
149569 ----------------------------------------
149570 --
149571 FUNCTION EventClass_258
149572 (p_application_id IN NUMBER
149573 ,p_base_ledger_id IN NUMBER
149574 ,p_target_ledger_id IN NUMBER
149575 ,p_language IN VARCHAR2
149576 ,p_currency_code IN VARCHAR2
149577 ,p_sla_ledger_id IN NUMBER
149578 ,p_pad_start_date IN DATE
149579 ,p_pad_end_date IN DATE
149580 ,p_primary_ledger_id IN NUMBER)
149581 RETURN BOOLEAN IS
149582 --
149583 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'FOB_RCPT_SENDER_SHIP_ALL';
149584 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'FOB_RCPT_SENDER_SHIP';
149585
149586 l_calculate_acctd_flag VARCHAR2(1) :='N';
149587 l_calculate_g_l_flag VARCHAR2(1) :='N';
149588 --
149589 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
149590 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
149591 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
149592 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
149593 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
149594 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
149595 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
149596 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
149597 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
149598 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
149599 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
149600 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
149601 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
149602 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
149603 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
149604 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
149605 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
149606 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
149607 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
149608 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
149609 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
149610 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
149611 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
149612 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
149613 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
149614 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
149615
149616 l_event_id NUMBER;
149617 l_previous_event_id NUMBER;
149618 l_first_event_id NUMBER;
149619 l_last_event_id NUMBER;
149620
149621 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
149622 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
149623 --
149624 --
149625 l_result BOOLEAN := TRUE;
149626 l_rows NUMBER := 1000;
149627 l_event_type_name VARCHAR2(80) := 'All';
149628 l_event_class_name VARCHAR2(80) := 'Intransit Interorg Shipment for FOB Receipt';
149629 l_description VARCHAR2(4000);
149630 l_transaction_reversal NUMBER;
149631 l_ae_header_id NUMBER;
149632 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
149633 l_log_module VARCHAR2(240);
149634 --
149635 l_acct_reversal_source VARCHAR2(30);
149636 l_trx_reversal_source VARCHAR2(30);
149637
149638 l_continue_with_lines BOOLEAN := TRUE;
149639 --
149640 l_acc_rev_gl_date_source DATE; -- 4262811
149641 --
149642 type t_array_event_id is table of number index by binary_integer;
149643
149644 l_rec_array_event t_rec_array_event;
149645 l_null_rec_array_event t_rec_array_event;
149646 l_array_ae_header_id xla_number_array_type;
149647 l_actual_flag VARCHAR2(1) := NULL;
149648 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
149649 l_balance_type_code VARCHAR2(1) :=NULL;
149650 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
149651
149652 --
149653 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
149654 --
149655
149656 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
149657 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
149658
149659 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
149660 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
149661 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
149662 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
149663 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
149664 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
149665 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
149666 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
149667 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
149668
149669 l_array_source_12 t_array_source_12;
149670 l_array_source_12_meaning t_array_lookup_meaning;
149671 l_array_source_38 t_array_source_38;
149672 l_array_source_38_meaning t_array_lookup_meaning;
149673
149674 l_array_source_4 t_array_source_4;
149675 l_array_source_11 t_array_source_11;
149676 l_array_source_15 t_array_source_15;
149677 l_array_source_18 t_array_source_18;
149678 l_array_source_19 t_array_source_19;
149679 l_array_source_20 t_array_source_20;
149680 l_array_source_21 t_array_source_21;
149681 l_array_source_22 t_array_source_22;
149682 l_array_source_24 t_array_source_24;
149683
149684 --
149685 CURSOR header_cur
149686 IS
149687 SELECT /*+ leading(xet) cardinality(xet,1) */
149688 -- Event Class Code: FOB_RCPT_SENDER_SHIP
149689 xet.entity_id
149690 ,xet.legal_entity_id
149691 ,xet.entity_code
149692 ,xet.transaction_number
149693 ,xet.event_id
149694 ,xet.event_class_code
149695 ,xet.event_type_code
149696 ,xet.event_number
149697 ,xet.event_date
149698 ,xet.transaction_date
149699 ,xet.reference_num_1
149700 ,xet.reference_num_2
149701 ,xet.reference_num_3
149702 ,xet.reference_num_4
149703 ,xet.reference_char_1
149704 ,xet.reference_char_2
149705 ,xet.reference_char_3
149706 ,xet.reference_char_4
149707 ,xet.reference_date_1
149708 ,xet.reference_date_2
149709 ,xet.reference_date_3
149710 ,xet.reference_date_4
149711 ,xet.event_created_by
149712 ,xet.budgetary_control_flag
149713 , h1.DISTRIBUTION_TYPE source_12
149714 , fvl12.meaning source_12_meaning
149715 , h1.TRANSFER_TO_GL_INDICATOR source_38
149716 , fvl38.meaning source_38_meaning
149717 FROM xla_events_gt xet
149718 , CST_XLA_INV_HEADERS_V h1
149719 , fnd_lookup_values fvl12
149720 , fnd_lookup_values fvl38
149721 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
149722 and xet.event_class_code = C_EVENT_CLASS_CODE
149723 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
149724 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
149725 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
149726 AND fvl12.view_application_id(+) = 700
149727 AND fvl12.language(+) = USERENV('LANG')
149728 AND fvl38.lookup_type(+) = 'YES_NO'
149729 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
149730 AND fvl38.view_application_id(+) = 0
149731 AND fvl38.language(+) = USERENV('LANG')
149732
149733 ORDER BY event_id
149734 ;
149735
149736
149737 --
149738 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
149739 IS
149740 SELECT /*+ leading(xet) cardinality(xet,1) */
149741 -- Event Class Code: FOB_RCPT_SENDER_SHIP
149742 xet.entity_id
149743 ,xet.legal_entity_id
149744 ,xet.entity_code
149745 ,xet.transaction_number
149746 ,xet.event_id
149747 ,xet.event_class_code
149748 ,xet.event_type_code
149749 ,xet.event_number
149750 ,xet.event_date
149751 ,xet.transaction_date
149752 ,xet.reference_num_1
149753 ,xet.reference_num_2
149754 ,xet.reference_num_3
149755 ,xet.reference_num_4
149756 ,xet.reference_char_1
149757 ,xet.reference_char_2
149758 ,xet.reference_char_3
149759 ,xet.reference_char_4
149760 ,xet.reference_date_1
149761 ,xet.reference_date_2
149762 ,xet.reference_date_3
149763 ,xet.reference_date_4
149764 ,xet.event_created_by
149765 ,xet.budgetary_control_flag
149766 , l2.LINE_NUMBER
149767 , l2.CODE_COMBINATION_ID source_4
149768 , l2.DISTRIBUTION_IDENTIFIER source_11
149769 , l2.CURRENCY_CODE source_15
149770 , l2.ENTERED_AMOUNT source_18
149771 , l2.CURRENCY_CONVERSION_DATE source_19
149772 , l2.CURRENCY_CONVERSION_RATE source_20
149773 , l2.CURRENCY_CONVERSION_TYPE source_21
149774 , l2.ACCOUNTED_AMOUNT source_22
149775 , l2.ACCOUNTING_LINE_TYPE_CODE source_24
149776 FROM xla_events_gt xet
149777 , CST_XLA_INV_LINES_V l2
149778 WHERE xet.event_id between x_first_event_id and x_last_event_id
149779 and xet.event_date between p_pad_start_date and p_pad_end_date
149780 and xet.event_class_code = C_EVENT_CLASS_CODE
149781 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
149782 ;
149783
149784 --
149785 BEGIN
149786 IF g_log_enabled THEN
149787 l_log_module := C_DEFAULT_MODULE||'.EventClass_258';
149788 END IF;
149789 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
149790 trace
149791 (p_msg => 'BEGIN of EventClass_258'
149792 ,p_level => C_LEVEL_PROCEDURE
149793 ,p_module => l_log_module);
149794 END IF;
149795
149796 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
149797 trace
149798 (p_msg => 'p_application_id = '||p_application_id||
149799 ' - p_base_ledger_id = '||p_base_ledger_id||
149800 ' - p_target_ledger_id = '||p_target_ledger_id||
149801 ' - p_language = '||p_language||
149802 ' - p_currency_code = '||p_currency_code||
149803 ' - p_sla_ledger_id = '||p_sla_ledger_id
149804 ,p_level => C_LEVEL_STATEMENT
149805 ,p_module => l_log_module);
149806 END IF;
149807 --
149808 -- initialze arrays
149809 --
149810 g_array_event.DELETE;
149811 l_rec_array_event := l_null_rec_array_event;
149812 --
149813 --------------------------------------
149814 -- 4262811 Initialze MPA Line Number
149815 --------------------------------------
149816 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
149817
149818 --
149819
149820 --
149821 OPEN header_cur;
149822 --
149823 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
149824 trace
149825 (p_msg => 'SQL - FETCH header_cur'
149826 ,p_level => C_LEVEL_STATEMENT
149827 ,p_module => l_log_module);
149828 END IF;
149829 --
149830 LOOP
149831 FETCH header_cur BULK COLLECT INTO
149832 l_array_entity_id
149833 , l_array_legal_entity_id
149834 , l_array_entity_code
149835 , l_array_transaction_num
149836 , l_array_event_id
149837 , l_array_class_code
149838 , l_array_event_type
149839 , l_array_event_number
149840 , l_array_event_date
149841 , l_array_transaction_date
149842 , l_array_reference_num_1
149843 , l_array_reference_num_2
149844 , l_array_reference_num_3
149845 , l_array_reference_num_4
149846 , l_array_reference_char_1
149847 , l_array_reference_char_2
149848 , l_array_reference_char_3
149849 , l_array_reference_char_4
149850 , l_array_reference_date_1
149851 , l_array_reference_date_2
149852 , l_array_reference_date_3
149853 , l_array_reference_date_4
149854 , l_array_event_created_by
149855 , l_array_budgetary_control_flag
149856 , l_array_source_12
149857 , l_array_source_12_meaning
149858 , l_array_source_38
149859 , l_array_source_38_meaning
149860 LIMIT l_rows;
149861 --
149862 IF (C_LEVEL_EVENT >= g_log_level) THEN
149863 trace
149864 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
149865 ,p_level => C_LEVEL_EVENT
149866 ,p_module => l_log_module);
149867 END IF;
149868 --
149869 EXIT WHEN l_array_entity_id.COUNT = 0;
149870
149871 -- initialize arrays
149872 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
149873 XLA_AE_LINES_PKG.g_rec_lines := NULL;
149874
149875 --
149876 -- Bug 4458708
149877 --
149878 XLA_AE_LINES_PKG.g_LineNumber := 0;
149879
149880
149881 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
149882 g_last_hdr_idx := l_array_event_id.LAST;
149883 --
149884 -- loop for the headers. Each iteration is for each header extract row
149885 -- fetched in header cursor
149886 --
149887 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
149888
149889 --
149890 -- set event info as cache for other routines to refer event attributes
149891 --
149892 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
149893 (p_application_id => p_application_id
149894 ,p_primary_ledger_id => p_primary_ledger_id
149895 ,p_base_ledger_id => p_base_ledger_id
149896 ,p_target_ledger_id => p_target_ledger_id
149897 ,p_entity_id => l_array_entity_id(hdr_idx)
149898 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
149899 ,p_entity_code => l_array_entity_code(hdr_idx)
149900 ,p_transaction_num => l_array_transaction_num(hdr_idx)
149901 ,p_event_id => l_array_event_id(hdr_idx)
149902 ,p_event_class_code => l_array_class_code(hdr_idx)
149903 ,p_event_type_code => l_array_event_type(hdr_idx)
149904 ,p_event_number => l_array_event_number(hdr_idx)
149905 ,p_event_date => l_array_event_date(hdr_idx)
149906 ,p_transaction_date => l_array_transaction_date(hdr_idx)
149907 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
149908 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
149909 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
149910 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
149911 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
149912 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
149913 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
149914 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
149915 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
149916 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
149917 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
149918 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
149919 ,p_event_created_by => l_array_event_created_by(hdr_idx)
149920 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
149921
149922 --
149923 -- set the status of entry to C_VALID (0)
149924 --
149925 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
149926
149927 --
149928 -- initialize a row for ae header
149929 --
149930 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
149931
149932 l_event_id := l_array_event_id(hdr_idx);
149933
149934 --
149935 -- storing the hdr_idx for event. May be used by line cursor.
149936 --
149937 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
149938
149939 --
149940 -- store sources from header extract. This can be improved to
149941 -- store only those sources from header extract that may be used in lines
149942 --
149943
149944 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
149945 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
149946 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
149947 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
149948
149949 --
149950 -- initilaize the status of ae headers for diffrent balance types
149951 -- the status is initialised to C_NOT_CREATED (2)
149952 --
149953 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
149954 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
149955 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
149956
149957 --
149958 -- call api to validate and store accounting attributes for header
149959 --
149960
149961 ------------------------------------------------------------
149962 -- Accrual Reversal : to get date for Standard Source (NONE)
149963 ------------------------------------------------------------
149964 l_acc_rev_gl_date_source := NULL;
149965
149966 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
149967 l_rec_acct_attrs.array_date_value(1) :=
149968 xla_ae_sources_pkg.GetSystemSourceDate(
149969 p_source_code => 'XLA_REFERENCE_DATE_1'
149970 , p_source_type_code => 'Y'
149971 , p_source_application_id => 602
149972 );
149973 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_TRANSFER_FLAG';
149974 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
149975
149976
149977 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
149978
149979 XLA_AE_HEADER_PKG.SetJeCategoryName;
149980
149981 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
149982 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
149983 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
149984 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
149985 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
149986
149987
149988 -- No header level analytical criteria
149989
149990 --
149991 --accounting attribute enhancement, bug 3612931
149992 --
149993 l_trx_reversal_source := SUBSTR(NULL, 1,30);
149994
149995 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
149996 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
149997
149998 xla_accounting_err_pkg.build_message
149999 (p_appli_s_name => 'XLA'
150000 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
150001 ,p_token_1 => 'ACCT_ATTR_NAME'
150002 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
150003 ,p_token_2 => 'PRODUCT_NAME'
150004 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
150005 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
150006 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
150007 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
150008
150009 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
150010 --
150011 -- following sets the accounting attributes needed to reverse
150012 -- accounting for a distributeion
150013 --
150014 xla_ae_lines_pkg.SetTrxReversalAttrs
150015 (p_event_id => l_event_id
150016 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
150017 ,p_trx_reversal_source => l_trx_reversal_source);
150018
150019 END IF;
150020
150021
150022 ----------------------------------------------------------------
150023 -- 4262811 - update the header statuses to invalid in need be
150024 ----------------------------------------------------------------
150025 --
150026 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
150027
150028
150029 -----------------------------------------------
150030 -- No accrual reversal for the event class/type
150031 -----------------------------------------------
150032 ----------------------------------------------------------------
150033
150034 --
150035 -- this ends the header loop iteration for one bulk fetch
150036 --
150037 END LOOP;
150038
150039 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
150040 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
150041
150042 --
150043 -- insert dummy rows into lines gt table that were created due to
150044 -- transaction reversals
150045 --
150046 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
150047 l_result := XLA_AE_LINES_PKG.InsertLines;
150048 END IF;
150049
150050 --
150051 -- reset the temp_line_num for each set of events fetched from header
150052 -- cursor rather than doing it for each new event in line cursor
150053 -- Bug 3939231
150054 --
150055 xla_ae_lines_pkg.g_temp_line_num := 0;
150056
150057
150058
150059 --
150060 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
150061 --
150062 --
150063 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
150064
150065 trace
150066 (p_msg => 'SQL - FETCH line_cur'
150067 ,p_level => C_LEVEL_STATEMENT
150068 ,p_module => l_log_module);
150069
150070 END IF;
150071 --
150072 --
150073 LOOP
150074 --
150075 FETCH line_cur BULK COLLECT INTO
150076 l_array_entity_id
150077 , l_array_legal_entity_id
150078 , l_array_entity_code
150079 , l_array_transaction_num
150080 , l_array_event_id
150081 , l_array_class_code
150082 , l_array_event_type
150083 , l_array_event_number
150084 , l_array_event_date
150085 , l_array_transaction_date
150086 , l_array_reference_num_1
150087 , l_array_reference_num_2
150088 , l_array_reference_num_3
150089 , l_array_reference_num_4
150090 , l_array_reference_char_1
150091 , l_array_reference_char_2
150092 , l_array_reference_char_3
150093 , l_array_reference_char_4
150094 , l_array_reference_date_1
150095 , l_array_reference_date_2
150096 , l_array_reference_date_3
150097 , l_array_reference_date_4
150098 , l_array_event_created_by
150099 , l_array_budgetary_control_flag
150100 , l_array_extract_line_num
150101 , l_array_source_4
150102 , l_array_source_11
150103 , l_array_source_15
150104 , l_array_source_18
150105 , l_array_source_19
150106 , l_array_source_20
150107 , l_array_source_21
150108 , l_array_source_22
150109 , l_array_source_24
150110 LIMIT l_rows;
150111
150112 --
150113 IF (C_LEVEL_EVENT >= g_log_level) THEN
150114 trace
150115 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
150116 ,p_level => C_LEVEL_EVENT
150117 ,p_module => l_log_module);
150118 END IF;
150119 --
150120 EXIT WHEN l_array_entity_id.count = 0;
150121
150122 XLA_AE_LINES_PKG.g_rec_lines := null;
150123
150124 --
150125 -- Bug 4458708
150126 --
150127 XLA_AE_LINES_PKG.g_LineNumber := 0;
150128 --
150129 --
150130
150131 FOR Idx IN 1..l_array_event_id.count LOOP
150132 --
150133 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
150134 --
150135 l_event_id := l_array_event_id(idx); -- 5648433
150136
150137 --
150138 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
150139 --
150140
150141 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
150142 (g_array_event(l_event_id).array_value_num('header_index'))
150143 ,'N'
150144 ) <> 'Y'
150145 THEN
150146 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
150147 trace
150148 (p_msg => 'Trancaction revesal option is not Y '
150149 ,p_level => C_LEVEL_STATEMENT
150150 ,p_module => l_log_module);
150151 END IF;
150152
150153 --
150154 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
150155 --
150156 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
150157 --
150158 -- set event info as cache for other routines to refer event attributes
150159 --
150160
150161 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
150162 l_previous_event_id := l_event_id;
150163
150164 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
150165 (p_application_id => p_application_id
150166 ,p_primary_ledger_id => p_primary_ledger_id
150167 ,p_base_ledger_id => p_base_ledger_id
150168 ,p_target_ledger_id => p_target_ledger_id
150169 ,p_entity_id => l_array_entity_id(Idx)
150170 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
150171 ,p_entity_code => l_array_entity_code(Idx)
150172 ,p_transaction_num => l_array_transaction_num(Idx)
150173 ,p_event_id => l_array_event_id(Idx)
150174 ,p_event_class_code => l_array_class_code(Idx)
150175 ,p_event_type_code => l_array_event_type(Idx)
150176 ,p_event_number => l_array_event_number(Idx)
150177 ,p_event_date => l_array_event_date(Idx)
150178 ,p_transaction_date => l_array_transaction_date(Idx)
150179 ,p_reference_num_1 => l_array_reference_num_1(Idx)
150180 ,p_reference_num_2 => l_array_reference_num_2(Idx)
150181 ,p_reference_num_3 => l_array_reference_num_3(Idx)
150182 ,p_reference_num_4 => l_array_reference_num_4(Idx)
150183 ,p_reference_char_1 => l_array_reference_char_1(Idx)
150184 ,p_reference_char_2 => l_array_reference_char_2(Idx)
150185 ,p_reference_char_3 => l_array_reference_char_3(Idx)
150186 ,p_reference_char_4 => l_array_reference_char_4(Idx)
150187 ,p_reference_date_1 => l_array_reference_date_1(Idx)
150188 ,p_reference_date_2 => l_array_reference_date_2(Idx)
150189 ,p_reference_date_3 => l_array_reference_date_3(Idx)
150190 ,p_reference_date_4 => l_array_reference_date_4(Idx)
150191 ,p_event_created_by => l_array_event_created_by(Idx)
150192 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
150193 --
150194 END IF;
150195
150196
150197
150198 --
150199 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
150200
150201 l_acct_reversal_source := SUBSTR(NULL, 1,30);
150202
150203 IF l_continue_with_lines THEN
150204 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
150205 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
150206
150207 xla_accounting_err_pkg.build_message
150208 (p_appli_s_name => 'XLA'
150209 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
150210 ,p_token_1 => 'LINE_NUMBER'
150211 ,p_value_1 => l_array_extract_line_num(Idx)
150212 ,p_token_2 => 'PRODUCT_NAME'
150213 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
150214 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
150215 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
150216 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
150217
150218 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
150219 --
150220 -- following sets the accounting attributes needed to reverse
150221 -- accounting for a distributeion
150222 --
150223
150224 --
150225 -- 5217187
150226 --
150227 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
150228 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
150229 g_array_event(l_event_id).array_value_num('header_index'));
150230 --
150231 --
150232
150233 -- No reversal code generated
150234
150235 xla_ae_lines_pkg.SetAcctReversalAttrs
150236 (p_event_id => l_event_id
150237 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
150238 ,p_calculate_acctd_flag => l_calculate_acctd_flag
150239 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
150240 END IF;
150241
150242 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
150243 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
150244
150245 --
150246 AcctLineType_120 (
150247 p_application_id => p_application_id
150248 ,p_event_id => l_event_id
150249 ,p_calculate_acctd_flag => l_calculate_acctd_flag
150250 ,p_calculate_g_l_flag => l_calculate_g_l_flag
150251 ,p_actual_flag => l_actual_flag
150252 ,p_balance_type_code => l_balance_type_code
150253 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
150254
150255 , p_source_4 => l_array_source_4(Idx)
150256 , p_source_11 => l_array_source_11(Idx)
150257 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
150258 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
150259 , p_source_15 => l_array_source_15(Idx)
150260 , p_source_18 => l_array_source_18(Idx)
150261 , p_source_19 => l_array_source_19(Idx)
150262 , p_source_20 => l_array_source_20(Idx)
150263 , p_source_21 => l_array_source_21(Idx)
150264 , p_source_22 => l_array_source_22(Idx)
150265 , p_source_24 => l_array_source_24(Idx)
150266 );
150267 If(l_balance_type_code = 'A') THEN
150268 l_actual_gain_loss_ref := l_gain_or_loss_ref;
150269 END IF;
150270
150271 --
150272
150273
150274 --
150275 AcctLineType_153 (
150276 p_application_id => p_application_id
150277 ,p_event_id => l_event_id
150278 ,p_calculate_acctd_flag => l_calculate_acctd_flag
150279 ,p_calculate_g_l_flag => l_calculate_g_l_flag
150280 ,p_actual_flag => l_actual_flag
150281 ,p_balance_type_code => l_balance_type_code
150282 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
150283
150284 , p_source_4 => l_array_source_4(Idx)
150285 , p_source_11 => l_array_source_11(Idx)
150286 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
150287 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
150288 , p_source_15 => l_array_source_15(Idx)
150289 , p_source_18 => l_array_source_18(Idx)
150290 , p_source_19 => l_array_source_19(Idx)
150291 , p_source_20 => l_array_source_20(Idx)
150292 , p_source_21 => l_array_source_21(Idx)
150293 , p_source_22 => l_array_source_22(Idx)
150294 , p_source_24 => l_array_source_24(Idx)
150295 );
150296 If(l_balance_type_code = 'A') THEN
150297 l_actual_gain_loss_ref := l_gain_or_loss_ref;
150298 END IF;
150299
150300 --
150301
150302
150303 --
150304 AcctLineType_190 (
150305 p_application_id => p_application_id
150306 ,p_event_id => l_event_id
150307 ,p_calculate_acctd_flag => l_calculate_acctd_flag
150308 ,p_calculate_g_l_flag => l_calculate_g_l_flag
150309 ,p_actual_flag => l_actual_flag
150310 ,p_balance_type_code => l_balance_type_code
150311 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
150312
150313 , p_source_4 => l_array_source_4(Idx)
150314 , p_source_11 => l_array_source_11(Idx)
150315 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
150316 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
150317 , p_source_15 => l_array_source_15(Idx)
150318 , p_source_18 => l_array_source_18(Idx)
150319 , p_source_19 => l_array_source_19(Idx)
150320 , p_source_20 => l_array_source_20(Idx)
150321 , p_source_21 => l_array_source_21(Idx)
150322 , p_source_22 => l_array_source_22(Idx)
150323 , p_source_24 => l_array_source_24(Idx)
150324 );
150325 If(l_balance_type_code = 'A') THEN
150326 l_actual_gain_loss_ref := l_gain_or_loss_ref;
150327 END IF;
150328
150329 --
150330
150331 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
150332 -- or secondary ledger that has different currency with primary
150333 -- or alc that is calculated by sla
150334 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
150335 (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'))
150336
150337 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
150338 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
150339 AND (l_actual_flag = 'A')) THEN
150340 XLA_AE_LINES_PKG.CreateGainOrLossLines(
150341 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
150342 ,p_application_id => p_application_id
150343 ,p_amb_context_code => 'DEFAULT'
150344 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
150345 ,p_event_class_code => C_EVENT_CLASS_CODE
150346 ,p_event_type_code => C_EVENT_TYPE_CODE
150347
150348 ,p_gain_ccid => -1
150349 ,p_loss_ccid => -1
150350
150351 ,p_actual_flag => l_actual_flag
150352 ,p_enc_flag => null
150353 ,p_actual_g_l_ref => l_actual_gain_loss_ref
150354 ,p_enc_g_l_ref => null
150355 );
150356 END IF;
150357 END IF;
150358 END IF;
150359
150360 ELSE
150361 --
150362 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
150363 --
150364 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
150365 trace
150366 (p_msg => 'Trancaction revesal option is Y'
150367 ,p_level => C_LEVEL_STATEMENT
150368 ,p_module => l_log_module);
150369 END IF;
150370 END IF;
150371
150372 END LOOP;
150373 l_result := XLA_AE_LINES_PKG.InsertLines ;
150374 end loop;
150375 close line_cur;
150376
150377
150378 --
150379 -- insert headers into xla_ae_headers_gt table
150380 --
150381 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
150382
150383 -- insert into errors table here.
150384
150385 END LOOP;
150386
150387 --
150388 -- 4865292
150389 --
150390 -- Compare g_hdr_extract_count with event count in
150391 -- CreateHeadersAndLines.
150392 --
150393 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
150394
150395 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
150396 trace (p_msg => '# rows extracted from header extract objects '
150397 || ' (running total): '
150398 || g_hdr_extract_count
150399 ,p_level => C_LEVEL_STATEMENT
150400 ,p_module => l_log_module);
150401 END IF;
150402
150403 CLOSE header_cur;
150404 --
150405
150406 --
150407 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
150408 trace
150409 (p_msg => 'END of EventClass_258'
150410 ,p_level => C_LEVEL_PROCEDURE
150411 ,p_module => l_log_module);
150412 END IF;
150413 --
150414 RETURN l_result;
150415 EXCEPTION
150416 WHEN xla_exceptions_pkg.application_exception THEN
150417
150418 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
150419
150420
150421 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
150422
150423 RAISE;
150424
150425 WHEN NO_DATA_FOUND THEN
150426
150427 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
150428 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
150429
150430 FOR header_record IN header_cur
150431 LOOP
150432 l_array_header_events(header_record.event_id) := header_record.event_id;
150433 END LOOP;
150434
150435 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
150436 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
150437
150438 fnd_file.put_line(fnd_file.LOG, ' ');
150439 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
150440 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
150441 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
150442
150443 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
150444 LOOP
150445 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
150446 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
150447 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
150448 END IF;
150449 END LOOP;
150450
150451 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
150452 fnd_file.put_line(fnd_file.LOG, ' ');
150453
150454
150455 xla_exceptions_pkg.raise_message
150456 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_258');
150457
150458
150459 WHEN OTHERS THEN
150460 xla_exceptions_pkg.raise_message
150461 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_258');
150462 END EventClass_258;
150463 --
150464
150465 ---------------------------------------
150466 --
150467 -- PRIVATE PROCEDURE
150468 -- insert_sources_259
150469 --
150470 ----------------------------------------
150471 --
150472 PROCEDURE insert_sources_259(
150473 p_target_ledger_id IN NUMBER
150474 , p_language IN VARCHAR2
150475 , p_sla_ledger_id IN NUMBER
150476 , p_pad_start_date IN DATE
150477 , p_pad_end_date IN DATE
150478 )
150479 IS
150480
150481 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'FOB_SHIP_RECIPIENT_RCPT_ALL';
150482 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'FOB_SHIP_RECIPIENT_RCPT';
150483 p_apps_owner VARCHAR2(30);
150484 l_log_module VARCHAR2(240);
150485 BEGIN
150486 IF g_log_enabled THEN
150487 l_log_module := C_DEFAULT_MODULE||'.insert_sources_259';
150488 END IF;
150489 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
150490
150491 trace
150492 (p_msg => 'BEGIN of insert_sources_259'
150493 ,p_level => C_LEVEL_PROCEDURE
150494 ,p_module => l_log_module);
150495
150496 END IF;
150497
150498 -- select APPS owner
150499 SELECT oracle_username
150500 INTO p_apps_owner
150501 FROM fnd_oracle_userid
150502 WHERE read_only_flag = 'U'
150503 ;
150504
150505 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
150506 trace
150507 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
150508 ' - p_language = '||p_language||
150509 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
150510 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
150511 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
150512 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
150513 ,p_level => C_LEVEL_STATEMENT
150514 ,p_module => l_log_module);
150515 END IF;
150516
150517
150518 --
150519 INSERT INTO xla_diag_sources --hdr2
150520 (
150521 event_id
150522 , ledger_id
150523 , sla_ledger_id
150524 , description_language
150525 , object_name
150526 , object_type_code
150527 , line_number
150528 , source_application_id
150529 , source_type_code
150530 , source_code
150531 , source_value
150532 , source_meaning
150533 , created_by
150534 , creation_date
150535 , last_update_date
150536 , last_updated_by
150537 , last_update_login
150538 , program_update_date
150539 , program_application_id
150540 , program_id
150541 , request_id
150542 )
150543 SELECT
150544 event_id
150545 , p_target_ledger_id
150546 , p_sla_ledger_id
150547 , p_language
150548 , object_name
150549 , object_type_code
150550 , line_number
150551 , source_application_id
150552 , source_type_code
150553 , source_code
150554 , SUBSTR(source_value ,1,1996)
150555 , SUBSTR(source_meaning ,1,200)
150556 , xla_environment_pkg.g_Usr_Id
150557 , TRUNC(SYSDATE)
150558 , TRUNC(SYSDATE)
150559 , xla_environment_pkg.g_Usr_Id
150560 , xla_environment_pkg.g_Login_Id
150561 , TRUNC(SYSDATE)
150562 , xla_environment_pkg.g_Prog_Appl_Id
150563 , xla_environment_pkg.g_Prog_Id
150564 , xla_environment_pkg.g_Req_Id
150565 FROM (
150566 SELECT xet.event_id event_id
150567 , 0 line_number
150568 , CASE r
150569 WHEN 1 THEN 'CST_XLA_INV_REF_V'
150570 WHEN 2 THEN 'CST_XLA_INV_REF_V'
150571 WHEN 3 THEN 'CST_XLA_INV_REF_V'
150572 WHEN 4 THEN 'CST_XLA_INV_HEADERS_V'
150573 WHEN 5 THEN 'CST_XLA_INV_REF_V'
150574 WHEN 6 THEN 'CST_XLA_INV_REF_V'
150575 WHEN 7 THEN 'PSA_CST_XLA_UPG_V'
150576 WHEN 8 THEN 'CST_XLA_INV_REF_V'
150577 WHEN 9 THEN 'CST_XLA_INV_REF_V'
150578 WHEN 10 THEN 'PO_REQ_DISTS_REF_V'
150579 WHEN 11 THEN 'PO_REQ_HEADERS_REF_V'
150580 WHEN 12 THEN 'CST_XLA_INV_HEADERS_V'
150581
150582 ELSE null
150583 END object_name
150584 , CASE r
150585 WHEN 1 THEN 'HEADER'
150586 WHEN 2 THEN 'HEADER'
150587 WHEN 3 THEN 'HEADER'
150588 WHEN 4 THEN 'HEADER'
150589 WHEN 5 THEN 'HEADER'
150590 WHEN 6 THEN 'HEADER'
150591 WHEN 7 THEN 'HEADER'
150592 WHEN 8 THEN 'HEADER'
150593 WHEN 9 THEN 'HEADER'
150594 WHEN 10 THEN 'HEADER'
150595 WHEN 11 THEN 'HEADER'
150596 WHEN 12 THEN 'HEADER'
150597
150598 ELSE null
150599 END object_type_code
150600 , CASE r
150601 WHEN 1 THEN '707'
150602 WHEN 2 THEN '707'
150603 WHEN 3 THEN '707'
150604 WHEN 4 THEN '707'
150605 WHEN 5 THEN '707'
150606 WHEN 6 THEN '707'
150607 WHEN 7 THEN '707'
150608 WHEN 8 THEN '707'
150609 WHEN 9 THEN '707'
150610 WHEN 10 THEN '201'
150611 WHEN 11 THEN '201'
150612 WHEN 12 THEN '707'
150613
150614 ELSE null
150615 END source_application_id
150616 , 'S' source_type_code
150617 , CASE r
150618 WHEN 1 THEN 'APPLIED_TO_APPL_ID'
150619 WHEN 2 THEN 'APPLIED_TO_DIST_LINK_TYPE'
150620 WHEN 3 THEN 'APPLIED_TO_ENTITY_CODE'
150621 WHEN 4 THEN 'DISTRIBUTION_TYPE'
150622 WHEN 5 THEN 'ENCUM_REVERSAL_AMOUNT_ENTERED'
150623 WHEN 6 THEN 'ENCUMBRANCE_REVERSAL_AMOUNT'
150624 WHEN 7 THEN 'CST_ENCUM_UPG_OPTION'
150625 WHEN 8 THEN 'TXN_PO_DISTRIBUTION_ID'
150626 WHEN 9 THEN 'TXN_PO_HEADER_ID'
150627 WHEN 10 THEN 'REQ_BUDGET_ACCOUNT'
150628 WHEN 11 THEN 'REQ_ENCUMBRANCE_TYPE_ID'
150629 WHEN 12 THEN 'TRANSFER_TO_GL_INDICATOR'
150630
150631 ELSE null
150632 END source_code
150633 , CASE r
150634 WHEN 1 THEN TO_CHAR(h3.APPLIED_TO_APPL_ID)
150635 WHEN 2 THEN TO_CHAR(h3.APPLIED_TO_DIST_LINK_TYPE)
150636 WHEN 3 THEN TO_CHAR(h3.APPLIED_TO_ENTITY_CODE)
150637 WHEN 4 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
150638 WHEN 5 THEN TO_CHAR(h3.ENCUM_REVERSAL_AMOUNT_ENTERED)
150639 WHEN 6 THEN TO_CHAR(h3.ENCUMBRANCE_REVERSAL_AMOUNT)
150640 WHEN 7 THEN TO_CHAR(h6.CST_ENCUM_UPG_OPTION)
150641 WHEN 8 THEN TO_CHAR(h3.TXN_PO_DISTRIBUTION_ID)
150642 WHEN 9 THEN TO_CHAR(h3.TXN_PO_HEADER_ID)
150643 WHEN 10 THEN TO_CHAR(h4.REQ_BUDGET_ACCOUNT)
150644 WHEN 11 THEN TO_CHAR(h5.REQ_ENCUMBRANCE_TYPE_ID)
150645 WHEN 12 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
150646
150647 ELSE null
150648 END source_value
150649 , CASE r
150650 WHEN 4 THEN fvl12.meaning
150651 WHEN 12 THEN fvl38.meaning
150652
150653 ELSE null
150654 END source_meaning
150655 FROM xla_events_gt xet
150656 , CST_XLA_INV_HEADERS_V h1
150657 , CST_XLA_INV_REF_V h3
150658 , PO_REQ_DISTS_REF_V h4
150659 , PO_REQ_HEADERS_REF_V h5
150660 , PSA_CST_XLA_UPG_V h6
150661 , fnd_lookup_values fvl12
150662 , fnd_lookup_values fvl38
150663 ,(select rownum r from all_objects where rownum <= 12 and owner = p_apps_owner)
150664 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
150665 AND xet.event_class_code = C_EVENT_CLASS_CODE
150666 AND h1.event_id = xet.event_id
150667 AND h3.ref_transaction_id = h1.transaction_id AND h3.bus_flow_req_dist_id=h4.req_distribution_id (+) AND h3.bus_flow_req_id = h5.req_id (+) AND h3.rcv_transaction_id = h6.transaction_id (+) AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
150668 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
150669 AND fvl12.view_application_id(+) = 700
150670 AND fvl12.language(+) = USERENV('LANG')
150671 AND fvl38.lookup_type(+) = 'YES_NO'
150672 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
150673 AND fvl38.view_application_id(+) = 0
150674 AND fvl38.language(+) = USERENV('LANG')
150675
150676 )
150677 ;
150678 --
150679 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
150680
150681 trace
150682 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
150683 ,p_level => C_LEVEL_STATEMENT
150684 ,p_module => l_log_module);
150685
150686 END IF;
150687 --
150688
150689
150690
150691 --
150692 INSERT INTO xla_diag_sources --line2
150693 (
150694 event_id
150695 , ledger_id
150696 , sla_ledger_id
150697 , description_language
150698 , object_name
150699 , object_type_code
150700 , line_number
150701 , source_application_id
150702 , source_type_code
150703 , source_code
150704 , source_value
150705 , source_meaning
150706 , created_by
150707 , creation_date
150708 , last_update_date
150709 , last_updated_by
150710 , last_update_login
150711 , program_update_date
150712 , program_application_id
150713 , program_id
150714 , request_id
150715 )
150716 SELECT event_id
150717 , p_target_ledger_id
150718 , p_sla_ledger_id
150719 , p_language
150720 , object_name
150721 , object_type_code
150722 , line_number
150723 , source_application_id
150724 , source_type_code
150725 , source_code
150726 , SUBSTR(source_value,1,1996)
150727 , SUBSTR(source_meaning ,1,200)
150728 , xla_environment_pkg.g_Usr_Id
150729 , TRUNC(SYSDATE)
150730 , TRUNC(SYSDATE)
150731 , xla_environment_pkg.g_Usr_Id
150732 , xla_environment_pkg.g_Login_Id
150733 , TRUNC(SYSDATE)
150734 , xla_environment_pkg.g_Prog_Appl_Id
150735 , xla_environment_pkg.g_Prog_Id
150736 , xla_environment_pkg.g_Req_Id
150737 FROM (
150738 SELECT xet.event_id event_id
150739 , l2.line_number line_number
150740 , CASE r
150741 WHEN 1 THEN 'CST_XLA_INV_LINES_V'
150742 WHEN 2 THEN 'CST_XLA_INV_LINES_V'
150743 WHEN 3 THEN 'CST_XLA_INV_LINES_V'
150744 WHEN 4 THEN 'CST_XLA_INV_LINES_V'
150745 WHEN 5 THEN 'CST_XLA_INV_LINES_V'
150746 WHEN 6 THEN 'CST_XLA_INV_LINES_V'
150747 WHEN 7 THEN 'CST_XLA_INV_LINES_V'
150748 WHEN 8 THEN 'CST_XLA_INV_LINES_V'
150749 WHEN 9 THEN 'CST_XLA_INV_LINES_V'
150750
150751 ELSE null
150752 END object_name
150753 , CASE r
150754 WHEN 1 THEN 'LINE'
150755 WHEN 2 THEN 'LINE'
150756 WHEN 3 THEN 'LINE'
150757 WHEN 4 THEN 'LINE'
150758 WHEN 5 THEN 'LINE'
150759 WHEN 6 THEN 'LINE'
150760 WHEN 7 THEN 'LINE'
150761 WHEN 8 THEN 'LINE'
150762 WHEN 9 THEN 'LINE'
150763
150764 ELSE null
150765 END object_type_code
150766 , CASE r
150767 WHEN 1 THEN '707'
150768 WHEN 2 THEN '707'
150769 WHEN 3 THEN '707'
150770 WHEN 4 THEN '707'
150771 WHEN 5 THEN '707'
150772 WHEN 6 THEN '707'
150773 WHEN 7 THEN '707'
150774 WHEN 8 THEN '707'
150775 WHEN 9 THEN '707'
150776
150777 ELSE null
150778 END source_application_id
150779 , 'S' source_type_code
150780 , CASE r
150781 WHEN 1 THEN 'CODE_COMBINATION_ID'
150782 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER'
150783 WHEN 3 THEN 'CURRENCY_CODE'
150784 WHEN 4 THEN 'ENTERED_AMOUNT'
150785 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE'
150786 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE'
150787 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE'
150788 WHEN 8 THEN 'ACCOUNTED_AMOUNT'
150789 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE'
150790
150791 ELSE null
150792 END source_code
150793 , CASE r
150794 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
150795 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
150796 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
150797 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
150798 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
150799 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
150800 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
150801 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
150802 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
150803
150804 ELSE null
150805 END source_value
150806 , null source_meaning
150807 FROM xla_events_gt xet
150808 , CST_XLA_INV_LINES_V l2
150809 , (select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
150810 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
150811 AND xet.event_class_code = C_EVENT_CLASS_CODE
150812 AND l2.event_id = xet.event_id
150813
150814 )
150815 ;
150816 --
150817 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
150818
150819 trace
150820 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
150821 ,p_level => C_LEVEL_STATEMENT
150822 ,p_module => l_log_module);
150823
150824 END IF;
150825
150826
150827 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
150828 trace
150829 (p_msg => 'END of insert_sources_259'
150830 ,p_level => C_LEVEL_PROCEDURE
150831 ,p_module => l_log_module);
150832 END IF;
150833 EXCEPTION
150834 WHEN xla_exceptions_pkg.application_exception THEN
150835 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
150836 trace
150837 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
150838 ,p_level => C_LEVEL_EXCEPTION
150839 ,p_module => l_log_module);
150840 END IF;
150841 RAISE;
150842 WHEN OTHERS THEN
150843 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
150844 trace
150845 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
150846 ,p_level => C_LEVEL_EXCEPTION
150847 ,p_module => l_log_module);
150848 END IF;
150849 xla_exceptions_pkg.raise_message
150850 (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_259');
150851 END insert_sources_259;
150852 --
150853
150854 ---------------------------------------
150855 --
150856 -- PRIVATE FUNCTION
150857 -- EventClass_259
150858 --
150859 ----------------------------------------
150860 --
150861 FUNCTION EventClass_259
150862 (p_application_id IN NUMBER
150863 ,p_base_ledger_id IN NUMBER
150864 ,p_target_ledger_id IN NUMBER
150865 ,p_language IN VARCHAR2
150866 ,p_currency_code IN VARCHAR2
150867 ,p_sla_ledger_id IN NUMBER
150868 ,p_pad_start_date IN DATE
150869 ,p_pad_end_date IN DATE
150870 ,p_primary_ledger_id IN NUMBER)
150871 RETURN BOOLEAN IS
150872 --
150873 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'FOB_SHIP_RECIPIENT_RCPT_ALL';
150874 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'FOB_SHIP_RECIPIENT_RCPT';
150875
150876 l_calculate_acctd_flag VARCHAR2(1) :='N';
150877 l_calculate_g_l_flag VARCHAR2(1) :='N';
150878 --
150879 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
150880 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
150881 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
150882 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
150883 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
150884 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
150885 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
150886 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
150887 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
150888 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
150889 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
150890 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
150891 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
150892 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
150893 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
150894 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
150895 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
150896 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
150897 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
150898 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
150899 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
150900 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
150901 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
150902 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
150903 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
150904 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
150905
150906 l_event_id NUMBER;
150907 l_previous_event_id NUMBER;
150908 l_first_event_id NUMBER;
150909 l_last_event_id NUMBER;
150910
150911 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
150912 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
150913 --
150914 --
150915 l_result BOOLEAN := TRUE;
150916 l_rows NUMBER := 1000;
150917 l_event_type_name VARCHAR2(80) := 'All';
150918 l_event_class_name VARCHAR2(80) := 'Intransit Interorg Receipt for FOB Shipment';
150919 l_description VARCHAR2(4000);
150920 l_transaction_reversal NUMBER;
150921 l_ae_header_id NUMBER;
150922 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
150923 l_log_module VARCHAR2(240);
150924 --
150925 l_acct_reversal_source VARCHAR2(30);
150926 l_trx_reversal_source VARCHAR2(30);
150927
150928 l_continue_with_lines BOOLEAN := TRUE;
150929 --
150930 l_acc_rev_gl_date_source DATE; -- 4262811
150931 --
150932 type t_array_event_id is table of number index by binary_integer;
150933
150934 l_rec_array_event t_rec_array_event;
150935 l_null_rec_array_event t_rec_array_event;
150936 l_array_ae_header_id xla_number_array_type;
150937 l_actual_flag VARCHAR2(1) := NULL;
150938 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
150939 l_balance_type_code VARCHAR2(1) :=NULL;
150940 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
150941
150942 --
150943 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
150944 --
150945
150946 TYPE t_array_source_6 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_APPL_ID%TYPE INDEX BY BINARY_INTEGER;
150947 TYPE t_array_source_7 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_DIST_LINK_TYPE%TYPE INDEX BY BINARY_INTEGER;
150948 TYPE t_array_source_8 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
150949 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
150950 TYPE t_array_source_14 IS TABLE OF CST_XLA_INV_REF_V.ENCUM_REVERSAL_AMOUNT_ENTERED%TYPE INDEX BY BINARY_INTEGER;
150951 TYPE t_array_source_16 IS TABLE OF CST_XLA_INV_REF_V.ENCUMBRANCE_REVERSAL_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
150952 TYPE t_array_source_27 IS TABLE OF PSA_CST_XLA_UPG_V.CST_ENCUM_UPG_OPTION%TYPE INDEX BY BINARY_INTEGER;
150953 TYPE t_array_source_28 IS TABLE OF CST_XLA_INV_REF_V.TXN_PO_DISTRIBUTION_ID%TYPE INDEX BY BINARY_INTEGER;
150954 TYPE t_array_source_29 IS TABLE OF CST_XLA_INV_REF_V.TXN_PO_HEADER_ID%TYPE INDEX BY BINARY_INTEGER;
150955 TYPE t_array_source_30 IS TABLE OF PO_REQ_DISTS_REF_V.REQ_BUDGET_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
150956 TYPE t_array_source_31 IS TABLE OF PO_REQ_HEADERS_REF_V.REQ_ENCUMBRANCE_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
150957 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
150958
150959 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
150960 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
150961 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
150962 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
150963 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
150964 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
150965 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
150966 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
150967 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
150968
150969 l_array_source_6 t_array_source_6;
150970 l_array_source_7 t_array_source_7;
150971 l_array_source_8 t_array_source_8;
150972 l_array_source_12 t_array_source_12;
150973 l_array_source_12_meaning t_array_lookup_meaning;
150974 l_array_source_14 t_array_source_14;
150975 l_array_source_16 t_array_source_16;
150976 l_array_source_27 t_array_source_27;
150977 l_array_source_28 t_array_source_28;
150978 l_array_source_29 t_array_source_29;
150979 l_array_source_30 t_array_source_30;
150980 l_array_source_31 t_array_source_31;
150981 l_array_source_38 t_array_source_38;
150982 l_array_source_38_meaning t_array_lookup_meaning;
150983
150984 l_array_source_4 t_array_source_4;
150985 l_array_source_11 t_array_source_11;
150986 l_array_source_15 t_array_source_15;
150987 l_array_source_18 t_array_source_18;
150988 l_array_source_19 t_array_source_19;
150989 l_array_source_20 t_array_source_20;
150990 l_array_source_21 t_array_source_21;
150991 l_array_source_22 t_array_source_22;
150992 l_array_source_24 t_array_source_24;
150993
150994 --
150995 CURSOR header_cur
150996 IS
150997 SELECT /*+ leading(xet) cardinality(xet,1) */
150998 -- Event Class Code: FOB_SHIP_RECIPIENT_RCPT
150999 xet.entity_id
151000 ,xet.legal_entity_id
151001 ,xet.entity_code
151002 ,xet.transaction_number
151003 ,xet.event_id
151004 ,xet.event_class_code
151005 ,xet.event_type_code
151006 ,xet.event_number
151007 ,xet.event_date
151008 ,xet.transaction_date
151009 ,xet.reference_num_1
151010 ,xet.reference_num_2
151011 ,xet.reference_num_3
151012 ,xet.reference_num_4
151013 ,xet.reference_char_1
151014 ,xet.reference_char_2
151015 ,xet.reference_char_3
151016 ,xet.reference_char_4
151017 ,xet.reference_date_1
151018 ,xet.reference_date_2
151019 ,xet.reference_date_3
151020 ,xet.reference_date_4
151021 ,xet.event_created_by
151022 ,xet.budgetary_control_flag
151023 , h3.APPLIED_TO_APPL_ID source_6
151024 , h3.APPLIED_TO_DIST_LINK_TYPE source_7
151025 , h3.APPLIED_TO_ENTITY_CODE source_8
151026 , h1.DISTRIBUTION_TYPE source_12
151027 , fvl12.meaning source_12_meaning
151028 , h3.ENCUM_REVERSAL_AMOUNT_ENTERED source_14
151029 , h3.ENCUMBRANCE_REVERSAL_AMOUNT source_16
151030 , h6.CST_ENCUM_UPG_OPTION source_27
151031 , h3.TXN_PO_DISTRIBUTION_ID source_28
151032 , h3.TXN_PO_HEADER_ID source_29
151033 , h4.REQ_BUDGET_ACCOUNT source_30
151034 , h5.REQ_ENCUMBRANCE_TYPE_ID source_31
151035 , h1.TRANSFER_TO_GL_INDICATOR source_38
151036 , fvl38.meaning source_38_meaning
151037 FROM xla_events_gt xet
151038 , CST_XLA_INV_HEADERS_V h1
151039 , CST_XLA_INV_REF_V h3
151040 , PO_REQ_DISTS_REF_V h4
151041 , PO_REQ_HEADERS_REF_V h5
151042 , PSA_CST_XLA_UPG_V h6
151043 , fnd_lookup_values fvl12
151044 , fnd_lookup_values fvl38
151045 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
151046 and xet.event_class_code = C_EVENT_CLASS_CODE
151047 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
151048 AND h3.ref_transaction_id = h1.transaction_id AND h3.BUS_FLOW_REQ_DIST_ID=h4.REQ_DISTRIBUTION_ID (+) AND h3.BUS_FLOW_REQ_ID = h5.REQ_ID (+) AND h3.rcv_transaction_id = h6.transaction_id (+) AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
151049 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
151050 AND fvl12.view_application_id(+) = 700
151051 AND fvl12.language(+) = USERENV('LANG')
151052 AND fvl38.lookup_type(+) = 'YES_NO'
151053 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
151054 AND fvl38.view_application_id(+) = 0
151055 AND fvl38.language(+) = USERENV('LANG')
151056
151057 ORDER BY event_id
151058 ;
151059
151060
151061 --
151062 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
151063 IS
151064 SELECT /*+ leading(xet) cardinality(xet,1) */
151065 -- Event Class Code: FOB_SHIP_RECIPIENT_RCPT
151066 xet.entity_id
151067 ,xet.legal_entity_id
151068 ,xet.entity_code
151069 ,xet.transaction_number
151070 ,xet.event_id
151071 ,xet.event_class_code
151072 ,xet.event_type_code
151073 ,xet.event_number
151074 ,xet.event_date
151075 ,xet.transaction_date
151076 ,xet.reference_num_1
151077 ,xet.reference_num_2
151078 ,xet.reference_num_3
151079 ,xet.reference_num_4
151080 ,xet.reference_char_1
151081 ,xet.reference_char_2
151082 ,xet.reference_char_3
151083 ,xet.reference_char_4
151084 ,xet.reference_date_1
151085 ,xet.reference_date_2
151086 ,xet.reference_date_3
151087 ,xet.reference_date_4
151088 ,xet.event_created_by
151089 ,xet.budgetary_control_flag
151090 , l2.LINE_NUMBER
151091 , l2.CODE_COMBINATION_ID source_4
151092 , l2.DISTRIBUTION_IDENTIFIER source_11
151093 , l2.CURRENCY_CODE source_15
151094 , l2.ENTERED_AMOUNT source_18
151095 , l2.CURRENCY_CONVERSION_DATE source_19
151096 , l2.CURRENCY_CONVERSION_RATE source_20
151097 , l2.CURRENCY_CONVERSION_TYPE source_21
151098 , l2.ACCOUNTED_AMOUNT source_22
151099 , l2.ACCOUNTING_LINE_TYPE_CODE source_24
151100 FROM xla_events_gt xet
151101 , CST_XLA_INV_LINES_V l2
151102 WHERE xet.event_id between x_first_event_id and x_last_event_id
151103 and xet.event_date between p_pad_start_date and p_pad_end_date
151104 and xet.event_class_code = C_EVENT_CLASS_CODE
151105 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
151106 ;
151107
151108 --
151109 BEGIN
151110 IF g_log_enabled THEN
151111 l_log_module := C_DEFAULT_MODULE||'.EventClass_259';
151112 END IF;
151113 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
151114 trace
151115 (p_msg => 'BEGIN of EventClass_259'
151116 ,p_level => C_LEVEL_PROCEDURE
151117 ,p_module => l_log_module);
151118 END IF;
151119
151120 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
151121 trace
151122 (p_msg => 'p_application_id = '||p_application_id||
151123 ' - p_base_ledger_id = '||p_base_ledger_id||
151124 ' - p_target_ledger_id = '||p_target_ledger_id||
151125 ' - p_language = '||p_language||
151126 ' - p_currency_code = '||p_currency_code||
151127 ' - p_sla_ledger_id = '||p_sla_ledger_id
151128 ,p_level => C_LEVEL_STATEMENT
151129 ,p_module => l_log_module);
151130 END IF;
151131 --
151132 -- initialze arrays
151133 --
151134 g_array_event.DELETE;
151135 l_rec_array_event := l_null_rec_array_event;
151136 --
151137 --------------------------------------
151138 -- 4262811 Initialze MPA Line Number
151139 --------------------------------------
151140 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
151141
151142 --
151143
151144 --
151145 OPEN header_cur;
151146 --
151147 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
151148 trace
151149 (p_msg => 'SQL - FETCH header_cur'
151150 ,p_level => C_LEVEL_STATEMENT
151151 ,p_module => l_log_module);
151152 END IF;
151153 --
151154 LOOP
151155 FETCH header_cur BULK COLLECT INTO
151156 l_array_entity_id
151157 , l_array_legal_entity_id
151158 , l_array_entity_code
151159 , l_array_transaction_num
151160 , l_array_event_id
151161 , l_array_class_code
151162 , l_array_event_type
151163 , l_array_event_number
151164 , l_array_event_date
151165 , l_array_transaction_date
151166 , l_array_reference_num_1
151167 , l_array_reference_num_2
151168 , l_array_reference_num_3
151169 , l_array_reference_num_4
151170 , l_array_reference_char_1
151171 , l_array_reference_char_2
151172 , l_array_reference_char_3
151173 , l_array_reference_char_4
151174 , l_array_reference_date_1
151175 , l_array_reference_date_2
151176 , l_array_reference_date_3
151177 , l_array_reference_date_4
151178 , l_array_event_created_by
151179 , l_array_budgetary_control_flag
151180 , l_array_source_6
151181 , l_array_source_7
151182 , l_array_source_8
151183 , l_array_source_12
151184 , l_array_source_12_meaning
151185 , l_array_source_14
151186 , l_array_source_16
151187 , l_array_source_27
151188 , l_array_source_28
151189 , l_array_source_29
151190 , l_array_source_30
151191 , l_array_source_31
151192 , l_array_source_38
151193 , l_array_source_38_meaning
151194 LIMIT l_rows;
151195 --
151196 IF (C_LEVEL_EVENT >= g_log_level) THEN
151197 trace
151198 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
151199 ,p_level => C_LEVEL_EVENT
151200 ,p_module => l_log_module);
151201 END IF;
151202 --
151203 EXIT WHEN l_array_entity_id.COUNT = 0;
151204
151205 -- initialize arrays
151206 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
151207 XLA_AE_LINES_PKG.g_rec_lines := NULL;
151208
151209 --
151210 -- Bug 4458708
151211 --
151212 XLA_AE_LINES_PKG.g_LineNumber := 0;
151213
151214
151215 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
151216 g_last_hdr_idx := l_array_event_id.LAST;
151217 --
151218 -- loop for the headers. Each iteration is for each header extract row
151219 -- fetched in header cursor
151220 --
151221 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
151222
151223 --
151224 -- set event info as cache for other routines to refer event attributes
151225 --
151226 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
151227 (p_application_id => p_application_id
151228 ,p_primary_ledger_id => p_primary_ledger_id
151229 ,p_base_ledger_id => p_base_ledger_id
151230 ,p_target_ledger_id => p_target_ledger_id
151231 ,p_entity_id => l_array_entity_id(hdr_idx)
151232 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
151233 ,p_entity_code => l_array_entity_code(hdr_idx)
151234 ,p_transaction_num => l_array_transaction_num(hdr_idx)
151235 ,p_event_id => l_array_event_id(hdr_idx)
151236 ,p_event_class_code => l_array_class_code(hdr_idx)
151237 ,p_event_type_code => l_array_event_type(hdr_idx)
151238 ,p_event_number => l_array_event_number(hdr_idx)
151239 ,p_event_date => l_array_event_date(hdr_idx)
151240 ,p_transaction_date => l_array_transaction_date(hdr_idx)
151241 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
151242 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
151243 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
151244 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
151245 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
151246 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
151247 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
151248 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
151249 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
151250 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
151251 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
151252 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
151253 ,p_event_created_by => l_array_event_created_by(hdr_idx)
151254 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
151255
151256 --
151257 -- set the status of entry to C_VALID (0)
151258 --
151259 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
151260
151261 --
151262 -- initialize a row for ae header
151263 --
151264 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
151265
151266 l_event_id := l_array_event_id(hdr_idx);
151267
151268 --
151269 -- storing the hdr_idx for event. May be used by line cursor.
151270 --
151271 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
151272
151273 --
151274 -- store sources from header extract. This can be improved to
151275 -- store only those sources from header extract that may be used in lines
151276 --
151277
151278 g_array_event(l_event_id).array_value_num('source_6') := l_array_source_6(hdr_idx);
151279 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
151280 g_array_event(l_event_id).array_value_char('source_8') := l_array_source_8(hdr_idx);
151281 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
151282 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
151283 g_array_event(l_event_id).array_value_num('source_14') := l_array_source_14(hdr_idx);
151284 g_array_event(l_event_id).array_value_num('source_16') := l_array_source_16(hdr_idx);
151285 g_array_event(l_event_id).array_value_char('source_27') := l_array_source_27(hdr_idx);
151286 g_array_event(l_event_id).array_value_num('source_28') := l_array_source_28(hdr_idx);
151287 g_array_event(l_event_id).array_value_num('source_29') := l_array_source_29(hdr_idx);
151288 g_array_event(l_event_id).array_value_num('source_30') := l_array_source_30(hdr_idx);
151289 g_array_event(l_event_id).array_value_num('source_31') := l_array_source_31(hdr_idx);
151290 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
151291 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
151292
151293 --
151294 -- initilaize the status of ae headers for diffrent balance types
151295 -- the status is initialised to C_NOT_CREATED (2)
151296 --
151297 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
151298 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
151299 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
151300
151301 --
151302 -- call api to validate and store accounting attributes for header
151303 --
151304
151305 ------------------------------------------------------------
151306 -- Accrual Reversal : to get date for Standard Source (NONE)
151307 ------------------------------------------------------------
151308 l_acc_rev_gl_date_source := NULL;
151309
151310 l_rec_acct_attrs.array_acct_attr_code(1) := 'ENCUMBRANCE_TYPE_ID';
151311 l_rec_acct_attrs.array_num_value(1) := g_array_event(l_event_id).array_value_num('source_31');
151312 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_DATE';
151313 l_rec_acct_attrs.array_date_value(2) :=
151314 xla_ae_sources_pkg.GetSystemSourceDate(
151315 p_source_code => 'XLA_REFERENCE_DATE_1'
151316 , p_source_type_code => 'Y'
151317 , p_source_application_id => 602
151318 );
151319 l_rec_acct_attrs.array_acct_attr_code(3) := 'GL_TRANSFER_FLAG';
151320 l_rec_acct_attrs.array_char_value(3) := g_array_event(l_event_id).array_value_char('source_38');
151321
151322
151323 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
151324
151325 XLA_AE_HEADER_PKG.SetJeCategoryName;
151326
151327 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
151328 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
151329 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
151330 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
151331 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
151332
151333
151334 -- No header level analytical criteria
151335
151336 --
151337 --accounting attribute enhancement, bug 3612931
151338 --
151339 l_trx_reversal_source := SUBSTR(NULL, 1,30);
151340
151341 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
151342 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
151343
151344 xla_accounting_err_pkg.build_message
151345 (p_appli_s_name => 'XLA'
151346 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
151347 ,p_token_1 => 'ACCT_ATTR_NAME'
151348 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
151349 ,p_token_2 => 'PRODUCT_NAME'
151350 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
151351 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
151352 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
151353 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
151354
151355 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
151356 --
151357 -- following sets the accounting attributes needed to reverse
151358 -- accounting for a distributeion
151359 --
151360 xla_ae_lines_pkg.SetTrxReversalAttrs
151361 (p_event_id => l_event_id
151362 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
151363 ,p_trx_reversal_source => l_trx_reversal_source);
151364
151365 END IF;
151366
151367
151368 ----------------------------------------------------------------
151369 -- 4262811 - update the header statuses to invalid in need be
151370 ----------------------------------------------------------------
151371 --
151372 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
151373
151374
151375 -----------------------------------------------
151376 -- No accrual reversal for the event class/type
151377 -----------------------------------------------
151378 ----------------------------------------------------------------
151379
151380 --
151381 -- this ends the header loop iteration for one bulk fetch
151382 --
151383 END LOOP;
151384
151385 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
151386 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
151387
151388 --
151389 -- insert dummy rows into lines gt table that were created due to
151390 -- transaction reversals
151391 --
151392 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
151393 l_result := XLA_AE_LINES_PKG.InsertLines;
151394 END IF;
151395
151396 --
151397 -- reset the temp_line_num for each set of events fetched from header
151398 -- cursor rather than doing it for each new event in line cursor
151399 -- Bug 3939231
151400 --
151401 xla_ae_lines_pkg.g_temp_line_num := 0;
151402
151403
151404
151405 --
151406 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
151407 --
151408 --
151409 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
151410
151411 trace
151412 (p_msg => 'SQL - FETCH line_cur'
151413 ,p_level => C_LEVEL_STATEMENT
151414 ,p_module => l_log_module);
151415
151416 END IF;
151417 --
151418 --
151419 LOOP
151420 --
151421 FETCH line_cur BULK COLLECT INTO
151422 l_array_entity_id
151423 , l_array_legal_entity_id
151424 , l_array_entity_code
151425 , l_array_transaction_num
151426 , l_array_event_id
151427 , l_array_class_code
151428 , l_array_event_type
151429 , l_array_event_number
151430 , l_array_event_date
151431 , l_array_transaction_date
151432 , l_array_reference_num_1
151433 , l_array_reference_num_2
151434 , l_array_reference_num_3
151435 , l_array_reference_num_4
151436 , l_array_reference_char_1
151437 , l_array_reference_char_2
151438 , l_array_reference_char_3
151439 , l_array_reference_char_4
151440 , l_array_reference_date_1
151441 , l_array_reference_date_2
151442 , l_array_reference_date_3
151443 , l_array_reference_date_4
151444 , l_array_event_created_by
151445 , l_array_budgetary_control_flag
151446 , l_array_extract_line_num
151447 , l_array_source_4
151448 , l_array_source_11
151449 , l_array_source_15
151450 , l_array_source_18
151451 , l_array_source_19
151452 , l_array_source_20
151453 , l_array_source_21
151454 , l_array_source_22
151455 , l_array_source_24
151456 LIMIT l_rows;
151457
151458 --
151459 IF (C_LEVEL_EVENT >= g_log_level) THEN
151460 trace
151461 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
151462 ,p_level => C_LEVEL_EVENT
151463 ,p_module => l_log_module);
151464 END IF;
151465 --
151466 EXIT WHEN l_array_entity_id.count = 0;
151467
151468 XLA_AE_LINES_PKG.g_rec_lines := null;
151469
151470 --
151471 -- Bug 4458708
151472 --
151473 XLA_AE_LINES_PKG.g_LineNumber := 0;
151474 --
151475 --
151476
151477 FOR Idx IN 1..l_array_event_id.count LOOP
151478 --
151479 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
151480 --
151481 l_event_id := l_array_event_id(idx); -- 5648433
151482
151483 --
151484 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
151485 --
151486
151487 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
151488 (g_array_event(l_event_id).array_value_num('header_index'))
151489 ,'N'
151490 ) <> 'Y'
151491 THEN
151492 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
151493 trace
151494 (p_msg => 'Trancaction revesal option is not Y '
151495 ,p_level => C_LEVEL_STATEMENT
151496 ,p_module => l_log_module);
151497 END IF;
151498
151499 --
151500 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
151501 --
151502 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
151503 --
151504 -- set event info as cache for other routines to refer event attributes
151505 --
151506
151507 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
151508 l_previous_event_id := l_event_id;
151509
151510 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
151511 (p_application_id => p_application_id
151512 ,p_primary_ledger_id => p_primary_ledger_id
151513 ,p_base_ledger_id => p_base_ledger_id
151514 ,p_target_ledger_id => p_target_ledger_id
151515 ,p_entity_id => l_array_entity_id(Idx)
151516 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
151517 ,p_entity_code => l_array_entity_code(Idx)
151518 ,p_transaction_num => l_array_transaction_num(Idx)
151519 ,p_event_id => l_array_event_id(Idx)
151520 ,p_event_class_code => l_array_class_code(Idx)
151521 ,p_event_type_code => l_array_event_type(Idx)
151522 ,p_event_number => l_array_event_number(Idx)
151523 ,p_event_date => l_array_event_date(Idx)
151524 ,p_transaction_date => l_array_transaction_date(Idx)
151525 ,p_reference_num_1 => l_array_reference_num_1(Idx)
151526 ,p_reference_num_2 => l_array_reference_num_2(Idx)
151527 ,p_reference_num_3 => l_array_reference_num_3(Idx)
151528 ,p_reference_num_4 => l_array_reference_num_4(Idx)
151529 ,p_reference_char_1 => l_array_reference_char_1(Idx)
151530 ,p_reference_char_2 => l_array_reference_char_2(Idx)
151531 ,p_reference_char_3 => l_array_reference_char_3(Idx)
151532 ,p_reference_char_4 => l_array_reference_char_4(Idx)
151533 ,p_reference_date_1 => l_array_reference_date_1(Idx)
151534 ,p_reference_date_2 => l_array_reference_date_2(Idx)
151535 ,p_reference_date_3 => l_array_reference_date_3(Idx)
151536 ,p_reference_date_4 => l_array_reference_date_4(Idx)
151537 ,p_event_created_by => l_array_event_created_by(Idx)
151538 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
151539 --
151540 END IF;
151541
151542
151543
151544 --
151545 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
151546
151547 l_acct_reversal_source := SUBSTR(NULL, 1,30);
151548
151549 IF l_continue_with_lines THEN
151550 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
151551 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
151552
151553 xla_accounting_err_pkg.build_message
151554 (p_appli_s_name => 'XLA'
151555 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
151556 ,p_token_1 => 'LINE_NUMBER'
151557 ,p_value_1 => l_array_extract_line_num(Idx)
151558 ,p_token_2 => 'PRODUCT_NAME'
151559 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
151560 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
151561 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
151562 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
151563
151564 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
151565 --
151566 -- following sets the accounting attributes needed to reverse
151567 -- accounting for a distributeion
151568 --
151569
151570 --
151571 -- 5217187
151572 --
151573 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
151574 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
151575 g_array_event(l_event_id).array_value_num('header_index'));
151576 --
151577 --
151578
151579 -- No reversal code generated
151580
151581 xla_ae_lines_pkg.SetAcctReversalAttrs
151582 (p_event_id => l_event_id
151583 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
151584 ,p_calculate_acctd_flag => l_calculate_acctd_flag
151585 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
151586 END IF;
151587
151588 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
151589 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
151590
151591 --
151592 AcctLineType_119 (
151593 p_application_id => p_application_id
151594 ,p_event_id => l_event_id
151595 ,p_calculate_acctd_flag => l_calculate_acctd_flag
151596 ,p_calculate_g_l_flag => l_calculate_g_l_flag
151597 ,p_actual_flag => l_actual_flag
151598 ,p_balance_type_code => l_balance_type_code
151599 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
151600
151601 , p_source_4 => l_array_source_4(Idx)
151602 , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
151603 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
151604 , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
151605 , p_source_11 => l_array_source_11(Idx)
151606 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
151607 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
151608 , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
151609 , p_source_15 => l_array_source_15(Idx)
151610 , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
151611 , p_source_18 => l_array_source_18(Idx)
151612 , p_source_19 => l_array_source_19(Idx)
151613 , p_source_20 => l_array_source_20(Idx)
151614 , p_source_21 => l_array_source_21(Idx)
151615 , p_source_22 => l_array_source_22(Idx)
151616 , p_source_24 => l_array_source_24(Idx)
151617 , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
151618 , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
151619 , p_source_29 => g_array_event(l_event_id).array_value_num('source_29')
151620 , p_source_30 => g_array_event(l_event_id).array_value_num('source_30')
151621 , p_source_31 => g_array_event(l_event_id).array_value_num('source_31')
151622 );
151623 If(l_balance_type_code = 'A') THEN
151624 l_actual_gain_loss_ref := l_gain_or_loss_ref;
151625 END IF;
151626
151627 --
151628
151629
151630 --
151631 AcctLineType_145 (
151632 p_application_id => p_application_id
151633 ,p_event_id => l_event_id
151634 ,p_calculate_acctd_flag => l_calculate_acctd_flag
151635 ,p_calculate_g_l_flag => l_calculate_g_l_flag
151636 ,p_actual_flag => l_actual_flag
151637 ,p_balance_type_code => l_balance_type_code
151638 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
151639
151640 , p_source_4 => l_array_source_4(Idx)
151641 , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
151642 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
151643 , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
151644 , p_source_11 => l_array_source_11(Idx)
151645 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
151646 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
151647 , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
151648 , p_source_15 => l_array_source_15(Idx)
151649 , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
151650 , p_source_18 => l_array_source_18(Idx)
151651 , p_source_19 => l_array_source_19(Idx)
151652 , p_source_20 => l_array_source_20(Idx)
151653 , p_source_21 => l_array_source_21(Idx)
151654 , p_source_22 => l_array_source_22(Idx)
151655 , p_source_24 => l_array_source_24(Idx)
151656 , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
151657 , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
151658 , p_source_29 => g_array_event(l_event_id).array_value_num('source_29')
151659 , p_source_30 => g_array_event(l_event_id).array_value_num('source_30')
151660 , p_source_31 => g_array_event(l_event_id).array_value_num('source_31')
151661 );
151662 If(l_balance_type_code = 'A') THEN
151663 l_actual_gain_loss_ref := l_gain_or_loss_ref;
151664 END IF;
151665
151666 --
151667
151668
151669 --
151670 AcctLineType_202 (
151671 p_application_id => p_application_id
151672 ,p_event_id => l_event_id
151673 ,p_calculate_acctd_flag => l_calculate_acctd_flag
151674 ,p_calculate_g_l_flag => l_calculate_g_l_flag
151675 ,p_actual_flag => l_actual_flag
151676 ,p_balance_type_code => l_balance_type_code
151677 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
151678
151679 , p_source_4 => l_array_source_4(Idx)
151680 , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
151681 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
151682 , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
151683 , p_source_11 => l_array_source_11(Idx)
151684 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
151685 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
151686 , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
151687 , p_source_15 => l_array_source_15(Idx)
151688 , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
151689 , p_source_18 => l_array_source_18(Idx)
151690 , p_source_19 => l_array_source_19(Idx)
151691 , p_source_20 => l_array_source_20(Idx)
151692 , p_source_21 => l_array_source_21(Idx)
151693 , p_source_22 => l_array_source_22(Idx)
151694 , p_source_24 => l_array_source_24(Idx)
151695 , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
151696 , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
151697 , p_source_29 => g_array_event(l_event_id).array_value_num('source_29')
151698 , p_source_30 => g_array_event(l_event_id).array_value_num('source_30')
151699 , p_source_31 => g_array_event(l_event_id).array_value_num('source_31')
151700 );
151701 If(l_balance_type_code = 'A') THEN
151702 l_actual_gain_loss_ref := l_gain_or_loss_ref;
151703 END IF;
151704
151705 --
151706
151707 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
151708 -- or secondary ledger that has different currency with primary
151709 -- or alc that is calculated by sla
151710 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
151711 (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'))
151712
151713 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
151714 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
151715 AND (l_actual_flag = 'A')) THEN
151716 XLA_AE_LINES_PKG.CreateGainOrLossLines(
151717 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
151718 ,p_application_id => p_application_id
151719 ,p_amb_context_code => 'DEFAULT'
151720 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
151721 ,p_event_class_code => C_EVENT_CLASS_CODE
151722 ,p_event_type_code => C_EVENT_TYPE_CODE
151723
151724 ,p_gain_ccid => -1
151725 ,p_loss_ccid => -1
151726
151727 ,p_actual_flag => l_actual_flag
151728 ,p_enc_flag => null
151729 ,p_actual_g_l_ref => l_actual_gain_loss_ref
151730 ,p_enc_g_l_ref => null
151731 );
151732 END IF;
151733 END IF;
151734 END IF;
151735
151736 ELSE
151737 --
151738 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
151739 --
151740 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
151741 trace
151742 (p_msg => 'Trancaction revesal option is Y'
151743 ,p_level => C_LEVEL_STATEMENT
151744 ,p_module => l_log_module);
151745 END IF;
151746 END IF;
151747
151748 END LOOP;
151749 l_result := XLA_AE_LINES_PKG.InsertLines ;
151750 end loop;
151751 close line_cur;
151752
151753
151754 --
151755 -- insert headers into xla_ae_headers_gt table
151756 --
151757 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
151758
151759 -- insert into errors table here.
151760
151761 END LOOP;
151762
151763 --
151764 -- 4865292
151765 --
151766 -- Compare g_hdr_extract_count with event count in
151767 -- CreateHeadersAndLines.
151768 --
151769 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
151770
151771 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
151772 trace (p_msg => '# rows extracted from header extract objects '
151773 || ' (running total): '
151774 || g_hdr_extract_count
151775 ,p_level => C_LEVEL_STATEMENT
151776 ,p_module => l_log_module);
151777 END IF;
151778
151779 CLOSE header_cur;
151780 --
151781
151782 --
151783 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
151784 trace
151785 (p_msg => 'END of EventClass_259'
151786 ,p_level => C_LEVEL_PROCEDURE
151787 ,p_module => l_log_module);
151788 END IF;
151789 --
151790 RETURN l_result;
151791 EXCEPTION
151792 WHEN xla_exceptions_pkg.application_exception THEN
151793
151794 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
151795
151796
151797 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
151798
151799 RAISE;
151800
151801 WHEN NO_DATA_FOUND THEN
151802
151803 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
151804 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
151805
151806 FOR header_record IN header_cur
151807 LOOP
151808 l_array_header_events(header_record.event_id) := header_record.event_id;
151809 END LOOP;
151810
151811 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
151812 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
151813
151814 fnd_file.put_line(fnd_file.LOG, ' ');
151815 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
151816 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
151817 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
151818
151819 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
151820 LOOP
151821 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
151822 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
151823 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
151824 END IF;
151825 END LOOP;
151826
151827 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
151828 fnd_file.put_line(fnd_file.LOG, ' ');
151829
151830
151831 xla_exceptions_pkg.raise_message
151832 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_259');
151833
151834
151835 WHEN OTHERS THEN
151836 xla_exceptions_pkg.raise_message
151837 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_259');
151838 END EventClass_259;
151839 --
151840
151841 ---------------------------------------
151842 --
151843 -- PRIVATE PROCEDURE
151844 -- insert_sources_260
151845 --
151846 ----------------------------------------
151847 --
151848 PROCEDURE insert_sources_260(
151849 p_target_ledger_id IN NUMBER
151850 , p_language IN VARCHAR2
151851 , p_sla_ledger_id IN NUMBER
151852 , p_pad_start_date IN DATE
151853 , p_pad_end_date IN DATE
151854 )
151855 IS
151856
151857 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'FOB_SHIP_RECIPIENT_SHIP_ALL';
151858 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'FOB_SHIP_RECIPIENT_SHIP';
151859 p_apps_owner VARCHAR2(30);
151860 l_log_module VARCHAR2(240);
151861 BEGIN
151862 IF g_log_enabled THEN
151863 l_log_module := C_DEFAULT_MODULE||'.insert_sources_260';
151864 END IF;
151865 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
151866
151867 trace
151868 (p_msg => 'BEGIN of insert_sources_260'
151869 ,p_level => C_LEVEL_PROCEDURE
151870 ,p_module => l_log_module);
151871
151872 END IF;
151873
151874 -- select APPS owner
151875 SELECT oracle_username
151876 INTO p_apps_owner
151877 FROM fnd_oracle_userid
151878 WHERE read_only_flag = 'U'
151879 ;
151880
151881 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
151882 trace
151883 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
151884 ' - p_language = '||p_language||
151885 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
151886 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
151887 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
151888 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
151889 ,p_level => C_LEVEL_STATEMENT
151890 ,p_module => l_log_module);
151891 END IF;
151892
151893
151894 --
151895 INSERT INTO xla_diag_sources --hdr2
151896 (
151897 event_id
151898 , ledger_id
151899 , sla_ledger_id
151900 , description_language
151901 , object_name
151902 , object_type_code
151903 , line_number
151904 , source_application_id
151905 , source_type_code
151906 , source_code
151907 , source_value
151908 , source_meaning
151909 , created_by
151910 , creation_date
151911 , last_update_date
151912 , last_updated_by
151913 , last_update_login
151914 , program_update_date
151915 , program_application_id
151916 , program_id
151917 , request_id
151918 )
151919 SELECT
151920 event_id
151921 , p_target_ledger_id
151922 , p_sla_ledger_id
151923 , p_language
151924 , object_name
151925 , object_type_code
151926 , line_number
151927 , source_application_id
151928 , source_type_code
151929 , source_code
151930 , SUBSTR(source_value ,1,1996)
151931 , SUBSTR(source_meaning ,1,200)
151932 , xla_environment_pkg.g_Usr_Id
151933 , TRUNC(SYSDATE)
151934 , TRUNC(SYSDATE)
151935 , xla_environment_pkg.g_Usr_Id
151936 , xla_environment_pkg.g_Login_Id
151937 , TRUNC(SYSDATE)
151938 , xla_environment_pkg.g_Prog_Appl_Id
151939 , xla_environment_pkg.g_Prog_Id
151940 , xla_environment_pkg.g_Req_Id
151941 FROM (
151942 SELECT xet.event_id event_id
151943 , 0 line_number
151944 , CASE r
151945 WHEN 1 THEN 'CST_XLA_INV_HEADERS_V'
151946 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V'
151947
151948 ELSE null
151949 END object_name
151950 , CASE r
151951 WHEN 1 THEN 'HEADER'
151952 WHEN 2 THEN 'HEADER'
151953
151954 ELSE null
151955 END object_type_code
151956 , CASE r
151957 WHEN 1 THEN '707'
151958 WHEN 2 THEN '707'
151959
151960 ELSE null
151961 END source_application_id
151962 , 'S' source_type_code
151963 , CASE r
151964 WHEN 1 THEN 'DISTRIBUTION_TYPE'
151965 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR'
151966
151967 ELSE null
151968 END source_code
151969 , CASE r
151970 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
151971 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
151972
151973 ELSE null
151974 END source_value
151975 , CASE r
151976 WHEN 1 THEN fvl12.meaning
151977 WHEN 2 THEN fvl38.meaning
151978
151979 ELSE null
151980 END source_meaning
151981 FROM xla_events_gt xet
151982 , CST_XLA_INV_HEADERS_V h1
151983 , fnd_lookup_values fvl12
151984 , fnd_lookup_values fvl38
151985 ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
151986 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
151987 AND xet.event_class_code = C_EVENT_CLASS_CODE
151988 AND h1.event_id = xet.event_id
151989 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
151990 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
151991 AND fvl12.view_application_id(+) = 700
151992 AND fvl12.language(+) = USERENV('LANG')
151993 AND fvl38.lookup_type(+) = 'YES_NO'
151994 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
151995 AND fvl38.view_application_id(+) = 0
151996 AND fvl38.language(+) = USERENV('LANG')
151997
151998 )
151999 ;
152000 --
152001 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
152002
152003 trace
152004 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
152005 ,p_level => C_LEVEL_STATEMENT
152006 ,p_module => l_log_module);
152007
152008 END IF;
152009 --
152010
152011
152012
152013 --
152014 INSERT INTO xla_diag_sources --line2
152015 (
152016 event_id
152017 , ledger_id
152018 , sla_ledger_id
152019 , description_language
152020 , object_name
152021 , object_type_code
152022 , line_number
152023 , source_application_id
152024 , source_type_code
152025 , source_code
152026 , source_value
152027 , source_meaning
152028 , created_by
152029 , creation_date
152030 , last_update_date
152031 , last_updated_by
152032 , last_update_login
152033 , program_update_date
152034 , program_application_id
152035 , program_id
152036 , request_id
152037 )
152038 SELECT event_id
152039 , p_target_ledger_id
152040 , p_sla_ledger_id
152041 , p_language
152042 , object_name
152043 , object_type_code
152044 , line_number
152045 , source_application_id
152046 , source_type_code
152047 , source_code
152048 , SUBSTR(source_value,1,1996)
152049 , SUBSTR(source_meaning ,1,200)
152050 , xla_environment_pkg.g_Usr_Id
152051 , TRUNC(SYSDATE)
152052 , TRUNC(SYSDATE)
152053 , xla_environment_pkg.g_Usr_Id
152054 , xla_environment_pkg.g_Login_Id
152055 , TRUNC(SYSDATE)
152056 , xla_environment_pkg.g_Prog_Appl_Id
152057 , xla_environment_pkg.g_Prog_Id
152058 , xla_environment_pkg.g_Req_Id
152059 FROM (
152060 SELECT xet.event_id event_id
152061 , l2.line_number line_number
152062 , CASE r
152063 WHEN 1 THEN 'CST_XLA_INV_LINES_V'
152064 WHEN 2 THEN 'CST_XLA_INV_LINES_V'
152065 WHEN 3 THEN 'CST_XLA_INV_LINES_V'
152066 WHEN 4 THEN 'CST_XLA_INV_LINES_V'
152067 WHEN 5 THEN 'CST_XLA_INV_LINES_V'
152068 WHEN 6 THEN 'CST_XLA_INV_LINES_V'
152069 WHEN 7 THEN 'CST_XLA_INV_LINES_V'
152070 WHEN 8 THEN 'CST_XLA_INV_LINES_V'
152071 WHEN 9 THEN 'CST_XLA_INV_LINES_V'
152072
152073 ELSE null
152074 END object_name
152075 , CASE r
152076 WHEN 1 THEN 'LINE'
152077 WHEN 2 THEN 'LINE'
152078 WHEN 3 THEN 'LINE'
152079 WHEN 4 THEN 'LINE'
152080 WHEN 5 THEN 'LINE'
152081 WHEN 6 THEN 'LINE'
152082 WHEN 7 THEN 'LINE'
152083 WHEN 8 THEN 'LINE'
152084 WHEN 9 THEN 'LINE'
152085
152086 ELSE null
152087 END object_type_code
152088 , CASE r
152089 WHEN 1 THEN '707'
152090 WHEN 2 THEN '707'
152091 WHEN 3 THEN '707'
152092 WHEN 4 THEN '707'
152093 WHEN 5 THEN '707'
152094 WHEN 6 THEN '707'
152095 WHEN 7 THEN '707'
152096 WHEN 8 THEN '707'
152097 WHEN 9 THEN '707'
152098
152099 ELSE null
152100 END source_application_id
152101 , 'S' source_type_code
152102 , CASE r
152103 WHEN 1 THEN 'CODE_COMBINATION_ID'
152104 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER'
152105 WHEN 3 THEN 'CURRENCY_CODE'
152106 WHEN 4 THEN 'ENTERED_AMOUNT'
152107 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE'
152108 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE'
152109 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE'
152110 WHEN 8 THEN 'ACCOUNTED_AMOUNT'
152111 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE'
152112
152113 ELSE null
152114 END source_code
152115 , CASE r
152116 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
152117 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
152118 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
152119 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
152120 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
152121 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
152122 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
152123 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
152124 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
152125
152126 ELSE null
152127 END source_value
152128 , null source_meaning
152129 FROM xla_events_gt xet
152130 , CST_XLA_INV_LINES_V l2
152131 , (select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
152132 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
152133 AND xet.event_class_code = C_EVENT_CLASS_CODE
152134 AND l2.event_id = xet.event_id
152135
152136 )
152137 ;
152138 --
152139 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
152140
152141 trace
152142 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
152143 ,p_level => C_LEVEL_STATEMENT
152144 ,p_module => l_log_module);
152145
152146 END IF;
152147
152148
152149 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
152150 trace
152151 (p_msg => 'END of insert_sources_260'
152152 ,p_level => C_LEVEL_PROCEDURE
152153 ,p_module => l_log_module);
152154 END IF;
152155 EXCEPTION
152156 WHEN xla_exceptions_pkg.application_exception THEN
152157 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
152158 trace
152159 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
152160 ,p_level => C_LEVEL_EXCEPTION
152161 ,p_module => l_log_module);
152162 END IF;
152163 RAISE;
152164 WHEN OTHERS THEN
152165 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
152166 trace
152167 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
152168 ,p_level => C_LEVEL_EXCEPTION
152169 ,p_module => l_log_module);
152170 END IF;
152171 xla_exceptions_pkg.raise_message
152172 (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_260');
152173 END insert_sources_260;
152174 --
152175
152176 ---------------------------------------
152177 --
152178 -- PRIVATE FUNCTION
152179 -- EventClass_260
152180 --
152181 ----------------------------------------
152182 --
152183 FUNCTION EventClass_260
152184 (p_application_id IN NUMBER
152185 ,p_base_ledger_id IN NUMBER
152186 ,p_target_ledger_id IN NUMBER
152187 ,p_language IN VARCHAR2
152188 ,p_currency_code IN VARCHAR2
152189 ,p_sla_ledger_id IN NUMBER
152190 ,p_pad_start_date IN DATE
152191 ,p_pad_end_date IN DATE
152192 ,p_primary_ledger_id IN NUMBER)
152193 RETURN BOOLEAN IS
152194 --
152195 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'FOB_SHIP_RECIPIENT_SHIP_ALL';
152196 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'FOB_SHIP_RECIPIENT_SHIP';
152197
152198 l_calculate_acctd_flag VARCHAR2(1) :='N';
152199 l_calculate_g_l_flag VARCHAR2(1) :='N';
152200 --
152201 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
152202 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
152203 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
152204 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
152205 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
152206 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
152207 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
152208 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
152209 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
152210 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
152211 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
152212 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
152213 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
152214 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
152215 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
152216 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
152217 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
152218 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
152219 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
152220 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
152221 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
152222 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
152223 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
152224 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
152225 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
152226 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
152227
152228 l_event_id NUMBER;
152229 l_previous_event_id NUMBER;
152230 l_first_event_id NUMBER;
152231 l_last_event_id NUMBER;
152232
152233 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
152234 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
152235 --
152236 --
152237 l_result BOOLEAN := TRUE;
152238 l_rows NUMBER := 1000;
152239 l_event_type_name VARCHAR2(80) := 'All';
152240 l_event_class_name VARCHAR2(80) := 'Recipient-side Intransit Interorg Shipment for FOB Shipment';
152241 l_description VARCHAR2(4000);
152242 l_transaction_reversal NUMBER;
152243 l_ae_header_id NUMBER;
152244 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
152245 l_log_module VARCHAR2(240);
152246 --
152247 l_acct_reversal_source VARCHAR2(30);
152248 l_trx_reversal_source VARCHAR2(30);
152249
152250 l_continue_with_lines BOOLEAN := TRUE;
152251 --
152252 l_acc_rev_gl_date_source DATE; -- 4262811
152253 --
152254 type t_array_event_id is table of number index by binary_integer;
152255
152256 l_rec_array_event t_rec_array_event;
152257 l_null_rec_array_event t_rec_array_event;
152258 l_array_ae_header_id xla_number_array_type;
152259 l_actual_flag VARCHAR2(1) := NULL;
152260 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
152261 l_balance_type_code VARCHAR2(1) :=NULL;
152262 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
152263
152264 --
152265 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
152266 --
152267
152268 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
152269 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
152270
152271 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
152272 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
152273 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
152274 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
152275 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
152276 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
152277 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
152278 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
152279 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
152280
152281 l_array_source_12 t_array_source_12;
152282 l_array_source_12_meaning t_array_lookup_meaning;
152283 l_array_source_38 t_array_source_38;
152284 l_array_source_38_meaning t_array_lookup_meaning;
152285
152286 l_array_source_4 t_array_source_4;
152287 l_array_source_11 t_array_source_11;
152288 l_array_source_15 t_array_source_15;
152289 l_array_source_18 t_array_source_18;
152290 l_array_source_19 t_array_source_19;
152291 l_array_source_20 t_array_source_20;
152292 l_array_source_21 t_array_source_21;
152293 l_array_source_22 t_array_source_22;
152294 l_array_source_24 t_array_source_24;
152295
152296 --
152297 CURSOR header_cur
152298 IS
152299 SELECT /*+ leading(xet) cardinality(xet,1) */
152300 -- Event Class Code: FOB_SHIP_RECIPIENT_SHIP
152301 xet.entity_id
152302 ,xet.legal_entity_id
152303 ,xet.entity_code
152304 ,xet.transaction_number
152305 ,xet.event_id
152306 ,xet.event_class_code
152307 ,xet.event_type_code
152308 ,xet.event_number
152309 ,xet.event_date
152310 ,xet.transaction_date
152311 ,xet.reference_num_1
152312 ,xet.reference_num_2
152313 ,xet.reference_num_3
152314 ,xet.reference_num_4
152315 ,xet.reference_char_1
152316 ,xet.reference_char_2
152317 ,xet.reference_char_3
152318 ,xet.reference_char_4
152319 ,xet.reference_date_1
152320 ,xet.reference_date_2
152321 ,xet.reference_date_3
152322 ,xet.reference_date_4
152323 ,xet.event_created_by
152324 ,xet.budgetary_control_flag
152325 , h1.DISTRIBUTION_TYPE source_12
152326 , fvl12.meaning source_12_meaning
152327 , h1.TRANSFER_TO_GL_INDICATOR source_38
152328 , fvl38.meaning source_38_meaning
152329 FROM xla_events_gt xet
152330 , CST_XLA_INV_HEADERS_V h1
152331 , fnd_lookup_values fvl12
152332 , fnd_lookup_values fvl38
152333 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
152334 and xet.event_class_code = C_EVENT_CLASS_CODE
152335 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
152336 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
152337 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
152338 AND fvl12.view_application_id(+) = 700
152339 AND fvl12.language(+) = USERENV('LANG')
152340 AND fvl38.lookup_type(+) = 'YES_NO'
152341 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
152342 AND fvl38.view_application_id(+) = 0
152343 AND fvl38.language(+) = USERENV('LANG')
152344
152345 ORDER BY event_id
152346 ;
152347
152348
152349 --
152350 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
152351 IS
152352 SELECT /*+ leading(xet) cardinality(xet,1) */
152353 -- Event Class Code: FOB_SHIP_RECIPIENT_SHIP
152354 xet.entity_id
152355 ,xet.legal_entity_id
152356 ,xet.entity_code
152357 ,xet.transaction_number
152358 ,xet.event_id
152359 ,xet.event_class_code
152360 ,xet.event_type_code
152361 ,xet.event_number
152362 ,xet.event_date
152363 ,xet.transaction_date
152364 ,xet.reference_num_1
152365 ,xet.reference_num_2
152366 ,xet.reference_num_3
152367 ,xet.reference_num_4
152368 ,xet.reference_char_1
152369 ,xet.reference_char_2
152370 ,xet.reference_char_3
152371 ,xet.reference_char_4
152372 ,xet.reference_date_1
152373 ,xet.reference_date_2
152374 ,xet.reference_date_3
152375 ,xet.reference_date_4
152376 ,xet.event_created_by
152377 ,xet.budgetary_control_flag
152378 , l2.LINE_NUMBER
152379 , l2.CODE_COMBINATION_ID source_4
152380 , l2.DISTRIBUTION_IDENTIFIER source_11
152381 , l2.CURRENCY_CODE source_15
152382 , l2.ENTERED_AMOUNT source_18
152383 , l2.CURRENCY_CONVERSION_DATE source_19
152384 , l2.CURRENCY_CONVERSION_RATE source_20
152385 , l2.CURRENCY_CONVERSION_TYPE source_21
152386 , l2.ACCOUNTED_AMOUNT source_22
152387 , l2.ACCOUNTING_LINE_TYPE_CODE source_24
152388 FROM xla_events_gt xet
152389 , CST_XLA_INV_LINES_V l2
152390 WHERE xet.event_id between x_first_event_id and x_last_event_id
152391 and xet.event_date between p_pad_start_date and p_pad_end_date
152392 and xet.event_class_code = C_EVENT_CLASS_CODE
152393 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
152394 ;
152395
152396 --
152397 BEGIN
152398 IF g_log_enabled THEN
152399 l_log_module := C_DEFAULT_MODULE||'.EventClass_260';
152400 END IF;
152401 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
152402 trace
152403 (p_msg => 'BEGIN of EventClass_260'
152404 ,p_level => C_LEVEL_PROCEDURE
152405 ,p_module => l_log_module);
152406 END IF;
152407
152408 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
152409 trace
152410 (p_msg => 'p_application_id = '||p_application_id||
152411 ' - p_base_ledger_id = '||p_base_ledger_id||
152412 ' - p_target_ledger_id = '||p_target_ledger_id||
152413 ' - p_language = '||p_language||
152414 ' - p_currency_code = '||p_currency_code||
152415 ' - p_sla_ledger_id = '||p_sla_ledger_id
152416 ,p_level => C_LEVEL_STATEMENT
152417 ,p_module => l_log_module);
152418 END IF;
152419 --
152420 -- initialze arrays
152421 --
152422 g_array_event.DELETE;
152423 l_rec_array_event := l_null_rec_array_event;
152424 --
152425 --------------------------------------
152426 -- 4262811 Initialze MPA Line Number
152427 --------------------------------------
152428 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
152429
152430 --
152431
152432 --
152433 OPEN header_cur;
152434 --
152435 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
152436 trace
152437 (p_msg => 'SQL - FETCH header_cur'
152438 ,p_level => C_LEVEL_STATEMENT
152439 ,p_module => l_log_module);
152440 END IF;
152441 --
152442 LOOP
152443 FETCH header_cur BULK COLLECT INTO
152444 l_array_entity_id
152445 , l_array_legal_entity_id
152446 , l_array_entity_code
152447 , l_array_transaction_num
152448 , l_array_event_id
152449 , l_array_class_code
152450 , l_array_event_type
152451 , l_array_event_number
152452 , l_array_event_date
152453 , l_array_transaction_date
152454 , l_array_reference_num_1
152455 , l_array_reference_num_2
152456 , l_array_reference_num_3
152457 , l_array_reference_num_4
152458 , l_array_reference_char_1
152459 , l_array_reference_char_2
152460 , l_array_reference_char_3
152461 , l_array_reference_char_4
152462 , l_array_reference_date_1
152463 , l_array_reference_date_2
152464 , l_array_reference_date_3
152465 , l_array_reference_date_4
152466 , l_array_event_created_by
152467 , l_array_budgetary_control_flag
152468 , l_array_source_12
152469 , l_array_source_12_meaning
152470 , l_array_source_38
152471 , l_array_source_38_meaning
152472 LIMIT l_rows;
152473 --
152474 IF (C_LEVEL_EVENT >= g_log_level) THEN
152475 trace
152476 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
152477 ,p_level => C_LEVEL_EVENT
152478 ,p_module => l_log_module);
152479 END IF;
152480 --
152481 EXIT WHEN l_array_entity_id.COUNT = 0;
152482
152483 -- initialize arrays
152484 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
152485 XLA_AE_LINES_PKG.g_rec_lines := NULL;
152486
152487 --
152488 -- Bug 4458708
152489 --
152490 XLA_AE_LINES_PKG.g_LineNumber := 0;
152491
152492
152493 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
152494 g_last_hdr_idx := l_array_event_id.LAST;
152495 --
152496 -- loop for the headers. Each iteration is for each header extract row
152497 -- fetched in header cursor
152498 --
152499 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
152500
152501 --
152502 -- set event info as cache for other routines to refer event attributes
152503 --
152504 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
152505 (p_application_id => p_application_id
152506 ,p_primary_ledger_id => p_primary_ledger_id
152507 ,p_base_ledger_id => p_base_ledger_id
152508 ,p_target_ledger_id => p_target_ledger_id
152509 ,p_entity_id => l_array_entity_id(hdr_idx)
152510 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
152511 ,p_entity_code => l_array_entity_code(hdr_idx)
152512 ,p_transaction_num => l_array_transaction_num(hdr_idx)
152513 ,p_event_id => l_array_event_id(hdr_idx)
152514 ,p_event_class_code => l_array_class_code(hdr_idx)
152515 ,p_event_type_code => l_array_event_type(hdr_idx)
152516 ,p_event_number => l_array_event_number(hdr_idx)
152517 ,p_event_date => l_array_event_date(hdr_idx)
152518 ,p_transaction_date => l_array_transaction_date(hdr_idx)
152519 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
152520 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
152521 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
152522 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
152523 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
152524 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
152525 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
152526 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
152527 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
152528 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
152529 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
152530 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
152531 ,p_event_created_by => l_array_event_created_by(hdr_idx)
152532 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
152533
152534 --
152535 -- set the status of entry to C_VALID (0)
152536 --
152537 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
152538
152539 --
152540 -- initialize a row for ae header
152541 --
152542 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
152543
152544 l_event_id := l_array_event_id(hdr_idx);
152545
152546 --
152547 -- storing the hdr_idx for event. May be used by line cursor.
152548 --
152549 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
152550
152551 --
152552 -- store sources from header extract. This can be improved to
152553 -- store only those sources from header extract that may be used in lines
152554 --
152555
152556 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
152557 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
152558 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
152559 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
152560
152561 --
152562 -- initilaize the status of ae headers for diffrent balance types
152563 -- the status is initialised to C_NOT_CREATED (2)
152564 --
152565 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
152566 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
152567 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
152568
152569 --
152570 -- call api to validate and store accounting attributes for header
152571 --
152572
152573 ------------------------------------------------------------
152574 -- Accrual Reversal : to get date for Standard Source (NONE)
152575 ------------------------------------------------------------
152576 l_acc_rev_gl_date_source := NULL;
152577
152578 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
152579 l_rec_acct_attrs.array_date_value(1) :=
152580 xla_ae_sources_pkg.GetSystemSourceDate(
152581 p_source_code => 'XLA_REFERENCE_DATE_1'
152582 , p_source_type_code => 'Y'
152583 , p_source_application_id => 602
152584 );
152585 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_TRANSFER_FLAG';
152586 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
152587
152588
152589 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
152590
152591 XLA_AE_HEADER_PKG.SetJeCategoryName;
152592
152593 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
152594 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
152595 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
152596 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
152597 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
152598
152599
152600 -- No header level analytical criteria
152601
152602 --
152603 --accounting attribute enhancement, bug 3612931
152604 --
152605 l_trx_reversal_source := SUBSTR(NULL, 1,30);
152606
152607 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
152608 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
152609
152610 xla_accounting_err_pkg.build_message
152611 (p_appli_s_name => 'XLA'
152612 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
152613 ,p_token_1 => 'ACCT_ATTR_NAME'
152614 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
152615 ,p_token_2 => 'PRODUCT_NAME'
152616 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
152617 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
152618 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
152619 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
152620
152621 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
152622 --
152623 -- following sets the accounting attributes needed to reverse
152624 -- accounting for a distributeion
152625 --
152626 xla_ae_lines_pkg.SetTrxReversalAttrs
152627 (p_event_id => l_event_id
152628 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
152629 ,p_trx_reversal_source => l_trx_reversal_source);
152630
152631 END IF;
152632
152633
152634 ----------------------------------------------------------------
152635 -- 4262811 - update the header statuses to invalid in need be
152636 ----------------------------------------------------------------
152637 --
152638 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
152639
152640
152641 -----------------------------------------------
152642 -- No accrual reversal for the event class/type
152643 -----------------------------------------------
152644 ----------------------------------------------------------------
152645
152646 --
152647 -- this ends the header loop iteration for one bulk fetch
152648 --
152649 END LOOP;
152650
152651 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
152652 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
152653
152654 --
152655 -- insert dummy rows into lines gt table that were created due to
152656 -- transaction reversals
152657 --
152658 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
152659 l_result := XLA_AE_LINES_PKG.InsertLines;
152660 END IF;
152661
152662 --
152663 -- reset the temp_line_num for each set of events fetched from header
152664 -- cursor rather than doing it for each new event in line cursor
152665 -- Bug 3939231
152666 --
152667 xla_ae_lines_pkg.g_temp_line_num := 0;
152668
152669
152670
152671 --
152672 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
152673 --
152674 --
152675 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
152676
152677 trace
152678 (p_msg => 'SQL - FETCH line_cur'
152679 ,p_level => C_LEVEL_STATEMENT
152680 ,p_module => l_log_module);
152681
152682 END IF;
152683 --
152684 --
152685 LOOP
152686 --
152687 FETCH line_cur BULK COLLECT INTO
152688 l_array_entity_id
152689 , l_array_legal_entity_id
152690 , l_array_entity_code
152691 , l_array_transaction_num
152692 , l_array_event_id
152693 , l_array_class_code
152694 , l_array_event_type
152695 , l_array_event_number
152696 , l_array_event_date
152697 , l_array_transaction_date
152698 , l_array_reference_num_1
152699 , l_array_reference_num_2
152700 , l_array_reference_num_3
152701 , l_array_reference_num_4
152702 , l_array_reference_char_1
152703 , l_array_reference_char_2
152704 , l_array_reference_char_3
152705 , l_array_reference_char_4
152706 , l_array_reference_date_1
152707 , l_array_reference_date_2
152708 , l_array_reference_date_3
152709 , l_array_reference_date_4
152710 , l_array_event_created_by
152711 , l_array_budgetary_control_flag
152712 , l_array_extract_line_num
152713 , l_array_source_4
152714 , l_array_source_11
152715 , l_array_source_15
152716 , l_array_source_18
152717 , l_array_source_19
152718 , l_array_source_20
152719 , l_array_source_21
152720 , l_array_source_22
152721 , l_array_source_24
152722 LIMIT l_rows;
152723
152724 --
152725 IF (C_LEVEL_EVENT >= g_log_level) THEN
152726 trace
152727 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
152728 ,p_level => C_LEVEL_EVENT
152729 ,p_module => l_log_module);
152730 END IF;
152731 --
152732 EXIT WHEN l_array_entity_id.count = 0;
152733
152734 XLA_AE_LINES_PKG.g_rec_lines := null;
152735
152736 --
152737 -- Bug 4458708
152738 --
152739 XLA_AE_LINES_PKG.g_LineNumber := 0;
152740 --
152741 --
152742
152743 FOR Idx IN 1..l_array_event_id.count LOOP
152744 --
152745 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
152746 --
152747 l_event_id := l_array_event_id(idx); -- 5648433
152748
152749 --
152750 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
152751 --
152752
152753 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
152754 (g_array_event(l_event_id).array_value_num('header_index'))
152755 ,'N'
152756 ) <> 'Y'
152757 THEN
152758 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
152759 trace
152760 (p_msg => 'Trancaction revesal option is not Y '
152761 ,p_level => C_LEVEL_STATEMENT
152762 ,p_module => l_log_module);
152763 END IF;
152764
152765 --
152766 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
152767 --
152768 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
152769 --
152770 -- set event info as cache for other routines to refer event attributes
152771 --
152772
152773 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
152774 l_previous_event_id := l_event_id;
152775
152776 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
152777 (p_application_id => p_application_id
152778 ,p_primary_ledger_id => p_primary_ledger_id
152779 ,p_base_ledger_id => p_base_ledger_id
152780 ,p_target_ledger_id => p_target_ledger_id
152781 ,p_entity_id => l_array_entity_id(Idx)
152782 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
152783 ,p_entity_code => l_array_entity_code(Idx)
152784 ,p_transaction_num => l_array_transaction_num(Idx)
152785 ,p_event_id => l_array_event_id(Idx)
152786 ,p_event_class_code => l_array_class_code(Idx)
152787 ,p_event_type_code => l_array_event_type(Idx)
152788 ,p_event_number => l_array_event_number(Idx)
152789 ,p_event_date => l_array_event_date(Idx)
152790 ,p_transaction_date => l_array_transaction_date(Idx)
152791 ,p_reference_num_1 => l_array_reference_num_1(Idx)
152792 ,p_reference_num_2 => l_array_reference_num_2(Idx)
152793 ,p_reference_num_3 => l_array_reference_num_3(Idx)
152794 ,p_reference_num_4 => l_array_reference_num_4(Idx)
152795 ,p_reference_char_1 => l_array_reference_char_1(Idx)
152796 ,p_reference_char_2 => l_array_reference_char_2(Idx)
152797 ,p_reference_char_3 => l_array_reference_char_3(Idx)
152798 ,p_reference_char_4 => l_array_reference_char_4(Idx)
152799 ,p_reference_date_1 => l_array_reference_date_1(Idx)
152800 ,p_reference_date_2 => l_array_reference_date_2(Idx)
152801 ,p_reference_date_3 => l_array_reference_date_3(Idx)
152802 ,p_reference_date_4 => l_array_reference_date_4(Idx)
152803 ,p_event_created_by => l_array_event_created_by(Idx)
152804 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
152805 --
152806 END IF;
152807
152808
152809
152810 --
152811 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
152812
152813 l_acct_reversal_source := SUBSTR(NULL, 1,30);
152814
152815 IF l_continue_with_lines THEN
152816 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
152817 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
152818
152819 xla_accounting_err_pkg.build_message
152820 (p_appli_s_name => 'XLA'
152821 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
152822 ,p_token_1 => 'LINE_NUMBER'
152823 ,p_value_1 => l_array_extract_line_num(Idx)
152824 ,p_token_2 => 'PRODUCT_NAME'
152825 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
152826 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
152827 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
152828 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
152829
152830 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
152831 --
152832 -- following sets the accounting attributes needed to reverse
152833 -- accounting for a distributeion
152834 --
152835
152836 --
152837 -- 5217187
152838 --
152839 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
152840 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
152841 g_array_event(l_event_id).array_value_num('header_index'));
152842 --
152843 --
152844
152845 -- No reversal code generated
152846
152847 xla_ae_lines_pkg.SetAcctReversalAttrs
152848 (p_event_id => l_event_id
152849 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
152850 ,p_calculate_acctd_flag => l_calculate_acctd_flag
152851 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
152852 END IF;
152853
152854 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
152855 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
152856
152857 --
152858 AcctLineType_28 (
152859 p_application_id => p_application_id
152860 ,p_event_id => l_event_id
152861 ,p_calculate_acctd_flag => l_calculate_acctd_flag
152862 ,p_calculate_g_l_flag => l_calculate_g_l_flag
152863 ,p_actual_flag => l_actual_flag
152864 ,p_balance_type_code => l_balance_type_code
152865 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
152866
152867 , p_source_4 => l_array_source_4(Idx)
152868 , p_source_11 => l_array_source_11(Idx)
152869 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
152870 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
152871 , p_source_15 => l_array_source_15(Idx)
152872 , p_source_18 => l_array_source_18(Idx)
152873 , p_source_19 => l_array_source_19(Idx)
152874 , p_source_20 => l_array_source_20(Idx)
152875 , p_source_21 => l_array_source_21(Idx)
152876 , p_source_22 => l_array_source_22(Idx)
152877 , p_source_24 => l_array_source_24(Idx)
152878 );
152879 If(l_balance_type_code = 'A') THEN
152880 l_actual_gain_loss_ref := l_gain_or_loss_ref;
152881 END IF;
152882
152883 --
152884
152885
152886 --
152887 AcctLineType_51 (
152888 p_application_id => p_application_id
152889 ,p_event_id => l_event_id
152890 ,p_calculate_acctd_flag => l_calculate_acctd_flag
152891 ,p_calculate_g_l_flag => l_calculate_g_l_flag
152892 ,p_actual_flag => l_actual_flag
152893 ,p_balance_type_code => l_balance_type_code
152894 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
152895
152896 , p_source_4 => l_array_source_4(Idx)
152897 , p_source_11 => l_array_source_11(Idx)
152898 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
152899 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
152900 , p_source_15 => l_array_source_15(Idx)
152901 , p_source_18 => l_array_source_18(Idx)
152902 , p_source_19 => l_array_source_19(Idx)
152903 , p_source_20 => l_array_source_20(Idx)
152904 , p_source_21 => l_array_source_21(Idx)
152905 , p_source_22 => l_array_source_22(Idx)
152906 , p_source_24 => l_array_source_24(Idx)
152907 );
152908 If(l_balance_type_code = 'A') THEN
152909 l_actual_gain_loss_ref := l_gain_or_loss_ref;
152910 END IF;
152911
152912 --
152913
152914
152915 --
152916 AcctLineType_65 (
152917 p_application_id => p_application_id
152918 ,p_event_id => l_event_id
152919 ,p_calculate_acctd_flag => l_calculate_acctd_flag
152920 ,p_calculate_g_l_flag => l_calculate_g_l_flag
152921 ,p_actual_flag => l_actual_flag
152922 ,p_balance_type_code => l_balance_type_code
152923 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
152924
152925 , p_source_4 => l_array_source_4(Idx)
152926 , p_source_11 => l_array_source_11(Idx)
152927 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
152928 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
152929 , p_source_15 => l_array_source_15(Idx)
152930 , p_source_18 => l_array_source_18(Idx)
152931 , p_source_19 => l_array_source_19(Idx)
152932 , p_source_20 => l_array_source_20(Idx)
152933 , p_source_21 => l_array_source_21(Idx)
152934 , p_source_22 => l_array_source_22(Idx)
152935 , p_source_24 => l_array_source_24(Idx)
152936 );
152937 If(l_balance_type_code = 'A') THEN
152938 l_actual_gain_loss_ref := l_gain_or_loss_ref;
152939 END IF;
152940
152941 --
152942
152943
152944 --
152945 AcctLineType_81 (
152946 p_application_id => p_application_id
152947 ,p_event_id => l_event_id
152948 ,p_calculate_acctd_flag => l_calculate_acctd_flag
152949 ,p_calculate_g_l_flag => l_calculate_g_l_flag
152950 ,p_actual_flag => l_actual_flag
152951 ,p_balance_type_code => l_balance_type_code
152952 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
152953
152954 , p_source_4 => l_array_source_4(Idx)
152955 , p_source_11 => l_array_source_11(Idx)
152956 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
152957 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
152958 , p_source_15 => l_array_source_15(Idx)
152959 , p_source_18 => l_array_source_18(Idx)
152960 , p_source_19 => l_array_source_19(Idx)
152961 , p_source_20 => l_array_source_20(Idx)
152962 , p_source_21 => l_array_source_21(Idx)
152963 , p_source_22 => l_array_source_22(Idx)
152964 , p_source_24 => l_array_source_24(Idx)
152965 );
152966 If(l_balance_type_code = 'A') THEN
152967 l_actual_gain_loss_ref := l_gain_or_loss_ref;
152968 END IF;
152969
152970 --
152971
152972
152973 --
152974 AcctLineType_125 (
152975 p_application_id => p_application_id
152976 ,p_event_id => l_event_id
152977 ,p_calculate_acctd_flag => l_calculate_acctd_flag
152978 ,p_calculate_g_l_flag => l_calculate_g_l_flag
152979 ,p_actual_flag => l_actual_flag
152980 ,p_balance_type_code => l_balance_type_code
152981 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
152982
152983 , p_source_4 => l_array_source_4(Idx)
152984 , p_source_11 => l_array_source_11(Idx)
152985 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
152986 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
152987 , p_source_15 => l_array_source_15(Idx)
152988 , p_source_18 => l_array_source_18(Idx)
152989 , p_source_19 => l_array_source_19(Idx)
152990 , p_source_20 => l_array_source_20(Idx)
152991 , p_source_21 => l_array_source_21(Idx)
152992 , p_source_22 => l_array_source_22(Idx)
152993 , p_source_24 => l_array_source_24(Idx)
152994 );
152995 If(l_balance_type_code = 'A') THEN
152996 l_actual_gain_loss_ref := l_gain_or_loss_ref;
152997 END IF;
152998
152999 --
153000
153001
153002 --
153003 AcctLineType_161 (
153004 p_application_id => p_application_id
153005 ,p_event_id => l_event_id
153006 ,p_calculate_acctd_flag => l_calculate_acctd_flag
153007 ,p_calculate_g_l_flag => l_calculate_g_l_flag
153008 ,p_actual_flag => l_actual_flag
153009 ,p_balance_type_code => l_balance_type_code
153010 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
153011
153012 , p_source_4 => l_array_source_4(Idx)
153013 , p_source_11 => l_array_source_11(Idx)
153014 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
153015 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
153016 , p_source_15 => l_array_source_15(Idx)
153017 , p_source_18 => l_array_source_18(Idx)
153018 , p_source_19 => l_array_source_19(Idx)
153019 , p_source_20 => l_array_source_20(Idx)
153020 , p_source_21 => l_array_source_21(Idx)
153021 , p_source_22 => l_array_source_22(Idx)
153022 , p_source_24 => l_array_source_24(Idx)
153023 );
153024 If(l_balance_type_code = 'A') THEN
153025 l_actual_gain_loss_ref := l_gain_or_loss_ref;
153026 END IF;
153027
153028 --
153029
153030
153031 --
153032 AcctLineType_196 (
153033 p_application_id => p_application_id
153034 ,p_event_id => l_event_id
153035 ,p_calculate_acctd_flag => l_calculate_acctd_flag
153036 ,p_calculate_g_l_flag => l_calculate_g_l_flag
153037 ,p_actual_flag => l_actual_flag
153038 ,p_balance_type_code => l_balance_type_code
153039 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
153040
153041 , p_source_4 => l_array_source_4(Idx)
153042 , p_source_11 => l_array_source_11(Idx)
153043 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
153044 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
153045 , p_source_15 => l_array_source_15(Idx)
153046 , p_source_18 => l_array_source_18(Idx)
153047 , p_source_19 => l_array_source_19(Idx)
153048 , p_source_20 => l_array_source_20(Idx)
153049 , p_source_21 => l_array_source_21(Idx)
153050 , p_source_22 => l_array_source_22(Idx)
153051 , p_source_24 => l_array_source_24(Idx)
153052 );
153053 If(l_balance_type_code = 'A') THEN
153054 l_actual_gain_loss_ref := l_gain_or_loss_ref;
153055 END IF;
153056
153057 --
153058
153059
153060 --
153061 AcctLineType_207 (
153062 p_application_id => p_application_id
153063 ,p_event_id => l_event_id
153064 ,p_calculate_acctd_flag => l_calculate_acctd_flag
153065 ,p_calculate_g_l_flag => l_calculate_g_l_flag
153066 ,p_actual_flag => l_actual_flag
153067 ,p_balance_type_code => l_balance_type_code
153068 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
153069
153070 , p_source_4 => l_array_source_4(Idx)
153071 , p_source_11 => l_array_source_11(Idx)
153072 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
153073 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
153074 , p_source_15 => l_array_source_15(Idx)
153075 , p_source_18 => l_array_source_18(Idx)
153076 , p_source_19 => l_array_source_19(Idx)
153077 , p_source_20 => l_array_source_20(Idx)
153078 , p_source_21 => l_array_source_21(Idx)
153079 , p_source_22 => l_array_source_22(Idx)
153080 , p_source_24 => l_array_source_24(Idx)
153081 );
153082 If(l_balance_type_code = 'A') THEN
153083 l_actual_gain_loss_ref := l_gain_or_loss_ref;
153084 END IF;
153085
153086 --
153087
153088
153089 --
153090 AcctLineType_219 (
153091 p_application_id => p_application_id
153092 ,p_event_id => l_event_id
153093 ,p_calculate_acctd_flag => l_calculate_acctd_flag
153094 ,p_calculate_g_l_flag => l_calculate_g_l_flag
153095 ,p_actual_flag => l_actual_flag
153096 ,p_balance_type_code => l_balance_type_code
153097 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
153098
153099 , p_source_4 => l_array_source_4(Idx)
153100 , p_source_11 => l_array_source_11(Idx)
153101 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
153102 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
153103 , p_source_15 => l_array_source_15(Idx)
153104 , p_source_18 => l_array_source_18(Idx)
153105 , p_source_19 => l_array_source_19(Idx)
153106 , p_source_20 => l_array_source_20(Idx)
153107 , p_source_21 => l_array_source_21(Idx)
153108 , p_source_22 => l_array_source_22(Idx)
153109 , p_source_24 => l_array_source_24(Idx)
153110 );
153111 If(l_balance_type_code = 'A') THEN
153112 l_actual_gain_loss_ref := l_gain_or_loss_ref;
153113 END IF;
153114
153115 --
153116
153117 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
153118 -- or secondary ledger that has different currency with primary
153119 -- or alc that is calculated by sla
153120 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
153121 (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'))
153122
153123 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
153124 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
153125 AND (l_actual_flag = 'A')) THEN
153126 XLA_AE_LINES_PKG.CreateGainOrLossLines(
153127 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
153128 ,p_application_id => p_application_id
153129 ,p_amb_context_code => 'DEFAULT'
153130 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
153131 ,p_event_class_code => C_EVENT_CLASS_CODE
153132 ,p_event_type_code => C_EVENT_TYPE_CODE
153133
153134 ,p_gain_ccid => -1
153135 ,p_loss_ccid => -1
153136
153137 ,p_actual_flag => l_actual_flag
153138 ,p_enc_flag => null
153139 ,p_actual_g_l_ref => l_actual_gain_loss_ref
153140 ,p_enc_g_l_ref => null
153141 );
153142 END IF;
153143 END IF;
153144 END IF;
153145
153146 ELSE
153147 --
153148 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
153149 --
153150 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
153151 trace
153152 (p_msg => 'Trancaction revesal option is Y'
153153 ,p_level => C_LEVEL_STATEMENT
153154 ,p_module => l_log_module);
153155 END IF;
153156 END IF;
153157
153158 END LOOP;
153159 l_result := XLA_AE_LINES_PKG.InsertLines ;
153160 end loop;
153161 close line_cur;
153162
153163
153164 --
153165 -- insert headers into xla_ae_headers_gt table
153166 --
153167 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
153168
153169 -- insert into errors table here.
153170
153171 END LOOP;
153172
153173 --
153174 -- 4865292
153175 --
153176 -- Compare g_hdr_extract_count with event count in
153177 -- CreateHeadersAndLines.
153178 --
153179 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
153180
153181 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
153182 trace (p_msg => '# rows extracted from header extract objects '
153183 || ' (running total): '
153184 || g_hdr_extract_count
153185 ,p_level => C_LEVEL_STATEMENT
153186 ,p_module => l_log_module);
153187 END IF;
153188
153189 CLOSE header_cur;
153190 --
153191
153192 --
153193 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
153194 trace
153195 (p_msg => 'END of EventClass_260'
153196 ,p_level => C_LEVEL_PROCEDURE
153197 ,p_module => l_log_module);
153198 END IF;
153199 --
153200 RETURN l_result;
153201 EXCEPTION
153202 WHEN xla_exceptions_pkg.application_exception THEN
153203
153204 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
153205
153206
153207 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
153208
153209 RAISE;
153210
153211 WHEN NO_DATA_FOUND THEN
153212
153213 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
153214 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
153215
153216 FOR header_record IN header_cur
153217 LOOP
153218 l_array_header_events(header_record.event_id) := header_record.event_id;
153219 END LOOP;
153220
153221 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
153222 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
153223
153224 fnd_file.put_line(fnd_file.LOG, ' ');
153225 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
153226 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
153227 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
153228
153229 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
153230 LOOP
153231 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
153232 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
153233 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
153234 END IF;
153235 END LOOP;
153236
153237 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
153238 fnd_file.put_line(fnd_file.LOG, ' ');
153239
153240
153241 xla_exceptions_pkg.raise_message
153242 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_260');
153243
153244
153245 WHEN OTHERS THEN
153246 xla_exceptions_pkg.raise_message
153247 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_260');
153248 END EventClass_260;
153249 --
153250
153251 ---------------------------------------
153252 --
153253 -- PRIVATE PROCEDURE
153254 -- insert_sources_261
153255 --
153256 ----------------------------------------
153257 --
153258 PROCEDURE insert_sources_261(
153259 p_target_ledger_id IN NUMBER
153260 , p_language IN VARCHAR2
153261 , p_sla_ledger_id IN NUMBER
153262 , p_pad_start_date IN DATE
153263 , p_pad_end_date IN DATE
153264 )
153265 IS
153266
153267 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'FOB_SHIP_SENDER_SHIP_ALL';
153268 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'FOB_SHIP_SENDER_SHIP';
153269 p_apps_owner VARCHAR2(30);
153270 l_log_module VARCHAR2(240);
153271 BEGIN
153272 IF g_log_enabled THEN
153273 l_log_module := C_DEFAULT_MODULE||'.insert_sources_261';
153274 END IF;
153275 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
153276
153277 trace
153278 (p_msg => 'BEGIN of insert_sources_261'
153279 ,p_level => C_LEVEL_PROCEDURE
153280 ,p_module => l_log_module);
153281
153282 END IF;
153283
153284 -- select APPS owner
153285 SELECT oracle_username
153286 INTO p_apps_owner
153287 FROM fnd_oracle_userid
153288 WHERE read_only_flag = 'U'
153289 ;
153290
153291 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
153292 trace
153293 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
153294 ' - p_language = '||p_language||
153295 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
153296 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
153297 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
153298 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
153299 ,p_level => C_LEVEL_STATEMENT
153300 ,p_module => l_log_module);
153301 END IF;
153302
153303
153304 --
153305 INSERT INTO xla_diag_sources --hdr2
153306 (
153307 event_id
153308 , ledger_id
153309 , sla_ledger_id
153310 , description_language
153311 , object_name
153312 , object_type_code
153313 , line_number
153314 , source_application_id
153315 , source_type_code
153316 , source_code
153317 , source_value
153318 , source_meaning
153319 , created_by
153320 , creation_date
153321 , last_update_date
153322 , last_updated_by
153323 , last_update_login
153324 , program_update_date
153325 , program_application_id
153326 , program_id
153327 , request_id
153328 )
153329 SELECT
153330 event_id
153331 , p_target_ledger_id
153332 , p_sla_ledger_id
153333 , p_language
153334 , object_name
153335 , object_type_code
153336 , line_number
153337 , source_application_id
153338 , source_type_code
153339 , source_code
153340 , SUBSTR(source_value ,1,1996)
153341 , SUBSTR(source_meaning ,1,200)
153342 , xla_environment_pkg.g_Usr_Id
153343 , TRUNC(SYSDATE)
153344 , TRUNC(SYSDATE)
153345 , xla_environment_pkg.g_Usr_Id
153346 , xla_environment_pkg.g_Login_Id
153347 , TRUNC(SYSDATE)
153348 , xla_environment_pkg.g_Prog_Appl_Id
153349 , xla_environment_pkg.g_Prog_Id
153350 , xla_environment_pkg.g_Req_Id
153351 FROM (
153352 SELECT xet.event_id event_id
153353 , 0 line_number
153354 , CASE r
153355 WHEN 1 THEN 'CST_XLA_INV_HEADERS_V'
153356 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V'
153357
153358 ELSE null
153359 END object_name
153360 , CASE r
153361 WHEN 1 THEN 'HEADER'
153362 WHEN 2 THEN 'HEADER'
153363
153364 ELSE null
153365 END object_type_code
153366 , CASE r
153367 WHEN 1 THEN '707'
153368 WHEN 2 THEN '707'
153369
153370 ELSE null
153371 END source_application_id
153372 , 'S' source_type_code
153373 , CASE r
153374 WHEN 1 THEN 'DISTRIBUTION_TYPE'
153375 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR'
153376
153377 ELSE null
153378 END source_code
153379 , CASE r
153380 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
153381 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
153382
153383 ELSE null
153384 END source_value
153385 , CASE r
153386 WHEN 1 THEN fvl12.meaning
153387 WHEN 2 THEN fvl38.meaning
153388
153389 ELSE null
153390 END source_meaning
153391 FROM xla_events_gt xet
153392 , CST_XLA_INV_HEADERS_V h1
153393 , fnd_lookup_values fvl12
153394 , fnd_lookup_values fvl38
153395 ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
153396 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
153397 AND xet.event_class_code = C_EVENT_CLASS_CODE
153398 AND h1.event_id = xet.event_id
153399 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
153400 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
153401 AND fvl12.view_application_id(+) = 700
153402 AND fvl12.language(+) = USERENV('LANG')
153403 AND fvl38.lookup_type(+) = 'YES_NO'
153404 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
153405 AND fvl38.view_application_id(+) = 0
153406 AND fvl38.language(+) = USERENV('LANG')
153407
153408 )
153409 ;
153410 --
153411 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
153412
153413 trace
153414 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
153415 ,p_level => C_LEVEL_STATEMENT
153416 ,p_module => l_log_module);
153417
153418 END IF;
153419 --
153420
153421
153422
153423 --
153424 INSERT INTO xla_diag_sources --line2
153425 (
153426 event_id
153427 , ledger_id
153428 , sla_ledger_id
153429 , description_language
153430 , object_name
153431 , object_type_code
153432 , line_number
153433 , source_application_id
153434 , source_type_code
153435 , source_code
153436 , source_value
153437 , source_meaning
153438 , created_by
153439 , creation_date
153440 , last_update_date
153441 , last_updated_by
153442 , last_update_login
153443 , program_update_date
153444 , program_application_id
153445 , program_id
153446 , request_id
153447 )
153448 SELECT event_id
153449 , p_target_ledger_id
153450 , p_sla_ledger_id
153451 , p_language
153452 , object_name
153453 , object_type_code
153454 , line_number
153455 , source_application_id
153456 , source_type_code
153457 , source_code
153458 , SUBSTR(source_value,1,1996)
153459 , SUBSTR(source_meaning ,1,200)
153460 , xla_environment_pkg.g_Usr_Id
153461 , TRUNC(SYSDATE)
153462 , TRUNC(SYSDATE)
153463 , xla_environment_pkg.g_Usr_Id
153464 , xla_environment_pkg.g_Login_Id
153465 , TRUNC(SYSDATE)
153466 , xla_environment_pkg.g_Prog_Appl_Id
153467 , xla_environment_pkg.g_Prog_Id
153468 , xla_environment_pkg.g_Req_Id
153469 FROM (
153470 SELECT xet.event_id event_id
153471 , l2.line_number line_number
153472 , CASE r
153473 WHEN 1 THEN 'CST_XLA_INV_LINES_V'
153474 WHEN 2 THEN 'CST_XLA_INV_LINES_V'
153475 WHEN 3 THEN 'CST_XLA_INV_LINES_V'
153476 WHEN 4 THEN 'CST_XLA_INV_LINES_V'
153477 WHEN 5 THEN 'CST_XLA_INV_LINES_V'
153478 WHEN 6 THEN 'CST_XLA_INV_LINES_V'
153479 WHEN 7 THEN 'CST_XLA_INV_LINES_V'
153480 WHEN 8 THEN 'CST_XLA_INV_LINES_V'
153481 WHEN 9 THEN 'CST_XLA_INV_LINES_V'
153482
153483 ELSE null
153484 END object_name
153485 , CASE r
153486 WHEN 1 THEN 'LINE'
153487 WHEN 2 THEN 'LINE'
153488 WHEN 3 THEN 'LINE'
153489 WHEN 4 THEN 'LINE'
153490 WHEN 5 THEN 'LINE'
153491 WHEN 6 THEN 'LINE'
153492 WHEN 7 THEN 'LINE'
153493 WHEN 8 THEN 'LINE'
153494 WHEN 9 THEN 'LINE'
153495
153496 ELSE null
153497 END object_type_code
153498 , CASE r
153499 WHEN 1 THEN '707'
153500 WHEN 2 THEN '707'
153501 WHEN 3 THEN '707'
153502 WHEN 4 THEN '707'
153503 WHEN 5 THEN '707'
153504 WHEN 6 THEN '707'
153505 WHEN 7 THEN '707'
153506 WHEN 8 THEN '707'
153507 WHEN 9 THEN '707'
153508
153509 ELSE null
153510 END source_application_id
153511 , 'S' source_type_code
153512 , CASE r
153513 WHEN 1 THEN 'CODE_COMBINATION_ID'
153514 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER'
153515 WHEN 3 THEN 'CURRENCY_CODE'
153516 WHEN 4 THEN 'ENTERED_AMOUNT'
153517 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE'
153518 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE'
153519 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE'
153520 WHEN 8 THEN 'ACCOUNTED_AMOUNT'
153521 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE'
153522
153523 ELSE null
153524 END source_code
153525 , CASE r
153526 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
153527 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
153528 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
153529 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
153530 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
153531 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
153532 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
153533 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
153534 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
153535
153536 ELSE null
153537 END source_value
153538 , null source_meaning
153539 FROM xla_events_gt xet
153540 , CST_XLA_INV_LINES_V l2
153541 , (select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
153542 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
153543 AND xet.event_class_code = C_EVENT_CLASS_CODE
153544 AND l2.event_id = xet.event_id
153545
153546 )
153547 ;
153548 --
153549 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
153550
153551 trace
153552 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
153553 ,p_level => C_LEVEL_STATEMENT
153554 ,p_module => l_log_module);
153555
153556 END IF;
153557
153558
153559 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
153560 trace
153561 (p_msg => 'END of insert_sources_261'
153562 ,p_level => C_LEVEL_PROCEDURE
153563 ,p_module => l_log_module);
153564 END IF;
153565 EXCEPTION
153566 WHEN xla_exceptions_pkg.application_exception THEN
153567 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
153568 trace
153569 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
153570 ,p_level => C_LEVEL_EXCEPTION
153571 ,p_module => l_log_module);
153572 END IF;
153573 RAISE;
153574 WHEN OTHERS THEN
153575 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
153576 trace
153577 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
153578 ,p_level => C_LEVEL_EXCEPTION
153579 ,p_module => l_log_module);
153580 END IF;
153581 xla_exceptions_pkg.raise_message
153582 (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_261');
153583 END insert_sources_261;
153584 --
153585
153586 ---------------------------------------
153587 --
153588 -- PRIVATE FUNCTION
153589 -- EventClass_261
153590 --
153591 ----------------------------------------
153592 --
153593 FUNCTION EventClass_261
153594 (p_application_id IN NUMBER
153595 ,p_base_ledger_id IN NUMBER
153596 ,p_target_ledger_id IN NUMBER
153597 ,p_language IN VARCHAR2
153598 ,p_currency_code IN VARCHAR2
153599 ,p_sla_ledger_id IN NUMBER
153600 ,p_pad_start_date IN DATE
153601 ,p_pad_end_date IN DATE
153602 ,p_primary_ledger_id IN NUMBER)
153603 RETURN BOOLEAN IS
153604 --
153605 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'FOB_SHIP_SENDER_SHIP_ALL';
153606 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'FOB_SHIP_SENDER_SHIP';
153607
153608 l_calculate_acctd_flag VARCHAR2(1) :='N';
153609 l_calculate_g_l_flag VARCHAR2(1) :='N';
153610 --
153611 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
153612 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
153613 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
153614 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
153615 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
153616 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
153617 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
153618 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
153619 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
153620 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
153621 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
153622 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
153623 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
153624 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
153625 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
153626 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
153627 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
153628 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
153629 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
153630 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
153631 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
153632 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
153633 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
153634 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
153635 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
153636 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
153637
153638 l_event_id NUMBER;
153639 l_previous_event_id NUMBER;
153640 l_first_event_id NUMBER;
153641 l_last_event_id NUMBER;
153642
153643 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
153644 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
153645 --
153646 --
153647 l_result BOOLEAN := TRUE;
153648 l_rows NUMBER := 1000;
153649 l_event_type_name VARCHAR2(80) := 'All';
153650 l_event_class_name VARCHAR2(80) := 'Sender-side Intransit Interorg Shipment for FOB Shipment';
153651 l_description VARCHAR2(4000);
153652 l_transaction_reversal NUMBER;
153653 l_ae_header_id NUMBER;
153654 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
153655 l_log_module VARCHAR2(240);
153656 --
153657 l_acct_reversal_source VARCHAR2(30);
153658 l_trx_reversal_source VARCHAR2(30);
153659
153660 l_continue_with_lines BOOLEAN := TRUE;
153661 --
153662 l_acc_rev_gl_date_source DATE; -- 4262811
153663 --
153664 type t_array_event_id is table of number index by binary_integer;
153665
153666 l_rec_array_event t_rec_array_event;
153667 l_null_rec_array_event t_rec_array_event;
153668 l_array_ae_header_id xla_number_array_type;
153669 l_actual_flag VARCHAR2(1) := NULL;
153670 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
153671 l_balance_type_code VARCHAR2(1) :=NULL;
153672 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
153673
153674 --
153675 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
153676 --
153677
153678 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
153679 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
153680
153681 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
153682 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
153683 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
153684 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
153685 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
153686 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
153687 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
153688 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
153689 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
153690
153691 l_array_source_12 t_array_source_12;
153692 l_array_source_12_meaning t_array_lookup_meaning;
153693 l_array_source_38 t_array_source_38;
153694 l_array_source_38_meaning t_array_lookup_meaning;
153695
153696 l_array_source_4 t_array_source_4;
153697 l_array_source_11 t_array_source_11;
153698 l_array_source_15 t_array_source_15;
153699 l_array_source_18 t_array_source_18;
153700 l_array_source_19 t_array_source_19;
153701 l_array_source_20 t_array_source_20;
153702 l_array_source_21 t_array_source_21;
153703 l_array_source_22 t_array_source_22;
153704 l_array_source_24 t_array_source_24;
153705
153706 --
153707 CURSOR header_cur
153708 IS
153709 SELECT /*+ leading(xet) cardinality(xet,1) */
153710 -- Event Class Code: FOB_SHIP_SENDER_SHIP
153711 xet.entity_id
153712 ,xet.legal_entity_id
153713 ,xet.entity_code
153714 ,xet.transaction_number
153715 ,xet.event_id
153716 ,xet.event_class_code
153717 ,xet.event_type_code
153718 ,xet.event_number
153719 ,xet.event_date
153720 ,xet.transaction_date
153721 ,xet.reference_num_1
153722 ,xet.reference_num_2
153723 ,xet.reference_num_3
153724 ,xet.reference_num_4
153725 ,xet.reference_char_1
153726 ,xet.reference_char_2
153727 ,xet.reference_char_3
153728 ,xet.reference_char_4
153729 ,xet.reference_date_1
153730 ,xet.reference_date_2
153731 ,xet.reference_date_3
153732 ,xet.reference_date_4
153733 ,xet.event_created_by
153734 ,xet.budgetary_control_flag
153735 , h1.DISTRIBUTION_TYPE source_12
153736 , fvl12.meaning source_12_meaning
153737 , h1.TRANSFER_TO_GL_INDICATOR source_38
153738 , fvl38.meaning source_38_meaning
153739 FROM xla_events_gt xet
153740 , CST_XLA_INV_HEADERS_V h1
153741 , fnd_lookup_values fvl12
153742 , fnd_lookup_values fvl38
153743 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
153744 and xet.event_class_code = C_EVENT_CLASS_CODE
153745 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
153746 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
153747 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
153748 AND fvl12.view_application_id(+) = 700
153749 AND fvl12.language(+) = USERENV('LANG')
153750 AND fvl38.lookup_type(+) = 'YES_NO'
153751 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
153752 AND fvl38.view_application_id(+) = 0
153753 AND fvl38.language(+) = USERENV('LANG')
153754
153755 ORDER BY event_id
153756 ;
153757
153758
153759 --
153760 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
153761 IS
153762 SELECT /*+ leading(xet) cardinality(xet,1) */
153763 -- Event Class Code: FOB_SHIP_SENDER_SHIP
153764 xet.entity_id
153765 ,xet.legal_entity_id
153766 ,xet.entity_code
153767 ,xet.transaction_number
153768 ,xet.event_id
153769 ,xet.event_class_code
153770 ,xet.event_type_code
153771 ,xet.event_number
153772 ,xet.event_date
153773 ,xet.transaction_date
153774 ,xet.reference_num_1
153775 ,xet.reference_num_2
153776 ,xet.reference_num_3
153777 ,xet.reference_num_4
153778 ,xet.reference_char_1
153779 ,xet.reference_char_2
153780 ,xet.reference_char_3
153781 ,xet.reference_char_4
153782 ,xet.reference_date_1
153783 ,xet.reference_date_2
153784 ,xet.reference_date_3
153785 ,xet.reference_date_4
153786 ,xet.event_created_by
153787 ,xet.budgetary_control_flag
153788 , l2.LINE_NUMBER
153789 , l2.CODE_COMBINATION_ID source_4
153790 , l2.DISTRIBUTION_IDENTIFIER source_11
153791 , l2.CURRENCY_CODE source_15
153792 , l2.ENTERED_AMOUNT source_18
153793 , l2.CURRENCY_CONVERSION_DATE source_19
153794 , l2.CURRENCY_CONVERSION_RATE source_20
153795 , l2.CURRENCY_CONVERSION_TYPE source_21
153796 , l2.ACCOUNTED_AMOUNT source_22
153797 , l2.ACCOUNTING_LINE_TYPE_CODE source_24
153798 FROM xla_events_gt xet
153799 , CST_XLA_INV_LINES_V l2
153800 WHERE xet.event_id between x_first_event_id and x_last_event_id
153801 and xet.event_date between p_pad_start_date and p_pad_end_date
153802 and xet.event_class_code = C_EVENT_CLASS_CODE
153803 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
153804 ;
153805
153806 --
153807 BEGIN
153808 IF g_log_enabled THEN
153809 l_log_module := C_DEFAULT_MODULE||'.EventClass_261';
153810 END IF;
153811 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
153812 trace
153813 (p_msg => 'BEGIN of EventClass_261'
153814 ,p_level => C_LEVEL_PROCEDURE
153815 ,p_module => l_log_module);
153816 END IF;
153817
153818 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
153819 trace
153820 (p_msg => 'p_application_id = '||p_application_id||
153821 ' - p_base_ledger_id = '||p_base_ledger_id||
153822 ' - p_target_ledger_id = '||p_target_ledger_id||
153823 ' - p_language = '||p_language||
153824 ' - p_currency_code = '||p_currency_code||
153825 ' - p_sla_ledger_id = '||p_sla_ledger_id
153826 ,p_level => C_LEVEL_STATEMENT
153827 ,p_module => l_log_module);
153828 END IF;
153829 --
153830 -- initialze arrays
153831 --
153832 g_array_event.DELETE;
153833 l_rec_array_event := l_null_rec_array_event;
153834 --
153835 --------------------------------------
153836 -- 4262811 Initialze MPA Line Number
153837 --------------------------------------
153838 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
153839
153840 --
153841
153842 --
153843 OPEN header_cur;
153844 --
153845 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
153846 trace
153847 (p_msg => 'SQL - FETCH header_cur'
153848 ,p_level => C_LEVEL_STATEMENT
153849 ,p_module => l_log_module);
153850 END IF;
153851 --
153852 LOOP
153853 FETCH header_cur BULK COLLECT INTO
153854 l_array_entity_id
153855 , l_array_legal_entity_id
153856 , l_array_entity_code
153857 , l_array_transaction_num
153858 , l_array_event_id
153859 , l_array_class_code
153860 , l_array_event_type
153861 , l_array_event_number
153862 , l_array_event_date
153863 , l_array_transaction_date
153864 , l_array_reference_num_1
153865 , l_array_reference_num_2
153866 , l_array_reference_num_3
153867 , l_array_reference_num_4
153868 , l_array_reference_char_1
153869 , l_array_reference_char_2
153870 , l_array_reference_char_3
153871 , l_array_reference_char_4
153872 , l_array_reference_date_1
153873 , l_array_reference_date_2
153874 , l_array_reference_date_3
153875 , l_array_reference_date_4
153876 , l_array_event_created_by
153877 , l_array_budgetary_control_flag
153878 , l_array_source_12
153879 , l_array_source_12_meaning
153880 , l_array_source_38
153881 , l_array_source_38_meaning
153882 LIMIT l_rows;
153883 --
153884 IF (C_LEVEL_EVENT >= g_log_level) THEN
153885 trace
153886 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
153887 ,p_level => C_LEVEL_EVENT
153888 ,p_module => l_log_module);
153889 END IF;
153890 --
153891 EXIT WHEN l_array_entity_id.COUNT = 0;
153892
153893 -- initialize arrays
153894 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
153895 XLA_AE_LINES_PKG.g_rec_lines := NULL;
153896
153897 --
153898 -- Bug 4458708
153899 --
153900 XLA_AE_LINES_PKG.g_LineNumber := 0;
153901
153902
153903 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
153904 g_last_hdr_idx := l_array_event_id.LAST;
153905 --
153906 -- loop for the headers. Each iteration is for each header extract row
153907 -- fetched in header cursor
153908 --
153909 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
153910
153911 --
153912 -- set event info as cache for other routines to refer event attributes
153913 --
153914 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
153915 (p_application_id => p_application_id
153916 ,p_primary_ledger_id => p_primary_ledger_id
153917 ,p_base_ledger_id => p_base_ledger_id
153918 ,p_target_ledger_id => p_target_ledger_id
153919 ,p_entity_id => l_array_entity_id(hdr_idx)
153920 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
153921 ,p_entity_code => l_array_entity_code(hdr_idx)
153922 ,p_transaction_num => l_array_transaction_num(hdr_idx)
153923 ,p_event_id => l_array_event_id(hdr_idx)
153924 ,p_event_class_code => l_array_class_code(hdr_idx)
153925 ,p_event_type_code => l_array_event_type(hdr_idx)
153926 ,p_event_number => l_array_event_number(hdr_idx)
153927 ,p_event_date => l_array_event_date(hdr_idx)
153928 ,p_transaction_date => l_array_transaction_date(hdr_idx)
153929 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
153930 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
153931 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
153932 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
153933 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
153934 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
153935 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
153936 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
153937 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
153938 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
153939 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
153940 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
153941 ,p_event_created_by => l_array_event_created_by(hdr_idx)
153942 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
153943
153944 --
153945 -- set the status of entry to C_VALID (0)
153946 --
153947 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
153948
153949 --
153950 -- initialize a row for ae header
153951 --
153952 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
153953
153954 l_event_id := l_array_event_id(hdr_idx);
153955
153956 --
153957 -- storing the hdr_idx for event. May be used by line cursor.
153958 --
153959 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
153960
153961 --
153962 -- store sources from header extract. This can be improved to
153963 -- store only those sources from header extract that may be used in lines
153964 --
153965
153966 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
153967 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
153968 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
153969 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
153970
153971 --
153972 -- initilaize the status of ae headers for diffrent balance types
153973 -- the status is initialised to C_NOT_CREATED (2)
153974 --
153975 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
153976 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
153977 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
153978
153979 --
153980 -- call api to validate and store accounting attributes for header
153981 --
153982
153983 ------------------------------------------------------------
153984 -- Accrual Reversal : to get date for Standard Source (NONE)
153985 ------------------------------------------------------------
153986 l_acc_rev_gl_date_source := NULL;
153987
153988 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
153989 l_rec_acct_attrs.array_date_value(1) :=
153990 xla_ae_sources_pkg.GetSystemSourceDate(
153991 p_source_code => 'XLA_REFERENCE_DATE_1'
153992 , p_source_type_code => 'Y'
153993 , p_source_application_id => 602
153994 );
153995 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_TRANSFER_FLAG';
153996 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
153997
153998
153999 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
154000
154001 XLA_AE_HEADER_PKG.SetJeCategoryName;
154002
154003 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
154004 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
154005 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
154006 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
154007 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
154008
154009
154010 -- No header level analytical criteria
154011
154012 --
154013 --accounting attribute enhancement, bug 3612931
154014 --
154015 l_trx_reversal_source := SUBSTR(NULL, 1,30);
154016
154017 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
154018 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
154019
154020 xla_accounting_err_pkg.build_message
154021 (p_appli_s_name => 'XLA'
154022 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
154023 ,p_token_1 => 'ACCT_ATTR_NAME'
154024 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
154025 ,p_token_2 => 'PRODUCT_NAME'
154026 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
154027 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
154028 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
154029 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
154030
154031 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
154032 --
154033 -- following sets the accounting attributes needed to reverse
154034 -- accounting for a distributeion
154035 --
154036 xla_ae_lines_pkg.SetTrxReversalAttrs
154037 (p_event_id => l_event_id
154038 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
154039 ,p_trx_reversal_source => l_trx_reversal_source);
154040
154041 END IF;
154042
154043
154044 ----------------------------------------------------------------
154045 -- 4262811 - update the header statuses to invalid in need be
154046 ----------------------------------------------------------------
154047 --
154048 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
154049
154050
154051 -----------------------------------------------
154052 -- No accrual reversal for the event class/type
154053 -----------------------------------------------
154054 ----------------------------------------------------------------
154055
154056 --
154057 -- this ends the header loop iteration for one bulk fetch
154058 --
154059 END LOOP;
154060
154061 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
154062 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
154063
154064 --
154065 -- insert dummy rows into lines gt table that were created due to
154066 -- transaction reversals
154067 --
154068 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
154069 l_result := XLA_AE_LINES_PKG.InsertLines;
154070 END IF;
154071
154072 --
154073 -- reset the temp_line_num for each set of events fetched from header
154074 -- cursor rather than doing it for each new event in line cursor
154075 -- Bug 3939231
154076 --
154077 xla_ae_lines_pkg.g_temp_line_num := 0;
154078
154079
154080
154081 --
154082 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
154083 --
154084 --
154085 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
154086
154087 trace
154088 (p_msg => 'SQL - FETCH line_cur'
154089 ,p_level => C_LEVEL_STATEMENT
154090 ,p_module => l_log_module);
154091
154092 END IF;
154093 --
154094 --
154095 LOOP
154096 --
154097 FETCH line_cur BULK COLLECT INTO
154098 l_array_entity_id
154099 , l_array_legal_entity_id
154100 , l_array_entity_code
154101 , l_array_transaction_num
154102 , l_array_event_id
154103 , l_array_class_code
154104 , l_array_event_type
154105 , l_array_event_number
154106 , l_array_event_date
154107 , l_array_transaction_date
154108 , l_array_reference_num_1
154109 , l_array_reference_num_2
154110 , l_array_reference_num_3
154111 , l_array_reference_num_4
154112 , l_array_reference_char_1
154113 , l_array_reference_char_2
154114 , l_array_reference_char_3
154115 , l_array_reference_char_4
154116 , l_array_reference_date_1
154117 , l_array_reference_date_2
154118 , l_array_reference_date_3
154119 , l_array_reference_date_4
154120 , l_array_event_created_by
154121 , l_array_budgetary_control_flag
154122 , l_array_extract_line_num
154123 , l_array_source_4
154124 , l_array_source_11
154125 , l_array_source_15
154126 , l_array_source_18
154127 , l_array_source_19
154128 , l_array_source_20
154129 , l_array_source_21
154130 , l_array_source_22
154131 , l_array_source_24
154132 LIMIT l_rows;
154133
154134 --
154135 IF (C_LEVEL_EVENT >= g_log_level) THEN
154136 trace
154137 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
154138 ,p_level => C_LEVEL_EVENT
154139 ,p_module => l_log_module);
154140 END IF;
154141 --
154142 EXIT WHEN l_array_entity_id.count = 0;
154143
154144 XLA_AE_LINES_PKG.g_rec_lines := null;
154145
154146 --
154147 -- Bug 4458708
154148 --
154149 XLA_AE_LINES_PKG.g_LineNumber := 0;
154150 --
154151 --
154152
154153 FOR Idx IN 1..l_array_event_id.count LOOP
154154 --
154155 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
154156 --
154157 l_event_id := l_array_event_id(idx); -- 5648433
154158
154159 --
154160 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
154161 --
154162
154163 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
154164 (g_array_event(l_event_id).array_value_num('header_index'))
154165 ,'N'
154166 ) <> 'Y'
154167 THEN
154168 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
154169 trace
154170 (p_msg => 'Trancaction revesal option is not Y '
154171 ,p_level => C_LEVEL_STATEMENT
154172 ,p_module => l_log_module);
154173 END IF;
154174
154175 --
154176 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
154177 --
154178 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
154179 --
154180 -- set event info as cache for other routines to refer event attributes
154181 --
154182
154183 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
154184 l_previous_event_id := l_event_id;
154185
154186 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
154187 (p_application_id => p_application_id
154188 ,p_primary_ledger_id => p_primary_ledger_id
154189 ,p_base_ledger_id => p_base_ledger_id
154190 ,p_target_ledger_id => p_target_ledger_id
154191 ,p_entity_id => l_array_entity_id(Idx)
154192 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
154193 ,p_entity_code => l_array_entity_code(Idx)
154194 ,p_transaction_num => l_array_transaction_num(Idx)
154195 ,p_event_id => l_array_event_id(Idx)
154196 ,p_event_class_code => l_array_class_code(Idx)
154197 ,p_event_type_code => l_array_event_type(Idx)
154198 ,p_event_number => l_array_event_number(Idx)
154199 ,p_event_date => l_array_event_date(Idx)
154200 ,p_transaction_date => l_array_transaction_date(Idx)
154201 ,p_reference_num_1 => l_array_reference_num_1(Idx)
154202 ,p_reference_num_2 => l_array_reference_num_2(Idx)
154203 ,p_reference_num_3 => l_array_reference_num_3(Idx)
154204 ,p_reference_num_4 => l_array_reference_num_4(Idx)
154205 ,p_reference_char_1 => l_array_reference_char_1(Idx)
154206 ,p_reference_char_2 => l_array_reference_char_2(Idx)
154207 ,p_reference_char_3 => l_array_reference_char_3(Idx)
154208 ,p_reference_char_4 => l_array_reference_char_4(Idx)
154209 ,p_reference_date_1 => l_array_reference_date_1(Idx)
154210 ,p_reference_date_2 => l_array_reference_date_2(Idx)
154211 ,p_reference_date_3 => l_array_reference_date_3(Idx)
154212 ,p_reference_date_4 => l_array_reference_date_4(Idx)
154213 ,p_event_created_by => l_array_event_created_by(Idx)
154214 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
154215 --
154216 END IF;
154217
154218
154219
154220 --
154221 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
154222
154223 l_acct_reversal_source := SUBSTR(NULL, 1,30);
154224
154225 IF l_continue_with_lines THEN
154226 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
154227 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
154228
154229 xla_accounting_err_pkg.build_message
154230 (p_appli_s_name => 'XLA'
154231 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
154232 ,p_token_1 => 'LINE_NUMBER'
154233 ,p_value_1 => l_array_extract_line_num(Idx)
154234 ,p_token_2 => 'PRODUCT_NAME'
154235 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
154236 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
154237 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
154238 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
154239
154240 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
154241 --
154242 -- following sets the accounting attributes needed to reverse
154243 -- accounting for a distributeion
154244 --
154245
154246 --
154247 -- 5217187
154248 --
154249 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
154250 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
154251 g_array_event(l_event_id).array_value_num('header_index'));
154252 --
154253 --
154254
154255 -- No reversal code generated
154256
154257 xla_ae_lines_pkg.SetAcctReversalAttrs
154258 (p_event_id => l_event_id
154259 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
154260 ,p_calculate_acctd_flag => l_calculate_acctd_flag
154261 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
154262 END IF;
154263
154264 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
154265 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
154266
154267 --
154268 AcctLineType_20 (
154269 p_application_id => p_application_id
154270 ,p_event_id => l_event_id
154271 ,p_calculate_acctd_flag => l_calculate_acctd_flag
154272 ,p_calculate_g_l_flag => l_calculate_g_l_flag
154273 ,p_actual_flag => l_actual_flag
154274 ,p_balance_type_code => l_balance_type_code
154275 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
154276
154277 , p_source_4 => l_array_source_4(Idx)
154278 , p_source_11 => l_array_source_11(Idx)
154279 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
154280 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
154281 , p_source_15 => l_array_source_15(Idx)
154282 , p_source_18 => l_array_source_18(Idx)
154283 , p_source_19 => l_array_source_19(Idx)
154284 , p_source_20 => l_array_source_20(Idx)
154285 , p_source_21 => l_array_source_21(Idx)
154286 , p_source_22 => l_array_source_22(Idx)
154287 , p_source_24 => l_array_source_24(Idx)
154288 );
154289 If(l_balance_type_code = 'A') THEN
154290 l_actual_gain_loss_ref := l_gain_or_loss_ref;
154291 END IF;
154292
154293 --
154294
154295
154296 --
154297 AcctLineType_85 (
154298 p_application_id => p_application_id
154299 ,p_event_id => l_event_id
154300 ,p_calculate_acctd_flag => l_calculate_acctd_flag
154301 ,p_calculate_g_l_flag => l_calculate_g_l_flag
154302 ,p_actual_flag => l_actual_flag
154303 ,p_balance_type_code => l_balance_type_code
154304 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
154305
154306 , p_source_4 => l_array_source_4(Idx)
154307 , p_source_11 => l_array_source_11(Idx)
154308 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
154309 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
154310 , p_source_15 => l_array_source_15(Idx)
154311 , p_source_18 => l_array_source_18(Idx)
154312 , p_source_19 => l_array_source_19(Idx)
154313 , p_source_20 => l_array_source_20(Idx)
154314 , p_source_21 => l_array_source_21(Idx)
154315 , p_source_22 => l_array_source_22(Idx)
154316 , p_source_24 => l_array_source_24(Idx)
154317 );
154318 If(l_balance_type_code = 'A') THEN
154319 l_actual_gain_loss_ref := l_gain_or_loss_ref;
154320 END IF;
154321
154322 --
154323
154324
154325 --
154326 AcctLineType_97 (
154327 p_application_id => p_application_id
154328 ,p_event_id => l_event_id
154329 ,p_calculate_acctd_flag => l_calculate_acctd_flag
154330 ,p_calculate_g_l_flag => l_calculate_g_l_flag
154331 ,p_actual_flag => l_actual_flag
154332 ,p_balance_type_code => l_balance_type_code
154333 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
154334
154335 , p_source_4 => l_array_source_4(Idx)
154336 , p_source_11 => l_array_source_11(Idx)
154337 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
154338 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
154339 , p_source_15 => l_array_source_15(Idx)
154340 , p_source_18 => l_array_source_18(Idx)
154341 , p_source_19 => l_array_source_19(Idx)
154342 , p_source_20 => l_array_source_20(Idx)
154343 , p_source_21 => l_array_source_21(Idx)
154344 , p_source_22 => l_array_source_22(Idx)
154345 , p_source_24 => l_array_source_24(Idx)
154346 );
154347 If(l_balance_type_code = 'A') THEN
154348 l_actual_gain_loss_ref := l_gain_or_loss_ref;
154349 END IF;
154350
154351 --
154352
154353
154354 --
154355 AcctLineType_109 (
154356 p_application_id => p_application_id
154357 ,p_event_id => l_event_id
154358 ,p_calculate_acctd_flag => l_calculate_acctd_flag
154359 ,p_calculate_g_l_flag => l_calculate_g_l_flag
154360 ,p_actual_flag => l_actual_flag
154361 ,p_balance_type_code => l_balance_type_code
154362 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
154363
154364 , p_source_4 => l_array_source_4(Idx)
154365 , p_source_11 => l_array_source_11(Idx)
154366 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
154367 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
154368 , p_source_15 => l_array_source_15(Idx)
154369 , p_source_18 => l_array_source_18(Idx)
154370 , p_source_19 => l_array_source_19(Idx)
154371 , p_source_20 => l_array_source_20(Idx)
154372 , p_source_21 => l_array_source_21(Idx)
154373 , p_source_22 => l_array_source_22(Idx)
154374 , p_source_24 => l_array_source_24(Idx)
154375 );
154376 If(l_balance_type_code = 'A') THEN
154377 l_actual_gain_loss_ref := l_gain_or_loss_ref;
154378 END IF;
154379
154380 --
154381
154382
154383 --
154384 AcctLineType_154 (
154385 p_application_id => p_application_id
154386 ,p_event_id => l_event_id
154387 ,p_calculate_acctd_flag => l_calculate_acctd_flag
154388 ,p_calculate_g_l_flag => l_calculate_g_l_flag
154389 ,p_actual_flag => l_actual_flag
154390 ,p_balance_type_code => l_balance_type_code
154391 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
154392
154393 , p_source_4 => l_array_source_4(Idx)
154394 , p_source_11 => l_array_source_11(Idx)
154395 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
154396 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
154397 , p_source_15 => l_array_source_15(Idx)
154398 , p_source_18 => l_array_source_18(Idx)
154399 , p_source_19 => l_array_source_19(Idx)
154400 , p_source_20 => l_array_source_20(Idx)
154401 , p_source_21 => l_array_source_21(Idx)
154402 , p_source_22 => l_array_source_22(Idx)
154403 , p_source_24 => l_array_source_24(Idx)
154404 );
154405 If(l_balance_type_code = 'A') THEN
154406 l_actual_gain_loss_ref := l_gain_or_loss_ref;
154407 END IF;
154408
154409 --
154410
154411
154412 --
154413 AcctLineType_179 (
154414 p_application_id => p_application_id
154415 ,p_event_id => l_event_id
154416 ,p_calculate_acctd_flag => l_calculate_acctd_flag
154417 ,p_calculate_g_l_flag => l_calculate_g_l_flag
154418 ,p_actual_flag => l_actual_flag
154419 ,p_balance_type_code => l_balance_type_code
154420 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
154421
154422 , p_source_4 => l_array_source_4(Idx)
154423 , p_source_11 => l_array_source_11(Idx)
154424 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
154425 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
154426 , p_source_15 => l_array_source_15(Idx)
154427 , p_source_18 => l_array_source_18(Idx)
154428 , p_source_19 => l_array_source_19(Idx)
154429 , p_source_20 => l_array_source_20(Idx)
154430 , p_source_21 => l_array_source_21(Idx)
154431 , p_source_22 => l_array_source_22(Idx)
154432 , p_source_24 => l_array_source_24(Idx)
154433 );
154434 If(l_balance_type_code = 'A') THEN
154435 l_actual_gain_loss_ref := l_gain_or_loss_ref;
154436 END IF;
154437
154438 --
154439
154440 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
154441 -- or secondary ledger that has different currency with primary
154442 -- or alc that is calculated by sla
154443 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
154444 (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'))
154445
154446 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
154447 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
154448 AND (l_actual_flag = 'A')) THEN
154449 XLA_AE_LINES_PKG.CreateGainOrLossLines(
154450 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
154451 ,p_application_id => p_application_id
154452 ,p_amb_context_code => 'DEFAULT'
154453 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
154454 ,p_event_class_code => C_EVENT_CLASS_CODE
154455 ,p_event_type_code => C_EVENT_TYPE_CODE
154456
154457 ,p_gain_ccid => -1
154458 ,p_loss_ccid => -1
154459
154460 ,p_actual_flag => l_actual_flag
154461 ,p_enc_flag => null
154462 ,p_actual_g_l_ref => l_actual_gain_loss_ref
154463 ,p_enc_g_l_ref => null
154464 );
154465 END IF;
154466 END IF;
154467 END IF;
154468
154469 ELSE
154470 --
154471 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
154472 --
154473 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
154474 trace
154475 (p_msg => 'Trancaction revesal option is Y'
154476 ,p_level => C_LEVEL_STATEMENT
154477 ,p_module => l_log_module);
154478 END IF;
154479 END IF;
154480
154481 END LOOP;
154482 l_result := XLA_AE_LINES_PKG.InsertLines ;
154483 end loop;
154484 close line_cur;
154485
154486
154487 --
154488 -- insert headers into xla_ae_headers_gt table
154489 --
154490 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
154491
154492 -- insert into errors table here.
154493
154494 END LOOP;
154495
154496 --
154497 -- 4865292
154498 --
154499 -- Compare g_hdr_extract_count with event count in
154500 -- CreateHeadersAndLines.
154501 --
154502 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
154503
154504 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
154505 trace (p_msg => '# rows extracted from header extract objects '
154506 || ' (running total): '
154507 || g_hdr_extract_count
154508 ,p_level => C_LEVEL_STATEMENT
154509 ,p_module => l_log_module);
154510 END IF;
154511
154512 CLOSE header_cur;
154513 --
154514
154515 --
154516 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
154517 trace
154518 (p_msg => 'END of EventClass_261'
154519 ,p_level => C_LEVEL_PROCEDURE
154520 ,p_module => l_log_module);
154521 END IF;
154522 --
154523 RETURN l_result;
154524 EXCEPTION
154525 WHEN xla_exceptions_pkg.application_exception THEN
154526
154527 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
154528
154529
154530 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
154531
154532 RAISE;
154533
154534 WHEN NO_DATA_FOUND THEN
154535
154536 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
154537 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
154538
154539 FOR header_record IN header_cur
154540 LOOP
154541 l_array_header_events(header_record.event_id) := header_record.event_id;
154542 END LOOP;
154543
154544 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
154545 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
154546
154547 fnd_file.put_line(fnd_file.LOG, ' ');
154548 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
154549 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
154550 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
154551
154552 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
154553 LOOP
154554 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
154555 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
154556 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
154557 END IF;
154558 END LOOP;
154559
154560 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
154561 fnd_file.put_line(fnd_file.LOG, ' ');
154562
154563
154564 xla_exceptions_pkg.raise_message
154565 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_261');
154566
154567
154568 WHEN OTHERS THEN
154569 xla_exceptions_pkg.raise_message
154570 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_261');
154571 END EventClass_261;
154572 --
154573
154574 ---------------------------------------
154575 --
154576 -- PRIVATE PROCEDURE
154577 -- insert_sources_262
154578 --
154579 ----------------------------------------
154580 --
154581 PROCEDURE insert_sources_262(
154582 p_target_ledger_id IN NUMBER
154583 , p_language IN VARCHAR2
154584 , p_sla_ledger_id IN NUMBER
154585 , p_pad_start_date IN DATE
154586 , p_pad_end_date IN DATE
154587 )
154588 IS
154589
154590 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'INTRAORG_TXFR_ALL';
154591 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'INTRAORG_TXFR';
154592 p_apps_owner VARCHAR2(30);
154593 l_log_module VARCHAR2(240);
154594 BEGIN
154595 IF g_log_enabled THEN
154596 l_log_module := C_DEFAULT_MODULE||'.insert_sources_262';
154597 END IF;
154598 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
154599
154600 trace
154601 (p_msg => 'BEGIN of insert_sources_262'
154602 ,p_level => C_LEVEL_PROCEDURE
154603 ,p_module => l_log_module);
154604
154605 END IF;
154606
154607 -- select APPS owner
154608 SELECT oracle_username
154609 INTO p_apps_owner
154610 FROM fnd_oracle_userid
154611 WHERE read_only_flag = 'U'
154612 ;
154613
154614 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
154615 trace
154616 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
154617 ' - p_language = '||p_language||
154618 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
154619 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
154620 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
154621 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
154622 ,p_level => C_LEVEL_STATEMENT
154623 ,p_module => l_log_module);
154624 END IF;
154625
154626
154627 --
154628 INSERT INTO xla_diag_sources --hdr2
154629 (
154630 event_id
154631 , ledger_id
154632 , sla_ledger_id
154633 , description_language
154634 , object_name
154635 , object_type_code
154636 , line_number
154637 , source_application_id
154638 , source_type_code
154639 , source_code
154640 , source_value
154641 , source_meaning
154642 , created_by
154643 , creation_date
154644 , last_update_date
154645 , last_updated_by
154646 , last_update_login
154647 , program_update_date
154648 , program_application_id
154649 , program_id
154650 , request_id
154651 )
154652 SELECT
154653 event_id
154654 , p_target_ledger_id
154655 , p_sla_ledger_id
154656 , p_language
154657 , object_name
154658 , object_type_code
154659 , line_number
154660 , source_application_id
154661 , source_type_code
154662 , source_code
154663 , SUBSTR(source_value ,1,1996)
154664 , SUBSTR(source_meaning ,1,200)
154665 , xla_environment_pkg.g_Usr_Id
154666 , TRUNC(SYSDATE)
154667 , TRUNC(SYSDATE)
154668 , xla_environment_pkg.g_Usr_Id
154669 , xla_environment_pkg.g_Login_Id
154670 , TRUNC(SYSDATE)
154671 , xla_environment_pkg.g_Prog_Appl_Id
154672 , xla_environment_pkg.g_Prog_Id
154673 , xla_environment_pkg.g_Req_Id
154674 FROM (
154675 SELECT xet.event_id event_id
154676 , 0 line_number
154677 , CASE r
154678 WHEN 1 THEN 'CST_XLA_INV_HEADERS_V'
154679 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V'
154680
154681 ELSE null
154682 END object_name
154683 , CASE r
154684 WHEN 1 THEN 'HEADER'
154685 WHEN 2 THEN 'HEADER'
154686
154687 ELSE null
154688 END object_type_code
154689 , CASE r
154690 WHEN 1 THEN '707'
154691 WHEN 2 THEN '707'
154692
154693 ELSE null
154694 END source_application_id
154695 , 'S' source_type_code
154696 , CASE r
154697 WHEN 1 THEN 'DISTRIBUTION_TYPE'
154698 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR'
154699
154700 ELSE null
154701 END source_code
154702 , CASE r
154703 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
154704 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
154705
154706 ELSE null
154707 END source_value
154708 , CASE r
154709 WHEN 1 THEN fvl12.meaning
154710 WHEN 2 THEN fvl38.meaning
154711
154712 ELSE null
154713 END source_meaning
154714 FROM xla_events_gt xet
154715 , CST_XLA_INV_HEADERS_V h1
154716 , fnd_lookup_values fvl12
154717 , fnd_lookup_values fvl38
154718 ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
154719 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
154720 AND xet.event_class_code = C_EVENT_CLASS_CODE
154721 AND h1.event_id = xet.event_id
154722 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
154723 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
154724 AND fvl12.view_application_id(+) = 700
154725 AND fvl12.language(+) = USERENV('LANG')
154726 AND fvl38.lookup_type(+) = 'YES_NO'
154727 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
154728 AND fvl38.view_application_id(+) = 0
154729 AND fvl38.language(+) = USERENV('LANG')
154730
154731 )
154732 ;
154733 --
154734 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
154735
154736 trace
154737 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
154738 ,p_level => C_LEVEL_STATEMENT
154739 ,p_module => l_log_module);
154740
154741 END IF;
154742 --
154743
154744
154745
154746 --
154747 INSERT INTO xla_diag_sources --line2
154748 (
154749 event_id
154750 , ledger_id
154751 , sla_ledger_id
154752 , description_language
154753 , object_name
154754 , object_type_code
154755 , line_number
154756 , source_application_id
154757 , source_type_code
154758 , source_code
154759 , source_value
154760 , source_meaning
154761 , created_by
154762 , creation_date
154763 , last_update_date
154764 , last_updated_by
154765 , last_update_login
154766 , program_update_date
154767 , program_application_id
154768 , program_id
154769 , request_id
154770 )
154771 SELECT event_id
154772 , p_target_ledger_id
154773 , p_sla_ledger_id
154774 , p_language
154775 , object_name
154776 , object_type_code
154777 , line_number
154778 , source_application_id
154779 , source_type_code
154780 , source_code
154781 , SUBSTR(source_value,1,1996)
154782 , SUBSTR(source_meaning ,1,200)
154783 , xla_environment_pkg.g_Usr_Id
154784 , TRUNC(SYSDATE)
154785 , TRUNC(SYSDATE)
154786 , xla_environment_pkg.g_Usr_Id
154787 , xla_environment_pkg.g_Login_Id
154788 , TRUNC(SYSDATE)
154789 , xla_environment_pkg.g_Prog_Appl_Id
154790 , xla_environment_pkg.g_Prog_Id
154791 , xla_environment_pkg.g_Req_Id
154792 FROM (
154793 SELECT xet.event_id event_id
154794 , l2.line_number line_number
154795 , CASE r
154796 WHEN 1 THEN 'CST_XLA_INV_LINES_V'
154797 WHEN 2 THEN 'CST_XLA_INV_LINES_V'
154798 WHEN 3 THEN 'CST_XLA_INV_LINES_V'
154799 WHEN 4 THEN 'CST_XLA_INV_LINES_V'
154800 WHEN 5 THEN 'CST_XLA_INV_LINES_V'
154801 WHEN 6 THEN 'CST_XLA_INV_LINES_V'
154802 WHEN 7 THEN 'CST_XLA_INV_LINES_V'
154803 WHEN 8 THEN 'CST_XLA_INV_LINES_V'
154804 WHEN 9 THEN 'CST_XLA_INV_LINES_V'
154805
154806 ELSE null
154807 END object_name
154808 , CASE r
154809 WHEN 1 THEN 'LINE'
154810 WHEN 2 THEN 'LINE'
154811 WHEN 3 THEN 'LINE'
154812 WHEN 4 THEN 'LINE'
154813 WHEN 5 THEN 'LINE'
154814 WHEN 6 THEN 'LINE'
154815 WHEN 7 THEN 'LINE'
154816 WHEN 8 THEN 'LINE'
154817 WHEN 9 THEN 'LINE'
154818
154819 ELSE null
154820 END object_type_code
154821 , CASE r
154822 WHEN 1 THEN '707'
154823 WHEN 2 THEN '707'
154824 WHEN 3 THEN '707'
154825 WHEN 4 THEN '707'
154826 WHEN 5 THEN '707'
154827 WHEN 6 THEN '707'
154828 WHEN 7 THEN '707'
154829 WHEN 8 THEN '707'
154830 WHEN 9 THEN '707'
154831
154832 ELSE null
154833 END source_application_id
154834 , 'S' source_type_code
154835 , CASE r
154836 WHEN 1 THEN 'CODE_COMBINATION_ID'
154837 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER'
154838 WHEN 3 THEN 'CURRENCY_CODE'
154839 WHEN 4 THEN 'ENTERED_AMOUNT'
154840 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE'
154841 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE'
154842 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE'
154843 WHEN 8 THEN 'ACCOUNTED_AMOUNT'
154844 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE'
154845
154846 ELSE null
154847 END source_code
154848 , CASE r
154849 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
154850 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
154851 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
154852 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
154853 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
154854 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
154855 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
154856 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
154857 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
154858
154859 ELSE null
154860 END source_value
154861 , null source_meaning
154862 FROM xla_events_gt xet
154863 , CST_XLA_INV_LINES_V l2
154864 , (select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
154865 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
154866 AND xet.event_class_code = C_EVENT_CLASS_CODE
154867 AND l2.event_id = xet.event_id
154868
154869 )
154870 ;
154871 --
154872 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
154873
154874 trace
154875 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
154876 ,p_level => C_LEVEL_STATEMENT
154877 ,p_module => l_log_module);
154878
154879 END IF;
154880
154881
154882 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
154883 trace
154884 (p_msg => 'END of insert_sources_262'
154885 ,p_level => C_LEVEL_PROCEDURE
154886 ,p_module => l_log_module);
154887 END IF;
154888 EXCEPTION
154889 WHEN xla_exceptions_pkg.application_exception THEN
154890 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
154891 trace
154892 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
154893 ,p_level => C_LEVEL_EXCEPTION
154894 ,p_module => l_log_module);
154895 END IF;
154896 RAISE;
154897 WHEN OTHERS THEN
154898 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
154899 trace
154900 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
154901 ,p_level => C_LEVEL_EXCEPTION
154902 ,p_module => l_log_module);
154903 END IF;
154904 xla_exceptions_pkg.raise_message
154905 (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_262');
154906 END insert_sources_262;
154907 --
154908
154909 ---------------------------------------
154910 --
154911 -- PRIVATE FUNCTION
154912 -- EventClass_262
154913 --
154914 ----------------------------------------
154915 --
154916 FUNCTION EventClass_262
154917 (p_application_id IN NUMBER
154918 ,p_base_ledger_id IN NUMBER
154919 ,p_target_ledger_id IN NUMBER
154920 ,p_language IN VARCHAR2
154921 ,p_currency_code IN VARCHAR2
154922 ,p_sla_ledger_id IN NUMBER
154923 ,p_pad_start_date IN DATE
154924 ,p_pad_end_date IN DATE
154925 ,p_primary_ledger_id IN NUMBER)
154926 RETURN BOOLEAN IS
154927 --
154928 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'INTRAORG_TXFR_ALL';
154929 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'INTRAORG_TXFR';
154930
154931 l_calculate_acctd_flag VARCHAR2(1) :='N';
154932 l_calculate_g_l_flag VARCHAR2(1) :='N';
154933 --
154934 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
154935 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
154936 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
154937 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
154938 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
154939 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
154940 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
154941 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
154942 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
154943 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
154944 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
154945 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
154946 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
154947 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
154948 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
154949 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
154950 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
154951 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
154952 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
154953 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
154954 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
154955 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
154956 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
154957 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
154958 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
154959 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
154960
154961 l_event_id NUMBER;
154962 l_previous_event_id NUMBER;
154963 l_first_event_id NUMBER;
154964 l_last_event_id NUMBER;
154965
154966 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
154967 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
154968 --
154969 --
154970 l_result BOOLEAN := TRUE;
154971 l_rows NUMBER := 1000;
154972 l_event_type_name VARCHAR2(80) := 'All';
154973 l_event_class_name VARCHAR2(80) := 'Intraorg Transfer';
154974 l_description VARCHAR2(4000);
154975 l_transaction_reversal NUMBER;
154976 l_ae_header_id NUMBER;
154977 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
154978 l_log_module VARCHAR2(240);
154979 --
154980 l_acct_reversal_source VARCHAR2(30);
154981 l_trx_reversal_source VARCHAR2(30);
154982
154983 l_continue_with_lines BOOLEAN := TRUE;
154984 --
154985 l_acc_rev_gl_date_source DATE; -- 4262811
154986 --
154987 type t_array_event_id is table of number index by binary_integer;
154988
154989 l_rec_array_event t_rec_array_event;
154990 l_null_rec_array_event t_rec_array_event;
154991 l_array_ae_header_id xla_number_array_type;
154992 l_actual_flag VARCHAR2(1) := NULL;
154993 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
154994 l_balance_type_code VARCHAR2(1) :=NULL;
154995 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
154996
154997 --
154998 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
154999 --
155000
155001 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
155002 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
155003
155004 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
155005 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
155006 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
155007 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
155008 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
155009 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
155010 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
155011 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
155012 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
155013
155014 l_array_source_12 t_array_source_12;
155015 l_array_source_12_meaning t_array_lookup_meaning;
155016 l_array_source_38 t_array_source_38;
155017 l_array_source_38_meaning t_array_lookup_meaning;
155018
155019 l_array_source_4 t_array_source_4;
155020 l_array_source_11 t_array_source_11;
155021 l_array_source_15 t_array_source_15;
155022 l_array_source_18 t_array_source_18;
155023 l_array_source_19 t_array_source_19;
155024 l_array_source_20 t_array_source_20;
155025 l_array_source_21 t_array_source_21;
155026 l_array_source_22 t_array_source_22;
155027 l_array_source_24 t_array_source_24;
155028
155029 --
155030 CURSOR header_cur
155031 IS
155032 SELECT /*+ leading(xet) cardinality(xet,1) */
155033 -- Event Class Code: INTRAORG_TXFR
155034 xet.entity_id
155035 ,xet.legal_entity_id
155036 ,xet.entity_code
155037 ,xet.transaction_number
155038 ,xet.event_id
155039 ,xet.event_class_code
155040 ,xet.event_type_code
155041 ,xet.event_number
155042 ,xet.event_date
155043 ,xet.transaction_date
155044 ,xet.reference_num_1
155045 ,xet.reference_num_2
155046 ,xet.reference_num_3
155047 ,xet.reference_num_4
155048 ,xet.reference_char_1
155049 ,xet.reference_char_2
155050 ,xet.reference_char_3
155051 ,xet.reference_char_4
155052 ,xet.reference_date_1
155053 ,xet.reference_date_2
155054 ,xet.reference_date_3
155055 ,xet.reference_date_4
155056 ,xet.event_created_by
155057 ,xet.budgetary_control_flag
155058 , h1.DISTRIBUTION_TYPE source_12
155059 , fvl12.meaning source_12_meaning
155060 , h1.TRANSFER_TO_GL_INDICATOR source_38
155061 , fvl38.meaning source_38_meaning
155062 FROM xla_events_gt xet
155063 , CST_XLA_INV_HEADERS_V h1
155064 , fnd_lookup_values fvl12
155065 , fnd_lookup_values fvl38
155066 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
155067 and xet.event_class_code = C_EVENT_CLASS_CODE
155068 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
155069 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
155070 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
155071 AND fvl12.view_application_id(+) = 700
155072 AND fvl12.language(+) = USERENV('LANG')
155073 AND fvl38.lookup_type(+) = 'YES_NO'
155074 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
155075 AND fvl38.view_application_id(+) = 0
155076 AND fvl38.language(+) = USERENV('LANG')
155077
155078 ORDER BY event_id
155079 ;
155080
155081
155082 --
155083 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
155084 IS
155085 SELECT /*+ leading(xet) cardinality(xet,1) */
155086 -- Event Class Code: INTRAORG_TXFR
155087 xet.entity_id
155088 ,xet.legal_entity_id
155089 ,xet.entity_code
155090 ,xet.transaction_number
155091 ,xet.event_id
155092 ,xet.event_class_code
155093 ,xet.event_type_code
155094 ,xet.event_number
155095 ,xet.event_date
155096 ,xet.transaction_date
155097 ,xet.reference_num_1
155098 ,xet.reference_num_2
155099 ,xet.reference_num_3
155100 ,xet.reference_num_4
155101 ,xet.reference_char_1
155102 ,xet.reference_char_2
155103 ,xet.reference_char_3
155104 ,xet.reference_char_4
155105 ,xet.reference_date_1
155106 ,xet.reference_date_2
155107 ,xet.reference_date_3
155108 ,xet.reference_date_4
155109 ,xet.event_created_by
155110 ,xet.budgetary_control_flag
155111 , l2.LINE_NUMBER
155112 , l2.CODE_COMBINATION_ID source_4
155113 , l2.DISTRIBUTION_IDENTIFIER source_11
155114 , l2.CURRENCY_CODE source_15
155115 , l2.ENTERED_AMOUNT source_18
155116 , l2.CURRENCY_CONVERSION_DATE source_19
155117 , l2.CURRENCY_CONVERSION_RATE source_20
155118 , l2.CURRENCY_CONVERSION_TYPE source_21
155119 , l2.ACCOUNTED_AMOUNT source_22
155120 , l2.ACCOUNTING_LINE_TYPE_CODE source_24
155121 FROM xla_events_gt xet
155122 , CST_XLA_INV_LINES_V l2
155123 WHERE xet.event_id between x_first_event_id and x_last_event_id
155124 and xet.event_date between p_pad_start_date and p_pad_end_date
155125 and xet.event_class_code = C_EVENT_CLASS_CODE
155126 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
155127 ;
155128
155129 --
155130 BEGIN
155131 IF g_log_enabled THEN
155132 l_log_module := C_DEFAULT_MODULE||'.EventClass_262';
155133 END IF;
155134 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
155135 trace
155136 (p_msg => 'BEGIN of EventClass_262'
155137 ,p_level => C_LEVEL_PROCEDURE
155138 ,p_module => l_log_module);
155139 END IF;
155140
155141 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
155142 trace
155143 (p_msg => 'p_application_id = '||p_application_id||
155144 ' - p_base_ledger_id = '||p_base_ledger_id||
155145 ' - p_target_ledger_id = '||p_target_ledger_id||
155146 ' - p_language = '||p_language||
155147 ' - p_currency_code = '||p_currency_code||
155148 ' - p_sla_ledger_id = '||p_sla_ledger_id
155149 ,p_level => C_LEVEL_STATEMENT
155150 ,p_module => l_log_module);
155151 END IF;
155152 --
155153 -- initialze arrays
155154 --
155155 g_array_event.DELETE;
155156 l_rec_array_event := l_null_rec_array_event;
155157 --
155158 --------------------------------------
155159 -- 4262811 Initialze MPA Line Number
155160 --------------------------------------
155161 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
155162
155163 --
155164
155165 --
155166 OPEN header_cur;
155167 --
155168 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
155169 trace
155170 (p_msg => 'SQL - FETCH header_cur'
155171 ,p_level => C_LEVEL_STATEMENT
155172 ,p_module => l_log_module);
155173 END IF;
155174 --
155175 LOOP
155176 FETCH header_cur BULK COLLECT INTO
155177 l_array_entity_id
155178 , l_array_legal_entity_id
155179 , l_array_entity_code
155180 , l_array_transaction_num
155181 , l_array_event_id
155182 , l_array_class_code
155183 , l_array_event_type
155184 , l_array_event_number
155185 , l_array_event_date
155186 , l_array_transaction_date
155187 , l_array_reference_num_1
155188 , l_array_reference_num_2
155189 , l_array_reference_num_3
155190 , l_array_reference_num_4
155191 , l_array_reference_char_1
155192 , l_array_reference_char_2
155193 , l_array_reference_char_3
155194 , l_array_reference_char_4
155195 , l_array_reference_date_1
155196 , l_array_reference_date_2
155197 , l_array_reference_date_3
155198 , l_array_reference_date_4
155199 , l_array_event_created_by
155200 , l_array_budgetary_control_flag
155201 , l_array_source_12
155202 , l_array_source_12_meaning
155203 , l_array_source_38
155204 , l_array_source_38_meaning
155205 LIMIT l_rows;
155206 --
155207 IF (C_LEVEL_EVENT >= g_log_level) THEN
155208 trace
155209 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
155210 ,p_level => C_LEVEL_EVENT
155211 ,p_module => l_log_module);
155212 END IF;
155213 --
155214 EXIT WHEN l_array_entity_id.COUNT = 0;
155215
155216 -- initialize arrays
155217 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
155218 XLA_AE_LINES_PKG.g_rec_lines := NULL;
155219
155220 --
155221 -- Bug 4458708
155222 --
155223 XLA_AE_LINES_PKG.g_LineNumber := 0;
155224
155225
155226 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
155227 g_last_hdr_idx := l_array_event_id.LAST;
155228 --
155229 -- loop for the headers. Each iteration is for each header extract row
155230 -- fetched in header cursor
155231 --
155232 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
155233
155234 --
155235 -- set event info as cache for other routines to refer event attributes
155236 --
155237 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
155238 (p_application_id => p_application_id
155239 ,p_primary_ledger_id => p_primary_ledger_id
155240 ,p_base_ledger_id => p_base_ledger_id
155241 ,p_target_ledger_id => p_target_ledger_id
155242 ,p_entity_id => l_array_entity_id(hdr_idx)
155243 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
155244 ,p_entity_code => l_array_entity_code(hdr_idx)
155245 ,p_transaction_num => l_array_transaction_num(hdr_idx)
155246 ,p_event_id => l_array_event_id(hdr_idx)
155247 ,p_event_class_code => l_array_class_code(hdr_idx)
155248 ,p_event_type_code => l_array_event_type(hdr_idx)
155249 ,p_event_number => l_array_event_number(hdr_idx)
155250 ,p_event_date => l_array_event_date(hdr_idx)
155251 ,p_transaction_date => l_array_transaction_date(hdr_idx)
155252 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
155253 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
155254 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
155255 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
155256 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
155257 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
155258 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
155259 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
155260 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
155261 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
155262 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
155263 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
155264 ,p_event_created_by => l_array_event_created_by(hdr_idx)
155265 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
155266
155267 --
155268 -- set the status of entry to C_VALID (0)
155269 --
155270 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
155271
155272 --
155273 -- initialize a row for ae header
155274 --
155275 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
155276
155277 l_event_id := l_array_event_id(hdr_idx);
155278
155279 --
155280 -- storing the hdr_idx for event. May be used by line cursor.
155281 --
155282 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
155283
155284 --
155285 -- store sources from header extract. This can be improved to
155286 -- store only those sources from header extract that may be used in lines
155287 --
155288
155289 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
155290 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
155291 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
155292 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
155293
155294 --
155295 -- initilaize the status of ae headers for diffrent balance types
155296 -- the status is initialised to C_NOT_CREATED (2)
155297 --
155298 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
155299 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
155300 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
155301
155302 --
155303 -- call api to validate and store accounting attributes for header
155304 --
155305
155306 ------------------------------------------------------------
155307 -- Accrual Reversal : to get date for Standard Source (NONE)
155308 ------------------------------------------------------------
155309 l_acc_rev_gl_date_source := NULL;
155310
155311 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
155312 l_rec_acct_attrs.array_date_value(1) :=
155313 xla_ae_sources_pkg.GetSystemSourceDate(
155314 p_source_code => 'XLA_REFERENCE_DATE_1'
155315 , p_source_type_code => 'Y'
155316 , p_source_application_id => 602
155317 );
155318 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_TRANSFER_FLAG';
155319 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
155320
155321
155322 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
155323
155324 XLA_AE_HEADER_PKG.SetJeCategoryName;
155325
155326 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
155327 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
155328 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
155329 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
155330 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
155331
155332
155333 -- No header level analytical criteria
155334
155335 --
155336 --accounting attribute enhancement, bug 3612931
155337 --
155338 l_trx_reversal_source := SUBSTR(NULL, 1,30);
155339
155340 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
155341 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
155342
155343 xla_accounting_err_pkg.build_message
155344 (p_appli_s_name => 'XLA'
155345 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
155346 ,p_token_1 => 'ACCT_ATTR_NAME'
155347 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
155348 ,p_token_2 => 'PRODUCT_NAME'
155349 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
155350 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
155351 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
155352 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
155353
155354 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
155355 --
155356 -- following sets the accounting attributes needed to reverse
155357 -- accounting for a distributeion
155358 --
155359 xla_ae_lines_pkg.SetTrxReversalAttrs
155360 (p_event_id => l_event_id
155361 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
155362 ,p_trx_reversal_source => l_trx_reversal_source);
155363
155364 END IF;
155365
155366
155367 ----------------------------------------------------------------
155368 -- 4262811 - update the header statuses to invalid in need be
155369 ----------------------------------------------------------------
155370 --
155371 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
155372
155373
155374 -----------------------------------------------
155375 -- No accrual reversal for the event class/type
155376 -----------------------------------------------
155377 ----------------------------------------------------------------
155378
155379 --
155380 -- this ends the header loop iteration for one bulk fetch
155381 --
155382 END LOOP;
155383
155384 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
155385 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
155386
155387 --
155388 -- insert dummy rows into lines gt table that were created due to
155389 -- transaction reversals
155390 --
155391 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
155392 l_result := XLA_AE_LINES_PKG.InsertLines;
155393 END IF;
155394
155395 --
155396 -- reset the temp_line_num for each set of events fetched from header
155397 -- cursor rather than doing it for each new event in line cursor
155398 -- Bug 3939231
155399 --
155400 xla_ae_lines_pkg.g_temp_line_num := 0;
155401
155402
155403
155404 --
155405 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
155406 --
155407 --
155408 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
155409
155410 trace
155411 (p_msg => 'SQL - FETCH line_cur'
155412 ,p_level => C_LEVEL_STATEMENT
155413 ,p_module => l_log_module);
155414
155415 END IF;
155416 --
155417 --
155418 LOOP
155419 --
155420 FETCH line_cur BULK COLLECT INTO
155421 l_array_entity_id
155422 , l_array_legal_entity_id
155423 , l_array_entity_code
155424 , l_array_transaction_num
155425 , l_array_event_id
155426 , l_array_class_code
155427 , l_array_event_type
155428 , l_array_event_number
155429 , l_array_event_date
155430 , l_array_transaction_date
155431 , l_array_reference_num_1
155432 , l_array_reference_num_2
155433 , l_array_reference_num_3
155434 , l_array_reference_num_4
155435 , l_array_reference_char_1
155436 , l_array_reference_char_2
155437 , l_array_reference_char_3
155438 , l_array_reference_char_4
155439 , l_array_reference_date_1
155440 , l_array_reference_date_2
155441 , l_array_reference_date_3
155442 , l_array_reference_date_4
155443 , l_array_event_created_by
155444 , l_array_budgetary_control_flag
155445 , l_array_extract_line_num
155446 , l_array_source_4
155447 , l_array_source_11
155448 , l_array_source_15
155449 , l_array_source_18
155450 , l_array_source_19
155451 , l_array_source_20
155452 , l_array_source_21
155453 , l_array_source_22
155454 , l_array_source_24
155455 LIMIT l_rows;
155456
155457 --
155458 IF (C_LEVEL_EVENT >= g_log_level) THEN
155459 trace
155460 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
155461 ,p_level => C_LEVEL_EVENT
155462 ,p_module => l_log_module);
155463 END IF;
155464 --
155465 EXIT WHEN l_array_entity_id.count = 0;
155466
155467 XLA_AE_LINES_PKG.g_rec_lines := null;
155468
155469 --
155470 -- Bug 4458708
155471 --
155472 XLA_AE_LINES_PKG.g_LineNumber := 0;
155473 --
155474 --
155475
155476 FOR Idx IN 1..l_array_event_id.count LOOP
155477 --
155478 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
155479 --
155480 l_event_id := l_array_event_id(idx); -- 5648433
155481
155482 --
155483 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
155484 --
155485
155486 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
155487 (g_array_event(l_event_id).array_value_num('header_index'))
155488 ,'N'
155489 ) <> 'Y'
155490 THEN
155491 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
155492 trace
155493 (p_msg => 'Trancaction revesal option is not Y '
155494 ,p_level => C_LEVEL_STATEMENT
155495 ,p_module => l_log_module);
155496 END IF;
155497
155498 --
155499 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
155500 --
155501 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
155502 --
155503 -- set event info as cache for other routines to refer event attributes
155504 --
155505
155506 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
155507 l_previous_event_id := l_event_id;
155508
155509 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
155510 (p_application_id => p_application_id
155511 ,p_primary_ledger_id => p_primary_ledger_id
155512 ,p_base_ledger_id => p_base_ledger_id
155513 ,p_target_ledger_id => p_target_ledger_id
155514 ,p_entity_id => l_array_entity_id(Idx)
155515 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
155516 ,p_entity_code => l_array_entity_code(Idx)
155517 ,p_transaction_num => l_array_transaction_num(Idx)
155518 ,p_event_id => l_array_event_id(Idx)
155519 ,p_event_class_code => l_array_class_code(Idx)
155520 ,p_event_type_code => l_array_event_type(Idx)
155521 ,p_event_number => l_array_event_number(Idx)
155522 ,p_event_date => l_array_event_date(Idx)
155523 ,p_transaction_date => l_array_transaction_date(Idx)
155524 ,p_reference_num_1 => l_array_reference_num_1(Idx)
155525 ,p_reference_num_2 => l_array_reference_num_2(Idx)
155526 ,p_reference_num_3 => l_array_reference_num_3(Idx)
155527 ,p_reference_num_4 => l_array_reference_num_4(Idx)
155528 ,p_reference_char_1 => l_array_reference_char_1(Idx)
155529 ,p_reference_char_2 => l_array_reference_char_2(Idx)
155530 ,p_reference_char_3 => l_array_reference_char_3(Idx)
155531 ,p_reference_char_4 => l_array_reference_char_4(Idx)
155532 ,p_reference_date_1 => l_array_reference_date_1(Idx)
155533 ,p_reference_date_2 => l_array_reference_date_2(Idx)
155534 ,p_reference_date_3 => l_array_reference_date_3(Idx)
155535 ,p_reference_date_4 => l_array_reference_date_4(Idx)
155536 ,p_event_created_by => l_array_event_created_by(Idx)
155537 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
155538 --
155539 END IF;
155540
155541
155542
155543 --
155544 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
155545
155546 l_acct_reversal_source := SUBSTR(NULL, 1,30);
155547
155548 IF l_continue_with_lines THEN
155549 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
155550 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
155551
155552 xla_accounting_err_pkg.build_message
155553 (p_appli_s_name => 'XLA'
155554 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
155555 ,p_token_1 => 'LINE_NUMBER'
155556 ,p_value_1 => l_array_extract_line_num(Idx)
155557 ,p_token_2 => 'PRODUCT_NAME'
155558 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
155559 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
155560 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
155561 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
155562
155563 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
155564 --
155565 -- following sets the accounting attributes needed to reverse
155566 -- accounting for a distributeion
155567 --
155568
155569 --
155570 -- 5217187
155571 --
155572 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
155573 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
155574 g_array_event(l_event_id).array_value_num('header_index'));
155575 --
155576 --
155577
155578 -- No reversal code generated
155579
155580 xla_ae_lines_pkg.SetAcctReversalAttrs
155581 (p_event_id => l_event_id
155582 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
155583 ,p_calculate_acctd_flag => l_calculate_acctd_flag
155584 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
155585 END IF;
155586
155587 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
155588 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
155589
155590 --
155591 AcctLineType_29 (
155592 p_application_id => p_application_id
155593 ,p_event_id => l_event_id
155594 ,p_calculate_acctd_flag => l_calculate_acctd_flag
155595 ,p_calculate_g_l_flag => l_calculate_g_l_flag
155596 ,p_actual_flag => l_actual_flag
155597 ,p_balance_type_code => l_balance_type_code
155598 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
155599
155600 , p_source_4 => l_array_source_4(Idx)
155601 , p_source_11 => l_array_source_11(Idx)
155602 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
155603 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
155604 , p_source_15 => l_array_source_15(Idx)
155605 , p_source_18 => l_array_source_18(Idx)
155606 , p_source_19 => l_array_source_19(Idx)
155607 , p_source_20 => l_array_source_20(Idx)
155608 , p_source_21 => l_array_source_21(Idx)
155609 , p_source_22 => l_array_source_22(Idx)
155610 , p_source_24 => l_array_source_24(Idx)
155611 );
155612 If(l_balance_type_code = 'A') THEN
155613 l_actual_gain_loss_ref := l_gain_or_loss_ref;
155614 END IF;
155615
155616 --
155617
155618
155619 --
155620 AcctLineType_146 (
155621 p_application_id => p_application_id
155622 ,p_event_id => l_event_id
155623 ,p_calculate_acctd_flag => l_calculate_acctd_flag
155624 ,p_calculate_g_l_flag => l_calculate_g_l_flag
155625 ,p_actual_flag => l_actual_flag
155626 ,p_balance_type_code => l_balance_type_code
155627 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
155628
155629 , p_source_4 => l_array_source_4(Idx)
155630 , p_source_11 => l_array_source_11(Idx)
155631 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
155632 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
155633 , p_source_15 => l_array_source_15(Idx)
155634 , p_source_18 => l_array_source_18(Idx)
155635 , p_source_19 => l_array_source_19(Idx)
155636 , p_source_20 => l_array_source_20(Idx)
155637 , p_source_21 => l_array_source_21(Idx)
155638 , p_source_22 => l_array_source_22(Idx)
155639 , p_source_24 => l_array_source_24(Idx)
155640 );
155641 If(l_balance_type_code = 'A') THEN
155642 l_actual_gain_loss_ref := l_gain_or_loss_ref;
155643 END IF;
155644
155645 --
155646
155647
155648 --
155649 AcctLineType_191 (
155650 p_application_id => p_application_id
155651 ,p_event_id => l_event_id
155652 ,p_calculate_acctd_flag => l_calculate_acctd_flag
155653 ,p_calculate_g_l_flag => l_calculate_g_l_flag
155654 ,p_actual_flag => l_actual_flag
155655 ,p_balance_type_code => l_balance_type_code
155656 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
155657
155658 , p_source_4 => l_array_source_4(Idx)
155659 , p_source_11 => l_array_source_11(Idx)
155660 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
155661 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
155662 , p_source_15 => l_array_source_15(Idx)
155663 , p_source_18 => l_array_source_18(Idx)
155664 , p_source_19 => l_array_source_19(Idx)
155665 , p_source_20 => l_array_source_20(Idx)
155666 , p_source_21 => l_array_source_21(Idx)
155667 , p_source_22 => l_array_source_22(Idx)
155668 , p_source_24 => l_array_source_24(Idx)
155669 );
155670 If(l_balance_type_code = 'A') THEN
155671 l_actual_gain_loss_ref := l_gain_or_loss_ref;
155672 END IF;
155673
155674 --
155675
155676 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
155677 -- or secondary ledger that has different currency with primary
155678 -- or alc that is calculated by sla
155679 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
155680 (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'))
155681
155682 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
155683 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
155684 AND (l_actual_flag = 'A')) THEN
155685 XLA_AE_LINES_PKG.CreateGainOrLossLines(
155686 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
155687 ,p_application_id => p_application_id
155688 ,p_amb_context_code => 'DEFAULT'
155689 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
155690 ,p_event_class_code => C_EVENT_CLASS_CODE
155691 ,p_event_type_code => C_EVENT_TYPE_CODE
155692
155693 ,p_gain_ccid => -1
155694 ,p_loss_ccid => -1
155695
155696 ,p_actual_flag => l_actual_flag
155697 ,p_enc_flag => null
155698 ,p_actual_g_l_ref => l_actual_gain_loss_ref
155699 ,p_enc_g_l_ref => null
155700 );
155701 END IF;
155702 END IF;
155703 END IF;
155704
155705 ELSE
155706 --
155707 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
155708 --
155709 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
155710 trace
155711 (p_msg => 'Trancaction revesal option is Y'
155712 ,p_level => C_LEVEL_STATEMENT
155713 ,p_module => l_log_module);
155714 END IF;
155715 END IF;
155716
155717 END LOOP;
155718 l_result := XLA_AE_LINES_PKG.InsertLines ;
155719 end loop;
155720 close line_cur;
155721
155722
155723 --
155724 -- insert headers into xla_ae_headers_gt table
155725 --
155726 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
155727
155728 -- insert into errors table here.
155729
155730 END LOOP;
155731
155732 --
155733 -- 4865292
155734 --
155735 -- Compare g_hdr_extract_count with event count in
155736 -- CreateHeadersAndLines.
155737 --
155738 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
155739
155740 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
155741 trace (p_msg => '# rows extracted from header extract objects '
155742 || ' (running total): '
155743 || g_hdr_extract_count
155744 ,p_level => C_LEVEL_STATEMENT
155745 ,p_module => l_log_module);
155746 END IF;
155747
155748 CLOSE header_cur;
155749 --
155750
155751 --
155752 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
155753 trace
155754 (p_msg => 'END of EventClass_262'
155755 ,p_level => C_LEVEL_PROCEDURE
155756 ,p_module => l_log_module);
155757 END IF;
155758 --
155759 RETURN l_result;
155760 EXCEPTION
155761 WHEN xla_exceptions_pkg.application_exception THEN
155762
155763 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
155764
155765
155766 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
155767
155768 RAISE;
155769
155770 WHEN NO_DATA_FOUND THEN
155771
155772 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
155773 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
155774
155775 FOR header_record IN header_cur
155776 LOOP
155777 l_array_header_events(header_record.event_id) := header_record.event_id;
155778 END LOOP;
155779
155780 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
155781 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
155782
155783 fnd_file.put_line(fnd_file.LOG, ' ');
155784 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
155785 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
155786 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
155787
155788 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
155789 LOOP
155790 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
155791 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
155792 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
155793 END IF;
155794 END LOOP;
155795
155796 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
155797 fnd_file.put_line(fnd_file.LOG, ' ');
155798
155799
155800 xla_exceptions_pkg.raise_message
155801 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_262');
155802
155803
155804 WHEN OTHERS THEN
155805 xla_exceptions_pkg.raise_message
155806 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_262');
155807 END EventClass_262;
155808 --
155809
155810 ---------------------------------------
155811 --
155812 -- PRIVATE PROCEDURE
155813 -- insert_sources_263
155814 --
155815 ----------------------------------------
155816 --
155817 PROCEDURE insert_sources_263(
155818 p_target_ledger_id IN NUMBER
155819 , p_language IN VARCHAR2
155820 , p_sla_ledger_id IN NUMBER
155821 , p_pad_start_date IN DATE
155822 , p_pad_end_date IN DATE
155823 )
155824 IS
155825
155826 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'INT_ORDER_TO_EXP_ALL';
155827 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'INT_ORDER_TO_EXP';
155828 p_apps_owner VARCHAR2(30);
155829 l_log_module VARCHAR2(240);
155830 BEGIN
155831 IF g_log_enabled THEN
155832 l_log_module := C_DEFAULT_MODULE||'.insert_sources_263';
155833 END IF;
155834 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
155835
155836 trace
155837 (p_msg => 'BEGIN of insert_sources_263'
155838 ,p_level => C_LEVEL_PROCEDURE
155839 ,p_module => l_log_module);
155840
155841 END IF;
155842
155843 -- select APPS owner
155844 SELECT oracle_username
155845 INTO p_apps_owner
155846 FROM fnd_oracle_userid
155847 WHERE read_only_flag = 'U'
155848 ;
155849
155850 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
155851 trace
155852 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
155853 ' - p_language = '||p_language||
155854 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
155855 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
155856 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
155857 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
155858 ,p_level => C_LEVEL_STATEMENT
155859 ,p_module => l_log_module);
155860 END IF;
155861
155862
155863 --
155864 INSERT INTO xla_diag_sources --hdr2
155865 (
155866 event_id
155867 , ledger_id
155868 , sla_ledger_id
155869 , description_language
155870 , object_name
155871 , object_type_code
155872 , line_number
155873 , source_application_id
155874 , source_type_code
155875 , source_code
155876 , source_value
155877 , source_meaning
155878 , created_by
155879 , creation_date
155880 , last_update_date
155881 , last_updated_by
155882 , last_update_login
155883 , program_update_date
155884 , program_application_id
155885 , program_id
155886 , request_id
155887 )
155888 SELECT
155889 event_id
155890 , p_target_ledger_id
155891 , p_sla_ledger_id
155892 , p_language
155893 , object_name
155894 , object_type_code
155895 , line_number
155896 , source_application_id
155897 , source_type_code
155898 , source_code
155899 , SUBSTR(source_value ,1,1996)
155900 , SUBSTR(source_meaning ,1,200)
155901 , xla_environment_pkg.g_Usr_Id
155902 , TRUNC(SYSDATE)
155903 , TRUNC(SYSDATE)
155904 , xla_environment_pkg.g_Usr_Id
155905 , xla_environment_pkg.g_Login_Id
155906 , TRUNC(SYSDATE)
155907 , xla_environment_pkg.g_Prog_Appl_Id
155908 , xla_environment_pkg.g_Prog_Id
155909 , xla_environment_pkg.g_Req_Id
155910 FROM (
155911 SELECT xet.event_id event_id
155912 , 0 line_number
155913 , CASE r
155914 WHEN 1 THEN 'CST_XLA_INV_HEADERS_V'
155915 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V'
155916
155917 ELSE null
155918 END object_name
155919 , CASE r
155920 WHEN 1 THEN 'HEADER'
155921 WHEN 2 THEN 'HEADER'
155922
155923 ELSE null
155924 END object_type_code
155925 , CASE r
155926 WHEN 1 THEN '707'
155927 WHEN 2 THEN '707'
155928
155929 ELSE null
155930 END source_application_id
155931 , 'S' source_type_code
155932 , CASE r
155933 WHEN 1 THEN 'DISTRIBUTION_TYPE'
155934 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR'
155935
155936 ELSE null
155937 END source_code
155938 , CASE r
155939 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
155940 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
155941
155942 ELSE null
155943 END source_value
155944 , CASE r
155945 WHEN 1 THEN fvl12.meaning
155946 WHEN 2 THEN fvl38.meaning
155947
155948 ELSE null
155949 END source_meaning
155950 FROM xla_events_gt xet
155951 , CST_XLA_INV_HEADERS_V h1
155952 , fnd_lookup_values fvl12
155953 , fnd_lookup_values fvl38
155954 ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
155955 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
155956 AND xet.event_class_code = C_EVENT_CLASS_CODE
155957 AND h1.event_id = xet.event_id
155958 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
155959 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
155960 AND fvl12.view_application_id(+) = 700
155961 AND fvl12.language(+) = USERENV('LANG')
155962 AND fvl38.lookup_type(+) = 'YES_NO'
155963 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
155964 AND fvl38.view_application_id(+) = 0
155965 AND fvl38.language(+) = USERENV('LANG')
155966
155967 )
155968 ;
155969 --
155970 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
155971
155972 trace
155973 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
155974 ,p_level => C_LEVEL_STATEMENT
155975 ,p_module => l_log_module);
155976
155977 END IF;
155978 --
155979
155980
155981
155982 --
155983 INSERT INTO xla_diag_sources --line2
155984 (
155985 event_id
155986 , ledger_id
155987 , sla_ledger_id
155988 , description_language
155989 , object_name
155990 , object_type_code
155991 , line_number
155992 , source_application_id
155993 , source_type_code
155994 , source_code
155995 , source_value
155996 , source_meaning
155997 , created_by
155998 , creation_date
155999 , last_update_date
156000 , last_updated_by
156001 , last_update_login
156002 , program_update_date
156003 , program_application_id
156004 , program_id
156005 , request_id
156006 )
156007 SELECT event_id
156008 , p_target_ledger_id
156009 , p_sla_ledger_id
156010 , p_language
156011 , object_name
156012 , object_type_code
156013 , line_number
156014 , source_application_id
156015 , source_type_code
156016 , source_code
156017 , SUBSTR(source_value,1,1996)
156018 , SUBSTR(source_meaning ,1,200)
156019 , xla_environment_pkg.g_Usr_Id
156020 , TRUNC(SYSDATE)
156021 , TRUNC(SYSDATE)
156022 , xla_environment_pkg.g_Usr_Id
156023 , xla_environment_pkg.g_Login_Id
156024 , TRUNC(SYSDATE)
156025 , xla_environment_pkg.g_Prog_Appl_Id
156026 , xla_environment_pkg.g_Prog_Id
156027 , xla_environment_pkg.g_Req_Id
156028 FROM (
156029 SELECT xet.event_id event_id
156030 , l2.line_number line_number
156031 , CASE r
156032 WHEN 1 THEN 'CST_XLA_INV_LINES_V'
156033 WHEN 2 THEN 'CST_XLA_INV_LINES_V'
156034 WHEN 3 THEN 'CST_XLA_INV_LINES_V'
156035 WHEN 4 THEN 'CST_XLA_INV_LINES_V'
156036 WHEN 5 THEN 'CST_XLA_INV_LINES_V'
156037 WHEN 6 THEN 'CST_XLA_INV_LINES_V'
156038 WHEN 7 THEN 'CST_XLA_INV_LINES_V'
156039 WHEN 8 THEN 'CST_XLA_INV_LINES_V'
156040 WHEN 9 THEN 'CST_XLA_INV_LINES_V'
156041
156042 ELSE null
156043 END object_name
156044 , CASE r
156045 WHEN 1 THEN 'LINE'
156046 WHEN 2 THEN 'LINE'
156047 WHEN 3 THEN 'LINE'
156048 WHEN 4 THEN 'LINE'
156049 WHEN 5 THEN 'LINE'
156050 WHEN 6 THEN 'LINE'
156051 WHEN 7 THEN 'LINE'
156052 WHEN 8 THEN 'LINE'
156053 WHEN 9 THEN 'LINE'
156054
156055 ELSE null
156056 END object_type_code
156057 , CASE r
156058 WHEN 1 THEN '707'
156059 WHEN 2 THEN '707'
156060 WHEN 3 THEN '707'
156061 WHEN 4 THEN '707'
156062 WHEN 5 THEN '707'
156063 WHEN 6 THEN '707'
156064 WHEN 7 THEN '707'
156065 WHEN 8 THEN '707'
156066 WHEN 9 THEN '707'
156067
156068 ELSE null
156069 END source_application_id
156070 , 'S' source_type_code
156071 , CASE r
156072 WHEN 1 THEN 'CODE_COMBINATION_ID'
156073 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER'
156074 WHEN 3 THEN 'CURRENCY_CODE'
156075 WHEN 4 THEN 'ENTERED_AMOUNT'
156076 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE'
156077 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE'
156078 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE'
156079 WHEN 8 THEN 'ACCOUNTED_AMOUNT'
156080 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE'
156081
156082 ELSE null
156083 END source_code
156084 , CASE r
156085 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
156086 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
156087 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
156088 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
156089 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
156090 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
156091 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
156092 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
156093 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
156094
156095 ELSE null
156096 END source_value
156097 , null source_meaning
156098 FROM xla_events_gt xet
156099 , CST_XLA_INV_LINES_V l2
156100 , (select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
156101 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
156102 AND xet.event_class_code = C_EVENT_CLASS_CODE
156103 AND l2.event_id = xet.event_id
156104
156105 )
156106 ;
156107 --
156108 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
156109
156110 trace
156111 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
156112 ,p_level => C_LEVEL_STATEMENT
156113 ,p_module => l_log_module);
156114
156115 END IF;
156116
156117
156118 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
156119 trace
156120 (p_msg => 'END of insert_sources_263'
156121 ,p_level => C_LEVEL_PROCEDURE
156122 ,p_module => l_log_module);
156123 END IF;
156124 EXCEPTION
156125 WHEN xla_exceptions_pkg.application_exception THEN
156126 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
156127 trace
156128 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
156129 ,p_level => C_LEVEL_EXCEPTION
156130 ,p_module => l_log_module);
156131 END IF;
156132 RAISE;
156133 WHEN OTHERS THEN
156134 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
156135 trace
156136 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
156137 ,p_level => C_LEVEL_EXCEPTION
156138 ,p_module => l_log_module);
156139 END IF;
156140 xla_exceptions_pkg.raise_message
156141 (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_263');
156142 END insert_sources_263;
156143 --
156144
156145 ---------------------------------------
156146 --
156147 -- PRIVATE FUNCTION
156148 -- EventClass_263
156149 --
156150 ----------------------------------------
156151 --
156152 FUNCTION EventClass_263
156153 (p_application_id IN NUMBER
156154 ,p_base_ledger_id IN NUMBER
156155 ,p_target_ledger_id IN NUMBER
156156 ,p_language IN VARCHAR2
156157 ,p_currency_code IN VARCHAR2
156158 ,p_sla_ledger_id IN NUMBER
156159 ,p_pad_start_date IN DATE
156160 ,p_pad_end_date IN DATE
156161 ,p_primary_ledger_id IN NUMBER)
156162 RETURN BOOLEAN IS
156163 --
156164 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'INT_ORDER_TO_EXP_ALL';
156165 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'INT_ORDER_TO_EXP';
156166
156167 l_calculate_acctd_flag VARCHAR2(1) :='N';
156168 l_calculate_g_l_flag VARCHAR2(1) :='N';
156169 --
156170 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
156171 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
156172 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
156173 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
156174 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
156175 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
156176 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
156177 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
156178 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
156179 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
156180 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
156181 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
156182 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
156183 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
156184 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
156185 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
156186 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
156187 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
156188 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
156189 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
156190 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
156191 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
156192 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
156193 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
156194 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
156195 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
156196
156197 l_event_id NUMBER;
156198 l_previous_event_id NUMBER;
156199 l_first_event_id NUMBER;
156200 l_last_event_id NUMBER;
156201
156202 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
156203 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
156204 --
156205 --
156206 l_result BOOLEAN := TRUE;
156207 l_rows NUMBER := 1000;
156208 l_event_type_name VARCHAR2(80) := 'All';
156209 l_event_class_name VARCHAR2(80) := 'Internal Order to Expense';
156210 l_description VARCHAR2(4000);
156211 l_transaction_reversal NUMBER;
156212 l_ae_header_id NUMBER;
156213 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
156214 l_log_module VARCHAR2(240);
156215 --
156216 l_acct_reversal_source VARCHAR2(30);
156217 l_trx_reversal_source VARCHAR2(30);
156218
156219 l_continue_with_lines BOOLEAN := TRUE;
156220 --
156221 l_acc_rev_gl_date_source DATE; -- 4262811
156222 --
156223 type t_array_event_id is table of number index by binary_integer;
156224
156225 l_rec_array_event t_rec_array_event;
156226 l_null_rec_array_event t_rec_array_event;
156227 l_array_ae_header_id xla_number_array_type;
156228 l_actual_flag VARCHAR2(1) := NULL;
156229 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
156230 l_balance_type_code VARCHAR2(1) :=NULL;
156231 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
156232
156233 --
156234 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
156235 --
156236
156237 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
156238 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
156239
156240 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
156241 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
156242 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
156243 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
156244 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
156245 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
156246 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
156247 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
156248 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
156249
156250 l_array_source_12 t_array_source_12;
156251 l_array_source_12_meaning t_array_lookup_meaning;
156252 l_array_source_38 t_array_source_38;
156253 l_array_source_38_meaning t_array_lookup_meaning;
156254
156255 l_array_source_4 t_array_source_4;
156256 l_array_source_11 t_array_source_11;
156257 l_array_source_15 t_array_source_15;
156258 l_array_source_18 t_array_source_18;
156259 l_array_source_19 t_array_source_19;
156260 l_array_source_20 t_array_source_20;
156261 l_array_source_21 t_array_source_21;
156262 l_array_source_22 t_array_source_22;
156263 l_array_source_24 t_array_source_24;
156264
156265 --
156266 CURSOR header_cur
156267 IS
156268 SELECT /*+ leading(xet) cardinality(xet,1) */
156269 -- Event Class Code: INT_ORDER_TO_EXP
156270 xet.entity_id
156271 ,xet.legal_entity_id
156272 ,xet.entity_code
156273 ,xet.transaction_number
156274 ,xet.event_id
156275 ,xet.event_class_code
156276 ,xet.event_type_code
156277 ,xet.event_number
156278 ,xet.event_date
156279 ,xet.transaction_date
156280 ,xet.reference_num_1
156281 ,xet.reference_num_2
156282 ,xet.reference_num_3
156283 ,xet.reference_num_4
156284 ,xet.reference_char_1
156285 ,xet.reference_char_2
156286 ,xet.reference_char_3
156287 ,xet.reference_char_4
156288 ,xet.reference_date_1
156289 ,xet.reference_date_2
156290 ,xet.reference_date_3
156291 ,xet.reference_date_4
156292 ,xet.event_created_by
156293 ,xet.budgetary_control_flag
156294 , h1.DISTRIBUTION_TYPE source_12
156295 , fvl12.meaning source_12_meaning
156296 , h1.TRANSFER_TO_GL_INDICATOR source_38
156297 , fvl38.meaning source_38_meaning
156298 FROM xla_events_gt xet
156299 , CST_XLA_INV_HEADERS_V h1
156300 , fnd_lookup_values fvl12
156301 , fnd_lookup_values fvl38
156302 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
156303 and xet.event_class_code = C_EVENT_CLASS_CODE
156304 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
156305 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
156306 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
156307 AND fvl12.view_application_id(+) = 700
156308 AND fvl12.language(+) = USERENV('LANG')
156309 AND fvl38.lookup_type(+) = 'YES_NO'
156310 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
156311 AND fvl38.view_application_id(+) = 0
156312 AND fvl38.language(+) = USERENV('LANG')
156313
156314 ORDER BY event_id
156315 ;
156316
156317
156318 --
156319 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
156320 IS
156321 SELECT /*+ leading(xet) cardinality(xet,1) */
156322 -- Event Class Code: INT_ORDER_TO_EXP
156323 xet.entity_id
156324 ,xet.legal_entity_id
156325 ,xet.entity_code
156326 ,xet.transaction_number
156327 ,xet.event_id
156328 ,xet.event_class_code
156329 ,xet.event_type_code
156330 ,xet.event_number
156331 ,xet.event_date
156332 ,xet.transaction_date
156333 ,xet.reference_num_1
156334 ,xet.reference_num_2
156335 ,xet.reference_num_3
156336 ,xet.reference_num_4
156337 ,xet.reference_char_1
156338 ,xet.reference_char_2
156339 ,xet.reference_char_3
156340 ,xet.reference_char_4
156341 ,xet.reference_date_1
156342 ,xet.reference_date_2
156343 ,xet.reference_date_3
156344 ,xet.reference_date_4
156345 ,xet.event_created_by
156346 ,xet.budgetary_control_flag
156347 , l2.LINE_NUMBER
156348 , l2.CODE_COMBINATION_ID source_4
156349 , l2.DISTRIBUTION_IDENTIFIER source_11
156350 , l2.CURRENCY_CODE source_15
156351 , l2.ENTERED_AMOUNT source_18
156352 , l2.CURRENCY_CONVERSION_DATE source_19
156353 , l2.CURRENCY_CONVERSION_RATE source_20
156354 , l2.CURRENCY_CONVERSION_TYPE source_21
156355 , l2.ACCOUNTED_AMOUNT source_22
156356 , l2.ACCOUNTING_LINE_TYPE_CODE source_24
156357 FROM xla_events_gt xet
156358 , CST_XLA_INV_LINES_V l2
156359 WHERE xet.event_id between x_first_event_id and x_last_event_id
156360 and xet.event_date between p_pad_start_date and p_pad_end_date
156361 and xet.event_class_code = C_EVENT_CLASS_CODE
156362 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
156363 ;
156364
156365 --
156366 BEGIN
156367 IF g_log_enabled THEN
156368 l_log_module := C_DEFAULT_MODULE||'.EventClass_263';
156369 END IF;
156370 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
156371 trace
156372 (p_msg => 'BEGIN of EventClass_263'
156373 ,p_level => C_LEVEL_PROCEDURE
156374 ,p_module => l_log_module);
156375 END IF;
156376
156377 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
156378 trace
156379 (p_msg => 'p_application_id = '||p_application_id||
156380 ' - p_base_ledger_id = '||p_base_ledger_id||
156381 ' - p_target_ledger_id = '||p_target_ledger_id||
156382 ' - p_language = '||p_language||
156383 ' - p_currency_code = '||p_currency_code||
156384 ' - p_sla_ledger_id = '||p_sla_ledger_id
156385 ,p_level => C_LEVEL_STATEMENT
156386 ,p_module => l_log_module);
156387 END IF;
156388 --
156389 -- initialze arrays
156390 --
156391 g_array_event.DELETE;
156392 l_rec_array_event := l_null_rec_array_event;
156393 --
156394 --------------------------------------
156395 -- 4262811 Initialze MPA Line Number
156396 --------------------------------------
156397 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
156398
156399 --
156400
156401 --
156402 OPEN header_cur;
156403 --
156404 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
156405 trace
156406 (p_msg => 'SQL - FETCH header_cur'
156407 ,p_level => C_LEVEL_STATEMENT
156408 ,p_module => l_log_module);
156409 END IF;
156410 --
156411 LOOP
156412 FETCH header_cur BULK COLLECT INTO
156413 l_array_entity_id
156414 , l_array_legal_entity_id
156415 , l_array_entity_code
156416 , l_array_transaction_num
156417 , l_array_event_id
156418 , l_array_class_code
156419 , l_array_event_type
156420 , l_array_event_number
156421 , l_array_event_date
156422 , l_array_transaction_date
156423 , l_array_reference_num_1
156424 , l_array_reference_num_2
156425 , l_array_reference_num_3
156426 , l_array_reference_num_4
156427 , l_array_reference_char_1
156428 , l_array_reference_char_2
156429 , l_array_reference_char_3
156430 , l_array_reference_char_4
156431 , l_array_reference_date_1
156432 , l_array_reference_date_2
156433 , l_array_reference_date_3
156434 , l_array_reference_date_4
156435 , l_array_event_created_by
156436 , l_array_budgetary_control_flag
156437 , l_array_source_12
156438 , l_array_source_12_meaning
156439 , l_array_source_38
156440 , l_array_source_38_meaning
156441 LIMIT l_rows;
156442 --
156443 IF (C_LEVEL_EVENT >= g_log_level) THEN
156444 trace
156445 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
156446 ,p_level => C_LEVEL_EVENT
156447 ,p_module => l_log_module);
156448 END IF;
156449 --
156450 EXIT WHEN l_array_entity_id.COUNT = 0;
156451
156452 -- initialize arrays
156453 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
156454 XLA_AE_LINES_PKG.g_rec_lines := NULL;
156455
156456 --
156457 -- Bug 4458708
156458 --
156459 XLA_AE_LINES_PKG.g_LineNumber := 0;
156460
156461
156462 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
156463 g_last_hdr_idx := l_array_event_id.LAST;
156464 --
156465 -- loop for the headers. Each iteration is for each header extract row
156466 -- fetched in header cursor
156467 --
156468 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
156469
156470 --
156471 -- set event info as cache for other routines to refer event attributes
156472 --
156473 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
156474 (p_application_id => p_application_id
156475 ,p_primary_ledger_id => p_primary_ledger_id
156476 ,p_base_ledger_id => p_base_ledger_id
156477 ,p_target_ledger_id => p_target_ledger_id
156478 ,p_entity_id => l_array_entity_id(hdr_idx)
156479 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
156480 ,p_entity_code => l_array_entity_code(hdr_idx)
156481 ,p_transaction_num => l_array_transaction_num(hdr_idx)
156482 ,p_event_id => l_array_event_id(hdr_idx)
156483 ,p_event_class_code => l_array_class_code(hdr_idx)
156484 ,p_event_type_code => l_array_event_type(hdr_idx)
156485 ,p_event_number => l_array_event_number(hdr_idx)
156486 ,p_event_date => l_array_event_date(hdr_idx)
156487 ,p_transaction_date => l_array_transaction_date(hdr_idx)
156488 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
156489 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
156490 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
156491 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
156492 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
156493 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
156494 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
156495 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
156496 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
156497 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
156498 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
156499 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
156500 ,p_event_created_by => l_array_event_created_by(hdr_idx)
156501 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
156502
156503 --
156504 -- set the status of entry to C_VALID (0)
156505 --
156506 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
156507
156508 --
156509 -- initialize a row for ae header
156510 --
156511 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
156512
156513 l_event_id := l_array_event_id(hdr_idx);
156514
156515 --
156516 -- storing the hdr_idx for event. May be used by line cursor.
156517 --
156518 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
156519
156520 --
156521 -- store sources from header extract. This can be improved to
156522 -- store only those sources from header extract that may be used in lines
156523 --
156524
156525 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
156526 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
156527 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
156528 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
156529
156530 --
156531 -- initilaize the status of ae headers for diffrent balance types
156532 -- the status is initialised to C_NOT_CREATED (2)
156533 --
156534 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
156535 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
156536 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
156537
156538 --
156539 -- call api to validate and store accounting attributes for header
156540 --
156541
156542 ------------------------------------------------------------
156543 -- Accrual Reversal : to get date for Standard Source (NONE)
156544 ------------------------------------------------------------
156545 l_acc_rev_gl_date_source := NULL;
156546
156547 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
156548 l_rec_acct_attrs.array_date_value(1) :=
156549 xla_ae_sources_pkg.GetSystemSourceDate(
156550 p_source_code => 'XLA_REFERENCE_DATE_1'
156551 , p_source_type_code => 'Y'
156552 , p_source_application_id => 602
156553 );
156554 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_TRANSFER_FLAG';
156555 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
156556
156557
156558 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
156559
156560 XLA_AE_HEADER_PKG.SetJeCategoryName;
156561
156562 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
156563 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
156564 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
156565 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
156566 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
156567
156568
156569 -- No header level analytical criteria
156570
156571 --
156572 --accounting attribute enhancement, bug 3612931
156573 --
156574 l_trx_reversal_source := SUBSTR(NULL, 1,30);
156575
156576 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
156577 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
156578
156579 xla_accounting_err_pkg.build_message
156580 (p_appli_s_name => 'XLA'
156581 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
156582 ,p_token_1 => 'ACCT_ATTR_NAME'
156583 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
156584 ,p_token_2 => 'PRODUCT_NAME'
156585 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
156586 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
156587 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
156588 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
156589
156590 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
156591 --
156592 -- following sets the accounting attributes needed to reverse
156593 -- accounting for a distributeion
156594 --
156595 xla_ae_lines_pkg.SetTrxReversalAttrs
156596 (p_event_id => l_event_id
156597 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
156598 ,p_trx_reversal_source => l_trx_reversal_source);
156599
156600 END IF;
156601
156602
156603 ----------------------------------------------------------------
156604 -- 4262811 - update the header statuses to invalid in need be
156605 ----------------------------------------------------------------
156606 --
156607 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
156608
156609
156610 -----------------------------------------------
156611 -- No accrual reversal for the event class/type
156612 -----------------------------------------------
156613 ----------------------------------------------------------------
156614
156615 --
156616 -- this ends the header loop iteration for one bulk fetch
156617 --
156618 END LOOP;
156619
156620 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
156621 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
156622
156623 --
156624 -- insert dummy rows into lines gt table that were created due to
156625 -- transaction reversals
156626 --
156627 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
156628 l_result := XLA_AE_LINES_PKG.InsertLines;
156629 END IF;
156630
156631 --
156632 -- reset the temp_line_num for each set of events fetched from header
156633 -- cursor rather than doing it for each new event in line cursor
156634 -- Bug 3939231
156635 --
156636 xla_ae_lines_pkg.g_temp_line_num := 0;
156637
156638
156639
156640 --
156641 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
156642 --
156643 --
156644 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
156645
156646 trace
156647 (p_msg => 'SQL - FETCH line_cur'
156648 ,p_level => C_LEVEL_STATEMENT
156649 ,p_module => l_log_module);
156650
156651 END IF;
156652 --
156653 --
156654 LOOP
156655 --
156656 FETCH line_cur BULK COLLECT INTO
156657 l_array_entity_id
156658 , l_array_legal_entity_id
156659 , l_array_entity_code
156660 , l_array_transaction_num
156661 , l_array_event_id
156662 , l_array_class_code
156663 , l_array_event_type
156664 , l_array_event_number
156665 , l_array_event_date
156666 , l_array_transaction_date
156667 , l_array_reference_num_1
156668 , l_array_reference_num_2
156669 , l_array_reference_num_3
156670 , l_array_reference_num_4
156671 , l_array_reference_char_1
156672 , l_array_reference_char_2
156673 , l_array_reference_char_3
156674 , l_array_reference_char_4
156675 , l_array_reference_date_1
156676 , l_array_reference_date_2
156677 , l_array_reference_date_3
156678 , l_array_reference_date_4
156679 , l_array_event_created_by
156680 , l_array_budgetary_control_flag
156681 , l_array_extract_line_num
156682 , l_array_source_4
156683 , l_array_source_11
156684 , l_array_source_15
156685 , l_array_source_18
156686 , l_array_source_19
156687 , l_array_source_20
156688 , l_array_source_21
156689 , l_array_source_22
156690 , l_array_source_24
156691 LIMIT l_rows;
156692
156693 --
156694 IF (C_LEVEL_EVENT >= g_log_level) THEN
156695 trace
156696 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
156697 ,p_level => C_LEVEL_EVENT
156698 ,p_module => l_log_module);
156699 END IF;
156700 --
156701 EXIT WHEN l_array_entity_id.count = 0;
156702
156703 XLA_AE_LINES_PKG.g_rec_lines := null;
156704
156705 --
156706 -- Bug 4458708
156707 --
156708 XLA_AE_LINES_PKG.g_LineNumber := 0;
156709 --
156710 --
156711
156712 FOR Idx IN 1..l_array_event_id.count LOOP
156713 --
156714 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
156715 --
156716 l_event_id := l_array_event_id(idx); -- 5648433
156717
156718 --
156719 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
156720 --
156721
156722 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
156723 (g_array_event(l_event_id).array_value_num('header_index'))
156724 ,'N'
156725 ) <> 'Y'
156726 THEN
156727 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
156728 trace
156729 (p_msg => 'Trancaction revesal option is not Y '
156730 ,p_level => C_LEVEL_STATEMENT
156731 ,p_module => l_log_module);
156732 END IF;
156733
156734 --
156735 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
156736 --
156737 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
156738 --
156739 -- set event info as cache for other routines to refer event attributes
156740 --
156741
156742 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
156743 l_previous_event_id := l_event_id;
156744
156745 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
156746 (p_application_id => p_application_id
156747 ,p_primary_ledger_id => p_primary_ledger_id
156748 ,p_base_ledger_id => p_base_ledger_id
156749 ,p_target_ledger_id => p_target_ledger_id
156750 ,p_entity_id => l_array_entity_id(Idx)
156751 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
156752 ,p_entity_code => l_array_entity_code(Idx)
156753 ,p_transaction_num => l_array_transaction_num(Idx)
156754 ,p_event_id => l_array_event_id(Idx)
156755 ,p_event_class_code => l_array_class_code(Idx)
156756 ,p_event_type_code => l_array_event_type(Idx)
156757 ,p_event_number => l_array_event_number(Idx)
156758 ,p_event_date => l_array_event_date(Idx)
156759 ,p_transaction_date => l_array_transaction_date(Idx)
156760 ,p_reference_num_1 => l_array_reference_num_1(Idx)
156761 ,p_reference_num_2 => l_array_reference_num_2(Idx)
156762 ,p_reference_num_3 => l_array_reference_num_3(Idx)
156763 ,p_reference_num_4 => l_array_reference_num_4(Idx)
156764 ,p_reference_char_1 => l_array_reference_char_1(Idx)
156765 ,p_reference_char_2 => l_array_reference_char_2(Idx)
156766 ,p_reference_char_3 => l_array_reference_char_3(Idx)
156767 ,p_reference_char_4 => l_array_reference_char_4(Idx)
156768 ,p_reference_date_1 => l_array_reference_date_1(Idx)
156769 ,p_reference_date_2 => l_array_reference_date_2(Idx)
156770 ,p_reference_date_3 => l_array_reference_date_3(Idx)
156771 ,p_reference_date_4 => l_array_reference_date_4(Idx)
156772 ,p_event_created_by => l_array_event_created_by(Idx)
156773 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
156774 --
156775 END IF;
156776
156777
156778
156779 --
156780 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
156781
156782 l_acct_reversal_source := SUBSTR(NULL, 1,30);
156783
156784 IF l_continue_with_lines THEN
156785 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
156786 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
156787
156788 xla_accounting_err_pkg.build_message
156789 (p_appli_s_name => 'XLA'
156790 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
156791 ,p_token_1 => 'LINE_NUMBER'
156792 ,p_value_1 => l_array_extract_line_num(Idx)
156793 ,p_token_2 => 'PRODUCT_NAME'
156794 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
156795 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
156796 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
156797 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
156798
156799 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
156800 --
156801 -- following sets the accounting attributes needed to reverse
156802 -- accounting for a distributeion
156803 --
156804
156805 --
156806 -- 5217187
156807 --
156808 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
156809 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
156810 g_array_event(l_event_id).array_value_num('header_index'));
156811 --
156812 --
156813
156814 -- No reversal code generated
156815
156816 xla_ae_lines_pkg.SetAcctReversalAttrs
156817 (p_event_id => l_event_id
156818 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
156819 ,p_calculate_acctd_flag => l_calculate_acctd_flag
156820 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
156821 END IF;
156822
156823 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
156824 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
156825
156826 --
156827 AcctLineType_76 (
156828 p_application_id => p_application_id
156829 ,p_event_id => l_event_id
156830 ,p_calculate_acctd_flag => l_calculate_acctd_flag
156831 ,p_calculate_g_l_flag => l_calculate_g_l_flag
156832 ,p_actual_flag => l_actual_flag
156833 ,p_balance_type_code => l_balance_type_code
156834 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
156835
156836 , p_source_4 => l_array_source_4(Idx)
156837 , p_source_11 => l_array_source_11(Idx)
156838 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
156839 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
156840 , p_source_15 => l_array_source_15(Idx)
156841 , p_source_18 => l_array_source_18(Idx)
156842 , p_source_19 => l_array_source_19(Idx)
156843 , p_source_20 => l_array_source_20(Idx)
156844 , p_source_21 => l_array_source_21(Idx)
156845 , p_source_22 => l_array_source_22(Idx)
156846 , p_source_24 => l_array_source_24(Idx)
156847 );
156848 If(l_balance_type_code = 'A') THEN
156849 l_actual_gain_loss_ref := l_gain_or_loss_ref;
156850 END IF;
156851
156852 --
156853
156854
156855 --
156856 AcctLineType_86 (
156857 p_application_id => p_application_id
156858 ,p_event_id => l_event_id
156859 ,p_calculate_acctd_flag => l_calculate_acctd_flag
156860 ,p_calculate_g_l_flag => l_calculate_g_l_flag
156861 ,p_actual_flag => l_actual_flag
156862 ,p_balance_type_code => l_balance_type_code
156863 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
156864
156865 , p_source_4 => l_array_source_4(Idx)
156866 , p_source_11 => l_array_source_11(Idx)
156867 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
156868 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
156869 , p_source_15 => l_array_source_15(Idx)
156870 , p_source_18 => l_array_source_18(Idx)
156871 , p_source_19 => l_array_source_19(Idx)
156872 , p_source_20 => l_array_source_20(Idx)
156873 , p_source_21 => l_array_source_21(Idx)
156874 , p_source_22 => l_array_source_22(Idx)
156875 , p_source_24 => l_array_source_24(Idx)
156876 );
156877 If(l_balance_type_code = 'A') THEN
156878 l_actual_gain_loss_ref := l_gain_or_loss_ref;
156879 END IF;
156880
156881 --
156882
156883
156884 --
156885 AcctLineType_102 (
156886 p_application_id => p_application_id
156887 ,p_event_id => l_event_id
156888 ,p_calculate_acctd_flag => l_calculate_acctd_flag
156889 ,p_calculate_g_l_flag => l_calculate_g_l_flag
156890 ,p_actual_flag => l_actual_flag
156891 ,p_balance_type_code => l_balance_type_code
156892 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
156893
156894 , p_source_4 => l_array_source_4(Idx)
156895 , p_source_11 => l_array_source_11(Idx)
156896 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
156897 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
156898 , p_source_15 => l_array_source_15(Idx)
156899 , p_source_18 => l_array_source_18(Idx)
156900 , p_source_19 => l_array_source_19(Idx)
156901 , p_source_20 => l_array_source_20(Idx)
156902 , p_source_21 => l_array_source_21(Idx)
156903 , p_source_22 => l_array_source_22(Idx)
156904 , p_source_24 => l_array_source_24(Idx)
156905 );
156906 If(l_balance_type_code = 'A') THEN
156907 l_actual_gain_loss_ref := l_gain_or_loss_ref;
156908 END IF;
156909
156910 --
156911
156912
156913 --
156914 AcctLineType_141 (
156915 p_application_id => p_application_id
156916 ,p_event_id => l_event_id
156917 ,p_calculate_acctd_flag => l_calculate_acctd_flag
156918 ,p_calculate_g_l_flag => l_calculate_g_l_flag
156919 ,p_actual_flag => l_actual_flag
156920 ,p_balance_type_code => l_balance_type_code
156921 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
156922
156923 , p_source_4 => l_array_source_4(Idx)
156924 , p_source_11 => l_array_source_11(Idx)
156925 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
156926 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
156927 , p_source_15 => l_array_source_15(Idx)
156928 , p_source_18 => l_array_source_18(Idx)
156929 , p_source_19 => l_array_source_19(Idx)
156930 , p_source_20 => l_array_source_20(Idx)
156931 , p_source_21 => l_array_source_21(Idx)
156932 , p_source_22 => l_array_source_22(Idx)
156933 , p_source_24 => l_array_source_24(Idx)
156934 );
156935 If(l_balance_type_code = 'A') THEN
156936 l_actual_gain_loss_ref := l_gain_or_loss_ref;
156937 END IF;
156938
156939 --
156940
156941
156942 --
156943 AcctLineType_192 (
156944 p_application_id => p_application_id
156945 ,p_event_id => l_event_id
156946 ,p_calculate_acctd_flag => l_calculate_acctd_flag
156947 ,p_calculate_g_l_flag => l_calculate_g_l_flag
156948 ,p_actual_flag => l_actual_flag
156949 ,p_balance_type_code => l_balance_type_code
156950 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
156951
156952 , p_source_4 => l_array_source_4(Idx)
156953 , p_source_11 => l_array_source_11(Idx)
156954 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
156955 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
156956 , p_source_15 => l_array_source_15(Idx)
156957 , p_source_18 => l_array_source_18(Idx)
156958 , p_source_19 => l_array_source_19(Idx)
156959 , p_source_20 => l_array_source_20(Idx)
156960 , p_source_21 => l_array_source_21(Idx)
156961 , p_source_22 => l_array_source_22(Idx)
156962 , p_source_24 => l_array_source_24(Idx)
156963 );
156964 If(l_balance_type_code = 'A') THEN
156965 l_actual_gain_loss_ref := l_gain_or_loss_ref;
156966 END IF;
156967
156968 --
156969
156970 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
156971 -- or secondary ledger that has different currency with primary
156972 -- or alc that is calculated by sla
156973 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
156974 (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'))
156975
156976 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
156977 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
156978 AND (l_actual_flag = 'A')) THEN
156979 XLA_AE_LINES_PKG.CreateGainOrLossLines(
156980 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
156981 ,p_application_id => p_application_id
156982 ,p_amb_context_code => 'DEFAULT'
156983 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
156984 ,p_event_class_code => C_EVENT_CLASS_CODE
156985 ,p_event_type_code => C_EVENT_TYPE_CODE
156986
156987 ,p_gain_ccid => -1
156988 ,p_loss_ccid => -1
156989
156990 ,p_actual_flag => l_actual_flag
156991 ,p_enc_flag => null
156992 ,p_actual_g_l_ref => l_actual_gain_loss_ref
156993 ,p_enc_g_l_ref => null
156994 );
156995 END IF;
156996 END IF;
156997 END IF;
156998
156999 ELSE
157000 --
157001 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
157002 --
157003 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
157004 trace
157005 (p_msg => 'Trancaction revesal option is Y'
157006 ,p_level => C_LEVEL_STATEMENT
157007 ,p_module => l_log_module);
157008 END IF;
157009 END IF;
157010
157011 END LOOP;
157012 l_result := XLA_AE_LINES_PKG.InsertLines ;
157013 end loop;
157014 close line_cur;
157015
157016
157017 --
157018 -- insert headers into xla_ae_headers_gt table
157019 --
157020 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
157021
157022 -- insert into errors table here.
157023
157024 END LOOP;
157025
157026 --
157027 -- 4865292
157028 --
157029 -- Compare g_hdr_extract_count with event count in
157030 -- CreateHeadersAndLines.
157031 --
157032 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
157033
157034 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
157035 trace (p_msg => '# rows extracted from header extract objects '
157036 || ' (running total): '
157037 || g_hdr_extract_count
157038 ,p_level => C_LEVEL_STATEMENT
157039 ,p_module => l_log_module);
157040 END IF;
157041
157042 CLOSE header_cur;
157043 --
157044
157045 --
157046 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
157047 trace
157048 (p_msg => 'END of EventClass_263'
157049 ,p_level => C_LEVEL_PROCEDURE
157050 ,p_module => l_log_module);
157051 END IF;
157052 --
157053 RETURN l_result;
157054 EXCEPTION
157055 WHEN xla_exceptions_pkg.application_exception THEN
157056
157057 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
157058
157059
157060 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
157061
157062 RAISE;
157063
157064 WHEN NO_DATA_FOUND THEN
157065
157066 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
157067 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
157068
157069 FOR header_record IN header_cur
157070 LOOP
157071 l_array_header_events(header_record.event_id) := header_record.event_id;
157072 END LOOP;
157073
157074 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
157075 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
157076
157077 fnd_file.put_line(fnd_file.LOG, ' ');
157078 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
157079 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
157080 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
157081
157082 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
157083 LOOP
157084 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
157085 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
157086 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
157087 END IF;
157088 END LOOP;
157089
157090 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
157091 fnd_file.put_line(fnd_file.LOG, ' ');
157092
157093
157094 xla_exceptions_pkg.raise_message
157095 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_263');
157096
157097
157098 WHEN OTHERS THEN
157099 xla_exceptions_pkg.raise_message
157100 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_263');
157101 END EventClass_263;
157102 --
157103
157104 ---------------------------------------
157105 --
157106 -- PRIVATE PROCEDURE
157107 -- insert_sources_264
157108 --
157109 ----------------------------------------
157110 --
157111 PROCEDURE insert_sources_264(
157112 p_target_ledger_id IN NUMBER
157113 , p_language IN VARCHAR2
157114 , p_sla_ledger_id IN NUMBER
157115 , p_pad_start_date IN DATE
157116 , p_pad_end_date IN DATE
157117 )
157118 IS
157119
157120 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'LDD_COST_ADJ_DEL_ALL';
157121 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'LDD_COST_ADJ_DEL';
157122 p_apps_owner VARCHAR2(30);
157123 l_log_module VARCHAR2(240);
157124 BEGIN
157125 IF g_log_enabled THEN
157126 l_log_module := C_DEFAULT_MODULE||'.insert_sources_264';
157127 END IF;
157128 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
157129
157130 trace
157131 (p_msg => 'BEGIN of insert_sources_264'
157132 ,p_level => C_LEVEL_PROCEDURE
157133 ,p_module => l_log_module);
157134
157135 END IF;
157136
157137 -- select APPS owner
157138 SELECT oracle_username
157139 INTO p_apps_owner
157140 FROM fnd_oracle_userid
157141 WHERE read_only_flag = 'U'
157142 ;
157143
157144 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
157145 trace
157146 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
157147 ' - p_language = '||p_language||
157148 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
157149 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
157150 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
157151 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
157152 ,p_level => C_LEVEL_STATEMENT
157153 ,p_module => l_log_module);
157154 END IF;
157155
157156
157157 --
157158 INSERT INTO xla_diag_sources --hdr2
157159 (
157160 event_id
157161 , ledger_id
157162 , sla_ledger_id
157163 , description_language
157164 , object_name
157165 , object_type_code
157166 , line_number
157167 , source_application_id
157168 , source_type_code
157169 , source_code
157170 , source_value
157171 , source_meaning
157172 , created_by
157173 , creation_date
157174 , last_update_date
157175 , last_updated_by
157176 , last_update_login
157177 , program_update_date
157178 , program_application_id
157179 , program_id
157180 , request_id
157181 )
157182 SELECT
157183 event_id
157184 , p_target_ledger_id
157185 , p_sla_ledger_id
157186 , p_language
157187 , object_name
157188 , object_type_code
157189 , line_number
157190 , source_application_id
157191 , source_type_code
157192 , source_code
157193 , SUBSTR(source_value ,1,1996)
157194 , SUBSTR(source_meaning ,1,200)
157195 , xla_environment_pkg.g_Usr_Id
157196 , TRUNC(SYSDATE)
157197 , TRUNC(SYSDATE)
157198 , xla_environment_pkg.g_Usr_Id
157199 , xla_environment_pkg.g_Login_Id
157200 , TRUNC(SYSDATE)
157201 , xla_environment_pkg.g_Prog_Appl_Id
157202 , xla_environment_pkg.g_Prog_Id
157203 , xla_environment_pkg.g_Req_Id
157204 FROM (
157205 SELECT xet.event_id event_id
157206 , 0 line_number
157207 , CASE r
157208 WHEN 1 THEN 'CST_XLA_RCV_HEADERS_V'
157209 WHEN 2 THEN 'PO_DISTS_REF_V'
157210 WHEN 3 THEN 'PO_DISTS_REF_V'
157211 WHEN 4 THEN 'PO_DISTS_REF_V'
157212 WHEN 5 THEN 'CST_XLA_RCV_HEADERS_V'
157213
157214 ELSE null
157215 END object_name
157216 , CASE r
157217 WHEN 1 THEN 'HEADER'
157218 WHEN 2 THEN 'HEADER'
157219 WHEN 3 THEN 'HEADER'
157220 WHEN 4 THEN 'HEADER'
157221 WHEN 5 THEN 'HEADER'
157222
157223 ELSE null
157224 END object_type_code
157225 , CASE r
157226 WHEN 1 THEN '707'
157227 WHEN 2 THEN '201'
157228 WHEN 3 THEN '201'
157229 WHEN 4 THEN '201'
157230 WHEN 5 THEN '707'
157231
157232 ELSE null
157233 END source_application_id
157234 , 'S' source_type_code
157235 , CASE r
157236 WHEN 1 THEN 'DISTRIBUTION_TYPE'
157237 WHEN 2 THEN 'ENTERED_CURRENCY_CODE'
157238 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE'
157239 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE'
157240 WHEN 5 THEN 'TRANSFER_TO_GL_INDICATOR'
157241
157242 ELSE null
157243 END source_code
157244 , CASE r
157245 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
157246 WHEN 2 THEN TO_CHAR(h4.ENTERED_CURRENCY_CODE)
157247 WHEN 3 THEN TO_CHAR(h4.CURRENCY_CONVERSION_DATE)
157248 WHEN 4 THEN TO_CHAR(h4.CURRENCY_CONVERSION_RATE)
157249 WHEN 5 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
157250
157251 ELSE null
157252 END source_value
157253 , CASE r
157254 WHEN 1 THEN fvl12.meaning
157255 WHEN 5 THEN fvl38.meaning
157256
157257 ELSE null
157258 END source_meaning
157259 FROM xla_events_gt xet
157260 , CST_XLA_RCV_HEADERS_V h1
157261 , CST_XLA_RCV_REF_V h3
157262 , PO_DISTS_REF_V h4
157263 , fnd_lookup_values fvl12
157264 , fnd_lookup_values fvl38
157265 ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
157266 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
157267 AND xet.event_class_code = C_EVENT_CLASS_CODE
157268 AND h1.event_id = xet.event_id
157269 AND h3.ref_rcv_accounting_event_id = h1.rcv_accounting_event_id AND h3.po_header_id = h4.po_header_id and h3.po_distribution_id = h4.po_distribution_id AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
157270 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
157271 AND fvl12.view_application_id(+) = 700
157272 AND fvl12.language(+) = USERENV('LANG')
157273 AND fvl38.lookup_type(+) = 'YES_NO'
157274 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
157275 AND fvl38.view_application_id(+) = 0
157276 AND fvl38.language(+) = USERENV('LANG')
157277
157278 )
157279 ;
157280 --
157281 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
157282
157283 trace
157284 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
157285 ,p_level => C_LEVEL_STATEMENT
157286 ,p_module => l_log_module);
157287
157288 END IF;
157289 --
157290
157291
157292
157293 --
157294 INSERT INTO xla_diag_sources --line2
157295 (
157296 event_id
157297 , ledger_id
157298 , sla_ledger_id
157299 , description_language
157300 , object_name
157301 , object_type_code
157302 , line_number
157303 , source_application_id
157304 , source_type_code
157305 , source_code
157306 , source_value
157307 , source_meaning
157308 , created_by
157309 , creation_date
157310 , last_update_date
157311 , last_updated_by
157312 , last_update_login
157313 , program_update_date
157314 , program_application_id
157315 , program_id
157316 , request_id
157317 )
157318 SELECT event_id
157319 , p_target_ledger_id
157320 , p_sla_ledger_id
157321 , p_language
157322 , object_name
157323 , object_type_code
157324 , line_number
157325 , source_application_id
157326 , source_type_code
157327 , source_code
157328 , SUBSTR(source_value,1,1996)
157329 , SUBSTR(source_meaning ,1,200)
157330 , xla_environment_pkg.g_Usr_Id
157331 , TRUNC(SYSDATE)
157332 , TRUNC(SYSDATE)
157333 , xla_environment_pkg.g_Usr_Id
157334 , xla_environment_pkg.g_Login_Id
157335 , TRUNC(SYSDATE)
157336 , xla_environment_pkg.g_Prog_Appl_Id
157337 , xla_environment_pkg.g_Prog_Id
157338 , xla_environment_pkg.g_Req_Id
157339 FROM (
157340 SELECT xet.event_id event_id
157341 , l2.line_number line_number
157342 , CASE r
157343 WHEN 1 THEN 'CST_XLA_RCV_LINES_V'
157344 WHEN 2 THEN 'CST_XLA_RCV_LINES_V'
157345 WHEN 3 THEN 'CST_XLA_RCV_LINES_V'
157346 WHEN 4 THEN 'CST_XLA_RCV_LINES_V'
157347 WHEN 5 THEN 'CST_XLA_RCV_LINES_V'
157348
157349 ELSE null
157350 END object_name
157351 , CASE r
157352 WHEN 1 THEN 'LINE'
157353 WHEN 2 THEN 'LINE'
157354 WHEN 3 THEN 'LINE'
157355 WHEN 4 THEN 'LINE'
157356 WHEN 5 THEN 'LINE'
157357
157358 ELSE null
157359 END object_type_code
157360 , CASE r
157361 WHEN 1 THEN '707'
157362 WHEN 2 THEN '707'
157363 WHEN 3 THEN '707'
157364 WHEN 4 THEN '707'
157365 WHEN 5 THEN '707'
157366
157367 ELSE null
157368 END source_application_id
157369 , 'S' source_type_code
157370 , CASE r
157371 WHEN 1 THEN 'CODE_COMBINATION_ID'
157372 WHEN 2 THEN 'RCV_ACCOUNTING_LINE_TYPE'
157373 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER'
157374 WHEN 4 THEN 'ENTERED_AMOUNT'
157375 WHEN 5 THEN 'ACCOUNTED_AMOUNT'
157376
157377 ELSE null
157378 END source_code
157379 , CASE r
157380 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
157381 WHEN 2 THEN TO_CHAR(l2.RCV_ACCOUNTING_LINE_TYPE)
157382 WHEN 3 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
157383 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
157384 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
157385
157386 ELSE null
157387 END source_value
157388 , null source_meaning
157389 FROM xla_events_gt xet
157390 , CST_XLA_RCV_LINES_V l2
157391 , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
157392 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
157393 AND xet.event_class_code = C_EVENT_CLASS_CODE
157394 AND l2.event_id = xet.event_id
157395
157396 )
157397 ;
157398 --
157399 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
157400
157401 trace
157402 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
157403 ,p_level => C_LEVEL_STATEMENT
157404 ,p_module => l_log_module);
157405
157406 END IF;
157407
157408
157409 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
157410 trace
157411 (p_msg => 'END of insert_sources_264'
157412 ,p_level => C_LEVEL_PROCEDURE
157413 ,p_module => l_log_module);
157414 END IF;
157415 EXCEPTION
157416 WHEN xla_exceptions_pkg.application_exception THEN
157417 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
157418 trace
157419 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
157420 ,p_level => C_LEVEL_EXCEPTION
157421 ,p_module => l_log_module);
157422 END IF;
157423 RAISE;
157424 WHEN OTHERS THEN
157425 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
157426 trace
157427 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
157428 ,p_level => C_LEVEL_EXCEPTION
157429 ,p_module => l_log_module);
157430 END IF;
157431 xla_exceptions_pkg.raise_message
157432 (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_264');
157433 END insert_sources_264;
157434 --
157435
157436 ---------------------------------------
157437 --
157438 -- PRIVATE FUNCTION
157439 -- EventClass_264
157440 --
157441 ----------------------------------------
157442 --
157443 FUNCTION EventClass_264
157444 (p_application_id IN NUMBER
157445 ,p_base_ledger_id IN NUMBER
157446 ,p_target_ledger_id IN NUMBER
157447 ,p_language IN VARCHAR2
157448 ,p_currency_code IN VARCHAR2
157449 ,p_sla_ledger_id IN NUMBER
157450 ,p_pad_start_date IN DATE
157451 ,p_pad_end_date IN DATE
157452 ,p_primary_ledger_id IN NUMBER)
157453 RETURN BOOLEAN IS
157454 --
157455 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'LDD_COST_ADJ_DEL_ALL';
157456 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'LDD_COST_ADJ_DEL';
157457
157458 l_calculate_acctd_flag VARCHAR2(1) :='N';
157459 l_calculate_g_l_flag VARCHAR2(1) :='N';
157460 --
157461 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
157462 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
157463 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
157464 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
157465 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
157466 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
157467 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
157468 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
157469 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
157470 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
157471 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
157472 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
157473 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
157474 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
157475 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
157476 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
157477 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
157478 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
157479 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
157480 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
157481 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
157482 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
157483 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
157484 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
157485 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
157486 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
157487
157488 l_event_id NUMBER;
157489 l_previous_event_id NUMBER;
157490 l_first_event_id NUMBER;
157491 l_last_event_id NUMBER;
157492
157493 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
157494 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
157495 --
157496 --
157497 l_result BOOLEAN := TRUE;
157498 l_rows NUMBER := 1000;
157499 l_event_type_name VARCHAR2(80) := 'All';
157500 l_event_class_name VARCHAR2(80) := 'Landed Cost Adjustment to Delivery';
157501 l_description VARCHAR2(4000);
157502 l_transaction_reversal NUMBER;
157503 l_ae_header_id NUMBER;
157504 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
157505 l_log_module VARCHAR2(240);
157506 --
157507 l_acct_reversal_source VARCHAR2(30);
157508 l_trx_reversal_source VARCHAR2(30);
157509
157510 l_continue_with_lines BOOLEAN := TRUE;
157511 --
157512 l_acc_rev_gl_date_source DATE; -- 4262811
157513 --
157514 type t_array_event_id is table of number index by binary_integer;
157515
157516 l_rec_array_event t_rec_array_event;
157517 l_null_rec_array_event t_rec_array_event;
157518 l_array_ae_header_id xla_number_array_type;
157519 l_actual_flag VARCHAR2(1) := NULL;
157520 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
157521 l_balance_type_code VARCHAR2(1) :=NULL;
157522 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
157523
157524 --
157525 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
157526 --
157527
157528 TYPE t_array_source_12 IS TABLE OF CST_XLA_RCV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
157529 TYPE t_array_source_32 IS TABLE OF PO_DISTS_REF_V.ENTERED_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
157530 TYPE t_array_source_33 IS TABLE OF PO_DISTS_REF_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
157531 TYPE t_array_source_34 IS TABLE OF PO_DISTS_REF_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
157532 TYPE t_array_source_38 IS TABLE OF CST_XLA_RCV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
157533
157534 TYPE t_array_source_4 IS TABLE OF CST_XLA_RCV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
157535 TYPE t_array_source_5 IS TABLE OF CST_XLA_RCV_LINES_V.RCV_ACCOUNTING_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
157536 TYPE t_array_source_11 IS TABLE OF CST_XLA_RCV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
157537 TYPE t_array_source_18 IS TABLE OF CST_XLA_RCV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
157538 TYPE t_array_source_22 IS TABLE OF CST_XLA_RCV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
157539
157540 l_array_source_12 t_array_source_12;
157541 l_array_source_12_meaning t_array_lookup_meaning;
157542 l_array_source_32 t_array_source_32;
157543 l_array_source_33 t_array_source_33;
157544 l_array_source_34 t_array_source_34;
157545 l_array_source_38 t_array_source_38;
157546 l_array_source_38_meaning t_array_lookup_meaning;
157547
157548 l_array_source_4 t_array_source_4;
157549 l_array_source_5 t_array_source_5;
157550 l_array_source_11 t_array_source_11;
157551 l_array_source_18 t_array_source_18;
157552 l_array_source_22 t_array_source_22;
157553
157554 --
157555 CURSOR header_cur
157556 IS
157557 SELECT /*+ leading(xet) cardinality(xet,1) */
157558 -- Event Class Code: LDD_COST_ADJ_DEL
157559 xet.entity_id
157560 ,xet.legal_entity_id
157561 ,xet.entity_code
157562 ,xet.transaction_number
157563 ,xet.event_id
157564 ,xet.event_class_code
157565 ,xet.event_type_code
157566 ,xet.event_number
157567 ,xet.event_date
157568 ,xet.transaction_date
157569 ,xet.reference_num_1
157570 ,xet.reference_num_2
157571 ,xet.reference_num_3
157572 ,xet.reference_num_4
157573 ,xet.reference_char_1
157574 ,xet.reference_char_2
157575 ,xet.reference_char_3
157576 ,xet.reference_char_4
157577 ,xet.reference_date_1
157578 ,xet.reference_date_2
157579 ,xet.reference_date_3
157580 ,xet.reference_date_4
157581 ,xet.event_created_by
157582 ,xet.budgetary_control_flag
157583 , h1.DISTRIBUTION_TYPE source_12
157584 , fvl12.meaning source_12_meaning
157585 , h4.ENTERED_CURRENCY_CODE source_32
157586 , h4.CURRENCY_CONVERSION_DATE source_33
157587 , h4.CURRENCY_CONVERSION_RATE source_34
157588 , h1.TRANSFER_TO_GL_INDICATOR source_38
157589 , fvl38.meaning source_38_meaning
157590 FROM xla_events_gt xet
157591 , CST_XLA_RCV_HEADERS_V h1
157592 , CST_XLA_RCV_REF_V h3
157593 , PO_DISTS_REF_V h4
157594 , fnd_lookup_values fvl12
157595 , fnd_lookup_values fvl38
157596 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
157597 and xet.event_class_code = C_EVENT_CLASS_CODE
157598 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
157599 AND h3.REF_RCV_ACCOUNTING_EVENT_ID = h1.RCV_ACCOUNTING_EVENT_ID AND h3.po_header_id = h4.po_header_id AND h3.po_distribution_id = h4.po_distribution_id AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
157600 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
157601 AND fvl12.view_application_id(+) = 700
157602 AND fvl12.language(+) = USERENV('LANG')
157603 AND fvl38.lookup_type(+) = 'YES_NO'
157604 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
157605 AND fvl38.view_application_id(+) = 0
157606 AND fvl38.language(+) = USERENV('LANG')
157607
157608 ORDER BY event_id
157609 ;
157610
157611
157612 --
157613 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
157614 IS
157615 SELECT /*+ leading(xet) cardinality(xet,1) */
157616 -- Event Class Code: LDD_COST_ADJ_DEL
157617 xet.entity_id
157618 ,xet.legal_entity_id
157619 ,xet.entity_code
157620 ,xet.transaction_number
157621 ,xet.event_id
157622 ,xet.event_class_code
157623 ,xet.event_type_code
157624 ,xet.event_number
157625 ,xet.event_date
157626 ,xet.transaction_date
157627 ,xet.reference_num_1
157628 ,xet.reference_num_2
157629 ,xet.reference_num_3
157630 ,xet.reference_num_4
157631 ,xet.reference_char_1
157632 ,xet.reference_char_2
157633 ,xet.reference_char_3
157634 ,xet.reference_char_4
157635 ,xet.reference_date_1
157636 ,xet.reference_date_2
157637 ,xet.reference_date_3
157638 ,xet.reference_date_4
157639 ,xet.event_created_by
157640 ,xet.budgetary_control_flag
157641 , l2.LINE_NUMBER
157642 , l2.CODE_COMBINATION_ID source_4
157643 , l2.RCV_ACCOUNTING_LINE_TYPE source_5
157644 , l2.DISTRIBUTION_IDENTIFIER source_11
157645 , l2.ENTERED_AMOUNT source_18
157646 , l2.ACCOUNTED_AMOUNT source_22
157647 FROM xla_events_gt xet
157648 , CST_XLA_RCV_LINES_V l2
157649 WHERE xet.event_id between x_first_event_id and x_last_event_id
157650 and xet.event_date between p_pad_start_date and p_pad_end_date
157651 and xet.event_class_code = C_EVENT_CLASS_CODE
157652 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
157653 ;
157654
157655 --
157656 BEGIN
157657 IF g_log_enabled THEN
157658 l_log_module := C_DEFAULT_MODULE||'.EventClass_264';
157659 END IF;
157660 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
157661 trace
157662 (p_msg => 'BEGIN of EventClass_264'
157663 ,p_level => C_LEVEL_PROCEDURE
157664 ,p_module => l_log_module);
157665 END IF;
157666
157667 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
157668 trace
157669 (p_msg => 'p_application_id = '||p_application_id||
157670 ' - p_base_ledger_id = '||p_base_ledger_id||
157671 ' - p_target_ledger_id = '||p_target_ledger_id||
157672 ' - p_language = '||p_language||
157673 ' - p_currency_code = '||p_currency_code||
157674 ' - p_sla_ledger_id = '||p_sla_ledger_id
157675 ,p_level => C_LEVEL_STATEMENT
157676 ,p_module => l_log_module);
157677 END IF;
157678 --
157679 -- initialze arrays
157680 --
157681 g_array_event.DELETE;
157682 l_rec_array_event := l_null_rec_array_event;
157683 --
157684 --------------------------------------
157685 -- 4262811 Initialze MPA Line Number
157686 --------------------------------------
157687 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
157688
157689 --
157690
157691 --
157692 OPEN header_cur;
157693 --
157694 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
157695 trace
157696 (p_msg => 'SQL - FETCH header_cur'
157697 ,p_level => C_LEVEL_STATEMENT
157698 ,p_module => l_log_module);
157699 END IF;
157700 --
157701 LOOP
157702 FETCH header_cur BULK COLLECT INTO
157703 l_array_entity_id
157704 , l_array_legal_entity_id
157705 , l_array_entity_code
157706 , l_array_transaction_num
157707 , l_array_event_id
157708 , l_array_class_code
157709 , l_array_event_type
157710 , l_array_event_number
157711 , l_array_event_date
157712 , l_array_transaction_date
157713 , l_array_reference_num_1
157714 , l_array_reference_num_2
157715 , l_array_reference_num_3
157716 , l_array_reference_num_4
157717 , l_array_reference_char_1
157718 , l_array_reference_char_2
157719 , l_array_reference_char_3
157720 , l_array_reference_char_4
157721 , l_array_reference_date_1
157722 , l_array_reference_date_2
157723 , l_array_reference_date_3
157724 , l_array_reference_date_4
157725 , l_array_event_created_by
157726 , l_array_budgetary_control_flag
157727 , l_array_source_12
157728 , l_array_source_12_meaning
157729 , l_array_source_32
157730 , l_array_source_33
157731 , l_array_source_34
157732 , l_array_source_38
157733 , l_array_source_38_meaning
157734 LIMIT l_rows;
157735 --
157736 IF (C_LEVEL_EVENT >= g_log_level) THEN
157737 trace
157738 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
157739 ,p_level => C_LEVEL_EVENT
157740 ,p_module => l_log_module);
157741 END IF;
157742 --
157743 EXIT WHEN l_array_entity_id.COUNT = 0;
157744
157745 -- initialize arrays
157746 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
157747 XLA_AE_LINES_PKG.g_rec_lines := NULL;
157748
157749 --
157750 -- Bug 4458708
157751 --
157752 XLA_AE_LINES_PKG.g_LineNumber := 0;
157753
157754
157755 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
157756 g_last_hdr_idx := l_array_event_id.LAST;
157757 --
157758 -- loop for the headers. Each iteration is for each header extract row
157759 -- fetched in header cursor
157760 --
157761 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
157762
157763 --
157764 -- set event info as cache for other routines to refer event attributes
157765 --
157766 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
157767 (p_application_id => p_application_id
157768 ,p_primary_ledger_id => p_primary_ledger_id
157769 ,p_base_ledger_id => p_base_ledger_id
157770 ,p_target_ledger_id => p_target_ledger_id
157771 ,p_entity_id => l_array_entity_id(hdr_idx)
157772 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
157773 ,p_entity_code => l_array_entity_code(hdr_idx)
157774 ,p_transaction_num => l_array_transaction_num(hdr_idx)
157775 ,p_event_id => l_array_event_id(hdr_idx)
157776 ,p_event_class_code => l_array_class_code(hdr_idx)
157777 ,p_event_type_code => l_array_event_type(hdr_idx)
157778 ,p_event_number => l_array_event_number(hdr_idx)
157779 ,p_event_date => l_array_event_date(hdr_idx)
157780 ,p_transaction_date => l_array_transaction_date(hdr_idx)
157781 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
157782 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
157783 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
157784 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
157785 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
157786 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
157787 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
157788 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
157789 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
157790 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
157791 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
157792 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
157793 ,p_event_created_by => l_array_event_created_by(hdr_idx)
157794 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
157795
157796 --
157797 -- set the status of entry to C_VALID (0)
157798 --
157799 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
157800
157801 --
157802 -- initialize a row for ae header
157803 --
157804 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
157805
157806 l_event_id := l_array_event_id(hdr_idx);
157807
157808 --
157809 -- storing the hdr_idx for event. May be used by line cursor.
157810 --
157811 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
157812
157813 --
157814 -- store sources from header extract. This can be improved to
157815 -- store only those sources from header extract that may be used in lines
157816 --
157817
157818 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
157819 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
157820 g_array_event(l_event_id).array_value_char('source_32') := l_array_source_32(hdr_idx);
157821 g_array_event(l_event_id).array_value_date('source_33') := l_array_source_33(hdr_idx);
157822 g_array_event(l_event_id).array_value_num('source_34') := l_array_source_34(hdr_idx);
157823 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
157824 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
157825
157826 --
157827 -- initilaize the status of ae headers for diffrent balance types
157828 -- the status is initialised to C_NOT_CREATED (2)
157829 --
157830 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
157831 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
157832 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
157833
157834 --
157835 -- call api to validate and store accounting attributes for header
157836 --
157837
157838 ------------------------------------------------------------
157839 -- Accrual Reversal : to get date for Standard Source (NONE)
157840 ------------------------------------------------------------
157841 l_acc_rev_gl_date_source := NULL;
157842
157843 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
157844 l_rec_acct_attrs.array_date_value(1) :=
157845 xla_ae_sources_pkg.GetSystemSourceDate(
157846 p_source_code => 'XLA_REFERENCE_DATE_1'
157847 , p_source_type_code => 'Y'
157848 , p_source_application_id => 602
157849 );
157850 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_TRANSFER_FLAG';
157851 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
157852
157853
157854 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
157855
157856 XLA_AE_HEADER_PKG.SetJeCategoryName;
157857
157858 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
157859 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
157860 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
157861 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
157862 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
157863
157864
157865 -- No header level analytical criteria
157866
157867 --
157868 --accounting attribute enhancement, bug 3612931
157869 --
157870 l_trx_reversal_source := SUBSTR(NULL, 1,30);
157871
157872 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
157873 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
157874
157875 xla_accounting_err_pkg.build_message
157876 (p_appli_s_name => 'XLA'
157877 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
157878 ,p_token_1 => 'ACCT_ATTR_NAME'
157879 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
157880 ,p_token_2 => 'PRODUCT_NAME'
157881 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
157882 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
157883 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
157884 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
157885
157886 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
157887 --
157888 -- following sets the accounting attributes needed to reverse
157889 -- accounting for a distributeion
157890 --
157891 xla_ae_lines_pkg.SetTrxReversalAttrs
157892 (p_event_id => l_event_id
157893 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
157894 ,p_trx_reversal_source => l_trx_reversal_source);
157895
157896 END IF;
157897
157898
157899 ----------------------------------------------------------------
157900 -- 4262811 - update the header statuses to invalid in need be
157901 ----------------------------------------------------------------
157902 --
157903 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
157904
157905
157906 -----------------------------------------------
157907 -- No accrual reversal for the event class/type
157908 -----------------------------------------------
157909 ----------------------------------------------------------------
157910
157911 --
157912 -- this ends the header loop iteration for one bulk fetch
157913 --
157914 END LOOP;
157915
157916 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
157917 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
157918
157919 --
157920 -- insert dummy rows into lines gt table that were created due to
157921 -- transaction reversals
157922 --
157923 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
157924 l_result := XLA_AE_LINES_PKG.InsertLines;
157925 END IF;
157926
157927 --
157928 -- reset the temp_line_num for each set of events fetched from header
157929 -- cursor rather than doing it for each new event in line cursor
157930 -- Bug 3939231
157931 --
157932 xla_ae_lines_pkg.g_temp_line_num := 0;
157933
157934
157935
157936 --
157937 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
157938 --
157939 --
157940 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
157941
157942 trace
157943 (p_msg => 'SQL - FETCH line_cur'
157944 ,p_level => C_LEVEL_STATEMENT
157945 ,p_module => l_log_module);
157946
157947 END IF;
157948 --
157949 --
157950 LOOP
157951 --
157952 FETCH line_cur BULK COLLECT INTO
157953 l_array_entity_id
157954 , l_array_legal_entity_id
157955 , l_array_entity_code
157956 , l_array_transaction_num
157957 , l_array_event_id
157958 , l_array_class_code
157959 , l_array_event_type
157960 , l_array_event_number
157961 , l_array_event_date
157962 , l_array_transaction_date
157963 , l_array_reference_num_1
157964 , l_array_reference_num_2
157965 , l_array_reference_num_3
157966 , l_array_reference_num_4
157967 , l_array_reference_char_1
157968 , l_array_reference_char_2
157969 , l_array_reference_char_3
157970 , l_array_reference_char_4
157971 , l_array_reference_date_1
157972 , l_array_reference_date_2
157973 , l_array_reference_date_3
157974 , l_array_reference_date_4
157975 , l_array_event_created_by
157976 , l_array_budgetary_control_flag
157977 , l_array_extract_line_num
157978 , l_array_source_4
157979 , l_array_source_5
157980 , l_array_source_11
157981 , l_array_source_18
157982 , l_array_source_22
157983 LIMIT l_rows;
157984
157985 --
157986 IF (C_LEVEL_EVENT >= g_log_level) THEN
157987 trace
157988 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
157989 ,p_level => C_LEVEL_EVENT
157990 ,p_module => l_log_module);
157991 END IF;
157992 --
157993 EXIT WHEN l_array_entity_id.count = 0;
157994
157995 XLA_AE_LINES_PKG.g_rec_lines := null;
157996
157997 --
157998 -- Bug 4458708
157999 --
158000 XLA_AE_LINES_PKG.g_LineNumber := 0;
158001 --
158002 --
158003
158004 FOR Idx IN 1..l_array_event_id.count LOOP
158005 --
158006 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
158007 --
158008 l_event_id := l_array_event_id(idx); -- 5648433
158009
158010 --
158011 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
158012 --
158013
158014 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
158015 (g_array_event(l_event_id).array_value_num('header_index'))
158016 ,'N'
158017 ) <> 'Y'
158018 THEN
158019 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
158020 trace
158021 (p_msg => 'Trancaction revesal option is not Y '
158022 ,p_level => C_LEVEL_STATEMENT
158023 ,p_module => l_log_module);
158024 END IF;
158025
158026 --
158027 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
158028 --
158029 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
158030 --
158031 -- set event info as cache for other routines to refer event attributes
158032 --
158033
158034 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
158035 l_previous_event_id := l_event_id;
158036
158037 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
158038 (p_application_id => p_application_id
158039 ,p_primary_ledger_id => p_primary_ledger_id
158040 ,p_base_ledger_id => p_base_ledger_id
158041 ,p_target_ledger_id => p_target_ledger_id
158042 ,p_entity_id => l_array_entity_id(Idx)
158043 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
158044 ,p_entity_code => l_array_entity_code(Idx)
158045 ,p_transaction_num => l_array_transaction_num(Idx)
158046 ,p_event_id => l_array_event_id(Idx)
158047 ,p_event_class_code => l_array_class_code(Idx)
158048 ,p_event_type_code => l_array_event_type(Idx)
158049 ,p_event_number => l_array_event_number(Idx)
158050 ,p_event_date => l_array_event_date(Idx)
158051 ,p_transaction_date => l_array_transaction_date(Idx)
158052 ,p_reference_num_1 => l_array_reference_num_1(Idx)
158053 ,p_reference_num_2 => l_array_reference_num_2(Idx)
158054 ,p_reference_num_3 => l_array_reference_num_3(Idx)
158055 ,p_reference_num_4 => l_array_reference_num_4(Idx)
158056 ,p_reference_char_1 => l_array_reference_char_1(Idx)
158057 ,p_reference_char_2 => l_array_reference_char_2(Idx)
158058 ,p_reference_char_3 => l_array_reference_char_3(Idx)
158059 ,p_reference_char_4 => l_array_reference_char_4(Idx)
158060 ,p_reference_date_1 => l_array_reference_date_1(Idx)
158061 ,p_reference_date_2 => l_array_reference_date_2(Idx)
158062 ,p_reference_date_3 => l_array_reference_date_3(Idx)
158063 ,p_reference_date_4 => l_array_reference_date_4(Idx)
158064 ,p_event_created_by => l_array_event_created_by(Idx)
158065 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
158066 --
158067 END IF;
158068
158069
158070
158071 --
158072 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
158073
158074 l_acct_reversal_source := SUBSTR(NULL, 1,30);
158075
158076 IF l_continue_with_lines THEN
158077 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
158078 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
158079
158080 xla_accounting_err_pkg.build_message
158081 (p_appli_s_name => 'XLA'
158082 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
158083 ,p_token_1 => 'LINE_NUMBER'
158084 ,p_value_1 => l_array_extract_line_num(Idx)
158085 ,p_token_2 => 'PRODUCT_NAME'
158086 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
158087 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
158088 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
158089 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
158090
158091 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
158092 --
158093 -- following sets the accounting attributes needed to reverse
158094 -- accounting for a distributeion
158095 --
158096
158097 --
158098 -- 5217187
158099 --
158100 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
158101 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
158102 g_array_event(l_event_id).array_value_num('header_index'));
158103 --
158104 --
158105
158106 -- No reversal code generated
158107
158108 xla_ae_lines_pkg.SetAcctReversalAttrs
158109 (p_event_id => l_event_id
158110 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
158111 ,p_calculate_acctd_flag => l_calculate_acctd_flag
158112 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
158113 END IF;
158114
158115 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
158116 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
158117
158118 --
158119 AcctLineType_48 (
158120 p_application_id => p_application_id
158121 ,p_event_id => l_event_id
158122 ,p_calculate_acctd_flag => l_calculate_acctd_flag
158123 ,p_calculate_g_l_flag => l_calculate_g_l_flag
158124 ,p_actual_flag => l_actual_flag
158125 ,p_balance_type_code => l_balance_type_code
158126 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
158127
158128 , p_source_4 => l_array_source_4(Idx)
158129 , p_source_5 => l_array_source_5(Idx)
158130 , p_source_11 => l_array_source_11(Idx)
158131 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
158132 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
158133 , p_source_18 => l_array_source_18(Idx)
158134 , p_source_22 => l_array_source_22(Idx)
158135 , p_source_32 => g_array_event(l_event_id).array_value_char('source_32')
158136 , p_source_33 => g_array_event(l_event_id).array_value_date('source_33')
158137 , p_source_34 => g_array_event(l_event_id).array_value_num('source_34')
158138 );
158139 If(l_balance_type_code = 'A') THEN
158140 l_actual_gain_loss_ref := l_gain_or_loss_ref;
158141 END IF;
158142
158143 --
158144
158145
158146 --
158147 AcctLineType_157 (
158148 p_application_id => p_application_id
158149 ,p_event_id => l_event_id
158150 ,p_calculate_acctd_flag => l_calculate_acctd_flag
158151 ,p_calculate_g_l_flag => l_calculate_g_l_flag
158152 ,p_actual_flag => l_actual_flag
158153 ,p_balance_type_code => l_balance_type_code
158154 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
158155
158156 , p_source_4 => l_array_source_4(Idx)
158157 , p_source_5 => l_array_source_5(Idx)
158158 , p_source_11 => l_array_source_11(Idx)
158159 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
158160 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
158161 , p_source_18 => l_array_source_18(Idx)
158162 , p_source_22 => l_array_source_22(Idx)
158163 , p_source_32 => g_array_event(l_event_id).array_value_char('source_32')
158164 , p_source_33 => g_array_event(l_event_id).array_value_date('source_33')
158165 , p_source_34 => g_array_event(l_event_id).array_value_num('source_34')
158166 );
158167 If(l_balance_type_code = 'A') THEN
158168 l_actual_gain_loss_ref := l_gain_or_loss_ref;
158169 END IF;
158170
158171 --
158172
158173
158174 --
158175 AcctLineType_224 (
158176 p_application_id => p_application_id
158177 ,p_event_id => l_event_id
158178 ,p_calculate_acctd_flag => l_calculate_acctd_flag
158179 ,p_calculate_g_l_flag => l_calculate_g_l_flag
158180 ,p_actual_flag => l_actual_flag
158181 ,p_balance_type_code => l_balance_type_code
158182 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
158183
158184 , p_source_4 => l_array_source_4(Idx)
158185 , p_source_5 => l_array_source_5(Idx)
158186 , p_source_11 => l_array_source_11(Idx)
158187 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
158188 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
158189 , p_source_18 => l_array_source_18(Idx)
158190 , p_source_22 => l_array_source_22(Idx)
158191 , p_source_32 => g_array_event(l_event_id).array_value_char('source_32')
158192 , p_source_33 => g_array_event(l_event_id).array_value_date('source_33')
158193 , p_source_34 => g_array_event(l_event_id).array_value_num('source_34')
158194 );
158195 If(l_balance_type_code = 'A') THEN
158196 l_actual_gain_loss_ref := l_gain_or_loss_ref;
158197 END IF;
158198
158199 --
158200
158201
158202 --
158203 AcctLineType_229 (
158204 p_application_id => p_application_id
158205 ,p_event_id => l_event_id
158206 ,p_calculate_acctd_flag => l_calculate_acctd_flag
158207 ,p_calculate_g_l_flag => l_calculate_g_l_flag
158208 ,p_actual_flag => l_actual_flag
158209 ,p_balance_type_code => l_balance_type_code
158210 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
158211
158212 , p_source_4 => l_array_source_4(Idx)
158213 , p_source_5 => l_array_source_5(Idx)
158214 , p_source_11 => l_array_source_11(Idx)
158215 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
158216 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
158217 , p_source_18 => l_array_source_18(Idx)
158218 , p_source_22 => l_array_source_22(Idx)
158219 , p_source_32 => g_array_event(l_event_id).array_value_char('source_32')
158220 , p_source_33 => g_array_event(l_event_id).array_value_date('source_33')
158221 , p_source_34 => g_array_event(l_event_id).array_value_num('source_34')
158222 );
158223 If(l_balance_type_code = 'A') THEN
158224 l_actual_gain_loss_ref := l_gain_or_loss_ref;
158225 END IF;
158226
158227 --
158228
158229 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
158230 -- or secondary ledger that has different currency with primary
158231 -- or alc that is calculated by sla
158232 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
158233 (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'))
158234
158235 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
158236 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
158237 AND (l_actual_flag = 'A')) THEN
158238 XLA_AE_LINES_PKG.CreateGainOrLossLines(
158239 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
158240 ,p_application_id => p_application_id
158241 ,p_amb_context_code => 'DEFAULT'
158242 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
158243 ,p_event_class_code => C_EVENT_CLASS_CODE
158244 ,p_event_type_code => C_EVENT_TYPE_CODE
158245
158246 ,p_gain_ccid => -1
158247 ,p_loss_ccid => -1
158248
158249 ,p_actual_flag => l_actual_flag
158250 ,p_enc_flag => null
158251 ,p_actual_g_l_ref => l_actual_gain_loss_ref
158252 ,p_enc_g_l_ref => null
158253 );
158254 END IF;
158255 END IF;
158256 END IF;
158257
158258 ELSE
158259 --
158260 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
158261 --
158262 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
158263 trace
158264 (p_msg => 'Trancaction revesal option is Y'
158265 ,p_level => C_LEVEL_STATEMENT
158266 ,p_module => l_log_module);
158267 END IF;
158268 END IF;
158269
158270 END LOOP;
158271 l_result := XLA_AE_LINES_PKG.InsertLines ;
158272 end loop;
158273 close line_cur;
158274
158275
158276 --
158277 -- insert headers into xla_ae_headers_gt table
158278 --
158279 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
158280
158281 -- insert into errors table here.
158282
158283 END LOOP;
158284
158285 --
158286 -- 4865292
158287 --
158288 -- Compare g_hdr_extract_count with event count in
158289 -- CreateHeadersAndLines.
158290 --
158291 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
158292
158293 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
158294 trace (p_msg => '# rows extracted from header extract objects '
158295 || ' (running total): '
158296 || g_hdr_extract_count
158297 ,p_level => C_LEVEL_STATEMENT
158298 ,p_module => l_log_module);
158299 END IF;
158300
158301 CLOSE header_cur;
158302 --
158303
158304 --
158305 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
158306 trace
158307 (p_msg => 'END of EventClass_264'
158308 ,p_level => C_LEVEL_PROCEDURE
158309 ,p_module => l_log_module);
158310 END IF;
158311 --
158312 RETURN l_result;
158313 EXCEPTION
158314 WHEN xla_exceptions_pkg.application_exception THEN
158315
158316 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
158317
158318
158319 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
158320
158321 RAISE;
158322
158323 WHEN NO_DATA_FOUND THEN
158324
158325 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
158326 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
158327
158328 FOR header_record IN header_cur
158329 LOOP
158330 l_array_header_events(header_record.event_id) := header_record.event_id;
158331 END LOOP;
158332
158333 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
158334 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
158335
158336 fnd_file.put_line(fnd_file.LOG, ' ');
158337 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
158338 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
158339 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
158340
158341 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
158342 LOOP
158343 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
158344 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
158345 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
158346 END IF;
158347 END LOOP;
158348
158349 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
158350 fnd_file.put_line(fnd_file.LOG, ' ');
158351
158352
158353 xla_exceptions_pkg.raise_message
158354 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_264');
158355
158356
158357 WHEN OTHERS THEN
158358 xla_exceptions_pkg.raise_message
158359 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_264');
158360 END EventClass_264;
158361 --
158362
158363 ---------------------------------------
158364 --
158365 -- PRIVATE PROCEDURE
158366 -- insert_sources_265
158367 --
158368 ----------------------------------------
158369 --
158370 PROCEDURE insert_sources_265(
158371 p_target_ledger_id IN NUMBER
158372 , p_language IN VARCHAR2
158373 , p_sla_ledger_id IN NUMBER
158374 , p_pad_start_date IN DATE
158375 , p_pad_end_date IN DATE
158376 )
158377 IS
158378
158379 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'LDD_COST_ADJ_RCV_ALL';
158380 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'LDD_COST_ADJ_RCV';
158381 p_apps_owner VARCHAR2(30);
158382 l_log_module VARCHAR2(240);
158383 BEGIN
158384 IF g_log_enabled THEN
158385 l_log_module := C_DEFAULT_MODULE||'.insert_sources_265';
158386 END IF;
158387 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
158388
158389 trace
158390 (p_msg => 'BEGIN of insert_sources_265'
158391 ,p_level => C_LEVEL_PROCEDURE
158392 ,p_module => l_log_module);
158393
158394 END IF;
158395
158396 -- select APPS owner
158397 SELECT oracle_username
158398 INTO p_apps_owner
158399 FROM fnd_oracle_userid
158400 WHERE read_only_flag = 'U'
158401 ;
158402
158403 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
158404 trace
158405 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
158406 ' - p_language = '||p_language||
158407 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
158408 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
158409 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
158410 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
158411 ,p_level => C_LEVEL_STATEMENT
158412 ,p_module => l_log_module);
158413 END IF;
158414
158415
158416 --
158417 INSERT INTO xla_diag_sources --hdr2
158418 (
158419 event_id
158420 , ledger_id
158421 , sla_ledger_id
158422 , description_language
158423 , object_name
158424 , object_type_code
158425 , line_number
158426 , source_application_id
158427 , source_type_code
158428 , source_code
158429 , source_value
158430 , source_meaning
158431 , created_by
158432 , creation_date
158433 , last_update_date
158434 , last_updated_by
158435 , last_update_login
158436 , program_update_date
158437 , program_application_id
158438 , program_id
158439 , request_id
158440 )
158441 SELECT
158442 event_id
158443 , p_target_ledger_id
158444 , p_sla_ledger_id
158445 , p_language
158446 , object_name
158447 , object_type_code
158448 , line_number
158449 , source_application_id
158450 , source_type_code
158451 , source_code
158452 , SUBSTR(source_value ,1,1996)
158453 , SUBSTR(source_meaning ,1,200)
158454 , xla_environment_pkg.g_Usr_Id
158455 , TRUNC(SYSDATE)
158456 , TRUNC(SYSDATE)
158457 , xla_environment_pkg.g_Usr_Id
158458 , xla_environment_pkg.g_Login_Id
158459 , TRUNC(SYSDATE)
158460 , xla_environment_pkg.g_Prog_Appl_Id
158461 , xla_environment_pkg.g_Prog_Id
158462 , xla_environment_pkg.g_Req_Id
158463 FROM (
158464 SELECT xet.event_id event_id
158465 , 0 line_number
158466 , CASE r
158467 WHEN 1 THEN 'CST_XLA_RCV_HEADERS_V'
158468 WHEN 2 THEN 'PO_DISTS_REF_V'
158469 WHEN 3 THEN 'PO_DISTS_REF_V'
158470 WHEN 4 THEN 'PO_DISTS_REF_V'
158471 WHEN 5 THEN 'PO_DISTS_REF_V'
158472 WHEN 6 THEN 'CST_XLA_RCV_HEADERS_V'
158473
158474 ELSE null
158475 END object_name
158476 , CASE r
158477 WHEN 1 THEN 'HEADER'
158478 WHEN 2 THEN 'HEADER'
158479 WHEN 3 THEN 'HEADER'
158480 WHEN 4 THEN 'HEADER'
158481 WHEN 5 THEN 'HEADER'
158482 WHEN 6 THEN 'HEADER'
158483
158484 ELSE null
158485 END object_type_code
158486 , CASE r
158487 WHEN 1 THEN '707'
158488 WHEN 2 THEN '201'
158489 WHEN 3 THEN '201'
158490 WHEN 4 THEN '201'
158491 WHEN 5 THEN '201'
158492 WHEN 6 THEN '707'
158493
158494 ELSE null
158495 END source_application_id
158496 , 'S' source_type_code
158497 , CASE r
158498 WHEN 1 THEN 'DISTRIBUTION_TYPE'
158499 WHEN 2 THEN 'ENTERED_CURRENCY_CODE'
158500 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE'
158501 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE'
158502 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE'
158503 WHEN 6 THEN 'TRANSFER_TO_GL_INDICATOR'
158504
158505 ELSE null
158506 END source_code
158507 , CASE r
158508 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
158509 WHEN 2 THEN TO_CHAR(h4.ENTERED_CURRENCY_CODE)
158510 WHEN 3 THEN TO_CHAR(h4.CURRENCY_CONVERSION_DATE)
158511 WHEN 4 THEN TO_CHAR(h4.CURRENCY_CONVERSION_RATE)
158512 WHEN 5 THEN TO_CHAR(h4.CURRENCY_CONVERSION_TYPE)
158513 WHEN 6 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
158514
158515 ELSE null
158516 END source_value
158517 , CASE r
158518 WHEN 1 THEN fvl12.meaning
158519 WHEN 6 THEN fvl38.meaning
158520
158521 ELSE null
158522 END source_meaning
158523 FROM xla_events_gt xet
158524 , CST_XLA_RCV_HEADERS_V h1
158525 , CST_XLA_RCV_REF_V h3
158526 , PO_DISTS_REF_V h4
158527 , fnd_lookup_values fvl12
158528 , fnd_lookup_values fvl38
158529 ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
158530 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
158531 AND xet.event_class_code = C_EVENT_CLASS_CODE
158532 AND h1.event_id = xet.event_id
158533 AND h3.ref_rcv_accounting_event_id = h1.rcv_accounting_event_id AND h3.po_header_id = h4.po_header_id and h3.po_distribution_id = h4.po_distribution_id AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
158534 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
158535 AND fvl12.view_application_id(+) = 700
158536 AND fvl12.language(+) = USERENV('LANG')
158537 AND fvl38.lookup_type(+) = 'YES_NO'
158538 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
158539 AND fvl38.view_application_id(+) = 0
158540 AND fvl38.language(+) = USERENV('LANG')
158541
158542 )
158543 ;
158544 --
158545 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
158546
158547 trace
158548 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
158549 ,p_level => C_LEVEL_STATEMENT
158550 ,p_module => l_log_module);
158551
158552 END IF;
158553 --
158554
158555
158556
158557 --
158558 INSERT INTO xla_diag_sources --line2
158559 (
158560 event_id
158561 , ledger_id
158562 , sla_ledger_id
158563 , description_language
158564 , object_name
158565 , object_type_code
158566 , line_number
158567 , source_application_id
158568 , source_type_code
158569 , source_code
158570 , source_value
158571 , source_meaning
158572 , created_by
158573 , creation_date
158574 , last_update_date
158575 , last_updated_by
158576 , last_update_login
158577 , program_update_date
158578 , program_application_id
158579 , program_id
158580 , request_id
158581 )
158582 SELECT event_id
158583 , p_target_ledger_id
158584 , p_sla_ledger_id
158585 , p_language
158586 , object_name
158587 , object_type_code
158588 , line_number
158589 , source_application_id
158590 , source_type_code
158591 , source_code
158592 , SUBSTR(source_value,1,1996)
158593 , SUBSTR(source_meaning ,1,200)
158594 , xla_environment_pkg.g_Usr_Id
158595 , TRUNC(SYSDATE)
158596 , TRUNC(SYSDATE)
158597 , xla_environment_pkg.g_Usr_Id
158598 , xla_environment_pkg.g_Login_Id
158599 , TRUNC(SYSDATE)
158600 , xla_environment_pkg.g_Prog_Appl_Id
158601 , xla_environment_pkg.g_Prog_Id
158602 , xla_environment_pkg.g_Req_Id
158603 FROM (
158604 SELECT xet.event_id event_id
158605 , l2.line_number line_number
158606 , CASE r
158607 WHEN 1 THEN 'CST_XLA_RCV_LINES_V'
158608 WHEN 2 THEN 'CST_XLA_RCV_LINES_V'
158609 WHEN 3 THEN 'CST_XLA_RCV_LINES_V'
158610 WHEN 4 THEN 'CST_XLA_RCV_LINES_V'
158611 WHEN 5 THEN 'CST_XLA_RCV_LINES_V'
158612
158613 ELSE null
158614 END object_name
158615 , CASE r
158616 WHEN 1 THEN 'LINE'
158617 WHEN 2 THEN 'LINE'
158618 WHEN 3 THEN 'LINE'
158619 WHEN 4 THEN 'LINE'
158620 WHEN 5 THEN 'LINE'
158621
158622 ELSE null
158623 END object_type_code
158624 , CASE r
158625 WHEN 1 THEN '707'
158626 WHEN 2 THEN '707'
158627 WHEN 3 THEN '707'
158628 WHEN 4 THEN '707'
158629 WHEN 5 THEN '707'
158630
158631 ELSE null
158632 END source_application_id
158633 , 'S' source_type_code
158634 , CASE r
158635 WHEN 1 THEN 'CODE_COMBINATION_ID'
158636 WHEN 2 THEN 'RCV_ACCOUNTING_LINE_TYPE'
158637 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER'
158638 WHEN 4 THEN 'ENTERED_AMOUNT'
158639 WHEN 5 THEN 'ACCOUNTED_AMOUNT'
158640
158641 ELSE null
158642 END source_code
158643 , CASE r
158644 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
158645 WHEN 2 THEN TO_CHAR(l2.RCV_ACCOUNTING_LINE_TYPE)
158646 WHEN 3 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
158647 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
158648 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
158649
158650 ELSE null
158651 END source_value
158652 , null source_meaning
158653 FROM xla_events_gt xet
158654 , CST_XLA_RCV_LINES_V l2
158655 , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
158656 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
158657 AND xet.event_class_code = C_EVENT_CLASS_CODE
158658 AND l2.event_id = xet.event_id
158659
158660 )
158661 ;
158662 --
158663 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
158664
158665 trace
158666 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
158667 ,p_level => C_LEVEL_STATEMENT
158668 ,p_module => l_log_module);
158669
158670 END IF;
158671
158672
158673 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
158674 trace
158675 (p_msg => 'END of insert_sources_265'
158676 ,p_level => C_LEVEL_PROCEDURE
158677 ,p_module => l_log_module);
158678 END IF;
158679 EXCEPTION
158680 WHEN xla_exceptions_pkg.application_exception THEN
158681 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
158682 trace
158683 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
158684 ,p_level => C_LEVEL_EXCEPTION
158685 ,p_module => l_log_module);
158686 END IF;
158687 RAISE;
158688 WHEN OTHERS THEN
158689 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
158690 trace
158691 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
158692 ,p_level => C_LEVEL_EXCEPTION
158693 ,p_module => l_log_module);
158694 END IF;
158695 xla_exceptions_pkg.raise_message
158696 (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_265');
158697 END insert_sources_265;
158698 --
158699
158700 ---------------------------------------
158701 --
158702 -- PRIVATE FUNCTION
158703 -- EventClass_265
158704 --
158705 ----------------------------------------
158706 --
158707 FUNCTION EventClass_265
158708 (p_application_id IN NUMBER
158709 ,p_base_ledger_id IN NUMBER
158710 ,p_target_ledger_id IN NUMBER
158711 ,p_language IN VARCHAR2
158712 ,p_currency_code IN VARCHAR2
158713 ,p_sla_ledger_id IN NUMBER
158714 ,p_pad_start_date IN DATE
158715 ,p_pad_end_date IN DATE
158716 ,p_primary_ledger_id IN NUMBER)
158717 RETURN BOOLEAN IS
158718 --
158719 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'LDD_COST_ADJ_RCV_ALL';
158720 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'LDD_COST_ADJ_RCV';
158721
158722 l_calculate_acctd_flag VARCHAR2(1) :='N';
158723 l_calculate_g_l_flag VARCHAR2(1) :='N';
158724 --
158725 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
158726 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
158727 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
158728 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
158729 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
158730 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
158731 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
158732 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
158733 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
158734 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
158735 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
158736 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
158737 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
158738 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
158739 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
158740 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
158741 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
158742 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
158743 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
158744 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
158745 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
158746 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
158747 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
158748 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
158749 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
158750 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
158751
158752 l_event_id NUMBER;
158753 l_previous_event_id NUMBER;
158754 l_first_event_id NUMBER;
158755 l_last_event_id NUMBER;
158756
158757 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
158758 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
158759 --
158760 --
158761 l_result BOOLEAN := TRUE;
158762 l_rows NUMBER := 1000;
158763 l_event_type_name VARCHAR2(80) := 'All';
158764 l_event_class_name VARCHAR2(80) := 'Landed Cost Adjustment to Receipt';
158765 l_description VARCHAR2(4000);
158766 l_transaction_reversal NUMBER;
158767 l_ae_header_id NUMBER;
158768 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
158769 l_log_module VARCHAR2(240);
158770 --
158771 l_acct_reversal_source VARCHAR2(30);
158772 l_trx_reversal_source VARCHAR2(30);
158773
158774 l_continue_with_lines BOOLEAN := TRUE;
158775 --
158776 l_acc_rev_gl_date_source DATE; -- 4262811
158777 --
158778 type t_array_event_id is table of number index by binary_integer;
158779
158780 l_rec_array_event t_rec_array_event;
158781 l_null_rec_array_event t_rec_array_event;
158782 l_array_ae_header_id xla_number_array_type;
158783 l_actual_flag VARCHAR2(1) := NULL;
158784 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
158785 l_balance_type_code VARCHAR2(1) :=NULL;
158786 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
158787
158788 --
158789 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
158790 --
158791
158792 TYPE t_array_source_12 IS TABLE OF CST_XLA_RCV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
158793 TYPE t_array_source_32 IS TABLE OF PO_DISTS_REF_V.ENTERED_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
158794 TYPE t_array_source_33 IS TABLE OF PO_DISTS_REF_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
158795 TYPE t_array_source_34 IS TABLE OF PO_DISTS_REF_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
158796 TYPE t_array_source_36 IS TABLE OF PO_DISTS_REF_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
158797 TYPE t_array_source_38 IS TABLE OF CST_XLA_RCV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
158798
158799 TYPE t_array_source_4 IS TABLE OF CST_XLA_RCV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
158800 TYPE t_array_source_5 IS TABLE OF CST_XLA_RCV_LINES_V.RCV_ACCOUNTING_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
158801 TYPE t_array_source_11 IS TABLE OF CST_XLA_RCV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
158802 TYPE t_array_source_18 IS TABLE OF CST_XLA_RCV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
158803 TYPE t_array_source_22 IS TABLE OF CST_XLA_RCV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
158804
158805 l_array_source_12 t_array_source_12;
158806 l_array_source_12_meaning t_array_lookup_meaning;
158807 l_array_source_32 t_array_source_32;
158808 l_array_source_33 t_array_source_33;
158809 l_array_source_34 t_array_source_34;
158810 l_array_source_36 t_array_source_36;
158811 l_array_source_38 t_array_source_38;
158812 l_array_source_38_meaning t_array_lookup_meaning;
158813
158814 l_array_source_4 t_array_source_4;
158815 l_array_source_5 t_array_source_5;
158816 l_array_source_11 t_array_source_11;
158817 l_array_source_18 t_array_source_18;
158818 l_array_source_22 t_array_source_22;
158819
158820 --
158821 CURSOR header_cur
158822 IS
158823 SELECT /*+ leading(xet) cardinality(xet,1) */
158824 -- Event Class Code: LDD_COST_ADJ_RCV
158825 xet.entity_id
158826 ,xet.legal_entity_id
158827 ,xet.entity_code
158828 ,xet.transaction_number
158829 ,xet.event_id
158830 ,xet.event_class_code
158831 ,xet.event_type_code
158832 ,xet.event_number
158833 ,xet.event_date
158834 ,xet.transaction_date
158835 ,xet.reference_num_1
158836 ,xet.reference_num_2
158837 ,xet.reference_num_3
158838 ,xet.reference_num_4
158839 ,xet.reference_char_1
158840 ,xet.reference_char_2
158841 ,xet.reference_char_3
158842 ,xet.reference_char_4
158843 ,xet.reference_date_1
158844 ,xet.reference_date_2
158845 ,xet.reference_date_3
158846 ,xet.reference_date_4
158847 ,xet.event_created_by
158848 ,xet.budgetary_control_flag
158849 , h1.DISTRIBUTION_TYPE source_12
158850 , fvl12.meaning source_12_meaning
158851 , h4.ENTERED_CURRENCY_CODE source_32
158852 , h4.CURRENCY_CONVERSION_DATE source_33
158853 , h4.CURRENCY_CONVERSION_RATE source_34
158854 , h4.CURRENCY_CONVERSION_TYPE source_36
158855 , h1.TRANSFER_TO_GL_INDICATOR source_38
158856 , fvl38.meaning source_38_meaning
158857 FROM xla_events_gt xet
158858 , CST_XLA_RCV_HEADERS_V h1
158859 , CST_XLA_RCV_REF_V h3
158860 , PO_DISTS_REF_V h4
158861 , fnd_lookup_values fvl12
158862 , fnd_lookup_values fvl38
158863 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
158864 and xet.event_class_code = C_EVENT_CLASS_CODE
158865 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
158866 AND h3.REF_RCV_ACCOUNTING_EVENT_ID = h1.RCV_ACCOUNTING_EVENT_ID AND h3.po_header_id = h4.po_header_id AND h3.po_distribution_id = h4.po_distribution_id AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
158867 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
158868 AND fvl12.view_application_id(+) = 700
158869 AND fvl12.language(+) = USERENV('LANG')
158870 AND fvl38.lookup_type(+) = 'YES_NO'
158871 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
158872 AND fvl38.view_application_id(+) = 0
158873 AND fvl38.language(+) = USERENV('LANG')
158874
158875 ORDER BY event_id
158876 ;
158877
158878
158879 --
158880 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
158881 IS
158882 SELECT /*+ leading(xet) cardinality(xet,1) */
158883 -- Event Class Code: LDD_COST_ADJ_RCV
158884 xet.entity_id
158885 ,xet.legal_entity_id
158886 ,xet.entity_code
158887 ,xet.transaction_number
158888 ,xet.event_id
158889 ,xet.event_class_code
158890 ,xet.event_type_code
158891 ,xet.event_number
158892 ,xet.event_date
158893 ,xet.transaction_date
158894 ,xet.reference_num_1
158895 ,xet.reference_num_2
158896 ,xet.reference_num_3
158897 ,xet.reference_num_4
158898 ,xet.reference_char_1
158899 ,xet.reference_char_2
158900 ,xet.reference_char_3
158901 ,xet.reference_char_4
158902 ,xet.reference_date_1
158903 ,xet.reference_date_2
158904 ,xet.reference_date_3
158905 ,xet.reference_date_4
158906 ,xet.event_created_by
158907 ,xet.budgetary_control_flag
158908 , l2.LINE_NUMBER
158909 , l2.CODE_COMBINATION_ID source_4
158910 , l2.RCV_ACCOUNTING_LINE_TYPE source_5
158911 , l2.DISTRIBUTION_IDENTIFIER source_11
158912 , l2.ENTERED_AMOUNT source_18
158913 , l2.ACCOUNTED_AMOUNT source_22
158914 FROM xla_events_gt xet
158915 , CST_XLA_RCV_LINES_V l2
158916 WHERE xet.event_id between x_first_event_id and x_last_event_id
158917 and xet.event_date between p_pad_start_date and p_pad_end_date
158918 and xet.event_class_code = C_EVENT_CLASS_CODE
158919 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
158920 ;
158921
158922 --
158923 BEGIN
158924 IF g_log_enabled THEN
158925 l_log_module := C_DEFAULT_MODULE||'.EventClass_265';
158926 END IF;
158927 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
158928 trace
158929 (p_msg => 'BEGIN of EventClass_265'
158930 ,p_level => C_LEVEL_PROCEDURE
158931 ,p_module => l_log_module);
158932 END IF;
158933
158934 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
158935 trace
158936 (p_msg => 'p_application_id = '||p_application_id||
158937 ' - p_base_ledger_id = '||p_base_ledger_id||
158938 ' - p_target_ledger_id = '||p_target_ledger_id||
158939 ' - p_language = '||p_language||
158940 ' - p_currency_code = '||p_currency_code||
158941 ' - p_sla_ledger_id = '||p_sla_ledger_id
158942 ,p_level => C_LEVEL_STATEMENT
158943 ,p_module => l_log_module);
158944 END IF;
158945 --
158946 -- initialze arrays
158947 --
158948 g_array_event.DELETE;
158949 l_rec_array_event := l_null_rec_array_event;
158950 --
158951 --------------------------------------
158952 -- 4262811 Initialze MPA Line Number
158953 --------------------------------------
158954 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
158955
158956 --
158957
158958 --
158959 OPEN header_cur;
158960 --
158961 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
158962 trace
158963 (p_msg => 'SQL - FETCH header_cur'
158964 ,p_level => C_LEVEL_STATEMENT
158965 ,p_module => l_log_module);
158966 END IF;
158967 --
158968 LOOP
158969 FETCH header_cur BULK COLLECT INTO
158970 l_array_entity_id
158971 , l_array_legal_entity_id
158972 , l_array_entity_code
158973 , l_array_transaction_num
158974 , l_array_event_id
158975 , l_array_class_code
158976 , l_array_event_type
158977 , l_array_event_number
158978 , l_array_event_date
158979 , l_array_transaction_date
158980 , l_array_reference_num_1
158981 , l_array_reference_num_2
158982 , l_array_reference_num_3
158983 , l_array_reference_num_4
158984 , l_array_reference_char_1
158985 , l_array_reference_char_2
158986 , l_array_reference_char_3
158987 , l_array_reference_char_4
158988 , l_array_reference_date_1
158989 , l_array_reference_date_2
158990 , l_array_reference_date_3
158991 , l_array_reference_date_4
158992 , l_array_event_created_by
158993 , l_array_budgetary_control_flag
158994 , l_array_source_12
158995 , l_array_source_12_meaning
158996 , l_array_source_32
158997 , l_array_source_33
158998 , l_array_source_34
158999 , l_array_source_36
159000 , l_array_source_38
159001 , l_array_source_38_meaning
159002 LIMIT l_rows;
159003 --
159004 IF (C_LEVEL_EVENT >= g_log_level) THEN
159005 trace
159006 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
159007 ,p_level => C_LEVEL_EVENT
159008 ,p_module => l_log_module);
159009 END IF;
159010 --
159011 EXIT WHEN l_array_entity_id.COUNT = 0;
159012
159013 -- initialize arrays
159014 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
159015 XLA_AE_LINES_PKG.g_rec_lines := NULL;
159016
159017 --
159018 -- Bug 4458708
159019 --
159020 XLA_AE_LINES_PKG.g_LineNumber := 0;
159021
159022
159023 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
159024 g_last_hdr_idx := l_array_event_id.LAST;
159025 --
159026 -- loop for the headers. Each iteration is for each header extract row
159027 -- fetched in header cursor
159028 --
159029 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
159030
159031 --
159032 -- set event info as cache for other routines to refer event attributes
159033 --
159034 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
159035 (p_application_id => p_application_id
159036 ,p_primary_ledger_id => p_primary_ledger_id
159037 ,p_base_ledger_id => p_base_ledger_id
159038 ,p_target_ledger_id => p_target_ledger_id
159039 ,p_entity_id => l_array_entity_id(hdr_idx)
159040 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
159041 ,p_entity_code => l_array_entity_code(hdr_idx)
159042 ,p_transaction_num => l_array_transaction_num(hdr_idx)
159043 ,p_event_id => l_array_event_id(hdr_idx)
159044 ,p_event_class_code => l_array_class_code(hdr_idx)
159045 ,p_event_type_code => l_array_event_type(hdr_idx)
159046 ,p_event_number => l_array_event_number(hdr_idx)
159047 ,p_event_date => l_array_event_date(hdr_idx)
159048 ,p_transaction_date => l_array_transaction_date(hdr_idx)
159049 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
159050 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
159051 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
159052 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
159053 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
159054 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
159055 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
159056 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
159057 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
159058 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
159059 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
159060 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
159061 ,p_event_created_by => l_array_event_created_by(hdr_idx)
159062 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
159063
159064 --
159065 -- set the status of entry to C_VALID (0)
159066 --
159067 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
159068
159069 --
159070 -- initialize a row for ae header
159071 --
159072 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
159073
159074 l_event_id := l_array_event_id(hdr_idx);
159075
159076 --
159077 -- storing the hdr_idx for event. May be used by line cursor.
159078 --
159079 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
159080
159081 --
159082 -- store sources from header extract. This can be improved to
159083 -- store only those sources from header extract that may be used in lines
159084 --
159085
159086 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
159087 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
159088 g_array_event(l_event_id).array_value_char('source_32') := l_array_source_32(hdr_idx);
159089 g_array_event(l_event_id).array_value_date('source_33') := l_array_source_33(hdr_idx);
159090 g_array_event(l_event_id).array_value_num('source_34') := l_array_source_34(hdr_idx);
159091 g_array_event(l_event_id).array_value_char('source_36') := l_array_source_36(hdr_idx);
159092 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
159093 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
159094
159095 --
159096 -- initilaize the status of ae headers for diffrent balance types
159097 -- the status is initialised to C_NOT_CREATED (2)
159098 --
159099 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
159100 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
159101 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
159102
159103 --
159104 -- call api to validate and store accounting attributes for header
159105 --
159106
159107 ------------------------------------------------------------
159108 -- Accrual Reversal : to get date for Standard Source (NONE)
159109 ------------------------------------------------------------
159110 l_acc_rev_gl_date_source := NULL;
159111
159112 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
159113 l_rec_acct_attrs.array_date_value(1) :=
159114 xla_ae_sources_pkg.GetSystemSourceDate(
159115 p_source_code => 'XLA_REFERENCE_DATE_1'
159116 , p_source_type_code => 'Y'
159117 , p_source_application_id => 602
159118 );
159119 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_TRANSFER_FLAG';
159120 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
159121
159122
159123 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
159124
159125 XLA_AE_HEADER_PKG.SetJeCategoryName;
159126
159127 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
159128 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
159129 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
159130 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
159131 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
159132
159133
159134 -- No header level analytical criteria
159135
159136 --
159137 --accounting attribute enhancement, bug 3612931
159138 --
159139 l_trx_reversal_source := SUBSTR(NULL, 1,30);
159140
159141 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
159142 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
159143
159144 xla_accounting_err_pkg.build_message
159145 (p_appli_s_name => 'XLA'
159146 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
159147 ,p_token_1 => 'ACCT_ATTR_NAME'
159148 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
159149 ,p_token_2 => 'PRODUCT_NAME'
159150 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
159151 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
159152 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
159153 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
159154
159155 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
159156 --
159157 -- following sets the accounting attributes needed to reverse
159158 -- accounting for a distributeion
159159 --
159160 xla_ae_lines_pkg.SetTrxReversalAttrs
159161 (p_event_id => l_event_id
159162 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
159163 ,p_trx_reversal_source => l_trx_reversal_source);
159164
159165 END IF;
159166
159167
159168 ----------------------------------------------------------------
159169 -- 4262811 - update the header statuses to invalid in need be
159170 ----------------------------------------------------------------
159171 --
159172 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
159173
159174
159175 -----------------------------------------------
159176 -- No accrual reversal for the event class/type
159177 -----------------------------------------------
159178 ----------------------------------------------------------------
159179
159180 --
159181 -- this ends the header loop iteration for one bulk fetch
159182 --
159183 END LOOP;
159184
159185 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
159186 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
159187
159188 --
159189 -- insert dummy rows into lines gt table that were created due to
159190 -- transaction reversals
159191 --
159192 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
159193 l_result := XLA_AE_LINES_PKG.InsertLines;
159194 END IF;
159195
159196 --
159197 -- reset the temp_line_num for each set of events fetched from header
159198 -- cursor rather than doing it for each new event in line cursor
159199 -- Bug 3939231
159200 --
159201 xla_ae_lines_pkg.g_temp_line_num := 0;
159202
159203
159204
159205 --
159206 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
159207 --
159208 --
159209 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
159210
159211 trace
159212 (p_msg => 'SQL - FETCH line_cur'
159213 ,p_level => C_LEVEL_STATEMENT
159214 ,p_module => l_log_module);
159215
159216 END IF;
159217 --
159218 --
159219 LOOP
159220 --
159221 FETCH line_cur BULK COLLECT INTO
159222 l_array_entity_id
159223 , l_array_legal_entity_id
159224 , l_array_entity_code
159225 , l_array_transaction_num
159226 , l_array_event_id
159227 , l_array_class_code
159228 , l_array_event_type
159229 , l_array_event_number
159230 , l_array_event_date
159231 , l_array_transaction_date
159232 , l_array_reference_num_1
159233 , l_array_reference_num_2
159234 , l_array_reference_num_3
159235 , l_array_reference_num_4
159236 , l_array_reference_char_1
159237 , l_array_reference_char_2
159238 , l_array_reference_char_3
159239 , l_array_reference_char_4
159240 , l_array_reference_date_1
159241 , l_array_reference_date_2
159242 , l_array_reference_date_3
159243 , l_array_reference_date_4
159244 , l_array_event_created_by
159245 , l_array_budgetary_control_flag
159246 , l_array_extract_line_num
159247 , l_array_source_4
159248 , l_array_source_5
159249 , l_array_source_11
159250 , l_array_source_18
159251 , l_array_source_22
159252 LIMIT l_rows;
159253
159254 --
159255 IF (C_LEVEL_EVENT >= g_log_level) THEN
159256 trace
159257 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
159258 ,p_level => C_LEVEL_EVENT
159259 ,p_module => l_log_module);
159260 END IF;
159261 --
159262 EXIT WHEN l_array_entity_id.count = 0;
159263
159264 XLA_AE_LINES_PKG.g_rec_lines := null;
159265
159266 --
159267 -- Bug 4458708
159268 --
159269 XLA_AE_LINES_PKG.g_LineNumber := 0;
159270 --
159271 --
159272
159273 FOR Idx IN 1..l_array_event_id.count LOOP
159274 --
159275 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
159276 --
159277 l_event_id := l_array_event_id(idx); -- 5648433
159278
159279 --
159280 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
159281 --
159282
159283 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
159284 (g_array_event(l_event_id).array_value_num('header_index'))
159285 ,'N'
159286 ) <> 'Y'
159287 THEN
159288 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
159289 trace
159290 (p_msg => 'Trancaction revesal option is not Y '
159291 ,p_level => C_LEVEL_STATEMENT
159292 ,p_module => l_log_module);
159293 END IF;
159294
159295 --
159296 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
159297 --
159298 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
159299 --
159300 -- set event info as cache for other routines to refer event attributes
159301 --
159302
159303 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
159304 l_previous_event_id := l_event_id;
159305
159306 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
159307 (p_application_id => p_application_id
159308 ,p_primary_ledger_id => p_primary_ledger_id
159309 ,p_base_ledger_id => p_base_ledger_id
159310 ,p_target_ledger_id => p_target_ledger_id
159311 ,p_entity_id => l_array_entity_id(Idx)
159312 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
159313 ,p_entity_code => l_array_entity_code(Idx)
159314 ,p_transaction_num => l_array_transaction_num(Idx)
159315 ,p_event_id => l_array_event_id(Idx)
159316 ,p_event_class_code => l_array_class_code(Idx)
159317 ,p_event_type_code => l_array_event_type(Idx)
159318 ,p_event_number => l_array_event_number(Idx)
159319 ,p_event_date => l_array_event_date(Idx)
159320 ,p_transaction_date => l_array_transaction_date(Idx)
159321 ,p_reference_num_1 => l_array_reference_num_1(Idx)
159322 ,p_reference_num_2 => l_array_reference_num_2(Idx)
159323 ,p_reference_num_3 => l_array_reference_num_3(Idx)
159324 ,p_reference_num_4 => l_array_reference_num_4(Idx)
159325 ,p_reference_char_1 => l_array_reference_char_1(Idx)
159326 ,p_reference_char_2 => l_array_reference_char_2(Idx)
159327 ,p_reference_char_3 => l_array_reference_char_3(Idx)
159328 ,p_reference_char_4 => l_array_reference_char_4(Idx)
159329 ,p_reference_date_1 => l_array_reference_date_1(Idx)
159330 ,p_reference_date_2 => l_array_reference_date_2(Idx)
159331 ,p_reference_date_3 => l_array_reference_date_3(Idx)
159332 ,p_reference_date_4 => l_array_reference_date_4(Idx)
159333 ,p_event_created_by => l_array_event_created_by(Idx)
159334 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
159335 --
159336 END IF;
159337
159338
159339
159340 --
159341 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
159342
159343 l_acct_reversal_source := SUBSTR(NULL, 1,30);
159344
159345 IF l_continue_with_lines THEN
159346 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
159347 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
159348
159349 xla_accounting_err_pkg.build_message
159350 (p_appli_s_name => 'XLA'
159351 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
159352 ,p_token_1 => 'LINE_NUMBER'
159353 ,p_value_1 => l_array_extract_line_num(Idx)
159354 ,p_token_2 => 'PRODUCT_NAME'
159355 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
159356 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
159357 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
159358 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
159359
159360 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
159361 --
159362 -- following sets the accounting attributes needed to reverse
159363 -- accounting for a distributeion
159364 --
159365
159366 --
159367 -- 5217187
159368 --
159369 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
159370 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
159371 g_array_event(l_event_id).array_value_num('header_index'));
159372 --
159373 --
159374
159375 -- No reversal code generated
159376
159377 xla_ae_lines_pkg.SetAcctReversalAttrs
159378 (p_event_id => l_event_id
159379 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
159380 ,p_calculate_acctd_flag => l_calculate_acctd_flag
159381 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
159382 END IF;
159383
159384 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
159385 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
159386
159387 --
159388 AcctLineType_155 (
159389 p_application_id => p_application_id
159390 ,p_event_id => l_event_id
159391 ,p_calculate_acctd_flag => l_calculate_acctd_flag
159392 ,p_calculate_g_l_flag => l_calculate_g_l_flag
159393 ,p_actual_flag => l_actual_flag
159394 ,p_balance_type_code => l_balance_type_code
159395 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
159396
159397 , p_source_4 => l_array_source_4(Idx)
159398 , p_source_5 => l_array_source_5(Idx)
159399 , p_source_11 => l_array_source_11(Idx)
159400 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
159401 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
159402 , p_source_18 => l_array_source_18(Idx)
159403 , p_source_22 => l_array_source_22(Idx)
159404 , p_source_32 => g_array_event(l_event_id).array_value_char('source_32')
159405 , p_source_33 => g_array_event(l_event_id).array_value_date('source_33')
159406 , p_source_34 => g_array_event(l_event_id).array_value_num('source_34')
159407 , p_source_36 => g_array_event(l_event_id).array_value_char('source_36')
159408 );
159409 If(l_balance_type_code = 'A') THEN
159410 l_actual_gain_loss_ref := l_gain_or_loss_ref;
159411 END IF;
159412
159413 --
159414
159415
159416 --
159417 AcctLineType_230 (
159418 p_application_id => p_application_id
159419 ,p_event_id => l_event_id
159420 ,p_calculate_acctd_flag => l_calculate_acctd_flag
159421 ,p_calculate_g_l_flag => l_calculate_g_l_flag
159422 ,p_actual_flag => l_actual_flag
159423 ,p_balance_type_code => l_balance_type_code
159424 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
159425
159426 , p_source_4 => l_array_source_4(Idx)
159427 , p_source_5 => l_array_source_5(Idx)
159428 , p_source_11 => l_array_source_11(Idx)
159429 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
159430 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
159431 , p_source_18 => l_array_source_18(Idx)
159432 , p_source_22 => l_array_source_22(Idx)
159433 , p_source_32 => g_array_event(l_event_id).array_value_char('source_32')
159434 , p_source_33 => g_array_event(l_event_id).array_value_date('source_33')
159435 , p_source_34 => g_array_event(l_event_id).array_value_num('source_34')
159436 , p_source_36 => g_array_event(l_event_id).array_value_char('source_36')
159437 );
159438 If(l_balance_type_code = 'A') THEN
159439 l_actual_gain_loss_ref := l_gain_or_loss_ref;
159440 END IF;
159441
159442 --
159443
159444 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
159445 -- or secondary ledger that has different currency with primary
159446 -- or alc that is calculated by sla
159447 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
159448 (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'))
159449
159450 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
159451 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
159452 AND (l_actual_flag = 'A')) THEN
159453 XLA_AE_LINES_PKG.CreateGainOrLossLines(
159454 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
159455 ,p_application_id => p_application_id
159456 ,p_amb_context_code => 'DEFAULT'
159457 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
159458 ,p_event_class_code => C_EVENT_CLASS_CODE
159459 ,p_event_type_code => C_EVENT_TYPE_CODE
159460
159461 ,p_gain_ccid => -1
159462 ,p_loss_ccid => -1
159463
159464 ,p_actual_flag => l_actual_flag
159465 ,p_enc_flag => null
159466 ,p_actual_g_l_ref => l_actual_gain_loss_ref
159467 ,p_enc_g_l_ref => null
159468 );
159469 END IF;
159470 END IF;
159471 END IF;
159472
159473 ELSE
159474 --
159475 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
159476 --
159477 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
159478 trace
159479 (p_msg => 'Trancaction revesal option is Y'
159480 ,p_level => C_LEVEL_STATEMENT
159481 ,p_module => l_log_module);
159482 END IF;
159483 END IF;
159484
159485 END LOOP;
159486 l_result := XLA_AE_LINES_PKG.InsertLines ;
159487 end loop;
159488 close line_cur;
159489
159490
159491 --
159492 -- insert headers into xla_ae_headers_gt table
159493 --
159494 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
159495
159496 -- insert into errors table here.
159497
159498 END LOOP;
159499
159500 --
159501 -- 4865292
159502 --
159503 -- Compare g_hdr_extract_count with event count in
159504 -- CreateHeadersAndLines.
159505 --
159506 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
159507
159508 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
159509 trace (p_msg => '# rows extracted from header extract objects '
159510 || ' (running total): '
159511 || g_hdr_extract_count
159512 ,p_level => C_LEVEL_STATEMENT
159513 ,p_module => l_log_module);
159514 END IF;
159515
159516 CLOSE header_cur;
159517 --
159518
159519 --
159520 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
159521 trace
159522 (p_msg => 'END of EventClass_265'
159523 ,p_level => C_LEVEL_PROCEDURE
159524 ,p_module => l_log_module);
159525 END IF;
159526 --
159527 RETURN l_result;
159528 EXCEPTION
159529 WHEN xla_exceptions_pkg.application_exception THEN
159530
159531 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
159532
159533
159534 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
159535
159536 RAISE;
159537
159538 WHEN NO_DATA_FOUND THEN
159539
159540 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
159541 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
159542
159543 FOR header_record IN header_cur
159544 LOOP
159545 l_array_header_events(header_record.event_id) := header_record.event_id;
159546 END LOOP;
159547
159548 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
159549 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
159550
159551 fnd_file.put_line(fnd_file.LOG, ' ');
159552 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
159553 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
159554 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
159555
159556 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
159557 LOOP
159558 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
159559 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
159560 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
159561 END IF;
159562 END LOOP;
159563
159564 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
159565 fnd_file.put_line(fnd_file.LOG, ' ');
159566
159567
159568 xla_exceptions_pkg.raise_message
159569 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_265');
159570
159571
159572 WHEN OTHERS THEN
159573 xla_exceptions_pkg.raise_message
159574 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_265');
159575 END EventClass_265;
159576 --
159577
159578 ---------------------------------------
159579 --
159580 -- PRIVATE PROCEDURE
159581 -- insert_sources_266
159582 --
159583 ----------------------------------------
159584 --
159585 PROCEDURE insert_sources_266(
159586 p_target_ledger_id IN NUMBER
159587 , p_language IN VARCHAR2
159588 , p_sla_ledger_id IN NUMBER
159589 , p_pad_start_date IN DATE
159590 , p_pad_end_date IN DATE
159591 )
159592 IS
159593
159594 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'LOG_INTERCOMPANY_ALL';
159595 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'LOG_INTERCOMPANY';
159596 p_apps_owner VARCHAR2(30);
159597 l_log_module VARCHAR2(240);
159598 BEGIN
159599 IF g_log_enabled THEN
159600 l_log_module := C_DEFAULT_MODULE||'.insert_sources_266';
159601 END IF;
159602 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
159603
159604 trace
159605 (p_msg => 'BEGIN of insert_sources_266'
159606 ,p_level => C_LEVEL_PROCEDURE
159607 ,p_module => l_log_module);
159608
159609 END IF;
159610
159611 -- select APPS owner
159612 SELECT oracle_username
159613 INTO p_apps_owner
159614 FROM fnd_oracle_userid
159615 WHERE read_only_flag = 'U'
159616 ;
159617
159618 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
159619 trace
159620 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
159621 ' - p_language = '||p_language||
159622 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
159623 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
159624 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
159625 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
159626 ,p_level => C_LEVEL_STATEMENT
159627 ,p_module => l_log_module);
159628 END IF;
159629
159630
159631 --
159632 INSERT INTO xla_diag_sources --hdr2
159633 (
159634 event_id
159635 , ledger_id
159636 , sla_ledger_id
159637 , description_language
159638 , object_name
159639 , object_type_code
159640 , line_number
159641 , source_application_id
159642 , source_type_code
159643 , source_code
159644 , source_value
159645 , source_meaning
159646 , created_by
159647 , creation_date
159648 , last_update_date
159649 , last_updated_by
159650 , last_update_login
159651 , program_update_date
159652 , program_application_id
159653 , program_id
159654 , request_id
159655 )
159656 SELECT
159657 event_id
159658 , p_target_ledger_id
159659 , p_sla_ledger_id
159660 , p_language
159661 , object_name
159662 , object_type_code
159663 , line_number
159664 , source_application_id
159665 , source_type_code
159666 , source_code
159667 , SUBSTR(source_value ,1,1996)
159668 , SUBSTR(source_meaning ,1,200)
159669 , xla_environment_pkg.g_Usr_Id
159670 , TRUNC(SYSDATE)
159671 , TRUNC(SYSDATE)
159672 , xla_environment_pkg.g_Usr_Id
159673 , xla_environment_pkg.g_Login_Id
159674 , TRUNC(SYSDATE)
159675 , xla_environment_pkg.g_Prog_Appl_Id
159676 , xla_environment_pkg.g_Prog_Id
159677 , xla_environment_pkg.g_Req_Id
159678 FROM (
159679 SELECT xet.event_id event_id
159680 , 0 line_number
159681 , CASE r
159682 WHEN 1 THEN 'CST_XLA_INV_HEADERS_V'
159683 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V'
159684 WHEN 3 THEN 'CST_XLA_INV_HEADERS_V'
159685
159686 ELSE null
159687 END object_name
159688 , CASE r
159689 WHEN 1 THEN 'HEADER'
159690 WHEN 2 THEN 'HEADER'
159691 WHEN 3 THEN 'HEADER'
159692
159693 ELSE null
159694 END object_type_code
159695 , CASE r
159696 WHEN 1 THEN '707'
159697 WHEN 2 THEN '707'
159698 WHEN 3 THEN '707'
159699
159700 ELSE null
159701 END source_application_id
159702 , 'S' source_type_code
159703 , CASE r
159704 WHEN 1 THEN 'DISTRIBUTION_TYPE'
159705 WHEN 2 THEN 'TRANSACTION_ACTION_ID'
159706 WHEN 3 THEN 'TRANSFER_TO_GL_INDICATOR'
159707
159708 ELSE null
159709 END source_code
159710 , CASE r
159711 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
159712 WHEN 2 THEN TO_CHAR(h1.TRANSACTION_ACTION_ID)
159713 WHEN 3 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
159714
159715 ELSE null
159716 END source_value
159717 , CASE r
159718 WHEN 1 THEN fvl12.meaning
159719 WHEN 2 THEN fvl35.meaning
159720 WHEN 3 THEN fvl38.meaning
159721
159722 ELSE null
159723 END source_meaning
159724 FROM xla_events_gt xet
159725 , CST_XLA_INV_HEADERS_V h1
159726 , fnd_lookup_values fvl12
159727 , fnd_lookup_values fvl35
159728 , fnd_lookup_values fvl38
159729 ,(select rownum r from all_objects where rownum <= 3 and owner = p_apps_owner)
159730 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
159731 AND xet.event_class_code = C_EVENT_CLASS_CODE
159732 AND h1.event_id = xet.event_id
159733 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
159734 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
159735 AND fvl12.view_application_id(+) = 700
159736 AND fvl12.language(+) = USERENV('LANG')
159737 AND fvl35.lookup_type(+) = 'MTL_TRANSACTION_ACTION'
159738 AND fvl35.lookup_code(+) = h1.TRANSACTION_ACTION_ID
159739 AND fvl35.view_application_id(+) = 700
159740 AND fvl35.language(+) = USERENV('LANG')
159741 AND fvl38.lookup_type(+) = 'YES_NO'
159742 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
159743 AND fvl38.view_application_id(+) = 0
159744 AND fvl38.language(+) = USERENV('LANG')
159745
159746 )
159747 ;
159748 --
159749 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
159750
159751 trace
159752 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
159753 ,p_level => C_LEVEL_STATEMENT
159754 ,p_module => l_log_module);
159755
159756 END IF;
159757 --
159758
159759
159760
159761 --
159762 INSERT INTO xla_diag_sources --line2
159763 (
159764 event_id
159765 , ledger_id
159766 , sla_ledger_id
159767 , description_language
159768 , object_name
159769 , object_type_code
159770 , line_number
159771 , source_application_id
159772 , source_type_code
159773 , source_code
159774 , source_value
159775 , source_meaning
159776 , created_by
159777 , creation_date
159778 , last_update_date
159779 , last_updated_by
159780 , last_update_login
159781 , program_update_date
159782 , program_application_id
159783 , program_id
159784 , request_id
159785 )
159786 SELECT event_id
159787 , p_target_ledger_id
159788 , p_sla_ledger_id
159789 , p_language
159790 , object_name
159791 , object_type_code
159792 , line_number
159793 , source_application_id
159794 , source_type_code
159795 , source_code
159796 , SUBSTR(source_value,1,1996)
159797 , SUBSTR(source_meaning ,1,200)
159798 , xla_environment_pkg.g_Usr_Id
159799 , TRUNC(SYSDATE)
159800 , TRUNC(SYSDATE)
159801 , xla_environment_pkg.g_Usr_Id
159802 , xla_environment_pkg.g_Login_Id
159803 , TRUNC(SYSDATE)
159804 , xla_environment_pkg.g_Prog_Appl_Id
159805 , xla_environment_pkg.g_Prog_Id
159806 , xla_environment_pkg.g_Req_Id
159807 FROM (
159808 SELECT xet.event_id event_id
159809 , l2.line_number line_number
159810 , CASE r
159811 WHEN 1 THEN 'CST_XLA_INV_LINES_V'
159812 WHEN 2 THEN 'CST_XLA_INV_LINES_V'
159813 WHEN 3 THEN 'CST_XLA_INV_LINES_V'
159814 WHEN 4 THEN 'CST_XLA_INV_LINES_V'
159815 WHEN 5 THEN 'CST_XLA_INV_LINES_V'
159816 WHEN 6 THEN 'CST_XLA_INV_LINES_V'
159817 WHEN 7 THEN 'CST_XLA_INV_LINES_V'
159818 WHEN 8 THEN 'CST_XLA_INV_LINES_V'
159819 WHEN 9 THEN 'CST_XLA_INV_LINES_V'
159820
159821 ELSE null
159822 END object_name
159823 , CASE r
159824 WHEN 1 THEN 'LINE'
159825 WHEN 2 THEN 'LINE'
159826 WHEN 3 THEN 'LINE'
159827 WHEN 4 THEN 'LINE'
159828 WHEN 5 THEN 'LINE'
159829 WHEN 6 THEN 'LINE'
159830 WHEN 7 THEN 'LINE'
159831 WHEN 8 THEN 'LINE'
159832 WHEN 9 THEN 'LINE'
159833
159834 ELSE null
159835 END object_type_code
159836 , CASE r
159837 WHEN 1 THEN '707'
159838 WHEN 2 THEN '707'
159839 WHEN 3 THEN '707'
159840 WHEN 4 THEN '707'
159841 WHEN 5 THEN '707'
159842 WHEN 6 THEN '707'
159843 WHEN 7 THEN '707'
159844 WHEN 8 THEN '707'
159845 WHEN 9 THEN '707'
159846
159847 ELSE null
159848 END source_application_id
159849 , 'S' source_type_code
159850 , CASE r
159851 WHEN 1 THEN 'CODE_COMBINATION_ID'
159852 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER'
159853 WHEN 3 THEN 'CURRENCY_CODE'
159854 WHEN 4 THEN 'ENTERED_AMOUNT'
159855 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE'
159856 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE'
159857 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE'
159858 WHEN 8 THEN 'ACCOUNTED_AMOUNT'
159859 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE'
159860
159861 ELSE null
159862 END source_code
159863 , CASE r
159864 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
159865 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
159866 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
159867 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
159868 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
159869 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
159870 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
159871 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
159872 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
159873
159874 ELSE null
159875 END source_value
159876 , null source_meaning
159877 FROM xla_events_gt xet
159878 , CST_XLA_INV_LINES_V l2
159879 , (select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
159880 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
159881 AND xet.event_class_code = C_EVENT_CLASS_CODE
159882 AND l2.event_id = xet.event_id
159883
159884 )
159885 ;
159886 --
159887 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
159888
159889 trace
159890 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
159891 ,p_level => C_LEVEL_STATEMENT
159892 ,p_module => l_log_module);
159893
159894 END IF;
159895
159896
159897 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
159898 trace
159899 (p_msg => 'END of insert_sources_266'
159900 ,p_level => C_LEVEL_PROCEDURE
159901 ,p_module => l_log_module);
159902 END IF;
159903 EXCEPTION
159904 WHEN xla_exceptions_pkg.application_exception THEN
159905 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
159906 trace
159907 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
159908 ,p_level => C_LEVEL_EXCEPTION
159909 ,p_module => l_log_module);
159910 END IF;
159911 RAISE;
159912 WHEN OTHERS THEN
159913 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
159914 trace
159915 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
159916 ,p_level => C_LEVEL_EXCEPTION
159917 ,p_module => l_log_module);
159918 END IF;
159919 xla_exceptions_pkg.raise_message
159920 (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_266');
159921 END insert_sources_266;
159922 --
159923
159924 ---------------------------------------
159925 --
159926 -- PRIVATE FUNCTION
159927 -- EventClass_266
159928 --
159929 ----------------------------------------
159930 --
159931 FUNCTION EventClass_266
159932 (p_application_id IN NUMBER
159933 ,p_base_ledger_id IN NUMBER
159934 ,p_target_ledger_id IN NUMBER
159935 ,p_language IN VARCHAR2
159936 ,p_currency_code IN VARCHAR2
159937 ,p_sla_ledger_id IN NUMBER
159938 ,p_pad_start_date IN DATE
159939 ,p_pad_end_date IN DATE
159940 ,p_primary_ledger_id IN NUMBER)
159941 RETURN BOOLEAN IS
159942 --
159943 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'LOG_INTERCOMPANY_ALL';
159944 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'LOG_INTERCOMPANY';
159945
159946 l_calculate_acctd_flag VARCHAR2(1) :='N';
159947 l_calculate_g_l_flag VARCHAR2(1) :='N';
159948 --
159949 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
159950 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
159951 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
159952 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
159953 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
159954 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
159955 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
159956 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
159957 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
159958 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
159959 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
159960 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
159961 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
159962 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
159963 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
159964 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
159965 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
159966 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
159967 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
159968 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
159969 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
159970 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
159971 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
159972 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
159973 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
159974 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
159975
159976 l_event_id NUMBER;
159977 l_previous_event_id NUMBER;
159978 l_first_event_id NUMBER;
159979 l_last_event_id NUMBER;
159980
159981 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
159982 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
159983 --
159984 --
159985 l_result BOOLEAN := TRUE;
159986 l_rows NUMBER := 1000;
159987 l_event_type_name VARCHAR2(80) := 'All';
159988 l_event_class_name VARCHAR2(80) := 'Logical Intercompany';
159989 l_description VARCHAR2(4000);
159990 l_transaction_reversal NUMBER;
159991 l_ae_header_id NUMBER;
159992 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
159993 l_log_module VARCHAR2(240);
159994 --
159995 l_acct_reversal_source VARCHAR2(30);
159996 l_trx_reversal_source VARCHAR2(30);
159997
159998 l_continue_with_lines BOOLEAN := TRUE;
159999 --
160000 l_acc_rev_gl_date_source DATE; -- 4262811
160001 --
160002 type t_array_event_id is table of number index by binary_integer;
160003
160004 l_rec_array_event t_rec_array_event;
160005 l_null_rec_array_event t_rec_array_event;
160006 l_array_ae_header_id xla_number_array_type;
160007 l_actual_flag VARCHAR2(1) := NULL;
160008 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
160009 l_balance_type_code VARCHAR2(1) :=NULL;
160010 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
160011
160012 --
160013 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
160014 --
160015
160016 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
160017 TYPE t_array_source_35 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ACTION_ID%TYPE INDEX BY BINARY_INTEGER;
160018 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
160019
160020 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
160021 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
160022 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
160023 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
160024 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
160025 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
160026 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
160027 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
160028 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
160029
160030 l_array_source_12 t_array_source_12;
160031 l_array_source_12_meaning t_array_lookup_meaning;
160032 l_array_source_35 t_array_source_35;
160033 l_array_source_35_meaning t_array_lookup_meaning;
160034 l_array_source_38 t_array_source_38;
160035 l_array_source_38_meaning t_array_lookup_meaning;
160036
160037 l_array_source_4 t_array_source_4;
160038 l_array_source_11 t_array_source_11;
160039 l_array_source_15 t_array_source_15;
160040 l_array_source_18 t_array_source_18;
160041 l_array_source_19 t_array_source_19;
160042 l_array_source_20 t_array_source_20;
160043 l_array_source_21 t_array_source_21;
160044 l_array_source_22 t_array_source_22;
160045 l_array_source_24 t_array_source_24;
160046
160047 --
160048 CURSOR header_cur
160049 IS
160050 SELECT /*+ leading(xet) cardinality(xet,1) */
160051 -- Event Class Code: LOG_INTERCOMPANY
160052 xet.entity_id
160053 ,xet.legal_entity_id
160054 ,xet.entity_code
160055 ,xet.transaction_number
160056 ,xet.event_id
160057 ,xet.event_class_code
160058 ,xet.event_type_code
160059 ,xet.event_number
160060 ,xet.event_date
160061 ,xet.transaction_date
160062 ,xet.reference_num_1
160063 ,xet.reference_num_2
160064 ,xet.reference_num_3
160065 ,xet.reference_num_4
160066 ,xet.reference_char_1
160067 ,xet.reference_char_2
160068 ,xet.reference_char_3
160069 ,xet.reference_char_4
160070 ,xet.reference_date_1
160071 ,xet.reference_date_2
160072 ,xet.reference_date_3
160073 ,xet.reference_date_4
160074 ,xet.event_created_by
160075 ,xet.budgetary_control_flag
160076 , h1.DISTRIBUTION_TYPE source_12
160077 , fvl12.meaning source_12_meaning
160078 , h1.TRANSACTION_ACTION_ID source_35
160079 , fvl35.meaning source_35_meaning
160080 , h1.TRANSFER_TO_GL_INDICATOR source_38
160081 , fvl38.meaning source_38_meaning
160082 FROM xla_events_gt xet
160083 , CST_XLA_INV_HEADERS_V h1
160084 , fnd_lookup_values fvl12
160085 , fnd_lookup_values fvl35
160086 , fnd_lookup_values fvl38
160087 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
160088 and xet.event_class_code = C_EVENT_CLASS_CODE
160089 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
160090 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
160091 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
160092 AND fvl12.view_application_id(+) = 700
160093 AND fvl12.language(+) = USERENV('LANG')
160094 AND fvl35.lookup_type(+) = 'MTL_TRANSACTION_ACTION'
160095 AND fvl35.lookup_code(+) = h1.TRANSACTION_ACTION_ID
160096 AND fvl35.view_application_id(+) = 700
160097 AND fvl35.language(+) = USERENV('LANG')
160098 AND fvl38.lookup_type(+) = 'YES_NO'
160099 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
160100 AND fvl38.view_application_id(+) = 0
160101 AND fvl38.language(+) = USERENV('LANG')
160102
160103 ORDER BY event_id
160104 ;
160105
160106
160107 --
160108 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
160109 IS
160110 SELECT /*+ leading(xet) cardinality(xet,1) */
160111 -- Event Class Code: LOG_INTERCOMPANY
160112 xet.entity_id
160113 ,xet.legal_entity_id
160114 ,xet.entity_code
160115 ,xet.transaction_number
160116 ,xet.event_id
160117 ,xet.event_class_code
160118 ,xet.event_type_code
160119 ,xet.event_number
160120 ,xet.event_date
160121 ,xet.transaction_date
160122 ,xet.reference_num_1
160123 ,xet.reference_num_2
160124 ,xet.reference_num_3
160125 ,xet.reference_num_4
160126 ,xet.reference_char_1
160127 ,xet.reference_char_2
160128 ,xet.reference_char_3
160129 ,xet.reference_char_4
160130 ,xet.reference_date_1
160131 ,xet.reference_date_2
160132 ,xet.reference_date_3
160133 ,xet.reference_date_4
160134 ,xet.event_created_by
160135 ,xet.budgetary_control_flag
160136 , l2.LINE_NUMBER
160137 , l2.CODE_COMBINATION_ID source_4
160138 , l2.DISTRIBUTION_IDENTIFIER source_11
160139 , l2.CURRENCY_CODE source_15
160140 , l2.ENTERED_AMOUNT source_18
160141 , l2.CURRENCY_CONVERSION_DATE source_19
160142 , l2.CURRENCY_CONVERSION_RATE source_20
160143 , l2.CURRENCY_CONVERSION_TYPE source_21
160144 , l2.ACCOUNTED_AMOUNT source_22
160145 , l2.ACCOUNTING_LINE_TYPE_CODE source_24
160146 FROM xla_events_gt xet
160147 , CST_XLA_INV_LINES_V l2
160148 WHERE xet.event_id between x_first_event_id and x_last_event_id
160149 and xet.event_date between p_pad_start_date and p_pad_end_date
160150 and xet.event_class_code = C_EVENT_CLASS_CODE
160151 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
160152 ;
160153
160154 --
160155 BEGIN
160156 IF g_log_enabled THEN
160157 l_log_module := C_DEFAULT_MODULE||'.EventClass_266';
160158 END IF;
160159 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
160160 trace
160161 (p_msg => 'BEGIN of EventClass_266'
160162 ,p_level => C_LEVEL_PROCEDURE
160163 ,p_module => l_log_module);
160164 END IF;
160165
160166 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
160167 trace
160168 (p_msg => 'p_application_id = '||p_application_id||
160169 ' - p_base_ledger_id = '||p_base_ledger_id||
160170 ' - p_target_ledger_id = '||p_target_ledger_id||
160171 ' - p_language = '||p_language||
160172 ' - p_currency_code = '||p_currency_code||
160173 ' - p_sla_ledger_id = '||p_sla_ledger_id
160174 ,p_level => C_LEVEL_STATEMENT
160175 ,p_module => l_log_module);
160176 END IF;
160177 --
160178 -- initialze arrays
160179 --
160180 g_array_event.DELETE;
160181 l_rec_array_event := l_null_rec_array_event;
160182 --
160183 --------------------------------------
160184 -- 4262811 Initialze MPA Line Number
160185 --------------------------------------
160186 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
160187
160188 --
160189
160190 --
160191 OPEN header_cur;
160192 --
160193 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
160194 trace
160195 (p_msg => 'SQL - FETCH header_cur'
160196 ,p_level => C_LEVEL_STATEMENT
160197 ,p_module => l_log_module);
160198 END IF;
160199 --
160200 LOOP
160201 FETCH header_cur BULK COLLECT INTO
160202 l_array_entity_id
160203 , l_array_legal_entity_id
160204 , l_array_entity_code
160205 , l_array_transaction_num
160206 , l_array_event_id
160207 , l_array_class_code
160208 , l_array_event_type
160209 , l_array_event_number
160210 , l_array_event_date
160211 , l_array_transaction_date
160212 , l_array_reference_num_1
160213 , l_array_reference_num_2
160214 , l_array_reference_num_3
160215 , l_array_reference_num_4
160216 , l_array_reference_char_1
160217 , l_array_reference_char_2
160218 , l_array_reference_char_3
160219 , l_array_reference_char_4
160220 , l_array_reference_date_1
160221 , l_array_reference_date_2
160222 , l_array_reference_date_3
160223 , l_array_reference_date_4
160224 , l_array_event_created_by
160225 , l_array_budgetary_control_flag
160226 , l_array_source_12
160227 , l_array_source_12_meaning
160228 , l_array_source_35
160229 , l_array_source_35_meaning
160230 , l_array_source_38
160231 , l_array_source_38_meaning
160232 LIMIT l_rows;
160233 --
160234 IF (C_LEVEL_EVENT >= g_log_level) THEN
160235 trace
160236 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
160237 ,p_level => C_LEVEL_EVENT
160238 ,p_module => l_log_module);
160239 END IF;
160240 --
160241 EXIT WHEN l_array_entity_id.COUNT = 0;
160242
160243 -- initialize arrays
160244 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
160245 XLA_AE_LINES_PKG.g_rec_lines := NULL;
160246
160247 --
160248 -- Bug 4458708
160249 --
160250 XLA_AE_LINES_PKG.g_LineNumber := 0;
160251
160252
160253 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
160254 g_last_hdr_idx := l_array_event_id.LAST;
160255 --
160256 -- loop for the headers. Each iteration is for each header extract row
160257 -- fetched in header cursor
160258 --
160259 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
160260
160261 --
160262 -- set event info as cache for other routines to refer event attributes
160263 --
160264 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
160265 (p_application_id => p_application_id
160266 ,p_primary_ledger_id => p_primary_ledger_id
160267 ,p_base_ledger_id => p_base_ledger_id
160268 ,p_target_ledger_id => p_target_ledger_id
160269 ,p_entity_id => l_array_entity_id(hdr_idx)
160270 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
160271 ,p_entity_code => l_array_entity_code(hdr_idx)
160272 ,p_transaction_num => l_array_transaction_num(hdr_idx)
160273 ,p_event_id => l_array_event_id(hdr_idx)
160274 ,p_event_class_code => l_array_class_code(hdr_idx)
160275 ,p_event_type_code => l_array_event_type(hdr_idx)
160276 ,p_event_number => l_array_event_number(hdr_idx)
160277 ,p_event_date => l_array_event_date(hdr_idx)
160278 ,p_transaction_date => l_array_transaction_date(hdr_idx)
160279 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
160280 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
160281 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
160282 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
160283 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
160284 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
160285 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
160286 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
160287 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
160288 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
160289 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
160290 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
160291 ,p_event_created_by => l_array_event_created_by(hdr_idx)
160292 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
160293
160294 --
160295 -- set the status of entry to C_VALID (0)
160296 --
160297 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
160298
160299 --
160300 -- initialize a row for ae header
160301 --
160302 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
160303
160304 l_event_id := l_array_event_id(hdr_idx);
160305
160306 --
160307 -- storing the hdr_idx for event. May be used by line cursor.
160308 --
160309 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
160310
160311 --
160312 -- store sources from header extract. This can be improved to
160313 -- store only those sources from header extract that may be used in lines
160314 --
160315
160316 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
160317 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
160318 g_array_event(l_event_id).array_value_num('source_35') := l_array_source_35(hdr_idx);
160319 g_array_event(l_event_id).array_value_char('source_35_meaning') := l_array_source_35_meaning(hdr_idx);
160320 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
160321 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
160322
160323 --
160324 -- initilaize the status of ae headers for diffrent balance types
160325 -- the status is initialised to C_NOT_CREATED (2)
160326 --
160327 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
160328 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
160329 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
160330
160331 --
160332 -- call api to validate and store accounting attributes for header
160333 --
160334
160335 ------------------------------------------------------------
160336 -- Accrual Reversal : to get date for Standard Source (NONE)
160337 ------------------------------------------------------------
160338 l_acc_rev_gl_date_source := NULL;
160339
160340 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
160341 l_rec_acct_attrs.array_date_value(1) :=
160342 xla_ae_sources_pkg.GetSystemSourceDate(
160343 p_source_code => 'XLA_REFERENCE_DATE_1'
160344 , p_source_type_code => 'Y'
160345 , p_source_application_id => 602
160346 );
160347 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_TRANSFER_FLAG';
160348 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
160349
160350
160351 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
160352
160353 XLA_AE_HEADER_PKG.SetJeCategoryName;
160354
160355 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
160356 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
160357 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
160358 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
160359 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
160360
160361
160362 -- No header level analytical criteria
160363
160364 --
160365 --accounting attribute enhancement, bug 3612931
160366 --
160367 l_trx_reversal_source := SUBSTR(NULL, 1,30);
160368
160369 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
160370 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
160371
160372 xla_accounting_err_pkg.build_message
160373 (p_appli_s_name => 'XLA'
160374 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
160375 ,p_token_1 => 'ACCT_ATTR_NAME'
160376 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
160377 ,p_token_2 => 'PRODUCT_NAME'
160378 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
160379 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
160380 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
160381 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
160382
160383 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
160384 --
160385 -- following sets the accounting attributes needed to reverse
160386 -- accounting for a distributeion
160387 --
160388 xla_ae_lines_pkg.SetTrxReversalAttrs
160389 (p_event_id => l_event_id
160390 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
160391 ,p_trx_reversal_source => l_trx_reversal_source);
160392
160393 END IF;
160394
160395
160396 ----------------------------------------------------------------
160397 -- 4262811 - update the header statuses to invalid in need be
160398 ----------------------------------------------------------------
160399 --
160400 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
160401
160402
160403 -----------------------------------------------
160404 -- No accrual reversal for the event class/type
160405 -----------------------------------------------
160406 ----------------------------------------------------------------
160407
160408 --
160409 -- this ends the header loop iteration for one bulk fetch
160410 --
160411 END LOOP;
160412
160413 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
160414 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
160415
160416 --
160417 -- insert dummy rows into lines gt table that were created due to
160418 -- transaction reversals
160419 --
160420 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
160421 l_result := XLA_AE_LINES_PKG.InsertLines;
160422 END IF;
160423
160424 --
160425 -- reset the temp_line_num for each set of events fetched from header
160426 -- cursor rather than doing it for each new event in line cursor
160427 -- Bug 3939231
160428 --
160429 xla_ae_lines_pkg.g_temp_line_num := 0;
160430
160431
160432
160433 --
160434 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
160435 --
160436 --
160437 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
160438
160439 trace
160440 (p_msg => 'SQL - FETCH line_cur'
160441 ,p_level => C_LEVEL_STATEMENT
160442 ,p_module => l_log_module);
160443
160444 END IF;
160445 --
160446 --
160447 LOOP
160448 --
160449 FETCH line_cur BULK COLLECT INTO
160450 l_array_entity_id
160451 , l_array_legal_entity_id
160452 , l_array_entity_code
160453 , l_array_transaction_num
160454 , l_array_event_id
160455 , l_array_class_code
160456 , l_array_event_type
160457 , l_array_event_number
160458 , l_array_event_date
160459 , l_array_transaction_date
160460 , l_array_reference_num_1
160461 , l_array_reference_num_2
160462 , l_array_reference_num_3
160463 , l_array_reference_num_4
160464 , l_array_reference_char_1
160465 , l_array_reference_char_2
160466 , l_array_reference_char_3
160467 , l_array_reference_char_4
160468 , l_array_reference_date_1
160469 , l_array_reference_date_2
160470 , l_array_reference_date_3
160471 , l_array_reference_date_4
160472 , l_array_event_created_by
160473 , l_array_budgetary_control_flag
160474 , l_array_extract_line_num
160475 , l_array_source_4
160476 , l_array_source_11
160477 , l_array_source_15
160478 , l_array_source_18
160479 , l_array_source_19
160480 , l_array_source_20
160481 , l_array_source_21
160482 , l_array_source_22
160483 , l_array_source_24
160484 LIMIT l_rows;
160485
160486 --
160487 IF (C_LEVEL_EVENT >= g_log_level) THEN
160488 trace
160489 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
160490 ,p_level => C_LEVEL_EVENT
160491 ,p_module => l_log_module);
160492 END IF;
160493 --
160494 EXIT WHEN l_array_entity_id.count = 0;
160495
160496 XLA_AE_LINES_PKG.g_rec_lines := null;
160497
160498 --
160499 -- Bug 4458708
160500 --
160501 XLA_AE_LINES_PKG.g_LineNumber := 0;
160502 --
160503 --
160504
160505 FOR Idx IN 1..l_array_event_id.count LOOP
160506 --
160507 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
160508 --
160509 l_event_id := l_array_event_id(idx); -- 5648433
160510
160511 --
160512 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
160513 --
160514
160515 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
160516 (g_array_event(l_event_id).array_value_num('header_index'))
160517 ,'N'
160518 ) <> 'Y'
160519 THEN
160520 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
160521 trace
160522 (p_msg => 'Trancaction revesal option is not Y '
160523 ,p_level => C_LEVEL_STATEMENT
160524 ,p_module => l_log_module);
160525 END IF;
160526
160527 --
160528 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
160529 --
160530 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
160531 --
160532 -- set event info as cache for other routines to refer event attributes
160533 --
160534
160535 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
160536 l_previous_event_id := l_event_id;
160537
160538 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
160539 (p_application_id => p_application_id
160540 ,p_primary_ledger_id => p_primary_ledger_id
160541 ,p_base_ledger_id => p_base_ledger_id
160542 ,p_target_ledger_id => p_target_ledger_id
160543 ,p_entity_id => l_array_entity_id(Idx)
160544 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
160545 ,p_entity_code => l_array_entity_code(Idx)
160546 ,p_transaction_num => l_array_transaction_num(Idx)
160547 ,p_event_id => l_array_event_id(Idx)
160548 ,p_event_class_code => l_array_class_code(Idx)
160549 ,p_event_type_code => l_array_event_type(Idx)
160550 ,p_event_number => l_array_event_number(Idx)
160551 ,p_event_date => l_array_event_date(Idx)
160552 ,p_transaction_date => l_array_transaction_date(Idx)
160553 ,p_reference_num_1 => l_array_reference_num_1(Idx)
160554 ,p_reference_num_2 => l_array_reference_num_2(Idx)
160555 ,p_reference_num_3 => l_array_reference_num_3(Idx)
160556 ,p_reference_num_4 => l_array_reference_num_4(Idx)
160557 ,p_reference_char_1 => l_array_reference_char_1(Idx)
160558 ,p_reference_char_2 => l_array_reference_char_2(Idx)
160559 ,p_reference_char_3 => l_array_reference_char_3(Idx)
160560 ,p_reference_char_4 => l_array_reference_char_4(Idx)
160561 ,p_reference_date_1 => l_array_reference_date_1(Idx)
160562 ,p_reference_date_2 => l_array_reference_date_2(Idx)
160563 ,p_reference_date_3 => l_array_reference_date_3(Idx)
160564 ,p_reference_date_4 => l_array_reference_date_4(Idx)
160565 ,p_event_created_by => l_array_event_created_by(Idx)
160566 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
160567 --
160568 END IF;
160569
160570
160571
160572 --
160573 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
160574
160575 l_acct_reversal_source := SUBSTR(NULL, 1,30);
160576
160577 IF l_continue_with_lines THEN
160578 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
160579 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
160580
160581 xla_accounting_err_pkg.build_message
160582 (p_appli_s_name => 'XLA'
160583 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
160584 ,p_token_1 => 'LINE_NUMBER'
160585 ,p_value_1 => l_array_extract_line_num(Idx)
160586 ,p_token_2 => 'PRODUCT_NAME'
160587 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
160588 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
160589 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
160590 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
160591
160592 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
160593 --
160594 -- following sets the accounting attributes needed to reverse
160595 -- accounting for a distributeion
160596 --
160597
160598 --
160599 -- 5217187
160600 --
160601 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
160602 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
160603 g_array_event(l_event_id).array_value_num('header_index'));
160604 --
160605 --
160606
160607 -- No reversal code generated
160608
160609 xla_ae_lines_pkg.SetAcctReversalAttrs
160610 (p_event_id => l_event_id
160611 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
160612 ,p_calculate_acctd_flag => l_calculate_acctd_flag
160613 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
160614 END IF;
160615
160616 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
160617 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
160618
160619 --
160620 AcctLineType_14 (
160621 p_application_id => p_application_id
160622 ,p_event_id => l_event_id
160623 ,p_calculate_acctd_flag => l_calculate_acctd_flag
160624 ,p_calculate_g_l_flag => l_calculate_g_l_flag
160625 ,p_actual_flag => l_actual_flag
160626 ,p_balance_type_code => l_balance_type_code
160627 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
160628
160629 , p_source_4 => l_array_source_4(Idx)
160630 , p_source_11 => l_array_source_11(Idx)
160631 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
160632 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
160633 , p_source_15 => l_array_source_15(Idx)
160634 , p_source_18 => l_array_source_18(Idx)
160635 , p_source_19 => l_array_source_19(Idx)
160636 , p_source_20 => l_array_source_20(Idx)
160637 , p_source_21 => l_array_source_21(Idx)
160638 , p_source_22 => l_array_source_22(Idx)
160639 , p_source_24 => l_array_source_24(Idx)
160640 );
160641 If(l_balance_type_code = 'A') THEN
160642 l_actual_gain_loss_ref := l_gain_or_loss_ref;
160643 END IF;
160644
160645 --
160646
160647
160648 --
160649 AcctLineType_49 (
160650 p_application_id => p_application_id
160651 ,p_event_id => l_event_id
160652 ,p_calculate_acctd_flag => l_calculate_acctd_flag
160653 ,p_calculate_g_l_flag => l_calculate_g_l_flag
160654 ,p_actual_flag => l_actual_flag
160655 ,p_balance_type_code => l_balance_type_code
160656 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
160657
160658 , p_source_4 => l_array_source_4(Idx)
160659 , p_source_11 => l_array_source_11(Idx)
160660 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
160661 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
160662 , p_source_15 => l_array_source_15(Idx)
160663 , p_source_18 => l_array_source_18(Idx)
160664 , p_source_19 => l_array_source_19(Idx)
160665 , p_source_20 => l_array_source_20(Idx)
160666 , p_source_21 => l_array_source_21(Idx)
160667 , p_source_22 => l_array_source_22(Idx)
160668 , p_source_24 => l_array_source_24(Idx)
160669 );
160670 If(l_balance_type_code = 'A') THEN
160671 l_actual_gain_loss_ref := l_gain_or_loss_ref;
160672 END IF;
160673
160674 --
160675
160676
160677 --
160678 AcctLineType_55 (
160679 p_application_id => p_application_id
160680 ,p_event_id => l_event_id
160681 ,p_calculate_acctd_flag => l_calculate_acctd_flag
160682 ,p_calculate_g_l_flag => l_calculate_g_l_flag
160683 ,p_actual_flag => l_actual_flag
160684 ,p_balance_type_code => l_balance_type_code
160685 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
160686
160687 , p_source_4 => l_array_source_4(Idx)
160688 , p_source_11 => l_array_source_11(Idx)
160689 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
160690 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
160691 , p_source_15 => l_array_source_15(Idx)
160692 , p_source_18 => l_array_source_18(Idx)
160693 , p_source_19 => l_array_source_19(Idx)
160694 , p_source_20 => l_array_source_20(Idx)
160695 , p_source_21 => l_array_source_21(Idx)
160696 , p_source_22 => l_array_source_22(Idx)
160697 , p_source_24 => l_array_source_24(Idx)
160698 , p_source_35 => g_array_event(l_event_id).array_value_num('source_35')
160699 , p_source_35_meaning => g_array_event(l_event_id).array_value_char('source_35_meaning')
160700 );
160701 If(l_balance_type_code = 'A') THEN
160702 l_actual_gain_loss_ref := l_gain_or_loss_ref;
160703 END IF;
160704
160705 --
160706
160707
160708 --
160709 AcctLineType_126 (
160710 p_application_id => p_application_id
160711 ,p_event_id => l_event_id
160712 ,p_calculate_acctd_flag => l_calculate_acctd_flag
160713 ,p_calculate_g_l_flag => l_calculate_g_l_flag
160714 ,p_actual_flag => l_actual_flag
160715 ,p_balance_type_code => l_balance_type_code
160716 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
160717
160718 , p_source_4 => l_array_source_4(Idx)
160719 , p_source_11 => l_array_source_11(Idx)
160720 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
160721 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
160722 , p_source_15 => l_array_source_15(Idx)
160723 , p_source_18 => l_array_source_18(Idx)
160724 , p_source_19 => l_array_source_19(Idx)
160725 , p_source_20 => l_array_source_20(Idx)
160726 , p_source_21 => l_array_source_21(Idx)
160727 , p_source_22 => l_array_source_22(Idx)
160728 , p_source_24 => l_array_source_24(Idx)
160729 );
160730 If(l_balance_type_code = 'A') THEN
160731 l_actual_gain_loss_ref := l_gain_or_loss_ref;
160732 END IF;
160733
160734 --
160735
160736
160737 --
160738 AcctLineType_180 (
160739 p_application_id => p_application_id
160740 ,p_event_id => l_event_id
160741 ,p_calculate_acctd_flag => l_calculate_acctd_flag
160742 ,p_calculate_g_l_flag => l_calculate_g_l_flag
160743 ,p_actual_flag => l_actual_flag
160744 ,p_balance_type_code => l_balance_type_code
160745 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
160746
160747 , p_source_4 => l_array_source_4(Idx)
160748 , p_source_11 => l_array_source_11(Idx)
160749 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
160750 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
160751 , p_source_15 => l_array_source_15(Idx)
160752 , p_source_18 => l_array_source_18(Idx)
160753 , p_source_19 => l_array_source_19(Idx)
160754 , p_source_20 => l_array_source_20(Idx)
160755 , p_source_21 => l_array_source_21(Idx)
160756 , p_source_22 => l_array_source_22(Idx)
160757 , p_source_24 => l_array_source_24(Idx)
160758 , p_source_35 => g_array_event(l_event_id).array_value_num('source_35')
160759 , p_source_35_meaning => g_array_event(l_event_id).array_value_char('source_35_meaning')
160760 );
160761 If(l_balance_type_code = 'A') THEN
160762 l_actual_gain_loss_ref := l_gain_or_loss_ref;
160763 END IF;
160764
160765 --
160766
160767 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
160768 -- or secondary ledger that has different currency with primary
160769 -- or alc that is calculated by sla
160770 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
160771 (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'))
160772
160773 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
160774 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
160775 AND (l_actual_flag = 'A')) THEN
160776 XLA_AE_LINES_PKG.CreateGainOrLossLines(
160777 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
160778 ,p_application_id => p_application_id
160779 ,p_amb_context_code => 'DEFAULT'
160780 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
160781 ,p_event_class_code => C_EVENT_CLASS_CODE
160782 ,p_event_type_code => C_EVENT_TYPE_CODE
160783
160784 ,p_gain_ccid => -1
160785 ,p_loss_ccid => -1
160786
160787 ,p_actual_flag => l_actual_flag
160788 ,p_enc_flag => null
160789 ,p_actual_g_l_ref => l_actual_gain_loss_ref
160790 ,p_enc_g_l_ref => null
160791 );
160792 END IF;
160793 END IF;
160794 END IF;
160795
160796 ELSE
160797 --
160798 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
160799 --
160800 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
160801 trace
160802 (p_msg => 'Trancaction revesal option is Y'
160803 ,p_level => C_LEVEL_STATEMENT
160804 ,p_module => l_log_module);
160805 END IF;
160806 END IF;
160807
160808 END LOOP;
160809 l_result := XLA_AE_LINES_PKG.InsertLines ;
160810 end loop;
160811 close line_cur;
160812
160813
160814 --
160815 -- insert headers into xla_ae_headers_gt table
160816 --
160817 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
160818
160819 -- insert into errors table here.
160820
160821 END LOOP;
160822
160823 --
160824 -- 4865292
160825 --
160826 -- Compare g_hdr_extract_count with event count in
160827 -- CreateHeadersAndLines.
160828 --
160829 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
160830
160831 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
160832 trace (p_msg => '# rows extracted from header extract objects '
160833 || ' (running total): '
160834 || g_hdr_extract_count
160835 ,p_level => C_LEVEL_STATEMENT
160836 ,p_module => l_log_module);
160837 END IF;
160838
160839 CLOSE header_cur;
160840 --
160841
160842 --
160843 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
160844 trace
160845 (p_msg => 'END of EventClass_266'
160846 ,p_level => C_LEVEL_PROCEDURE
160847 ,p_module => l_log_module);
160848 END IF;
160849 --
160850 RETURN l_result;
160851 EXCEPTION
160852 WHEN xla_exceptions_pkg.application_exception THEN
160853
160854 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
160855
160856
160857 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
160858
160859 RAISE;
160860
160861 WHEN NO_DATA_FOUND THEN
160862
160863 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
160864 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
160865
160866 FOR header_record IN header_cur
160867 LOOP
160868 l_array_header_events(header_record.event_id) := header_record.event_id;
160869 END LOOP;
160870
160871 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
160872 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
160873
160874 fnd_file.put_line(fnd_file.LOG, ' ');
160875 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
160876 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
160877 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
160878
160879 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
160880 LOOP
160881 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
160882 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
160883 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
160884 END IF;
160885 END LOOP;
160886
160887 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
160888 fnd_file.put_line(fnd_file.LOG, ' ');
160889
160890
160891 xla_exceptions_pkg.raise_message
160892 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_266');
160893
160894
160895 WHEN OTHERS THEN
160896 xla_exceptions_pkg.raise_message
160897 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_266');
160898 END EventClass_266;
160899 --
160900
160901 ---------------------------------------
160902 --
160903 -- PRIVATE PROCEDURE
160904 -- insert_sources_267
160905 --
160906 ----------------------------------------
160907 --
160908 PROCEDURE insert_sources_267(
160909 p_target_ledger_id IN NUMBER
160910 , p_language IN VARCHAR2
160911 , p_sla_ledger_id IN NUMBER
160912 , p_pad_start_date IN DATE
160913 , p_pad_end_date IN DATE
160914 )
160915 IS
160916
160917 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'MISC_ISSUE_RCPT_ALL';
160918 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'MISC_ISSUE_RCPT';
160919 p_apps_owner VARCHAR2(30);
160920 l_log_module VARCHAR2(240);
160921 BEGIN
160922 IF g_log_enabled THEN
160923 l_log_module := C_DEFAULT_MODULE||'.insert_sources_267';
160924 END IF;
160925 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
160926
160927 trace
160928 (p_msg => 'BEGIN of insert_sources_267'
160929 ,p_level => C_LEVEL_PROCEDURE
160930 ,p_module => l_log_module);
160931
160932 END IF;
160933
160934 -- select APPS owner
160935 SELECT oracle_username
160936 INTO p_apps_owner
160937 FROM fnd_oracle_userid
160938 WHERE read_only_flag = 'U'
160939 ;
160940
160941 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
160942 trace
160943 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
160944 ' - p_language = '||p_language||
160945 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
160946 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
160947 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
160948 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
160949 ,p_level => C_LEVEL_STATEMENT
160950 ,p_module => l_log_module);
160951 END IF;
160952
160953
160954 --
160955 INSERT INTO xla_diag_sources --hdr2
160956 (
160957 event_id
160958 , ledger_id
160959 , sla_ledger_id
160960 , description_language
160961 , object_name
160962 , object_type_code
160963 , line_number
160964 , source_application_id
160965 , source_type_code
160966 , source_code
160967 , source_value
160968 , source_meaning
160969 , created_by
160970 , creation_date
160971 , last_update_date
160972 , last_updated_by
160973 , last_update_login
160974 , program_update_date
160975 , program_application_id
160976 , program_id
160977 , request_id
160978 )
160979 SELECT
160980 event_id
160981 , p_target_ledger_id
160982 , p_sla_ledger_id
160983 , p_language
160984 , object_name
160985 , object_type_code
160986 , line_number
160987 , source_application_id
160988 , source_type_code
160989 , source_code
160990 , SUBSTR(source_value ,1,1996)
160991 , SUBSTR(source_meaning ,1,200)
160992 , xla_environment_pkg.g_Usr_Id
160993 , TRUNC(SYSDATE)
160994 , TRUNC(SYSDATE)
160995 , xla_environment_pkg.g_Usr_Id
160996 , xla_environment_pkg.g_Login_Id
160997 , TRUNC(SYSDATE)
160998 , xla_environment_pkg.g_Prog_Appl_Id
160999 , xla_environment_pkg.g_Prog_Id
161000 , xla_environment_pkg.g_Req_Id
161001 FROM (
161002 SELECT xet.event_id event_id
161003 , 0 line_number
161004 , CASE r
161005 WHEN 1 THEN 'CST_XLA_INV_HEADERS_V'
161006 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V'
161007
161008 ELSE null
161009 END object_name
161010 , CASE r
161011 WHEN 1 THEN 'HEADER'
161012 WHEN 2 THEN 'HEADER'
161013
161014 ELSE null
161015 END object_type_code
161016 , CASE r
161017 WHEN 1 THEN '707'
161018 WHEN 2 THEN '707'
161019
161020 ELSE null
161021 END source_application_id
161022 , 'S' source_type_code
161023 , CASE r
161024 WHEN 1 THEN 'DISTRIBUTION_TYPE'
161025 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR'
161026
161027 ELSE null
161028 END source_code
161029 , CASE r
161030 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
161031 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
161032
161033 ELSE null
161034 END source_value
161035 , CASE r
161036 WHEN 1 THEN fvl12.meaning
161037 WHEN 2 THEN fvl38.meaning
161038
161039 ELSE null
161040 END source_meaning
161041 FROM xla_events_gt xet
161042 , CST_XLA_INV_HEADERS_V h1
161043 , fnd_lookup_values fvl12
161044 , fnd_lookup_values fvl38
161045 ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
161046 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
161047 AND xet.event_class_code = C_EVENT_CLASS_CODE
161048 AND h1.event_id = xet.event_id
161049 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
161050 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
161051 AND fvl12.view_application_id(+) = 700
161052 AND fvl12.language(+) = USERENV('LANG')
161053 AND fvl38.lookup_type(+) = 'YES_NO'
161054 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
161055 AND fvl38.view_application_id(+) = 0
161056 AND fvl38.language(+) = USERENV('LANG')
161057
161058 )
161059 ;
161060 --
161061 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
161062
161063 trace
161064 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
161065 ,p_level => C_LEVEL_STATEMENT
161066 ,p_module => l_log_module);
161067
161068 END IF;
161069 --
161070
161071
161072
161073 --
161074 INSERT INTO xla_diag_sources --line2
161075 (
161076 event_id
161077 , ledger_id
161078 , sla_ledger_id
161079 , description_language
161080 , object_name
161081 , object_type_code
161082 , line_number
161083 , source_application_id
161084 , source_type_code
161085 , source_code
161086 , source_value
161087 , source_meaning
161088 , created_by
161089 , creation_date
161090 , last_update_date
161091 , last_updated_by
161092 , last_update_login
161093 , program_update_date
161094 , program_application_id
161095 , program_id
161096 , request_id
161097 )
161098 SELECT event_id
161099 , p_target_ledger_id
161100 , p_sla_ledger_id
161101 , p_language
161102 , object_name
161103 , object_type_code
161104 , line_number
161105 , source_application_id
161106 , source_type_code
161107 , source_code
161108 , SUBSTR(source_value,1,1996)
161109 , SUBSTR(source_meaning ,1,200)
161110 , xla_environment_pkg.g_Usr_Id
161111 , TRUNC(SYSDATE)
161112 , TRUNC(SYSDATE)
161113 , xla_environment_pkg.g_Usr_Id
161114 , xla_environment_pkg.g_Login_Id
161115 , TRUNC(SYSDATE)
161116 , xla_environment_pkg.g_Prog_Appl_Id
161117 , xla_environment_pkg.g_Prog_Id
161118 , xla_environment_pkg.g_Req_Id
161119 FROM (
161120 SELECT xet.event_id event_id
161121 , l2.line_number line_number
161122 , CASE r
161123 WHEN 1 THEN 'CST_XLA_INV_LINES_V'
161124 WHEN 2 THEN 'CST_XLA_INV_LINES_V'
161125 WHEN 3 THEN 'CST_XLA_INV_LINES_V'
161126 WHEN 4 THEN 'CST_XLA_INV_LINES_V'
161127 WHEN 5 THEN 'CST_XLA_INV_LINES_V'
161128 WHEN 6 THEN 'CST_XLA_INV_LINES_V'
161129 WHEN 7 THEN 'CST_XLA_INV_LINES_V'
161130 WHEN 8 THEN 'CST_XLA_INV_LINES_V'
161131 WHEN 9 THEN 'CST_XLA_INV_LINES_V'
161132
161133 ELSE null
161134 END object_name
161135 , CASE r
161136 WHEN 1 THEN 'LINE'
161137 WHEN 2 THEN 'LINE'
161138 WHEN 3 THEN 'LINE'
161139 WHEN 4 THEN 'LINE'
161140 WHEN 5 THEN 'LINE'
161141 WHEN 6 THEN 'LINE'
161142 WHEN 7 THEN 'LINE'
161143 WHEN 8 THEN 'LINE'
161144 WHEN 9 THEN 'LINE'
161145
161146 ELSE null
161147 END object_type_code
161148 , CASE r
161149 WHEN 1 THEN '707'
161150 WHEN 2 THEN '707'
161151 WHEN 3 THEN '707'
161152 WHEN 4 THEN '707'
161153 WHEN 5 THEN '707'
161154 WHEN 6 THEN '707'
161155 WHEN 7 THEN '707'
161156 WHEN 8 THEN '707'
161157 WHEN 9 THEN '707'
161158
161159 ELSE null
161160 END source_application_id
161161 , 'S' source_type_code
161162 , CASE r
161163 WHEN 1 THEN 'CODE_COMBINATION_ID'
161164 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER'
161165 WHEN 3 THEN 'CURRENCY_CODE'
161166 WHEN 4 THEN 'ENTERED_AMOUNT'
161167 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE'
161168 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE'
161169 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE'
161170 WHEN 8 THEN 'ACCOUNTED_AMOUNT'
161171 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE'
161172
161173 ELSE null
161174 END source_code
161175 , CASE r
161176 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
161177 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
161178 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
161179 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
161180 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
161181 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
161182 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
161183 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
161184 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
161185
161186 ELSE null
161187 END source_value
161188 , null source_meaning
161189 FROM xla_events_gt xet
161190 , CST_XLA_INV_LINES_V l2
161191 , (select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
161192 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
161193 AND xet.event_class_code = C_EVENT_CLASS_CODE
161194 AND l2.event_id = xet.event_id
161195
161196 )
161197 ;
161198 --
161199 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
161200
161201 trace
161202 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
161203 ,p_level => C_LEVEL_STATEMENT
161204 ,p_module => l_log_module);
161205
161206 END IF;
161207
161208
161209 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
161210 trace
161211 (p_msg => 'END of insert_sources_267'
161212 ,p_level => C_LEVEL_PROCEDURE
161213 ,p_module => l_log_module);
161214 END IF;
161215 EXCEPTION
161216 WHEN xla_exceptions_pkg.application_exception THEN
161217 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
161218 trace
161219 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
161220 ,p_level => C_LEVEL_EXCEPTION
161221 ,p_module => l_log_module);
161222 END IF;
161223 RAISE;
161224 WHEN OTHERS THEN
161225 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
161226 trace
161227 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
161228 ,p_level => C_LEVEL_EXCEPTION
161229 ,p_module => l_log_module);
161230 END IF;
161231 xla_exceptions_pkg.raise_message
161232 (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_267');
161233 END insert_sources_267;
161234 --
161235
161236 ---------------------------------------
161237 --
161238 -- PRIVATE FUNCTION
161239 -- EventClass_267
161240 --
161241 ----------------------------------------
161242 --
161243 FUNCTION EventClass_267
161244 (p_application_id IN NUMBER
161245 ,p_base_ledger_id IN NUMBER
161246 ,p_target_ledger_id IN NUMBER
161247 ,p_language IN VARCHAR2
161248 ,p_currency_code IN VARCHAR2
161249 ,p_sla_ledger_id IN NUMBER
161250 ,p_pad_start_date IN DATE
161251 ,p_pad_end_date IN DATE
161252 ,p_primary_ledger_id IN NUMBER)
161253 RETURN BOOLEAN IS
161254 --
161255 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'MISC_ISSUE_RCPT_ALL';
161256 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'MISC_ISSUE_RCPT';
161257
161258 l_calculate_acctd_flag VARCHAR2(1) :='N';
161259 l_calculate_g_l_flag VARCHAR2(1) :='N';
161260 --
161261 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
161262 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
161263 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
161264 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
161265 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
161266 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
161267 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
161268 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
161269 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
161270 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
161271 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
161272 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
161273 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
161274 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
161275 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
161276 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
161277 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
161278 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
161279 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
161280 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
161281 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
161282 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
161283 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
161284 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
161285 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
161286 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
161287
161288 l_event_id NUMBER;
161289 l_previous_event_id NUMBER;
161290 l_first_event_id NUMBER;
161291 l_last_event_id NUMBER;
161292
161293 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
161294 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
161295 --
161296 --
161297 l_result BOOLEAN := TRUE;
161298 l_rows NUMBER := 1000;
161299 l_event_type_name VARCHAR2(80) := 'All';
161300 l_event_class_name VARCHAR2(80) := 'Miscellaneous';
161301 l_description VARCHAR2(4000);
161302 l_transaction_reversal NUMBER;
161303 l_ae_header_id NUMBER;
161304 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
161305 l_log_module VARCHAR2(240);
161306 --
161307 l_acct_reversal_source VARCHAR2(30);
161308 l_trx_reversal_source VARCHAR2(30);
161309
161310 l_continue_with_lines BOOLEAN := TRUE;
161311 --
161312 l_acc_rev_gl_date_source DATE; -- 4262811
161313 --
161314 type t_array_event_id is table of number index by binary_integer;
161315
161316 l_rec_array_event t_rec_array_event;
161317 l_null_rec_array_event t_rec_array_event;
161318 l_array_ae_header_id xla_number_array_type;
161319 l_actual_flag VARCHAR2(1) := NULL;
161320 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
161321 l_balance_type_code VARCHAR2(1) :=NULL;
161322 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
161323
161324 --
161325 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
161326 --
161327
161328 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
161329 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
161330
161331 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
161332 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
161333 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
161334 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
161335 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
161336 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
161337 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
161338 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
161339 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
161340
161341 l_array_source_12 t_array_source_12;
161342 l_array_source_12_meaning t_array_lookup_meaning;
161343 l_array_source_38 t_array_source_38;
161344 l_array_source_38_meaning t_array_lookup_meaning;
161345
161346 l_array_source_4 t_array_source_4;
161347 l_array_source_11 t_array_source_11;
161348 l_array_source_15 t_array_source_15;
161349 l_array_source_18 t_array_source_18;
161350 l_array_source_19 t_array_source_19;
161351 l_array_source_20 t_array_source_20;
161352 l_array_source_21 t_array_source_21;
161353 l_array_source_22 t_array_source_22;
161354 l_array_source_24 t_array_source_24;
161355
161356 --
161357 CURSOR header_cur
161358 IS
161359 SELECT /*+ leading(xet) cardinality(xet,1) */
161360 -- Event Class Code: MISC_ISSUE_RCPT
161361 xet.entity_id
161362 ,xet.legal_entity_id
161363 ,xet.entity_code
161364 ,xet.transaction_number
161365 ,xet.event_id
161366 ,xet.event_class_code
161367 ,xet.event_type_code
161368 ,xet.event_number
161369 ,xet.event_date
161370 ,xet.transaction_date
161371 ,xet.reference_num_1
161372 ,xet.reference_num_2
161373 ,xet.reference_num_3
161374 ,xet.reference_num_4
161375 ,xet.reference_char_1
161376 ,xet.reference_char_2
161377 ,xet.reference_char_3
161378 ,xet.reference_char_4
161379 ,xet.reference_date_1
161380 ,xet.reference_date_2
161381 ,xet.reference_date_3
161382 ,xet.reference_date_4
161383 ,xet.event_created_by
161384 ,xet.budgetary_control_flag
161385 , h1.DISTRIBUTION_TYPE source_12
161386 , fvl12.meaning source_12_meaning
161387 , h1.TRANSFER_TO_GL_INDICATOR source_38
161388 , fvl38.meaning source_38_meaning
161389 FROM xla_events_gt xet
161390 , CST_XLA_INV_HEADERS_V h1
161391 , fnd_lookup_values fvl12
161392 , fnd_lookup_values fvl38
161393 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
161394 and xet.event_class_code = C_EVENT_CLASS_CODE
161395 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
161396 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
161397 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
161398 AND fvl12.view_application_id(+) = 700
161399 AND fvl12.language(+) = USERENV('LANG')
161400 AND fvl38.lookup_type(+) = 'YES_NO'
161401 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
161402 AND fvl38.view_application_id(+) = 0
161403 AND fvl38.language(+) = USERENV('LANG')
161404
161405 ORDER BY event_id
161406 ;
161407
161408
161409 --
161410 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
161411 IS
161412 SELECT /*+ leading(xet) cardinality(xet,1) */
161413 -- Event Class Code: MISC_ISSUE_RCPT
161414 xet.entity_id
161415 ,xet.legal_entity_id
161416 ,xet.entity_code
161417 ,xet.transaction_number
161418 ,xet.event_id
161419 ,xet.event_class_code
161420 ,xet.event_type_code
161421 ,xet.event_number
161422 ,xet.event_date
161423 ,xet.transaction_date
161424 ,xet.reference_num_1
161425 ,xet.reference_num_2
161426 ,xet.reference_num_3
161427 ,xet.reference_num_4
161428 ,xet.reference_char_1
161429 ,xet.reference_char_2
161430 ,xet.reference_char_3
161431 ,xet.reference_char_4
161432 ,xet.reference_date_1
161433 ,xet.reference_date_2
161434 ,xet.reference_date_3
161435 ,xet.reference_date_4
161436 ,xet.event_created_by
161437 ,xet.budgetary_control_flag
161438 , l2.LINE_NUMBER
161439 , l2.CODE_COMBINATION_ID source_4
161440 , l2.DISTRIBUTION_IDENTIFIER source_11
161441 , l2.CURRENCY_CODE source_15
161442 , l2.ENTERED_AMOUNT source_18
161443 , l2.CURRENCY_CONVERSION_DATE source_19
161444 , l2.CURRENCY_CONVERSION_RATE source_20
161445 , l2.CURRENCY_CONVERSION_TYPE source_21
161446 , l2.ACCOUNTED_AMOUNT source_22
161447 , l2.ACCOUNTING_LINE_TYPE_CODE source_24
161448 FROM xla_events_gt xet
161449 , CST_XLA_INV_LINES_V l2
161450 WHERE xet.event_id between x_first_event_id and x_last_event_id
161451 and xet.event_date between p_pad_start_date and p_pad_end_date
161452 and xet.event_class_code = C_EVENT_CLASS_CODE
161453 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
161454 ;
161455
161456 --
161457 BEGIN
161458 IF g_log_enabled THEN
161459 l_log_module := C_DEFAULT_MODULE||'.EventClass_267';
161460 END IF;
161461 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
161462 trace
161463 (p_msg => 'BEGIN of EventClass_267'
161464 ,p_level => C_LEVEL_PROCEDURE
161465 ,p_module => l_log_module);
161466 END IF;
161467
161468 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
161469 trace
161470 (p_msg => 'p_application_id = '||p_application_id||
161471 ' - p_base_ledger_id = '||p_base_ledger_id||
161472 ' - p_target_ledger_id = '||p_target_ledger_id||
161473 ' - p_language = '||p_language||
161474 ' - p_currency_code = '||p_currency_code||
161475 ' - p_sla_ledger_id = '||p_sla_ledger_id
161476 ,p_level => C_LEVEL_STATEMENT
161477 ,p_module => l_log_module);
161478 END IF;
161479 --
161480 -- initialze arrays
161481 --
161482 g_array_event.DELETE;
161483 l_rec_array_event := l_null_rec_array_event;
161484 --
161485 --------------------------------------
161486 -- 4262811 Initialze MPA Line Number
161487 --------------------------------------
161488 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
161489
161490 --
161491
161492 --
161493 OPEN header_cur;
161494 --
161495 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
161496 trace
161497 (p_msg => 'SQL - FETCH header_cur'
161498 ,p_level => C_LEVEL_STATEMENT
161499 ,p_module => l_log_module);
161500 END IF;
161501 --
161502 LOOP
161503 FETCH header_cur BULK COLLECT INTO
161504 l_array_entity_id
161505 , l_array_legal_entity_id
161506 , l_array_entity_code
161507 , l_array_transaction_num
161508 , l_array_event_id
161509 , l_array_class_code
161510 , l_array_event_type
161511 , l_array_event_number
161512 , l_array_event_date
161513 , l_array_transaction_date
161514 , l_array_reference_num_1
161515 , l_array_reference_num_2
161516 , l_array_reference_num_3
161517 , l_array_reference_num_4
161518 , l_array_reference_char_1
161519 , l_array_reference_char_2
161520 , l_array_reference_char_3
161521 , l_array_reference_char_4
161522 , l_array_reference_date_1
161523 , l_array_reference_date_2
161524 , l_array_reference_date_3
161525 , l_array_reference_date_4
161526 , l_array_event_created_by
161527 , l_array_budgetary_control_flag
161528 , l_array_source_12
161529 , l_array_source_12_meaning
161530 , l_array_source_38
161531 , l_array_source_38_meaning
161532 LIMIT l_rows;
161533 --
161534 IF (C_LEVEL_EVENT >= g_log_level) THEN
161535 trace
161536 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
161537 ,p_level => C_LEVEL_EVENT
161538 ,p_module => l_log_module);
161539 END IF;
161540 --
161541 EXIT WHEN l_array_entity_id.COUNT = 0;
161542
161543 -- initialize arrays
161544 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
161545 XLA_AE_LINES_PKG.g_rec_lines := NULL;
161546
161547 --
161548 -- Bug 4458708
161549 --
161550 XLA_AE_LINES_PKG.g_LineNumber := 0;
161551
161552
161553 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
161554 g_last_hdr_idx := l_array_event_id.LAST;
161555 --
161556 -- loop for the headers. Each iteration is for each header extract row
161557 -- fetched in header cursor
161558 --
161559 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
161560
161561 --
161562 -- set event info as cache for other routines to refer event attributes
161563 --
161564 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
161565 (p_application_id => p_application_id
161566 ,p_primary_ledger_id => p_primary_ledger_id
161567 ,p_base_ledger_id => p_base_ledger_id
161568 ,p_target_ledger_id => p_target_ledger_id
161569 ,p_entity_id => l_array_entity_id(hdr_idx)
161570 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
161571 ,p_entity_code => l_array_entity_code(hdr_idx)
161572 ,p_transaction_num => l_array_transaction_num(hdr_idx)
161573 ,p_event_id => l_array_event_id(hdr_idx)
161574 ,p_event_class_code => l_array_class_code(hdr_idx)
161575 ,p_event_type_code => l_array_event_type(hdr_idx)
161576 ,p_event_number => l_array_event_number(hdr_idx)
161577 ,p_event_date => l_array_event_date(hdr_idx)
161578 ,p_transaction_date => l_array_transaction_date(hdr_idx)
161579 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
161580 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
161581 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
161582 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
161583 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
161584 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
161585 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
161586 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
161587 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
161588 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
161589 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
161590 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
161591 ,p_event_created_by => l_array_event_created_by(hdr_idx)
161592 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
161593
161594 --
161595 -- set the status of entry to C_VALID (0)
161596 --
161597 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
161598
161599 --
161600 -- initialize a row for ae header
161601 --
161602 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
161603
161604 l_event_id := l_array_event_id(hdr_idx);
161605
161606 --
161607 -- storing the hdr_idx for event. May be used by line cursor.
161608 --
161609 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
161610
161611 --
161612 -- store sources from header extract. This can be improved to
161613 -- store only those sources from header extract that may be used in lines
161614 --
161615
161616 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
161617 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
161618 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
161619 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
161620
161621 --
161622 -- initilaize the status of ae headers for diffrent balance types
161623 -- the status is initialised to C_NOT_CREATED (2)
161624 --
161625 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
161626 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
161627 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
161628
161629 --
161630 -- call api to validate and store accounting attributes for header
161631 --
161632
161633 ------------------------------------------------------------
161634 -- Accrual Reversal : to get date for Standard Source (NONE)
161635 ------------------------------------------------------------
161636 l_acc_rev_gl_date_source := NULL;
161637
161638 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
161639 l_rec_acct_attrs.array_date_value(1) :=
161640 xla_ae_sources_pkg.GetSystemSourceDate(
161641 p_source_code => 'XLA_REFERENCE_DATE_1'
161642 , p_source_type_code => 'Y'
161643 , p_source_application_id => 602
161644 );
161645 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_TRANSFER_FLAG';
161646 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
161647
161648
161649 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
161650
161651 XLA_AE_HEADER_PKG.SetJeCategoryName;
161652
161653 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
161654 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
161655 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
161656 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
161657 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
161658
161659
161660 -- No header level analytical criteria
161661
161662 --
161663 --accounting attribute enhancement, bug 3612931
161664 --
161665 l_trx_reversal_source := SUBSTR(NULL, 1,30);
161666
161667 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
161668 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
161669
161670 xla_accounting_err_pkg.build_message
161671 (p_appli_s_name => 'XLA'
161672 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
161673 ,p_token_1 => 'ACCT_ATTR_NAME'
161674 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
161675 ,p_token_2 => 'PRODUCT_NAME'
161676 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
161677 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
161678 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
161679 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
161680
161681 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
161682 --
161683 -- following sets the accounting attributes needed to reverse
161684 -- accounting for a distributeion
161685 --
161686 xla_ae_lines_pkg.SetTrxReversalAttrs
161687 (p_event_id => l_event_id
161688 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
161689 ,p_trx_reversal_source => l_trx_reversal_source);
161690
161691 END IF;
161692
161693
161694 ----------------------------------------------------------------
161695 -- 4262811 - update the header statuses to invalid in need be
161696 ----------------------------------------------------------------
161697 --
161698 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
161699
161700
161701 -----------------------------------------------
161702 -- No accrual reversal for the event class/type
161703 -----------------------------------------------
161704 ----------------------------------------------------------------
161705
161706 --
161707 -- this ends the header loop iteration for one bulk fetch
161708 --
161709 END LOOP;
161710
161711 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
161712 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
161713
161714 --
161715 -- insert dummy rows into lines gt table that were created due to
161716 -- transaction reversals
161717 --
161718 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
161719 l_result := XLA_AE_LINES_PKG.InsertLines;
161720 END IF;
161721
161722 --
161723 -- reset the temp_line_num for each set of events fetched from header
161724 -- cursor rather than doing it for each new event in line cursor
161725 -- Bug 3939231
161726 --
161727 xla_ae_lines_pkg.g_temp_line_num := 0;
161728
161729
161730
161731 --
161732 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
161733 --
161734 --
161735 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
161736
161737 trace
161738 (p_msg => 'SQL - FETCH line_cur'
161739 ,p_level => C_LEVEL_STATEMENT
161740 ,p_module => l_log_module);
161741
161742 END IF;
161743 --
161744 --
161745 LOOP
161746 --
161747 FETCH line_cur BULK COLLECT INTO
161748 l_array_entity_id
161749 , l_array_legal_entity_id
161750 , l_array_entity_code
161751 , l_array_transaction_num
161752 , l_array_event_id
161753 , l_array_class_code
161754 , l_array_event_type
161755 , l_array_event_number
161756 , l_array_event_date
161757 , l_array_transaction_date
161758 , l_array_reference_num_1
161759 , l_array_reference_num_2
161760 , l_array_reference_num_3
161761 , l_array_reference_num_4
161762 , l_array_reference_char_1
161763 , l_array_reference_char_2
161764 , l_array_reference_char_3
161765 , l_array_reference_char_4
161766 , l_array_reference_date_1
161767 , l_array_reference_date_2
161768 , l_array_reference_date_3
161769 , l_array_reference_date_4
161770 , l_array_event_created_by
161771 , l_array_budgetary_control_flag
161772 , l_array_extract_line_num
161773 , l_array_source_4
161774 , l_array_source_11
161775 , l_array_source_15
161776 , l_array_source_18
161777 , l_array_source_19
161778 , l_array_source_20
161779 , l_array_source_21
161780 , l_array_source_22
161781 , l_array_source_24
161782 LIMIT l_rows;
161783
161784 --
161785 IF (C_LEVEL_EVENT >= g_log_level) THEN
161786 trace
161787 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
161788 ,p_level => C_LEVEL_EVENT
161789 ,p_module => l_log_module);
161790 END IF;
161791 --
161792 EXIT WHEN l_array_entity_id.count = 0;
161793
161794 XLA_AE_LINES_PKG.g_rec_lines := null;
161795
161796 --
161797 -- Bug 4458708
161798 --
161799 XLA_AE_LINES_PKG.g_LineNumber := 0;
161800 --
161801 --
161802
161803 FOR Idx IN 1..l_array_event_id.count LOOP
161804 --
161805 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
161806 --
161807 l_event_id := l_array_event_id(idx); -- 5648433
161808
161809 --
161810 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
161811 --
161812
161813 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
161814 (g_array_event(l_event_id).array_value_num('header_index'))
161815 ,'N'
161816 ) <> 'Y'
161817 THEN
161818 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
161819 trace
161820 (p_msg => 'Trancaction revesal option is not Y '
161821 ,p_level => C_LEVEL_STATEMENT
161822 ,p_module => l_log_module);
161823 END IF;
161824
161825 --
161826 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
161827 --
161828 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
161829 --
161830 -- set event info as cache for other routines to refer event attributes
161831 --
161832
161833 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
161834 l_previous_event_id := l_event_id;
161835
161836 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
161837 (p_application_id => p_application_id
161838 ,p_primary_ledger_id => p_primary_ledger_id
161839 ,p_base_ledger_id => p_base_ledger_id
161840 ,p_target_ledger_id => p_target_ledger_id
161841 ,p_entity_id => l_array_entity_id(Idx)
161842 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
161843 ,p_entity_code => l_array_entity_code(Idx)
161844 ,p_transaction_num => l_array_transaction_num(Idx)
161845 ,p_event_id => l_array_event_id(Idx)
161846 ,p_event_class_code => l_array_class_code(Idx)
161847 ,p_event_type_code => l_array_event_type(Idx)
161848 ,p_event_number => l_array_event_number(Idx)
161849 ,p_event_date => l_array_event_date(Idx)
161850 ,p_transaction_date => l_array_transaction_date(Idx)
161851 ,p_reference_num_1 => l_array_reference_num_1(Idx)
161852 ,p_reference_num_2 => l_array_reference_num_2(Idx)
161853 ,p_reference_num_3 => l_array_reference_num_3(Idx)
161854 ,p_reference_num_4 => l_array_reference_num_4(Idx)
161855 ,p_reference_char_1 => l_array_reference_char_1(Idx)
161856 ,p_reference_char_2 => l_array_reference_char_2(Idx)
161857 ,p_reference_char_3 => l_array_reference_char_3(Idx)
161858 ,p_reference_char_4 => l_array_reference_char_4(Idx)
161859 ,p_reference_date_1 => l_array_reference_date_1(Idx)
161860 ,p_reference_date_2 => l_array_reference_date_2(Idx)
161861 ,p_reference_date_3 => l_array_reference_date_3(Idx)
161862 ,p_reference_date_4 => l_array_reference_date_4(Idx)
161863 ,p_event_created_by => l_array_event_created_by(Idx)
161864 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
161865 --
161866 END IF;
161867
161868
161869
161870 --
161871 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
161872
161873 l_acct_reversal_source := SUBSTR(NULL, 1,30);
161874
161875 IF l_continue_with_lines THEN
161876 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
161877 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
161878
161879 xla_accounting_err_pkg.build_message
161880 (p_appli_s_name => 'XLA'
161881 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
161882 ,p_token_1 => 'LINE_NUMBER'
161883 ,p_value_1 => l_array_extract_line_num(Idx)
161884 ,p_token_2 => 'PRODUCT_NAME'
161885 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
161886 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
161887 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
161888 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
161889
161890 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
161891 --
161892 -- following sets the accounting attributes needed to reverse
161893 -- accounting for a distributeion
161894 --
161895
161896 --
161897 -- 5217187
161898 --
161899 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
161900 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
161901 g_array_event(l_event_id).array_value_num('header_index'));
161902 --
161903 --
161904
161905 -- No reversal code generated
161906
161907 xla_ae_lines_pkg.SetAcctReversalAttrs
161908 (p_event_id => l_event_id
161909 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
161910 ,p_calculate_acctd_flag => l_calculate_acctd_flag
161911 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
161912 END IF;
161913
161914 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
161915 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
161916
161917 --
161918 AcctLineType_33 (
161919 p_application_id => p_application_id
161920 ,p_event_id => l_event_id
161921 ,p_calculate_acctd_flag => l_calculate_acctd_flag
161922 ,p_calculate_g_l_flag => l_calculate_g_l_flag
161923 ,p_actual_flag => l_actual_flag
161924 ,p_balance_type_code => l_balance_type_code
161925 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
161926
161927 , p_source_4 => l_array_source_4(Idx)
161928 , p_source_11 => l_array_source_11(Idx)
161929 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
161930 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
161931 , p_source_15 => l_array_source_15(Idx)
161932 , p_source_18 => l_array_source_18(Idx)
161933 , p_source_19 => l_array_source_19(Idx)
161934 , p_source_20 => l_array_source_20(Idx)
161935 , p_source_21 => l_array_source_21(Idx)
161936 , p_source_22 => l_array_source_22(Idx)
161937 , p_source_24 => l_array_source_24(Idx)
161938 );
161939 If(l_balance_type_code = 'A') THEN
161940 l_actual_gain_loss_ref := l_gain_or_loss_ref;
161941 END IF;
161942
161943 --
161944
161945
161946 --
161947 AcctLineType_147 (
161948 p_application_id => p_application_id
161949 ,p_event_id => l_event_id
161950 ,p_calculate_acctd_flag => l_calculate_acctd_flag
161951 ,p_calculate_g_l_flag => l_calculate_g_l_flag
161952 ,p_actual_flag => l_actual_flag
161953 ,p_balance_type_code => l_balance_type_code
161954 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
161955
161956 , p_source_4 => l_array_source_4(Idx)
161957 , p_source_11 => l_array_source_11(Idx)
161958 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
161959 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
161960 , p_source_15 => l_array_source_15(Idx)
161961 , p_source_18 => l_array_source_18(Idx)
161962 , p_source_19 => l_array_source_19(Idx)
161963 , p_source_20 => l_array_source_20(Idx)
161964 , p_source_21 => l_array_source_21(Idx)
161965 , p_source_22 => l_array_source_22(Idx)
161966 , p_source_24 => l_array_source_24(Idx)
161967 );
161968 If(l_balance_type_code = 'A') THEN
161969 l_actual_gain_loss_ref := l_gain_or_loss_ref;
161970 END IF;
161971
161972 --
161973
161974
161975 --
161976 AcctLineType_193 (
161977 p_application_id => p_application_id
161978 ,p_event_id => l_event_id
161979 ,p_calculate_acctd_flag => l_calculate_acctd_flag
161980 ,p_calculate_g_l_flag => l_calculate_g_l_flag
161981 ,p_actual_flag => l_actual_flag
161982 ,p_balance_type_code => l_balance_type_code
161983 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
161984
161985 , p_source_4 => l_array_source_4(Idx)
161986 , p_source_11 => l_array_source_11(Idx)
161987 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
161988 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
161989 , p_source_15 => l_array_source_15(Idx)
161990 , p_source_18 => l_array_source_18(Idx)
161991 , p_source_19 => l_array_source_19(Idx)
161992 , p_source_20 => l_array_source_20(Idx)
161993 , p_source_21 => l_array_source_21(Idx)
161994 , p_source_22 => l_array_source_22(Idx)
161995 , p_source_24 => l_array_source_24(Idx)
161996 );
161997 If(l_balance_type_code = 'A') THEN
161998 l_actual_gain_loss_ref := l_gain_or_loss_ref;
161999 END IF;
162000
162001 --
162002
162003 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
162004 -- or secondary ledger that has different currency with primary
162005 -- or alc that is calculated by sla
162006 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
162007 (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'))
162008
162009 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
162010 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
162011 AND (l_actual_flag = 'A')) THEN
162012 XLA_AE_LINES_PKG.CreateGainOrLossLines(
162013 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
162014 ,p_application_id => p_application_id
162015 ,p_amb_context_code => 'DEFAULT'
162016 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
162017 ,p_event_class_code => C_EVENT_CLASS_CODE
162018 ,p_event_type_code => C_EVENT_TYPE_CODE
162019
162020 ,p_gain_ccid => -1
162021 ,p_loss_ccid => -1
162022
162023 ,p_actual_flag => l_actual_flag
162024 ,p_enc_flag => null
162025 ,p_actual_g_l_ref => l_actual_gain_loss_ref
162026 ,p_enc_g_l_ref => null
162027 );
162028 END IF;
162029 END IF;
162030 END IF;
162031
162032 ELSE
162033 --
162034 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
162035 --
162036 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
162037 trace
162038 (p_msg => 'Trancaction revesal option is Y'
162039 ,p_level => C_LEVEL_STATEMENT
162040 ,p_module => l_log_module);
162041 END IF;
162042 END IF;
162043
162044 END LOOP;
162045 l_result := XLA_AE_LINES_PKG.InsertLines ;
162046 end loop;
162047 close line_cur;
162048
162049
162050 --
162051 -- insert headers into xla_ae_headers_gt table
162052 --
162053 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
162054
162055 -- insert into errors table here.
162056
162057 END LOOP;
162058
162059 --
162060 -- 4865292
162061 --
162062 -- Compare g_hdr_extract_count with event count in
162063 -- CreateHeadersAndLines.
162064 --
162065 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
162066
162067 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
162068 trace (p_msg => '# rows extracted from header extract objects '
162069 || ' (running total): '
162070 || g_hdr_extract_count
162071 ,p_level => C_LEVEL_STATEMENT
162072 ,p_module => l_log_module);
162073 END IF;
162074
162075 CLOSE header_cur;
162076 --
162077
162078 --
162079 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
162080 trace
162081 (p_msg => 'END of EventClass_267'
162082 ,p_level => C_LEVEL_PROCEDURE
162083 ,p_module => l_log_module);
162084 END IF;
162085 --
162086 RETURN l_result;
162087 EXCEPTION
162088 WHEN xla_exceptions_pkg.application_exception THEN
162089
162090 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
162091
162092
162093 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
162094
162095 RAISE;
162096
162097 WHEN NO_DATA_FOUND THEN
162098
162099 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
162100 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
162101
162102 FOR header_record IN header_cur
162103 LOOP
162104 l_array_header_events(header_record.event_id) := header_record.event_id;
162105 END LOOP;
162106
162107 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
162108 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
162109
162110 fnd_file.put_line(fnd_file.LOG, ' ');
162111 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
162112 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
162113 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
162114
162115 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
162116 LOOP
162117 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
162118 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
162119 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
162120 END IF;
162121 END LOOP;
162122
162123 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
162124 fnd_file.put_line(fnd_file.LOG, ' ');
162125
162126
162127 xla_exceptions_pkg.raise_message
162128 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_267');
162129
162130
162131 WHEN OTHERS THEN
162132 xla_exceptions_pkg.raise_message
162133 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_267');
162134 END EventClass_267;
162135 --
162136
162137 ---------------------------------------
162138 --
162139 -- PRIVATE PROCEDURE
162140 -- insert_sources_268
162141 --
162142 ----------------------------------------
162143 --
162144 PROCEDURE insert_sources_268(
162145 p_target_ledger_id IN NUMBER
162146 , p_language IN VARCHAR2
162147 , p_sla_ledger_id IN NUMBER
162148 , p_pad_start_date IN DATE
162149 , p_pad_end_date IN DATE
162150 )
162151 IS
162152
162153 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'OSP_ALL';
162154 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'OSP';
162155 p_apps_owner VARCHAR2(30);
162156 l_log_module VARCHAR2(240);
162157 BEGIN
162158 IF g_log_enabled THEN
162159 l_log_module := C_DEFAULT_MODULE||'.insert_sources_268';
162160 END IF;
162161 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
162162
162163 trace
162164 (p_msg => 'BEGIN of insert_sources_268'
162165 ,p_level => C_LEVEL_PROCEDURE
162166 ,p_module => l_log_module);
162167
162168 END IF;
162169
162170 -- select APPS owner
162171 SELECT oracle_username
162172 INTO p_apps_owner
162173 FROM fnd_oracle_userid
162174 WHERE read_only_flag = 'U'
162175 ;
162176
162177 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
162178 trace
162179 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
162180 ' - p_language = '||p_language||
162181 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
162182 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
162183 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
162184 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
162185 ,p_level => C_LEVEL_STATEMENT
162186 ,p_module => l_log_module);
162187 END IF;
162188
162189
162190 --
162191 INSERT INTO xla_diag_sources --hdr2
162192 (
162193 event_id
162194 , ledger_id
162195 , sla_ledger_id
162196 , description_language
162197 , object_name
162198 , object_type_code
162199 , line_number
162200 , source_application_id
162201 , source_type_code
162202 , source_code
162203 , source_value
162204 , source_meaning
162205 , created_by
162206 , creation_date
162207 , last_update_date
162208 , last_updated_by
162209 , last_update_login
162210 , program_update_date
162211 , program_application_id
162212 , program_id
162213 , request_id
162214 )
162215 SELECT
162216 event_id
162217 , p_target_ledger_id
162218 , p_sla_ledger_id
162219 , p_language
162220 , object_name
162221 , object_type_code
162222 , line_number
162223 , source_application_id
162224 , source_type_code
162225 , source_code
162226 , SUBSTR(source_value ,1,1996)
162227 , SUBSTR(source_meaning ,1,200)
162228 , xla_environment_pkg.g_Usr_Id
162229 , TRUNC(SYSDATE)
162230 , TRUNC(SYSDATE)
162231 , xla_environment_pkg.g_Usr_Id
162232 , xla_environment_pkg.g_Login_Id
162233 , TRUNC(SYSDATE)
162234 , xla_environment_pkg.g_Prog_Appl_Id
162235 , xla_environment_pkg.g_Prog_Id
162236 , xla_environment_pkg.g_Req_Id
162237 FROM (
162238 SELECT xet.event_id event_id
162239 , 0 line_number
162240 , CASE r
162241 WHEN 1 THEN 'CST_XLA_WIP_HEADERS_V'
162242 WHEN 2 THEN 'CST_XLA_WIP_HEADERS_V'
162243 WHEN 3 THEN 'CST_XLA_WIP_HEADERS_V'
162244 WHEN 4 THEN 'CST_XLA_WIP_HEADERS_V'
162245 WHEN 5 THEN 'CST_XLA_WIP_HEADERS_V'
162246
162247 ELSE null
162248 END object_name
162249 , CASE r
162250 WHEN 1 THEN 'HEADER'
162251 WHEN 2 THEN 'HEADER'
162252 WHEN 3 THEN 'HEADER'
162253 WHEN 4 THEN 'HEADER'
162254 WHEN 5 THEN 'HEADER'
162255
162256 ELSE null
162257 END object_type_code
162258 , CASE r
162259 WHEN 1 THEN '707'
162260 WHEN 2 THEN '707'
162261 WHEN 3 THEN '707'
162262 WHEN 4 THEN '707'
162263 WHEN 5 THEN '707'
162264
162265 ELSE null
162266 END source_application_id
162267 , 'S' source_type_code
162268 , CASE r
162269 WHEN 1 THEN 'DISTRIBUTION_TYPE'
162270 WHEN 2 THEN 'CURRENCY_CODE'
162271 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE'
162272 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE'
162273 WHEN 5 THEN 'TRANSFER_TO_GL_INDICATOR'
162274
162275 ELSE null
162276 END source_code
162277 , CASE r
162278 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
162279 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
162280 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
162281 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
162282 WHEN 5 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
162283
162284 ELSE null
162285 END source_value
162286 , CASE r
162287 WHEN 1 THEN fvl12.meaning
162288 WHEN 5 THEN fvl38.meaning
162289
162290 ELSE null
162291 END source_meaning
162292 FROM xla_events_gt xet
162293 , CST_XLA_WIP_HEADERS_V h1
162294 , fnd_lookup_values fvl12
162295 , fnd_lookup_values fvl38
162296 ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
162297 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
162298 AND xet.event_class_code = C_EVENT_CLASS_CODE
162299 AND h1.event_id = xet.event_id
162300 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
162301 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
162302 AND fvl12.view_application_id(+) = 700
162303 AND fvl12.language(+) = USERENV('LANG')
162304 AND fvl38.lookup_type(+) = 'YES_NO'
162305 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
162306 AND fvl38.view_application_id(+) = 0
162307 AND fvl38.language(+) = USERENV('LANG')
162308
162309 )
162310 ;
162311 --
162312 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
162313
162314 trace
162315 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
162316 ,p_level => C_LEVEL_STATEMENT
162317 ,p_module => l_log_module);
162318
162319 END IF;
162320 --
162321
162322
162323
162324 --
162325 INSERT INTO xla_diag_sources --line2
162326 (
162327 event_id
162328 , ledger_id
162329 , sla_ledger_id
162330 , description_language
162331 , object_name
162332 , object_type_code
162333 , line_number
162334 , source_application_id
162335 , source_type_code
162336 , source_code
162337 , source_value
162338 , source_meaning
162339 , created_by
162340 , creation_date
162341 , last_update_date
162342 , last_updated_by
162343 , last_update_login
162344 , program_update_date
162345 , program_application_id
162346 , program_id
162347 , request_id
162348 )
162349 SELECT event_id
162350 , p_target_ledger_id
162351 , p_sla_ledger_id
162352 , p_language
162353 , object_name
162354 , object_type_code
162355 , line_number
162356 , source_application_id
162357 , source_type_code
162358 , source_code
162359 , SUBSTR(source_value,1,1996)
162360 , SUBSTR(source_meaning ,1,200)
162361 , xla_environment_pkg.g_Usr_Id
162362 , TRUNC(SYSDATE)
162363 , TRUNC(SYSDATE)
162364 , xla_environment_pkg.g_Usr_Id
162365 , xla_environment_pkg.g_Login_Id
162366 , TRUNC(SYSDATE)
162367 , xla_environment_pkg.g_Prog_Appl_Id
162368 , xla_environment_pkg.g_Prog_Id
162369 , xla_environment_pkg.g_Req_Id
162370 FROM (
162371 SELECT xet.event_id event_id
162372 , l2.line_number line_number
162373 , CASE r
162374 WHEN 1 THEN 'CST_XLA_WIP_LINES_V'
162375 WHEN 2 THEN 'CST_XLA_WIP_LINES_V'
162376 WHEN 3 THEN 'CST_XLA_WIP_LINES_V'
162377 WHEN 4 THEN 'CST_XLA_WIP_LINES_V'
162378 WHEN 5 THEN 'CST_XLA_WIP_LINES_V'
162379
162380 ELSE null
162381 END object_name
162382 , CASE r
162383 WHEN 1 THEN 'LINE'
162384 WHEN 2 THEN 'LINE'
162385 WHEN 3 THEN 'LINE'
162386 WHEN 4 THEN 'LINE'
162387 WHEN 5 THEN 'LINE'
162388
162389 ELSE null
162390 END object_type_code
162391 , CASE r
162392 WHEN 1 THEN '707'
162393 WHEN 2 THEN '707'
162394 WHEN 3 THEN '707'
162395 WHEN 4 THEN '707'
162396 WHEN 5 THEN '707'
162397
162398 ELSE null
162399 END source_application_id
162400 , 'S' source_type_code
162401 , CASE r
162402 WHEN 1 THEN 'CODE_COMBINATION_ID'
162403 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER'
162404 WHEN 3 THEN 'ENTERED_AMOUNT'
162405 WHEN 4 THEN 'ACCOUNTED_AMOUNT'
162406 WHEN 5 THEN 'ACCOUNTING_LINE_TYPE_CODE'
162407
162408 ELSE null
162409 END source_code
162410 , CASE r
162411 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
162412 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
162413 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
162414 WHEN 4 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
162415 WHEN 5 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
162416
162417 ELSE null
162418 END source_value
162419 , null source_meaning
162420 FROM xla_events_gt xet
162421 , CST_XLA_WIP_LINES_V l2
162422 , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
162423 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
162424 AND xet.event_class_code = C_EVENT_CLASS_CODE
162425 AND l2.event_id = xet.event_id
162426
162427 )
162428 ;
162429 --
162430 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
162431
162432 trace
162433 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
162434 ,p_level => C_LEVEL_STATEMENT
162435 ,p_module => l_log_module);
162436
162437 END IF;
162438
162439
162440 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
162441 trace
162442 (p_msg => 'END of insert_sources_268'
162443 ,p_level => C_LEVEL_PROCEDURE
162444 ,p_module => l_log_module);
162445 END IF;
162446 EXCEPTION
162447 WHEN xla_exceptions_pkg.application_exception THEN
162448 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
162449 trace
162450 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
162451 ,p_level => C_LEVEL_EXCEPTION
162452 ,p_module => l_log_module);
162453 END IF;
162454 RAISE;
162455 WHEN OTHERS THEN
162456 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
162457 trace
162458 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
162459 ,p_level => C_LEVEL_EXCEPTION
162460 ,p_module => l_log_module);
162461 END IF;
162462 xla_exceptions_pkg.raise_message
162463 (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_268');
162464 END insert_sources_268;
162465 --
162466
162467 ---------------------------------------
162468 --
162469 -- PRIVATE FUNCTION
162470 -- EventClass_268
162471 --
162472 ----------------------------------------
162473 --
162474 FUNCTION EventClass_268
162475 (p_application_id IN NUMBER
162476 ,p_base_ledger_id IN NUMBER
162477 ,p_target_ledger_id IN NUMBER
162478 ,p_language IN VARCHAR2
162479 ,p_currency_code IN VARCHAR2
162480 ,p_sla_ledger_id IN NUMBER
162481 ,p_pad_start_date IN DATE
162482 ,p_pad_end_date IN DATE
162483 ,p_primary_ledger_id IN NUMBER)
162484 RETURN BOOLEAN IS
162485 --
162486 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'OSP_ALL';
162487 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'OSP';
162488
162489 l_calculate_acctd_flag VARCHAR2(1) :='N';
162490 l_calculate_g_l_flag VARCHAR2(1) :='N';
162491 --
162492 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
162493 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
162494 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
162495 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
162496 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
162497 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
162498 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
162499 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
162500 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
162501 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
162502 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
162503 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
162504 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
162505 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
162506 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
162507 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
162508 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
162509 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
162510 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
162511 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
162512 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
162513 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
162514 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
162515 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
162516 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
162517 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
162518
162519 l_event_id NUMBER;
162520 l_previous_event_id NUMBER;
162521 l_first_event_id NUMBER;
162522 l_last_event_id NUMBER;
162523
162524 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
162525 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
162526 --
162527 --
162528 l_result BOOLEAN := TRUE;
162529 l_rows NUMBER := 1000;
162530 l_event_type_name VARCHAR2(80) := 'All';
162531 l_event_class_name VARCHAR2(80) := 'Outside Processing';
162532 l_description VARCHAR2(4000);
162533 l_transaction_reversal NUMBER;
162534 l_ae_header_id NUMBER;
162535 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
162536 l_log_module VARCHAR2(240);
162537 --
162538 l_acct_reversal_source VARCHAR2(30);
162539 l_trx_reversal_source VARCHAR2(30);
162540
162541 l_continue_with_lines BOOLEAN := TRUE;
162542 --
162543 l_acc_rev_gl_date_source DATE; -- 4262811
162544 --
162545 type t_array_event_id is table of number index by binary_integer;
162546
162547 l_rec_array_event t_rec_array_event;
162548 l_null_rec_array_event t_rec_array_event;
162549 l_array_ae_header_id xla_number_array_type;
162550 l_actual_flag VARCHAR2(1) := NULL;
162551 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
162552 l_balance_type_code VARCHAR2(1) :=NULL;
162553 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
162554
162555 --
162556 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
162557 --
162558
162559 TYPE t_array_source_12 IS TABLE OF CST_XLA_WIP_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
162560 TYPE t_array_source_15 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
162561 TYPE t_array_source_19 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
162562 TYPE t_array_source_20 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
162563 TYPE t_array_source_38 IS TABLE OF CST_XLA_WIP_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
162564
162565 TYPE t_array_source_4 IS TABLE OF CST_XLA_WIP_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
162566 TYPE t_array_source_11 IS TABLE OF CST_XLA_WIP_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
162567 TYPE t_array_source_18 IS TABLE OF CST_XLA_WIP_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
162568 TYPE t_array_source_22 IS TABLE OF CST_XLA_WIP_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
162569 TYPE t_array_source_24 IS TABLE OF CST_XLA_WIP_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
162570
162571 l_array_source_12 t_array_source_12;
162572 l_array_source_12_meaning t_array_lookup_meaning;
162573 l_array_source_15 t_array_source_15;
162574 l_array_source_19 t_array_source_19;
162575 l_array_source_20 t_array_source_20;
162576 l_array_source_38 t_array_source_38;
162577 l_array_source_38_meaning t_array_lookup_meaning;
162578
162579 l_array_source_4 t_array_source_4;
162580 l_array_source_11 t_array_source_11;
162581 l_array_source_18 t_array_source_18;
162582 l_array_source_22 t_array_source_22;
162583 l_array_source_24 t_array_source_24;
162584
162585 --
162586 CURSOR header_cur
162587 IS
162588 SELECT /*+ leading(xet) cardinality(xet,1) */
162589 -- Event Class Code: OSP
162590 xet.entity_id
162591 ,xet.legal_entity_id
162592 ,xet.entity_code
162593 ,xet.transaction_number
162594 ,xet.event_id
162595 ,xet.event_class_code
162596 ,xet.event_type_code
162597 ,xet.event_number
162598 ,xet.event_date
162599 ,xet.transaction_date
162600 ,xet.reference_num_1
162601 ,xet.reference_num_2
162602 ,xet.reference_num_3
162603 ,xet.reference_num_4
162604 ,xet.reference_char_1
162605 ,xet.reference_char_2
162606 ,xet.reference_char_3
162607 ,xet.reference_char_4
162608 ,xet.reference_date_1
162609 ,xet.reference_date_2
162610 ,xet.reference_date_3
162611 ,xet.reference_date_4
162612 ,xet.event_created_by
162613 ,xet.budgetary_control_flag
162614 , h1.DISTRIBUTION_TYPE source_12
162615 , fvl12.meaning source_12_meaning
162616 , h1.CURRENCY_CODE source_15
162617 , h1.CURRENCY_CONVERSION_DATE source_19
162618 , h1.CURRENCY_CONVERSION_RATE source_20
162619 , h1.TRANSFER_TO_GL_INDICATOR source_38
162620 , fvl38.meaning source_38_meaning
162621 FROM xla_events_gt xet
162622 , CST_XLA_WIP_HEADERS_V h1
162623 , fnd_lookup_values fvl12
162624 , fnd_lookup_values fvl38
162625 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
162626 and xet.event_class_code = C_EVENT_CLASS_CODE
162627 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
162628 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
162629 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
162630 AND fvl12.view_application_id(+) = 700
162631 AND fvl12.language(+) = USERENV('LANG')
162632 AND fvl38.lookup_type(+) = 'YES_NO'
162633 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
162634 AND fvl38.view_application_id(+) = 0
162635 AND fvl38.language(+) = USERENV('LANG')
162636
162637 ORDER BY event_id
162638 ;
162639
162640
162641 --
162642 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
162643 IS
162644 SELECT /*+ leading(xet) cardinality(xet,1) */
162645 -- Event Class Code: OSP
162646 xet.entity_id
162647 ,xet.legal_entity_id
162648 ,xet.entity_code
162649 ,xet.transaction_number
162650 ,xet.event_id
162651 ,xet.event_class_code
162652 ,xet.event_type_code
162653 ,xet.event_number
162654 ,xet.event_date
162655 ,xet.transaction_date
162656 ,xet.reference_num_1
162657 ,xet.reference_num_2
162658 ,xet.reference_num_3
162659 ,xet.reference_num_4
162660 ,xet.reference_char_1
162661 ,xet.reference_char_2
162662 ,xet.reference_char_3
162663 ,xet.reference_char_4
162664 ,xet.reference_date_1
162665 ,xet.reference_date_2
162666 ,xet.reference_date_3
162667 ,xet.reference_date_4
162668 ,xet.event_created_by
162669 ,xet.budgetary_control_flag
162670 , l2.LINE_NUMBER
162671 , l2.CODE_COMBINATION_ID source_4
162672 , l2.DISTRIBUTION_IDENTIFIER source_11
162673 , l2.ENTERED_AMOUNT source_18
162674 , l2.ACCOUNTED_AMOUNT source_22
162675 , l2.ACCOUNTING_LINE_TYPE_CODE source_24
162676 FROM xla_events_gt xet
162677 , CST_XLA_WIP_LINES_V l2
162678 WHERE xet.event_id between x_first_event_id and x_last_event_id
162679 and xet.event_date between p_pad_start_date and p_pad_end_date
162680 and xet.event_class_code = C_EVENT_CLASS_CODE
162681 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
162682 ;
162683
162684 --
162685 BEGIN
162686 IF g_log_enabled THEN
162687 l_log_module := C_DEFAULT_MODULE||'.EventClass_268';
162688 END IF;
162689 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
162690 trace
162691 (p_msg => 'BEGIN of EventClass_268'
162692 ,p_level => C_LEVEL_PROCEDURE
162693 ,p_module => l_log_module);
162694 END IF;
162695
162696 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
162697 trace
162698 (p_msg => 'p_application_id = '||p_application_id||
162699 ' - p_base_ledger_id = '||p_base_ledger_id||
162700 ' - p_target_ledger_id = '||p_target_ledger_id||
162701 ' - p_language = '||p_language||
162702 ' - p_currency_code = '||p_currency_code||
162703 ' - p_sla_ledger_id = '||p_sla_ledger_id
162704 ,p_level => C_LEVEL_STATEMENT
162705 ,p_module => l_log_module);
162706 END IF;
162707 --
162708 -- initialze arrays
162709 --
162710 g_array_event.DELETE;
162711 l_rec_array_event := l_null_rec_array_event;
162712 --
162713 --------------------------------------
162714 -- 4262811 Initialze MPA Line Number
162715 --------------------------------------
162716 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
162717
162718 --
162719
162720 --
162721 OPEN header_cur;
162722 --
162723 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
162724 trace
162725 (p_msg => 'SQL - FETCH header_cur'
162726 ,p_level => C_LEVEL_STATEMENT
162727 ,p_module => l_log_module);
162728 END IF;
162729 --
162730 LOOP
162731 FETCH header_cur BULK COLLECT INTO
162732 l_array_entity_id
162733 , l_array_legal_entity_id
162734 , l_array_entity_code
162735 , l_array_transaction_num
162736 , l_array_event_id
162737 , l_array_class_code
162738 , l_array_event_type
162739 , l_array_event_number
162740 , l_array_event_date
162741 , l_array_transaction_date
162742 , l_array_reference_num_1
162743 , l_array_reference_num_2
162744 , l_array_reference_num_3
162745 , l_array_reference_num_4
162746 , l_array_reference_char_1
162747 , l_array_reference_char_2
162748 , l_array_reference_char_3
162749 , l_array_reference_char_4
162750 , l_array_reference_date_1
162751 , l_array_reference_date_2
162752 , l_array_reference_date_3
162753 , l_array_reference_date_4
162754 , l_array_event_created_by
162755 , l_array_budgetary_control_flag
162756 , l_array_source_12
162757 , l_array_source_12_meaning
162758 , l_array_source_15
162759 , l_array_source_19
162760 , l_array_source_20
162761 , l_array_source_38
162762 , l_array_source_38_meaning
162763 LIMIT l_rows;
162764 --
162765 IF (C_LEVEL_EVENT >= g_log_level) THEN
162766 trace
162767 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
162768 ,p_level => C_LEVEL_EVENT
162769 ,p_module => l_log_module);
162770 END IF;
162771 --
162772 EXIT WHEN l_array_entity_id.COUNT = 0;
162773
162774 -- initialize arrays
162775 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
162776 XLA_AE_LINES_PKG.g_rec_lines := NULL;
162777
162778 --
162779 -- Bug 4458708
162780 --
162781 XLA_AE_LINES_PKG.g_LineNumber := 0;
162782
162783
162784 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
162785 g_last_hdr_idx := l_array_event_id.LAST;
162786 --
162787 -- loop for the headers. Each iteration is for each header extract row
162788 -- fetched in header cursor
162789 --
162790 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
162791
162792 --
162793 -- set event info as cache for other routines to refer event attributes
162794 --
162795 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
162796 (p_application_id => p_application_id
162797 ,p_primary_ledger_id => p_primary_ledger_id
162798 ,p_base_ledger_id => p_base_ledger_id
162799 ,p_target_ledger_id => p_target_ledger_id
162800 ,p_entity_id => l_array_entity_id(hdr_idx)
162801 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
162802 ,p_entity_code => l_array_entity_code(hdr_idx)
162803 ,p_transaction_num => l_array_transaction_num(hdr_idx)
162804 ,p_event_id => l_array_event_id(hdr_idx)
162805 ,p_event_class_code => l_array_class_code(hdr_idx)
162806 ,p_event_type_code => l_array_event_type(hdr_idx)
162807 ,p_event_number => l_array_event_number(hdr_idx)
162808 ,p_event_date => l_array_event_date(hdr_idx)
162809 ,p_transaction_date => l_array_transaction_date(hdr_idx)
162810 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
162811 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
162812 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
162813 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
162814 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
162815 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
162816 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
162817 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
162818 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
162819 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
162820 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
162821 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
162822 ,p_event_created_by => l_array_event_created_by(hdr_idx)
162823 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
162824
162825 --
162826 -- set the status of entry to C_VALID (0)
162827 --
162828 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
162829
162830 --
162831 -- initialize a row for ae header
162832 --
162833 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
162834
162835 l_event_id := l_array_event_id(hdr_idx);
162836
162837 --
162838 -- storing the hdr_idx for event. May be used by line cursor.
162839 --
162840 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
162841
162842 --
162843 -- store sources from header extract. This can be improved to
162844 -- store only those sources from header extract that may be used in lines
162845 --
162846
162847 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
162848 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
162849 g_array_event(l_event_id).array_value_char('source_15') := l_array_source_15(hdr_idx);
162850 g_array_event(l_event_id).array_value_date('source_19') := l_array_source_19(hdr_idx);
162851 g_array_event(l_event_id).array_value_num('source_20') := l_array_source_20(hdr_idx);
162852 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
162853 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
162854
162855 --
162856 -- initilaize the status of ae headers for diffrent balance types
162857 -- the status is initialised to C_NOT_CREATED (2)
162858 --
162859 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
162860 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
162861 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
162862
162863 --
162864 -- call api to validate and store accounting attributes for header
162865 --
162866
162867 ------------------------------------------------------------
162868 -- Accrual Reversal : to get date for Standard Source (NONE)
162869 ------------------------------------------------------------
162870 l_acc_rev_gl_date_source := NULL;
162871
162872 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
162873 l_rec_acct_attrs.array_date_value(1) :=
162874 xla_ae_sources_pkg.GetSystemSourceDate(
162875 p_source_code => 'XLA_REFERENCE_DATE_1'
162876 , p_source_type_code => 'Y'
162877 , p_source_application_id => 602
162878 );
162879 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_TRANSFER_FLAG';
162880 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
162881
162882
162883 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
162884
162885 XLA_AE_HEADER_PKG.SetJeCategoryName;
162886
162887 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
162888 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
162889 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
162890 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
162891 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
162892
162893
162894 -- No header level analytical criteria
162895
162896 --
162897 --accounting attribute enhancement, bug 3612931
162898 --
162899 l_trx_reversal_source := SUBSTR(NULL, 1,30);
162900
162901 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
162902 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
162903
162904 xla_accounting_err_pkg.build_message
162905 (p_appli_s_name => 'XLA'
162906 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
162907 ,p_token_1 => 'ACCT_ATTR_NAME'
162908 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
162909 ,p_token_2 => 'PRODUCT_NAME'
162910 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
162911 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
162912 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
162913 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
162914
162915 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
162916 --
162917 -- following sets the accounting attributes needed to reverse
162918 -- accounting for a distributeion
162919 --
162920 xla_ae_lines_pkg.SetTrxReversalAttrs
162921 (p_event_id => l_event_id
162922 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
162923 ,p_trx_reversal_source => l_trx_reversal_source);
162924
162925 END IF;
162926
162927
162928 ----------------------------------------------------------------
162929 -- 4262811 - update the header statuses to invalid in need be
162930 ----------------------------------------------------------------
162931 --
162932 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
162933
162934
162935 -----------------------------------------------
162936 -- No accrual reversal for the event class/type
162937 -----------------------------------------------
162938 ----------------------------------------------------------------
162939
162940 --
162941 -- this ends the header loop iteration for one bulk fetch
162942 --
162943 END LOOP;
162944
162945 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
162946 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
162947
162948 --
162949 -- insert dummy rows into lines gt table that were created due to
162950 -- transaction reversals
162951 --
162952 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
162953 l_result := XLA_AE_LINES_PKG.InsertLines;
162954 END IF;
162955
162956 --
162957 -- reset the temp_line_num for each set of events fetched from header
162958 -- cursor rather than doing it for each new event in line cursor
162959 -- Bug 3939231
162960 --
162961 xla_ae_lines_pkg.g_temp_line_num := 0;
162962
162963
162964
162965 --
162966 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
162967 --
162968 --
162969 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
162970
162971 trace
162972 (p_msg => 'SQL - FETCH line_cur'
162973 ,p_level => C_LEVEL_STATEMENT
162974 ,p_module => l_log_module);
162975
162976 END IF;
162977 --
162978 --
162979 LOOP
162980 --
162981 FETCH line_cur BULK COLLECT INTO
162982 l_array_entity_id
162983 , l_array_legal_entity_id
162984 , l_array_entity_code
162985 , l_array_transaction_num
162986 , l_array_event_id
162987 , l_array_class_code
162988 , l_array_event_type
162989 , l_array_event_number
162990 , l_array_event_date
162991 , l_array_transaction_date
162992 , l_array_reference_num_1
162993 , l_array_reference_num_2
162994 , l_array_reference_num_3
162995 , l_array_reference_num_4
162996 , l_array_reference_char_1
162997 , l_array_reference_char_2
162998 , l_array_reference_char_3
162999 , l_array_reference_char_4
163000 , l_array_reference_date_1
163001 , l_array_reference_date_2
163002 , l_array_reference_date_3
163003 , l_array_reference_date_4
163004 , l_array_event_created_by
163005 , l_array_budgetary_control_flag
163006 , l_array_extract_line_num
163007 , l_array_source_4
163008 , l_array_source_11
163009 , l_array_source_18
163010 , l_array_source_22
163011 , l_array_source_24
163012 LIMIT l_rows;
163013
163014 --
163015 IF (C_LEVEL_EVENT >= g_log_level) THEN
163016 trace
163017 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
163018 ,p_level => C_LEVEL_EVENT
163019 ,p_module => l_log_module);
163020 END IF;
163021 --
163022 EXIT WHEN l_array_entity_id.count = 0;
163023
163024 XLA_AE_LINES_PKG.g_rec_lines := null;
163025
163026 --
163027 -- Bug 4458708
163028 --
163029 XLA_AE_LINES_PKG.g_LineNumber := 0;
163030 --
163031 --
163032
163033 FOR Idx IN 1..l_array_event_id.count LOOP
163034 --
163035 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
163036 --
163037 l_event_id := l_array_event_id(idx); -- 5648433
163038
163039 --
163040 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
163041 --
163042
163043 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
163044 (g_array_event(l_event_id).array_value_num('header_index'))
163045 ,'N'
163046 ) <> 'Y'
163047 THEN
163048 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
163049 trace
163050 (p_msg => 'Trancaction revesal option is not Y '
163051 ,p_level => C_LEVEL_STATEMENT
163052 ,p_module => l_log_module);
163053 END IF;
163054
163055 --
163056 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
163057 --
163058 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
163059 --
163060 -- set event info as cache for other routines to refer event attributes
163061 --
163062
163063 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
163064 l_previous_event_id := l_event_id;
163065
163066 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
163067 (p_application_id => p_application_id
163068 ,p_primary_ledger_id => p_primary_ledger_id
163069 ,p_base_ledger_id => p_base_ledger_id
163070 ,p_target_ledger_id => p_target_ledger_id
163071 ,p_entity_id => l_array_entity_id(Idx)
163072 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
163073 ,p_entity_code => l_array_entity_code(Idx)
163074 ,p_transaction_num => l_array_transaction_num(Idx)
163075 ,p_event_id => l_array_event_id(Idx)
163076 ,p_event_class_code => l_array_class_code(Idx)
163077 ,p_event_type_code => l_array_event_type(Idx)
163078 ,p_event_number => l_array_event_number(Idx)
163079 ,p_event_date => l_array_event_date(Idx)
163080 ,p_transaction_date => l_array_transaction_date(Idx)
163081 ,p_reference_num_1 => l_array_reference_num_1(Idx)
163082 ,p_reference_num_2 => l_array_reference_num_2(Idx)
163083 ,p_reference_num_3 => l_array_reference_num_3(Idx)
163084 ,p_reference_num_4 => l_array_reference_num_4(Idx)
163085 ,p_reference_char_1 => l_array_reference_char_1(Idx)
163086 ,p_reference_char_2 => l_array_reference_char_2(Idx)
163087 ,p_reference_char_3 => l_array_reference_char_3(Idx)
163088 ,p_reference_char_4 => l_array_reference_char_4(Idx)
163089 ,p_reference_date_1 => l_array_reference_date_1(Idx)
163090 ,p_reference_date_2 => l_array_reference_date_2(Idx)
163091 ,p_reference_date_3 => l_array_reference_date_3(Idx)
163092 ,p_reference_date_4 => l_array_reference_date_4(Idx)
163093 ,p_event_created_by => l_array_event_created_by(Idx)
163094 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
163095 --
163096 END IF;
163097
163098
163099
163100 --
163101 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
163102
163103 l_acct_reversal_source := SUBSTR(NULL, 1,30);
163104
163105 IF l_continue_with_lines THEN
163106 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
163107 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
163108
163109 xla_accounting_err_pkg.build_message
163110 (p_appli_s_name => 'XLA'
163111 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
163112 ,p_token_1 => 'LINE_NUMBER'
163113 ,p_value_1 => l_array_extract_line_num(Idx)
163114 ,p_token_2 => 'PRODUCT_NAME'
163115 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
163116 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
163117 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
163118 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
163119
163120 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
163121 --
163122 -- following sets the accounting attributes needed to reverse
163123 -- accounting for a distributeion
163124 --
163125
163126 --
163127 -- 5217187
163128 --
163129 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
163130 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
163131 g_array_event(l_event_id).array_value_num('header_index'));
163132 --
163133 --
163134
163135 -- No reversal code generated
163136
163137 xla_ae_lines_pkg.SetAcctReversalAttrs
163138 (p_event_id => l_event_id
163139 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
163140 ,p_calculate_acctd_flag => l_calculate_acctd_flag
163141 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
163142 END IF;
163143
163144 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
163145 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
163146
163147 --
163148 AcctLineType_188 (
163149 p_application_id => p_application_id
163150 ,p_event_id => l_event_id
163151 ,p_calculate_acctd_flag => l_calculate_acctd_flag
163152 ,p_calculate_g_l_flag => l_calculate_g_l_flag
163153 ,p_actual_flag => l_actual_flag
163154 ,p_balance_type_code => l_balance_type_code
163155 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
163156
163157 , p_source_4 => l_array_source_4(Idx)
163158 , p_source_11 => l_array_source_11(Idx)
163159 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
163160 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
163161 , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
163162 , p_source_18 => l_array_source_18(Idx)
163163 , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
163164 , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
163165 , p_source_22 => l_array_source_22(Idx)
163166 , p_source_24 => l_array_source_24(Idx)
163167 );
163168 If(l_balance_type_code = 'A') THEN
163169 l_actual_gain_loss_ref := l_gain_or_loss_ref;
163170 END IF;
163171
163172 --
163173
163174
163175 --
163176 AcctLineType_206 (
163177 p_application_id => p_application_id
163178 ,p_event_id => l_event_id
163179 ,p_calculate_acctd_flag => l_calculate_acctd_flag
163180 ,p_calculate_g_l_flag => l_calculate_g_l_flag
163181 ,p_actual_flag => l_actual_flag
163182 ,p_balance_type_code => l_balance_type_code
163183 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
163184
163185 , p_source_4 => l_array_source_4(Idx)
163186 , p_source_11 => l_array_source_11(Idx)
163187 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
163188 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
163189 , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
163190 , p_source_18 => l_array_source_18(Idx)
163191 , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
163192 , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
163193 , p_source_22 => l_array_source_22(Idx)
163194 , p_source_24 => l_array_source_24(Idx)
163195 );
163196 If(l_balance_type_code = 'A') THEN
163197 l_actual_gain_loss_ref := l_gain_or_loss_ref;
163198 END IF;
163199
163200 --
163201
163202
163203 --
163204 AcctLineType_214 (
163205 p_application_id => p_application_id
163206 ,p_event_id => l_event_id
163207 ,p_calculate_acctd_flag => l_calculate_acctd_flag
163208 ,p_calculate_g_l_flag => l_calculate_g_l_flag
163209 ,p_actual_flag => l_actual_flag
163210 ,p_balance_type_code => l_balance_type_code
163211 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
163212
163213 , p_source_4 => l_array_source_4(Idx)
163214 , p_source_11 => l_array_source_11(Idx)
163215 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
163216 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
163217 , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
163218 , p_source_18 => l_array_source_18(Idx)
163219 , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
163220 , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
163221 , p_source_22 => l_array_source_22(Idx)
163222 , p_source_24 => l_array_source_24(Idx)
163223 );
163224 If(l_balance_type_code = 'A') THEN
163225 l_actual_gain_loss_ref := l_gain_or_loss_ref;
163226 END IF;
163227
163228 --
163229
163230
163231 --
163232 AcctLineType_227 (
163233 p_application_id => p_application_id
163234 ,p_event_id => l_event_id
163235 ,p_calculate_acctd_flag => l_calculate_acctd_flag
163236 ,p_calculate_g_l_flag => l_calculate_g_l_flag
163237 ,p_actual_flag => l_actual_flag
163238 ,p_balance_type_code => l_balance_type_code
163239 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
163240
163241 , p_source_4 => l_array_source_4(Idx)
163242 , p_source_11 => l_array_source_11(Idx)
163243 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
163244 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
163245 , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
163246 , p_source_18 => l_array_source_18(Idx)
163247 , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
163248 , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
163249 , p_source_22 => l_array_source_22(Idx)
163250 , p_source_24 => l_array_source_24(Idx)
163251 );
163252 If(l_balance_type_code = 'A') THEN
163253 l_actual_gain_loss_ref := l_gain_or_loss_ref;
163254 END IF;
163255
163256 --
163257
163258
163259 --
163260 AcctLineType_235 (
163261 p_application_id => p_application_id
163262 ,p_event_id => l_event_id
163263 ,p_calculate_acctd_flag => l_calculate_acctd_flag
163264 ,p_calculate_g_l_flag => l_calculate_g_l_flag
163265 ,p_actual_flag => l_actual_flag
163266 ,p_balance_type_code => l_balance_type_code
163267 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
163268
163269 , p_source_4 => l_array_source_4(Idx)
163270 , p_source_11 => l_array_source_11(Idx)
163271 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
163272 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
163273 , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
163274 , p_source_18 => l_array_source_18(Idx)
163275 , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
163276 , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
163277 , p_source_22 => l_array_source_22(Idx)
163278 , p_source_24 => l_array_source_24(Idx)
163279 );
163280 If(l_balance_type_code = 'A') THEN
163281 l_actual_gain_loss_ref := l_gain_or_loss_ref;
163282 END IF;
163283
163284 --
163285
163286
163287 --
163288 AcctLineType_246 (
163289 p_application_id => p_application_id
163290 ,p_event_id => l_event_id
163291 ,p_calculate_acctd_flag => l_calculate_acctd_flag
163292 ,p_calculate_g_l_flag => l_calculate_g_l_flag
163293 ,p_actual_flag => l_actual_flag
163294 ,p_balance_type_code => l_balance_type_code
163295 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
163296
163297 , p_source_4 => l_array_source_4(Idx)
163298 , p_source_11 => l_array_source_11(Idx)
163299 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
163300 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
163301 , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
163302 , p_source_18 => l_array_source_18(Idx)
163303 , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
163304 , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
163305 , p_source_22 => l_array_source_22(Idx)
163306 , p_source_24 => l_array_source_24(Idx)
163307 );
163308 If(l_balance_type_code = 'A') THEN
163309 l_actual_gain_loss_ref := l_gain_or_loss_ref;
163310 END IF;
163311
163312 --
163313
163314 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
163315 -- or secondary ledger that has different currency with primary
163316 -- or alc that is calculated by sla
163317 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
163318 (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'))
163319
163320 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
163321 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
163322 AND (l_actual_flag = 'A')) THEN
163323 XLA_AE_LINES_PKG.CreateGainOrLossLines(
163324 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
163325 ,p_application_id => p_application_id
163326 ,p_amb_context_code => 'DEFAULT'
163327 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
163328 ,p_event_class_code => C_EVENT_CLASS_CODE
163329 ,p_event_type_code => C_EVENT_TYPE_CODE
163330
163331 ,p_gain_ccid => -1
163332 ,p_loss_ccid => -1
163333
163334 ,p_actual_flag => l_actual_flag
163335 ,p_enc_flag => null
163336 ,p_actual_g_l_ref => l_actual_gain_loss_ref
163337 ,p_enc_g_l_ref => null
163338 );
163339 END IF;
163340 END IF;
163341 END IF;
163342
163343 ELSE
163344 --
163345 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
163346 --
163347 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
163348 trace
163349 (p_msg => 'Trancaction revesal option is Y'
163350 ,p_level => C_LEVEL_STATEMENT
163351 ,p_module => l_log_module);
163352 END IF;
163353 END IF;
163354
163355 END LOOP;
163356 l_result := XLA_AE_LINES_PKG.InsertLines ;
163357 end loop;
163358 close line_cur;
163359
163360
163361 --
163362 -- insert headers into xla_ae_headers_gt table
163363 --
163364 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
163365
163366 -- insert into errors table here.
163367
163368 END LOOP;
163369
163370 --
163371 -- 4865292
163372 --
163373 -- Compare g_hdr_extract_count with event count in
163374 -- CreateHeadersAndLines.
163375 --
163376 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
163377
163378 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
163379 trace (p_msg => '# rows extracted from header extract objects '
163380 || ' (running total): '
163381 || g_hdr_extract_count
163382 ,p_level => C_LEVEL_STATEMENT
163383 ,p_module => l_log_module);
163384 END IF;
163385
163386 CLOSE header_cur;
163387 --
163388
163389 --
163390 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
163391 trace
163392 (p_msg => 'END of EventClass_268'
163393 ,p_level => C_LEVEL_PROCEDURE
163394 ,p_module => l_log_module);
163395 END IF;
163396 --
163397 RETURN l_result;
163398 EXCEPTION
163399 WHEN xla_exceptions_pkg.application_exception THEN
163400
163401 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
163402
163403
163404 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
163405
163406 RAISE;
163407
163408 WHEN NO_DATA_FOUND THEN
163409
163410 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
163411 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
163412
163413 FOR header_record IN header_cur
163414 LOOP
163415 l_array_header_events(header_record.event_id) := header_record.event_id;
163416 END LOOP;
163417
163418 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
163419 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
163420
163421 fnd_file.put_line(fnd_file.LOG, ' ');
163422 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
163423 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
163424 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
163425
163426 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
163427 LOOP
163428 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
163429 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
163430 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
163431 END IF;
163432 END LOOP;
163433
163434 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
163435 fnd_file.put_line(fnd_file.LOG, ' ');
163436
163437
163438 xla_exceptions_pkg.raise_message
163439 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_268');
163440
163441
163442 WHEN OTHERS THEN
163443 xla_exceptions_pkg.raise_message
163444 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_268');
163445 END EventClass_268;
163446 --
163447
163448 ---------------------------------------
163449 --
163450 -- PRIVATE PROCEDURE
163451 -- insert_sources_269
163452 --
163453 ----------------------------------------
163454 --
163455 PROCEDURE insert_sources_269(
163456 p_target_ledger_id IN NUMBER
163457 , p_language IN VARCHAR2
163458 , p_sla_ledger_id IN NUMBER
163459 , p_pad_start_date IN DATE
163460 , p_pad_end_date IN DATE
163461 )
163462 IS
163463
163464 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'PERIOD_END_ACCRUAL_ALL';
163465 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'PERIOD_END_ACCRUAL';
163466 p_apps_owner VARCHAR2(30);
163467 l_log_module VARCHAR2(240);
163468 BEGIN
163469 IF g_log_enabled THEN
163470 l_log_module := C_DEFAULT_MODULE||'.insert_sources_269';
163471 END IF;
163472 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
163473
163474 trace
163475 (p_msg => 'BEGIN of insert_sources_269'
163476 ,p_level => C_LEVEL_PROCEDURE
163477 ,p_module => l_log_module);
163478
163479 END IF;
163480
163481 -- select APPS owner
163482 SELECT oracle_username
163483 INTO p_apps_owner
163484 FROM fnd_oracle_userid
163485 WHERE read_only_flag = 'U'
163486 ;
163487
163488 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
163489 trace
163490 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
163491 ' - p_language = '||p_language||
163492 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
163493 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
163494 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
163495 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
163496 ,p_level => C_LEVEL_STATEMENT
163497 ,p_module => l_log_module);
163498 END IF;
163499
163500
163501 --
163502 INSERT INTO xla_diag_sources --hdr2
163503 (
163504 event_id
163505 , ledger_id
163506 , sla_ledger_id
163507 , description_language
163508 , object_name
163509 , object_type_code
163510 , line_number
163511 , source_application_id
163512 , source_type_code
163513 , source_code
163514 , source_value
163515 , source_meaning
163516 , created_by
163517 , creation_date
163518 , last_update_date
163519 , last_updated_by
163520 , last_update_login
163521 , program_update_date
163522 , program_application_id
163523 , program_id
163524 , request_id
163525 )
163526 SELECT
163527 event_id
163528 , p_target_ledger_id
163529 , p_sla_ledger_id
163530 , p_language
163531 , object_name
163532 , object_type_code
163533 , line_number
163534 , source_application_id
163535 , source_type_code
163536 , source_code
163537 , SUBSTR(source_value ,1,1996)
163538 , SUBSTR(source_meaning ,1,200)
163539 , xla_environment_pkg.g_Usr_Id
163540 , TRUNC(SYSDATE)
163541 , TRUNC(SYSDATE)
163542 , xla_environment_pkg.g_Usr_Id
163543 , xla_environment_pkg.g_Login_Id
163544 , TRUNC(SYSDATE)
163545 , xla_environment_pkg.g_Prog_Appl_Id
163546 , xla_environment_pkg.g_Prog_Id
163547 , xla_environment_pkg.g_Req_Id
163548 FROM (
163549 SELECT xet.event_id event_id
163550 , 0 line_number
163551 , CASE r
163552 WHEN 1 THEN 'CST_XLA_RCV_REF_V'
163553 WHEN 2 THEN 'CST_XLA_RCV_REF_V'
163554 WHEN 3 THEN 'CST_XLA_RCV_REF_V'
163555 WHEN 4 THEN 'CST_XLA_RCV_REF_V'
163556 WHEN 5 THEN 'CST_XLA_RCV_REF_V'
163557 WHEN 6 THEN 'CST_XLA_RCV_HEADERS_V'
163558 WHEN 7 THEN 'PO_DISTS_REF_V'
163559 WHEN 8 THEN 'CST_XLA_RCV_REF_V'
163560 WHEN 9 THEN 'CST_XLA_RCV_HEADERS_V'
163561 WHEN 10 THEN 'CST_XLA_RCV_REF_V'
163562 WHEN 11 THEN 'PSA_CST_XLA_PEA_UPG_V'
163563 WHEN 12 THEN 'CST_XLA_RCV_HEADERS_V'
163564 WHEN 13 THEN 'CST_XLA_RCV_HEADERS_V'
163565 WHEN 14 THEN 'CST_XLA_RCV_HEADERS_V'
163566 WHEN 15 THEN 'PO_HEADERS_REF_V'
163567 WHEN 16 THEN 'CST_XLA_RCV_HEADERS_V'
163568
163569 ELSE null
163570 END object_name
163571 , CASE r
163572 WHEN 1 THEN 'HEADER'
163573 WHEN 2 THEN 'HEADER'
163574 WHEN 3 THEN 'HEADER'
163575 WHEN 4 THEN 'HEADER'
163576 WHEN 5 THEN 'HEADER'
163577 WHEN 6 THEN 'HEADER'
163578 WHEN 7 THEN 'HEADER'
163579 WHEN 8 THEN 'HEADER'
163580 WHEN 9 THEN 'HEADER'
163581 WHEN 10 THEN 'HEADER'
163582 WHEN 11 THEN 'HEADER'
163583 WHEN 12 THEN 'HEADER'
163584 WHEN 13 THEN 'HEADER'
163585 WHEN 14 THEN 'HEADER'
163586 WHEN 15 THEN 'HEADER'
163587 WHEN 16 THEN 'HEADER'
163588
163589 ELSE null
163590 END object_type_code
163591 , CASE r
163592 WHEN 1 THEN '707'
163593 WHEN 2 THEN '707'
163594 WHEN 3 THEN '707'
163595 WHEN 4 THEN '707'
163596 WHEN 5 THEN '707'
163597 WHEN 6 THEN '707'
163598 WHEN 7 THEN '201'
163599 WHEN 8 THEN '707'
163600 WHEN 9 THEN '707'
163601 WHEN 10 THEN '707'
163602 WHEN 11 THEN '707'
163603 WHEN 12 THEN '707'
163604 WHEN 13 THEN '707'
163605 WHEN 14 THEN '707'
163606 WHEN 15 THEN '201'
163607 WHEN 16 THEN '707'
163608
163609 ELSE null
163610 END source_application_id
163611 , 'S' source_type_code
163612 , CASE r
163613 WHEN 1 THEN 'APPLIED_TO_APPL_ID'
163614 WHEN 2 THEN 'APPLIED_TO_DIST_LINK_TYPE'
163615 WHEN 3 THEN 'APPLIED_TO_ENTITY_CODE'
163616 WHEN 4 THEN 'PO_DISTRIBUTION_ID'
163617 WHEN 5 THEN 'APPLIED_TO_PO_DOC_ID'
163618 WHEN 6 THEN 'DISTRIBUTION_TYPE'
163619 WHEN 7 THEN 'PO_BUDGET_ACCOUNT'
163620 WHEN 8 THEN 'ENCUM_REVERSAL_AMOUNT_ENTERED'
163621 WHEN 9 THEN 'CURRENCY_CODE'
163622 WHEN 10 THEN 'ENCUMBRANCE_REVERSAL_AMOUNT'
163623 WHEN 11 THEN 'CST_PEA_ENC_UPG_OPTION'
163624 WHEN 12 THEN 'CURRENCY_CONVERSION_DATE'
163625 WHEN 13 THEN 'CURRENCY_CONVERSION_RATE'
163626 WHEN 14 THEN 'CURRENCY_CONVERSION_TYPE'
163627 WHEN 15 THEN 'PURCH_ENCUMBRANCE_TYPE_ID'
163628 WHEN 16 THEN 'TRANSFER_TO_GL_INDICATOR'
163629
163630 ELSE null
163631 END source_code
163632 , CASE r
163633 WHEN 1 THEN TO_CHAR(h3.APPLIED_TO_APPL_ID)
163634 WHEN 2 THEN TO_CHAR(h3.APPLIED_TO_DIST_LINK_TYPE)
163635 WHEN 3 THEN TO_CHAR(h3.APPLIED_TO_ENTITY_CODE)
163636 WHEN 4 THEN TO_CHAR(h3.PO_DISTRIBUTION_ID)
163637 WHEN 5 THEN TO_CHAR(h3.APPLIED_TO_PO_DOC_ID)
163638 WHEN 6 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
163639 WHEN 7 THEN TO_CHAR(h4.PO_BUDGET_ACCOUNT)
163640 WHEN 8 THEN TO_CHAR(h3.ENCUM_REVERSAL_AMOUNT_ENTERED)
163641 WHEN 9 THEN TO_CHAR(h1.CURRENCY_CODE)
163642 WHEN 10 THEN TO_CHAR(h3.ENCUMBRANCE_REVERSAL_AMOUNT)
163643 WHEN 11 THEN TO_CHAR(h6.CST_PEA_ENC_UPG_OPTION)
163644 WHEN 12 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
163645 WHEN 13 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
163646 WHEN 14 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
163647 WHEN 15 THEN TO_CHAR(h5.PURCH_ENCUMBRANCE_TYPE_ID)
163648 WHEN 16 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
163649
163650 ELSE null
163651 END source_value
163652 , CASE r
163653 WHEN 6 THEN fvl12.meaning
163654 WHEN 16 THEN fvl38.meaning
163655
163656 ELSE null
163657 END source_meaning
163658 FROM xla_events_gt xet
163659 , CST_XLA_RCV_HEADERS_V h1
163660 , CST_XLA_RCV_REF_V h3
163661 , PO_DISTS_REF_V h4
163662 , PO_HEADERS_REF_V h5
163663 , PSA_CST_XLA_PEA_UPG_V h6
163664 , fnd_lookup_values fvl12
163665 , fnd_lookup_values fvl38
163666 ,(select rownum r from all_objects where rownum <= 16 and owner = p_apps_owner)
163667 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
163668 AND xet.event_class_code = C_EVENT_CLASS_CODE
163669 AND h1.event_id = xet.event_id
163670 AND h3.ref_rcv_accounting_event_id = h1.rcv_accounting_event_id AND h3.po_header_id = h4.po_header_id (+) and h3.po_distribution_id = h4.po_distribution_id (+) AND h3.po_header_id = h5.po_header_id (+) AND h3.ref_rcv_accounting_event_id = h6.accounting_event_id (+) AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
163671 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
163672 AND fvl12.view_application_id(+) = 700
163673 AND fvl12.language(+) = USERENV('LANG')
163674 AND fvl38.lookup_type(+) = 'YES_NO'
163675 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
163676 AND fvl38.view_application_id(+) = 0
163677 AND fvl38.language(+) = USERENV('LANG')
163678
163679 )
163680 ;
163681 --
163682 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
163683
163684 trace
163685 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
163686 ,p_level => C_LEVEL_STATEMENT
163687 ,p_module => l_log_module);
163688
163689 END IF;
163690 --
163691
163692
163693
163694 --
163695 INSERT INTO xla_diag_sources --line2
163696 (
163697 event_id
163698 , ledger_id
163699 , sla_ledger_id
163700 , description_language
163701 , object_name
163702 , object_type_code
163703 , line_number
163704 , source_application_id
163705 , source_type_code
163706 , source_code
163707 , source_value
163708 , source_meaning
163709 , created_by
163710 , creation_date
163711 , last_update_date
163712 , last_updated_by
163713 , last_update_login
163714 , program_update_date
163715 , program_application_id
163716 , program_id
163717 , request_id
163718 )
163719 SELECT event_id
163720 , p_target_ledger_id
163721 , p_sla_ledger_id
163722 , p_language
163723 , object_name
163724 , object_type_code
163725 , line_number
163726 , source_application_id
163727 , source_type_code
163728 , source_code
163729 , SUBSTR(source_value,1,1996)
163730 , SUBSTR(source_meaning ,1,200)
163731 , xla_environment_pkg.g_Usr_Id
163732 , TRUNC(SYSDATE)
163733 , TRUNC(SYSDATE)
163734 , xla_environment_pkg.g_Usr_Id
163735 , xla_environment_pkg.g_Login_Id
163736 , TRUNC(SYSDATE)
163737 , xla_environment_pkg.g_Prog_Appl_Id
163738 , xla_environment_pkg.g_Prog_Id
163739 , xla_environment_pkg.g_Req_Id
163740 FROM (
163741 SELECT xet.event_id event_id
163742 , l2.line_number line_number
163743 , CASE r
163744 WHEN 1 THEN 'CST_XLA_RCV_LINES_V'
163745 WHEN 2 THEN 'CST_XLA_RCV_LINES_V'
163746 WHEN 3 THEN 'CST_XLA_RCV_LINES_V'
163747 WHEN 4 THEN 'CST_XLA_RCV_LINES_V'
163748 WHEN 5 THEN 'CST_XLA_RCV_LINES_V'
163749
163750 ELSE null
163751 END object_name
163752 , CASE r
163753 WHEN 1 THEN 'LINE'
163754 WHEN 2 THEN 'LINE'
163755 WHEN 3 THEN 'LINE'
163756 WHEN 4 THEN 'LINE'
163757 WHEN 5 THEN 'LINE'
163758
163759 ELSE null
163760 END object_type_code
163761 , CASE r
163762 WHEN 1 THEN '707'
163763 WHEN 2 THEN '707'
163764 WHEN 3 THEN '707'
163765 WHEN 4 THEN '707'
163766 WHEN 5 THEN '707'
163767
163768 ELSE null
163769 END source_application_id
163770 , 'S' source_type_code
163771 , CASE r
163772 WHEN 1 THEN 'CODE_COMBINATION_ID'
163773 WHEN 2 THEN 'RCV_ACCOUNTING_LINE_TYPE'
163774 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER'
163775 WHEN 4 THEN 'ENTERED_AMOUNT'
163776 WHEN 5 THEN 'ACCOUNTED_AMOUNT'
163777
163778 ELSE null
163779 END source_code
163780 , CASE r
163781 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
163782 WHEN 2 THEN TO_CHAR(l2.RCV_ACCOUNTING_LINE_TYPE)
163783 WHEN 3 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
163784 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
163785 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
163786
163787 ELSE null
163788 END source_value
163789 , null source_meaning
163790 FROM xla_events_gt xet
163791 , CST_XLA_RCV_LINES_V l2
163792 , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
163793 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
163794 AND xet.event_class_code = C_EVENT_CLASS_CODE
163795 AND l2.event_id = xet.event_id
163796
163797 )
163798 ;
163799 --
163800 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
163801
163802 trace
163803 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
163804 ,p_level => C_LEVEL_STATEMENT
163805 ,p_module => l_log_module);
163806
163807 END IF;
163808
163809
163810 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
163811 trace
163812 (p_msg => 'END of insert_sources_269'
163813 ,p_level => C_LEVEL_PROCEDURE
163814 ,p_module => l_log_module);
163815 END IF;
163816 EXCEPTION
163817 WHEN xla_exceptions_pkg.application_exception THEN
163818 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
163819 trace
163820 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
163821 ,p_level => C_LEVEL_EXCEPTION
163822 ,p_module => l_log_module);
163823 END IF;
163824 RAISE;
163825 WHEN OTHERS THEN
163826 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
163827 trace
163828 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
163829 ,p_level => C_LEVEL_EXCEPTION
163830 ,p_module => l_log_module);
163831 END IF;
163832 xla_exceptions_pkg.raise_message
163833 (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_269');
163834 END insert_sources_269;
163835 --
163836
163837 ---------------------------------------
163838 --
163839 -- PRIVATE FUNCTION
163840 -- EventClass_269
163841 --
163842 ----------------------------------------
163843 --
163844 FUNCTION EventClass_269
163845 (p_application_id IN NUMBER
163846 ,p_base_ledger_id IN NUMBER
163847 ,p_target_ledger_id IN NUMBER
163848 ,p_language IN VARCHAR2
163849 ,p_currency_code IN VARCHAR2
163850 ,p_sla_ledger_id IN NUMBER
163851 ,p_pad_start_date IN DATE
163852 ,p_pad_end_date IN DATE
163853 ,p_primary_ledger_id IN NUMBER)
163854 RETURN BOOLEAN IS
163855 --
163856 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'PERIOD_END_ACCRUAL_ALL';
163857 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'PERIOD_END_ACCRUAL';
163858
163859 l_calculate_acctd_flag VARCHAR2(1) :='N';
163860 l_calculate_g_l_flag VARCHAR2(1) :='N';
163861 --
163862 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
163863 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
163864 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
163865 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
163866 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
163867 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
163868 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
163869 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
163870 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
163871 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
163872 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
163873 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
163874 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
163875 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
163876 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
163877 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
163878 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
163879 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
163880 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
163881 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
163882 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
163883 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
163884 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
163885 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
163886 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
163887 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
163888
163889 l_event_id NUMBER;
163890 l_previous_event_id NUMBER;
163891 l_first_event_id NUMBER;
163892 l_last_event_id NUMBER;
163893
163894 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
163895 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
163896 --
163897 --
163898 l_result BOOLEAN := TRUE;
163899 l_rows NUMBER := 1000;
163900 l_event_type_name VARCHAR2(80) := 'All';
163901 l_event_class_name VARCHAR2(80) := 'Period End Accrual';
163902 l_description VARCHAR2(4000);
163903 l_transaction_reversal NUMBER;
163904 l_ae_header_id NUMBER;
163905 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
163906 l_log_module VARCHAR2(240);
163907 --
163908 l_acct_reversal_source VARCHAR2(30);
163909 l_trx_reversal_source VARCHAR2(30);
163910
163911 l_continue_with_lines BOOLEAN := TRUE;
163912 --
163913 l_acc_rev_gl_date_source DATE; -- 4262811
163914 --
163915 type t_array_event_id is table of number index by binary_integer;
163916
163917 l_rec_array_event t_rec_array_event;
163918 l_null_rec_array_event t_rec_array_event;
163919 l_array_ae_header_id xla_number_array_type;
163920 l_actual_flag VARCHAR2(1) := NULL;
163921 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
163922 l_balance_type_code VARCHAR2(1) :=NULL;
163923 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
163924
163925 --
163926 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
163927 --
163928
163929 TYPE t_array_source_6 IS TABLE OF CST_XLA_RCV_REF_V.APPLIED_TO_APPL_ID%TYPE INDEX BY BINARY_INTEGER;
163930 TYPE t_array_source_7 IS TABLE OF CST_XLA_RCV_REF_V.APPLIED_TO_DIST_LINK_TYPE%TYPE INDEX BY BINARY_INTEGER;
163931 TYPE t_array_source_8 IS TABLE OF CST_XLA_RCV_REF_V.APPLIED_TO_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
163932 TYPE t_array_source_9 IS TABLE OF CST_XLA_RCV_REF_V.PO_DISTRIBUTION_ID%TYPE INDEX BY BINARY_INTEGER;
163933 TYPE t_array_source_10 IS TABLE OF CST_XLA_RCV_REF_V.APPLIED_TO_PO_DOC_ID%TYPE INDEX BY BINARY_INTEGER;
163934 TYPE t_array_source_12 IS TABLE OF CST_XLA_RCV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
163935 TYPE t_array_source_13 IS TABLE OF PO_DISTS_REF_V.PO_BUDGET_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
163936 TYPE t_array_source_14 IS TABLE OF CST_XLA_RCV_REF_V.ENCUM_REVERSAL_AMOUNT_ENTERED%TYPE INDEX BY BINARY_INTEGER;
163937 TYPE t_array_source_15 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
163938 TYPE t_array_source_16 IS TABLE OF CST_XLA_RCV_REF_V.ENCUMBRANCE_REVERSAL_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
163939 TYPE t_array_source_17 IS TABLE OF PSA_CST_XLA_PEA_UPG_V.CST_PEA_ENC_UPG_OPTION%TYPE INDEX BY BINARY_INTEGER;
163940 TYPE t_array_source_19 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
163941 TYPE t_array_source_20 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
163942 TYPE t_array_source_21 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
163943 TYPE t_array_source_23 IS TABLE OF PO_HEADERS_REF_V.PURCH_ENCUMBRANCE_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
163944 TYPE t_array_source_38 IS TABLE OF CST_XLA_RCV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
163945
163946 TYPE t_array_source_4 IS TABLE OF CST_XLA_RCV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
163947 TYPE t_array_source_5 IS TABLE OF CST_XLA_RCV_LINES_V.RCV_ACCOUNTING_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
163948 TYPE t_array_source_11 IS TABLE OF CST_XLA_RCV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
163949 TYPE t_array_source_18 IS TABLE OF CST_XLA_RCV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
163950 TYPE t_array_source_22 IS TABLE OF CST_XLA_RCV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
163951
163952 l_array_source_6 t_array_source_6;
163953 l_array_source_7 t_array_source_7;
163954 l_array_source_8 t_array_source_8;
163955 l_array_source_9 t_array_source_9;
163956 l_array_source_10 t_array_source_10;
163957 l_array_source_12 t_array_source_12;
163958 l_array_source_12_meaning t_array_lookup_meaning;
163959 l_array_source_13 t_array_source_13;
163960 l_array_source_14 t_array_source_14;
163961 l_array_source_15 t_array_source_15;
163962 l_array_source_16 t_array_source_16;
163963 l_array_source_17 t_array_source_17;
163964 l_array_source_19 t_array_source_19;
163965 l_array_source_20 t_array_source_20;
163966 l_array_source_21 t_array_source_21;
163967 l_array_source_23 t_array_source_23;
163968 l_array_source_38 t_array_source_38;
163969 l_array_source_38_meaning t_array_lookup_meaning;
163970
163971 l_array_source_4 t_array_source_4;
163972 l_array_source_5 t_array_source_5;
163973 l_array_source_11 t_array_source_11;
163974 l_array_source_18 t_array_source_18;
163975 l_array_source_22 t_array_source_22;
163976
163977 --
163978 CURSOR header_cur
163979 IS
163980 SELECT /*+ leading(xet) cardinality(xet,1) */
163981 -- Event Class Code: PERIOD_END_ACCRUAL
163982 xet.entity_id
163983 ,xet.legal_entity_id
163984 ,xet.entity_code
163985 ,xet.transaction_number
163986 ,xet.event_id
163987 ,xet.event_class_code
163988 ,xet.event_type_code
163989 ,xet.event_number
163990 ,xet.event_date
163991 ,xet.transaction_date
163992 ,xet.reference_num_1
163993 ,xet.reference_num_2
163994 ,xet.reference_num_3
163995 ,xet.reference_num_4
163996 ,xet.reference_char_1
163997 ,xet.reference_char_2
163998 ,xet.reference_char_3
163999 ,xet.reference_char_4
164000 ,xet.reference_date_1
164001 ,xet.reference_date_2
164002 ,xet.reference_date_3
164003 ,xet.reference_date_4
164004 ,xet.event_created_by
164005 ,xet.budgetary_control_flag
164006 , h3.APPLIED_TO_APPL_ID source_6
164007 , h3.APPLIED_TO_DIST_LINK_TYPE source_7
164008 , h3.APPLIED_TO_ENTITY_CODE source_8
164009 , h3.PO_DISTRIBUTION_ID source_9
164010 , h3.APPLIED_TO_PO_DOC_ID source_10
164011 , h1.DISTRIBUTION_TYPE source_12
164012 , fvl12.meaning source_12_meaning
164013 , h4.PO_BUDGET_ACCOUNT source_13
164014 , h3.ENCUM_REVERSAL_AMOUNT_ENTERED source_14
164015 , h1.CURRENCY_CODE source_15
164016 , h3.ENCUMBRANCE_REVERSAL_AMOUNT source_16
164017 , h6.CST_PEA_ENC_UPG_OPTION source_17
164018 , h1.CURRENCY_CONVERSION_DATE source_19
164019 , h1.CURRENCY_CONVERSION_RATE source_20
164020 , h1.CURRENCY_CONVERSION_TYPE source_21
164021 , h5.PURCH_ENCUMBRANCE_TYPE_ID source_23
164022 , h1.TRANSFER_TO_GL_INDICATOR source_38
164023 , fvl38.meaning source_38_meaning
164024 FROM xla_events_gt xet
164025 , CST_XLA_RCV_HEADERS_V h1
164026 , CST_XLA_RCV_REF_V h3
164027 , PO_DISTS_REF_V h4
164028 , PO_HEADERS_REF_V h5
164029 , PSA_CST_XLA_PEA_UPG_V h6
164030 , fnd_lookup_values fvl12
164031 , fnd_lookup_values fvl38
164032 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
164033 and xet.event_class_code = C_EVENT_CLASS_CODE
164034 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
164035 AND h3.REF_RCV_ACCOUNTING_EVENT_ID = h1.RCV_ACCOUNTING_EVENT_ID AND h3.po_header_id = h4.po_header_id (+) AND h3.po_distribution_id = h4.po_distribution_id (+) AND h3.po_header_id = h5.po_header_id (+) AND h3.ref_rcv_accounting_event_id = h6.accounting_event_id (+) AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
164036 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
164037 AND fvl12.view_application_id(+) = 700
164038 AND fvl12.language(+) = USERENV('LANG')
164039 AND fvl38.lookup_type(+) = 'YES_NO'
164040 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
164041 AND fvl38.view_application_id(+) = 0
164042 AND fvl38.language(+) = USERENV('LANG')
164043
164044 ORDER BY event_id
164045 ;
164046
164047
164048 --
164049 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
164050 IS
164051 SELECT /*+ leading(xet) cardinality(xet,1) */
164052 -- Event Class Code: PERIOD_END_ACCRUAL
164053 xet.entity_id
164054 ,xet.legal_entity_id
164055 ,xet.entity_code
164056 ,xet.transaction_number
164057 ,xet.event_id
164058 ,xet.event_class_code
164059 ,xet.event_type_code
164060 ,xet.event_number
164061 ,xet.event_date
164062 ,xet.transaction_date
164063 ,xet.reference_num_1
164064 ,xet.reference_num_2
164065 ,xet.reference_num_3
164066 ,xet.reference_num_4
164067 ,xet.reference_char_1
164068 ,xet.reference_char_2
164069 ,xet.reference_char_3
164070 ,xet.reference_char_4
164071 ,xet.reference_date_1
164072 ,xet.reference_date_2
164073 ,xet.reference_date_3
164074 ,xet.reference_date_4
164075 ,xet.event_created_by
164076 ,xet.budgetary_control_flag
164077 , l2.LINE_NUMBER
164078 , l2.CODE_COMBINATION_ID source_4
164079 , l2.RCV_ACCOUNTING_LINE_TYPE source_5
164080 , l2.DISTRIBUTION_IDENTIFIER source_11
164081 , l2.ENTERED_AMOUNT source_18
164082 , l2.ACCOUNTED_AMOUNT source_22
164083 FROM xla_events_gt xet
164084 , CST_XLA_RCV_LINES_V l2
164085 WHERE xet.event_id between x_first_event_id and x_last_event_id
164086 and xet.event_date between p_pad_start_date and p_pad_end_date
164087 and xet.event_class_code = C_EVENT_CLASS_CODE
164088 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
164089 ;
164090
164091 --
164092 BEGIN
164093 IF g_log_enabled THEN
164094 l_log_module := C_DEFAULT_MODULE||'.EventClass_269';
164095 END IF;
164096 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
164097 trace
164098 (p_msg => 'BEGIN of EventClass_269'
164099 ,p_level => C_LEVEL_PROCEDURE
164100 ,p_module => l_log_module);
164101 END IF;
164102
164103 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
164104 trace
164105 (p_msg => 'p_application_id = '||p_application_id||
164106 ' - p_base_ledger_id = '||p_base_ledger_id||
164107 ' - p_target_ledger_id = '||p_target_ledger_id||
164108 ' - p_language = '||p_language||
164109 ' - p_currency_code = '||p_currency_code||
164110 ' - p_sla_ledger_id = '||p_sla_ledger_id
164111 ,p_level => C_LEVEL_STATEMENT
164112 ,p_module => l_log_module);
164113 END IF;
164114 --
164115 -- initialze arrays
164116 --
164117 g_array_event.DELETE;
164118 l_rec_array_event := l_null_rec_array_event;
164119 --
164120 --------------------------------------
164121 -- 4262811 Initialze MPA Line Number
164122 --------------------------------------
164123 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
164124
164125 --
164126
164127 --
164128 OPEN header_cur;
164129 --
164130 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
164131 trace
164132 (p_msg => 'SQL - FETCH header_cur'
164133 ,p_level => C_LEVEL_STATEMENT
164134 ,p_module => l_log_module);
164135 END IF;
164136 --
164137 LOOP
164138 FETCH header_cur BULK COLLECT INTO
164139 l_array_entity_id
164140 , l_array_legal_entity_id
164141 , l_array_entity_code
164142 , l_array_transaction_num
164143 , l_array_event_id
164144 , l_array_class_code
164145 , l_array_event_type
164146 , l_array_event_number
164147 , l_array_event_date
164148 , l_array_transaction_date
164149 , l_array_reference_num_1
164150 , l_array_reference_num_2
164151 , l_array_reference_num_3
164152 , l_array_reference_num_4
164153 , l_array_reference_char_1
164154 , l_array_reference_char_2
164155 , l_array_reference_char_3
164156 , l_array_reference_char_4
164157 , l_array_reference_date_1
164158 , l_array_reference_date_2
164159 , l_array_reference_date_3
164160 , l_array_reference_date_4
164161 , l_array_event_created_by
164162 , l_array_budgetary_control_flag
164163 , l_array_source_6
164164 , l_array_source_7
164165 , l_array_source_8
164166 , l_array_source_9
164167 , l_array_source_10
164168 , l_array_source_12
164169 , l_array_source_12_meaning
164170 , l_array_source_13
164171 , l_array_source_14
164172 , l_array_source_15
164173 , l_array_source_16
164174 , l_array_source_17
164175 , l_array_source_19
164176 , l_array_source_20
164177 , l_array_source_21
164178 , l_array_source_23
164179 , l_array_source_38
164180 , l_array_source_38_meaning
164181 LIMIT l_rows;
164182 --
164183 IF (C_LEVEL_EVENT >= g_log_level) THEN
164184 trace
164185 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
164186 ,p_level => C_LEVEL_EVENT
164187 ,p_module => l_log_module);
164188 END IF;
164189 --
164190 EXIT WHEN l_array_entity_id.COUNT = 0;
164191
164192 -- initialize arrays
164193 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
164194 XLA_AE_LINES_PKG.g_rec_lines := NULL;
164195
164196 --
164197 -- Bug 4458708
164198 --
164199 XLA_AE_LINES_PKG.g_LineNumber := 0;
164200
164201
164202 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
164203 g_last_hdr_idx := l_array_event_id.LAST;
164204 --
164205 -- loop for the headers. Each iteration is for each header extract row
164206 -- fetched in header cursor
164207 --
164208 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
164209
164210 --
164211 -- set event info as cache for other routines to refer event attributes
164212 --
164213 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
164214 (p_application_id => p_application_id
164215 ,p_primary_ledger_id => p_primary_ledger_id
164216 ,p_base_ledger_id => p_base_ledger_id
164217 ,p_target_ledger_id => p_target_ledger_id
164218 ,p_entity_id => l_array_entity_id(hdr_idx)
164219 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
164220 ,p_entity_code => l_array_entity_code(hdr_idx)
164221 ,p_transaction_num => l_array_transaction_num(hdr_idx)
164222 ,p_event_id => l_array_event_id(hdr_idx)
164223 ,p_event_class_code => l_array_class_code(hdr_idx)
164224 ,p_event_type_code => l_array_event_type(hdr_idx)
164225 ,p_event_number => l_array_event_number(hdr_idx)
164226 ,p_event_date => l_array_event_date(hdr_idx)
164227 ,p_transaction_date => l_array_transaction_date(hdr_idx)
164228 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
164229 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
164230 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
164231 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
164232 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
164233 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
164234 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
164235 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
164236 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
164237 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
164238 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
164239 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
164240 ,p_event_created_by => l_array_event_created_by(hdr_idx)
164241 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
164242
164243 --
164244 -- set the status of entry to C_VALID (0)
164245 --
164246 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
164247
164248 --
164249 -- initialize a row for ae header
164250 --
164251 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
164252
164253 l_event_id := l_array_event_id(hdr_idx);
164254
164255 --
164256 -- storing the hdr_idx for event. May be used by line cursor.
164257 --
164258 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
164259
164260 --
164261 -- store sources from header extract. This can be improved to
164262 -- store only those sources from header extract that may be used in lines
164263 --
164264
164265 g_array_event(l_event_id).array_value_num('source_6') := l_array_source_6(hdr_idx);
164266 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
164267 g_array_event(l_event_id).array_value_char('source_8') := l_array_source_8(hdr_idx);
164268 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
164269 g_array_event(l_event_id).array_value_num('source_10') := l_array_source_10(hdr_idx);
164270 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
164271 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
164272 g_array_event(l_event_id).array_value_num('source_13') := l_array_source_13(hdr_idx);
164273 g_array_event(l_event_id).array_value_num('source_14') := l_array_source_14(hdr_idx);
164274 g_array_event(l_event_id).array_value_char('source_15') := l_array_source_15(hdr_idx);
164275 g_array_event(l_event_id).array_value_num('source_16') := l_array_source_16(hdr_idx);
164276 g_array_event(l_event_id).array_value_char('source_17') := l_array_source_17(hdr_idx);
164277 g_array_event(l_event_id).array_value_date('source_19') := l_array_source_19(hdr_idx);
164278 g_array_event(l_event_id).array_value_num('source_20') := l_array_source_20(hdr_idx);
164279 g_array_event(l_event_id).array_value_char('source_21') := l_array_source_21(hdr_idx);
164280 g_array_event(l_event_id).array_value_num('source_23') := l_array_source_23(hdr_idx);
164281 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
164282 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
164283
164284 --
164285 -- initilaize the status of ae headers for diffrent balance types
164286 -- the status is initialised to C_NOT_CREATED (2)
164287 --
164288 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
164289 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
164290 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
164291
164292 --
164293 -- call api to validate and store accounting attributes for header
164294 --
164295
164296 ------------------------------------------------------------
164297 -- Accrual Reversal : to get date for Standard Source (NONE)
164298 ------------------------------------------------------------
164299 l_acc_rev_gl_date_source := NULL;
164300
164301 l_rec_acct_attrs.array_acct_attr_code(1) := 'ENCUMBRANCE_TYPE_ID';
164302 l_rec_acct_attrs.array_num_value(1) := g_array_event(l_event_id).array_value_num('source_23');
164303 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_DATE';
164304 l_rec_acct_attrs.array_date_value(2) :=
164305 xla_ae_sources_pkg.GetSystemSourceDate(
164306 p_source_code => 'XLA_REFERENCE_DATE_1'
164307 , p_source_type_code => 'Y'
164308 , p_source_application_id => 602
164309 );
164310 l_rec_acct_attrs.array_acct_attr_code(3) := 'GL_TRANSFER_FLAG';
164311 l_rec_acct_attrs.array_char_value(3) := g_array_event(l_event_id).array_value_char('source_38');
164312
164313
164314 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
164315
164316 XLA_AE_HEADER_PKG.SetJeCategoryName;
164317
164318 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
164319 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
164320 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
164321 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
164322 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
164323
164324
164325 -- No header level analytical criteria
164326
164327 --
164328 --accounting attribute enhancement, bug 3612931
164329 --
164330 l_trx_reversal_source := SUBSTR(NULL, 1,30);
164331
164332 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
164333 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
164334
164335 xla_accounting_err_pkg.build_message
164336 (p_appli_s_name => 'XLA'
164337 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
164338 ,p_token_1 => 'ACCT_ATTR_NAME'
164339 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
164340 ,p_token_2 => 'PRODUCT_NAME'
164341 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
164342 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
164343 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
164344 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
164345
164346 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
164347 --
164348 -- following sets the accounting attributes needed to reverse
164349 -- accounting for a distributeion
164350 --
164351 xla_ae_lines_pkg.SetTrxReversalAttrs
164352 (p_event_id => l_event_id
164353 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
164354 ,p_trx_reversal_source => l_trx_reversal_source);
164355
164356 END IF;
164357
164358
164359 ----------------------------------------------------------------
164360 -- 4262811 - update the header statuses to invalid in need be
164361 ----------------------------------------------------------------
164362 --
164363 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
164364
164365
164366 --
164367 -- Generate the accrual reversal headers
164368 --
164369 IF NVL(l_trx_reversal_source, 'N') = 'N' THEN
164370
164371
164372
164373 -- indicate that the accrual entry has a reversal entry
164374 XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag(hdr_idx) := 'Y';
164375
164376 --
164377 -- initialize a row for ae header
164378 --
164379 g_last_hdr_idx := g_last_hdr_idx + 1;
164380 XLA_AE_HEADER_PKG.CopyHeaderInfo (p_parent_hdr_idx => hdr_idx,
164381 p_hdr_idx => g_last_hdr_idx) ;
164382 XLA_AE_HEADER_PKG.g_rec_header_new.array_header_num (g_last_hdr_idx) := 1;
164383 XLA_AE_HEADER_PKG.g_rec_header_new.array_parent_header_id(g_last_hdr_idx) :=
164384 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx);
164385
164386 --
164387 -- record the index for the reversal entry, it will be used by the journal
164388 -- line creation
164389 --
164390 g_array_event(l_event_id).array_value_num('acc_rev_header_index') := g_last_hdr_idx;
164391
164392 --
164393 -- Populate the GL Date and override the GL date defined in the
164394 -- SetHdrAcctAttrs if necessary
164395 --
164396
164397 ---------------------- XLA_FIRST_DAY_NEXT_GL_PERIOD ----------------------
164398 XLA_AE_HEADER_PKG.g_rec_header_new.array_acc_rev_gl_date_option(g_last_hdr_idx) := 'XLA_FIRST_DAY_NEXT_GL_PERIOD';
164399 XLA_AE_HEADER_PKG.GetAccrualRevDate(g_last_hdr_idx
164400 ,XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(g_last_hdr_idx)
164401 ,XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
164402 ,XLA_AE_HEADER_PKG.g_rec_header_new.array_acc_rev_gl_date_option(g_last_hdr_idx));
164403
164404
164405 --
164406 -- Update the header status
164407 --
164408 XLA_AE_JOURNAL_ENTRY_PKG.updateJournalEntryStatus (p_hdr_idx => g_last_hdr_idx);
164409
164410
164411
164412 END IF;
164413
164414
164415 ----------------------------------------------------------------
164416
164417 --
164418 -- this ends the header loop iteration for one bulk fetch
164419 --
164420 END LOOP;
164421
164422 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
164423 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
164424
164425 --
164426 -- insert dummy rows into lines gt table that were created due to
164427 -- transaction reversals
164428 --
164429 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
164430 l_result := XLA_AE_LINES_PKG.InsertLines;
164431 END IF;
164432
164433 --
164434 -- reset the temp_line_num for each set of events fetched from header
164435 -- cursor rather than doing it for each new event in line cursor
164436 -- Bug 3939231
164437 --
164438 xla_ae_lines_pkg.g_temp_line_num := 0;
164439
164440
164441
164442 --
164443 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
164444 --
164445 --
164446 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
164447
164448 trace
164449 (p_msg => 'SQL - FETCH line_cur'
164450 ,p_level => C_LEVEL_STATEMENT
164451 ,p_module => l_log_module);
164452
164453 END IF;
164454 --
164455 --
164456 LOOP
164457 --
164458 FETCH line_cur BULK COLLECT INTO
164459 l_array_entity_id
164460 , l_array_legal_entity_id
164461 , l_array_entity_code
164462 , l_array_transaction_num
164463 , l_array_event_id
164464 , l_array_class_code
164465 , l_array_event_type
164466 , l_array_event_number
164467 , l_array_event_date
164468 , l_array_transaction_date
164469 , l_array_reference_num_1
164470 , l_array_reference_num_2
164471 , l_array_reference_num_3
164472 , l_array_reference_num_4
164473 , l_array_reference_char_1
164474 , l_array_reference_char_2
164475 , l_array_reference_char_3
164476 , l_array_reference_char_4
164477 , l_array_reference_date_1
164478 , l_array_reference_date_2
164479 , l_array_reference_date_3
164480 , l_array_reference_date_4
164481 , l_array_event_created_by
164482 , l_array_budgetary_control_flag
164483 , l_array_extract_line_num
164484 , l_array_source_4
164485 , l_array_source_5
164486 , l_array_source_11
164487 , l_array_source_18
164488 , l_array_source_22
164489 LIMIT l_rows;
164490
164491 --
164492 IF (C_LEVEL_EVENT >= g_log_level) THEN
164493 trace
164494 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
164495 ,p_level => C_LEVEL_EVENT
164496 ,p_module => l_log_module);
164497 END IF;
164498 --
164499 EXIT WHEN l_array_entity_id.count = 0;
164500
164501 XLA_AE_LINES_PKG.g_rec_lines := null;
164502
164503 --
164504 -- Bug 4458708
164505 --
164506 XLA_AE_LINES_PKG.g_LineNumber := 0;
164507 --
164508 --
164509
164510 FOR Idx IN 1..l_array_event_id.count LOOP
164511 --
164512 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
164513 --
164514 l_event_id := l_array_event_id(idx); -- 5648433
164515
164516 --
164517 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
164518 --
164519
164520 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
164521 (g_array_event(l_event_id).array_value_num('header_index'))
164522 ,'N'
164523 ) <> 'Y'
164524 THEN
164525 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
164526 trace
164527 (p_msg => 'Trancaction revesal option is not Y '
164528 ,p_level => C_LEVEL_STATEMENT
164529 ,p_module => l_log_module);
164530 END IF;
164531
164532 --
164533 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
164534 --
164535 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
164536 --
164537 -- set event info as cache for other routines to refer event attributes
164538 --
164539
164540 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
164541 l_previous_event_id := l_event_id;
164542
164543 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
164544 (p_application_id => p_application_id
164545 ,p_primary_ledger_id => p_primary_ledger_id
164546 ,p_base_ledger_id => p_base_ledger_id
164547 ,p_target_ledger_id => p_target_ledger_id
164548 ,p_entity_id => l_array_entity_id(Idx)
164549 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
164550 ,p_entity_code => l_array_entity_code(Idx)
164551 ,p_transaction_num => l_array_transaction_num(Idx)
164552 ,p_event_id => l_array_event_id(Idx)
164553 ,p_event_class_code => l_array_class_code(Idx)
164554 ,p_event_type_code => l_array_event_type(Idx)
164555 ,p_event_number => l_array_event_number(Idx)
164556 ,p_event_date => l_array_event_date(Idx)
164557 ,p_transaction_date => l_array_transaction_date(Idx)
164558 ,p_reference_num_1 => l_array_reference_num_1(Idx)
164559 ,p_reference_num_2 => l_array_reference_num_2(Idx)
164560 ,p_reference_num_3 => l_array_reference_num_3(Idx)
164561 ,p_reference_num_4 => l_array_reference_num_4(Idx)
164562 ,p_reference_char_1 => l_array_reference_char_1(Idx)
164563 ,p_reference_char_2 => l_array_reference_char_2(Idx)
164564 ,p_reference_char_3 => l_array_reference_char_3(Idx)
164565 ,p_reference_char_4 => l_array_reference_char_4(Idx)
164566 ,p_reference_date_1 => l_array_reference_date_1(Idx)
164567 ,p_reference_date_2 => l_array_reference_date_2(Idx)
164568 ,p_reference_date_3 => l_array_reference_date_3(Idx)
164569 ,p_reference_date_4 => l_array_reference_date_4(Idx)
164570 ,p_event_created_by => l_array_event_created_by(Idx)
164571 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
164572 --
164573 END IF;
164574
164575
164576
164577 --
164578 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
164579
164580 l_acct_reversal_source := SUBSTR(NULL, 1,30);
164581
164582 IF l_continue_with_lines THEN
164583 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
164584 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
164585
164586 xla_accounting_err_pkg.build_message
164587 (p_appli_s_name => 'XLA'
164588 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
164589 ,p_token_1 => 'LINE_NUMBER'
164590 ,p_value_1 => l_array_extract_line_num(Idx)
164591 ,p_token_2 => 'PRODUCT_NAME'
164592 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
164593 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
164594 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
164595 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
164596
164597 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
164598 --
164599 -- following sets the accounting attributes needed to reverse
164600 -- accounting for a distributeion
164601 --
164602
164603 --
164604 -- 5217187
164605 --
164606 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
164607 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
164608 g_array_event(l_event_id).array_value_num('header_index'));
164609 --
164610 --
164611
164612 -- No reversal code generated
164613
164614 xla_ae_lines_pkg.SetAcctReversalAttrs
164615 (p_event_id => l_event_id
164616 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
164617 ,p_calculate_acctd_flag => l_calculate_acctd_flag
164618 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
164619 END IF;
164620
164621 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
164622 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
164623
164624 --
164625 AcctLineType_5 (
164626 p_application_id => p_application_id
164627 ,p_event_id => l_event_id
164628 ,p_calculate_acctd_flag => l_calculate_acctd_flag
164629 ,p_calculate_g_l_flag => l_calculate_g_l_flag
164630 ,p_actual_flag => l_actual_flag
164631 ,p_balance_type_code => l_balance_type_code
164632 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
164633
164634 , p_source_4 => l_array_source_4(Idx)
164635 , p_source_5 => l_array_source_5(Idx)
164636 , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
164637 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
164638 , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
164639 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
164640 , p_source_10 => g_array_event(l_event_id).array_value_num('source_10')
164641 , p_source_11 => l_array_source_11(Idx)
164642 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
164643 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
164644 , p_source_13 => g_array_event(l_event_id).array_value_num('source_13')
164645 , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
164646 , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
164647 , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
164648 , p_source_17 => g_array_event(l_event_id).array_value_char('source_17')
164649 , p_source_18 => l_array_source_18(Idx)
164650 , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
164651 , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
164652 , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
164653 , p_source_22 => l_array_source_22(Idx)
164654 , p_source_23 => g_array_event(l_event_id).array_value_num('source_23')
164655 );
164656 If(l_balance_type_code = 'A') THEN
164657 l_actual_gain_loss_ref := l_gain_or_loss_ref;
164658 END IF;
164659
164660 --
164661
164662
164663 --
164664 AcctLineType_11 (
164665 p_application_id => p_application_id
164666 ,p_event_id => l_event_id
164667 ,p_calculate_acctd_flag => l_calculate_acctd_flag
164668 ,p_calculate_g_l_flag => l_calculate_g_l_flag
164669 ,p_actual_flag => l_actual_flag
164670 ,p_balance_type_code => l_balance_type_code
164671 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
164672
164673 , p_source_4 => l_array_source_4(Idx)
164674 , p_source_5 => l_array_source_5(Idx)
164675 , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
164676 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
164677 , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
164678 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
164679 , p_source_10 => g_array_event(l_event_id).array_value_num('source_10')
164680 , p_source_11 => l_array_source_11(Idx)
164681 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
164682 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
164683 , p_source_13 => g_array_event(l_event_id).array_value_num('source_13')
164684 , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
164685 , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
164686 , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
164687 , p_source_17 => g_array_event(l_event_id).array_value_char('source_17')
164688 , p_source_18 => l_array_source_18(Idx)
164689 , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
164690 , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
164691 , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
164692 , p_source_22 => l_array_source_22(Idx)
164693 , p_source_23 => g_array_event(l_event_id).array_value_num('source_23')
164694 );
164695 If(l_balance_type_code = 'A') THEN
164696 l_actual_gain_loss_ref := l_gain_or_loss_ref;
164697 END IF;
164698
164699 --
164700
164701 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
164702 -- or secondary ledger that has different currency with primary
164703 -- or alc that is calculated by sla
164704 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
164705 (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'))
164706
164707 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
164708 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
164709 AND (l_actual_flag = 'A')) THEN
164710 XLA_AE_LINES_PKG.CreateGainOrLossLines(
164711 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
164712 ,p_application_id => p_application_id
164713 ,p_amb_context_code => 'DEFAULT'
164714 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
164715 ,p_event_class_code => C_EVENT_CLASS_CODE
164716 ,p_event_type_code => C_EVENT_TYPE_CODE
164717
164718 ,p_gain_ccid => -1
164719 ,p_loss_ccid => -1
164720
164721 ,p_actual_flag => l_actual_flag
164722 ,p_enc_flag => null
164723 ,p_actual_g_l_ref => l_actual_gain_loss_ref
164724 ,p_enc_g_l_ref => null
164725 );
164726 END IF;
164727 END IF;
164728 END IF;
164729
164730 ELSE
164731 --
164732 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
164733 --
164734 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
164735 trace
164736 (p_msg => 'Trancaction revesal option is Y'
164737 ,p_level => C_LEVEL_STATEMENT
164738 ,p_module => l_log_module);
164739 END IF;
164740 END IF;
164741
164742 END LOOP;
164743 l_result := XLA_AE_LINES_PKG.InsertLines ;
164744 end loop;
164745 close line_cur;
164746
164747
164748 --
164749 -- insert headers into xla_ae_headers_gt table
164750 --
164751 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
164752
164753 -- insert into errors table here.
164754
164755 END LOOP;
164756
164757 --
164758 -- 4865292
164759 --
164760 -- Compare g_hdr_extract_count with event count in
164761 -- CreateHeadersAndLines.
164762 --
164763 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
164764
164765 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
164766 trace (p_msg => '# rows extracted from header extract objects '
164767 || ' (running total): '
164768 || g_hdr_extract_count
164769 ,p_level => C_LEVEL_STATEMENT
164770 ,p_module => l_log_module);
164771 END IF;
164772
164773 CLOSE header_cur;
164774 --
164775
164776 --
164777 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
164778 trace
164779 (p_msg => 'END of EventClass_269'
164780 ,p_level => C_LEVEL_PROCEDURE
164781 ,p_module => l_log_module);
164782 END IF;
164783 --
164784 RETURN l_result;
164785 EXCEPTION
164786 WHEN xla_exceptions_pkg.application_exception THEN
164787
164788 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
164789
164790
164791 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
164792
164793 RAISE;
164794
164795 WHEN NO_DATA_FOUND THEN
164796
164797 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
164798 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
164799
164800 FOR header_record IN header_cur
164801 LOOP
164802 l_array_header_events(header_record.event_id) := header_record.event_id;
164803 END LOOP;
164804
164805 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
164806 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
164807
164808 fnd_file.put_line(fnd_file.LOG, ' ');
164809 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
164810 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
164811 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
164812
164813 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
164814 LOOP
164815 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
164816 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
164817 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
164818 END IF;
164819 END LOOP;
164820
164821 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
164822 fnd_file.put_line(fnd_file.LOG, ' ');
164823
164824
164825 xla_exceptions_pkg.raise_message
164826 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_269');
164827
164828
164829 WHEN OTHERS THEN
164830 xla_exceptions_pkg.raise_message
164831 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_269');
164832 END EventClass_269;
164833 --
164834
164835 ---------------------------------------
164836 --
164837 -- PRIVATE PROCEDURE
164838 -- insert_sources_270
164839 --
164840 ----------------------------------------
164841 --
164842 PROCEDURE insert_sources_270(
164843 p_target_ledger_id IN NUMBER
164844 , p_language IN VARCHAR2
164845 , p_sla_ledger_id IN NUMBER
164846 , p_pad_start_date IN DATE
164847 , p_pad_end_date IN DATE
164848 )
164849 IS
164850
164851 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'PURCHASE_ORDER_ALL';
164852 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'PURCHASE_ORDER';
164853 p_apps_owner VARCHAR2(30);
164854 l_log_module VARCHAR2(240);
164855 BEGIN
164856 IF g_log_enabled THEN
164857 l_log_module := C_DEFAULT_MODULE||'.insert_sources_270';
164858 END IF;
164859 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
164860
164861 trace
164862 (p_msg => 'BEGIN of insert_sources_270'
164863 ,p_level => C_LEVEL_PROCEDURE
164864 ,p_module => l_log_module);
164865
164866 END IF;
164867
164868 -- select APPS owner
164869 SELECT oracle_username
164870 INTO p_apps_owner
164871 FROM fnd_oracle_userid
164872 WHERE read_only_flag = 'U'
164873 ;
164874
164875 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
164876 trace
164877 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
164878 ' - p_language = '||p_language||
164879 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
164880 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
164881 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
164882 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
164883 ,p_level => C_LEVEL_STATEMENT
164884 ,p_module => l_log_module);
164885 END IF;
164886
164887
164888 --
164889 INSERT INTO xla_diag_sources --hdr2
164890 (
164891 event_id
164892 , ledger_id
164893 , sla_ledger_id
164894 , description_language
164895 , object_name
164896 , object_type_code
164897 , line_number
164898 , source_application_id
164899 , source_type_code
164900 , source_code
164901 , source_value
164902 , source_meaning
164903 , created_by
164904 , creation_date
164905 , last_update_date
164906 , last_updated_by
164907 , last_update_login
164908 , program_update_date
164909 , program_application_id
164910 , program_id
164911 , request_id
164912 )
164913 SELECT
164914 event_id
164915 , p_target_ledger_id
164916 , p_sla_ledger_id
164917 , p_language
164918 , object_name
164919 , object_type_code
164920 , line_number
164921 , source_application_id
164922 , source_type_code
164923 , source_code
164924 , SUBSTR(source_value ,1,1996)
164925 , SUBSTR(source_meaning ,1,200)
164926 , xla_environment_pkg.g_Usr_Id
164927 , TRUNC(SYSDATE)
164928 , TRUNC(SYSDATE)
164929 , xla_environment_pkg.g_Usr_Id
164930 , xla_environment_pkg.g_Login_Id
164931 , TRUNC(SYSDATE)
164932 , xla_environment_pkg.g_Prog_Appl_Id
164933 , xla_environment_pkg.g_Prog_Id
164934 , xla_environment_pkg.g_Req_Id
164935 FROM (
164936 SELECT xet.event_id event_id
164937 , 0 line_number
164938 , CASE r
164939 WHEN 1 THEN 'CST_XLA_INV_REF_V'
164940 WHEN 2 THEN 'CST_XLA_INV_REF_V'
164941 WHEN 3 THEN 'CST_XLA_INV_REF_V'
164942 WHEN 4 THEN 'CST_XLA_INV_REF_V'
164943 WHEN 5 THEN 'CST_XLA_INV_HEADERS_V'
164944 WHEN 6 THEN 'PO_DISTS_REF_V'
164945 WHEN 7 THEN 'CST_XLA_INV_REF_V'
164946 WHEN 8 THEN 'CST_XLA_INV_REF_V'
164947 WHEN 9 THEN 'PO_HEADERS_REF_V'
164948 WHEN 10 THEN 'PSA_CST_XLA_UPG_V'
164949 WHEN 11 THEN 'CST_XLA_INV_REF_V'
164950 WHEN 12 THEN 'CST_XLA_INV_HEADERS_V'
164951
164952 ELSE null
164953 END object_name
164954 , CASE r
164955 WHEN 1 THEN 'HEADER'
164956 WHEN 2 THEN 'HEADER'
164957 WHEN 3 THEN 'HEADER'
164958 WHEN 4 THEN 'HEADER'
164959 WHEN 5 THEN 'HEADER'
164960 WHEN 6 THEN 'HEADER'
164961 WHEN 7 THEN 'HEADER'
164962 WHEN 8 THEN 'HEADER'
164963 WHEN 9 THEN 'HEADER'
164964 WHEN 10 THEN 'HEADER'
164965 WHEN 11 THEN 'HEADER'
164966 WHEN 12 THEN 'HEADER'
164967
164968 ELSE null
164969 END object_type_code
164970 , CASE r
164971 WHEN 1 THEN '707'
164972 WHEN 2 THEN '707'
164973 WHEN 3 THEN '707'
164974 WHEN 4 THEN '707'
164975 WHEN 5 THEN '707'
164976 WHEN 6 THEN '201'
164977 WHEN 7 THEN '707'
164978 WHEN 8 THEN '707'
164979 WHEN 9 THEN '201'
164980 WHEN 10 THEN '707'
164981 WHEN 11 THEN '707'
164982 WHEN 12 THEN '707'
164983
164984 ELSE null
164985 END source_application_id
164986 , 'S' source_type_code
164987 , CASE r
164988 WHEN 1 THEN 'APPLIED_TO_APPL_ID'
164989 WHEN 2 THEN 'APPLIED_TO_DIST_LINK_TYPE'
164990 WHEN 3 THEN 'APPLIED_TO_ENTITY_CODE'
164991 WHEN 4 THEN 'APPLIED_TO_PO_DOC_ID'
164992 WHEN 5 THEN 'DISTRIBUTION_TYPE'
164993 WHEN 6 THEN 'PO_BUDGET_ACCOUNT'
164994 WHEN 7 THEN 'ENCUM_REVERSAL_AMOUNT_ENTERED'
164995 WHEN 8 THEN 'ENCUMBRANCE_REVERSAL_AMOUNT'
164996 WHEN 9 THEN 'PURCH_ENCUMBRANCE_TYPE_ID'
164997 WHEN 10 THEN 'CST_ENCUM_UPG_OPTION'
164998 WHEN 11 THEN 'TXN_PO_DISTRIBUTION_ID'
164999 WHEN 12 THEN 'TRANSFER_TO_GL_INDICATOR'
165000
165001 ELSE null
165002 END source_code
165003 , CASE r
165004 WHEN 1 THEN TO_CHAR(h3.APPLIED_TO_APPL_ID)
165005 WHEN 2 THEN TO_CHAR(h3.APPLIED_TO_DIST_LINK_TYPE)
165006 WHEN 3 THEN TO_CHAR(h3.APPLIED_TO_ENTITY_CODE)
165007 WHEN 4 THEN TO_CHAR(h3.APPLIED_TO_PO_DOC_ID)
165008 WHEN 5 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
165009 WHEN 6 THEN TO_CHAR(h4.PO_BUDGET_ACCOUNT)
165010 WHEN 7 THEN TO_CHAR(h3.ENCUM_REVERSAL_AMOUNT_ENTERED)
165011 WHEN 8 THEN TO_CHAR(h3.ENCUMBRANCE_REVERSAL_AMOUNT)
165012 WHEN 9 THEN TO_CHAR(h5.PURCH_ENCUMBRANCE_TYPE_ID)
165013 WHEN 10 THEN TO_CHAR(h6.CST_ENCUM_UPG_OPTION)
165014 WHEN 11 THEN TO_CHAR(h3.TXN_PO_DISTRIBUTION_ID)
165015 WHEN 12 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
165016
165017 ELSE null
165018 END source_value
165019 , CASE r
165020 WHEN 5 THEN fvl12.meaning
165021 WHEN 12 THEN fvl38.meaning
165022
165023 ELSE null
165024 END source_meaning
165025 FROM xla_events_gt xet
165026 , CST_XLA_INV_HEADERS_V h1
165027 , CST_XLA_INV_REF_V h3
165028 , PO_DISTS_REF_V h4
165029 , PO_HEADERS_REF_V h5
165030 , PSA_CST_XLA_UPG_V h6
165031 , fnd_lookup_values fvl12
165032 , fnd_lookup_values fvl38
165033 ,(select rownum r from all_objects where rownum <= 12 and owner = p_apps_owner)
165034 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
165035 AND xet.event_class_code = C_EVENT_CLASS_CODE
165036 AND h1.event_id = xet.event_id
165037 AND h3.ref_transaction_id = h1.transaction_id AND h3.txn_po_header_id = h4.po_header_id (+) and h3.txn_po_distribution_id = h4.po_distribution_id (+) AND h3.txn_po_header_id = h5.po_header_id (+) AND h3.rcv_transaction_id = h6.transaction_id (+) AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
165038 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
165039 AND fvl12.view_application_id(+) = 700
165040 AND fvl12.language(+) = USERENV('LANG')
165041 AND fvl38.lookup_type(+) = 'YES_NO'
165042 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
165043 AND fvl38.view_application_id(+) = 0
165044 AND fvl38.language(+) = USERENV('LANG')
165045
165046 )
165047 ;
165048 --
165049 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
165050
165051 trace
165052 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
165053 ,p_level => C_LEVEL_STATEMENT
165054 ,p_module => l_log_module);
165055
165056 END IF;
165057 --
165058
165059
165060
165061 --
165062 INSERT INTO xla_diag_sources --line2
165063 (
165064 event_id
165065 , ledger_id
165066 , sla_ledger_id
165067 , description_language
165068 , object_name
165069 , object_type_code
165070 , line_number
165071 , source_application_id
165072 , source_type_code
165073 , source_code
165074 , source_value
165075 , source_meaning
165076 , created_by
165077 , creation_date
165078 , last_update_date
165079 , last_updated_by
165080 , last_update_login
165081 , program_update_date
165082 , program_application_id
165083 , program_id
165084 , request_id
165085 )
165086 SELECT event_id
165087 , p_target_ledger_id
165088 , p_sla_ledger_id
165089 , p_language
165090 , object_name
165091 , object_type_code
165092 , line_number
165093 , source_application_id
165094 , source_type_code
165095 , source_code
165096 , SUBSTR(source_value,1,1996)
165097 , SUBSTR(source_meaning ,1,200)
165098 , xla_environment_pkg.g_Usr_Id
165099 , TRUNC(SYSDATE)
165100 , TRUNC(SYSDATE)
165101 , xla_environment_pkg.g_Usr_Id
165102 , xla_environment_pkg.g_Login_Id
165103 , TRUNC(SYSDATE)
165104 , xla_environment_pkg.g_Prog_Appl_Id
165105 , xla_environment_pkg.g_Prog_Id
165106 , xla_environment_pkg.g_Req_Id
165107 FROM (
165108 SELECT xet.event_id event_id
165109 , l2.line_number line_number
165110 , CASE r
165111 WHEN 1 THEN 'CST_XLA_INV_LINES_V'
165112 WHEN 2 THEN 'CST_XLA_INV_LINES_V'
165113 WHEN 3 THEN 'CST_XLA_INV_LINES_V'
165114 WHEN 4 THEN 'CST_XLA_INV_LINES_V'
165115 WHEN 5 THEN 'CST_XLA_INV_LINES_V'
165116 WHEN 6 THEN 'CST_XLA_INV_LINES_V'
165117 WHEN 7 THEN 'CST_XLA_INV_LINES_V'
165118 WHEN 8 THEN 'CST_XLA_INV_LINES_V'
165119 WHEN 9 THEN 'CST_XLA_INV_LINES_V'
165120
165121 ELSE null
165122 END object_name
165123 , CASE r
165124 WHEN 1 THEN 'LINE'
165125 WHEN 2 THEN 'LINE'
165126 WHEN 3 THEN 'LINE'
165127 WHEN 4 THEN 'LINE'
165128 WHEN 5 THEN 'LINE'
165129 WHEN 6 THEN 'LINE'
165130 WHEN 7 THEN 'LINE'
165131 WHEN 8 THEN 'LINE'
165132 WHEN 9 THEN 'LINE'
165133
165134 ELSE null
165135 END object_type_code
165136 , CASE r
165137 WHEN 1 THEN '707'
165138 WHEN 2 THEN '707'
165139 WHEN 3 THEN '707'
165140 WHEN 4 THEN '707'
165141 WHEN 5 THEN '707'
165142 WHEN 6 THEN '707'
165143 WHEN 7 THEN '707'
165144 WHEN 8 THEN '707'
165145 WHEN 9 THEN '707'
165146
165147 ELSE null
165148 END source_application_id
165149 , 'S' source_type_code
165150 , CASE r
165151 WHEN 1 THEN 'CODE_COMBINATION_ID'
165152 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER'
165153 WHEN 3 THEN 'CURRENCY_CODE'
165154 WHEN 4 THEN 'ENTERED_AMOUNT'
165155 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE'
165156 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE'
165157 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE'
165158 WHEN 8 THEN 'ACCOUNTED_AMOUNT'
165159 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE'
165160
165161 ELSE null
165162 END source_code
165163 , CASE r
165164 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
165165 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
165166 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
165167 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
165168 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
165169 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
165170 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
165171 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
165172 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
165173
165174 ELSE null
165175 END source_value
165176 , null source_meaning
165177 FROM xla_events_gt xet
165178 , CST_XLA_INV_LINES_V l2
165179 , (select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
165180 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
165181 AND xet.event_class_code = C_EVENT_CLASS_CODE
165182 AND l2.event_id = xet.event_id
165183
165184 )
165185 ;
165186 --
165187 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
165188
165189 trace
165190 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
165191 ,p_level => C_LEVEL_STATEMENT
165192 ,p_module => l_log_module);
165193
165194 END IF;
165195
165196
165197 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
165198 trace
165199 (p_msg => 'END of insert_sources_270'
165200 ,p_level => C_LEVEL_PROCEDURE
165201 ,p_module => l_log_module);
165202 END IF;
165203 EXCEPTION
165204 WHEN xla_exceptions_pkg.application_exception THEN
165205 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
165206 trace
165207 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
165208 ,p_level => C_LEVEL_EXCEPTION
165209 ,p_module => l_log_module);
165210 END IF;
165211 RAISE;
165212 WHEN OTHERS THEN
165213 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
165214 trace
165215 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
165216 ,p_level => C_LEVEL_EXCEPTION
165217 ,p_module => l_log_module);
165218 END IF;
165219 xla_exceptions_pkg.raise_message
165220 (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_270');
165221 END insert_sources_270;
165222 --
165223
165224 ---------------------------------------
165225 --
165226 -- PRIVATE FUNCTION
165227 -- EventClass_270
165228 --
165229 ----------------------------------------
165230 --
165231 FUNCTION EventClass_270
165232 (p_application_id IN NUMBER
165233 ,p_base_ledger_id IN NUMBER
165234 ,p_target_ledger_id IN NUMBER
165235 ,p_language IN VARCHAR2
165236 ,p_currency_code IN VARCHAR2
165237 ,p_sla_ledger_id IN NUMBER
165238 ,p_pad_start_date IN DATE
165239 ,p_pad_end_date IN DATE
165240 ,p_primary_ledger_id IN NUMBER)
165241 RETURN BOOLEAN IS
165242 --
165243 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'PURCHASE_ORDER_ALL';
165244 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'PURCHASE_ORDER';
165245
165246 l_calculate_acctd_flag VARCHAR2(1) :='N';
165247 l_calculate_g_l_flag VARCHAR2(1) :='N';
165248 --
165249 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
165250 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
165251 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
165252 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
165253 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
165254 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
165255 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
165256 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
165257 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
165258 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
165259 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
165260 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
165261 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
165262 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
165263 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
165264 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
165265 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
165266 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
165267 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
165268 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
165269 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
165270 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
165271 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
165272 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
165273 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
165274 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
165275
165276 l_event_id NUMBER;
165277 l_previous_event_id NUMBER;
165278 l_first_event_id NUMBER;
165279 l_last_event_id NUMBER;
165280
165281 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
165282 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
165283 --
165284 --
165285 l_result BOOLEAN := TRUE;
165286 l_rows NUMBER := 1000;
165287 l_event_type_name VARCHAR2(80) := 'All';
165288 l_event_class_name VARCHAR2(80) := 'PO Delivery into Inventory';
165289 l_description VARCHAR2(4000);
165290 l_transaction_reversal NUMBER;
165291 l_ae_header_id NUMBER;
165292 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
165293 l_log_module VARCHAR2(240);
165294 --
165295 l_acct_reversal_source VARCHAR2(30);
165296 l_trx_reversal_source VARCHAR2(30);
165297
165298 l_continue_with_lines BOOLEAN := TRUE;
165299 --
165300 l_acc_rev_gl_date_source DATE; -- 4262811
165301 --
165302 type t_array_event_id is table of number index by binary_integer;
165303
165304 l_rec_array_event t_rec_array_event;
165305 l_null_rec_array_event t_rec_array_event;
165306 l_array_ae_header_id xla_number_array_type;
165307 l_actual_flag VARCHAR2(1) := NULL;
165308 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
165309 l_balance_type_code VARCHAR2(1) :=NULL;
165310 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
165311
165312 --
165313 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
165314 --
165315
165316 TYPE t_array_source_6 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_APPL_ID%TYPE INDEX BY BINARY_INTEGER;
165317 TYPE t_array_source_7 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_DIST_LINK_TYPE%TYPE INDEX BY BINARY_INTEGER;
165318 TYPE t_array_source_8 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
165319 TYPE t_array_source_10 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_PO_DOC_ID%TYPE INDEX BY BINARY_INTEGER;
165320 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
165321 TYPE t_array_source_13 IS TABLE OF PO_DISTS_REF_V.PO_BUDGET_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
165322 TYPE t_array_source_14 IS TABLE OF CST_XLA_INV_REF_V.ENCUM_REVERSAL_AMOUNT_ENTERED%TYPE INDEX BY BINARY_INTEGER;
165323 TYPE t_array_source_16 IS TABLE OF CST_XLA_INV_REF_V.ENCUMBRANCE_REVERSAL_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
165324 TYPE t_array_source_23 IS TABLE OF PO_HEADERS_REF_V.PURCH_ENCUMBRANCE_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
165325 TYPE t_array_source_27 IS TABLE OF PSA_CST_XLA_UPG_V.CST_ENCUM_UPG_OPTION%TYPE INDEX BY BINARY_INTEGER;
165326 TYPE t_array_source_28 IS TABLE OF CST_XLA_INV_REF_V.TXN_PO_DISTRIBUTION_ID%TYPE INDEX BY BINARY_INTEGER;
165327 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
165328
165329 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
165330 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
165331 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
165332 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
165333 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
165334 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
165335 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
165336 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
165337 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
165338
165339 l_array_source_6 t_array_source_6;
165340 l_array_source_7 t_array_source_7;
165341 l_array_source_8 t_array_source_8;
165342 l_array_source_10 t_array_source_10;
165343 l_array_source_12 t_array_source_12;
165344 l_array_source_12_meaning t_array_lookup_meaning;
165345 l_array_source_13 t_array_source_13;
165346 l_array_source_14 t_array_source_14;
165347 l_array_source_16 t_array_source_16;
165348 l_array_source_23 t_array_source_23;
165349 l_array_source_27 t_array_source_27;
165350 l_array_source_28 t_array_source_28;
165351 l_array_source_38 t_array_source_38;
165352 l_array_source_38_meaning t_array_lookup_meaning;
165353
165354 l_array_source_4 t_array_source_4;
165355 l_array_source_11 t_array_source_11;
165356 l_array_source_15 t_array_source_15;
165357 l_array_source_18 t_array_source_18;
165358 l_array_source_19 t_array_source_19;
165359 l_array_source_20 t_array_source_20;
165360 l_array_source_21 t_array_source_21;
165361 l_array_source_22 t_array_source_22;
165362 l_array_source_24 t_array_source_24;
165363
165364 --
165365 CURSOR header_cur
165366 IS
165367 SELECT /*+ leading(xet) cardinality(xet,1) */
165368 -- Event Class Code: PURCHASE_ORDER
165369 xet.entity_id
165370 ,xet.legal_entity_id
165371 ,xet.entity_code
165372 ,xet.transaction_number
165373 ,xet.event_id
165374 ,xet.event_class_code
165375 ,xet.event_type_code
165376 ,xet.event_number
165377 ,xet.event_date
165378 ,xet.transaction_date
165379 ,xet.reference_num_1
165380 ,xet.reference_num_2
165381 ,xet.reference_num_3
165382 ,xet.reference_num_4
165383 ,xet.reference_char_1
165384 ,xet.reference_char_2
165385 ,xet.reference_char_3
165386 ,xet.reference_char_4
165387 ,xet.reference_date_1
165388 ,xet.reference_date_2
165389 ,xet.reference_date_3
165390 ,xet.reference_date_4
165391 ,xet.event_created_by
165392 ,xet.budgetary_control_flag
165393 , h3.APPLIED_TO_APPL_ID source_6
165394 , h3.APPLIED_TO_DIST_LINK_TYPE source_7
165395 , h3.APPLIED_TO_ENTITY_CODE source_8
165396 , h3.APPLIED_TO_PO_DOC_ID source_10
165397 , h1.DISTRIBUTION_TYPE source_12
165398 , fvl12.meaning source_12_meaning
165399 , h4.PO_BUDGET_ACCOUNT source_13
165400 , h3.ENCUM_REVERSAL_AMOUNT_ENTERED source_14
165401 , h3.ENCUMBRANCE_REVERSAL_AMOUNT source_16
165402 , h5.PURCH_ENCUMBRANCE_TYPE_ID source_23
165403 , h6.CST_ENCUM_UPG_OPTION source_27
165404 , h3.TXN_PO_DISTRIBUTION_ID source_28
165405 , h1.TRANSFER_TO_GL_INDICATOR source_38
165406 , fvl38.meaning source_38_meaning
165407 FROM xla_events_gt xet
165408 , CST_XLA_INV_HEADERS_V h1
165409 , CST_XLA_INV_REF_V h3
165410 , PO_DISTS_REF_V h4
165411 , PO_HEADERS_REF_V h5
165412 , PSA_CST_XLA_UPG_V h6
165413 , fnd_lookup_values fvl12
165414 , fnd_lookup_values fvl38
165415 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
165416 and xet.event_class_code = C_EVENT_CLASS_CODE
165417 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
165418 AND h3.ref_transaction_id = h1.transaction_id AND h3.txn_po_header_id = h4.po_header_id (+) AND h3.txn_po_distribution_id = h4.po_distribution_id (+) AND h3.txn_po_header_id = h5.po_header_id (+) AND h3.rcv_transaction_id = h6.transaction_id (+) AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
165419 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
165420 AND fvl12.view_application_id(+) = 700
165421 AND fvl12.language(+) = USERENV('LANG')
165422 AND fvl38.lookup_type(+) = 'YES_NO'
165423 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
165424 AND fvl38.view_application_id(+) = 0
165425 AND fvl38.language(+) = USERENV('LANG')
165426
165427 ORDER BY event_id
165428 ;
165429
165430
165431 --
165432 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
165433 IS
165434 SELECT /*+ leading(xet) cardinality(xet,1) */
165435 -- Event Class Code: PURCHASE_ORDER
165436 xet.entity_id
165437 ,xet.legal_entity_id
165438 ,xet.entity_code
165439 ,xet.transaction_number
165440 ,xet.event_id
165441 ,xet.event_class_code
165442 ,xet.event_type_code
165443 ,xet.event_number
165444 ,xet.event_date
165445 ,xet.transaction_date
165446 ,xet.reference_num_1
165447 ,xet.reference_num_2
165448 ,xet.reference_num_3
165449 ,xet.reference_num_4
165450 ,xet.reference_char_1
165451 ,xet.reference_char_2
165452 ,xet.reference_char_3
165453 ,xet.reference_char_4
165454 ,xet.reference_date_1
165455 ,xet.reference_date_2
165456 ,xet.reference_date_3
165457 ,xet.reference_date_4
165458 ,xet.event_created_by
165459 ,xet.budgetary_control_flag
165460 , l2.LINE_NUMBER
165461 , l2.CODE_COMBINATION_ID source_4
165462 , l2.DISTRIBUTION_IDENTIFIER source_11
165463 , l2.CURRENCY_CODE source_15
165464 , l2.ENTERED_AMOUNT source_18
165465 , l2.CURRENCY_CONVERSION_DATE source_19
165466 , l2.CURRENCY_CONVERSION_RATE source_20
165467 , l2.CURRENCY_CONVERSION_TYPE source_21
165468 , l2.ACCOUNTED_AMOUNT source_22
165469 , l2.ACCOUNTING_LINE_TYPE_CODE source_24
165470 FROM xla_events_gt xet
165471 , CST_XLA_INV_LINES_V l2
165472 WHERE xet.event_id between x_first_event_id and x_last_event_id
165473 and xet.event_date between p_pad_start_date and p_pad_end_date
165474 and xet.event_class_code = C_EVENT_CLASS_CODE
165475 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
165476 ;
165477
165478 --
165479 BEGIN
165480 IF g_log_enabled THEN
165481 l_log_module := C_DEFAULT_MODULE||'.EventClass_270';
165482 END IF;
165483 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
165484 trace
165485 (p_msg => 'BEGIN of EventClass_270'
165486 ,p_level => C_LEVEL_PROCEDURE
165487 ,p_module => l_log_module);
165488 END IF;
165489
165490 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
165491 trace
165492 (p_msg => 'p_application_id = '||p_application_id||
165493 ' - p_base_ledger_id = '||p_base_ledger_id||
165494 ' - p_target_ledger_id = '||p_target_ledger_id||
165495 ' - p_language = '||p_language||
165496 ' - p_currency_code = '||p_currency_code||
165497 ' - p_sla_ledger_id = '||p_sla_ledger_id
165498 ,p_level => C_LEVEL_STATEMENT
165499 ,p_module => l_log_module);
165500 END IF;
165501 --
165502 -- initialze arrays
165503 --
165504 g_array_event.DELETE;
165505 l_rec_array_event := l_null_rec_array_event;
165506 --
165507 --------------------------------------
165508 -- 4262811 Initialze MPA Line Number
165509 --------------------------------------
165510 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
165511
165512 --
165513
165514 --
165515 OPEN header_cur;
165516 --
165517 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
165518 trace
165519 (p_msg => 'SQL - FETCH header_cur'
165520 ,p_level => C_LEVEL_STATEMENT
165521 ,p_module => l_log_module);
165522 END IF;
165523 --
165524 LOOP
165525 FETCH header_cur BULK COLLECT INTO
165526 l_array_entity_id
165527 , l_array_legal_entity_id
165528 , l_array_entity_code
165529 , l_array_transaction_num
165530 , l_array_event_id
165531 , l_array_class_code
165532 , l_array_event_type
165533 , l_array_event_number
165534 , l_array_event_date
165535 , l_array_transaction_date
165536 , l_array_reference_num_1
165537 , l_array_reference_num_2
165538 , l_array_reference_num_3
165539 , l_array_reference_num_4
165540 , l_array_reference_char_1
165541 , l_array_reference_char_2
165542 , l_array_reference_char_3
165543 , l_array_reference_char_4
165544 , l_array_reference_date_1
165545 , l_array_reference_date_2
165546 , l_array_reference_date_3
165547 , l_array_reference_date_4
165548 , l_array_event_created_by
165549 , l_array_budgetary_control_flag
165550 , l_array_source_6
165551 , l_array_source_7
165552 , l_array_source_8
165553 , l_array_source_10
165554 , l_array_source_12
165555 , l_array_source_12_meaning
165556 , l_array_source_13
165557 , l_array_source_14
165558 , l_array_source_16
165559 , l_array_source_23
165560 , l_array_source_27
165561 , l_array_source_28
165562 , l_array_source_38
165563 , l_array_source_38_meaning
165564 LIMIT l_rows;
165565 --
165566 IF (C_LEVEL_EVENT >= g_log_level) THEN
165567 trace
165568 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
165569 ,p_level => C_LEVEL_EVENT
165570 ,p_module => l_log_module);
165571 END IF;
165572 --
165573 EXIT WHEN l_array_entity_id.COUNT = 0;
165574
165575 -- initialize arrays
165576 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
165577 XLA_AE_LINES_PKG.g_rec_lines := NULL;
165578
165579 --
165580 -- Bug 4458708
165581 --
165582 XLA_AE_LINES_PKG.g_LineNumber := 0;
165583
165584
165585 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
165586 g_last_hdr_idx := l_array_event_id.LAST;
165587 --
165588 -- loop for the headers. Each iteration is for each header extract row
165589 -- fetched in header cursor
165590 --
165591 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
165592
165593 --
165594 -- set event info as cache for other routines to refer event attributes
165595 --
165596 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
165597 (p_application_id => p_application_id
165598 ,p_primary_ledger_id => p_primary_ledger_id
165599 ,p_base_ledger_id => p_base_ledger_id
165600 ,p_target_ledger_id => p_target_ledger_id
165601 ,p_entity_id => l_array_entity_id(hdr_idx)
165602 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
165603 ,p_entity_code => l_array_entity_code(hdr_idx)
165604 ,p_transaction_num => l_array_transaction_num(hdr_idx)
165605 ,p_event_id => l_array_event_id(hdr_idx)
165606 ,p_event_class_code => l_array_class_code(hdr_idx)
165607 ,p_event_type_code => l_array_event_type(hdr_idx)
165608 ,p_event_number => l_array_event_number(hdr_idx)
165609 ,p_event_date => l_array_event_date(hdr_idx)
165610 ,p_transaction_date => l_array_transaction_date(hdr_idx)
165611 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
165612 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
165613 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
165614 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
165615 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
165616 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
165617 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
165618 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
165619 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
165620 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
165621 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
165622 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
165623 ,p_event_created_by => l_array_event_created_by(hdr_idx)
165624 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
165625
165626 --
165627 -- set the status of entry to C_VALID (0)
165628 --
165629 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
165630
165631 --
165632 -- initialize a row for ae header
165633 --
165634 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
165635
165636 l_event_id := l_array_event_id(hdr_idx);
165637
165638 --
165639 -- storing the hdr_idx for event. May be used by line cursor.
165640 --
165641 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
165642
165643 --
165644 -- store sources from header extract. This can be improved to
165645 -- store only those sources from header extract that may be used in lines
165646 --
165647
165648 g_array_event(l_event_id).array_value_num('source_6') := l_array_source_6(hdr_idx);
165649 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
165650 g_array_event(l_event_id).array_value_char('source_8') := l_array_source_8(hdr_idx);
165651 g_array_event(l_event_id).array_value_num('source_10') := l_array_source_10(hdr_idx);
165652 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
165653 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
165654 g_array_event(l_event_id).array_value_num('source_13') := l_array_source_13(hdr_idx);
165655 g_array_event(l_event_id).array_value_num('source_14') := l_array_source_14(hdr_idx);
165656 g_array_event(l_event_id).array_value_num('source_16') := l_array_source_16(hdr_idx);
165657 g_array_event(l_event_id).array_value_num('source_23') := l_array_source_23(hdr_idx);
165658 g_array_event(l_event_id).array_value_char('source_27') := l_array_source_27(hdr_idx);
165659 g_array_event(l_event_id).array_value_num('source_28') := l_array_source_28(hdr_idx);
165660 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
165661 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
165662
165663 --
165664 -- initilaize the status of ae headers for diffrent balance types
165665 -- the status is initialised to C_NOT_CREATED (2)
165666 --
165667 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
165668 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
165669 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
165670
165671 --
165672 -- call api to validate and store accounting attributes for header
165673 --
165674
165675 ------------------------------------------------------------
165676 -- Accrual Reversal : to get date for Standard Source (NONE)
165677 ------------------------------------------------------------
165678 l_acc_rev_gl_date_source := NULL;
165679
165680 l_rec_acct_attrs.array_acct_attr_code(1) := 'ENCUMBRANCE_TYPE_ID';
165681 l_rec_acct_attrs.array_num_value(1) := g_array_event(l_event_id).array_value_num('source_23');
165682 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_DATE';
165683 l_rec_acct_attrs.array_date_value(2) :=
165684 xla_ae_sources_pkg.GetSystemSourceDate(
165685 p_source_code => 'XLA_REFERENCE_DATE_1'
165686 , p_source_type_code => 'Y'
165687 , p_source_application_id => 602
165688 );
165689 l_rec_acct_attrs.array_acct_attr_code(3) := 'GL_TRANSFER_FLAG';
165690 l_rec_acct_attrs.array_char_value(3) := g_array_event(l_event_id).array_value_char('source_38');
165691
165692
165693 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
165694
165695 XLA_AE_HEADER_PKG.SetJeCategoryName;
165696
165697 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
165698 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
165699 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
165700 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
165701 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
165702
165703
165704 -- No header level analytical criteria
165705
165706 --
165707 --accounting attribute enhancement, bug 3612931
165708 --
165709 l_trx_reversal_source := SUBSTR(NULL, 1,30);
165710
165711 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
165712 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
165713
165714 xla_accounting_err_pkg.build_message
165715 (p_appli_s_name => 'XLA'
165716 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
165717 ,p_token_1 => 'ACCT_ATTR_NAME'
165718 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
165719 ,p_token_2 => 'PRODUCT_NAME'
165720 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
165721 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
165722 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
165723 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
165724
165725 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
165726 --
165727 -- following sets the accounting attributes needed to reverse
165728 -- accounting for a distributeion
165729 --
165730 xla_ae_lines_pkg.SetTrxReversalAttrs
165731 (p_event_id => l_event_id
165732 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
165733 ,p_trx_reversal_source => l_trx_reversal_source);
165734
165735 END IF;
165736
165737
165738 ----------------------------------------------------------------
165739 -- 4262811 - update the header statuses to invalid in need be
165740 ----------------------------------------------------------------
165741 --
165742 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
165743
165744
165745 -----------------------------------------------
165746 -- No accrual reversal for the event class/type
165747 -----------------------------------------------
165748 ----------------------------------------------------------------
165749
165750 --
165751 -- this ends the header loop iteration for one bulk fetch
165752 --
165753 END LOOP;
165754
165755 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
165756 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
165757
165758 --
165759 -- insert dummy rows into lines gt table that were created due to
165760 -- transaction reversals
165761 --
165762 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
165763 l_result := XLA_AE_LINES_PKG.InsertLines;
165764 END IF;
165765
165766 --
165767 -- reset the temp_line_num for each set of events fetched from header
165768 -- cursor rather than doing it for each new event in line cursor
165769 -- Bug 3939231
165770 --
165771 xla_ae_lines_pkg.g_temp_line_num := 0;
165772
165773
165774
165775 --
165776 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
165777 --
165778 --
165779 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
165780
165781 trace
165782 (p_msg => 'SQL - FETCH line_cur'
165783 ,p_level => C_LEVEL_STATEMENT
165784 ,p_module => l_log_module);
165785
165786 END IF;
165787 --
165788 --
165789 LOOP
165790 --
165791 FETCH line_cur BULK COLLECT INTO
165792 l_array_entity_id
165793 , l_array_legal_entity_id
165794 , l_array_entity_code
165795 , l_array_transaction_num
165796 , l_array_event_id
165797 , l_array_class_code
165798 , l_array_event_type
165799 , l_array_event_number
165800 , l_array_event_date
165801 , l_array_transaction_date
165802 , l_array_reference_num_1
165803 , l_array_reference_num_2
165804 , l_array_reference_num_3
165805 , l_array_reference_num_4
165806 , l_array_reference_char_1
165807 , l_array_reference_char_2
165808 , l_array_reference_char_3
165809 , l_array_reference_char_4
165810 , l_array_reference_date_1
165811 , l_array_reference_date_2
165812 , l_array_reference_date_3
165813 , l_array_reference_date_4
165814 , l_array_event_created_by
165815 , l_array_budgetary_control_flag
165816 , l_array_extract_line_num
165817 , l_array_source_4
165818 , l_array_source_11
165819 , l_array_source_15
165820 , l_array_source_18
165821 , l_array_source_19
165822 , l_array_source_20
165823 , l_array_source_21
165824 , l_array_source_22
165825 , l_array_source_24
165826 LIMIT l_rows;
165827
165828 --
165829 IF (C_LEVEL_EVENT >= g_log_level) THEN
165830 trace
165831 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
165832 ,p_level => C_LEVEL_EVENT
165833 ,p_module => l_log_module);
165834 END IF;
165835 --
165836 EXIT WHEN l_array_entity_id.count = 0;
165837
165838 XLA_AE_LINES_PKG.g_rec_lines := null;
165839
165840 --
165841 -- Bug 4458708
165842 --
165843 XLA_AE_LINES_PKG.g_LineNumber := 0;
165844 --
165845 --
165846
165847 FOR Idx IN 1..l_array_event_id.count LOOP
165848 --
165849 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
165850 --
165851 l_event_id := l_array_event_id(idx); -- 5648433
165852
165853 --
165854 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
165855 --
165856
165857 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
165858 (g_array_event(l_event_id).array_value_num('header_index'))
165859 ,'N'
165860 ) <> 'Y'
165861 THEN
165862 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
165863 trace
165864 (p_msg => 'Trancaction revesal option is not Y '
165865 ,p_level => C_LEVEL_STATEMENT
165866 ,p_module => l_log_module);
165867 END IF;
165868
165869 --
165870 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
165871 --
165872 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
165873 --
165874 -- set event info as cache for other routines to refer event attributes
165875 --
165876
165877 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
165878 l_previous_event_id := l_event_id;
165879
165880 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
165881 (p_application_id => p_application_id
165882 ,p_primary_ledger_id => p_primary_ledger_id
165883 ,p_base_ledger_id => p_base_ledger_id
165884 ,p_target_ledger_id => p_target_ledger_id
165885 ,p_entity_id => l_array_entity_id(Idx)
165886 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
165887 ,p_entity_code => l_array_entity_code(Idx)
165888 ,p_transaction_num => l_array_transaction_num(Idx)
165889 ,p_event_id => l_array_event_id(Idx)
165890 ,p_event_class_code => l_array_class_code(Idx)
165891 ,p_event_type_code => l_array_event_type(Idx)
165892 ,p_event_number => l_array_event_number(Idx)
165893 ,p_event_date => l_array_event_date(Idx)
165894 ,p_transaction_date => l_array_transaction_date(Idx)
165895 ,p_reference_num_1 => l_array_reference_num_1(Idx)
165896 ,p_reference_num_2 => l_array_reference_num_2(Idx)
165897 ,p_reference_num_3 => l_array_reference_num_3(Idx)
165898 ,p_reference_num_4 => l_array_reference_num_4(Idx)
165899 ,p_reference_char_1 => l_array_reference_char_1(Idx)
165900 ,p_reference_char_2 => l_array_reference_char_2(Idx)
165901 ,p_reference_char_3 => l_array_reference_char_3(Idx)
165902 ,p_reference_char_4 => l_array_reference_char_4(Idx)
165903 ,p_reference_date_1 => l_array_reference_date_1(Idx)
165904 ,p_reference_date_2 => l_array_reference_date_2(Idx)
165905 ,p_reference_date_3 => l_array_reference_date_3(Idx)
165906 ,p_reference_date_4 => l_array_reference_date_4(Idx)
165907 ,p_event_created_by => l_array_event_created_by(Idx)
165908 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
165909 --
165910 END IF;
165911
165912
165913
165914 --
165915 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
165916
165917 l_acct_reversal_source := SUBSTR(NULL, 1,30);
165918
165919 IF l_continue_with_lines THEN
165920 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
165921 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
165922
165923 xla_accounting_err_pkg.build_message
165924 (p_appli_s_name => 'XLA'
165925 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
165926 ,p_token_1 => 'LINE_NUMBER'
165927 ,p_value_1 => l_array_extract_line_num(Idx)
165928 ,p_token_2 => 'PRODUCT_NAME'
165929 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
165930 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
165931 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
165932 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
165933
165934 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
165935 --
165936 -- following sets the accounting attributes needed to reverse
165937 -- accounting for a distributeion
165938 --
165939
165940 --
165941 -- 5217187
165942 --
165943 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
165944 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
165945 g_array_event(l_event_id).array_value_num('header_index'));
165946 --
165947 --
165948
165949 -- No reversal code generated
165950
165951 xla_ae_lines_pkg.SetAcctReversalAttrs
165952 (p_event_id => l_event_id
165953 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
165954 ,p_calculate_acctd_flag => l_calculate_acctd_flag
165955 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
165956 END IF;
165957
165958 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
165959 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
165960
165961 --
165962 AcctLineType_15 (
165963 p_application_id => p_application_id
165964 ,p_event_id => l_event_id
165965 ,p_calculate_acctd_flag => l_calculate_acctd_flag
165966 ,p_calculate_g_l_flag => l_calculate_g_l_flag
165967 ,p_actual_flag => l_actual_flag
165968 ,p_balance_type_code => l_balance_type_code
165969 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
165970
165971 , p_source_4 => l_array_source_4(Idx)
165972 , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
165973 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
165974 , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
165975 , p_source_10 => g_array_event(l_event_id).array_value_num('source_10')
165976 , p_source_11 => l_array_source_11(Idx)
165977 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
165978 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
165979 , p_source_13 => g_array_event(l_event_id).array_value_num('source_13')
165980 , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
165981 , p_source_15 => l_array_source_15(Idx)
165982 , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
165983 , p_source_18 => l_array_source_18(Idx)
165984 , p_source_19 => l_array_source_19(Idx)
165985 , p_source_20 => l_array_source_20(Idx)
165986 , p_source_21 => l_array_source_21(Idx)
165987 , p_source_22 => l_array_source_22(Idx)
165988 , p_source_23 => g_array_event(l_event_id).array_value_num('source_23')
165989 , p_source_24 => l_array_source_24(Idx)
165990 , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
165991 , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
165992 );
165993 If(l_balance_type_code = 'A') THEN
165994 l_actual_gain_loss_ref := l_gain_or_loss_ref;
165995 END IF;
165996
165997 --
165998
165999
166000 --
166001 AcctLineType_38 (
166002 p_application_id => p_application_id
166003 ,p_event_id => l_event_id
166004 ,p_calculate_acctd_flag => l_calculate_acctd_flag
166005 ,p_calculate_g_l_flag => l_calculate_g_l_flag
166006 ,p_actual_flag => l_actual_flag
166007 ,p_balance_type_code => l_balance_type_code
166008 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
166009
166010 , p_source_4 => l_array_source_4(Idx)
166011 , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
166012 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
166013 , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
166014 , p_source_10 => g_array_event(l_event_id).array_value_num('source_10')
166015 , p_source_11 => l_array_source_11(Idx)
166016 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
166017 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
166018 , p_source_13 => g_array_event(l_event_id).array_value_num('source_13')
166019 , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
166020 , p_source_15 => l_array_source_15(Idx)
166021 , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
166022 , p_source_18 => l_array_source_18(Idx)
166023 , p_source_19 => l_array_source_19(Idx)
166024 , p_source_20 => l_array_source_20(Idx)
166025 , p_source_21 => l_array_source_21(Idx)
166026 , p_source_22 => l_array_source_22(Idx)
166027 , p_source_23 => g_array_event(l_event_id).array_value_num('source_23')
166028 , p_source_24 => l_array_source_24(Idx)
166029 , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
166030 , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
166031 );
166032 If(l_balance_type_code = 'A') THEN
166033 l_actual_gain_loss_ref := l_gain_or_loss_ref;
166034 END IF;
166035
166036 --
166037
166038
166039 --
166040 AcctLineType_140 (
166041 p_application_id => p_application_id
166042 ,p_event_id => l_event_id
166043 ,p_calculate_acctd_flag => l_calculate_acctd_flag
166044 ,p_calculate_g_l_flag => l_calculate_g_l_flag
166045 ,p_actual_flag => l_actual_flag
166046 ,p_balance_type_code => l_balance_type_code
166047 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
166048
166049 , p_source_4 => l_array_source_4(Idx)
166050 , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
166051 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
166052 , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
166053 , p_source_10 => g_array_event(l_event_id).array_value_num('source_10')
166054 , p_source_11 => l_array_source_11(Idx)
166055 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
166056 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
166057 , p_source_13 => g_array_event(l_event_id).array_value_num('source_13')
166058 , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
166059 , p_source_15 => l_array_source_15(Idx)
166060 , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
166061 , p_source_18 => l_array_source_18(Idx)
166062 , p_source_19 => l_array_source_19(Idx)
166063 , p_source_20 => l_array_source_20(Idx)
166064 , p_source_21 => l_array_source_21(Idx)
166065 , p_source_22 => l_array_source_22(Idx)
166066 , p_source_23 => g_array_event(l_event_id).array_value_num('source_23')
166067 , p_source_24 => l_array_source_24(Idx)
166068 , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
166069 , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
166070 );
166071 If(l_balance_type_code = 'A') THEN
166072 l_actual_gain_loss_ref := l_gain_or_loss_ref;
166073 END IF;
166074
166075 --
166076
166077
166078 --
166079 AcctLineType_166 (
166080 p_application_id => p_application_id
166081 ,p_event_id => l_event_id
166082 ,p_calculate_acctd_flag => l_calculate_acctd_flag
166083 ,p_calculate_g_l_flag => l_calculate_g_l_flag
166084 ,p_actual_flag => l_actual_flag
166085 ,p_balance_type_code => l_balance_type_code
166086 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
166087
166088 , p_source_4 => l_array_source_4(Idx)
166089 , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
166090 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
166091 , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
166092 , p_source_10 => g_array_event(l_event_id).array_value_num('source_10')
166093 , p_source_11 => l_array_source_11(Idx)
166094 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
166095 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
166096 , p_source_13 => g_array_event(l_event_id).array_value_num('source_13')
166097 , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
166098 , p_source_15 => l_array_source_15(Idx)
166099 , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
166100 , p_source_18 => l_array_source_18(Idx)
166101 , p_source_19 => l_array_source_19(Idx)
166102 , p_source_20 => l_array_source_20(Idx)
166103 , p_source_21 => l_array_source_21(Idx)
166104 , p_source_22 => l_array_source_22(Idx)
166105 , p_source_23 => g_array_event(l_event_id).array_value_num('source_23')
166106 , p_source_24 => l_array_source_24(Idx)
166107 , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
166108 , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
166109 );
166110 If(l_balance_type_code = 'A') THEN
166111 l_actual_gain_loss_ref := l_gain_or_loss_ref;
166112 END IF;
166113
166114 --
166115
166116
166117 --
166118 AcctLineType_185 (
166119 p_application_id => p_application_id
166120 ,p_event_id => l_event_id
166121 ,p_calculate_acctd_flag => l_calculate_acctd_flag
166122 ,p_calculate_g_l_flag => l_calculate_g_l_flag
166123 ,p_actual_flag => l_actual_flag
166124 ,p_balance_type_code => l_balance_type_code
166125 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
166126
166127 , p_source_4 => l_array_source_4(Idx)
166128 , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
166129 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
166130 , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
166131 , p_source_10 => g_array_event(l_event_id).array_value_num('source_10')
166132 , p_source_11 => l_array_source_11(Idx)
166133 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
166134 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
166135 , p_source_13 => g_array_event(l_event_id).array_value_num('source_13')
166136 , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
166137 , p_source_15 => l_array_source_15(Idx)
166138 , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
166139 , p_source_18 => l_array_source_18(Idx)
166140 , p_source_19 => l_array_source_19(Idx)
166141 , p_source_20 => l_array_source_20(Idx)
166142 , p_source_21 => l_array_source_21(Idx)
166143 , p_source_22 => l_array_source_22(Idx)
166144 , p_source_23 => g_array_event(l_event_id).array_value_num('source_23')
166145 , p_source_24 => l_array_source_24(Idx)
166146 , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
166147 , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
166148 );
166149 If(l_balance_type_code = 'A') THEN
166150 l_actual_gain_loss_ref := l_gain_or_loss_ref;
166151 END IF;
166152
166153 --
166154
166155
166156 --
166157 AcctLineType_225 (
166158 p_application_id => p_application_id
166159 ,p_event_id => l_event_id
166160 ,p_calculate_acctd_flag => l_calculate_acctd_flag
166161 ,p_calculate_g_l_flag => l_calculate_g_l_flag
166162 ,p_actual_flag => l_actual_flag
166163 ,p_balance_type_code => l_balance_type_code
166164 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
166165
166166 , p_source_4 => l_array_source_4(Idx)
166167 , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
166168 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
166169 , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
166170 , p_source_10 => g_array_event(l_event_id).array_value_num('source_10')
166171 , p_source_11 => l_array_source_11(Idx)
166172 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
166173 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
166174 , p_source_13 => g_array_event(l_event_id).array_value_num('source_13')
166175 , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
166176 , p_source_15 => l_array_source_15(Idx)
166177 , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
166178 , p_source_18 => l_array_source_18(Idx)
166179 , p_source_19 => l_array_source_19(Idx)
166180 , p_source_20 => l_array_source_20(Idx)
166181 , p_source_21 => l_array_source_21(Idx)
166182 , p_source_22 => l_array_source_22(Idx)
166183 , p_source_23 => g_array_event(l_event_id).array_value_num('source_23')
166184 , p_source_24 => l_array_source_24(Idx)
166185 , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
166186 , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
166187 );
166188 If(l_balance_type_code = 'A') THEN
166189 l_actual_gain_loss_ref := l_gain_or_loss_ref;
166190 END IF;
166191
166192 --
166193
166194
166195 --
166196 AcctLineType_228 (
166197 p_application_id => p_application_id
166198 ,p_event_id => l_event_id
166199 ,p_calculate_acctd_flag => l_calculate_acctd_flag
166200 ,p_calculate_g_l_flag => l_calculate_g_l_flag
166201 ,p_actual_flag => l_actual_flag
166202 ,p_balance_type_code => l_balance_type_code
166203 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
166204
166205 , p_source_4 => l_array_source_4(Idx)
166206 , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
166207 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
166208 , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
166209 , p_source_10 => g_array_event(l_event_id).array_value_num('source_10')
166210 , p_source_11 => l_array_source_11(Idx)
166211 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
166212 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
166213 , p_source_13 => g_array_event(l_event_id).array_value_num('source_13')
166214 , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
166215 , p_source_15 => l_array_source_15(Idx)
166216 , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
166217 , p_source_18 => l_array_source_18(Idx)
166218 , p_source_19 => l_array_source_19(Idx)
166219 , p_source_20 => l_array_source_20(Idx)
166220 , p_source_21 => l_array_source_21(Idx)
166221 , p_source_22 => l_array_source_22(Idx)
166222 , p_source_23 => g_array_event(l_event_id).array_value_num('source_23')
166223 , p_source_24 => l_array_source_24(Idx)
166224 , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
166225 , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
166226 );
166227 If(l_balance_type_code = 'A') THEN
166228 l_actual_gain_loss_ref := l_gain_or_loss_ref;
166229 END IF;
166230
166231 --
166232
166233
166234 --
166235 AcctLineType_240 (
166236 p_application_id => p_application_id
166237 ,p_event_id => l_event_id
166238 ,p_calculate_acctd_flag => l_calculate_acctd_flag
166239 ,p_calculate_g_l_flag => l_calculate_g_l_flag
166240 ,p_actual_flag => l_actual_flag
166241 ,p_balance_type_code => l_balance_type_code
166242 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
166243
166244 , p_source_4 => l_array_source_4(Idx)
166245 , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
166246 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
166247 , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
166248 , p_source_10 => g_array_event(l_event_id).array_value_num('source_10')
166249 , p_source_11 => l_array_source_11(Idx)
166250 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
166251 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
166252 , p_source_13 => g_array_event(l_event_id).array_value_num('source_13')
166253 , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
166254 , p_source_15 => l_array_source_15(Idx)
166255 , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
166256 , p_source_18 => l_array_source_18(Idx)
166257 , p_source_19 => l_array_source_19(Idx)
166258 , p_source_20 => l_array_source_20(Idx)
166259 , p_source_21 => l_array_source_21(Idx)
166260 , p_source_22 => l_array_source_22(Idx)
166261 , p_source_23 => g_array_event(l_event_id).array_value_num('source_23')
166262 , p_source_24 => l_array_source_24(Idx)
166263 , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
166264 , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
166265 );
166266 If(l_balance_type_code = 'A') THEN
166267 l_actual_gain_loss_ref := l_gain_or_loss_ref;
166268 END IF;
166269
166270 --
166271
166272 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
166273 -- or secondary ledger that has different currency with primary
166274 -- or alc that is calculated by sla
166275 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
166276 (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'))
166277
166278 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
166279 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
166280 AND (l_actual_flag = 'A')) THEN
166281 XLA_AE_LINES_PKG.CreateGainOrLossLines(
166282 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
166283 ,p_application_id => p_application_id
166284 ,p_amb_context_code => 'DEFAULT'
166285 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
166286 ,p_event_class_code => C_EVENT_CLASS_CODE
166287 ,p_event_type_code => C_EVENT_TYPE_CODE
166288
166289 ,p_gain_ccid => -1
166290 ,p_loss_ccid => -1
166291
166292 ,p_actual_flag => l_actual_flag
166293 ,p_enc_flag => null
166294 ,p_actual_g_l_ref => l_actual_gain_loss_ref
166295 ,p_enc_g_l_ref => null
166296 );
166297 END IF;
166298 END IF;
166299 END IF;
166300
166301 ELSE
166302 --
166303 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
166304 --
166305 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
166306 trace
166307 (p_msg => 'Trancaction revesal option is Y'
166308 ,p_level => C_LEVEL_STATEMENT
166309 ,p_module => l_log_module);
166310 END IF;
166311 END IF;
166312
166313 END LOOP;
166314 l_result := XLA_AE_LINES_PKG.InsertLines ;
166315 end loop;
166316 close line_cur;
166317
166318
166319 --
166320 -- insert headers into xla_ae_headers_gt table
166321 --
166322 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
166323
166324 -- insert into errors table here.
166325
166326 END LOOP;
166327
166328 --
166329 -- 4865292
166330 --
166331 -- Compare g_hdr_extract_count with event count in
166332 -- CreateHeadersAndLines.
166333 --
166334 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
166335
166336 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
166337 trace (p_msg => '# rows extracted from header extract objects '
166338 || ' (running total): '
166339 || g_hdr_extract_count
166340 ,p_level => C_LEVEL_STATEMENT
166341 ,p_module => l_log_module);
166342 END IF;
166343
166344 CLOSE header_cur;
166345 --
166346
166347 --
166348 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
166349 trace
166350 (p_msg => 'END of EventClass_270'
166351 ,p_level => C_LEVEL_PROCEDURE
166352 ,p_module => l_log_module);
166353 END IF;
166354 --
166355 RETURN l_result;
166356 EXCEPTION
166357 WHEN xla_exceptions_pkg.application_exception THEN
166358
166359 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
166360
166361
166362 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
166363
166364 RAISE;
166365
166366 WHEN NO_DATA_FOUND THEN
166367
166368 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
166369 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
166370
166371 FOR header_record IN header_cur
166372 LOOP
166373 l_array_header_events(header_record.event_id) := header_record.event_id;
166374 END LOOP;
166375
166376 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
166377 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
166378
166379 fnd_file.put_line(fnd_file.LOG, ' ');
166380 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
166381 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
166382 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
166383
166384 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
166385 LOOP
166386 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
166387 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
166388 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
166389 END IF;
166390 END LOOP;
166391
166392 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
166393 fnd_file.put_line(fnd_file.LOG, ' ');
166394
166395
166396 xla_exceptions_pkg.raise_message
166397 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_270');
166398
166399
166400 WHEN OTHERS THEN
166401 xla_exceptions_pkg.raise_message
166402 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_270');
166403 END EventClass_270;
166404 --
166405
166406 ---------------------------------------
166407 --
166408 -- PRIVATE PROCEDURE
166409 -- insert_sources_271
166410 --
166411 ----------------------------------------
166412 --
166413 PROCEDURE insert_sources_271(
166414 p_target_ledger_id IN NUMBER
166415 , p_language IN VARCHAR2
166416 , p_sla_ledger_id IN NUMBER
166417 , p_pad_start_date IN DATE
166418 , p_pad_end_date IN DATE
166419 )
166420 IS
166421
166422 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'RCPT_REC_INSP_ALL';
166423 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'RCPT_REC_INSP';
166424 p_apps_owner VARCHAR2(30);
166425 l_log_module VARCHAR2(240);
166426 BEGIN
166427 IF g_log_enabled THEN
166428 l_log_module := C_DEFAULT_MODULE||'.insert_sources_271';
166429 END IF;
166430 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
166431
166432 trace
166433 (p_msg => 'BEGIN of insert_sources_271'
166434 ,p_level => C_LEVEL_PROCEDURE
166435 ,p_module => l_log_module);
166436
166437 END IF;
166438
166439 -- select APPS owner
166440 SELECT oracle_username
166441 INTO p_apps_owner
166442 FROM fnd_oracle_userid
166443 WHERE read_only_flag = 'U'
166444 ;
166445
166446 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
166447 trace
166448 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
166449 ' - p_language = '||p_language||
166450 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
166451 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
166452 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
166453 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
166454 ,p_level => C_LEVEL_STATEMENT
166455 ,p_module => l_log_module);
166456 END IF;
166457
166458
166459 --
166460 INSERT INTO xla_diag_sources --hdr2
166461 (
166462 event_id
166463 , ledger_id
166464 , sla_ledger_id
166465 , description_language
166466 , object_name
166467 , object_type_code
166468 , line_number
166469 , source_application_id
166470 , source_type_code
166471 , source_code
166472 , source_value
166473 , source_meaning
166474 , created_by
166475 , creation_date
166476 , last_update_date
166477 , last_updated_by
166478 , last_update_login
166479 , program_update_date
166480 , program_application_id
166481 , program_id
166482 , request_id
166483 )
166484 SELECT
166485 event_id
166486 , p_target_ledger_id
166487 , p_sla_ledger_id
166488 , p_language
166489 , object_name
166490 , object_type_code
166491 , line_number
166492 , source_application_id
166493 , source_type_code
166494 , source_code
166495 , SUBSTR(source_value ,1,1996)
166496 , SUBSTR(source_meaning ,1,200)
166497 , xla_environment_pkg.g_Usr_Id
166498 , TRUNC(SYSDATE)
166499 , TRUNC(SYSDATE)
166500 , xla_environment_pkg.g_Usr_Id
166501 , xla_environment_pkg.g_Login_Id
166502 , TRUNC(SYSDATE)
166503 , xla_environment_pkg.g_Prog_Appl_Id
166504 , xla_environment_pkg.g_Prog_Id
166505 , xla_environment_pkg.g_Req_Id
166506 FROM (
166507 SELECT xet.event_id event_id
166508 , 0 line_number
166509 , CASE r
166510 WHEN 1 THEN 'CST_XLA_RCV_HEADERS_V'
166511 WHEN 2 THEN 'CST_XLA_RCV_HEADERS_V'
166512 WHEN 3 THEN 'CST_XLA_RCV_HEADERS_V'
166513 WHEN 4 THEN 'CST_XLA_RCV_HEADERS_V'
166514 WHEN 5 THEN 'CST_XLA_RCV_HEADERS_V'
166515 WHEN 6 THEN 'CST_XLA_RCV_HEADERS_V'
166516
166517 ELSE null
166518 END object_name
166519 , CASE r
166520 WHEN 1 THEN 'HEADER'
166521 WHEN 2 THEN 'HEADER'
166522 WHEN 3 THEN 'HEADER'
166523 WHEN 4 THEN 'HEADER'
166524 WHEN 5 THEN 'HEADER'
166525 WHEN 6 THEN 'HEADER'
166526
166527 ELSE null
166528 END object_type_code
166529 , CASE r
166530 WHEN 1 THEN '707'
166531 WHEN 2 THEN '707'
166532 WHEN 3 THEN '707'
166533 WHEN 4 THEN '707'
166534 WHEN 5 THEN '707'
166535 WHEN 6 THEN '707'
166536
166537 ELSE null
166538 END source_application_id
166539 , 'S' source_type_code
166540 , CASE r
166541 WHEN 1 THEN 'DISTRIBUTION_TYPE'
166542 WHEN 2 THEN 'CURRENCY_CODE'
166543 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE'
166544 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE'
166545 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE'
166546 WHEN 6 THEN 'TRANSFER_TO_GL_INDICATOR'
166547
166548 ELSE null
166549 END source_code
166550 , CASE r
166551 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
166552 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
166553 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
166554 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
166555 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
166556 WHEN 6 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
166557
166558 ELSE null
166559 END source_value
166560 , CASE r
166561 WHEN 1 THEN fvl12.meaning
166562 WHEN 6 THEN fvl38.meaning
166563
166564 ELSE null
166565 END source_meaning
166566 FROM xla_events_gt xet
166567 , CST_XLA_RCV_HEADERS_V h1
166568 , fnd_lookup_values fvl12
166569 , fnd_lookup_values fvl38
166570 ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
166571 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
166572 AND xet.event_class_code = C_EVENT_CLASS_CODE
166573 AND h1.event_id = xet.event_id
166574 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
166575 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
166576 AND fvl12.view_application_id(+) = 700
166577 AND fvl12.language(+) = USERENV('LANG')
166578 AND fvl38.lookup_type(+) = 'YES_NO'
166579 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
166580 AND fvl38.view_application_id(+) = 0
166581 AND fvl38.language(+) = USERENV('LANG')
166582
166583 )
166584 ;
166585 --
166586 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
166587
166588 trace
166589 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
166590 ,p_level => C_LEVEL_STATEMENT
166591 ,p_module => l_log_module);
166592
166593 END IF;
166594 --
166595
166596
166597
166598 --
166599 INSERT INTO xla_diag_sources --line2
166600 (
166601 event_id
166602 , ledger_id
166603 , sla_ledger_id
166604 , description_language
166605 , object_name
166606 , object_type_code
166607 , line_number
166608 , source_application_id
166609 , source_type_code
166610 , source_code
166611 , source_value
166612 , source_meaning
166613 , created_by
166614 , creation_date
166615 , last_update_date
166616 , last_updated_by
166617 , last_update_login
166618 , program_update_date
166619 , program_application_id
166620 , program_id
166621 , request_id
166622 )
166623 SELECT event_id
166624 , p_target_ledger_id
166625 , p_sla_ledger_id
166626 , p_language
166627 , object_name
166628 , object_type_code
166629 , line_number
166630 , source_application_id
166631 , source_type_code
166632 , source_code
166633 , SUBSTR(source_value,1,1996)
166634 , SUBSTR(source_meaning ,1,200)
166635 , xla_environment_pkg.g_Usr_Id
166636 , TRUNC(SYSDATE)
166637 , TRUNC(SYSDATE)
166638 , xla_environment_pkg.g_Usr_Id
166639 , xla_environment_pkg.g_Login_Id
166640 , TRUNC(SYSDATE)
166641 , xla_environment_pkg.g_Prog_Appl_Id
166642 , xla_environment_pkg.g_Prog_Id
166643 , xla_environment_pkg.g_Req_Id
166644 FROM (
166645 SELECT xet.event_id event_id
166646 , l2.line_number line_number
166647 , CASE r
166648 WHEN 1 THEN 'CST_XLA_RCV_LINES_V'
166649 WHEN 2 THEN 'CST_XLA_RCV_LINES_V'
166650 WHEN 3 THEN 'CST_XLA_RCV_LINES_V'
166651 WHEN 4 THEN 'CST_XLA_RCV_LINES_V'
166652 WHEN 5 THEN 'CST_XLA_RCV_LINES_V'
166653
166654 ELSE null
166655 END object_name
166656 , CASE r
166657 WHEN 1 THEN 'LINE'
166658 WHEN 2 THEN 'LINE'
166659 WHEN 3 THEN 'LINE'
166660 WHEN 4 THEN 'LINE'
166661 WHEN 5 THEN 'LINE'
166662
166663 ELSE null
166664 END object_type_code
166665 , CASE r
166666 WHEN 1 THEN '707'
166667 WHEN 2 THEN '707'
166668 WHEN 3 THEN '707'
166669 WHEN 4 THEN '707'
166670 WHEN 5 THEN '707'
166671
166672 ELSE null
166673 END source_application_id
166674 , 'S' source_type_code
166675 , CASE r
166676 WHEN 1 THEN 'CODE_COMBINATION_ID'
166677 WHEN 2 THEN 'RCV_ACCOUNTING_LINE_TYPE'
166678 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER'
166679 WHEN 4 THEN 'ENTERED_AMOUNT'
166680 WHEN 5 THEN 'ACCOUNTED_AMOUNT'
166681
166682 ELSE null
166683 END source_code
166684 , CASE r
166685 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
166686 WHEN 2 THEN TO_CHAR(l2.RCV_ACCOUNTING_LINE_TYPE)
166687 WHEN 3 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
166688 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
166689 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
166690
166691 ELSE null
166692 END source_value
166693 , null source_meaning
166694 FROM xla_events_gt xet
166695 , CST_XLA_RCV_LINES_V l2
166696 , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
166697 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
166698 AND xet.event_class_code = C_EVENT_CLASS_CODE
166699 AND l2.event_id = xet.event_id
166700
166701 )
166702 ;
166703 --
166704 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
166705
166706 trace
166707 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
166708 ,p_level => C_LEVEL_STATEMENT
166709 ,p_module => l_log_module);
166710
166711 END IF;
166712
166713
166714 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
166715 trace
166716 (p_msg => 'END of insert_sources_271'
166717 ,p_level => C_LEVEL_PROCEDURE
166718 ,p_module => l_log_module);
166719 END IF;
166720 EXCEPTION
166721 WHEN xla_exceptions_pkg.application_exception THEN
166722 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
166723 trace
166724 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
166725 ,p_level => C_LEVEL_EXCEPTION
166726 ,p_module => l_log_module);
166727 END IF;
166728 RAISE;
166729 WHEN OTHERS THEN
166730 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
166731 trace
166732 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
166733 ,p_level => C_LEVEL_EXCEPTION
166734 ,p_module => l_log_module);
166735 END IF;
166736 xla_exceptions_pkg.raise_message
166737 (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_271');
166738 END insert_sources_271;
166739 --
166740
166741 ---------------------------------------
166742 --
166743 -- PRIVATE FUNCTION
166744 -- EventClass_271
166745 --
166746 ----------------------------------------
166747 --
166748 FUNCTION EventClass_271
166749 (p_application_id IN NUMBER
166750 ,p_base_ledger_id IN NUMBER
166751 ,p_target_ledger_id IN NUMBER
166752 ,p_language IN VARCHAR2
166753 ,p_currency_code IN VARCHAR2
166754 ,p_sla_ledger_id IN NUMBER
166755 ,p_pad_start_date IN DATE
166756 ,p_pad_end_date IN DATE
166757 ,p_primary_ledger_id IN NUMBER)
166758 RETURN BOOLEAN IS
166759 --
166760 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'RCPT_REC_INSP_ALL';
166761 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'RCPT_REC_INSP';
166762
166763 l_calculate_acctd_flag VARCHAR2(1) :='N';
166764 l_calculate_g_l_flag VARCHAR2(1) :='N';
166765 --
166766 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
166767 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
166768 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
166769 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
166770 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
166771 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
166772 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
166773 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
166774 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
166775 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
166776 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
166777 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
166778 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
166779 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
166780 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
166781 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
166782 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
166783 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
166784 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
166785 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
166786 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
166787 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
166788 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
166789 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
166790 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
166791 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
166792
166793 l_event_id NUMBER;
166794 l_previous_event_id NUMBER;
166795 l_first_event_id NUMBER;
166796 l_last_event_id NUMBER;
166797
166798 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
166799 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
166800 --
166801 --
166802 l_result BOOLEAN := TRUE;
166803 l_rows NUMBER := 1000;
166804 l_event_type_name VARCHAR2(80) := 'All';
166805 l_event_class_name VARCHAR2(80) := 'Receipt into Receiving Inspection';
166806 l_description VARCHAR2(4000);
166807 l_transaction_reversal NUMBER;
166808 l_ae_header_id NUMBER;
166809 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
166810 l_log_module VARCHAR2(240);
166811 --
166812 l_acct_reversal_source VARCHAR2(30);
166813 l_trx_reversal_source VARCHAR2(30);
166814
166815 l_continue_with_lines BOOLEAN := TRUE;
166816 --
166817 l_acc_rev_gl_date_source DATE; -- 4262811
166818 --
166819 type t_array_event_id is table of number index by binary_integer;
166820
166821 l_rec_array_event t_rec_array_event;
166822 l_null_rec_array_event t_rec_array_event;
166823 l_array_ae_header_id xla_number_array_type;
166824 l_actual_flag VARCHAR2(1) := NULL;
166825 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
166826 l_balance_type_code VARCHAR2(1) :=NULL;
166827 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
166828
166829 --
166830 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
166831 --
166832
166833 TYPE t_array_source_12 IS TABLE OF CST_XLA_RCV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
166834 TYPE t_array_source_15 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
166835 TYPE t_array_source_19 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
166836 TYPE t_array_source_20 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
166837 TYPE t_array_source_21 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
166838 TYPE t_array_source_38 IS TABLE OF CST_XLA_RCV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
166839
166840 TYPE t_array_source_4 IS TABLE OF CST_XLA_RCV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
166841 TYPE t_array_source_5 IS TABLE OF CST_XLA_RCV_LINES_V.RCV_ACCOUNTING_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
166842 TYPE t_array_source_11 IS TABLE OF CST_XLA_RCV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
166843 TYPE t_array_source_18 IS TABLE OF CST_XLA_RCV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
166844 TYPE t_array_source_22 IS TABLE OF CST_XLA_RCV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
166845
166846 l_array_source_12 t_array_source_12;
166847 l_array_source_12_meaning t_array_lookup_meaning;
166848 l_array_source_15 t_array_source_15;
166849 l_array_source_19 t_array_source_19;
166850 l_array_source_20 t_array_source_20;
166851 l_array_source_21 t_array_source_21;
166852 l_array_source_38 t_array_source_38;
166853 l_array_source_38_meaning t_array_lookup_meaning;
166854
166855 l_array_source_4 t_array_source_4;
166856 l_array_source_5 t_array_source_5;
166857 l_array_source_11 t_array_source_11;
166858 l_array_source_18 t_array_source_18;
166859 l_array_source_22 t_array_source_22;
166860
166861 --
166862 CURSOR header_cur
166863 IS
166864 SELECT /*+ leading(xet) cardinality(xet,1) */
166865 -- Event Class Code: RCPT_REC_INSP
166866 xet.entity_id
166867 ,xet.legal_entity_id
166868 ,xet.entity_code
166869 ,xet.transaction_number
166870 ,xet.event_id
166871 ,xet.event_class_code
166872 ,xet.event_type_code
166873 ,xet.event_number
166874 ,xet.event_date
166875 ,xet.transaction_date
166876 ,xet.reference_num_1
166877 ,xet.reference_num_2
166878 ,xet.reference_num_3
166879 ,xet.reference_num_4
166880 ,xet.reference_char_1
166881 ,xet.reference_char_2
166882 ,xet.reference_char_3
166883 ,xet.reference_char_4
166884 ,xet.reference_date_1
166885 ,xet.reference_date_2
166886 ,xet.reference_date_3
166887 ,xet.reference_date_4
166888 ,xet.event_created_by
166889 ,xet.budgetary_control_flag
166890 , h1.DISTRIBUTION_TYPE source_12
166891 , fvl12.meaning source_12_meaning
166892 , h1.CURRENCY_CODE source_15
166893 , h1.CURRENCY_CONVERSION_DATE source_19
166894 , h1.CURRENCY_CONVERSION_RATE source_20
166895 , h1.CURRENCY_CONVERSION_TYPE source_21
166896 , h1.TRANSFER_TO_GL_INDICATOR source_38
166897 , fvl38.meaning source_38_meaning
166898 FROM xla_events_gt xet
166899 , CST_XLA_RCV_HEADERS_V h1
166900 , fnd_lookup_values fvl12
166901 , fnd_lookup_values fvl38
166902 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
166903 and xet.event_class_code = C_EVENT_CLASS_CODE
166904 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
166905 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
166906 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
166907 AND fvl12.view_application_id(+) = 700
166908 AND fvl12.language(+) = USERENV('LANG')
166909 AND fvl38.lookup_type(+) = 'YES_NO'
166910 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
166911 AND fvl38.view_application_id(+) = 0
166912 AND fvl38.language(+) = USERENV('LANG')
166913
166914 ORDER BY event_id
166915 ;
166916
166917
166918 --
166919 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
166920 IS
166921 SELECT /*+ leading(xet) cardinality(xet,1) */
166922 -- Event Class Code: RCPT_REC_INSP
166923 xet.entity_id
166924 ,xet.legal_entity_id
166925 ,xet.entity_code
166926 ,xet.transaction_number
166927 ,xet.event_id
166928 ,xet.event_class_code
166929 ,xet.event_type_code
166930 ,xet.event_number
166931 ,xet.event_date
166932 ,xet.transaction_date
166933 ,xet.reference_num_1
166934 ,xet.reference_num_2
166935 ,xet.reference_num_3
166936 ,xet.reference_num_4
166937 ,xet.reference_char_1
166938 ,xet.reference_char_2
166939 ,xet.reference_char_3
166940 ,xet.reference_char_4
166941 ,xet.reference_date_1
166942 ,xet.reference_date_2
166943 ,xet.reference_date_3
166944 ,xet.reference_date_4
166945 ,xet.event_created_by
166946 ,xet.budgetary_control_flag
166947 , l2.LINE_NUMBER
166948 , l2.CODE_COMBINATION_ID source_4
166949 , l2.RCV_ACCOUNTING_LINE_TYPE source_5
166950 , l2.DISTRIBUTION_IDENTIFIER source_11
166951 , l2.ENTERED_AMOUNT source_18
166952 , l2.ACCOUNTED_AMOUNT source_22
166953 FROM xla_events_gt xet
166954 , CST_XLA_RCV_LINES_V l2
166955 WHERE xet.event_id between x_first_event_id and x_last_event_id
166956 and xet.event_date between p_pad_start_date and p_pad_end_date
166957 and xet.event_class_code = C_EVENT_CLASS_CODE
166958 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
166959 ;
166960
166961 --
166962 BEGIN
166963 IF g_log_enabled THEN
166964 l_log_module := C_DEFAULT_MODULE||'.EventClass_271';
166965 END IF;
166966 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
166967 trace
166968 (p_msg => 'BEGIN of EventClass_271'
166969 ,p_level => C_LEVEL_PROCEDURE
166970 ,p_module => l_log_module);
166971 END IF;
166972
166973 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
166974 trace
166975 (p_msg => 'p_application_id = '||p_application_id||
166976 ' - p_base_ledger_id = '||p_base_ledger_id||
166977 ' - p_target_ledger_id = '||p_target_ledger_id||
166978 ' - p_language = '||p_language||
166979 ' - p_currency_code = '||p_currency_code||
166980 ' - p_sla_ledger_id = '||p_sla_ledger_id
166981 ,p_level => C_LEVEL_STATEMENT
166982 ,p_module => l_log_module);
166983 END IF;
166984 --
166985 -- initialze arrays
166986 --
166987 g_array_event.DELETE;
166988 l_rec_array_event := l_null_rec_array_event;
166989 --
166990 --------------------------------------
166991 -- 4262811 Initialze MPA Line Number
166992 --------------------------------------
166993 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
166994
166995 --
166996
166997 --
166998 OPEN header_cur;
166999 --
167000 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
167001 trace
167002 (p_msg => 'SQL - FETCH header_cur'
167003 ,p_level => C_LEVEL_STATEMENT
167004 ,p_module => l_log_module);
167005 END IF;
167006 --
167007 LOOP
167008 FETCH header_cur BULK COLLECT INTO
167009 l_array_entity_id
167010 , l_array_legal_entity_id
167011 , l_array_entity_code
167012 , l_array_transaction_num
167013 , l_array_event_id
167014 , l_array_class_code
167015 , l_array_event_type
167016 , l_array_event_number
167017 , l_array_event_date
167018 , l_array_transaction_date
167019 , l_array_reference_num_1
167020 , l_array_reference_num_2
167021 , l_array_reference_num_3
167022 , l_array_reference_num_4
167023 , l_array_reference_char_1
167024 , l_array_reference_char_2
167025 , l_array_reference_char_3
167026 , l_array_reference_char_4
167027 , l_array_reference_date_1
167028 , l_array_reference_date_2
167029 , l_array_reference_date_3
167030 , l_array_reference_date_4
167031 , l_array_event_created_by
167032 , l_array_budgetary_control_flag
167033 , l_array_source_12
167034 , l_array_source_12_meaning
167035 , l_array_source_15
167036 , l_array_source_19
167037 , l_array_source_20
167038 , l_array_source_21
167039 , l_array_source_38
167040 , l_array_source_38_meaning
167041 LIMIT l_rows;
167042 --
167043 IF (C_LEVEL_EVENT >= g_log_level) THEN
167044 trace
167045 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
167046 ,p_level => C_LEVEL_EVENT
167047 ,p_module => l_log_module);
167048 END IF;
167049 --
167050 EXIT WHEN l_array_entity_id.COUNT = 0;
167051
167052 -- initialize arrays
167053 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
167054 XLA_AE_LINES_PKG.g_rec_lines := NULL;
167055
167056 --
167057 -- Bug 4458708
167058 --
167059 XLA_AE_LINES_PKG.g_LineNumber := 0;
167060
167061
167062 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
167063 g_last_hdr_idx := l_array_event_id.LAST;
167064 --
167065 -- loop for the headers. Each iteration is for each header extract row
167066 -- fetched in header cursor
167067 --
167068 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
167069
167070 --
167071 -- set event info as cache for other routines to refer event attributes
167072 --
167073 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
167074 (p_application_id => p_application_id
167075 ,p_primary_ledger_id => p_primary_ledger_id
167076 ,p_base_ledger_id => p_base_ledger_id
167077 ,p_target_ledger_id => p_target_ledger_id
167078 ,p_entity_id => l_array_entity_id(hdr_idx)
167079 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
167080 ,p_entity_code => l_array_entity_code(hdr_idx)
167081 ,p_transaction_num => l_array_transaction_num(hdr_idx)
167082 ,p_event_id => l_array_event_id(hdr_idx)
167083 ,p_event_class_code => l_array_class_code(hdr_idx)
167084 ,p_event_type_code => l_array_event_type(hdr_idx)
167085 ,p_event_number => l_array_event_number(hdr_idx)
167086 ,p_event_date => l_array_event_date(hdr_idx)
167087 ,p_transaction_date => l_array_transaction_date(hdr_idx)
167088 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
167089 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
167090 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
167091 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
167092 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
167093 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
167094 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
167095 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
167096 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
167097 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
167098 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
167099 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
167100 ,p_event_created_by => l_array_event_created_by(hdr_idx)
167101 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
167102
167103 --
167104 -- set the status of entry to C_VALID (0)
167105 --
167106 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
167107
167108 --
167109 -- initialize a row for ae header
167110 --
167111 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
167112
167113 l_event_id := l_array_event_id(hdr_idx);
167114
167115 --
167116 -- storing the hdr_idx for event. May be used by line cursor.
167117 --
167118 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
167119
167120 --
167121 -- store sources from header extract. This can be improved to
167122 -- store only those sources from header extract that may be used in lines
167123 --
167124
167125 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
167126 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
167127 g_array_event(l_event_id).array_value_char('source_15') := l_array_source_15(hdr_idx);
167128 g_array_event(l_event_id).array_value_date('source_19') := l_array_source_19(hdr_idx);
167129 g_array_event(l_event_id).array_value_num('source_20') := l_array_source_20(hdr_idx);
167130 g_array_event(l_event_id).array_value_char('source_21') := l_array_source_21(hdr_idx);
167131 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
167132 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
167133
167134 --
167135 -- initilaize the status of ae headers for diffrent balance types
167136 -- the status is initialised to C_NOT_CREATED (2)
167137 --
167138 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
167139 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
167140 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
167141
167142 --
167143 -- call api to validate and store accounting attributes for header
167144 --
167145
167146 ------------------------------------------------------------
167147 -- Accrual Reversal : to get date for Standard Source (NONE)
167148 ------------------------------------------------------------
167149 l_acc_rev_gl_date_source := NULL;
167150
167151 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
167152 l_rec_acct_attrs.array_date_value(1) :=
167153 xla_ae_sources_pkg.GetSystemSourceDate(
167154 p_source_code => 'XLA_REFERENCE_DATE_1'
167155 , p_source_type_code => 'Y'
167156 , p_source_application_id => 602
167157 );
167158 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_TRANSFER_FLAG';
167159 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
167160
167161
167162 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
167163
167164 XLA_AE_HEADER_PKG.SetJeCategoryName;
167165
167166 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
167167 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
167168 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
167169 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
167170 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
167171
167172
167173 -- No header level analytical criteria
167174
167175 --
167176 --accounting attribute enhancement, bug 3612931
167177 --
167178 l_trx_reversal_source := SUBSTR(NULL, 1,30);
167179
167180 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
167181 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
167182
167183 xla_accounting_err_pkg.build_message
167184 (p_appli_s_name => 'XLA'
167185 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
167186 ,p_token_1 => 'ACCT_ATTR_NAME'
167187 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
167188 ,p_token_2 => 'PRODUCT_NAME'
167189 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
167190 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
167191 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
167192 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
167193
167194 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
167195 --
167196 -- following sets the accounting attributes needed to reverse
167197 -- accounting for a distributeion
167198 --
167199 xla_ae_lines_pkg.SetTrxReversalAttrs
167200 (p_event_id => l_event_id
167201 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
167202 ,p_trx_reversal_source => l_trx_reversal_source);
167203
167204 END IF;
167205
167206
167207 ----------------------------------------------------------------
167208 -- 4262811 - update the header statuses to invalid in need be
167209 ----------------------------------------------------------------
167210 --
167211 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
167212
167213
167214 -----------------------------------------------
167215 -- No accrual reversal for the event class/type
167216 -----------------------------------------------
167217 ----------------------------------------------------------------
167218
167219 --
167220 -- this ends the header loop iteration for one bulk fetch
167221 --
167222 END LOOP;
167223
167224 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
167225 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
167226
167227 --
167228 -- insert dummy rows into lines gt table that were created due to
167229 -- transaction reversals
167230 --
167231 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
167232 l_result := XLA_AE_LINES_PKG.InsertLines;
167233 END IF;
167234
167235 --
167236 -- reset the temp_line_num for each set of events fetched from header
167237 -- cursor rather than doing it for each new event in line cursor
167238 -- Bug 3939231
167239 --
167240 xla_ae_lines_pkg.g_temp_line_num := 0;
167241
167242
167243
167244 --
167245 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
167246 --
167247 --
167248 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
167249
167250 trace
167251 (p_msg => 'SQL - FETCH line_cur'
167252 ,p_level => C_LEVEL_STATEMENT
167253 ,p_module => l_log_module);
167254
167255 END IF;
167256 --
167257 --
167258 LOOP
167259 --
167260 FETCH line_cur BULK COLLECT INTO
167261 l_array_entity_id
167262 , l_array_legal_entity_id
167263 , l_array_entity_code
167264 , l_array_transaction_num
167265 , l_array_event_id
167266 , l_array_class_code
167267 , l_array_event_type
167268 , l_array_event_number
167269 , l_array_event_date
167270 , l_array_transaction_date
167271 , l_array_reference_num_1
167272 , l_array_reference_num_2
167273 , l_array_reference_num_3
167274 , l_array_reference_num_4
167275 , l_array_reference_char_1
167276 , l_array_reference_char_2
167277 , l_array_reference_char_3
167278 , l_array_reference_char_4
167279 , l_array_reference_date_1
167280 , l_array_reference_date_2
167281 , l_array_reference_date_3
167282 , l_array_reference_date_4
167283 , l_array_event_created_by
167284 , l_array_budgetary_control_flag
167285 , l_array_extract_line_num
167286 , l_array_source_4
167287 , l_array_source_5
167288 , l_array_source_11
167289 , l_array_source_18
167290 , l_array_source_22
167291 LIMIT l_rows;
167292
167293 --
167294 IF (C_LEVEL_EVENT >= g_log_level) THEN
167295 trace
167296 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
167297 ,p_level => C_LEVEL_EVENT
167298 ,p_module => l_log_module);
167299 END IF;
167300 --
167301 EXIT WHEN l_array_entity_id.count = 0;
167302
167303 XLA_AE_LINES_PKG.g_rec_lines := null;
167304
167305 --
167306 -- Bug 4458708
167307 --
167308 XLA_AE_LINES_PKG.g_LineNumber := 0;
167309 --
167310 --
167311
167312 FOR Idx IN 1..l_array_event_id.count LOOP
167313 --
167314 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
167315 --
167316 l_event_id := l_array_event_id(idx); -- 5648433
167317
167318 --
167319 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
167320 --
167321
167322 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
167323 (g_array_event(l_event_id).array_value_num('header_index'))
167324 ,'N'
167325 ) <> 'Y'
167326 THEN
167327 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
167328 trace
167329 (p_msg => 'Trancaction revesal option is not Y '
167330 ,p_level => C_LEVEL_STATEMENT
167331 ,p_module => l_log_module);
167332 END IF;
167333
167334 --
167335 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
167336 --
167337 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
167338 --
167339 -- set event info as cache for other routines to refer event attributes
167340 --
167341
167342 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
167343 l_previous_event_id := l_event_id;
167344
167345 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
167346 (p_application_id => p_application_id
167347 ,p_primary_ledger_id => p_primary_ledger_id
167348 ,p_base_ledger_id => p_base_ledger_id
167349 ,p_target_ledger_id => p_target_ledger_id
167350 ,p_entity_id => l_array_entity_id(Idx)
167351 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
167352 ,p_entity_code => l_array_entity_code(Idx)
167353 ,p_transaction_num => l_array_transaction_num(Idx)
167354 ,p_event_id => l_array_event_id(Idx)
167355 ,p_event_class_code => l_array_class_code(Idx)
167356 ,p_event_type_code => l_array_event_type(Idx)
167357 ,p_event_number => l_array_event_number(Idx)
167358 ,p_event_date => l_array_event_date(Idx)
167359 ,p_transaction_date => l_array_transaction_date(Idx)
167360 ,p_reference_num_1 => l_array_reference_num_1(Idx)
167361 ,p_reference_num_2 => l_array_reference_num_2(Idx)
167362 ,p_reference_num_3 => l_array_reference_num_3(Idx)
167363 ,p_reference_num_4 => l_array_reference_num_4(Idx)
167364 ,p_reference_char_1 => l_array_reference_char_1(Idx)
167365 ,p_reference_char_2 => l_array_reference_char_2(Idx)
167366 ,p_reference_char_3 => l_array_reference_char_3(Idx)
167367 ,p_reference_char_4 => l_array_reference_char_4(Idx)
167368 ,p_reference_date_1 => l_array_reference_date_1(Idx)
167369 ,p_reference_date_2 => l_array_reference_date_2(Idx)
167370 ,p_reference_date_3 => l_array_reference_date_3(Idx)
167371 ,p_reference_date_4 => l_array_reference_date_4(Idx)
167372 ,p_event_created_by => l_array_event_created_by(Idx)
167373 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
167374 --
167375 END IF;
167376
167377
167378
167379 --
167380 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
167381
167382 l_acct_reversal_source := SUBSTR(NULL, 1,30);
167383
167384 IF l_continue_with_lines THEN
167385 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
167386 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
167387
167388 xla_accounting_err_pkg.build_message
167389 (p_appli_s_name => 'XLA'
167390 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
167391 ,p_token_1 => 'LINE_NUMBER'
167392 ,p_value_1 => l_array_extract_line_num(Idx)
167393 ,p_token_2 => 'PRODUCT_NAME'
167394 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
167395 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
167396 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
167397 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
167398
167399 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
167400 --
167401 -- following sets the accounting attributes needed to reverse
167402 -- accounting for a distributeion
167403 --
167404
167405 --
167406 -- 5217187
167407 --
167408 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
167409 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
167410 g_array_event(l_event_id).array_value_num('header_index'));
167411 --
167412 --
167413
167414 -- No reversal code generated
167415
167416 xla_ae_lines_pkg.SetAcctReversalAttrs
167417 (p_event_id => l_event_id
167418 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
167419 ,p_calculate_acctd_flag => l_calculate_acctd_flag
167420 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
167421 END IF;
167422
167423 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
167424 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
167425
167426 --
167427 AcctLineType_9 (
167428 p_application_id => p_application_id
167429 ,p_event_id => l_event_id
167430 ,p_calculate_acctd_flag => l_calculate_acctd_flag
167431 ,p_calculate_g_l_flag => l_calculate_g_l_flag
167432 ,p_actual_flag => l_actual_flag
167433 ,p_balance_type_code => l_balance_type_code
167434 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
167435
167436 , p_source_4 => l_array_source_4(Idx)
167437 , p_source_5 => l_array_source_5(Idx)
167438 , p_source_11 => l_array_source_11(Idx)
167439 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
167440 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
167441 , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
167442 , p_source_18 => l_array_source_18(Idx)
167443 , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
167444 , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
167445 , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
167446 , p_source_22 => l_array_source_22(Idx)
167447 );
167448 If(l_balance_type_code = 'A') THEN
167449 l_actual_gain_loss_ref := l_gain_or_loss_ref;
167450 END IF;
167451
167452 --
167453
167454
167455 --
167456 AcctLineType_13 (
167457 p_application_id => p_application_id
167458 ,p_event_id => l_event_id
167459 ,p_calculate_acctd_flag => l_calculate_acctd_flag
167460 ,p_calculate_g_l_flag => l_calculate_g_l_flag
167461 ,p_actual_flag => l_actual_flag
167462 ,p_balance_type_code => l_balance_type_code
167463 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
167464
167465 , p_source_4 => l_array_source_4(Idx)
167466 , p_source_5 => l_array_source_5(Idx)
167467 , p_source_11 => l_array_source_11(Idx)
167468 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
167469 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
167470 , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
167471 , p_source_18 => l_array_source_18(Idx)
167472 , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
167473 , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
167474 , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
167475 , p_source_22 => l_array_source_22(Idx)
167476 );
167477 If(l_balance_type_code = 'A') THEN
167478 l_actual_gain_loss_ref := l_gain_or_loss_ref;
167479 END IF;
167480
167481 --
167482
167483
167484 --
167485 AcctLineType_50 (
167486 p_application_id => p_application_id
167487 ,p_event_id => l_event_id
167488 ,p_calculate_acctd_flag => l_calculate_acctd_flag
167489 ,p_calculate_g_l_flag => l_calculate_g_l_flag
167490 ,p_actual_flag => l_actual_flag
167491 ,p_balance_type_code => l_balance_type_code
167492 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
167493
167494 , p_source_4 => l_array_source_4(Idx)
167495 , p_source_5 => l_array_source_5(Idx)
167496 , p_source_11 => l_array_source_11(Idx)
167497 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
167498 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
167499 , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
167500 , p_source_18 => l_array_source_18(Idx)
167501 , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
167502 , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
167503 , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
167504 , p_source_22 => l_array_source_22(Idx)
167505 );
167506 If(l_balance_type_code = 'A') THEN
167507 l_actual_gain_loss_ref := l_gain_or_loss_ref;
167508 END IF;
167509
167510 --
167511
167512
167513 --
167514 AcctLineType_57 (
167515 p_application_id => p_application_id
167516 ,p_event_id => l_event_id
167517 ,p_calculate_acctd_flag => l_calculate_acctd_flag
167518 ,p_calculate_g_l_flag => l_calculate_g_l_flag
167519 ,p_actual_flag => l_actual_flag
167520 ,p_balance_type_code => l_balance_type_code
167521 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
167522
167523 , p_source_4 => l_array_source_4(Idx)
167524 , p_source_5 => l_array_source_5(Idx)
167525 , p_source_11 => l_array_source_11(Idx)
167526 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
167527 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
167528 , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
167529 , p_source_18 => l_array_source_18(Idx)
167530 , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
167531 , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
167532 , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
167533 , p_source_22 => l_array_source_22(Idx)
167534 );
167535 If(l_balance_type_code = 'A') THEN
167536 l_actual_gain_loss_ref := l_gain_or_loss_ref;
167537 END IF;
167538
167539 --
167540
167541
167542 --
167543 AcctLineType_156 (
167544 p_application_id => p_application_id
167545 ,p_event_id => l_event_id
167546 ,p_calculate_acctd_flag => l_calculate_acctd_flag
167547 ,p_calculate_g_l_flag => l_calculate_g_l_flag
167548 ,p_actual_flag => l_actual_flag
167549 ,p_balance_type_code => l_balance_type_code
167550 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
167551
167552 , p_source_4 => l_array_source_4(Idx)
167553 , p_source_5 => l_array_source_5(Idx)
167554 , p_source_11 => l_array_source_11(Idx)
167555 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
167556 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
167557 , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
167558 , p_source_18 => l_array_source_18(Idx)
167559 , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
167560 , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
167561 , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
167562 , p_source_22 => l_array_source_22(Idx)
167563 );
167564 If(l_balance_type_code = 'A') THEN
167565 l_actual_gain_loss_ref := l_gain_or_loss_ref;
167566 END IF;
167567
167568 --
167569
167570
167571 --
167572 AcctLineType_231 (
167573 p_application_id => p_application_id
167574 ,p_event_id => l_event_id
167575 ,p_calculate_acctd_flag => l_calculate_acctd_flag
167576 ,p_calculate_g_l_flag => l_calculate_g_l_flag
167577 ,p_actual_flag => l_actual_flag
167578 ,p_balance_type_code => l_balance_type_code
167579 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
167580
167581 , p_source_4 => l_array_source_4(Idx)
167582 , p_source_5 => l_array_source_5(Idx)
167583 , p_source_11 => l_array_source_11(Idx)
167584 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
167585 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
167586 , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
167587 , p_source_18 => l_array_source_18(Idx)
167588 , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
167589 , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
167590 , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
167591 , p_source_22 => l_array_source_22(Idx)
167592 );
167593 If(l_balance_type_code = 'A') THEN
167594 l_actual_gain_loss_ref := l_gain_or_loss_ref;
167595 END IF;
167596
167597 --
167598
167599 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
167600 -- or secondary ledger that has different currency with primary
167601 -- or alc that is calculated by sla
167602 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
167603 (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'))
167604
167605 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
167606 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
167607 AND (l_actual_flag = 'A')) THEN
167608 XLA_AE_LINES_PKG.CreateGainOrLossLines(
167609 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
167610 ,p_application_id => p_application_id
167611 ,p_amb_context_code => 'DEFAULT'
167612 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
167613 ,p_event_class_code => C_EVENT_CLASS_CODE
167614 ,p_event_type_code => C_EVENT_TYPE_CODE
167615
167616 ,p_gain_ccid => -1
167617 ,p_loss_ccid => -1
167618
167619 ,p_actual_flag => l_actual_flag
167620 ,p_enc_flag => null
167621 ,p_actual_g_l_ref => l_actual_gain_loss_ref
167622 ,p_enc_g_l_ref => null
167623 );
167624 END IF;
167625 END IF;
167626 END IF;
167627
167628 ELSE
167629 --
167630 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
167631 --
167632 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
167633 trace
167634 (p_msg => 'Trancaction revesal option is Y'
167635 ,p_level => C_LEVEL_STATEMENT
167636 ,p_module => l_log_module);
167637 END IF;
167638 END IF;
167639
167640 END LOOP;
167641 l_result := XLA_AE_LINES_PKG.InsertLines ;
167642 end loop;
167643 close line_cur;
167644
167645
167646 --
167647 -- insert headers into xla_ae_headers_gt table
167648 --
167649 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
167650
167651 -- insert into errors table here.
167652
167653 END LOOP;
167654
167655 --
167656 -- 4865292
167657 --
167658 -- Compare g_hdr_extract_count with event count in
167659 -- CreateHeadersAndLines.
167660 --
167661 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
167662
167663 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
167664 trace (p_msg => '# rows extracted from header extract objects '
167665 || ' (running total): '
167666 || g_hdr_extract_count
167667 ,p_level => C_LEVEL_STATEMENT
167668 ,p_module => l_log_module);
167669 END IF;
167670
167671 CLOSE header_cur;
167672 --
167673
167674 --
167675 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
167676 trace
167677 (p_msg => 'END of EventClass_271'
167678 ,p_level => C_LEVEL_PROCEDURE
167679 ,p_module => l_log_module);
167680 END IF;
167681 --
167682 RETURN l_result;
167683 EXCEPTION
167684 WHEN xla_exceptions_pkg.application_exception THEN
167685
167686 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
167687
167688
167689 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
167690
167691 RAISE;
167692
167693 WHEN NO_DATA_FOUND THEN
167694
167695 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
167696 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
167697
167698 FOR header_record IN header_cur
167699 LOOP
167700 l_array_header_events(header_record.event_id) := header_record.event_id;
167701 END LOOP;
167702
167703 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
167704 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
167705
167706 fnd_file.put_line(fnd_file.LOG, ' ');
167707 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
167708 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
167709 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
167710
167711 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
167712 LOOP
167713 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
167714 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
167715 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
167716 END IF;
167717 END LOOP;
167718
167719 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
167720 fnd_file.put_line(fnd_file.LOG, ' ');
167721
167722
167723 xla_exceptions_pkg.raise_message
167724 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_271');
167725
167726
167727 WHEN OTHERS THEN
167728 xla_exceptions_pkg.raise_message
167729 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_271');
167730 END EventClass_271;
167731 --
167732
167733 ---------------------------------------
167734 --
167735 -- PRIVATE PROCEDURE
167736 -- insert_sources_272
167737 --
167738 ----------------------------------------
167739 --
167740 PROCEDURE insert_sources_272(
167741 p_target_ledger_id IN NUMBER
167742 , p_language IN VARCHAR2
167743 , p_sla_ledger_id IN NUMBER
167744 , p_pad_start_date IN DATE
167745 , p_pad_end_date IN DATE
167746 )
167747 IS
167748
167749 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'RETR_PRICE_ADJ_DEL_ALL';
167750 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'RETR_PRICE_ADJ_DEL';
167751 p_apps_owner VARCHAR2(30);
167752 l_log_module VARCHAR2(240);
167753 BEGIN
167754 IF g_log_enabled THEN
167755 l_log_module := C_DEFAULT_MODULE||'.insert_sources_272';
167756 END IF;
167757 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
167758
167759 trace
167760 (p_msg => 'BEGIN of insert_sources_272'
167761 ,p_level => C_LEVEL_PROCEDURE
167762 ,p_module => l_log_module);
167763
167764 END IF;
167765
167766 -- select APPS owner
167767 SELECT oracle_username
167768 INTO p_apps_owner
167769 FROM fnd_oracle_userid
167770 WHERE read_only_flag = 'U'
167771 ;
167772
167773 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
167774 trace
167775 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
167776 ' - p_language = '||p_language||
167777 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
167778 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
167779 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
167780 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
167781 ,p_level => C_LEVEL_STATEMENT
167782 ,p_module => l_log_module);
167783 END IF;
167784
167785
167786 --
167787 INSERT INTO xla_diag_sources --hdr2
167788 (
167789 event_id
167790 , ledger_id
167791 , sla_ledger_id
167792 , description_language
167793 , object_name
167794 , object_type_code
167795 , line_number
167796 , source_application_id
167797 , source_type_code
167798 , source_code
167799 , source_value
167800 , source_meaning
167801 , created_by
167802 , creation_date
167803 , last_update_date
167804 , last_updated_by
167805 , last_update_login
167806 , program_update_date
167807 , program_application_id
167808 , program_id
167809 , request_id
167810 )
167811 SELECT
167812 event_id
167813 , p_target_ledger_id
167814 , p_sla_ledger_id
167815 , p_language
167816 , object_name
167817 , object_type_code
167818 , line_number
167819 , source_application_id
167820 , source_type_code
167821 , source_code
167822 , SUBSTR(source_value ,1,1996)
167823 , SUBSTR(source_meaning ,1,200)
167824 , xla_environment_pkg.g_Usr_Id
167825 , TRUNC(SYSDATE)
167826 , TRUNC(SYSDATE)
167827 , xla_environment_pkg.g_Usr_Id
167828 , xla_environment_pkg.g_Login_Id
167829 , TRUNC(SYSDATE)
167830 , xla_environment_pkg.g_Prog_Appl_Id
167831 , xla_environment_pkg.g_Prog_Id
167832 , xla_environment_pkg.g_Req_Id
167833 FROM (
167834 SELECT xet.event_id event_id
167835 , 0 line_number
167836 , CASE r
167837 WHEN 1 THEN 'CST_XLA_RCV_HEADERS_V'
167838 WHEN 2 THEN 'CST_XLA_RCV_HEADERS_V'
167839 WHEN 3 THEN 'CST_XLA_RCV_HEADERS_V'
167840 WHEN 4 THEN 'CST_XLA_RCV_HEADERS_V'
167841 WHEN 5 THEN 'CST_XLA_RCV_HEADERS_V'
167842
167843 ELSE null
167844 END object_name
167845 , CASE r
167846 WHEN 1 THEN 'HEADER'
167847 WHEN 2 THEN 'HEADER'
167848 WHEN 3 THEN 'HEADER'
167849 WHEN 4 THEN 'HEADER'
167850 WHEN 5 THEN 'HEADER'
167851
167852 ELSE null
167853 END object_type_code
167854 , CASE r
167855 WHEN 1 THEN '707'
167856 WHEN 2 THEN '707'
167857 WHEN 3 THEN '707'
167858 WHEN 4 THEN '707'
167859 WHEN 5 THEN '707'
167860
167861 ELSE null
167862 END source_application_id
167863 , 'S' source_type_code
167864 , CASE r
167865 WHEN 1 THEN 'DISTRIBUTION_TYPE'
167866 WHEN 2 THEN 'CURRENCY_CODE'
167867 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE'
167868 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE'
167869 WHEN 5 THEN 'TRANSFER_TO_GL_INDICATOR'
167870
167871 ELSE null
167872 END source_code
167873 , CASE r
167874 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
167875 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
167876 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
167877 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
167878 WHEN 5 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
167879
167880 ELSE null
167881 END source_value
167882 , CASE r
167883 WHEN 1 THEN fvl12.meaning
167884 WHEN 5 THEN fvl38.meaning
167885
167886 ELSE null
167887 END source_meaning
167888 FROM xla_events_gt xet
167889 , CST_XLA_RCV_HEADERS_V h1
167890 , fnd_lookup_values fvl12
167891 , fnd_lookup_values fvl38
167892 ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
167893 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
167894 AND xet.event_class_code = C_EVENT_CLASS_CODE
167895 AND h1.event_id = xet.event_id
167896 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
167897 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
167898 AND fvl12.view_application_id(+) = 700
167899 AND fvl12.language(+) = USERENV('LANG')
167900 AND fvl38.lookup_type(+) = 'YES_NO'
167901 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
167902 AND fvl38.view_application_id(+) = 0
167903 AND fvl38.language(+) = USERENV('LANG')
167904
167905 )
167906 ;
167907 --
167908 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
167909
167910 trace
167911 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
167912 ,p_level => C_LEVEL_STATEMENT
167913 ,p_module => l_log_module);
167914
167915 END IF;
167916 --
167917
167918
167919
167920 --
167921 INSERT INTO xla_diag_sources --line2
167922 (
167923 event_id
167924 , ledger_id
167925 , sla_ledger_id
167926 , description_language
167927 , object_name
167928 , object_type_code
167929 , line_number
167930 , source_application_id
167931 , source_type_code
167932 , source_code
167933 , source_value
167934 , source_meaning
167935 , created_by
167936 , creation_date
167937 , last_update_date
167938 , last_updated_by
167939 , last_update_login
167940 , program_update_date
167941 , program_application_id
167942 , program_id
167943 , request_id
167944 )
167945 SELECT event_id
167946 , p_target_ledger_id
167947 , p_sla_ledger_id
167948 , p_language
167949 , object_name
167950 , object_type_code
167951 , line_number
167952 , source_application_id
167953 , source_type_code
167954 , source_code
167955 , SUBSTR(source_value,1,1996)
167956 , SUBSTR(source_meaning ,1,200)
167957 , xla_environment_pkg.g_Usr_Id
167958 , TRUNC(SYSDATE)
167959 , TRUNC(SYSDATE)
167960 , xla_environment_pkg.g_Usr_Id
167961 , xla_environment_pkg.g_Login_Id
167962 , TRUNC(SYSDATE)
167963 , xla_environment_pkg.g_Prog_Appl_Id
167964 , xla_environment_pkg.g_Prog_Id
167965 , xla_environment_pkg.g_Req_Id
167966 FROM (
167967 SELECT xet.event_id event_id
167968 , l2.line_number line_number
167969 , CASE r
167970 WHEN 1 THEN 'CST_XLA_RCV_LINES_V'
167971 WHEN 2 THEN 'CST_XLA_RCV_LINES_V'
167972 WHEN 3 THEN 'CST_XLA_RCV_LINES_V'
167973 WHEN 4 THEN 'CST_XLA_RCV_LINES_V'
167974 WHEN 5 THEN 'CST_XLA_RCV_LINES_V'
167975
167976 ELSE null
167977 END object_name
167978 , CASE r
167979 WHEN 1 THEN 'LINE'
167980 WHEN 2 THEN 'LINE'
167981 WHEN 3 THEN 'LINE'
167982 WHEN 4 THEN 'LINE'
167983 WHEN 5 THEN 'LINE'
167984
167985 ELSE null
167986 END object_type_code
167987 , CASE r
167988 WHEN 1 THEN '707'
167989 WHEN 2 THEN '707'
167990 WHEN 3 THEN '707'
167991 WHEN 4 THEN '707'
167992 WHEN 5 THEN '707'
167993
167994 ELSE null
167995 END source_application_id
167996 , 'S' source_type_code
167997 , CASE r
167998 WHEN 1 THEN 'CODE_COMBINATION_ID'
167999 WHEN 2 THEN 'RCV_ACCOUNTING_LINE_TYPE'
168000 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER'
168001 WHEN 4 THEN 'ENTERED_AMOUNT'
168002 WHEN 5 THEN 'ACCOUNTED_AMOUNT'
168003
168004 ELSE null
168005 END source_code
168006 , CASE r
168007 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
168008 WHEN 2 THEN TO_CHAR(l2.RCV_ACCOUNTING_LINE_TYPE)
168009 WHEN 3 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
168010 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
168011 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
168012
168013 ELSE null
168014 END source_value
168015 , null source_meaning
168016 FROM xla_events_gt xet
168017 , CST_XLA_RCV_LINES_V l2
168018 , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
168019 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
168020 AND xet.event_class_code = C_EVENT_CLASS_CODE
168021 AND l2.event_id = xet.event_id
168022
168023 )
168024 ;
168025 --
168026 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
168027
168028 trace
168029 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
168030 ,p_level => C_LEVEL_STATEMENT
168031 ,p_module => l_log_module);
168032
168033 END IF;
168034
168035
168036 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
168037 trace
168038 (p_msg => 'END of insert_sources_272'
168039 ,p_level => C_LEVEL_PROCEDURE
168040 ,p_module => l_log_module);
168041 END IF;
168042 EXCEPTION
168043 WHEN xla_exceptions_pkg.application_exception THEN
168044 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
168045 trace
168046 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
168047 ,p_level => C_LEVEL_EXCEPTION
168048 ,p_module => l_log_module);
168049 END IF;
168050 RAISE;
168051 WHEN OTHERS THEN
168052 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
168053 trace
168054 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
168055 ,p_level => C_LEVEL_EXCEPTION
168056 ,p_module => l_log_module);
168057 END IF;
168058 xla_exceptions_pkg.raise_message
168059 (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_272');
168060 END insert_sources_272;
168061 --
168062
168063 ---------------------------------------
168064 --
168065 -- PRIVATE FUNCTION
168066 -- EventClass_272
168067 --
168068 ----------------------------------------
168069 --
168070 FUNCTION EventClass_272
168071 (p_application_id IN NUMBER
168072 ,p_base_ledger_id IN NUMBER
168073 ,p_target_ledger_id IN NUMBER
168074 ,p_language IN VARCHAR2
168075 ,p_currency_code IN VARCHAR2
168076 ,p_sla_ledger_id IN NUMBER
168077 ,p_pad_start_date IN DATE
168078 ,p_pad_end_date IN DATE
168079 ,p_primary_ledger_id IN NUMBER)
168080 RETURN BOOLEAN IS
168081 --
168082 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'RETR_PRICE_ADJ_DEL_ALL';
168083 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'RETR_PRICE_ADJ_DEL';
168084
168085 l_calculate_acctd_flag VARCHAR2(1) :='N';
168086 l_calculate_g_l_flag VARCHAR2(1) :='N';
168087 --
168088 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
168089 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
168090 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
168091 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
168092 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
168093 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
168094 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
168095 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
168096 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
168097 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
168098 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
168099 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
168100 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
168101 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
168102 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
168103 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
168104 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
168105 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
168106 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
168107 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
168108 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
168109 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
168110 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
168111 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
168112 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
168113 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
168114
168115 l_event_id NUMBER;
168116 l_previous_event_id NUMBER;
168117 l_first_event_id NUMBER;
168118 l_last_event_id NUMBER;
168119
168120 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
168121 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
168122 --
168123 --
168124 l_result BOOLEAN := TRUE;
168125 l_rows NUMBER := 1000;
168126 l_event_type_name VARCHAR2(80) := 'All';
168127 l_event_class_name VARCHAR2(80) := 'Retroactive Price Adjustment to Delivery';
168128 l_description VARCHAR2(4000);
168129 l_transaction_reversal NUMBER;
168130 l_ae_header_id NUMBER;
168131 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
168132 l_log_module VARCHAR2(240);
168133 --
168134 l_acct_reversal_source VARCHAR2(30);
168135 l_trx_reversal_source VARCHAR2(30);
168136
168137 l_continue_with_lines BOOLEAN := TRUE;
168138 --
168139 l_acc_rev_gl_date_source DATE; -- 4262811
168140 --
168141 type t_array_event_id is table of number index by binary_integer;
168142
168143 l_rec_array_event t_rec_array_event;
168144 l_null_rec_array_event t_rec_array_event;
168145 l_array_ae_header_id xla_number_array_type;
168146 l_actual_flag VARCHAR2(1) := NULL;
168147 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
168148 l_balance_type_code VARCHAR2(1) :=NULL;
168149 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
168150
168151 --
168152 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
168153 --
168154
168155 TYPE t_array_source_12 IS TABLE OF CST_XLA_RCV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
168156 TYPE t_array_source_15 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
168157 TYPE t_array_source_19 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
168158 TYPE t_array_source_20 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
168159 TYPE t_array_source_38 IS TABLE OF CST_XLA_RCV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
168160
168161 TYPE t_array_source_4 IS TABLE OF CST_XLA_RCV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
168162 TYPE t_array_source_5 IS TABLE OF CST_XLA_RCV_LINES_V.RCV_ACCOUNTING_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
168163 TYPE t_array_source_11 IS TABLE OF CST_XLA_RCV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
168164 TYPE t_array_source_18 IS TABLE OF CST_XLA_RCV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
168165 TYPE t_array_source_22 IS TABLE OF CST_XLA_RCV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
168166
168167 l_array_source_12 t_array_source_12;
168168 l_array_source_12_meaning t_array_lookup_meaning;
168169 l_array_source_15 t_array_source_15;
168170 l_array_source_19 t_array_source_19;
168171 l_array_source_20 t_array_source_20;
168172 l_array_source_38 t_array_source_38;
168173 l_array_source_38_meaning t_array_lookup_meaning;
168174
168175 l_array_source_4 t_array_source_4;
168176 l_array_source_5 t_array_source_5;
168177 l_array_source_11 t_array_source_11;
168178 l_array_source_18 t_array_source_18;
168179 l_array_source_22 t_array_source_22;
168180
168181 --
168182 CURSOR header_cur
168183 IS
168184 SELECT /*+ leading(xet) cardinality(xet,1) */
168185 -- Event Class Code: RETR_PRICE_ADJ_DEL
168186 xet.entity_id
168187 ,xet.legal_entity_id
168188 ,xet.entity_code
168189 ,xet.transaction_number
168190 ,xet.event_id
168191 ,xet.event_class_code
168192 ,xet.event_type_code
168193 ,xet.event_number
168194 ,xet.event_date
168195 ,xet.transaction_date
168196 ,xet.reference_num_1
168197 ,xet.reference_num_2
168198 ,xet.reference_num_3
168199 ,xet.reference_num_4
168200 ,xet.reference_char_1
168201 ,xet.reference_char_2
168202 ,xet.reference_char_3
168203 ,xet.reference_char_4
168204 ,xet.reference_date_1
168205 ,xet.reference_date_2
168206 ,xet.reference_date_3
168207 ,xet.reference_date_4
168208 ,xet.event_created_by
168209 ,xet.budgetary_control_flag
168210 , h1.DISTRIBUTION_TYPE source_12
168211 , fvl12.meaning source_12_meaning
168212 , h1.CURRENCY_CODE source_15
168213 , h1.CURRENCY_CONVERSION_DATE source_19
168214 , h1.CURRENCY_CONVERSION_RATE source_20
168215 , h1.TRANSFER_TO_GL_INDICATOR source_38
168216 , fvl38.meaning source_38_meaning
168217 FROM xla_events_gt xet
168218 , CST_XLA_RCV_HEADERS_V h1
168219 , fnd_lookup_values fvl12
168220 , fnd_lookup_values fvl38
168221 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
168222 and xet.event_class_code = C_EVENT_CLASS_CODE
168223 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
168224 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
168225 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
168226 AND fvl12.view_application_id(+) = 700
168227 AND fvl12.language(+) = USERENV('LANG')
168228 AND fvl38.lookup_type(+) = 'YES_NO'
168229 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
168230 AND fvl38.view_application_id(+) = 0
168231 AND fvl38.language(+) = USERENV('LANG')
168232
168233 ORDER BY event_id
168234 ;
168235
168236
168237 --
168238 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
168239 IS
168240 SELECT /*+ leading(xet) cardinality(xet,1) */
168241 -- Event Class Code: RETR_PRICE_ADJ_DEL
168242 xet.entity_id
168243 ,xet.legal_entity_id
168244 ,xet.entity_code
168245 ,xet.transaction_number
168246 ,xet.event_id
168247 ,xet.event_class_code
168248 ,xet.event_type_code
168249 ,xet.event_number
168250 ,xet.event_date
168251 ,xet.transaction_date
168252 ,xet.reference_num_1
168253 ,xet.reference_num_2
168254 ,xet.reference_num_3
168255 ,xet.reference_num_4
168256 ,xet.reference_char_1
168257 ,xet.reference_char_2
168258 ,xet.reference_char_3
168259 ,xet.reference_char_4
168260 ,xet.reference_date_1
168261 ,xet.reference_date_2
168262 ,xet.reference_date_3
168263 ,xet.reference_date_4
168264 ,xet.event_created_by
168265 ,xet.budgetary_control_flag
168266 , l2.LINE_NUMBER
168267 , l2.CODE_COMBINATION_ID source_4
168268 , l2.RCV_ACCOUNTING_LINE_TYPE source_5
168269 , l2.DISTRIBUTION_IDENTIFIER source_11
168270 , l2.ENTERED_AMOUNT source_18
168271 , l2.ACCOUNTED_AMOUNT source_22
168272 FROM xla_events_gt xet
168273 , CST_XLA_RCV_LINES_V l2
168274 WHERE xet.event_id between x_first_event_id and x_last_event_id
168275 and xet.event_date between p_pad_start_date and p_pad_end_date
168276 and xet.event_class_code = C_EVENT_CLASS_CODE
168277 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
168278 ;
168279
168280 --
168281 BEGIN
168282 IF g_log_enabled THEN
168283 l_log_module := C_DEFAULT_MODULE||'.EventClass_272';
168284 END IF;
168285 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
168286 trace
168287 (p_msg => 'BEGIN of EventClass_272'
168288 ,p_level => C_LEVEL_PROCEDURE
168289 ,p_module => l_log_module);
168290 END IF;
168291
168292 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
168293 trace
168294 (p_msg => 'p_application_id = '||p_application_id||
168295 ' - p_base_ledger_id = '||p_base_ledger_id||
168296 ' - p_target_ledger_id = '||p_target_ledger_id||
168297 ' - p_language = '||p_language||
168298 ' - p_currency_code = '||p_currency_code||
168299 ' - p_sla_ledger_id = '||p_sla_ledger_id
168300 ,p_level => C_LEVEL_STATEMENT
168301 ,p_module => l_log_module);
168302 END IF;
168303 --
168304 -- initialze arrays
168305 --
168306 g_array_event.DELETE;
168307 l_rec_array_event := l_null_rec_array_event;
168308 --
168309 --------------------------------------
168310 -- 4262811 Initialze MPA Line Number
168311 --------------------------------------
168312 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
168313
168314 --
168315
168316 --
168317 OPEN header_cur;
168318 --
168319 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
168320 trace
168321 (p_msg => 'SQL - FETCH header_cur'
168322 ,p_level => C_LEVEL_STATEMENT
168323 ,p_module => l_log_module);
168324 END IF;
168325 --
168326 LOOP
168327 FETCH header_cur BULK COLLECT INTO
168328 l_array_entity_id
168329 , l_array_legal_entity_id
168330 , l_array_entity_code
168331 , l_array_transaction_num
168332 , l_array_event_id
168333 , l_array_class_code
168334 , l_array_event_type
168335 , l_array_event_number
168336 , l_array_event_date
168337 , l_array_transaction_date
168338 , l_array_reference_num_1
168339 , l_array_reference_num_2
168340 , l_array_reference_num_3
168341 , l_array_reference_num_4
168342 , l_array_reference_char_1
168343 , l_array_reference_char_2
168344 , l_array_reference_char_3
168345 , l_array_reference_char_4
168346 , l_array_reference_date_1
168347 , l_array_reference_date_2
168348 , l_array_reference_date_3
168349 , l_array_reference_date_4
168350 , l_array_event_created_by
168351 , l_array_budgetary_control_flag
168352 , l_array_source_12
168353 , l_array_source_12_meaning
168354 , l_array_source_15
168355 , l_array_source_19
168356 , l_array_source_20
168357 , l_array_source_38
168358 , l_array_source_38_meaning
168359 LIMIT l_rows;
168360 --
168361 IF (C_LEVEL_EVENT >= g_log_level) THEN
168362 trace
168363 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
168364 ,p_level => C_LEVEL_EVENT
168365 ,p_module => l_log_module);
168366 END IF;
168367 --
168368 EXIT WHEN l_array_entity_id.COUNT = 0;
168369
168370 -- initialize arrays
168371 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
168372 XLA_AE_LINES_PKG.g_rec_lines := NULL;
168373
168374 --
168375 -- Bug 4458708
168376 --
168377 XLA_AE_LINES_PKG.g_LineNumber := 0;
168378
168379
168380 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
168381 g_last_hdr_idx := l_array_event_id.LAST;
168382 --
168383 -- loop for the headers. Each iteration is for each header extract row
168384 -- fetched in header cursor
168385 --
168386 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
168387
168388 --
168389 -- set event info as cache for other routines to refer event attributes
168390 --
168391 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
168392 (p_application_id => p_application_id
168393 ,p_primary_ledger_id => p_primary_ledger_id
168394 ,p_base_ledger_id => p_base_ledger_id
168395 ,p_target_ledger_id => p_target_ledger_id
168396 ,p_entity_id => l_array_entity_id(hdr_idx)
168397 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
168398 ,p_entity_code => l_array_entity_code(hdr_idx)
168399 ,p_transaction_num => l_array_transaction_num(hdr_idx)
168400 ,p_event_id => l_array_event_id(hdr_idx)
168401 ,p_event_class_code => l_array_class_code(hdr_idx)
168402 ,p_event_type_code => l_array_event_type(hdr_idx)
168403 ,p_event_number => l_array_event_number(hdr_idx)
168404 ,p_event_date => l_array_event_date(hdr_idx)
168405 ,p_transaction_date => l_array_transaction_date(hdr_idx)
168406 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
168407 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
168408 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
168409 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
168410 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
168411 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
168412 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
168413 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
168414 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
168415 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
168416 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
168417 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
168418 ,p_event_created_by => l_array_event_created_by(hdr_idx)
168419 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
168420
168421 --
168422 -- set the status of entry to C_VALID (0)
168423 --
168424 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
168425
168426 --
168427 -- initialize a row for ae header
168428 --
168429 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
168430
168431 l_event_id := l_array_event_id(hdr_idx);
168432
168433 --
168434 -- storing the hdr_idx for event. May be used by line cursor.
168435 --
168436 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
168437
168438 --
168439 -- store sources from header extract. This can be improved to
168440 -- store only those sources from header extract that may be used in lines
168441 --
168442
168443 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
168444 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
168445 g_array_event(l_event_id).array_value_char('source_15') := l_array_source_15(hdr_idx);
168446 g_array_event(l_event_id).array_value_date('source_19') := l_array_source_19(hdr_idx);
168447 g_array_event(l_event_id).array_value_num('source_20') := l_array_source_20(hdr_idx);
168448 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
168449 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
168450
168451 --
168452 -- initilaize the status of ae headers for diffrent balance types
168453 -- the status is initialised to C_NOT_CREATED (2)
168454 --
168455 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
168456 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
168457 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
168458
168459 --
168460 -- call api to validate and store accounting attributes for header
168461 --
168462
168463 ------------------------------------------------------------
168464 -- Accrual Reversal : to get date for Standard Source (NONE)
168465 ------------------------------------------------------------
168466 l_acc_rev_gl_date_source := NULL;
168467
168468 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
168469 l_rec_acct_attrs.array_date_value(1) :=
168470 xla_ae_sources_pkg.GetSystemSourceDate(
168471 p_source_code => 'XLA_REFERENCE_DATE_1'
168472 , p_source_type_code => 'Y'
168473 , p_source_application_id => 602
168474 );
168475 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_TRANSFER_FLAG';
168476 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
168477
168478
168479 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
168480
168481 XLA_AE_HEADER_PKG.SetJeCategoryName;
168482
168483 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
168484 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
168485 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
168486 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
168487 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
168488
168489
168490 -- No header level analytical criteria
168491
168492 --
168493 --accounting attribute enhancement, bug 3612931
168494 --
168495 l_trx_reversal_source := SUBSTR(NULL, 1,30);
168496
168497 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
168498 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
168499
168500 xla_accounting_err_pkg.build_message
168501 (p_appli_s_name => 'XLA'
168502 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
168503 ,p_token_1 => 'ACCT_ATTR_NAME'
168504 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
168505 ,p_token_2 => 'PRODUCT_NAME'
168506 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
168507 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
168508 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
168509 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
168510
168511 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
168512 --
168513 -- following sets the accounting attributes needed to reverse
168514 -- accounting for a distributeion
168515 --
168516 xla_ae_lines_pkg.SetTrxReversalAttrs
168517 (p_event_id => l_event_id
168518 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
168519 ,p_trx_reversal_source => l_trx_reversal_source);
168520
168521 END IF;
168522
168523
168524 ----------------------------------------------------------------
168525 -- 4262811 - update the header statuses to invalid in need be
168526 ----------------------------------------------------------------
168527 --
168528 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
168529
168530
168531 -----------------------------------------------
168532 -- No accrual reversal for the event class/type
168533 -----------------------------------------------
168534 ----------------------------------------------------------------
168535
168536 --
168537 -- this ends the header loop iteration for one bulk fetch
168538 --
168539 END LOOP;
168540
168541 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
168542 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
168543
168544 --
168545 -- insert dummy rows into lines gt table that were created due to
168546 -- transaction reversals
168547 --
168548 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
168549 l_result := XLA_AE_LINES_PKG.InsertLines;
168550 END IF;
168551
168552 --
168553 -- reset the temp_line_num for each set of events fetched from header
168554 -- cursor rather than doing it for each new event in line cursor
168555 -- Bug 3939231
168556 --
168557 xla_ae_lines_pkg.g_temp_line_num := 0;
168558
168559
168560
168561 --
168562 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
168563 --
168564 --
168565 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
168566
168567 trace
168568 (p_msg => 'SQL - FETCH line_cur'
168569 ,p_level => C_LEVEL_STATEMENT
168570 ,p_module => l_log_module);
168571
168572 END IF;
168573 --
168574 --
168575 LOOP
168576 --
168577 FETCH line_cur BULK COLLECT INTO
168578 l_array_entity_id
168579 , l_array_legal_entity_id
168580 , l_array_entity_code
168581 , l_array_transaction_num
168582 , l_array_event_id
168583 , l_array_class_code
168584 , l_array_event_type
168585 , l_array_event_number
168586 , l_array_event_date
168587 , l_array_transaction_date
168588 , l_array_reference_num_1
168589 , l_array_reference_num_2
168590 , l_array_reference_num_3
168591 , l_array_reference_num_4
168592 , l_array_reference_char_1
168593 , l_array_reference_char_2
168594 , l_array_reference_char_3
168595 , l_array_reference_char_4
168596 , l_array_reference_date_1
168597 , l_array_reference_date_2
168598 , l_array_reference_date_3
168599 , l_array_reference_date_4
168600 , l_array_event_created_by
168601 , l_array_budgetary_control_flag
168602 , l_array_extract_line_num
168603 , l_array_source_4
168604 , l_array_source_5
168605 , l_array_source_11
168606 , l_array_source_18
168607 , l_array_source_22
168608 LIMIT l_rows;
168609
168610 --
168611 IF (C_LEVEL_EVENT >= g_log_level) THEN
168612 trace
168613 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
168614 ,p_level => C_LEVEL_EVENT
168615 ,p_module => l_log_module);
168616 END IF;
168617 --
168618 EXIT WHEN l_array_entity_id.count = 0;
168619
168620 XLA_AE_LINES_PKG.g_rec_lines := null;
168621
168622 --
168623 -- Bug 4458708
168624 --
168625 XLA_AE_LINES_PKG.g_LineNumber := 0;
168626 --
168627 --
168628
168629 FOR Idx IN 1..l_array_event_id.count LOOP
168630 --
168631 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
168632 --
168633 l_event_id := l_array_event_id(idx); -- 5648433
168634
168635 --
168636 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
168637 --
168638
168639 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
168640 (g_array_event(l_event_id).array_value_num('header_index'))
168641 ,'N'
168642 ) <> 'Y'
168643 THEN
168644 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
168645 trace
168646 (p_msg => 'Trancaction revesal option is not Y '
168647 ,p_level => C_LEVEL_STATEMENT
168648 ,p_module => l_log_module);
168649 END IF;
168650
168651 --
168652 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
168653 --
168654 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
168655 --
168656 -- set event info as cache for other routines to refer event attributes
168657 --
168658
168659 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
168660 l_previous_event_id := l_event_id;
168661
168662 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
168663 (p_application_id => p_application_id
168664 ,p_primary_ledger_id => p_primary_ledger_id
168665 ,p_base_ledger_id => p_base_ledger_id
168666 ,p_target_ledger_id => p_target_ledger_id
168667 ,p_entity_id => l_array_entity_id(Idx)
168668 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
168669 ,p_entity_code => l_array_entity_code(Idx)
168670 ,p_transaction_num => l_array_transaction_num(Idx)
168671 ,p_event_id => l_array_event_id(Idx)
168672 ,p_event_class_code => l_array_class_code(Idx)
168673 ,p_event_type_code => l_array_event_type(Idx)
168674 ,p_event_number => l_array_event_number(Idx)
168675 ,p_event_date => l_array_event_date(Idx)
168676 ,p_transaction_date => l_array_transaction_date(Idx)
168677 ,p_reference_num_1 => l_array_reference_num_1(Idx)
168678 ,p_reference_num_2 => l_array_reference_num_2(Idx)
168679 ,p_reference_num_3 => l_array_reference_num_3(Idx)
168680 ,p_reference_num_4 => l_array_reference_num_4(Idx)
168681 ,p_reference_char_1 => l_array_reference_char_1(Idx)
168682 ,p_reference_char_2 => l_array_reference_char_2(Idx)
168683 ,p_reference_char_3 => l_array_reference_char_3(Idx)
168684 ,p_reference_char_4 => l_array_reference_char_4(Idx)
168685 ,p_reference_date_1 => l_array_reference_date_1(Idx)
168686 ,p_reference_date_2 => l_array_reference_date_2(Idx)
168687 ,p_reference_date_3 => l_array_reference_date_3(Idx)
168688 ,p_reference_date_4 => l_array_reference_date_4(Idx)
168689 ,p_event_created_by => l_array_event_created_by(Idx)
168690 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
168691 --
168692 END IF;
168693
168694
168695
168696 --
168697 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
168698
168699 l_acct_reversal_source := SUBSTR(NULL, 1,30);
168700
168701 IF l_continue_with_lines THEN
168702 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
168703 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
168704
168705 xla_accounting_err_pkg.build_message
168706 (p_appli_s_name => 'XLA'
168707 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
168708 ,p_token_1 => 'LINE_NUMBER'
168709 ,p_value_1 => l_array_extract_line_num(Idx)
168710 ,p_token_2 => 'PRODUCT_NAME'
168711 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
168712 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
168713 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
168714 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
168715
168716 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
168717 --
168718 -- following sets the accounting attributes needed to reverse
168719 -- accounting for a distributeion
168720 --
168721
168722 --
168723 -- 5217187
168724 --
168725 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
168726 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
168727 g_array_event(l_event_id).array_value_num('header_index'));
168728 --
168729 --
168730
168731 -- No reversal code generated
168732
168733 xla_ae_lines_pkg.SetAcctReversalAttrs
168734 (p_event_id => l_event_id
168735 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
168736 ,p_calculate_acctd_flag => l_calculate_acctd_flag
168737 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
168738 END IF;
168739
168740 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
168741 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
168742
168743 --
168744 AcctLineType_10 (
168745 p_application_id => p_application_id
168746 ,p_event_id => l_event_id
168747 ,p_calculate_acctd_flag => l_calculate_acctd_flag
168748 ,p_calculate_g_l_flag => l_calculate_g_l_flag
168749 ,p_actual_flag => l_actual_flag
168750 ,p_balance_type_code => l_balance_type_code
168751 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
168752
168753 , p_source_4 => l_array_source_4(Idx)
168754 , p_source_5 => l_array_source_5(Idx)
168755 , p_source_11 => l_array_source_11(Idx)
168756 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
168757 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
168758 , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
168759 , p_source_18 => l_array_source_18(Idx)
168760 , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
168761 , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
168762 , p_source_22 => l_array_source_22(Idx)
168763 );
168764 If(l_balance_type_code = 'A') THEN
168765 l_actual_gain_loss_ref := l_gain_or_loss_ref;
168766 END IF;
168767
168768 --
168769
168770
168771 --
168772 AcctLineType_232 (
168773 p_application_id => p_application_id
168774 ,p_event_id => l_event_id
168775 ,p_calculate_acctd_flag => l_calculate_acctd_flag
168776 ,p_calculate_g_l_flag => l_calculate_g_l_flag
168777 ,p_actual_flag => l_actual_flag
168778 ,p_balance_type_code => l_balance_type_code
168779 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
168780
168781 , p_source_4 => l_array_source_4(Idx)
168782 , p_source_5 => l_array_source_5(Idx)
168783 , p_source_11 => l_array_source_11(Idx)
168784 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
168785 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
168786 , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
168787 , p_source_18 => l_array_source_18(Idx)
168788 , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
168789 , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
168790 , p_source_22 => l_array_source_22(Idx)
168791 );
168792 If(l_balance_type_code = 'A') THEN
168793 l_actual_gain_loss_ref := l_gain_or_loss_ref;
168794 END IF;
168795
168796 --
168797
168798
168799 --
168800 AcctLineType_239 (
168801 p_application_id => p_application_id
168802 ,p_event_id => l_event_id
168803 ,p_calculate_acctd_flag => l_calculate_acctd_flag
168804 ,p_calculate_g_l_flag => l_calculate_g_l_flag
168805 ,p_actual_flag => l_actual_flag
168806 ,p_balance_type_code => l_balance_type_code
168807 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
168808
168809 , p_source_4 => l_array_source_4(Idx)
168810 , p_source_5 => l_array_source_5(Idx)
168811 , p_source_11 => l_array_source_11(Idx)
168812 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
168813 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
168814 , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
168815 , p_source_18 => l_array_source_18(Idx)
168816 , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
168817 , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
168818 , p_source_22 => l_array_source_22(Idx)
168819 );
168820 If(l_balance_type_code = 'A') THEN
168821 l_actual_gain_loss_ref := l_gain_or_loss_ref;
168822 END IF;
168823
168824 --
168825
168826 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
168827 -- or secondary ledger that has different currency with primary
168828 -- or alc that is calculated by sla
168829 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
168830 (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'))
168831
168832 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
168833 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
168834 AND (l_actual_flag = 'A')) THEN
168835 XLA_AE_LINES_PKG.CreateGainOrLossLines(
168836 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
168837 ,p_application_id => p_application_id
168838 ,p_amb_context_code => 'DEFAULT'
168839 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
168840 ,p_event_class_code => C_EVENT_CLASS_CODE
168841 ,p_event_type_code => C_EVENT_TYPE_CODE
168842
168843 ,p_gain_ccid => -1
168844 ,p_loss_ccid => -1
168845
168846 ,p_actual_flag => l_actual_flag
168847 ,p_enc_flag => null
168848 ,p_actual_g_l_ref => l_actual_gain_loss_ref
168849 ,p_enc_g_l_ref => null
168850 );
168851 END IF;
168852 END IF;
168853 END IF;
168854
168855 ELSE
168856 --
168857 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
168858 --
168859 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
168860 trace
168861 (p_msg => 'Trancaction revesal option is Y'
168862 ,p_level => C_LEVEL_STATEMENT
168863 ,p_module => l_log_module);
168864 END IF;
168865 END IF;
168866
168867 END LOOP;
168868 l_result := XLA_AE_LINES_PKG.InsertLines ;
168869 end loop;
168870 close line_cur;
168871
168872
168873 --
168874 -- insert headers into xla_ae_headers_gt table
168875 --
168876 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
168877
168878 -- insert into errors table here.
168879
168880 END LOOP;
168881
168882 --
168883 -- 4865292
168884 --
168885 -- Compare g_hdr_extract_count with event count in
168886 -- CreateHeadersAndLines.
168887 --
168888 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
168889
168890 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
168891 trace (p_msg => '# rows extracted from header extract objects '
168892 || ' (running total): '
168893 || g_hdr_extract_count
168894 ,p_level => C_LEVEL_STATEMENT
168895 ,p_module => l_log_module);
168896 END IF;
168897
168898 CLOSE header_cur;
168899 --
168900
168901 --
168902 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
168903 trace
168904 (p_msg => 'END of EventClass_272'
168905 ,p_level => C_LEVEL_PROCEDURE
168906 ,p_module => l_log_module);
168907 END IF;
168908 --
168909 RETURN l_result;
168910 EXCEPTION
168911 WHEN xla_exceptions_pkg.application_exception THEN
168912
168913 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
168914
168915
168916 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
168917
168918 RAISE;
168919
168920 WHEN NO_DATA_FOUND THEN
168921
168922 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
168923 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
168924
168925 FOR header_record IN header_cur
168926 LOOP
168927 l_array_header_events(header_record.event_id) := header_record.event_id;
168928 END LOOP;
168929
168930 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
168931 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
168932
168933 fnd_file.put_line(fnd_file.LOG, ' ');
168934 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
168935 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
168936 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
168937
168938 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
168939 LOOP
168940 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
168941 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
168942 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
168943 END IF;
168944 END LOOP;
168945
168946 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
168947 fnd_file.put_line(fnd_file.LOG, ' ');
168948
168949
168950 xla_exceptions_pkg.raise_message
168951 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_272');
168952
168953
168954 WHEN OTHERS THEN
168955 xla_exceptions_pkg.raise_message
168956 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_272');
168957 END EventClass_272;
168958 --
168959
168960 ---------------------------------------
168961 --
168962 -- PRIVATE PROCEDURE
168963 -- insert_sources_273
168964 --
168965 ----------------------------------------
168966 --
168967 PROCEDURE insert_sources_273(
168968 p_target_ledger_id IN NUMBER
168969 , p_language IN VARCHAR2
168970 , p_sla_ledger_id IN NUMBER
168971 , p_pad_start_date IN DATE
168972 , p_pad_end_date IN DATE
168973 )
168974 IS
168975
168976 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'RETR_PRICE_ADJ_RCV_ALL';
168977 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'RETR_PRICE_ADJ_RCV';
168978 p_apps_owner VARCHAR2(30);
168979 l_log_module VARCHAR2(240);
168980 BEGIN
168981 IF g_log_enabled THEN
168982 l_log_module := C_DEFAULT_MODULE||'.insert_sources_273';
168983 END IF;
168984 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
168985
168986 trace
168987 (p_msg => 'BEGIN of insert_sources_273'
168988 ,p_level => C_LEVEL_PROCEDURE
168989 ,p_module => l_log_module);
168990
168991 END IF;
168992
168993 -- select APPS owner
168994 SELECT oracle_username
168995 INTO p_apps_owner
168996 FROM fnd_oracle_userid
168997 WHERE read_only_flag = 'U'
168998 ;
168999
169000 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
169001 trace
169002 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
169003 ' - p_language = '||p_language||
169004 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
169005 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
169006 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
169007 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
169008 ,p_level => C_LEVEL_STATEMENT
169009 ,p_module => l_log_module);
169010 END IF;
169011
169012
169013 --
169014 INSERT INTO xla_diag_sources --hdr2
169015 (
169016 event_id
169017 , ledger_id
169018 , sla_ledger_id
169019 , description_language
169020 , object_name
169021 , object_type_code
169022 , line_number
169023 , source_application_id
169024 , source_type_code
169025 , source_code
169026 , source_value
169027 , source_meaning
169028 , created_by
169029 , creation_date
169030 , last_update_date
169031 , last_updated_by
169032 , last_update_login
169033 , program_update_date
169034 , program_application_id
169035 , program_id
169036 , request_id
169037 )
169038 SELECT
169039 event_id
169040 , p_target_ledger_id
169041 , p_sla_ledger_id
169042 , p_language
169043 , object_name
169044 , object_type_code
169045 , line_number
169046 , source_application_id
169047 , source_type_code
169048 , source_code
169049 , SUBSTR(source_value ,1,1996)
169050 , SUBSTR(source_meaning ,1,200)
169051 , xla_environment_pkg.g_Usr_Id
169052 , TRUNC(SYSDATE)
169053 , TRUNC(SYSDATE)
169054 , xla_environment_pkg.g_Usr_Id
169055 , xla_environment_pkg.g_Login_Id
169056 , TRUNC(SYSDATE)
169057 , xla_environment_pkg.g_Prog_Appl_Id
169058 , xla_environment_pkg.g_Prog_Id
169059 , xla_environment_pkg.g_Req_Id
169060 FROM (
169061 SELECT xet.event_id event_id
169062 , 0 line_number
169063 , CASE r
169064 WHEN 1 THEN 'CST_XLA_RCV_HEADERS_V'
169065 WHEN 2 THEN 'CST_XLA_RCV_HEADERS_V'
169066 WHEN 3 THEN 'CST_XLA_RCV_HEADERS_V'
169067 WHEN 4 THEN 'CST_XLA_RCV_HEADERS_V'
169068 WHEN 5 THEN 'CST_XLA_RCV_HEADERS_V'
169069 WHEN 6 THEN 'CST_XLA_RCV_HEADERS_V'
169070
169071 ELSE null
169072 END object_name
169073 , CASE r
169074 WHEN 1 THEN 'HEADER'
169075 WHEN 2 THEN 'HEADER'
169076 WHEN 3 THEN 'HEADER'
169077 WHEN 4 THEN 'HEADER'
169078 WHEN 5 THEN 'HEADER'
169079 WHEN 6 THEN 'HEADER'
169080
169081 ELSE null
169082 END object_type_code
169083 , CASE r
169084 WHEN 1 THEN '707'
169085 WHEN 2 THEN '707'
169086 WHEN 3 THEN '707'
169087 WHEN 4 THEN '707'
169088 WHEN 5 THEN '707'
169089 WHEN 6 THEN '707'
169090
169091 ELSE null
169092 END source_application_id
169093 , 'S' source_type_code
169094 , CASE r
169095 WHEN 1 THEN 'DISTRIBUTION_TYPE'
169096 WHEN 2 THEN 'CURRENCY_CODE'
169097 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE'
169098 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE'
169099 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE'
169100 WHEN 6 THEN 'TRANSFER_TO_GL_INDICATOR'
169101
169102 ELSE null
169103 END source_code
169104 , CASE r
169105 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
169106 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
169107 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
169108 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
169109 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
169110 WHEN 6 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
169111
169112 ELSE null
169113 END source_value
169114 , CASE r
169115 WHEN 1 THEN fvl12.meaning
169116 WHEN 6 THEN fvl38.meaning
169117
169118 ELSE null
169119 END source_meaning
169120 FROM xla_events_gt xet
169121 , CST_XLA_RCV_HEADERS_V h1
169122 , fnd_lookup_values fvl12
169123 , fnd_lookup_values fvl38
169124 ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
169125 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
169126 AND xet.event_class_code = C_EVENT_CLASS_CODE
169127 AND h1.event_id = xet.event_id
169128 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
169129 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
169130 AND fvl12.view_application_id(+) = 700
169131 AND fvl12.language(+) = USERENV('LANG')
169132 AND fvl38.lookup_type(+) = 'YES_NO'
169133 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
169134 AND fvl38.view_application_id(+) = 0
169135 AND fvl38.language(+) = USERENV('LANG')
169136
169137 )
169138 ;
169139 --
169140 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
169141
169142 trace
169143 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
169144 ,p_level => C_LEVEL_STATEMENT
169145 ,p_module => l_log_module);
169146
169147 END IF;
169148 --
169149
169150
169151
169152 --
169153 INSERT INTO xla_diag_sources --line2
169154 (
169155 event_id
169156 , ledger_id
169157 , sla_ledger_id
169158 , description_language
169159 , object_name
169160 , object_type_code
169161 , line_number
169162 , source_application_id
169163 , source_type_code
169164 , source_code
169165 , source_value
169166 , source_meaning
169167 , created_by
169168 , creation_date
169169 , last_update_date
169170 , last_updated_by
169171 , last_update_login
169172 , program_update_date
169173 , program_application_id
169174 , program_id
169175 , request_id
169176 )
169177 SELECT event_id
169178 , p_target_ledger_id
169179 , p_sla_ledger_id
169180 , p_language
169181 , object_name
169182 , object_type_code
169183 , line_number
169184 , source_application_id
169185 , source_type_code
169186 , source_code
169187 , SUBSTR(source_value,1,1996)
169188 , SUBSTR(source_meaning ,1,200)
169189 , xla_environment_pkg.g_Usr_Id
169190 , TRUNC(SYSDATE)
169191 , TRUNC(SYSDATE)
169192 , xla_environment_pkg.g_Usr_Id
169193 , xla_environment_pkg.g_Login_Id
169194 , TRUNC(SYSDATE)
169195 , xla_environment_pkg.g_Prog_Appl_Id
169196 , xla_environment_pkg.g_Prog_Id
169197 , xla_environment_pkg.g_Req_Id
169198 FROM (
169199 SELECT xet.event_id event_id
169200 , l2.line_number line_number
169201 , CASE r
169202 WHEN 1 THEN 'CST_XLA_RCV_LINES_V'
169203 WHEN 2 THEN 'CST_XLA_RCV_LINES_V'
169204 WHEN 3 THEN 'CST_XLA_RCV_LINES_V'
169205 WHEN 4 THEN 'CST_XLA_RCV_LINES_V'
169206 WHEN 5 THEN 'CST_XLA_RCV_LINES_V'
169207
169208 ELSE null
169209 END object_name
169210 , CASE r
169211 WHEN 1 THEN 'LINE'
169212 WHEN 2 THEN 'LINE'
169213 WHEN 3 THEN 'LINE'
169214 WHEN 4 THEN 'LINE'
169215 WHEN 5 THEN 'LINE'
169216
169217 ELSE null
169218 END object_type_code
169219 , CASE r
169220 WHEN 1 THEN '707'
169221 WHEN 2 THEN '707'
169222 WHEN 3 THEN '707'
169223 WHEN 4 THEN '707'
169224 WHEN 5 THEN '707'
169225
169226 ELSE null
169227 END source_application_id
169228 , 'S' source_type_code
169229 , CASE r
169230 WHEN 1 THEN 'CODE_COMBINATION_ID'
169231 WHEN 2 THEN 'RCV_ACCOUNTING_LINE_TYPE'
169232 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER'
169233 WHEN 4 THEN 'ENTERED_AMOUNT'
169234 WHEN 5 THEN 'ACCOUNTED_AMOUNT'
169235
169236 ELSE null
169237 END source_code
169238 , CASE r
169239 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
169240 WHEN 2 THEN TO_CHAR(l2.RCV_ACCOUNTING_LINE_TYPE)
169241 WHEN 3 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
169242 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
169243 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
169244
169245 ELSE null
169246 END source_value
169247 , null source_meaning
169248 FROM xla_events_gt xet
169249 , CST_XLA_RCV_LINES_V l2
169250 , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
169251 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
169252 AND xet.event_class_code = C_EVENT_CLASS_CODE
169253 AND l2.event_id = xet.event_id
169254
169255 )
169256 ;
169257 --
169258 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
169259
169260 trace
169261 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
169262 ,p_level => C_LEVEL_STATEMENT
169263 ,p_module => l_log_module);
169264
169265 END IF;
169266
169267
169268 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
169269 trace
169270 (p_msg => 'END of insert_sources_273'
169271 ,p_level => C_LEVEL_PROCEDURE
169272 ,p_module => l_log_module);
169273 END IF;
169274 EXCEPTION
169275 WHEN xla_exceptions_pkg.application_exception THEN
169276 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
169277 trace
169278 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
169279 ,p_level => C_LEVEL_EXCEPTION
169280 ,p_module => l_log_module);
169281 END IF;
169282 RAISE;
169283 WHEN OTHERS THEN
169284 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
169285 trace
169286 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
169287 ,p_level => C_LEVEL_EXCEPTION
169288 ,p_module => l_log_module);
169289 END IF;
169290 xla_exceptions_pkg.raise_message
169291 (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_273');
169292 END insert_sources_273;
169293 --
169294
169295 ---------------------------------------
169296 --
169297 -- PRIVATE FUNCTION
169298 -- EventClass_273
169299 --
169300 ----------------------------------------
169301 --
169302 FUNCTION EventClass_273
169303 (p_application_id IN NUMBER
169304 ,p_base_ledger_id IN NUMBER
169305 ,p_target_ledger_id IN NUMBER
169306 ,p_language IN VARCHAR2
169307 ,p_currency_code IN VARCHAR2
169308 ,p_sla_ledger_id IN NUMBER
169309 ,p_pad_start_date IN DATE
169310 ,p_pad_end_date IN DATE
169311 ,p_primary_ledger_id IN NUMBER)
169312 RETURN BOOLEAN IS
169313 --
169314 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'RETR_PRICE_ADJ_RCV_ALL';
169315 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'RETR_PRICE_ADJ_RCV';
169316
169317 l_calculate_acctd_flag VARCHAR2(1) :='N';
169318 l_calculate_g_l_flag VARCHAR2(1) :='N';
169319 --
169320 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
169321 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
169322 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
169323 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
169324 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
169325 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
169326 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
169327 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
169328 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
169329 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
169330 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
169331 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
169332 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
169333 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
169334 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
169335 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
169336 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
169337 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
169338 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
169339 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
169340 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
169341 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
169342 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
169343 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
169344 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
169345 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
169346
169347 l_event_id NUMBER;
169348 l_previous_event_id NUMBER;
169349 l_first_event_id NUMBER;
169350 l_last_event_id NUMBER;
169351
169352 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
169353 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
169354 --
169355 --
169356 l_result BOOLEAN := TRUE;
169357 l_rows NUMBER := 1000;
169358 l_event_type_name VARCHAR2(80) := 'All';
169359 l_event_class_name VARCHAR2(80) := 'Retroactive Price Adjustment to Receipt';
169360 l_description VARCHAR2(4000);
169361 l_transaction_reversal NUMBER;
169362 l_ae_header_id NUMBER;
169363 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
169364 l_log_module VARCHAR2(240);
169365 --
169366 l_acct_reversal_source VARCHAR2(30);
169367 l_trx_reversal_source VARCHAR2(30);
169368
169369 l_continue_with_lines BOOLEAN := TRUE;
169370 --
169371 l_acc_rev_gl_date_source DATE; -- 4262811
169372 --
169373 type t_array_event_id is table of number index by binary_integer;
169374
169375 l_rec_array_event t_rec_array_event;
169376 l_null_rec_array_event t_rec_array_event;
169377 l_array_ae_header_id xla_number_array_type;
169378 l_actual_flag VARCHAR2(1) := NULL;
169379 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
169380 l_balance_type_code VARCHAR2(1) :=NULL;
169381 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
169382
169383 --
169384 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
169385 --
169386
169387 TYPE t_array_source_12 IS TABLE OF CST_XLA_RCV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
169388 TYPE t_array_source_15 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
169389 TYPE t_array_source_19 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
169390 TYPE t_array_source_20 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
169391 TYPE t_array_source_21 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
169392 TYPE t_array_source_38 IS TABLE OF CST_XLA_RCV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
169393
169394 TYPE t_array_source_4 IS TABLE OF CST_XLA_RCV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
169395 TYPE t_array_source_5 IS TABLE OF CST_XLA_RCV_LINES_V.RCV_ACCOUNTING_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
169396 TYPE t_array_source_11 IS TABLE OF CST_XLA_RCV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
169397 TYPE t_array_source_18 IS TABLE OF CST_XLA_RCV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
169398 TYPE t_array_source_22 IS TABLE OF CST_XLA_RCV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
169399
169400 l_array_source_12 t_array_source_12;
169401 l_array_source_12_meaning t_array_lookup_meaning;
169402 l_array_source_15 t_array_source_15;
169403 l_array_source_19 t_array_source_19;
169404 l_array_source_20 t_array_source_20;
169405 l_array_source_21 t_array_source_21;
169406 l_array_source_38 t_array_source_38;
169407 l_array_source_38_meaning t_array_lookup_meaning;
169408
169409 l_array_source_4 t_array_source_4;
169410 l_array_source_5 t_array_source_5;
169411 l_array_source_11 t_array_source_11;
169412 l_array_source_18 t_array_source_18;
169413 l_array_source_22 t_array_source_22;
169414
169415 --
169416 CURSOR header_cur
169417 IS
169418 SELECT /*+ leading(xet) cardinality(xet,1) */
169419 -- Event Class Code: RETR_PRICE_ADJ_RCV
169420 xet.entity_id
169421 ,xet.legal_entity_id
169422 ,xet.entity_code
169423 ,xet.transaction_number
169424 ,xet.event_id
169425 ,xet.event_class_code
169426 ,xet.event_type_code
169427 ,xet.event_number
169428 ,xet.event_date
169429 ,xet.transaction_date
169430 ,xet.reference_num_1
169431 ,xet.reference_num_2
169432 ,xet.reference_num_3
169433 ,xet.reference_num_4
169434 ,xet.reference_char_1
169435 ,xet.reference_char_2
169436 ,xet.reference_char_3
169437 ,xet.reference_char_4
169438 ,xet.reference_date_1
169439 ,xet.reference_date_2
169440 ,xet.reference_date_3
169441 ,xet.reference_date_4
169442 ,xet.event_created_by
169443 ,xet.budgetary_control_flag
169444 , h1.DISTRIBUTION_TYPE source_12
169445 , fvl12.meaning source_12_meaning
169446 , h1.CURRENCY_CODE source_15
169447 , h1.CURRENCY_CONVERSION_DATE source_19
169448 , h1.CURRENCY_CONVERSION_RATE source_20
169449 , h1.CURRENCY_CONVERSION_TYPE source_21
169450 , h1.TRANSFER_TO_GL_INDICATOR source_38
169451 , fvl38.meaning source_38_meaning
169452 FROM xla_events_gt xet
169453 , CST_XLA_RCV_HEADERS_V h1
169454 , fnd_lookup_values fvl12
169455 , fnd_lookup_values fvl38
169456 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
169457 and xet.event_class_code = C_EVENT_CLASS_CODE
169458 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
169459 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
169460 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
169461 AND fvl12.view_application_id(+) = 700
169462 AND fvl12.language(+) = USERENV('LANG')
169463 AND fvl38.lookup_type(+) = 'YES_NO'
169464 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
169465 AND fvl38.view_application_id(+) = 0
169466 AND fvl38.language(+) = USERENV('LANG')
169467
169468 ORDER BY event_id
169469 ;
169470
169471
169472 --
169473 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
169474 IS
169475 SELECT /*+ leading(xet) cardinality(xet,1) */
169476 -- Event Class Code: RETR_PRICE_ADJ_RCV
169477 xet.entity_id
169478 ,xet.legal_entity_id
169479 ,xet.entity_code
169480 ,xet.transaction_number
169481 ,xet.event_id
169482 ,xet.event_class_code
169483 ,xet.event_type_code
169484 ,xet.event_number
169485 ,xet.event_date
169486 ,xet.transaction_date
169487 ,xet.reference_num_1
169488 ,xet.reference_num_2
169489 ,xet.reference_num_3
169490 ,xet.reference_num_4
169491 ,xet.reference_char_1
169492 ,xet.reference_char_2
169493 ,xet.reference_char_3
169494 ,xet.reference_char_4
169495 ,xet.reference_date_1
169496 ,xet.reference_date_2
169497 ,xet.reference_date_3
169498 ,xet.reference_date_4
169499 ,xet.event_created_by
169500 ,xet.budgetary_control_flag
169501 , l2.LINE_NUMBER
169502 , l2.CODE_COMBINATION_ID source_4
169503 , l2.RCV_ACCOUNTING_LINE_TYPE source_5
169504 , l2.DISTRIBUTION_IDENTIFIER source_11
169505 , l2.ENTERED_AMOUNT source_18
169506 , l2.ACCOUNTED_AMOUNT source_22
169507 FROM xla_events_gt xet
169508 , CST_XLA_RCV_LINES_V l2
169509 WHERE xet.event_id between x_first_event_id and x_last_event_id
169510 and xet.event_date between p_pad_start_date and p_pad_end_date
169511 and xet.event_class_code = C_EVENT_CLASS_CODE
169512 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
169513 ;
169514
169515 --
169516 BEGIN
169517 IF g_log_enabled THEN
169518 l_log_module := C_DEFAULT_MODULE||'.EventClass_273';
169519 END IF;
169520 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
169521 trace
169522 (p_msg => 'BEGIN of EventClass_273'
169523 ,p_level => C_LEVEL_PROCEDURE
169524 ,p_module => l_log_module);
169525 END IF;
169526
169527 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
169528 trace
169529 (p_msg => 'p_application_id = '||p_application_id||
169530 ' - p_base_ledger_id = '||p_base_ledger_id||
169531 ' - p_target_ledger_id = '||p_target_ledger_id||
169532 ' - p_language = '||p_language||
169533 ' - p_currency_code = '||p_currency_code||
169534 ' - p_sla_ledger_id = '||p_sla_ledger_id
169535 ,p_level => C_LEVEL_STATEMENT
169536 ,p_module => l_log_module);
169537 END IF;
169538 --
169539 -- initialze arrays
169540 --
169541 g_array_event.DELETE;
169542 l_rec_array_event := l_null_rec_array_event;
169543 --
169544 --------------------------------------
169545 -- 4262811 Initialze MPA Line Number
169546 --------------------------------------
169547 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
169548
169549 --
169550
169551 --
169552 OPEN header_cur;
169553 --
169554 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
169555 trace
169556 (p_msg => 'SQL - FETCH header_cur'
169557 ,p_level => C_LEVEL_STATEMENT
169558 ,p_module => l_log_module);
169559 END IF;
169560 --
169561 LOOP
169562 FETCH header_cur BULK COLLECT INTO
169563 l_array_entity_id
169564 , l_array_legal_entity_id
169565 , l_array_entity_code
169566 , l_array_transaction_num
169567 , l_array_event_id
169568 , l_array_class_code
169569 , l_array_event_type
169570 , l_array_event_number
169571 , l_array_event_date
169572 , l_array_transaction_date
169573 , l_array_reference_num_1
169574 , l_array_reference_num_2
169575 , l_array_reference_num_3
169576 , l_array_reference_num_4
169577 , l_array_reference_char_1
169578 , l_array_reference_char_2
169579 , l_array_reference_char_3
169580 , l_array_reference_char_4
169581 , l_array_reference_date_1
169582 , l_array_reference_date_2
169583 , l_array_reference_date_3
169584 , l_array_reference_date_4
169585 , l_array_event_created_by
169586 , l_array_budgetary_control_flag
169587 , l_array_source_12
169588 , l_array_source_12_meaning
169589 , l_array_source_15
169590 , l_array_source_19
169591 , l_array_source_20
169592 , l_array_source_21
169593 , l_array_source_38
169594 , l_array_source_38_meaning
169595 LIMIT l_rows;
169596 --
169597 IF (C_LEVEL_EVENT >= g_log_level) THEN
169598 trace
169599 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
169600 ,p_level => C_LEVEL_EVENT
169601 ,p_module => l_log_module);
169602 END IF;
169603 --
169604 EXIT WHEN l_array_entity_id.COUNT = 0;
169605
169606 -- initialize arrays
169607 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
169608 XLA_AE_LINES_PKG.g_rec_lines := NULL;
169609
169610 --
169611 -- Bug 4458708
169612 --
169613 XLA_AE_LINES_PKG.g_LineNumber := 0;
169614
169615
169616 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
169617 g_last_hdr_idx := l_array_event_id.LAST;
169618 --
169619 -- loop for the headers. Each iteration is for each header extract row
169620 -- fetched in header cursor
169621 --
169622 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
169623
169624 --
169625 -- set event info as cache for other routines to refer event attributes
169626 --
169627 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
169628 (p_application_id => p_application_id
169629 ,p_primary_ledger_id => p_primary_ledger_id
169630 ,p_base_ledger_id => p_base_ledger_id
169631 ,p_target_ledger_id => p_target_ledger_id
169632 ,p_entity_id => l_array_entity_id(hdr_idx)
169633 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
169634 ,p_entity_code => l_array_entity_code(hdr_idx)
169635 ,p_transaction_num => l_array_transaction_num(hdr_idx)
169636 ,p_event_id => l_array_event_id(hdr_idx)
169637 ,p_event_class_code => l_array_class_code(hdr_idx)
169638 ,p_event_type_code => l_array_event_type(hdr_idx)
169639 ,p_event_number => l_array_event_number(hdr_idx)
169640 ,p_event_date => l_array_event_date(hdr_idx)
169641 ,p_transaction_date => l_array_transaction_date(hdr_idx)
169642 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
169643 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
169644 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
169645 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
169646 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
169647 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
169648 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
169649 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
169650 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
169651 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
169652 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
169653 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
169654 ,p_event_created_by => l_array_event_created_by(hdr_idx)
169655 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
169656
169657 --
169658 -- set the status of entry to C_VALID (0)
169659 --
169660 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
169661
169662 --
169663 -- initialize a row for ae header
169664 --
169665 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
169666
169667 l_event_id := l_array_event_id(hdr_idx);
169668
169669 --
169670 -- storing the hdr_idx for event. May be used by line cursor.
169671 --
169672 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
169673
169674 --
169675 -- store sources from header extract. This can be improved to
169676 -- store only those sources from header extract that may be used in lines
169677 --
169678
169679 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
169680 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
169681 g_array_event(l_event_id).array_value_char('source_15') := l_array_source_15(hdr_idx);
169682 g_array_event(l_event_id).array_value_date('source_19') := l_array_source_19(hdr_idx);
169683 g_array_event(l_event_id).array_value_num('source_20') := l_array_source_20(hdr_idx);
169684 g_array_event(l_event_id).array_value_char('source_21') := l_array_source_21(hdr_idx);
169685 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
169686 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
169687
169688 --
169689 -- initilaize the status of ae headers for diffrent balance types
169690 -- the status is initialised to C_NOT_CREATED (2)
169691 --
169692 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
169693 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
169694 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
169695
169696 --
169697 -- call api to validate and store accounting attributes for header
169698 --
169699
169700 ------------------------------------------------------------
169701 -- Accrual Reversal : to get date for Standard Source (NONE)
169702 ------------------------------------------------------------
169703 l_acc_rev_gl_date_source := NULL;
169704
169705 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
169706 l_rec_acct_attrs.array_date_value(1) :=
169707 xla_ae_sources_pkg.GetSystemSourceDate(
169708 p_source_code => 'XLA_REFERENCE_DATE_1'
169709 , p_source_type_code => 'Y'
169710 , p_source_application_id => 602
169711 );
169712 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_TRANSFER_FLAG';
169713 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
169714
169715
169716 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
169717
169718 XLA_AE_HEADER_PKG.SetJeCategoryName;
169719
169720 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
169721 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
169722 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
169723 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
169724 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
169725
169726
169727 -- No header level analytical criteria
169728
169729 --
169730 --accounting attribute enhancement, bug 3612931
169731 --
169732 l_trx_reversal_source := SUBSTR(NULL, 1,30);
169733
169734 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
169735 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
169736
169737 xla_accounting_err_pkg.build_message
169738 (p_appli_s_name => 'XLA'
169739 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
169740 ,p_token_1 => 'ACCT_ATTR_NAME'
169741 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
169742 ,p_token_2 => 'PRODUCT_NAME'
169743 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
169744 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
169745 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
169746 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
169747
169748 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
169749 --
169750 -- following sets the accounting attributes needed to reverse
169751 -- accounting for a distributeion
169752 --
169753 xla_ae_lines_pkg.SetTrxReversalAttrs
169754 (p_event_id => l_event_id
169755 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
169756 ,p_trx_reversal_source => l_trx_reversal_source);
169757
169758 END IF;
169759
169760
169761 ----------------------------------------------------------------
169762 -- 4262811 - update the header statuses to invalid in need be
169763 ----------------------------------------------------------------
169764 --
169765 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
169766
169767
169768 -----------------------------------------------
169769 -- No accrual reversal for the event class/type
169770 -----------------------------------------------
169771 ----------------------------------------------------------------
169772
169773 --
169774 -- this ends the header loop iteration for one bulk fetch
169775 --
169776 END LOOP;
169777
169778 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
169779 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
169780
169781 --
169782 -- insert dummy rows into lines gt table that were created due to
169783 -- transaction reversals
169784 --
169785 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
169786 l_result := XLA_AE_LINES_PKG.InsertLines;
169787 END IF;
169788
169789 --
169790 -- reset the temp_line_num for each set of events fetched from header
169791 -- cursor rather than doing it for each new event in line cursor
169792 -- Bug 3939231
169793 --
169794 xla_ae_lines_pkg.g_temp_line_num := 0;
169795
169796
169797
169798 --
169799 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
169800 --
169801 --
169802 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
169803
169804 trace
169805 (p_msg => 'SQL - FETCH line_cur'
169806 ,p_level => C_LEVEL_STATEMENT
169807 ,p_module => l_log_module);
169808
169809 END IF;
169810 --
169811 --
169812 LOOP
169813 --
169814 FETCH line_cur BULK COLLECT INTO
169815 l_array_entity_id
169816 , l_array_legal_entity_id
169817 , l_array_entity_code
169818 , l_array_transaction_num
169819 , l_array_event_id
169820 , l_array_class_code
169821 , l_array_event_type
169822 , l_array_event_number
169823 , l_array_event_date
169824 , l_array_transaction_date
169825 , l_array_reference_num_1
169826 , l_array_reference_num_2
169827 , l_array_reference_num_3
169828 , l_array_reference_num_4
169829 , l_array_reference_char_1
169830 , l_array_reference_char_2
169831 , l_array_reference_char_3
169832 , l_array_reference_char_4
169833 , l_array_reference_date_1
169834 , l_array_reference_date_2
169835 , l_array_reference_date_3
169836 , l_array_reference_date_4
169837 , l_array_event_created_by
169838 , l_array_budgetary_control_flag
169839 , l_array_extract_line_num
169840 , l_array_source_4
169841 , l_array_source_5
169842 , l_array_source_11
169843 , l_array_source_18
169844 , l_array_source_22
169845 LIMIT l_rows;
169846
169847 --
169848 IF (C_LEVEL_EVENT >= g_log_level) THEN
169849 trace
169850 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
169851 ,p_level => C_LEVEL_EVENT
169852 ,p_module => l_log_module);
169853 END IF;
169854 --
169855 EXIT WHEN l_array_entity_id.count = 0;
169856
169857 XLA_AE_LINES_PKG.g_rec_lines := null;
169858
169859 --
169860 -- Bug 4458708
169861 --
169862 XLA_AE_LINES_PKG.g_LineNumber := 0;
169863 --
169864 --
169865
169866 FOR Idx IN 1..l_array_event_id.count LOOP
169867 --
169868 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
169869 --
169870 l_event_id := l_array_event_id(idx); -- 5648433
169871
169872 --
169873 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
169874 --
169875
169876 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
169877 (g_array_event(l_event_id).array_value_num('header_index'))
169878 ,'N'
169879 ) <> 'Y'
169880 THEN
169881 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
169882 trace
169883 (p_msg => 'Trancaction revesal option is not Y '
169884 ,p_level => C_LEVEL_STATEMENT
169885 ,p_module => l_log_module);
169886 END IF;
169887
169888 --
169889 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
169890 --
169891 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
169892 --
169893 -- set event info as cache for other routines to refer event attributes
169894 --
169895
169896 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
169897 l_previous_event_id := l_event_id;
169898
169899 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
169900 (p_application_id => p_application_id
169901 ,p_primary_ledger_id => p_primary_ledger_id
169902 ,p_base_ledger_id => p_base_ledger_id
169903 ,p_target_ledger_id => p_target_ledger_id
169904 ,p_entity_id => l_array_entity_id(Idx)
169905 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
169906 ,p_entity_code => l_array_entity_code(Idx)
169907 ,p_transaction_num => l_array_transaction_num(Idx)
169908 ,p_event_id => l_array_event_id(Idx)
169909 ,p_event_class_code => l_array_class_code(Idx)
169910 ,p_event_type_code => l_array_event_type(Idx)
169911 ,p_event_number => l_array_event_number(Idx)
169912 ,p_event_date => l_array_event_date(Idx)
169913 ,p_transaction_date => l_array_transaction_date(Idx)
169914 ,p_reference_num_1 => l_array_reference_num_1(Idx)
169915 ,p_reference_num_2 => l_array_reference_num_2(Idx)
169916 ,p_reference_num_3 => l_array_reference_num_3(Idx)
169917 ,p_reference_num_4 => l_array_reference_num_4(Idx)
169918 ,p_reference_char_1 => l_array_reference_char_1(Idx)
169919 ,p_reference_char_2 => l_array_reference_char_2(Idx)
169920 ,p_reference_char_3 => l_array_reference_char_3(Idx)
169921 ,p_reference_char_4 => l_array_reference_char_4(Idx)
169922 ,p_reference_date_1 => l_array_reference_date_1(Idx)
169923 ,p_reference_date_2 => l_array_reference_date_2(Idx)
169924 ,p_reference_date_3 => l_array_reference_date_3(Idx)
169925 ,p_reference_date_4 => l_array_reference_date_4(Idx)
169926 ,p_event_created_by => l_array_event_created_by(Idx)
169927 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
169928 --
169929 END IF;
169930
169931
169932
169933 --
169934 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
169935
169936 l_acct_reversal_source := SUBSTR(NULL, 1,30);
169937
169938 IF l_continue_with_lines THEN
169939 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
169940 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
169941
169942 xla_accounting_err_pkg.build_message
169943 (p_appli_s_name => 'XLA'
169944 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
169945 ,p_token_1 => 'LINE_NUMBER'
169946 ,p_value_1 => l_array_extract_line_num(Idx)
169947 ,p_token_2 => 'PRODUCT_NAME'
169948 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
169949 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
169950 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
169951 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
169952
169953 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
169954 --
169955 -- following sets the accounting attributes needed to reverse
169956 -- accounting for a distributeion
169957 --
169958
169959 --
169960 -- 5217187
169961 --
169962 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
169963 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
169964 g_array_event(l_event_id).array_value_num('header_index'));
169965 --
169966 --
169967
169968 -- No reversal code generated
169969
169970 xla_ae_lines_pkg.SetAcctReversalAttrs
169971 (p_event_id => l_event_id
169972 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
169973 ,p_calculate_acctd_flag => l_calculate_acctd_flag
169974 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
169975 END IF;
169976
169977 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
169978 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
169979
169980 --
169981 AcctLineType_8 (
169982 p_application_id => p_application_id
169983 ,p_event_id => l_event_id
169984 ,p_calculate_acctd_flag => l_calculate_acctd_flag
169985 ,p_calculate_g_l_flag => l_calculate_g_l_flag
169986 ,p_actual_flag => l_actual_flag
169987 ,p_balance_type_code => l_balance_type_code
169988 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
169989
169990 , p_source_4 => l_array_source_4(Idx)
169991 , p_source_5 => l_array_source_5(Idx)
169992 , p_source_11 => l_array_source_11(Idx)
169993 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
169994 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
169995 , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
169996 , p_source_18 => l_array_source_18(Idx)
169997 , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
169998 , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
169999 , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
170000 , p_source_22 => l_array_source_22(Idx)
170001 );
170002 If(l_balance_type_code = 'A') THEN
170003 l_actual_gain_loss_ref := l_gain_or_loss_ref;
170004 END IF;
170005
170006 --
170007
170008
170009 --
170010 AcctLineType_56 (
170011 p_application_id => p_application_id
170012 ,p_event_id => l_event_id
170013 ,p_calculate_acctd_flag => l_calculate_acctd_flag
170014 ,p_calculate_g_l_flag => l_calculate_g_l_flag
170015 ,p_actual_flag => l_actual_flag
170016 ,p_balance_type_code => l_balance_type_code
170017 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
170018
170019 , p_source_4 => l_array_source_4(Idx)
170020 , p_source_5 => l_array_source_5(Idx)
170021 , p_source_11 => l_array_source_11(Idx)
170022 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
170023 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
170024 , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
170025 , p_source_18 => l_array_source_18(Idx)
170026 , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
170027 , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
170028 , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
170029 , p_source_22 => l_array_source_22(Idx)
170030 );
170031 If(l_balance_type_code = 'A') THEN
170032 l_actual_gain_loss_ref := l_gain_or_loss_ref;
170033 END IF;
170034
170035 --
170036
170037
170038 --
170039 AcctLineType_234 (
170040 p_application_id => p_application_id
170041 ,p_event_id => l_event_id
170042 ,p_calculate_acctd_flag => l_calculate_acctd_flag
170043 ,p_calculate_g_l_flag => l_calculate_g_l_flag
170044 ,p_actual_flag => l_actual_flag
170045 ,p_balance_type_code => l_balance_type_code
170046 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
170047
170048 , p_source_4 => l_array_source_4(Idx)
170049 , p_source_5 => l_array_source_5(Idx)
170050 , p_source_11 => l_array_source_11(Idx)
170051 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
170052 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
170053 , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
170054 , p_source_18 => l_array_source_18(Idx)
170055 , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
170056 , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
170057 , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
170058 , p_source_22 => l_array_source_22(Idx)
170059 );
170060 If(l_balance_type_code = 'A') THEN
170061 l_actual_gain_loss_ref := l_gain_or_loss_ref;
170062 END IF;
170063
170064 --
170065
170066
170067 --
170068 AcctLineType_238 (
170069 p_application_id => p_application_id
170070 ,p_event_id => l_event_id
170071 ,p_calculate_acctd_flag => l_calculate_acctd_flag
170072 ,p_calculate_g_l_flag => l_calculate_g_l_flag
170073 ,p_actual_flag => l_actual_flag
170074 ,p_balance_type_code => l_balance_type_code
170075 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
170076
170077 , p_source_4 => l_array_source_4(Idx)
170078 , p_source_5 => l_array_source_5(Idx)
170079 , p_source_11 => l_array_source_11(Idx)
170080 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
170081 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
170082 , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
170083 , p_source_18 => l_array_source_18(Idx)
170084 , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
170085 , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
170086 , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
170087 , p_source_22 => l_array_source_22(Idx)
170088 );
170089 If(l_balance_type_code = 'A') THEN
170090 l_actual_gain_loss_ref := l_gain_or_loss_ref;
170091 END IF;
170092
170093 --
170094
170095 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
170096 -- or secondary ledger that has different currency with primary
170097 -- or alc that is calculated by sla
170098 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
170099 (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'))
170100
170101 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
170102 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
170103 AND (l_actual_flag = 'A')) THEN
170104 XLA_AE_LINES_PKG.CreateGainOrLossLines(
170105 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
170106 ,p_application_id => p_application_id
170107 ,p_amb_context_code => 'DEFAULT'
170108 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
170109 ,p_event_class_code => C_EVENT_CLASS_CODE
170110 ,p_event_type_code => C_EVENT_TYPE_CODE
170111
170112 ,p_gain_ccid => -1
170113 ,p_loss_ccid => -1
170114
170115 ,p_actual_flag => l_actual_flag
170116 ,p_enc_flag => null
170117 ,p_actual_g_l_ref => l_actual_gain_loss_ref
170118 ,p_enc_g_l_ref => null
170119 );
170120 END IF;
170121 END IF;
170122 END IF;
170123
170124 ELSE
170125 --
170126 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
170127 --
170128 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
170129 trace
170130 (p_msg => 'Trancaction revesal option is Y'
170131 ,p_level => C_LEVEL_STATEMENT
170132 ,p_module => l_log_module);
170133 END IF;
170134 END IF;
170135
170136 END LOOP;
170137 l_result := XLA_AE_LINES_PKG.InsertLines ;
170138 end loop;
170139 close line_cur;
170140
170141
170142 --
170143 -- insert headers into xla_ae_headers_gt table
170144 --
170145 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
170146
170147 -- insert into errors table here.
170148
170149 END LOOP;
170150
170151 --
170152 -- 4865292
170153 --
170154 -- Compare g_hdr_extract_count with event count in
170155 -- CreateHeadersAndLines.
170156 --
170157 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
170158
170159 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
170160 trace (p_msg => '# rows extracted from header extract objects '
170161 || ' (running total): '
170162 || g_hdr_extract_count
170163 ,p_level => C_LEVEL_STATEMENT
170164 ,p_module => l_log_module);
170165 END IF;
170166
170167 CLOSE header_cur;
170168 --
170169
170170 --
170171 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
170172 trace
170173 (p_msg => 'END of EventClass_273'
170174 ,p_level => C_LEVEL_PROCEDURE
170175 ,p_module => l_log_module);
170176 END IF;
170177 --
170178 RETURN l_result;
170179 EXCEPTION
170180 WHEN xla_exceptions_pkg.application_exception THEN
170181
170182 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
170183
170184
170185 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
170186
170187 RAISE;
170188
170189 WHEN NO_DATA_FOUND THEN
170190
170191 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
170192 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
170193
170194 FOR header_record IN header_cur
170195 LOOP
170196 l_array_header_events(header_record.event_id) := header_record.event_id;
170197 END LOOP;
170198
170199 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
170200 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
170201
170202 fnd_file.put_line(fnd_file.LOG, ' ');
170203 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
170204 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
170205 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
170206
170207 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
170208 LOOP
170209 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
170210 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
170211 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
170212 END IF;
170213 END LOOP;
170214
170215 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
170216 fnd_file.put_line(fnd_file.LOG, ' ');
170217
170218
170219 xla_exceptions_pkg.raise_message
170220 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_273');
170221
170222
170223 WHEN OTHERS THEN
170224 xla_exceptions_pkg.raise_message
170225 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_273');
170226 END EventClass_273;
170227 --
170228
170229 ---------------------------------------
170230 --
170231 -- PRIVATE PROCEDURE
170232 -- insert_sources_274
170233 --
170234 ----------------------------------------
170235 --
170236 PROCEDURE insert_sources_274(
170237 p_target_ledger_id IN NUMBER
170238 , p_language IN VARCHAR2
170239 , p_sla_ledger_id IN NUMBER
170240 , p_pad_start_date IN DATE
170241 , p_pad_end_date IN DATE
170242 )
170243 IS
170244
170245 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'SALES_ORDER_ALL';
170246 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'SALES_ORDER';
170247 p_apps_owner VARCHAR2(30);
170248 l_log_module VARCHAR2(240);
170249 BEGIN
170250 IF g_log_enabled THEN
170251 l_log_module := C_DEFAULT_MODULE||'.insert_sources_274';
170252 END IF;
170253 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
170254
170255 trace
170256 (p_msg => 'BEGIN of insert_sources_274'
170257 ,p_level => C_LEVEL_PROCEDURE
170258 ,p_module => l_log_module);
170259
170260 END IF;
170261
170262 -- select APPS owner
170263 SELECT oracle_username
170264 INTO p_apps_owner
170265 FROM fnd_oracle_userid
170266 WHERE read_only_flag = 'U'
170267 ;
170268
170269 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
170270 trace
170271 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
170272 ' - p_language = '||p_language||
170273 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
170274 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
170275 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
170276 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
170277 ,p_level => C_LEVEL_STATEMENT
170278 ,p_module => l_log_module);
170279 END IF;
170280
170281
170282 --
170283 INSERT INTO xla_diag_sources --hdr2
170284 (
170285 event_id
170286 , ledger_id
170287 , sla_ledger_id
170288 , description_language
170289 , object_name
170290 , object_type_code
170291 , line_number
170292 , source_application_id
170293 , source_type_code
170294 , source_code
170295 , source_value
170296 , source_meaning
170297 , created_by
170298 , creation_date
170299 , last_update_date
170300 , last_updated_by
170301 , last_update_login
170302 , program_update_date
170303 , program_application_id
170304 , program_id
170305 , request_id
170306 )
170307 SELECT
170308 event_id
170309 , p_target_ledger_id
170310 , p_sla_ledger_id
170311 , p_language
170312 , object_name
170313 , object_type_code
170314 , line_number
170315 , source_application_id
170316 , source_type_code
170317 , source_code
170318 , SUBSTR(source_value ,1,1996)
170319 , SUBSTR(source_meaning ,1,200)
170320 , xla_environment_pkg.g_Usr_Id
170321 , TRUNC(SYSDATE)
170322 , TRUNC(SYSDATE)
170323 , xla_environment_pkg.g_Usr_Id
170324 , xla_environment_pkg.g_Login_Id
170325 , TRUNC(SYSDATE)
170326 , xla_environment_pkg.g_Prog_Appl_Id
170327 , xla_environment_pkg.g_Prog_Id
170328 , xla_environment_pkg.g_Req_Id
170329 FROM (
170330 SELECT xet.event_id event_id
170331 , 0 line_number
170332 , CASE r
170333 WHEN 1 THEN 'CST_XLA_INV_HEADERS_V'
170334 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V'
170335
170336 ELSE null
170337 END object_name
170338 , CASE r
170339 WHEN 1 THEN 'HEADER'
170340 WHEN 2 THEN 'HEADER'
170341
170342 ELSE null
170343 END object_type_code
170344 , CASE r
170345 WHEN 1 THEN '707'
170346 WHEN 2 THEN '707'
170347
170348 ELSE null
170349 END source_application_id
170350 , 'S' source_type_code
170351 , CASE r
170352 WHEN 1 THEN 'DISTRIBUTION_TYPE'
170353 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR'
170354
170355 ELSE null
170356 END source_code
170357 , CASE r
170358 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
170359 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
170360
170361 ELSE null
170362 END source_value
170363 , CASE r
170364 WHEN 1 THEN fvl12.meaning
170365 WHEN 2 THEN fvl38.meaning
170366
170367 ELSE null
170368 END source_meaning
170369 FROM xla_events_gt xet
170370 , CST_XLA_INV_HEADERS_V h1
170371 , fnd_lookup_values fvl12
170372 , fnd_lookup_values fvl38
170373 ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
170374 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
170375 AND xet.event_class_code = C_EVENT_CLASS_CODE
170376 AND h1.event_id = xet.event_id
170377 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
170378 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
170379 AND fvl12.view_application_id(+) = 700
170380 AND fvl12.language(+) = USERENV('LANG')
170381 AND fvl38.lookup_type(+) = 'YES_NO'
170382 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
170383 AND fvl38.view_application_id(+) = 0
170384 AND fvl38.language(+) = USERENV('LANG')
170385
170386 )
170387 ;
170388 --
170389 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
170390
170391 trace
170392 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
170393 ,p_level => C_LEVEL_STATEMENT
170394 ,p_module => l_log_module);
170395
170396 END IF;
170397 --
170398
170399
170400
170401 --
170402 INSERT INTO xla_diag_sources --line2
170403 (
170404 event_id
170405 , ledger_id
170406 , sla_ledger_id
170407 , description_language
170408 , object_name
170409 , object_type_code
170410 , line_number
170411 , source_application_id
170412 , source_type_code
170413 , source_code
170414 , source_value
170415 , source_meaning
170416 , created_by
170417 , creation_date
170418 , last_update_date
170419 , last_updated_by
170420 , last_update_login
170421 , program_update_date
170422 , program_application_id
170423 , program_id
170424 , request_id
170425 )
170426 SELECT event_id
170427 , p_target_ledger_id
170428 , p_sla_ledger_id
170429 , p_language
170430 , object_name
170431 , object_type_code
170432 , line_number
170433 , source_application_id
170434 , source_type_code
170435 , source_code
170436 , SUBSTR(source_value,1,1996)
170437 , SUBSTR(source_meaning ,1,200)
170438 , xla_environment_pkg.g_Usr_Id
170439 , TRUNC(SYSDATE)
170440 , TRUNC(SYSDATE)
170441 , xla_environment_pkg.g_Usr_Id
170442 , xla_environment_pkg.g_Login_Id
170443 , TRUNC(SYSDATE)
170444 , xla_environment_pkg.g_Prog_Appl_Id
170445 , xla_environment_pkg.g_Prog_Id
170446 , xla_environment_pkg.g_Req_Id
170447 FROM (
170448 SELECT xet.event_id event_id
170449 , l2.line_number line_number
170450 , CASE r
170451 WHEN 1 THEN 'CST_XLA_INV_LINES_V'
170452 WHEN 2 THEN 'CST_XLA_INV_LINES_V'
170453 WHEN 3 THEN 'CST_XLA_INV_LINES_V'
170454 WHEN 4 THEN 'CST_XLA_INV_LINES_V'
170455 WHEN 5 THEN 'CST_XLA_INV_LINES_V'
170456 WHEN 6 THEN 'CST_XLA_INV_LINES_V'
170457 WHEN 7 THEN 'CST_XLA_INV_LINES_V'
170458 WHEN 8 THEN 'CST_XLA_INV_LINES_V'
170459 WHEN 9 THEN 'CST_XLA_INV_LINES_V'
170460
170461 ELSE null
170462 END object_name
170463 , CASE r
170464 WHEN 1 THEN 'LINE'
170465 WHEN 2 THEN 'LINE'
170466 WHEN 3 THEN 'LINE'
170467 WHEN 4 THEN 'LINE'
170468 WHEN 5 THEN 'LINE'
170469 WHEN 6 THEN 'LINE'
170470 WHEN 7 THEN 'LINE'
170471 WHEN 8 THEN 'LINE'
170472 WHEN 9 THEN 'LINE'
170473
170474 ELSE null
170475 END object_type_code
170476 , CASE r
170477 WHEN 1 THEN '707'
170478 WHEN 2 THEN '707'
170479 WHEN 3 THEN '707'
170480 WHEN 4 THEN '707'
170481 WHEN 5 THEN '707'
170482 WHEN 6 THEN '707'
170483 WHEN 7 THEN '707'
170484 WHEN 8 THEN '707'
170485 WHEN 9 THEN '707'
170486
170487 ELSE null
170488 END source_application_id
170489 , 'S' source_type_code
170490 , CASE r
170491 WHEN 1 THEN 'CODE_COMBINATION_ID'
170492 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER'
170493 WHEN 3 THEN 'CURRENCY_CODE'
170494 WHEN 4 THEN 'ENTERED_AMOUNT'
170495 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE'
170496 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE'
170497 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE'
170498 WHEN 8 THEN 'ACCOUNTED_AMOUNT'
170499 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE'
170500
170501 ELSE null
170502 END source_code
170503 , CASE r
170504 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
170505 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
170506 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
170507 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
170508 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
170509 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
170510 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
170511 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
170512 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
170513
170514 ELSE null
170515 END source_value
170516 , null source_meaning
170517 FROM xla_events_gt xet
170518 , CST_XLA_INV_LINES_V l2
170519 , (select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
170520 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
170521 AND xet.event_class_code = C_EVENT_CLASS_CODE
170522 AND l2.event_id = xet.event_id
170523
170524 )
170525 ;
170526 --
170527 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
170528
170529 trace
170530 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
170531 ,p_level => C_LEVEL_STATEMENT
170532 ,p_module => l_log_module);
170533
170534 END IF;
170535
170536
170537 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
170538 trace
170539 (p_msg => 'END of insert_sources_274'
170540 ,p_level => C_LEVEL_PROCEDURE
170541 ,p_module => l_log_module);
170542 END IF;
170543 EXCEPTION
170544 WHEN xla_exceptions_pkg.application_exception THEN
170545 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
170546 trace
170547 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
170548 ,p_level => C_LEVEL_EXCEPTION
170549 ,p_module => l_log_module);
170550 END IF;
170551 RAISE;
170552 WHEN OTHERS THEN
170553 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
170554 trace
170555 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
170556 ,p_level => C_LEVEL_EXCEPTION
170557 ,p_module => l_log_module);
170558 END IF;
170559 xla_exceptions_pkg.raise_message
170560 (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_274');
170561 END insert_sources_274;
170562 --
170563
170564 ---------------------------------------
170565 --
170566 -- PRIVATE FUNCTION
170567 -- EventClass_274
170568 --
170569 ----------------------------------------
170570 --
170571 FUNCTION EventClass_274
170572 (p_application_id IN NUMBER
170573 ,p_base_ledger_id IN NUMBER
170574 ,p_target_ledger_id IN NUMBER
170575 ,p_language IN VARCHAR2
170576 ,p_currency_code IN VARCHAR2
170577 ,p_sla_ledger_id IN NUMBER
170578 ,p_pad_start_date IN DATE
170579 ,p_pad_end_date IN DATE
170580 ,p_primary_ledger_id IN NUMBER)
170581 RETURN BOOLEAN IS
170582 --
170583 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'SALES_ORDER_ALL';
170584 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'SALES_ORDER';
170585
170586 l_calculate_acctd_flag VARCHAR2(1) :='N';
170587 l_calculate_g_l_flag VARCHAR2(1) :='N';
170588 --
170589 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
170590 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
170591 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
170592 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
170593 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
170594 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
170595 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
170596 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
170597 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
170598 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
170599 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
170600 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
170601 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
170602 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
170603 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
170604 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
170605 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
170606 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
170607 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
170608 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
170609 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
170610 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
170611 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
170612 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
170613 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
170614 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
170615
170616 l_event_id NUMBER;
170617 l_previous_event_id NUMBER;
170618 l_first_event_id NUMBER;
170619 l_last_event_id NUMBER;
170620
170621 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
170622 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
170623 --
170624 --
170625 l_result BOOLEAN := TRUE;
170626 l_rows NUMBER := 1000;
170627 l_event_type_name VARCHAR2(80) := 'All';
170628 l_event_class_name VARCHAR2(80) := 'Sales Order Issue';
170629 l_description VARCHAR2(4000);
170630 l_transaction_reversal NUMBER;
170631 l_ae_header_id NUMBER;
170632 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
170633 l_log_module VARCHAR2(240);
170634 --
170635 l_acct_reversal_source VARCHAR2(30);
170636 l_trx_reversal_source VARCHAR2(30);
170637
170638 l_continue_with_lines BOOLEAN := TRUE;
170639 --
170640 l_acc_rev_gl_date_source DATE; -- 4262811
170641 --
170642 type t_array_event_id is table of number index by binary_integer;
170643
170644 l_rec_array_event t_rec_array_event;
170645 l_null_rec_array_event t_rec_array_event;
170646 l_array_ae_header_id xla_number_array_type;
170647 l_actual_flag VARCHAR2(1) := NULL;
170648 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
170649 l_balance_type_code VARCHAR2(1) :=NULL;
170650 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
170651
170652 --
170653 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
170654 --
170655
170656 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
170657 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
170658
170659 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
170660 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
170661 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
170662 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
170663 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
170664 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
170665 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
170666 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
170667 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
170668
170669 l_array_source_12 t_array_source_12;
170670 l_array_source_12_meaning t_array_lookup_meaning;
170671 l_array_source_38 t_array_source_38;
170672 l_array_source_38_meaning t_array_lookup_meaning;
170673
170674 l_array_source_4 t_array_source_4;
170675 l_array_source_11 t_array_source_11;
170676 l_array_source_15 t_array_source_15;
170677 l_array_source_18 t_array_source_18;
170678 l_array_source_19 t_array_source_19;
170679 l_array_source_20 t_array_source_20;
170680 l_array_source_21 t_array_source_21;
170681 l_array_source_22 t_array_source_22;
170682 l_array_source_24 t_array_source_24;
170683
170684 --
170685 CURSOR header_cur
170686 IS
170687 SELECT /*+ leading(xet) cardinality(xet,1) */
170688 -- Event Class Code: SALES_ORDER
170689 xet.entity_id
170690 ,xet.legal_entity_id
170691 ,xet.entity_code
170692 ,xet.transaction_number
170693 ,xet.event_id
170694 ,xet.event_class_code
170695 ,xet.event_type_code
170696 ,xet.event_number
170697 ,xet.event_date
170698 ,xet.transaction_date
170699 ,xet.reference_num_1
170700 ,xet.reference_num_2
170701 ,xet.reference_num_3
170702 ,xet.reference_num_4
170703 ,xet.reference_char_1
170704 ,xet.reference_char_2
170705 ,xet.reference_char_3
170706 ,xet.reference_char_4
170707 ,xet.reference_date_1
170708 ,xet.reference_date_2
170709 ,xet.reference_date_3
170710 ,xet.reference_date_4
170711 ,xet.event_created_by
170712 ,xet.budgetary_control_flag
170713 , h1.DISTRIBUTION_TYPE source_12
170714 , fvl12.meaning source_12_meaning
170715 , h1.TRANSFER_TO_GL_INDICATOR source_38
170716 , fvl38.meaning source_38_meaning
170717 FROM xla_events_gt xet
170718 , CST_XLA_INV_HEADERS_V h1
170719 , fnd_lookup_values fvl12
170720 , fnd_lookup_values fvl38
170721 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
170722 and xet.event_class_code = C_EVENT_CLASS_CODE
170723 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
170724 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
170725 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
170726 AND fvl12.view_application_id(+) = 700
170727 AND fvl12.language(+) = USERENV('LANG')
170728 AND fvl38.lookup_type(+) = 'YES_NO'
170729 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
170730 AND fvl38.view_application_id(+) = 0
170731 AND fvl38.language(+) = USERENV('LANG')
170732
170733 ORDER BY event_id
170734 ;
170735
170736
170737 --
170738 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
170739 IS
170740 SELECT /*+ leading(xet) cardinality(xet,1) */
170741 -- Event Class Code: SALES_ORDER
170742 xet.entity_id
170743 ,xet.legal_entity_id
170744 ,xet.entity_code
170745 ,xet.transaction_number
170746 ,xet.event_id
170747 ,xet.event_class_code
170748 ,xet.event_type_code
170749 ,xet.event_number
170750 ,xet.event_date
170751 ,xet.transaction_date
170752 ,xet.reference_num_1
170753 ,xet.reference_num_2
170754 ,xet.reference_num_3
170755 ,xet.reference_num_4
170756 ,xet.reference_char_1
170757 ,xet.reference_char_2
170758 ,xet.reference_char_3
170759 ,xet.reference_char_4
170760 ,xet.reference_date_1
170761 ,xet.reference_date_2
170762 ,xet.reference_date_3
170763 ,xet.reference_date_4
170764 ,xet.event_created_by
170765 ,xet.budgetary_control_flag
170766 , l2.LINE_NUMBER
170767 , l2.CODE_COMBINATION_ID source_4
170768 , l2.DISTRIBUTION_IDENTIFIER source_11
170769 , l2.CURRENCY_CODE source_15
170770 , l2.ENTERED_AMOUNT source_18
170771 , l2.CURRENCY_CONVERSION_DATE source_19
170772 , l2.CURRENCY_CONVERSION_RATE source_20
170773 , l2.CURRENCY_CONVERSION_TYPE source_21
170774 , l2.ACCOUNTED_AMOUNT source_22
170775 , l2.ACCOUNTING_LINE_TYPE_CODE source_24
170776 FROM xla_events_gt xet
170777 , CST_XLA_INV_LINES_V l2
170778 WHERE xet.event_id between x_first_event_id and x_last_event_id
170779 and xet.event_date between p_pad_start_date and p_pad_end_date
170780 and xet.event_class_code = C_EVENT_CLASS_CODE
170781 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
170782 ;
170783
170784 --
170785 BEGIN
170786 IF g_log_enabled THEN
170787 l_log_module := C_DEFAULT_MODULE||'.EventClass_274';
170788 END IF;
170789 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
170790 trace
170791 (p_msg => 'BEGIN of EventClass_274'
170792 ,p_level => C_LEVEL_PROCEDURE
170793 ,p_module => l_log_module);
170794 END IF;
170795
170796 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
170797 trace
170798 (p_msg => 'p_application_id = '||p_application_id||
170799 ' - p_base_ledger_id = '||p_base_ledger_id||
170800 ' - p_target_ledger_id = '||p_target_ledger_id||
170801 ' - p_language = '||p_language||
170802 ' - p_currency_code = '||p_currency_code||
170803 ' - p_sla_ledger_id = '||p_sla_ledger_id
170804 ,p_level => C_LEVEL_STATEMENT
170805 ,p_module => l_log_module);
170806 END IF;
170807 --
170808 -- initialze arrays
170809 --
170810 g_array_event.DELETE;
170811 l_rec_array_event := l_null_rec_array_event;
170812 --
170813 --------------------------------------
170814 -- 4262811 Initialze MPA Line Number
170815 --------------------------------------
170816 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
170817
170818 --
170819
170820 --
170821 OPEN header_cur;
170822 --
170823 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
170824 trace
170825 (p_msg => 'SQL - FETCH header_cur'
170826 ,p_level => C_LEVEL_STATEMENT
170827 ,p_module => l_log_module);
170828 END IF;
170829 --
170830 LOOP
170831 FETCH header_cur BULK COLLECT INTO
170832 l_array_entity_id
170833 , l_array_legal_entity_id
170834 , l_array_entity_code
170835 , l_array_transaction_num
170836 , l_array_event_id
170837 , l_array_class_code
170838 , l_array_event_type
170839 , l_array_event_number
170840 , l_array_event_date
170841 , l_array_transaction_date
170842 , l_array_reference_num_1
170843 , l_array_reference_num_2
170844 , l_array_reference_num_3
170845 , l_array_reference_num_4
170846 , l_array_reference_char_1
170847 , l_array_reference_char_2
170848 , l_array_reference_char_3
170849 , l_array_reference_char_4
170850 , l_array_reference_date_1
170851 , l_array_reference_date_2
170852 , l_array_reference_date_3
170853 , l_array_reference_date_4
170854 , l_array_event_created_by
170855 , l_array_budgetary_control_flag
170856 , l_array_source_12
170857 , l_array_source_12_meaning
170858 , l_array_source_38
170859 , l_array_source_38_meaning
170860 LIMIT l_rows;
170861 --
170862 IF (C_LEVEL_EVENT >= g_log_level) THEN
170863 trace
170864 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
170865 ,p_level => C_LEVEL_EVENT
170866 ,p_module => l_log_module);
170867 END IF;
170868 --
170869 EXIT WHEN l_array_entity_id.COUNT = 0;
170870
170871 -- initialize arrays
170872 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
170873 XLA_AE_LINES_PKG.g_rec_lines := NULL;
170874
170875 --
170876 -- Bug 4458708
170877 --
170878 XLA_AE_LINES_PKG.g_LineNumber := 0;
170879
170880
170881 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
170882 g_last_hdr_idx := l_array_event_id.LAST;
170883 --
170884 -- loop for the headers. Each iteration is for each header extract row
170885 -- fetched in header cursor
170886 --
170887 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
170888
170889 --
170890 -- set event info as cache for other routines to refer event attributes
170891 --
170892 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
170893 (p_application_id => p_application_id
170894 ,p_primary_ledger_id => p_primary_ledger_id
170895 ,p_base_ledger_id => p_base_ledger_id
170896 ,p_target_ledger_id => p_target_ledger_id
170897 ,p_entity_id => l_array_entity_id(hdr_idx)
170898 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
170899 ,p_entity_code => l_array_entity_code(hdr_idx)
170900 ,p_transaction_num => l_array_transaction_num(hdr_idx)
170901 ,p_event_id => l_array_event_id(hdr_idx)
170902 ,p_event_class_code => l_array_class_code(hdr_idx)
170903 ,p_event_type_code => l_array_event_type(hdr_idx)
170904 ,p_event_number => l_array_event_number(hdr_idx)
170905 ,p_event_date => l_array_event_date(hdr_idx)
170906 ,p_transaction_date => l_array_transaction_date(hdr_idx)
170907 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
170908 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
170909 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
170910 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
170911 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
170912 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
170913 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
170914 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
170915 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
170916 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
170917 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
170918 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
170919 ,p_event_created_by => l_array_event_created_by(hdr_idx)
170920 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
170921
170922 --
170923 -- set the status of entry to C_VALID (0)
170924 --
170925 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
170926
170927 --
170928 -- initialize a row for ae header
170929 --
170930 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
170931
170932 l_event_id := l_array_event_id(hdr_idx);
170933
170934 --
170935 -- storing the hdr_idx for event. May be used by line cursor.
170936 --
170937 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
170938
170939 --
170940 -- store sources from header extract. This can be improved to
170941 -- store only those sources from header extract that may be used in lines
170942 --
170943
170944 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
170945 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
170946 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
170947 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
170948
170949 --
170950 -- initilaize the status of ae headers for diffrent balance types
170951 -- the status is initialised to C_NOT_CREATED (2)
170952 --
170953 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
170954 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
170955 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
170956
170957 --
170958 -- call api to validate and store accounting attributes for header
170959 --
170960
170961 ------------------------------------------------------------
170962 -- Accrual Reversal : to get date for Standard Source (NONE)
170963 ------------------------------------------------------------
170964 l_acc_rev_gl_date_source := NULL;
170965
170966 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
170967 l_rec_acct_attrs.array_date_value(1) :=
170968 xla_ae_sources_pkg.GetSystemSourceDate(
170969 p_source_code => 'XLA_REFERENCE_DATE_1'
170970 , p_source_type_code => 'Y'
170971 , p_source_application_id => 602
170972 );
170973 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_TRANSFER_FLAG';
170974 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
170975
170976
170977 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
170978
170979 XLA_AE_HEADER_PKG.SetJeCategoryName;
170980
170981 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
170982 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
170983 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
170984 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
170985 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
170986
170987
170988 -- No header level analytical criteria
170989
170990 --
170991 --accounting attribute enhancement, bug 3612931
170992 --
170993 l_trx_reversal_source := SUBSTR(NULL, 1,30);
170994
170995 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
170996 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
170997
170998 xla_accounting_err_pkg.build_message
170999 (p_appli_s_name => 'XLA'
171000 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
171001 ,p_token_1 => 'ACCT_ATTR_NAME'
171002 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
171003 ,p_token_2 => 'PRODUCT_NAME'
171004 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
171005 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
171006 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
171007 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
171008
171009 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
171010 --
171011 -- following sets the accounting attributes needed to reverse
171012 -- accounting for a distributeion
171013 --
171014 xla_ae_lines_pkg.SetTrxReversalAttrs
171015 (p_event_id => l_event_id
171016 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
171017 ,p_trx_reversal_source => l_trx_reversal_source);
171018
171019 END IF;
171020
171021
171022 ----------------------------------------------------------------
171023 -- 4262811 - update the header statuses to invalid in need be
171024 ----------------------------------------------------------------
171025 --
171026 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
171027
171028
171029 -----------------------------------------------
171030 -- No accrual reversal for the event class/type
171031 -----------------------------------------------
171032 ----------------------------------------------------------------
171033
171034 --
171035 -- this ends the header loop iteration for one bulk fetch
171036 --
171037 END LOOP;
171038
171039 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
171040 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
171041
171042 --
171043 -- insert dummy rows into lines gt table that were created due to
171044 -- transaction reversals
171045 --
171046 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
171047 l_result := XLA_AE_LINES_PKG.InsertLines;
171048 END IF;
171049
171050 --
171051 -- reset the temp_line_num for each set of events fetched from header
171052 -- cursor rather than doing it for each new event in line cursor
171053 -- Bug 3939231
171054 --
171055 xla_ae_lines_pkg.g_temp_line_num := 0;
171056
171057
171058
171059 --
171060 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
171061 --
171062 --
171063 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
171064
171065 trace
171066 (p_msg => 'SQL - FETCH line_cur'
171067 ,p_level => C_LEVEL_STATEMENT
171068 ,p_module => l_log_module);
171069
171070 END IF;
171071 --
171072 --
171073 LOOP
171074 --
171075 FETCH line_cur BULK COLLECT INTO
171076 l_array_entity_id
171077 , l_array_legal_entity_id
171078 , l_array_entity_code
171079 , l_array_transaction_num
171080 , l_array_event_id
171081 , l_array_class_code
171082 , l_array_event_type
171083 , l_array_event_number
171084 , l_array_event_date
171085 , l_array_transaction_date
171086 , l_array_reference_num_1
171087 , l_array_reference_num_2
171088 , l_array_reference_num_3
171089 , l_array_reference_num_4
171090 , l_array_reference_char_1
171091 , l_array_reference_char_2
171092 , l_array_reference_char_3
171093 , l_array_reference_char_4
171094 , l_array_reference_date_1
171095 , l_array_reference_date_2
171096 , l_array_reference_date_3
171097 , l_array_reference_date_4
171098 , l_array_event_created_by
171099 , l_array_budgetary_control_flag
171100 , l_array_extract_line_num
171101 , l_array_source_4
171102 , l_array_source_11
171103 , l_array_source_15
171104 , l_array_source_18
171105 , l_array_source_19
171106 , l_array_source_20
171107 , l_array_source_21
171108 , l_array_source_22
171109 , l_array_source_24
171110 LIMIT l_rows;
171111
171112 --
171113 IF (C_LEVEL_EVENT >= g_log_level) THEN
171114 trace
171115 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
171116 ,p_level => C_LEVEL_EVENT
171117 ,p_module => l_log_module);
171118 END IF;
171119 --
171120 EXIT WHEN l_array_entity_id.count = 0;
171121
171122 XLA_AE_LINES_PKG.g_rec_lines := null;
171123
171124 --
171125 -- Bug 4458708
171126 --
171127 XLA_AE_LINES_PKG.g_LineNumber := 0;
171128 --
171129 --
171130
171131 FOR Idx IN 1..l_array_event_id.count LOOP
171132 --
171133 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
171134 --
171135 l_event_id := l_array_event_id(idx); -- 5648433
171136
171137 --
171138 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
171139 --
171140
171141 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
171142 (g_array_event(l_event_id).array_value_num('header_index'))
171143 ,'N'
171144 ) <> 'Y'
171145 THEN
171146 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
171147 trace
171148 (p_msg => 'Trancaction revesal option is not Y '
171149 ,p_level => C_LEVEL_STATEMENT
171150 ,p_module => l_log_module);
171151 END IF;
171152
171153 --
171154 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
171155 --
171156 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
171157 --
171158 -- set event info as cache for other routines to refer event attributes
171159 --
171160
171161 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
171162 l_previous_event_id := l_event_id;
171163
171164 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
171165 (p_application_id => p_application_id
171166 ,p_primary_ledger_id => p_primary_ledger_id
171167 ,p_base_ledger_id => p_base_ledger_id
171168 ,p_target_ledger_id => p_target_ledger_id
171169 ,p_entity_id => l_array_entity_id(Idx)
171170 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
171171 ,p_entity_code => l_array_entity_code(Idx)
171172 ,p_transaction_num => l_array_transaction_num(Idx)
171173 ,p_event_id => l_array_event_id(Idx)
171174 ,p_event_class_code => l_array_class_code(Idx)
171175 ,p_event_type_code => l_array_event_type(Idx)
171176 ,p_event_number => l_array_event_number(Idx)
171177 ,p_event_date => l_array_event_date(Idx)
171178 ,p_transaction_date => l_array_transaction_date(Idx)
171179 ,p_reference_num_1 => l_array_reference_num_1(Idx)
171180 ,p_reference_num_2 => l_array_reference_num_2(Idx)
171181 ,p_reference_num_3 => l_array_reference_num_3(Idx)
171182 ,p_reference_num_4 => l_array_reference_num_4(Idx)
171183 ,p_reference_char_1 => l_array_reference_char_1(Idx)
171184 ,p_reference_char_2 => l_array_reference_char_2(Idx)
171185 ,p_reference_char_3 => l_array_reference_char_3(Idx)
171186 ,p_reference_char_4 => l_array_reference_char_4(Idx)
171187 ,p_reference_date_1 => l_array_reference_date_1(Idx)
171188 ,p_reference_date_2 => l_array_reference_date_2(Idx)
171189 ,p_reference_date_3 => l_array_reference_date_3(Idx)
171190 ,p_reference_date_4 => l_array_reference_date_4(Idx)
171191 ,p_event_created_by => l_array_event_created_by(Idx)
171192 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
171193 --
171194 END IF;
171195
171196
171197
171198 --
171199 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
171200
171201 l_acct_reversal_source := SUBSTR(NULL, 1,30);
171202
171203 IF l_continue_with_lines THEN
171204 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
171205 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
171206
171207 xla_accounting_err_pkg.build_message
171208 (p_appli_s_name => 'XLA'
171209 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
171210 ,p_token_1 => 'LINE_NUMBER'
171211 ,p_value_1 => l_array_extract_line_num(Idx)
171212 ,p_token_2 => 'PRODUCT_NAME'
171213 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
171214 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
171215 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
171216 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
171217
171218 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
171219 --
171220 -- following sets the accounting attributes needed to reverse
171221 -- accounting for a distributeion
171222 --
171223
171224 --
171225 -- 5217187
171226 --
171227 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
171228 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
171229 g_array_event(l_event_id).array_value_num('header_index'));
171230 --
171231 --
171232
171233 -- No reversal code generated
171234
171235 xla_ae_lines_pkg.SetAcctReversalAttrs
171236 (p_event_id => l_event_id
171237 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
171238 ,p_calculate_acctd_flag => l_calculate_acctd_flag
171239 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
171240 END IF;
171241
171242 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
171243 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
171244
171245 --
171246 AcctLineType_18 (
171247 p_application_id => p_application_id
171248 ,p_event_id => l_event_id
171249 ,p_calculate_acctd_flag => l_calculate_acctd_flag
171250 ,p_calculate_g_l_flag => l_calculate_g_l_flag
171251 ,p_actual_flag => l_actual_flag
171252 ,p_balance_type_code => l_balance_type_code
171253 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
171254
171255 , p_source_4 => l_array_source_4(Idx)
171256 , p_source_11 => l_array_source_11(Idx)
171257 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
171258 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
171259 , p_source_15 => l_array_source_15(Idx)
171260 , p_source_18 => l_array_source_18(Idx)
171261 , p_source_19 => l_array_source_19(Idx)
171262 , p_source_20 => l_array_source_20(Idx)
171263 , p_source_21 => l_array_source_21(Idx)
171264 , p_source_22 => l_array_source_22(Idx)
171265 , p_source_24 => l_array_source_24(Idx)
171266 );
171267 If(l_balance_type_code = 'A') THEN
171268 l_actual_gain_loss_ref := l_gain_or_loss_ref;
171269 END IF;
171270
171271 --
171272
171273
171274 --
171275 AcctLineType_23 (
171276 p_application_id => p_application_id
171277 ,p_event_id => l_event_id
171278 ,p_calculate_acctd_flag => l_calculate_acctd_flag
171279 ,p_calculate_g_l_flag => l_calculate_g_l_flag
171280 ,p_actual_flag => l_actual_flag
171281 ,p_balance_type_code => l_balance_type_code
171282 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
171283
171284 , p_source_4 => l_array_source_4(Idx)
171285 , p_source_11 => l_array_source_11(Idx)
171286 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
171287 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
171288 , p_source_15 => l_array_source_15(Idx)
171289 , p_source_18 => l_array_source_18(Idx)
171290 , p_source_19 => l_array_source_19(Idx)
171291 , p_source_20 => l_array_source_20(Idx)
171292 , p_source_21 => l_array_source_21(Idx)
171293 , p_source_22 => l_array_source_22(Idx)
171294 , p_source_24 => l_array_source_24(Idx)
171295 );
171296 If(l_balance_type_code = 'A') THEN
171297 l_actual_gain_loss_ref := l_gain_or_loss_ref;
171298 END IF;
171299
171300 --
171301
171302
171303 --
171304 AcctLineType_32 (
171305 p_application_id => p_application_id
171306 ,p_event_id => l_event_id
171307 ,p_calculate_acctd_flag => l_calculate_acctd_flag
171308 ,p_calculate_g_l_flag => l_calculate_g_l_flag
171309 ,p_actual_flag => l_actual_flag
171310 ,p_balance_type_code => l_balance_type_code
171311 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
171312
171313 , p_source_4 => l_array_source_4(Idx)
171314 , p_source_11 => l_array_source_11(Idx)
171315 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
171316 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
171317 , p_source_15 => l_array_source_15(Idx)
171318 , p_source_18 => l_array_source_18(Idx)
171319 , p_source_19 => l_array_source_19(Idx)
171320 , p_source_20 => l_array_source_20(Idx)
171321 , p_source_21 => l_array_source_21(Idx)
171322 , p_source_22 => l_array_source_22(Idx)
171323 , p_source_24 => l_array_source_24(Idx)
171324 );
171325 If(l_balance_type_code = 'A') THEN
171326 l_actual_gain_loss_ref := l_gain_or_loss_ref;
171327 END IF;
171328
171329 --
171330
171331
171332 --
171333 AcctLineType_45 (
171334 p_application_id => p_application_id
171335 ,p_event_id => l_event_id
171336 ,p_calculate_acctd_flag => l_calculate_acctd_flag
171337 ,p_calculate_g_l_flag => l_calculate_g_l_flag
171338 ,p_actual_flag => l_actual_flag
171339 ,p_balance_type_code => l_balance_type_code
171340 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
171341
171342 , p_source_4 => l_array_source_4(Idx)
171343 , p_source_11 => l_array_source_11(Idx)
171344 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
171345 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
171346 , p_source_15 => l_array_source_15(Idx)
171347 , p_source_18 => l_array_source_18(Idx)
171348 , p_source_19 => l_array_source_19(Idx)
171349 , p_source_20 => l_array_source_20(Idx)
171350 , p_source_21 => l_array_source_21(Idx)
171351 , p_source_22 => l_array_source_22(Idx)
171352 , p_source_24 => l_array_source_24(Idx)
171353 );
171354 If(l_balance_type_code = 'A') THEN
171355 l_actual_gain_loss_ref := l_gain_or_loss_ref;
171356 END IF;
171357
171358 --
171359
171360
171361 --
171362 AcctLineType_127 (
171363 p_application_id => p_application_id
171364 ,p_event_id => l_event_id
171365 ,p_calculate_acctd_flag => l_calculate_acctd_flag
171366 ,p_calculate_g_l_flag => l_calculate_g_l_flag
171367 ,p_actual_flag => l_actual_flag
171368 ,p_balance_type_code => l_balance_type_code
171369 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
171370
171371 , p_source_4 => l_array_source_4(Idx)
171372 , p_source_11 => l_array_source_11(Idx)
171373 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
171374 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
171375 , p_source_15 => l_array_source_15(Idx)
171376 , p_source_18 => l_array_source_18(Idx)
171377 , p_source_19 => l_array_source_19(Idx)
171378 , p_source_20 => l_array_source_20(Idx)
171379 , p_source_21 => l_array_source_21(Idx)
171380 , p_source_22 => l_array_source_22(Idx)
171381 , p_source_24 => l_array_source_24(Idx)
171382 );
171383 If(l_balance_type_code = 'A') THEN
171384 l_actual_gain_loss_ref := l_gain_or_loss_ref;
171385 END IF;
171386
171387 --
171388
171389 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
171390 -- or secondary ledger that has different currency with primary
171391 -- or alc that is calculated by sla
171392 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
171393 (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'))
171394
171395 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
171396 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
171397 AND (l_actual_flag = 'A')) THEN
171398 XLA_AE_LINES_PKG.CreateGainOrLossLines(
171399 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
171400 ,p_application_id => p_application_id
171401 ,p_amb_context_code => 'DEFAULT'
171402 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
171403 ,p_event_class_code => C_EVENT_CLASS_CODE
171404 ,p_event_type_code => C_EVENT_TYPE_CODE
171405
171406 ,p_gain_ccid => -1
171407 ,p_loss_ccid => -1
171408
171409 ,p_actual_flag => l_actual_flag
171410 ,p_enc_flag => null
171411 ,p_actual_g_l_ref => l_actual_gain_loss_ref
171412 ,p_enc_g_l_ref => null
171413 );
171414 END IF;
171415 END IF;
171416 END IF;
171417
171418 ELSE
171419 --
171420 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
171421 --
171422 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
171423 trace
171424 (p_msg => 'Trancaction revesal option is Y'
171425 ,p_level => C_LEVEL_STATEMENT
171426 ,p_module => l_log_module);
171427 END IF;
171428 END IF;
171429
171430 END LOOP;
171431 l_result := XLA_AE_LINES_PKG.InsertLines ;
171432 end loop;
171433 close line_cur;
171434
171435
171436 --
171437 -- insert headers into xla_ae_headers_gt table
171438 --
171439 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
171440
171441 -- insert into errors table here.
171442
171443 END LOOP;
171444
171445 --
171446 -- 4865292
171447 --
171448 -- Compare g_hdr_extract_count with event count in
171449 -- CreateHeadersAndLines.
171450 --
171451 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
171452
171453 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
171454 trace (p_msg => '# rows extracted from header extract objects '
171455 || ' (running total): '
171456 || g_hdr_extract_count
171457 ,p_level => C_LEVEL_STATEMENT
171458 ,p_module => l_log_module);
171459 END IF;
171460
171461 CLOSE header_cur;
171462 --
171463
171464 --
171465 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
171466 trace
171467 (p_msg => 'END of EventClass_274'
171468 ,p_level => C_LEVEL_PROCEDURE
171469 ,p_module => l_log_module);
171470 END IF;
171471 --
171472 RETURN l_result;
171473 EXCEPTION
171474 WHEN xla_exceptions_pkg.application_exception THEN
171475
171476 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
171477
171478
171479 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
171480
171481 RAISE;
171482
171483 WHEN NO_DATA_FOUND THEN
171484
171485 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
171486 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
171487
171488 FOR header_record IN header_cur
171489 LOOP
171490 l_array_header_events(header_record.event_id) := header_record.event_id;
171491 END LOOP;
171492
171493 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
171494 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
171495
171496 fnd_file.put_line(fnd_file.LOG, ' ');
171497 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
171498 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
171499 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
171500
171501 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
171502 LOOP
171503 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
171504 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
171505 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
171506 END IF;
171507 END LOOP;
171508
171509 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
171510 fnd_file.put_line(fnd_file.LOG, ' ');
171511
171512
171513 xla_exceptions_pkg.raise_message
171514 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_274');
171515
171516
171517 WHEN OTHERS THEN
171518 xla_exceptions_pkg.raise_message
171519 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_274');
171520 END EventClass_274;
171521 --
171522
171523 ---------------------------------------
171524 --
171525 -- PRIVATE PROCEDURE
171526 -- insert_sources_275
171527 --
171528 ----------------------------------------
171529 --
171530 PROCEDURE insert_sources_275(
171531 p_target_ledger_id IN NUMBER
171532 , p_language IN VARCHAR2
171533 , p_sla_ledger_id IN NUMBER
171534 , p_pad_start_date IN DATE
171535 , p_pad_end_date IN DATE
171536 )
171537 IS
171538
171539 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'UAVG_COST_UPD';
171540 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'USER_DEFINE';
171541 p_apps_owner VARCHAR2(30);
171542 l_log_module VARCHAR2(240);
171543 BEGIN
171544 IF g_log_enabled THEN
171545 l_log_module := C_DEFAULT_MODULE||'.insert_sources_275';
171546 END IF;
171547 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
171548
171549 trace
171550 (p_msg => 'BEGIN of insert_sources_275'
171551 ,p_level => C_LEVEL_PROCEDURE
171552 ,p_module => l_log_module);
171553
171554 END IF;
171555
171556 -- select APPS owner
171557 SELECT oracle_username
171558 INTO p_apps_owner
171559 FROM fnd_oracle_userid
171560 WHERE read_only_flag = 'U'
171561 ;
171562
171563 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
171564 trace
171565 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
171566 ' - p_language = '||p_language||
171567 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
171568 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
171569 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
171570 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
171571 ,p_level => C_LEVEL_STATEMENT
171572 ,p_module => l_log_module);
171573 END IF;
171574
171575
171576 --
171577 INSERT INTO xla_diag_sources --hdr1
171578 (
171579 event_id
171580 , ledger_id
171581 , sla_ledger_id
171582 , description_language
171583 , object_name
171584 , object_type_code
171585 , line_number
171586 , source_application_id
171587 , source_type_code
171588 , source_code
171589 , source_value
171590 , source_meaning
171591 , created_by
171592 , creation_date
171593 , last_update_date
171594 , last_updated_by
171595 , last_update_login
171596 , program_update_date
171597 , program_application_id
171598 , program_id
171599 , request_id
171600 )
171601 SELECT
171602 event_id
171603 , p_target_ledger_id
171604 , p_sla_ledger_id
171605 , p_language
171606 , object_name
171607 , object_type_code
171608 , line_number
171609 , source_application_id
171610 , source_type_code
171611 , source_code
171612 , SUBSTR(source_value ,1,1996)
171613 , SUBSTR(source_meaning,1,200)
171614 , xla_environment_pkg.g_Usr_Id
171615 , TRUNC(SYSDATE)
171616 , TRUNC(SYSDATE)
171617 , xla_environment_pkg.g_Usr_Id
171618 , xla_environment_pkg.g_Login_Id
171619 , TRUNC(SYSDATE)
171620 , xla_environment_pkg.g_Prog_Appl_Id
171621 , xla_environment_pkg.g_Prog_Id
171622 , xla_environment_pkg.g_Req_Id
171623 FROM (
171624 SELECT xet.event_id event_id
171625 , 0 line_number
171626 , CASE r
171627 WHEN 1 THEN 'CST_XLA_INV_HEADERS_V'
171628 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V'
171629
171630 ELSE null
171631 END object_name
171632 , CASE r
171633 WHEN 1 THEN 'HEADER'
171634 WHEN 2 THEN 'HEADER'
171635
171636 ELSE null
171637 END object_type_code
171638 , CASE r
171639 WHEN 1 THEN '707'
171640 WHEN 2 THEN '707'
171641
171642 ELSE null
171643 END source_application_id
171644 , 'S' source_type_code
171645 , CASE r
171646 WHEN 1 THEN 'DISTRIBUTION_TYPE'
171647 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR'
171648
171649 ELSE null
171650 END source_code
171651 , CASE r
171652 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
171653 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
171654
171655 ELSE null
171656 END source_value
171657 , CASE r
171658 WHEN 1 THEN fvl12.meaning
171659 WHEN 2 THEN fvl38.meaning
171660
171661 ELSE null
171662 END source_meaning
171663 FROM xla_events_gt xet
171664 , CST_XLA_INV_HEADERS_V h1
171665 , fnd_lookup_values fvl12
171666 , fnd_lookup_values fvl38
171667 ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
171668 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
171669 AND xet.event_type_code = C_EVENT_TYPE_CODE
171670 AND h1.event_id = xet.event_id
171671 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
171672 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
171673 AND fvl12.view_application_id(+) = 700
171674 AND fvl12.language(+) = USERENV('LANG')
171675 AND fvl38.lookup_type(+) = 'YES_NO'
171676 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
171677 AND fvl38.view_application_id(+) = 0
171678 AND fvl38.language(+) = USERENV('LANG')
171679
171680 )
171681 ;
171682 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
171683
171684 trace
171685 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
171686 ,p_level => C_LEVEL_STATEMENT
171687 ,p_module => l_log_module);
171688
171689 END IF;
171690 --
171691
171692
171693
171694 --
171695 INSERT INTO xla_diag_sources --line1
171696 (
171697 event_id
171698 , ledger_id
171699 , sla_ledger_id
171700 , description_language
171701 , object_name
171702 , object_type_code
171703 , line_number
171704 , source_application_id
171705 , source_type_code
171706 , source_code
171707 , source_value
171708 , source_meaning
171709 , created_by
171710 , creation_date
171711 , last_update_date
171712 , last_updated_by
171713 , last_update_login
171714 , program_update_date
171715 , program_application_id
171716 , program_id
171717 , request_id
171718 )
171719 SELECT event_id
171720 , p_target_ledger_id
171721 , p_sla_ledger_id
171722 , p_language
171723 , object_name
171724 , object_type_code
171725 , line_number
171726 , source_application_id
171727 , source_type_code
171728 , source_code
171729 , SUBSTR(source_value,1,1996)
171730 , SUBSTR(source_meaning,1,200)
171731 , xla_environment_pkg.g_Usr_Id
171732 , TRUNC(SYSDATE)
171733 , TRUNC(SYSDATE)
171734 , xla_environment_pkg.g_Usr_Id
171735 , xla_environment_pkg.g_Login_Id
171736 , TRUNC(SYSDATE)
171737 , xla_environment_pkg.g_Prog_Appl_Id
171738 , xla_environment_pkg.g_Prog_Id
171739 , xla_environment_pkg.g_Req_Id
171740 FROM (
171741 SELECT xet.event_id event_id
171742 , l2.line_number line_number
171743 , CASE r
171744 WHEN 1 THEN 'CST_XLA_INV_LINES_V'
171745 WHEN 2 THEN 'CST_XLA_INV_LINES_V'
171746 WHEN 3 THEN 'CST_XLA_INV_LINES_V'
171747 WHEN 4 THEN 'CST_XLA_INV_LINES_V'
171748 WHEN 5 THEN 'CST_XLA_INV_LINES_V'
171749 WHEN 6 THEN 'CST_XLA_INV_LINES_V'
171750 WHEN 7 THEN 'CST_XLA_INV_LINES_V'
171751 WHEN 8 THEN 'CST_XLA_INV_LINES_V'
171752 WHEN 9 THEN 'CST_XLA_INV_LINES_V'
171753
171754 ELSE null
171755 END object_name
171756 , CASE r
171757 WHEN 1 THEN 'LINE'
171758 WHEN 2 THEN 'LINE'
171759 WHEN 3 THEN 'LINE'
171760 WHEN 4 THEN 'LINE'
171761 WHEN 5 THEN 'LINE'
171762 WHEN 6 THEN 'LINE'
171763 WHEN 7 THEN 'LINE'
171764 WHEN 8 THEN 'LINE'
171765 WHEN 9 THEN 'LINE'
171766
171767 ELSE null
171768 END object_type_code
171769 , CASE r
171770 WHEN 1 THEN '707'
171771 WHEN 2 THEN '707'
171772 WHEN 3 THEN '707'
171773 WHEN 4 THEN '707'
171774 WHEN 5 THEN '707'
171775 WHEN 6 THEN '707'
171776 WHEN 7 THEN '707'
171777 WHEN 8 THEN '707'
171778 WHEN 9 THEN '707'
171779
171780 ELSE null
171781 END source_application_id
171782 , 'S' source_type_code
171783 , CASE r
171784 WHEN 1 THEN 'CODE_COMBINATION_ID'
171785 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER'
171786 WHEN 3 THEN 'CURRENCY_CODE'
171787 WHEN 4 THEN 'ENTERED_AMOUNT'
171788 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE'
171789 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE'
171790 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE'
171791 WHEN 8 THEN 'ACCOUNTED_AMOUNT'
171792 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE'
171793
171794 ELSE null
171795 END source_code
171796 , CASE r
171797 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
171798 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
171799 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
171800 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
171801 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
171802 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
171803 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
171804 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
171805 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
171806
171807 ELSE null
171808 END source_value
171809 , null source_meaning
171810 FROM xla_events_gt xet
171811 , CST_XLA_INV_LINES_V l2
171812 ,(select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
171813 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
171814 AND xet.event_type_code = C_EVENT_TYPE_CODE
171815 AND l2.event_id = xet.event_id
171816
171817 )
171818 ;
171819 --
171820 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
171821
171822 trace
171823 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
171824 ,p_level => C_LEVEL_STATEMENT
171825 ,p_module => l_log_module);
171826
171827 END IF;
171828
171829
171830 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
171831 trace
171832 (p_msg => 'END of insert_sources_275'
171833 ,p_level => C_LEVEL_PROCEDURE
171834 ,p_module => l_log_module);
171835 END IF;
171836 EXCEPTION
171837 WHEN xla_exceptions_pkg.application_exception THEN
171838 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
171839 trace
171840 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
171841 ,p_level => C_LEVEL_EXCEPTION
171842 ,p_module => l_log_module);
171843 END IF;
171844 RAISE;
171845 WHEN OTHERS THEN
171846 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
171847 trace
171848 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
171849 ,p_level => C_LEVEL_EXCEPTION
171850 ,p_module => l_log_module);
171851 END IF;
171852 xla_exceptions_pkg.raise_message
171853 (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_275');
171854 END insert_sources_275;
171855 --
171856
171857 ---------------------------------------
171858 --
171859 -- PRIVATE FUNCTION
171860 -- EventType_275
171861 --
171862 ----------------------------------------
171863 --
171864 FUNCTION EventType_275
171865 (p_application_id IN NUMBER
171866 ,p_base_ledger_id IN NUMBER
171867 ,p_target_ledger_id IN NUMBER
171868 ,p_language IN VARCHAR2
171869 ,p_currency_code IN VARCHAR2
171870 ,p_sla_ledger_id IN NUMBER
171871 ,p_pad_start_date IN DATE
171872 ,p_pad_end_date IN DATE
171873 ,p_primary_ledger_id IN NUMBER)
171874 RETURN BOOLEAN IS
171875 --
171876 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'UAVG_COST_UPD';
171877 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'USER_DEFINE';
171878
171879 l_calculate_acctd_flag VARCHAR2(1) :='Y';
171880 l_calculate_g_l_flag VARCHAR2(1) :='Y';
171881 --
171882 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
171883 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
171884 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
171885 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
171886 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
171887 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
171888 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
171889 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
171890 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
171891 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
171892 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
171893 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
171894 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
171895 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
171896 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
171897 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
171898 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
171899 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
171900 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
171901 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
171902 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
171903 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
171904 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
171905 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
171906 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
171907 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
171908
171909 l_event_id NUMBER;
171910 l_previous_event_id NUMBER;
171911 l_first_event_id NUMBER;
171912 l_last_event_id NUMBER;
171913
171914 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
171915 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
171916 --
171917 --
171918 l_result BOOLEAN := TRUE;
171919 l_rows NUMBER := 1000;
171920 l_event_type_name VARCHAR2(80) := 'User-defined Cost Update';
171921 l_event_class_name VARCHAR2(80) := 'User Defined Inventory Transaction Class';
171922 l_description VARCHAR2(4000);
171923 l_transaction_reversal NUMBER;
171924 l_ae_header_id NUMBER;
171925 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
171926 l_log_module VARCHAR2(240);
171927 --
171928 l_acct_reversal_source VARCHAR2(30);
171929 l_trx_reversal_source VARCHAR2(30);
171930
171931 l_continue_with_lines BOOLEAN := TRUE;
171932 --
171933 l_acc_rev_gl_date_source DATE; -- 4262811
171934 --
171935 type t_array_event_id is table of number index by binary_integer;
171936
171937 l_rec_array_event t_rec_array_event;
171938 l_null_rec_array_event t_rec_array_event;
171939 l_array_ae_header_id xla_number_array_type;
171940 l_actual_flag VARCHAR2(1) := NULL;
171941 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
171942 l_balance_type_code VARCHAR2(1) :=NULL;
171943 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
171944
171945 --
171946 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
171947 --
171948
171949 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
171950 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
171951
171952 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
171953 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
171954 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
171955 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
171956 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
171957 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
171958 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
171959 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
171960 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
171961
171962 l_array_source_12 t_array_source_12;
171963 l_array_source_12_meaning t_array_lookup_meaning;
171964 l_array_source_38 t_array_source_38;
171965 l_array_source_38_meaning t_array_lookup_meaning;
171966
171967 l_array_source_4 t_array_source_4;
171968 l_array_source_11 t_array_source_11;
171969 l_array_source_15 t_array_source_15;
171970 l_array_source_18 t_array_source_18;
171971 l_array_source_19 t_array_source_19;
171972 l_array_source_20 t_array_source_20;
171973 l_array_source_21 t_array_source_21;
171974 l_array_source_22 t_array_source_22;
171975 l_array_source_24 t_array_source_24;
171976
171977 --
171978 CURSOR header_cur
171979 IS
171980 SELECT /*+ leading(xet) cardinality(xet,1) */
171981 -- Event Type Code: UAVG_COST_UPD
171982 -- Event Class Code: USER_DEFINE
171983 xet.entity_id
171984 , xet.legal_entity_id
171985 , xet.entity_code
171986 , xet.transaction_number
171987 , xet.event_id
171988 , xet.event_class_code
171989 , xet.event_type_code
171990 , xet.event_number
171991 , xet.event_date
171992 , xet.transaction_date
171993 , xet.reference_num_1
171994 , xet.reference_num_2
171995 , xet.reference_num_3
171996 , xet.reference_num_4
171997 , xet.reference_char_1
171998 , xet.reference_char_2
171999 , xet.reference_char_3
172000 , xet.reference_char_4
172001 , xet.reference_date_1
172002 , xet.reference_date_2
172003 , xet.reference_date_3
172004 , xet.reference_date_4
172005 , xet.event_created_by
172006 , xet.budgetary_control_flag
172007 , h1.DISTRIBUTION_TYPE source_12
172008 , fvl12.meaning source_12_meaning
172009 , h1.TRANSFER_TO_GL_INDICATOR source_38
172010 , fvl38.meaning source_38_meaning
172011 FROM xla_events_gt xet
172012 , CST_XLA_INV_HEADERS_V h1
172013 , fnd_lookup_values fvl12
172014 , fnd_lookup_values fvl38
172015 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
172016 and xet.event_type_code = C_EVENT_TYPE_CODE
172017 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
172018 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
172019 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
172020 AND fvl12.view_application_id(+) = 700
172021 AND fvl12.language(+) = USERENV('LANG')
172022 AND fvl38.lookup_type(+) = 'YES_NO'
172023 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
172024 AND fvl38.view_application_id(+) = 0
172025 AND fvl38.language(+) = USERENV('LANG')
172026
172027 ORDER BY event_id
172028 ;
172029
172030
172031 --
172032 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
172033 IS
172034 SELECT /*+ leading(xet) cardinality(xet,1) */
172035 -- Event Type Code: UAVG_COST_UPD
172036 -- Event Class Code: USER_DEFINE
172037 xet.entity_id
172038 ,xet.legal_entity_id
172039 ,xet.entity_code
172040 ,xet.transaction_number
172041 ,xet.event_id
172042 ,xet.event_class_code
172043 ,xet.event_type_code
172044 ,xet.event_number
172045 ,xet.event_date
172046 ,xet.transaction_date
172047 ,xet.reference_num_1
172048 ,xet.reference_num_2
172049 ,xet.reference_num_3
172050 ,xet.reference_num_4
172051 ,xet.reference_char_1
172052 ,xet.reference_char_2
172053 ,xet.reference_char_3
172054 ,xet.reference_char_4
172055 ,xet.reference_date_1
172056 ,xet.reference_date_2
172057 ,xet.reference_date_3
172058 ,xet.reference_date_4
172059 ,xet.event_created_by
172060 ,xet.budgetary_control_flag , l2.LINE_NUMBER
172061 , l2.CODE_COMBINATION_ID source_4
172062 , l2.DISTRIBUTION_IDENTIFIER source_11
172063 , l2.CURRENCY_CODE source_15
172064 , l2.ENTERED_AMOUNT source_18
172065 , l2.CURRENCY_CONVERSION_DATE source_19
172066 , l2.CURRENCY_CONVERSION_RATE source_20
172067 , l2.CURRENCY_CONVERSION_TYPE source_21
172068 , l2.ACCOUNTED_AMOUNT source_22
172069 , l2.ACCOUNTING_LINE_TYPE_CODE source_24
172070 FROM xla_events_gt xet
172071 , CST_XLA_INV_LINES_V l2
172072 WHERE xet.event_id between x_first_event_id and x_last_event_id
172073 and xet.event_date between p_pad_start_date and p_pad_end_date
172074 and xet.event_type_code = C_EVENT_TYPE_CODE
172075 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
172076 ;
172077
172078 --
172079 BEGIN
172080 IF g_log_enabled THEN
172081 l_log_module := C_DEFAULT_MODULE||'.EventType_275';
172082 END IF;
172083 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
172084 trace
172085 (p_msg => 'BEGIN of EventType_275'
172086 ,p_level => C_LEVEL_PROCEDURE
172087 ,p_module => l_log_module);
172088 END IF;
172089
172090 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
172091 trace
172092 (p_msg => 'p_application_id = '||p_application_id||
172093 ' - p_base_ledger_id = '||p_base_ledger_id||
172094 ' - p_target_ledger_id = '||p_target_ledger_id||
172095 ' - p_language = '||p_language||
172096 ' - p_currency_code = '||p_currency_code||
172097 ' - p_sla_ledger_id = '||p_sla_ledger_id
172098 ,p_level => C_LEVEL_STATEMENT
172099 ,p_module => l_log_module);
172100 END IF;
172101 --
172102 -- initialze arrays
172103 --
172104 g_array_event.DELETE;
172105 l_rec_array_event := l_null_rec_array_event;
172106 --
172107 --------------------------------------
172108 -- 4262811 Initialze MPA Line Number
172109 --------------------------------------
172110 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
172111
172112 --
172113
172114 --
172115 OPEN header_cur;
172116 --
172117 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
172118 trace
172119 (p_msg => 'SQL - FETCH header_cur'
172120 ,p_level => C_LEVEL_STATEMENT
172121 ,p_module => l_log_module);
172122 END IF;
172123 --
172124 LOOP
172125 FETCH header_cur BULK COLLECT INTO
172126 l_array_entity_id
172127 , l_array_legal_entity_id
172128 , l_array_entity_code
172129 , l_array_transaction_num
172130 , l_array_event_id
172131 , l_array_class_code
172132 , l_array_event_type
172133 , l_array_event_number
172134 , l_array_event_date
172135 , l_array_transaction_date
172136 , l_array_reference_num_1
172137 , l_array_reference_num_2
172138 , l_array_reference_num_3
172139 , l_array_reference_num_4
172140 , l_array_reference_char_1
172141 , l_array_reference_char_2
172142 , l_array_reference_char_3
172143 , l_array_reference_char_4
172144 , l_array_reference_date_1
172145 , l_array_reference_date_2
172146 , l_array_reference_date_3
172147 , l_array_reference_date_4
172148 , l_array_event_created_by
172149 , l_array_budgetary_control_flag
172150 , l_array_source_12
172151 , l_array_source_12_meaning
172152 , l_array_source_38
172153 , l_array_source_38_meaning
172154 LIMIT l_rows;
172155 --
172156 IF (C_LEVEL_EVENT >= g_log_level) THEN
172157 trace
172158 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
172159 ,p_level => C_LEVEL_EVENT
172160 ,p_module => l_log_module);
172161 END IF;
172162 --
172163 EXIT WHEN l_array_entity_id.COUNT = 0;
172164
172165 -- initialize arrays
172166 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
172167 XLA_AE_LINES_PKG.g_rec_lines := NULL;
172168
172169 --
172170 -- Bug 4458708
172171 --
172172 XLA_AE_LINES_PKG.g_LineNumber := 0;
172173
172174
172175 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
172176 g_last_hdr_idx := l_array_event_id.LAST;
172177 --
172178 -- loop for the headers. Each iteration is for each header extract row
172179 -- fetched in header cursor
172180 --
172181 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
172182
172183 --
172184 -- set event info as cache for other routines to refer event attributes
172185 --
172186 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
172187 (p_application_id => p_application_id
172188 ,p_primary_ledger_id => p_primary_ledger_id
172189 ,p_base_ledger_id => p_base_ledger_id
172190 ,p_target_ledger_id => p_target_ledger_id
172191 ,p_entity_id => l_array_entity_id(hdr_idx)
172192 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
172193 ,p_entity_code => l_array_entity_code(hdr_idx)
172194 ,p_transaction_num => l_array_transaction_num(hdr_idx)
172195 ,p_event_id => l_array_event_id(hdr_idx)
172196 ,p_event_class_code => l_array_class_code(hdr_idx)
172197 ,p_event_type_code => l_array_event_type(hdr_idx)
172198 ,p_event_number => l_array_event_number(hdr_idx)
172199 ,p_event_date => l_array_event_date(hdr_idx)
172200 ,p_transaction_date => l_array_transaction_date(hdr_idx)
172201 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
172202 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
172203 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
172204 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
172205 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
172206 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
172207 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
172208 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
172209 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
172210 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
172211 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
172212 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
172213 ,p_event_created_by => l_array_event_created_by(hdr_idx)
172214 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
172215
172216 --
172217 -- set the status of entry to C_VALID (0)
172218 --
172219 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
172220
172221 --
172222 -- initialize a row for ae header
172223 --
172224 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
172225
172226 l_event_id := l_array_event_id(hdr_idx);
172227
172228 --
172229 -- storing the hdr_idx for event. May be used by line cursor.
172230 --
172231 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
172232
172233 --
172234 -- store sources from header extract. This can be improved to
172235 -- store only those sources from header extract that may be used in lines
172236 --
172237
172238 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
172239 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
172240 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
172241 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
172242
172243 --
172244 -- initilaize the status of ae headers for diffrent balance types
172245 -- the status is initialised to C_NOT_CREATED (2)
172246 --
172247 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
172248 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
172249 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
172250
172251 --
172252 -- call api to validate and store accounting attributes for header
172253 --
172254
172255 ------------------------------------------------------------
172256 -- Accrual Reversal : to get date for Standard Source (NONE)
172257 ------------------------------------------------------------
172258 l_acc_rev_gl_date_source := NULL;
172259
172260 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
172261 l_rec_acct_attrs.array_date_value(1) :=
172262 xla_ae_sources_pkg.GetSystemSourceDate(
172263 p_source_code => 'XLA_REFERENCE_DATE_1'
172264 , p_source_type_code => 'Y'
172265 , p_source_application_id => 602
172266 );
172267 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_TRANSFER_FLAG';
172268 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
172269
172270
172271 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
172272
172273 XLA_AE_HEADER_PKG.SetJeCategoryName;
172274
172275 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
172276 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
172277 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
172278 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
172279 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
172280
172281
172282 -- No header level analytical criteria
172283
172284 --
172285 --accounting attribute enhancement, bug 3612931
172286 --
172287 l_trx_reversal_source := SUBSTR(NULL, 1,30);
172288
172289 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
172290 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
172291
172292 xla_accounting_err_pkg.build_message
172293 (p_appli_s_name => 'XLA'
172294 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
172295 ,p_token_1 => 'ACCT_ATTR_NAME'
172296 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
172297 ,p_token_2 => 'PRODUCT_NAME'
172298 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
172299 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
172300 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
172301 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
172302
172303 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
172304 --
172305 -- following sets the accounting attributes needed to reverse
172306 -- accounting for a distributeion
172307 --
172308 xla_ae_lines_pkg.SetTrxReversalAttrs
172309 (p_event_id => l_event_id
172310 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
172311 ,p_trx_reversal_source => l_trx_reversal_source);
172312
172313 END IF;
172314
172315
172316 ----------------------------------------------------------------
172317 -- 4262811 - update the header statuses to invalid in need be
172318 ----------------------------------------------------------------
172319 --
172320 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
172321
172322
172323 -----------------------------------------------
172324 -- No accrual reversal for the event class/type
172325 -----------------------------------------------
172326 ----------------------------------------------------------------
172327
172328 --
172329 -- this ends the header loop iteration for one bulk fetch
172330 --
172331 END LOOP;
172332
172333 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
172334 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
172335
172336 --
172337 -- insert dummy rows into lines gt table that were created due to
172338 -- transaction reversals
172339 --
172340 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
172341 l_result := XLA_AE_LINES_PKG.InsertLines;
172342 END IF;
172343
172344 --
172345 -- reset the temp_line_num for each set of events fetched from header
172346 -- cursor rather than doing it for each new event in line cursor
172347 -- Bug 3939231
172348 --
172349 xla_ae_lines_pkg.g_temp_line_num := 0;
172350
172351
172352
172353 --
172354 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
172355 --
172356 --
172357 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
172358
172359 trace
172360 (p_msg => 'SQL - FETCH line_cur'
172361 ,p_level => C_LEVEL_STATEMENT
172362 ,p_module => l_log_module);
172363
172364 END IF;
172365 --
172366 --
172367 LOOP
172368 --
172369 FETCH line_cur BULK COLLECT INTO
172370 l_array_entity_id
172371 , l_array_legal_entity_id
172372 , l_array_entity_code
172373 , l_array_transaction_num
172374 , l_array_event_id
172375 , l_array_class_code
172376 , l_array_event_type
172377 , l_array_event_number
172378 , l_array_event_date
172379 , l_array_transaction_date
172380 , l_array_reference_num_1
172381 , l_array_reference_num_2
172382 , l_array_reference_num_3
172383 , l_array_reference_num_4
172384 , l_array_reference_char_1
172385 , l_array_reference_char_2
172386 , l_array_reference_char_3
172387 , l_array_reference_char_4
172388 , l_array_reference_date_1
172389 , l_array_reference_date_2
172390 , l_array_reference_date_3
172391 , l_array_reference_date_4
172392 , l_array_event_created_by
172393 , l_array_budgetary_control_flag
172394 , l_array_extract_line_num
172395 , l_array_source_4
172396 , l_array_source_11
172397 , l_array_source_15
172398 , l_array_source_18
172399 , l_array_source_19
172400 , l_array_source_20
172401 , l_array_source_21
172402 , l_array_source_22
172403 , l_array_source_24
172404 LIMIT l_rows;
172405
172406 --
172407 IF (C_LEVEL_EVENT >= g_log_level) THEN
172408 trace
172409 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
172410 ,p_level => C_LEVEL_EVENT
172411 ,p_module => l_log_module);
172412 END IF;
172413 --
172414 EXIT WHEN l_array_entity_id.count = 0;
172415
172416 XLA_AE_LINES_PKG.g_rec_lines := null;
172417
172418 --
172419 -- Bug 4458708
172420 --
172421 XLA_AE_LINES_PKG.g_LineNumber := 0;
172422 --
172423 --
172424
172425 FOR Idx IN 1..l_array_event_id.count LOOP
172426 --
172427 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
172428 --
172429 l_event_id := l_array_event_id(idx); -- 5648433
172430
172431 --
172432 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
172433 --
172434
172435 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
172436 (g_array_event(l_event_id).array_value_num('header_index'))
172437 ,'N'
172438 ) <> 'Y'
172439 THEN
172440 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
172441 trace
172442 (p_msg => 'Trancaction revesal option is not Y '
172443 ,p_level => C_LEVEL_STATEMENT
172444 ,p_module => l_log_module);
172445 END IF;
172446
172447 --
172448 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
172449 --
172450 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
172451 --
172452 -- set event info as cache for other routines to refer event attributes
172453 --
172454
172455 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
172456 l_previous_event_id := l_event_id;
172457
172458 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
172459 (p_application_id => p_application_id
172460 ,p_primary_ledger_id => p_primary_ledger_id
172461 ,p_base_ledger_id => p_base_ledger_id
172462 ,p_target_ledger_id => p_target_ledger_id
172463 ,p_entity_id => l_array_entity_id(Idx)
172464 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
172465 ,p_entity_code => l_array_entity_code(Idx)
172466 ,p_transaction_num => l_array_transaction_num(Idx)
172467 ,p_event_id => l_array_event_id(Idx)
172468 ,p_event_class_code => l_array_class_code(Idx)
172469 ,p_event_type_code => l_array_event_type(Idx)
172470 ,p_event_number => l_array_event_number(Idx)
172471 ,p_event_date => l_array_event_date(Idx)
172472 ,p_transaction_date => l_array_transaction_date(Idx)
172473 ,p_reference_num_1 => l_array_reference_num_1(Idx)
172474 ,p_reference_num_2 => l_array_reference_num_2(Idx)
172475 ,p_reference_num_3 => l_array_reference_num_3(Idx)
172476 ,p_reference_num_4 => l_array_reference_num_4(Idx)
172477 ,p_reference_char_1 => l_array_reference_char_1(Idx)
172478 ,p_reference_char_2 => l_array_reference_char_2(Idx)
172479 ,p_reference_char_3 => l_array_reference_char_3(Idx)
172480 ,p_reference_char_4 => l_array_reference_char_4(Idx)
172481 ,p_reference_date_1 => l_array_reference_date_1(Idx)
172482 ,p_reference_date_2 => l_array_reference_date_2(Idx)
172483 ,p_reference_date_3 => l_array_reference_date_3(Idx)
172484 ,p_reference_date_4 => l_array_reference_date_4(Idx)
172485 ,p_event_created_by => l_array_event_created_by(Idx)
172486 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
172487 --
172488 END IF;
172489
172490
172491
172492 --
172493 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
172494
172495 l_acct_reversal_source := SUBSTR(NULL, 1,30);
172496
172497 IF l_continue_with_lines THEN
172498 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
172499 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
172500
172501 xla_accounting_err_pkg.build_message
172502 (p_appli_s_name => 'XLA'
172503 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
172504 ,p_token_1 => 'LINE_NUMBER'
172505 ,p_value_1 => l_array_extract_line_num(Idx)
172506 ,p_token_2 => 'PRODUCT_NAME'
172507 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
172508 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
172509 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
172510 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
172511
172512 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
172513 --
172514 -- following sets the accounting attributes needed to reverse
172515 -- accounting for a distributeion
172516 --
172517
172518 --
172519 -- 5217187
172520 --
172521 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
172522 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
172523 g_array_event(l_event_id).array_value_num('header_index'));
172524 --
172525 --
172526
172527 -- No reversal code generated
172528
172529 xla_ae_lines_pkg.SetAcctReversalAttrs
172530 (p_event_id => l_event_id
172531 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
172532 ,p_calculate_acctd_flag => l_calculate_acctd_flag
172533 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
172534 END IF;
172535
172536 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
172537 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
172538
172539 --
172540 AcctLineType_24 (
172541 p_application_id => p_application_id
172542 ,p_event_id => l_event_id
172543 ,p_calculate_acctd_flag => l_calculate_acctd_flag
172544 ,p_calculate_g_l_flag => l_calculate_g_l_flag
172545 ,p_actual_flag => l_actual_flag
172546 ,p_balance_type_code => l_balance_type_code
172547 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
172548
172549 , p_source_4 => l_array_source_4(Idx)
172550 , p_source_11 => l_array_source_11(Idx)
172551 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
172552 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
172553 , p_source_15 => l_array_source_15(Idx)
172554 , p_source_18 => l_array_source_18(Idx)
172555 , p_source_19 => l_array_source_19(Idx)
172556 , p_source_20 => l_array_source_20(Idx)
172557 , p_source_21 => l_array_source_21(Idx)
172558 , p_source_22 => l_array_source_22(Idx)
172559 , p_source_24 => l_array_source_24(Idx)
172560 );
172561 If(l_balance_type_code = 'A') THEN
172562 l_actual_gain_loss_ref := l_gain_or_loss_ref;
172563 END IF;
172564
172565 --
172566
172567
172568 --
172569 AcctLineType_25 (
172570 p_application_id => p_application_id
172571 ,p_event_id => l_event_id
172572 ,p_calculate_acctd_flag => l_calculate_acctd_flag
172573 ,p_calculate_g_l_flag => l_calculate_g_l_flag
172574 ,p_actual_flag => l_actual_flag
172575 ,p_balance_type_code => l_balance_type_code
172576 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
172577
172578 , p_source_4 => l_array_source_4(Idx)
172579 , p_source_11 => l_array_source_11(Idx)
172580 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
172581 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
172582 , p_source_15 => l_array_source_15(Idx)
172583 , p_source_18 => l_array_source_18(Idx)
172584 , p_source_19 => l_array_source_19(Idx)
172585 , p_source_20 => l_array_source_20(Idx)
172586 , p_source_21 => l_array_source_21(Idx)
172587 , p_source_22 => l_array_source_22(Idx)
172588 , p_source_24 => l_array_source_24(Idx)
172589 );
172590 If(l_balance_type_code = 'A') THEN
172591 l_actual_gain_loss_ref := l_gain_or_loss_ref;
172592 END IF;
172593
172594 --
172595
172596
172597 --
172598 AcctLineType_47 (
172599 p_application_id => p_application_id
172600 ,p_event_id => l_event_id
172601 ,p_calculate_acctd_flag => l_calculate_acctd_flag
172602 ,p_calculate_g_l_flag => l_calculate_g_l_flag
172603 ,p_actual_flag => l_actual_flag
172604 ,p_balance_type_code => l_balance_type_code
172605 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
172606
172607 , p_source_4 => l_array_source_4(Idx)
172608 , p_source_11 => l_array_source_11(Idx)
172609 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
172610 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
172611 , p_source_15 => l_array_source_15(Idx)
172612 , p_source_18 => l_array_source_18(Idx)
172613 , p_source_19 => l_array_source_19(Idx)
172614 , p_source_20 => l_array_source_20(Idx)
172615 , p_source_21 => l_array_source_21(Idx)
172616 , p_source_22 => l_array_source_22(Idx)
172617 , p_source_24 => l_array_source_24(Idx)
172618 );
172619 If(l_balance_type_code = 'A') THEN
172620 l_actual_gain_loss_ref := l_gain_or_loss_ref;
172621 END IF;
172622
172623 --
172624
172625
172626 --
172627 AcctLineType_118 (
172628 p_application_id => p_application_id
172629 ,p_event_id => l_event_id
172630 ,p_calculate_acctd_flag => l_calculate_acctd_flag
172631 ,p_calculate_g_l_flag => l_calculate_g_l_flag
172632 ,p_actual_flag => l_actual_flag
172633 ,p_balance_type_code => l_balance_type_code
172634 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
172635
172636 , p_source_4 => l_array_source_4(Idx)
172637 , p_source_11 => l_array_source_11(Idx)
172638 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
172639 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
172640 , p_source_15 => l_array_source_15(Idx)
172641 , p_source_18 => l_array_source_18(Idx)
172642 , p_source_19 => l_array_source_19(Idx)
172643 , p_source_20 => l_array_source_20(Idx)
172644 , p_source_21 => l_array_source_21(Idx)
172645 , p_source_22 => l_array_source_22(Idx)
172646 , p_source_24 => l_array_source_24(Idx)
172647 );
172648 If(l_balance_type_code = 'A') THEN
172649 l_actual_gain_loss_ref := l_gain_or_loss_ref;
172650 END IF;
172651
172652 --
172653
172654
172655 --
172656 AcctLineType_135 (
172657 p_application_id => p_application_id
172658 ,p_event_id => l_event_id
172659 ,p_calculate_acctd_flag => l_calculate_acctd_flag
172660 ,p_calculate_g_l_flag => l_calculate_g_l_flag
172661 ,p_actual_flag => l_actual_flag
172662 ,p_balance_type_code => l_balance_type_code
172663 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
172664
172665 , p_source_4 => l_array_source_4(Idx)
172666 , p_source_11 => l_array_source_11(Idx)
172667 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
172668 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
172669 , p_source_15 => l_array_source_15(Idx)
172670 , p_source_18 => l_array_source_18(Idx)
172671 , p_source_19 => l_array_source_19(Idx)
172672 , p_source_20 => l_array_source_20(Idx)
172673 , p_source_21 => l_array_source_21(Idx)
172674 , p_source_22 => l_array_source_22(Idx)
172675 , p_source_24 => l_array_source_24(Idx)
172676 );
172677 If(l_balance_type_code = 'A') THEN
172678 l_actual_gain_loss_ref := l_gain_or_loss_ref;
172679 END IF;
172680
172681 --
172682
172683 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
172684 -- or secondary ledger that has different currency with primary
172685 -- or alc that is calculated by sla
172686 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
172687 (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'))
172688
172689 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
172690 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
172691 AND (l_actual_flag = 'A')) THEN
172692 XLA_AE_LINES_PKG.CreateGainOrLossLines(
172693 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
172694 ,p_application_id => p_application_id
172695 ,p_amb_context_code => 'DEFAULT'
172696 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
172697 ,p_event_class_code => C_EVENT_CLASS_CODE
172698 ,p_event_type_code => C_EVENT_TYPE_CODE
172699
172700 ,p_gain_ccid => -1
172701 ,p_loss_ccid => -1
172702
172703 ,p_actual_flag => l_actual_flag
172704 ,p_enc_flag => null
172705 ,p_actual_g_l_ref => l_actual_gain_loss_ref
172706 ,p_enc_g_l_ref => null
172707 );
172708 END IF;
172709 END IF;
172710 END IF;
172711
172712 ELSE
172713 --
172714 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
172715 --
172716 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
172717 trace
172718 (p_msg => 'Trancaction revesal option is Y'
172719 ,p_level => C_LEVEL_STATEMENT
172720 ,p_module => l_log_module);
172721 END IF;
172722 END IF;
172723
172724 END LOOP;
172725 l_result := XLA_AE_LINES_PKG.InsertLines ;
172726 end loop;
172727 close line_cur;
172728
172729
172730 --
172731 -- insert headers into xla_ae_headers_gt table
172732 --
172733 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
172734
172735 -- insert into errors table here.
172736
172737 END LOOP;
172738
172739 --
172740 -- 4865292
172741 --
172742 -- Compare g_hdr_extract_count with event count in
172743 -- CreateHeadersAndLines.
172744 --
172745 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
172746
172747 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
172748 trace (p_msg => '# rows extracted from header extract objects '
172749 || ' (running total): '
172750 || g_hdr_extract_count
172751 ,p_level => C_LEVEL_STATEMENT
172752 ,p_module => l_log_module);
172753 END IF;
172754
172755 CLOSE header_cur;
172756 --
172757
172758 --
172759 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
172760 trace
172761 (p_msg => 'END of EventType_275'
172762 ,p_level => C_LEVEL_PROCEDURE
172763 ,p_module => l_log_module);
172764 END IF;
172765 --
172766 RETURN l_result;
172767 EXCEPTION
172768 WHEN xla_exceptions_pkg.application_exception THEN
172769
172770 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
172771
172772
172773 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
172774
172775 RAISE;
172776
172777 WHEN NO_DATA_FOUND THEN
172778
172779 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
172780 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
172781
172782 FOR header_record IN header_cur
172783 LOOP
172784 l_array_header_events(header_record.event_id) := header_record.event_id;
172785 END LOOP;
172786
172787 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
172788 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
172789
172790 fnd_file.put_line(fnd_file.LOG, ' ');
172791 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
172792 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
172793 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
172794
172795 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
172796 LOOP
172797 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
172798 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
172799 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
172800 END IF;
172801 END LOOP;
172802
172803 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
172804 fnd_file.put_line(fnd_file.LOG, ' ');
172805
172806
172807 xla_exceptions_pkg.raise_message
172808 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventType_275');
172809
172810
172811 WHEN OTHERS THEN
172812 xla_exceptions_pkg.raise_message
172813 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventType_275');
172814 END EventType_275;
172815 --
172816
172817 ---------------------------------------
172818 --
172819 -- PRIVATE PROCEDURE
172820 -- insert_sources_276
172821 --
172822 ----------------------------------------
172823 --
172824 PROCEDURE insert_sources_276(
172825 p_target_ledger_id IN NUMBER
172826 , p_language IN VARCHAR2
172827 , p_sla_ledger_id IN NUMBER
172828 , p_pad_start_date IN DATE
172829 , p_pad_end_date IN DATE
172830 )
172831 IS
172832
172833 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'UCG_TXFR';
172834 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'USER_DEFINE';
172835 p_apps_owner VARCHAR2(30);
172836 l_log_module VARCHAR2(240);
172837 BEGIN
172838 IF g_log_enabled THEN
172839 l_log_module := C_DEFAULT_MODULE||'.insert_sources_276';
172840 END IF;
172841 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
172842
172843 trace
172844 (p_msg => 'BEGIN of insert_sources_276'
172845 ,p_level => C_LEVEL_PROCEDURE
172846 ,p_module => l_log_module);
172847
172848 END IF;
172849
172850 -- select APPS owner
172851 SELECT oracle_username
172852 INTO p_apps_owner
172853 FROM fnd_oracle_userid
172854 WHERE read_only_flag = 'U'
172855 ;
172856
172857 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
172858 trace
172859 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
172860 ' - p_language = '||p_language||
172861 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
172862 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
172863 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
172864 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
172865 ,p_level => C_LEVEL_STATEMENT
172866 ,p_module => l_log_module);
172867 END IF;
172868
172869
172870 --
172871 INSERT INTO xla_diag_sources --hdr1
172872 (
172873 event_id
172874 , ledger_id
172875 , sla_ledger_id
172876 , description_language
172877 , object_name
172878 , object_type_code
172879 , line_number
172880 , source_application_id
172881 , source_type_code
172882 , source_code
172883 , source_value
172884 , source_meaning
172885 , created_by
172886 , creation_date
172887 , last_update_date
172888 , last_updated_by
172889 , last_update_login
172890 , program_update_date
172891 , program_application_id
172892 , program_id
172893 , request_id
172894 )
172895 SELECT
172896 event_id
172897 , p_target_ledger_id
172898 , p_sla_ledger_id
172899 , p_language
172900 , object_name
172901 , object_type_code
172902 , line_number
172903 , source_application_id
172904 , source_type_code
172905 , source_code
172906 , SUBSTR(source_value ,1,1996)
172907 , SUBSTR(source_meaning,1,200)
172908 , xla_environment_pkg.g_Usr_Id
172909 , TRUNC(SYSDATE)
172910 , TRUNC(SYSDATE)
172911 , xla_environment_pkg.g_Usr_Id
172912 , xla_environment_pkg.g_Login_Id
172913 , TRUNC(SYSDATE)
172914 , xla_environment_pkg.g_Prog_Appl_Id
172915 , xla_environment_pkg.g_Prog_Id
172916 , xla_environment_pkg.g_Req_Id
172917 FROM (
172918 SELECT xet.event_id event_id
172919 , 0 line_number
172920 , CASE r
172921 WHEN 1 THEN 'CST_XLA_INV_HEADERS_V'
172922 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V'
172923
172924 ELSE null
172925 END object_name
172926 , CASE r
172927 WHEN 1 THEN 'HEADER'
172928 WHEN 2 THEN 'HEADER'
172929
172930 ELSE null
172931 END object_type_code
172932 , CASE r
172933 WHEN 1 THEN '707'
172934 WHEN 2 THEN '707'
172935
172936 ELSE null
172937 END source_application_id
172938 , 'S' source_type_code
172939 , CASE r
172940 WHEN 1 THEN 'DISTRIBUTION_TYPE'
172941 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR'
172942
172943 ELSE null
172944 END source_code
172945 , CASE r
172946 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
172947 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
172948
172949 ELSE null
172950 END source_value
172951 , CASE r
172952 WHEN 1 THEN fvl12.meaning
172953 WHEN 2 THEN fvl38.meaning
172954
172955 ELSE null
172956 END source_meaning
172957 FROM xla_events_gt xet
172958 , CST_XLA_INV_HEADERS_V h1
172959 , fnd_lookup_values fvl12
172960 , fnd_lookup_values fvl38
172961 ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
172962 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
172963 AND xet.event_type_code = C_EVENT_TYPE_CODE
172964 AND h1.event_id = xet.event_id
172965 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
172966 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
172967 AND fvl12.view_application_id(+) = 700
172968 AND fvl12.language(+) = USERENV('LANG')
172969 AND fvl38.lookup_type(+) = 'YES_NO'
172970 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
172971 AND fvl38.view_application_id(+) = 0
172972 AND fvl38.language(+) = USERENV('LANG')
172973
172974 )
172975 ;
172976 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
172977
172978 trace
172979 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
172980 ,p_level => C_LEVEL_STATEMENT
172981 ,p_module => l_log_module);
172982
172983 END IF;
172984 --
172985
172986
172987
172988 --
172989 INSERT INTO xla_diag_sources --line1
172990 (
172991 event_id
172992 , ledger_id
172993 , sla_ledger_id
172994 , description_language
172995 , object_name
172996 , object_type_code
172997 , line_number
172998 , source_application_id
172999 , source_type_code
173000 , source_code
173001 , source_value
173002 , source_meaning
173003 , created_by
173004 , creation_date
173005 , last_update_date
173006 , last_updated_by
173007 , last_update_login
173008 , program_update_date
173009 , program_application_id
173010 , program_id
173011 , request_id
173012 )
173013 SELECT event_id
173014 , p_target_ledger_id
173015 , p_sla_ledger_id
173016 , p_language
173017 , object_name
173018 , object_type_code
173019 , line_number
173020 , source_application_id
173021 , source_type_code
173022 , source_code
173023 , SUBSTR(source_value,1,1996)
173024 , SUBSTR(source_meaning,1,200)
173025 , xla_environment_pkg.g_Usr_Id
173026 , TRUNC(SYSDATE)
173027 , TRUNC(SYSDATE)
173028 , xla_environment_pkg.g_Usr_Id
173029 , xla_environment_pkg.g_Login_Id
173030 , TRUNC(SYSDATE)
173031 , xla_environment_pkg.g_Prog_Appl_Id
173032 , xla_environment_pkg.g_Prog_Id
173033 , xla_environment_pkg.g_Req_Id
173034 FROM (
173035 SELECT xet.event_id event_id
173036 , l2.line_number line_number
173037 , CASE r
173038 WHEN 1 THEN 'CST_XLA_INV_LINES_V'
173039 WHEN 2 THEN 'CST_XLA_INV_LINES_V'
173040 WHEN 3 THEN 'CST_XLA_INV_LINES_V'
173041 WHEN 4 THEN 'CST_XLA_INV_LINES_V'
173042 WHEN 5 THEN 'CST_XLA_INV_LINES_V'
173043 WHEN 6 THEN 'CST_XLA_INV_LINES_V'
173044 WHEN 7 THEN 'CST_XLA_INV_LINES_V'
173045 WHEN 8 THEN 'CST_XLA_INV_LINES_V'
173046 WHEN 9 THEN 'CST_XLA_INV_LINES_V'
173047
173048 ELSE null
173049 END object_name
173050 , CASE r
173051 WHEN 1 THEN 'LINE'
173052 WHEN 2 THEN 'LINE'
173053 WHEN 3 THEN 'LINE'
173054 WHEN 4 THEN 'LINE'
173055 WHEN 5 THEN 'LINE'
173056 WHEN 6 THEN 'LINE'
173057 WHEN 7 THEN 'LINE'
173058 WHEN 8 THEN 'LINE'
173059 WHEN 9 THEN 'LINE'
173060
173061 ELSE null
173062 END object_type_code
173063 , CASE r
173064 WHEN 1 THEN '707'
173065 WHEN 2 THEN '707'
173066 WHEN 3 THEN '707'
173067 WHEN 4 THEN '707'
173068 WHEN 5 THEN '707'
173069 WHEN 6 THEN '707'
173070 WHEN 7 THEN '707'
173071 WHEN 8 THEN '707'
173072 WHEN 9 THEN '707'
173073
173074 ELSE null
173075 END source_application_id
173076 , 'S' source_type_code
173077 , CASE r
173078 WHEN 1 THEN 'CODE_COMBINATION_ID'
173079 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER'
173080 WHEN 3 THEN 'CURRENCY_CODE'
173081 WHEN 4 THEN 'ENTERED_AMOUNT'
173082 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE'
173083 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE'
173084 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE'
173085 WHEN 8 THEN 'ACCOUNTED_AMOUNT'
173086 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE'
173087
173088 ELSE null
173089 END source_code
173090 , CASE r
173091 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
173092 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
173093 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
173094 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
173095 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
173096 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
173097 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
173098 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
173099 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
173100
173101 ELSE null
173102 END source_value
173103 , null source_meaning
173104 FROM xla_events_gt xet
173105 , CST_XLA_INV_LINES_V l2
173106 ,(select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
173107 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
173108 AND xet.event_type_code = C_EVENT_TYPE_CODE
173109 AND l2.event_id = xet.event_id
173110
173111 )
173112 ;
173113 --
173114 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
173115
173116 trace
173117 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
173118 ,p_level => C_LEVEL_STATEMENT
173119 ,p_module => l_log_module);
173120
173121 END IF;
173122
173123
173124 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
173125 trace
173126 (p_msg => 'END of insert_sources_276'
173127 ,p_level => C_LEVEL_PROCEDURE
173128 ,p_module => l_log_module);
173129 END IF;
173130 EXCEPTION
173131 WHEN xla_exceptions_pkg.application_exception THEN
173132 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
173133 trace
173134 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
173135 ,p_level => C_LEVEL_EXCEPTION
173136 ,p_module => l_log_module);
173137 END IF;
173138 RAISE;
173139 WHEN OTHERS THEN
173140 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
173141 trace
173142 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
173143 ,p_level => C_LEVEL_EXCEPTION
173144 ,p_module => l_log_module);
173145 END IF;
173146 xla_exceptions_pkg.raise_message
173147 (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_276');
173148 END insert_sources_276;
173149 --
173150
173151 ---------------------------------------
173152 --
173153 -- PRIVATE FUNCTION
173154 -- EventType_276
173155 --
173156 ----------------------------------------
173157 --
173158 FUNCTION EventType_276
173159 (p_application_id IN NUMBER
173160 ,p_base_ledger_id IN NUMBER
173161 ,p_target_ledger_id IN NUMBER
173162 ,p_language IN VARCHAR2
173163 ,p_currency_code IN VARCHAR2
173164 ,p_sla_ledger_id IN NUMBER
173165 ,p_pad_start_date IN DATE
173166 ,p_pad_end_date IN DATE
173167 ,p_primary_ledger_id IN NUMBER)
173168 RETURN BOOLEAN IS
173169 --
173170 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'UCG_TXFR';
173171 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'USER_DEFINE';
173172
173173 l_calculate_acctd_flag VARCHAR2(1) :='Y';
173174 l_calculate_g_l_flag VARCHAR2(1) :='Y';
173175 --
173176 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
173177 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
173178 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
173179 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
173180 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
173181 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
173182 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
173183 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
173184 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
173185 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
173186 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
173187 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
173188 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
173189 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
173190 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
173191 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
173192 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
173193 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
173194 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
173195 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
173196 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
173197 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
173198 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
173199 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
173200 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
173201 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
173202
173203 l_event_id NUMBER;
173204 l_previous_event_id NUMBER;
173205 l_first_event_id NUMBER;
173206 l_last_event_id NUMBER;
173207
173208 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
173209 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
173210 --
173211 --
173212 l_result BOOLEAN := TRUE;
173213 l_rows NUMBER := 1000;
173214 l_event_type_name VARCHAR2(80) := 'User-defined Cost Group Transfer';
173215 l_event_class_name VARCHAR2(80) := 'User Defined Inventory Transaction Class';
173216 l_description VARCHAR2(4000);
173217 l_transaction_reversal NUMBER;
173218 l_ae_header_id NUMBER;
173219 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
173220 l_log_module VARCHAR2(240);
173221 --
173222 l_acct_reversal_source VARCHAR2(30);
173223 l_trx_reversal_source VARCHAR2(30);
173224
173225 l_continue_with_lines BOOLEAN := TRUE;
173226 --
173227 l_acc_rev_gl_date_source DATE; -- 4262811
173228 --
173229 type t_array_event_id is table of number index by binary_integer;
173230
173231 l_rec_array_event t_rec_array_event;
173232 l_null_rec_array_event t_rec_array_event;
173233 l_array_ae_header_id xla_number_array_type;
173234 l_actual_flag VARCHAR2(1) := NULL;
173235 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
173236 l_balance_type_code VARCHAR2(1) :=NULL;
173237 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
173238
173239 --
173240 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
173241 --
173242
173243 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
173244 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
173245
173246 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
173247 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
173248 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
173249 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
173250 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
173251 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
173252 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
173253 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
173254 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
173255
173256 l_array_source_12 t_array_source_12;
173257 l_array_source_12_meaning t_array_lookup_meaning;
173258 l_array_source_38 t_array_source_38;
173259 l_array_source_38_meaning t_array_lookup_meaning;
173260
173261 l_array_source_4 t_array_source_4;
173262 l_array_source_11 t_array_source_11;
173263 l_array_source_15 t_array_source_15;
173264 l_array_source_18 t_array_source_18;
173265 l_array_source_19 t_array_source_19;
173266 l_array_source_20 t_array_source_20;
173267 l_array_source_21 t_array_source_21;
173268 l_array_source_22 t_array_source_22;
173269 l_array_source_24 t_array_source_24;
173270
173271 --
173272 CURSOR header_cur
173273 IS
173274 SELECT /*+ leading(xet) cardinality(xet,1) */
173275 -- Event Type Code: UCG_TXFR
173276 -- Event Class Code: USER_DEFINE
173277 xet.entity_id
173278 , xet.legal_entity_id
173279 , xet.entity_code
173280 , xet.transaction_number
173281 , xet.event_id
173282 , xet.event_class_code
173283 , xet.event_type_code
173284 , xet.event_number
173285 , xet.event_date
173286 , xet.transaction_date
173287 , xet.reference_num_1
173288 , xet.reference_num_2
173289 , xet.reference_num_3
173290 , xet.reference_num_4
173291 , xet.reference_char_1
173292 , xet.reference_char_2
173293 , xet.reference_char_3
173294 , xet.reference_char_4
173295 , xet.reference_date_1
173296 , xet.reference_date_2
173297 , xet.reference_date_3
173298 , xet.reference_date_4
173299 , xet.event_created_by
173300 , xet.budgetary_control_flag
173301 , h1.DISTRIBUTION_TYPE source_12
173302 , fvl12.meaning source_12_meaning
173303 , h1.TRANSFER_TO_GL_INDICATOR source_38
173304 , fvl38.meaning source_38_meaning
173305 FROM xla_events_gt xet
173306 , CST_XLA_INV_HEADERS_V h1
173307 , fnd_lookup_values fvl12
173308 , fnd_lookup_values fvl38
173309 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
173310 and xet.event_type_code = C_EVENT_TYPE_CODE
173311 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
173312 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
173313 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
173314 AND fvl12.view_application_id(+) = 700
173315 AND fvl12.language(+) = USERENV('LANG')
173316 AND fvl38.lookup_type(+) = 'YES_NO'
173317 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
173318 AND fvl38.view_application_id(+) = 0
173319 AND fvl38.language(+) = USERENV('LANG')
173320
173321 ORDER BY event_id
173322 ;
173323
173324
173325 --
173326 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
173327 IS
173328 SELECT /*+ leading(xet) cardinality(xet,1) */
173329 -- Event Type Code: UCG_TXFR
173330 -- Event Class Code: USER_DEFINE
173331 xet.entity_id
173332 ,xet.legal_entity_id
173333 ,xet.entity_code
173334 ,xet.transaction_number
173335 ,xet.event_id
173336 ,xet.event_class_code
173337 ,xet.event_type_code
173338 ,xet.event_number
173339 ,xet.event_date
173340 ,xet.transaction_date
173341 ,xet.reference_num_1
173342 ,xet.reference_num_2
173343 ,xet.reference_num_3
173344 ,xet.reference_num_4
173345 ,xet.reference_char_1
173346 ,xet.reference_char_2
173347 ,xet.reference_char_3
173348 ,xet.reference_char_4
173349 ,xet.reference_date_1
173350 ,xet.reference_date_2
173351 ,xet.reference_date_3
173352 ,xet.reference_date_4
173353 ,xet.event_created_by
173354 ,xet.budgetary_control_flag , l2.LINE_NUMBER
173355 , l2.CODE_COMBINATION_ID source_4
173356 , l2.DISTRIBUTION_IDENTIFIER source_11
173357 , l2.CURRENCY_CODE source_15
173358 , l2.ENTERED_AMOUNT source_18
173359 , l2.CURRENCY_CONVERSION_DATE source_19
173360 , l2.CURRENCY_CONVERSION_RATE source_20
173361 , l2.CURRENCY_CONVERSION_TYPE source_21
173362 , l2.ACCOUNTED_AMOUNT source_22
173363 , l2.ACCOUNTING_LINE_TYPE_CODE source_24
173364 FROM xla_events_gt xet
173365 , CST_XLA_INV_LINES_V l2
173366 WHERE xet.event_id between x_first_event_id and x_last_event_id
173367 and xet.event_date between p_pad_start_date and p_pad_end_date
173368 and xet.event_type_code = C_EVENT_TYPE_CODE
173369 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
173370 ;
173371
173372 --
173373 BEGIN
173374 IF g_log_enabled THEN
173375 l_log_module := C_DEFAULT_MODULE||'.EventType_276';
173376 END IF;
173377 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
173378 trace
173379 (p_msg => 'BEGIN of EventType_276'
173380 ,p_level => C_LEVEL_PROCEDURE
173381 ,p_module => l_log_module);
173382 END IF;
173383
173384 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
173385 trace
173386 (p_msg => 'p_application_id = '||p_application_id||
173387 ' - p_base_ledger_id = '||p_base_ledger_id||
173388 ' - p_target_ledger_id = '||p_target_ledger_id||
173389 ' - p_language = '||p_language||
173390 ' - p_currency_code = '||p_currency_code||
173391 ' - p_sla_ledger_id = '||p_sla_ledger_id
173392 ,p_level => C_LEVEL_STATEMENT
173393 ,p_module => l_log_module);
173394 END IF;
173395 --
173396 -- initialze arrays
173397 --
173398 g_array_event.DELETE;
173399 l_rec_array_event := l_null_rec_array_event;
173400 --
173401 --------------------------------------
173402 -- 4262811 Initialze MPA Line Number
173403 --------------------------------------
173404 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
173405
173406 --
173407
173408 --
173409 OPEN header_cur;
173410 --
173411 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
173412 trace
173413 (p_msg => 'SQL - FETCH header_cur'
173414 ,p_level => C_LEVEL_STATEMENT
173415 ,p_module => l_log_module);
173416 END IF;
173417 --
173418 LOOP
173419 FETCH header_cur BULK COLLECT INTO
173420 l_array_entity_id
173421 , l_array_legal_entity_id
173422 , l_array_entity_code
173423 , l_array_transaction_num
173424 , l_array_event_id
173425 , l_array_class_code
173426 , l_array_event_type
173427 , l_array_event_number
173428 , l_array_event_date
173429 , l_array_transaction_date
173430 , l_array_reference_num_1
173431 , l_array_reference_num_2
173432 , l_array_reference_num_3
173433 , l_array_reference_num_4
173434 , l_array_reference_char_1
173435 , l_array_reference_char_2
173436 , l_array_reference_char_3
173437 , l_array_reference_char_4
173438 , l_array_reference_date_1
173439 , l_array_reference_date_2
173440 , l_array_reference_date_3
173441 , l_array_reference_date_4
173442 , l_array_event_created_by
173443 , l_array_budgetary_control_flag
173444 , l_array_source_12
173445 , l_array_source_12_meaning
173446 , l_array_source_38
173447 , l_array_source_38_meaning
173448 LIMIT l_rows;
173449 --
173450 IF (C_LEVEL_EVENT >= g_log_level) THEN
173451 trace
173452 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
173453 ,p_level => C_LEVEL_EVENT
173454 ,p_module => l_log_module);
173455 END IF;
173456 --
173457 EXIT WHEN l_array_entity_id.COUNT = 0;
173458
173459 -- initialize arrays
173460 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
173461 XLA_AE_LINES_PKG.g_rec_lines := NULL;
173462
173463 --
173464 -- Bug 4458708
173465 --
173466 XLA_AE_LINES_PKG.g_LineNumber := 0;
173467
173468
173469 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
173470 g_last_hdr_idx := l_array_event_id.LAST;
173471 --
173472 -- loop for the headers. Each iteration is for each header extract row
173473 -- fetched in header cursor
173474 --
173475 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
173476
173477 --
173478 -- set event info as cache for other routines to refer event attributes
173479 --
173480 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
173481 (p_application_id => p_application_id
173482 ,p_primary_ledger_id => p_primary_ledger_id
173483 ,p_base_ledger_id => p_base_ledger_id
173484 ,p_target_ledger_id => p_target_ledger_id
173485 ,p_entity_id => l_array_entity_id(hdr_idx)
173486 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
173487 ,p_entity_code => l_array_entity_code(hdr_idx)
173488 ,p_transaction_num => l_array_transaction_num(hdr_idx)
173489 ,p_event_id => l_array_event_id(hdr_idx)
173490 ,p_event_class_code => l_array_class_code(hdr_idx)
173491 ,p_event_type_code => l_array_event_type(hdr_idx)
173492 ,p_event_number => l_array_event_number(hdr_idx)
173493 ,p_event_date => l_array_event_date(hdr_idx)
173494 ,p_transaction_date => l_array_transaction_date(hdr_idx)
173495 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
173496 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
173497 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
173498 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
173499 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
173500 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
173501 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
173502 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
173503 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
173504 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
173505 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
173506 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
173507 ,p_event_created_by => l_array_event_created_by(hdr_idx)
173508 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
173509
173510 --
173511 -- set the status of entry to C_VALID (0)
173512 --
173513 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
173514
173515 --
173516 -- initialize a row for ae header
173517 --
173518 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
173519
173520 l_event_id := l_array_event_id(hdr_idx);
173521
173522 --
173523 -- storing the hdr_idx for event. May be used by line cursor.
173524 --
173525 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
173526
173527 --
173528 -- store sources from header extract. This can be improved to
173529 -- store only those sources from header extract that may be used in lines
173530 --
173531
173532 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
173533 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
173534 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
173535 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
173536
173537 --
173538 -- initilaize the status of ae headers for diffrent balance types
173539 -- the status is initialised to C_NOT_CREATED (2)
173540 --
173541 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
173542 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
173543 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
173544
173545 --
173546 -- call api to validate and store accounting attributes for header
173547 --
173548
173549 ------------------------------------------------------------
173550 -- Accrual Reversal : to get date for Standard Source (NONE)
173551 ------------------------------------------------------------
173552 l_acc_rev_gl_date_source := NULL;
173553
173554 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
173555 l_rec_acct_attrs.array_date_value(1) :=
173556 xla_ae_sources_pkg.GetSystemSourceDate(
173557 p_source_code => 'XLA_REFERENCE_DATE_1'
173558 , p_source_type_code => 'Y'
173559 , p_source_application_id => 602
173560 );
173561 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_TRANSFER_FLAG';
173562 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
173563
173564
173565 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
173566
173567 XLA_AE_HEADER_PKG.SetJeCategoryName;
173568
173569 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
173570 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
173571 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
173572 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
173573 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
173574
173575
173576 -- No header level analytical criteria
173577
173578 --
173579 --accounting attribute enhancement, bug 3612931
173580 --
173581 l_trx_reversal_source := SUBSTR(NULL, 1,30);
173582
173583 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
173584 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
173585
173586 xla_accounting_err_pkg.build_message
173587 (p_appli_s_name => 'XLA'
173588 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
173589 ,p_token_1 => 'ACCT_ATTR_NAME'
173590 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
173591 ,p_token_2 => 'PRODUCT_NAME'
173592 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
173593 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
173594 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
173595 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
173596
173597 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
173598 --
173599 -- following sets the accounting attributes needed to reverse
173600 -- accounting for a distributeion
173601 --
173602 xla_ae_lines_pkg.SetTrxReversalAttrs
173603 (p_event_id => l_event_id
173604 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
173605 ,p_trx_reversal_source => l_trx_reversal_source);
173606
173607 END IF;
173608
173609
173610 ----------------------------------------------------------------
173611 -- 4262811 - update the header statuses to invalid in need be
173612 ----------------------------------------------------------------
173613 --
173614 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
173615
173616
173617 -----------------------------------------------
173618 -- No accrual reversal for the event class/type
173619 -----------------------------------------------
173620 ----------------------------------------------------------------
173621
173622 --
173623 -- this ends the header loop iteration for one bulk fetch
173624 --
173625 END LOOP;
173626
173627 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
173628 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
173629
173630 --
173631 -- insert dummy rows into lines gt table that were created due to
173632 -- transaction reversals
173633 --
173634 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
173635 l_result := XLA_AE_LINES_PKG.InsertLines;
173636 END IF;
173637
173638 --
173639 -- reset the temp_line_num for each set of events fetched from header
173640 -- cursor rather than doing it for each new event in line cursor
173641 -- Bug 3939231
173642 --
173643 xla_ae_lines_pkg.g_temp_line_num := 0;
173644
173645
173646
173647 --
173648 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
173649 --
173650 --
173651 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
173652
173653 trace
173654 (p_msg => 'SQL - FETCH line_cur'
173655 ,p_level => C_LEVEL_STATEMENT
173656 ,p_module => l_log_module);
173657
173658 END IF;
173659 --
173660 --
173661 LOOP
173662 --
173663 FETCH line_cur BULK COLLECT INTO
173664 l_array_entity_id
173665 , l_array_legal_entity_id
173666 , l_array_entity_code
173667 , l_array_transaction_num
173668 , l_array_event_id
173669 , l_array_class_code
173670 , l_array_event_type
173671 , l_array_event_number
173672 , l_array_event_date
173673 , l_array_transaction_date
173674 , l_array_reference_num_1
173675 , l_array_reference_num_2
173676 , l_array_reference_num_3
173677 , l_array_reference_num_4
173678 , l_array_reference_char_1
173679 , l_array_reference_char_2
173680 , l_array_reference_char_3
173681 , l_array_reference_char_4
173682 , l_array_reference_date_1
173683 , l_array_reference_date_2
173684 , l_array_reference_date_3
173685 , l_array_reference_date_4
173686 , l_array_event_created_by
173687 , l_array_budgetary_control_flag
173688 , l_array_extract_line_num
173689 , l_array_source_4
173690 , l_array_source_11
173691 , l_array_source_15
173692 , l_array_source_18
173693 , l_array_source_19
173694 , l_array_source_20
173695 , l_array_source_21
173696 , l_array_source_22
173697 , l_array_source_24
173698 LIMIT l_rows;
173699
173700 --
173701 IF (C_LEVEL_EVENT >= g_log_level) THEN
173702 trace
173703 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
173704 ,p_level => C_LEVEL_EVENT
173705 ,p_module => l_log_module);
173706 END IF;
173707 --
173708 EXIT WHEN l_array_entity_id.count = 0;
173709
173710 XLA_AE_LINES_PKG.g_rec_lines := null;
173711
173712 --
173713 -- Bug 4458708
173714 --
173715 XLA_AE_LINES_PKG.g_LineNumber := 0;
173716 --
173717 --
173718
173719 FOR Idx IN 1..l_array_event_id.count LOOP
173720 --
173721 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
173722 --
173723 l_event_id := l_array_event_id(idx); -- 5648433
173724
173725 --
173726 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
173727 --
173728
173729 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
173730 (g_array_event(l_event_id).array_value_num('header_index'))
173731 ,'N'
173732 ) <> 'Y'
173733 THEN
173734 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
173735 trace
173736 (p_msg => 'Trancaction revesal option is not Y '
173737 ,p_level => C_LEVEL_STATEMENT
173738 ,p_module => l_log_module);
173739 END IF;
173740
173741 --
173742 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
173743 --
173744 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
173745 --
173746 -- set event info as cache for other routines to refer event attributes
173747 --
173748
173749 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
173750 l_previous_event_id := l_event_id;
173751
173752 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
173753 (p_application_id => p_application_id
173754 ,p_primary_ledger_id => p_primary_ledger_id
173755 ,p_base_ledger_id => p_base_ledger_id
173756 ,p_target_ledger_id => p_target_ledger_id
173757 ,p_entity_id => l_array_entity_id(Idx)
173758 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
173759 ,p_entity_code => l_array_entity_code(Idx)
173760 ,p_transaction_num => l_array_transaction_num(Idx)
173761 ,p_event_id => l_array_event_id(Idx)
173762 ,p_event_class_code => l_array_class_code(Idx)
173763 ,p_event_type_code => l_array_event_type(Idx)
173764 ,p_event_number => l_array_event_number(Idx)
173765 ,p_event_date => l_array_event_date(Idx)
173766 ,p_transaction_date => l_array_transaction_date(Idx)
173767 ,p_reference_num_1 => l_array_reference_num_1(Idx)
173768 ,p_reference_num_2 => l_array_reference_num_2(Idx)
173769 ,p_reference_num_3 => l_array_reference_num_3(Idx)
173770 ,p_reference_num_4 => l_array_reference_num_4(Idx)
173771 ,p_reference_char_1 => l_array_reference_char_1(Idx)
173772 ,p_reference_char_2 => l_array_reference_char_2(Idx)
173773 ,p_reference_char_3 => l_array_reference_char_3(Idx)
173774 ,p_reference_char_4 => l_array_reference_char_4(Idx)
173775 ,p_reference_date_1 => l_array_reference_date_1(Idx)
173776 ,p_reference_date_2 => l_array_reference_date_2(Idx)
173777 ,p_reference_date_3 => l_array_reference_date_3(Idx)
173778 ,p_reference_date_4 => l_array_reference_date_4(Idx)
173779 ,p_event_created_by => l_array_event_created_by(Idx)
173780 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
173781 --
173782 END IF;
173783
173784
173785
173786 --
173787 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
173788
173789 l_acct_reversal_source := SUBSTR(NULL, 1,30);
173790
173791 IF l_continue_with_lines THEN
173792 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
173793 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
173794
173795 xla_accounting_err_pkg.build_message
173796 (p_appli_s_name => 'XLA'
173797 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
173798 ,p_token_1 => 'LINE_NUMBER'
173799 ,p_value_1 => l_array_extract_line_num(Idx)
173800 ,p_token_2 => 'PRODUCT_NAME'
173801 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
173802 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
173803 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
173804 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
173805
173806 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
173807 --
173808 -- following sets the accounting attributes needed to reverse
173809 -- accounting for a distributeion
173810 --
173811
173812 --
173813 -- 5217187
173814 --
173815 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
173816 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
173817 g_array_event(l_event_id).array_value_num('header_index'));
173818 --
173819 --
173820
173821 -- No reversal code generated
173822
173823 xla_ae_lines_pkg.SetAcctReversalAttrs
173824 (p_event_id => l_event_id
173825 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
173826 ,p_calculate_acctd_flag => l_calculate_acctd_flag
173827 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
173828 END IF;
173829
173830 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
173831 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
173832
173833 --
173834 AcctLineType_41 (
173835 p_application_id => p_application_id
173836 ,p_event_id => l_event_id
173837 ,p_calculate_acctd_flag => l_calculate_acctd_flag
173838 ,p_calculate_g_l_flag => l_calculate_g_l_flag
173839 ,p_actual_flag => l_actual_flag
173840 ,p_balance_type_code => l_balance_type_code
173841 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
173842
173843 , p_source_4 => l_array_source_4(Idx)
173844 , p_source_11 => l_array_source_11(Idx)
173845 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
173846 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
173847 , p_source_15 => l_array_source_15(Idx)
173848 , p_source_18 => l_array_source_18(Idx)
173849 , p_source_19 => l_array_source_19(Idx)
173850 , p_source_20 => l_array_source_20(Idx)
173851 , p_source_21 => l_array_source_21(Idx)
173852 , p_source_22 => l_array_source_22(Idx)
173853 , p_source_24 => l_array_source_24(Idx)
173854 );
173855 If(l_balance_type_code = 'A') THEN
173856 l_actual_gain_loss_ref := l_gain_or_loss_ref;
173857 END IF;
173858
173859 --
173860
173861
173862 --
173863 AcctLineType_131 (
173864 p_application_id => p_application_id
173865 ,p_event_id => l_event_id
173866 ,p_calculate_acctd_flag => l_calculate_acctd_flag
173867 ,p_calculate_g_l_flag => l_calculate_g_l_flag
173868 ,p_actual_flag => l_actual_flag
173869 ,p_balance_type_code => l_balance_type_code
173870 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
173871
173872 , p_source_4 => l_array_source_4(Idx)
173873 , p_source_11 => l_array_source_11(Idx)
173874 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
173875 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
173876 , p_source_15 => l_array_source_15(Idx)
173877 , p_source_18 => l_array_source_18(Idx)
173878 , p_source_19 => l_array_source_19(Idx)
173879 , p_source_20 => l_array_source_20(Idx)
173880 , p_source_21 => l_array_source_21(Idx)
173881 , p_source_22 => l_array_source_22(Idx)
173882 , p_source_24 => l_array_source_24(Idx)
173883 );
173884 If(l_balance_type_code = 'A') THEN
173885 l_actual_gain_loss_ref := l_gain_or_loss_ref;
173886 END IF;
173887
173888 --
173889
173890
173891 --
173892 AcctLineType_173 (
173893 p_application_id => p_application_id
173894 ,p_event_id => l_event_id
173895 ,p_calculate_acctd_flag => l_calculate_acctd_flag
173896 ,p_calculate_g_l_flag => l_calculate_g_l_flag
173897 ,p_actual_flag => l_actual_flag
173898 ,p_balance_type_code => l_balance_type_code
173899 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
173900
173901 , p_source_4 => l_array_source_4(Idx)
173902 , p_source_11 => l_array_source_11(Idx)
173903 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
173904 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
173905 , p_source_15 => l_array_source_15(Idx)
173906 , p_source_18 => l_array_source_18(Idx)
173907 , p_source_19 => l_array_source_19(Idx)
173908 , p_source_20 => l_array_source_20(Idx)
173909 , p_source_21 => l_array_source_21(Idx)
173910 , p_source_22 => l_array_source_22(Idx)
173911 , p_source_24 => l_array_source_24(Idx)
173912 );
173913 If(l_balance_type_code = 'A') THEN
173914 l_actual_gain_loss_ref := l_gain_or_loss_ref;
173915 END IF;
173916
173917 --
173918
173919 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
173920 -- or secondary ledger that has different currency with primary
173921 -- or alc that is calculated by sla
173922 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
173923 (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'))
173924
173925 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
173926 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
173927 AND (l_actual_flag = 'A')) THEN
173928 XLA_AE_LINES_PKG.CreateGainOrLossLines(
173929 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
173930 ,p_application_id => p_application_id
173931 ,p_amb_context_code => 'DEFAULT'
173932 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
173933 ,p_event_class_code => C_EVENT_CLASS_CODE
173934 ,p_event_type_code => C_EVENT_TYPE_CODE
173935
173936 ,p_gain_ccid => -1
173937 ,p_loss_ccid => -1
173938
173939 ,p_actual_flag => l_actual_flag
173940 ,p_enc_flag => null
173941 ,p_actual_g_l_ref => l_actual_gain_loss_ref
173942 ,p_enc_g_l_ref => null
173943 );
173944 END IF;
173945 END IF;
173946 END IF;
173947
173948 ELSE
173949 --
173950 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
173951 --
173952 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
173953 trace
173954 (p_msg => 'Trancaction revesal option is Y'
173955 ,p_level => C_LEVEL_STATEMENT
173956 ,p_module => l_log_module);
173957 END IF;
173958 END IF;
173959
173960 END LOOP;
173961 l_result := XLA_AE_LINES_PKG.InsertLines ;
173962 end loop;
173963 close line_cur;
173964
173965
173966 --
173967 -- insert headers into xla_ae_headers_gt table
173968 --
173969 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
173970
173971 -- insert into errors table here.
173972
173973 END LOOP;
173974
173975 --
173976 -- 4865292
173977 --
173978 -- Compare g_hdr_extract_count with event count in
173979 -- CreateHeadersAndLines.
173980 --
173981 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
173982
173983 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
173984 trace (p_msg => '# rows extracted from header extract objects '
173985 || ' (running total): '
173986 || g_hdr_extract_count
173987 ,p_level => C_LEVEL_STATEMENT
173988 ,p_module => l_log_module);
173989 END IF;
173990
173991 CLOSE header_cur;
173992 --
173993
173994 --
173995 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
173996 trace
173997 (p_msg => 'END of EventType_276'
173998 ,p_level => C_LEVEL_PROCEDURE
173999 ,p_module => l_log_module);
174000 END IF;
174001 --
174002 RETURN l_result;
174003 EXCEPTION
174004 WHEN xla_exceptions_pkg.application_exception THEN
174005
174006 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
174007
174008
174009 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
174010
174011 RAISE;
174012
174013 WHEN NO_DATA_FOUND THEN
174014
174015 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
174016 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
174017
174018 FOR header_record IN header_cur
174019 LOOP
174020 l_array_header_events(header_record.event_id) := header_record.event_id;
174021 END LOOP;
174022
174023 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
174024 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
174025
174026 fnd_file.put_line(fnd_file.LOG, ' ');
174027 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
174028 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
174029 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
174030
174031 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
174032 LOOP
174033 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
174034 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
174035 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
174036 END IF;
174037 END LOOP;
174038
174039 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
174040 fnd_file.put_line(fnd_file.LOG, ' ');
174041
174042
174043 xla_exceptions_pkg.raise_message
174044 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventType_276');
174045
174046
174047 WHEN OTHERS THEN
174048 xla_exceptions_pkg.raise_message
174049 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventType_276');
174050 END EventType_276;
174051 --
174052
174053 ---------------------------------------
174054 --
174055 -- PRIVATE PROCEDURE
174056 -- insert_sources_277
174057 --
174058 ----------------------------------------
174059 --
174060 PROCEDURE insert_sources_277(
174061 p_target_ledger_id IN NUMBER
174062 , p_language IN VARCHAR2
174063 , p_sla_ledger_id IN NUMBER
174064 , p_pad_start_date IN DATE
174065 , p_pad_end_date IN DATE
174066 )
174067 IS
174068
174069 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'UDIR_INTERORG_RCPT';
174070 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'USER_DEFINE';
174071 p_apps_owner VARCHAR2(30);
174072 l_log_module VARCHAR2(240);
174073 BEGIN
174074 IF g_log_enabled THEN
174075 l_log_module := C_DEFAULT_MODULE||'.insert_sources_277';
174076 END IF;
174077 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
174078
174079 trace
174080 (p_msg => 'BEGIN of insert_sources_277'
174081 ,p_level => C_LEVEL_PROCEDURE
174082 ,p_module => l_log_module);
174083
174084 END IF;
174085
174086 -- select APPS owner
174087 SELECT oracle_username
174088 INTO p_apps_owner
174089 FROM fnd_oracle_userid
174090 WHERE read_only_flag = 'U'
174091 ;
174092
174093 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
174094 trace
174095 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
174096 ' - p_language = '||p_language||
174097 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
174098 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
174099 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
174100 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
174101 ,p_level => C_LEVEL_STATEMENT
174102 ,p_module => l_log_module);
174103 END IF;
174104
174105
174106 --
174107 INSERT INTO xla_diag_sources --hdr1
174108 (
174109 event_id
174110 , ledger_id
174111 , sla_ledger_id
174112 , description_language
174113 , object_name
174114 , object_type_code
174115 , line_number
174116 , source_application_id
174117 , source_type_code
174118 , source_code
174119 , source_value
174120 , source_meaning
174121 , created_by
174122 , creation_date
174123 , last_update_date
174124 , last_updated_by
174125 , last_update_login
174126 , program_update_date
174127 , program_application_id
174128 , program_id
174129 , request_id
174130 )
174131 SELECT
174132 event_id
174133 , p_target_ledger_id
174134 , p_sla_ledger_id
174135 , p_language
174136 , object_name
174137 , object_type_code
174138 , line_number
174139 , source_application_id
174140 , source_type_code
174141 , source_code
174142 , SUBSTR(source_value ,1,1996)
174143 , SUBSTR(source_meaning,1,200)
174144 , xla_environment_pkg.g_Usr_Id
174145 , TRUNC(SYSDATE)
174146 , TRUNC(SYSDATE)
174147 , xla_environment_pkg.g_Usr_Id
174148 , xla_environment_pkg.g_Login_Id
174149 , TRUNC(SYSDATE)
174150 , xla_environment_pkg.g_Prog_Appl_Id
174151 , xla_environment_pkg.g_Prog_Id
174152 , xla_environment_pkg.g_Req_Id
174153 FROM (
174154 SELECT xet.event_id event_id
174155 , 0 line_number
174156 , CASE r
174157 WHEN 1 THEN 'CST_XLA_INV_HEADERS_V'
174158 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V'
174159
174160 ELSE null
174161 END object_name
174162 , CASE r
174163 WHEN 1 THEN 'HEADER'
174164 WHEN 2 THEN 'HEADER'
174165
174166 ELSE null
174167 END object_type_code
174168 , CASE r
174169 WHEN 1 THEN '707'
174170 WHEN 2 THEN '707'
174171
174172 ELSE null
174173 END source_application_id
174174 , 'S' source_type_code
174175 , CASE r
174176 WHEN 1 THEN 'DISTRIBUTION_TYPE'
174177 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR'
174178
174179 ELSE null
174180 END source_code
174181 , CASE r
174182 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
174183 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
174184
174185 ELSE null
174186 END source_value
174187 , CASE r
174188 WHEN 1 THEN fvl12.meaning
174189 WHEN 2 THEN fvl38.meaning
174190
174191 ELSE null
174192 END source_meaning
174193 FROM xla_events_gt xet
174194 , CST_XLA_INV_HEADERS_V h1
174195 , fnd_lookup_values fvl12
174196 , fnd_lookup_values fvl38
174197 ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
174198 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
174199 AND xet.event_type_code = C_EVENT_TYPE_CODE
174200 AND h1.event_id = xet.event_id
174201 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
174202 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
174203 AND fvl12.view_application_id(+) = 700
174204 AND fvl12.language(+) = USERENV('LANG')
174205 AND fvl38.lookup_type(+) = 'YES_NO'
174206 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
174207 AND fvl38.view_application_id(+) = 0
174208 AND fvl38.language(+) = USERENV('LANG')
174209
174210 )
174211 ;
174212 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
174213
174214 trace
174215 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
174216 ,p_level => C_LEVEL_STATEMENT
174217 ,p_module => l_log_module);
174218
174219 END IF;
174220 --
174221
174222
174223
174224 --
174225 INSERT INTO xla_diag_sources --line1
174226 (
174227 event_id
174228 , ledger_id
174229 , sla_ledger_id
174230 , description_language
174231 , object_name
174232 , object_type_code
174233 , line_number
174234 , source_application_id
174235 , source_type_code
174236 , source_code
174237 , source_value
174238 , source_meaning
174239 , created_by
174240 , creation_date
174241 , last_update_date
174242 , last_updated_by
174243 , last_update_login
174244 , program_update_date
174245 , program_application_id
174246 , program_id
174247 , request_id
174248 )
174249 SELECT event_id
174250 , p_target_ledger_id
174251 , p_sla_ledger_id
174252 , p_language
174253 , object_name
174254 , object_type_code
174255 , line_number
174256 , source_application_id
174257 , source_type_code
174258 , source_code
174259 , SUBSTR(source_value,1,1996)
174260 , SUBSTR(source_meaning,1,200)
174261 , xla_environment_pkg.g_Usr_Id
174262 , TRUNC(SYSDATE)
174263 , TRUNC(SYSDATE)
174264 , xla_environment_pkg.g_Usr_Id
174265 , xla_environment_pkg.g_Login_Id
174266 , TRUNC(SYSDATE)
174267 , xla_environment_pkg.g_Prog_Appl_Id
174268 , xla_environment_pkg.g_Prog_Id
174269 , xla_environment_pkg.g_Req_Id
174270 FROM (
174271 SELECT xet.event_id event_id
174272 , l2.line_number line_number
174273 , CASE r
174274 WHEN 1 THEN 'CST_XLA_INV_LINES_V'
174275 WHEN 2 THEN 'CST_XLA_INV_LINES_V'
174276 WHEN 3 THEN 'CST_XLA_INV_LINES_V'
174277 WHEN 4 THEN 'CST_XLA_INV_LINES_V'
174278 WHEN 5 THEN 'CST_XLA_INV_LINES_V'
174279 WHEN 6 THEN 'CST_XLA_INV_LINES_V'
174280 WHEN 7 THEN 'CST_XLA_INV_LINES_V'
174281 WHEN 8 THEN 'CST_XLA_INV_LINES_V'
174282 WHEN 9 THEN 'CST_XLA_INV_LINES_V'
174283
174284 ELSE null
174285 END object_name
174286 , CASE r
174287 WHEN 1 THEN 'LINE'
174288 WHEN 2 THEN 'LINE'
174289 WHEN 3 THEN 'LINE'
174290 WHEN 4 THEN 'LINE'
174291 WHEN 5 THEN 'LINE'
174292 WHEN 6 THEN 'LINE'
174293 WHEN 7 THEN 'LINE'
174294 WHEN 8 THEN 'LINE'
174295 WHEN 9 THEN 'LINE'
174296
174297 ELSE null
174298 END object_type_code
174299 , CASE r
174300 WHEN 1 THEN '707'
174301 WHEN 2 THEN '707'
174302 WHEN 3 THEN '707'
174303 WHEN 4 THEN '707'
174304 WHEN 5 THEN '707'
174305 WHEN 6 THEN '707'
174306 WHEN 7 THEN '707'
174307 WHEN 8 THEN '707'
174308 WHEN 9 THEN '707'
174309
174310 ELSE null
174311 END source_application_id
174312 , 'S' source_type_code
174313 , CASE r
174314 WHEN 1 THEN 'CODE_COMBINATION_ID'
174315 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER'
174316 WHEN 3 THEN 'CURRENCY_CODE'
174317 WHEN 4 THEN 'ENTERED_AMOUNT'
174318 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE'
174319 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE'
174320 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE'
174321 WHEN 8 THEN 'ACCOUNTED_AMOUNT'
174322 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE'
174323
174324 ELSE null
174325 END source_code
174326 , CASE r
174327 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
174328 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
174329 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
174330 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
174331 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
174332 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
174333 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
174334 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
174335 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
174336
174337 ELSE null
174338 END source_value
174339 , null source_meaning
174340 FROM xla_events_gt xet
174341 , CST_XLA_INV_LINES_V l2
174342 ,(select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
174343 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
174344 AND xet.event_type_code = C_EVENT_TYPE_CODE
174345 AND l2.event_id = xet.event_id
174346
174347 )
174348 ;
174349 --
174350 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
174351
174352 trace
174353 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
174354 ,p_level => C_LEVEL_STATEMENT
174355 ,p_module => l_log_module);
174356
174357 END IF;
174358
174359
174360 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
174361 trace
174362 (p_msg => 'END of insert_sources_277'
174363 ,p_level => C_LEVEL_PROCEDURE
174364 ,p_module => l_log_module);
174365 END IF;
174366 EXCEPTION
174367 WHEN xla_exceptions_pkg.application_exception THEN
174368 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
174369 trace
174370 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
174371 ,p_level => C_LEVEL_EXCEPTION
174372 ,p_module => l_log_module);
174373 END IF;
174374 RAISE;
174375 WHEN OTHERS THEN
174376 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
174377 trace
174378 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
174379 ,p_level => C_LEVEL_EXCEPTION
174380 ,p_module => l_log_module);
174381 END IF;
174382 xla_exceptions_pkg.raise_message
174383 (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_277');
174384 END insert_sources_277;
174385 --
174386
174387 ---------------------------------------
174388 --
174389 -- PRIVATE FUNCTION
174390 -- EventType_277
174391 --
174392 ----------------------------------------
174393 --
174394 FUNCTION EventType_277
174395 (p_application_id IN NUMBER
174396 ,p_base_ledger_id IN NUMBER
174397 ,p_target_ledger_id IN NUMBER
174398 ,p_language IN VARCHAR2
174399 ,p_currency_code IN VARCHAR2
174400 ,p_sla_ledger_id IN NUMBER
174401 ,p_pad_start_date IN DATE
174402 ,p_pad_end_date IN DATE
174403 ,p_primary_ledger_id IN NUMBER)
174404 RETURN BOOLEAN IS
174405 --
174406 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'UDIR_INTERORG_RCPT';
174407 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'USER_DEFINE';
174408
174409 l_calculate_acctd_flag VARCHAR2(1) :='Y';
174410 l_calculate_g_l_flag VARCHAR2(1) :='Y';
174411 --
174412 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
174413 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
174414 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
174415 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
174416 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
174417 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
174418 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
174419 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
174420 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
174421 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
174422 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
174423 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
174424 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
174425 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
174426 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
174427 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
174428 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
174429 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
174430 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
174431 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
174432 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
174433 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
174434 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
174435 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
174436 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
174437 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
174438
174439 l_event_id NUMBER;
174440 l_previous_event_id NUMBER;
174441 l_first_event_id NUMBER;
174442 l_last_event_id NUMBER;
174443
174444 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
174445 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
174446 --
174447 --
174448 l_result BOOLEAN := TRUE;
174449 l_rows NUMBER := 1000;
174450 l_event_type_name VARCHAR2(80) := 'User-defined Direct Interorg Receipt';
174451 l_event_class_name VARCHAR2(80) := 'User Defined Inventory Transaction Class';
174452 l_description VARCHAR2(4000);
174453 l_transaction_reversal NUMBER;
174454 l_ae_header_id NUMBER;
174455 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
174456 l_log_module VARCHAR2(240);
174457 --
174458 l_acct_reversal_source VARCHAR2(30);
174459 l_trx_reversal_source VARCHAR2(30);
174460
174461 l_continue_with_lines BOOLEAN := TRUE;
174462 --
174463 l_acc_rev_gl_date_source DATE; -- 4262811
174464 --
174465 type t_array_event_id is table of number index by binary_integer;
174466
174467 l_rec_array_event t_rec_array_event;
174468 l_null_rec_array_event t_rec_array_event;
174469 l_array_ae_header_id xla_number_array_type;
174470 l_actual_flag VARCHAR2(1) := NULL;
174471 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
174472 l_balance_type_code VARCHAR2(1) :=NULL;
174473 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
174474
174475 --
174476 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
174477 --
174478
174479 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
174480 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
174481
174482 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
174483 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
174484 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
174485 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
174486 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
174487 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
174488 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
174489 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
174490 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
174491
174492 l_array_source_12 t_array_source_12;
174493 l_array_source_12_meaning t_array_lookup_meaning;
174494 l_array_source_38 t_array_source_38;
174495 l_array_source_38_meaning t_array_lookup_meaning;
174496
174497 l_array_source_4 t_array_source_4;
174498 l_array_source_11 t_array_source_11;
174499 l_array_source_15 t_array_source_15;
174500 l_array_source_18 t_array_source_18;
174501 l_array_source_19 t_array_source_19;
174502 l_array_source_20 t_array_source_20;
174503 l_array_source_21 t_array_source_21;
174504 l_array_source_22 t_array_source_22;
174505 l_array_source_24 t_array_source_24;
174506
174507 --
174508 CURSOR header_cur
174509 IS
174510 SELECT /*+ leading(xet) cardinality(xet,1) */
174511 -- Event Type Code: UDIR_INTERORG_RCPT
174512 -- Event Class Code: USER_DEFINE
174513 xet.entity_id
174514 , xet.legal_entity_id
174515 , xet.entity_code
174516 , xet.transaction_number
174517 , xet.event_id
174518 , xet.event_class_code
174519 , xet.event_type_code
174520 , xet.event_number
174521 , xet.event_date
174522 , xet.transaction_date
174523 , xet.reference_num_1
174524 , xet.reference_num_2
174525 , xet.reference_num_3
174526 , xet.reference_num_4
174527 , xet.reference_char_1
174528 , xet.reference_char_2
174529 , xet.reference_char_3
174530 , xet.reference_char_4
174531 , xet.reference_date_1
174532 , xet.reference_date_2
174533 , xet.reference_date_3
174534 , xet.reference_date_4
174535 , xet.event_created_by
174536 , xet.budgetary_control_flag
174537 , h1.DISTRIBUTION_TYPE source_12
174538 , fvl12.meaning source_12_meaning
174539 , h1.TRANSFER_TO_GL_INDICATOR source_38
174540 , fvl38.meaning source_38_meaning
174541 FROM xla_events_gt xet
174542 , CST_XLA_INV_HEADERS_V h1
174543 , fnd_lookup_values fvl12
174544 , fnd_lookup_values fvl38
174545 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
174546 and xet.event_type_code = C_EVENT_TYPE_CODE
174547 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
174548 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
174549 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
174550 AND fvl12.view_application_id(+) = 700
174551 AND fvl12.language(+) = USERENV('LANG')
174552 AND fvl38.lookup_type(+) = 'YES_NO'
174553 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
174554 AND fvl38.view_application_id(+) = 0
174555 AND fvl38.language(+) = USERENV('LANG')
174556
174557 ORDER BY event_id
174558 ;
174559
174560
174561 --
174562 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
174563 IS
174564 SELECT /*+ leading(xet) cardinality(xet,1) */
174565 -- Event Type Code: UDIR_INTERORG_RCPT
174566 -- Event Class Code: USER_DEFINE
174567 xet.entity_id
174568 ,xet.legal_entity_id
174569 ,xet.entity_code
174570 ,xet.transaction_number
174571 ,xet.event_id
174572 ,xet.event_class_code
174573 ,xet.event_type_code
174574 ,xet.event_number
174575 ,xet.event_date
174576 ,xet.transaction_date
174577 ,xet.reference_num_1
174578 ,xet.reference_num_2
174579 ,xet.reference_num_3
174580 ,xet.reference_num_4
174581 ,xet.reference_char_1
174582 ,xet.reference_char_2
174583 ,xet.reference_char_3
174584 ,xet.reference_char_4
174585 ,xet.reference_date_1
174586 ,xet.reference_date_2
174587 ,xet.reference_date_3
174588 ,xet.reference_date_4
174589 ,xet.event_created_by
174590 ,xet.budgetary_control_flag , l2.LINE_NUMBER
174591 , l2.CODE_COMBINATION_ID source_4
174592 , l2.DISTRIBUTION_IDENTIFIER source_11
174593 , l2.CURRENCY_CODE source_15
174594 , l2.ENTERED_AMOUNT source_18
174595 , l2.CURRENCY_CONVERSION_DATE source_19
174596 , l2.CURRENCY_CONVERSION_RATE source_20
174597 , l2.CURRENCY_CONVERSION_TYPE source_21
174598 , l2.ACCOUNTED_AMOUNT source_22
174599 , l2.ACCOUNTING_LINE_TYPE_CODE source_24
174600 FROM xla_events_gt xet
174601 , CST_XLA_INV_LINES_V l2
174602 WHERE xet.event_id between x_first_event_id and x_last_event_id
174603 and xet.event_date between p_pad_start_date and p_pad_end_date
174604 and xet.event_type_code = C_EVENT_TYPE_CODE
174605 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
174606 ;
174607
174608 --
174609 BEGIN
174610 IF g_log_enabled THEN
174611 l_log_module := C_DEFAULT_MODULE||'.EventType_277';
174612 END IF;
174613 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
174614 trace
174615 (p_msg => 'BEGIN of EventType_277'
174616 ,p_level => C_LEVEL_PROCEDURE
174617 ,p_module => l_log_module);
174618 END IF;
174619
174620 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
174621 trace
174622 (p_msg => 'p_application_id = '||p_application_id||
174623 ' - p_base_ledger_id = '||p_base_ledger_id||
174624 ' - p_target_ledger_id = '||p_target_ledger_id||
174625 ' - p_language = '||p_language||
174626 ' - p_currency_code = '||p_currency_code||
174627 ' - p_sla_ledger_id = '||p_sla_ledger_id
174628 ,p_level => C_LEVEL_STATEMENT
174629 ,p_module => l_log_module);
174630 END IF;
174631 --
174632 -- initialze arrays
174633 --
174634 g_array_event.DELETE;
174635 l_rec_array_event := l_null_rec_array_event;
174636 --
174637 --------------------------------------
174638 -- 4262811 Initialze MPA Line Number
174639 --------------------------------------
174640 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
174641
174642 --
174643
174644 --
174645 OPEN header_cur;
174646 --
174647 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
174648 trace
174649 (p_msg => 'SQL - FETCH header_cur'
174650 ,p_level => C_LEVEL_STATEMENT
174651 ,p_module => l_log_module);
174652 END IF;
174653 --
174654 LOOP
174655 FETCH header_cur BULK COLLECT INTO
174656 l_array_entity_id
174657 , l_array_legal_entity_id
174658 , l_array_entity_code
174659 , l_array_transaction_num
174660 , l_array_event_id
174661 , l_array_class_code
174662 , l_array_event_type
174663 , l_array_event_number
174664 , l_array_event_date
174665 , l_array_transaction_date
174666 , l_array_reference_num_1
174667 , l_array_reference_num_2
174668 , l_array_reference_num_3
174669 , l_array_reference_num_4
174670 , l_array_reference_char_1
174671 , l_array_reference_char_2
174672 , l_array_reference_char_3
174673 , l_array_reference_char_4
174674 , l_array_reference_date_1
174675 , l_array_reference_date_2
174676 , l_array_reference_date_3
174677 , l_array_reference_date_4
174678 , l_array_event_created_by
174679 , l_array_budgetary_control_flag
174680 , l_array_source_12
174681 , l_array_source_12_meaning
174682 , l_array_source_38
174683 , l_array_source_38_meaning
174684 LIMIT l_rows;
174685 --
174686 IF (C_LEVEL_EVENT >= g_log_level) THEN
174687 trace
174688 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
174689 ,p_level => C_LEVEL_EVENT
174690 ,p_module => l_log_module);
174691 END IF;
174692 --
174693 EXIT WHEN l_array_entity_id.COUNT = 0;
174694
174695 -- initialize arrays
174696 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
174697 XLA_AE_LINES_PKG.g_rec_lines := NULL;
174698
174699 --
174700 -- Bug 4458708
174701 --
174702 XLA_AE_LINES_PKG.g_LineNumber := 0;
174703
174704
174705 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
174706 g_last_hdr_idx := l_array_event_id.LAST;
174707 --
174708 -- loop for the headers. Each iteration is for each header extract row
174709 -- fetched in header cursor
174710 --
174711 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
174712
174713 --
174714 -- set event info as cache for other routines to refer event attributes
174715 --
174716 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
174717 (p_application_id => p_application_id
174718 ,p_primary_ledger_id => p_primary_ledger_id
174719 ,p_base_ledger_id => p_base_ledger_id
174720 ,p_target_ledger_id => p_target_ledger_id
174721 ,p_entity_id => l_array_entity_id(hdr_idx)
174722 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
174723 ,p_entity_code => l_array_entity_code(hdr_idx)
174724 ,p_transaction_num => l_array_transaction_num(hdr_idx)
174725 ,p_event_id => l_array_event_id(hdr_idx)
174726 ,p_event_class_code => l_array_class_code(hdr_idx)
174727 ,p_event_type_code => l_array_event_type(hdr_idx)
174728 ,p_event_number => l_array_event_number(hdr_idx)
174729 ,p_event_date => l_array_event_date(hdr_idx)
174730 ,p_transaction_date => l_array_transaction_date(hdr_idx)
174731 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
174732 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
174733 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
174734 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
174735 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
174736 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
174737 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
174738 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
174739 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
174740 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
174741 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
174742 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
174743 ,p_event_created_by => l_array_event_created_by(hdr_idx)
174744 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
174745
174746 --
174747 -- set the status of entry to C_VALID (0)
174748 --
174749 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
174750
174751 --
174752 -- initialize a row for ae header
174753 --
174754 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
174755
174756 l_event_id := l_array_event_id(hdr_idx);
174757
174758 --
174759 -- storing the hdr_idx for event. May be used by line cursor.
174760 --
174761 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
174762
174763 --
174764 -- store sources from header extract. This can be improved to
174765 -- store only those sources from header extract that may be used in lines
174766 --
174767
174768 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
174769 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
174770 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
174771 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
174772
174773 --
174774 -- initilaize the status of ae headers for diffrent balance types
174775 -- the status is initialised to C_NOT_CREATED (2)
174776 --
174777 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
174778 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
174779 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
174780
174781 --
174782 -- call api to validate and store accounting attributes for header
174783 --
174784
174785 ------------------------------------------------------------
174786 -- Accrual Reversal : to get date for Standard Source (NONE)
174787 ------------------------------------------------------------
174788 l_acc_rev_gl_date_source := NULL;
174789
174790 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
174791 l_rec_acct_attrs.array_date_value(1) :=
174792 xla_ae_sources_pkg.GetSystemSourceDate(
174793 p_source_code => 'XLA_REFERENCE_DATE_1'
174794 , p_source_type_code => 'Y'
174795 , p_source_application_id => 602
174796 );
174797 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_TRANSFER_FLAG';
174798 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
174799
174800
174801 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
174802
174803 XLA_AE_HEADER_PKG.SetJeCategoryName;
174804
174805 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
174806 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
174807 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
174808 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
174809 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
174810
174811
174812 -- No header level analytical criteria
174813
174814 --
174815 --accounting attribute enhancement, bug 3612931
174816 --
174817 l_trx_reversal_source := SUBSTR(NULL, 1,30);
174818
174819 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
174820 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
174821
174822 xla_accounting_err_pkg.build_message
174823 (p_appli_s_name => 'XLA'
174824 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
174825 ,p_token_1 => 'ACCT_ATTR_NAME'
174826 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
174827 ,p_token_2 => 'PRODUCT_NAME'
174828 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
174829 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
174830 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
174831 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
174832
174833 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
174834 --
174835 -- following sets the accounting attributes needed to reverse
174836 -- accounting for a distributeion
174837 --
174838 xla_ae_lines_pkg.SetTrxReversalAttrs
174839 (p_event_id => l_event_id
174840 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
174841 ,p_trx_reversal_source => l_trx_reversal_source);
174842
174843 END IF;
174844
174845
174846 ----------------------------------------------------------------
174847 -- 4262811 - update the header statuses to invalid in need be
174848 ----------------------------------------------------------------
174849 --
174850 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
174851
174852
174853 -----------------------------------------------
174854 -- No accrual reversal for the event class/type
174855 -----------------------------------------------
174856 ----------------------------------------------------------------
174857
174858 --
174859 -- this ends the header loop iteration for one bulk fetch
174860 --
174861 END LOOP;
174862
174863 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
174864 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
174865
174866 --
174867 -- insert dummy rows into lines gt table that were created due to
174868 -- transaction reversals
174869 --
174870 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
174871 l_result := XLA_AE_LINES_PKG.InsertLines;
174872 END IF;
174873
174874 --
174875 -- reset the temp_line_num for each set of events fetched from header
174876 -- cursor rather than doing it for each new event in line cursor
174877 -- Bug 3939231
174878 --
174879 xla_ae_lines_pkg.g_temp_line_num := 0;
174880
174881
174882
174883 --
174884 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
174885 --
174886 --
174887 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
174888
174889 trace
174890 (p_msg => 'SQL - FETCH line_cur'
174891 ,p_level => C_LEVEL_STATEMENT
174892 ,p_module => l_log_module);
174893
174894 END IF;
174895 --
174896 --
174897 LOOP
174898 --
174899 FETCH line_cur BULK COLLECT INTO
174900 l_array_entity_id
174901 , l_array_legal_entity_id
174902 , l_array_entity_code
174903 , l_array_transaction_num
174904 , l_array_event_id
174905 , l_array_class_code
174906 , l_array_event_type
174907 , l_array_event_number
174908 , l_array_event_date
174909 , l_array_transaction_date
174910 , l_array_reference_num_1
174911 , l_array_reference_num_2
174912 , l_array_reference_num_3
174913 , l_array_reference_num_4
174914 , l_array_reference_char_1
174915 , l_array_reference_char_2
174916 , l_array_reference_char_3
174917 , l_array_reference_char_4
174918 , l_array_reference_date_1
174919 , l_array_reference_date_2
174920 , l_array_reference_date_3
174921 , l_array_reference_date_4
174922 , l_array_event_created_by
174923 , l_array_budgetary_control_flag
174924 , l_array_extract_line_num
174925 , l_array_source_4
174926 , l_array_source_11
174927 , l_array_source_15
174928 , l_array_source_18
174929 , l_array_source_19
174930 , l_array_source_20
174931 , l_array_source_21
174932 , l_array_source_22
174933 , l_array_source_24
174934 LIMIT l_rows;
174935
174936 --
174937 IF (C_LEVEL_EVENT >= g_log_level) THEN
174938 trace
174939 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
174940 ,p_level => C_LEVEL_EVENT
174941 ,p_module => l_log_module);
174942 END IF;
174943 --
174944 EXIT WHEN l_array_entity_id.count = 0;
174945
174946 XLA_AE_LINES_PKG.g_rec_lines := null;
174947
174948 --
174949 -- Bug 4458708
174950 --
174951 XLA_AE_LINES_PKG.g_LineNumber := 0;
174952 --
174953 --
174954
174955 FOR Idx IN 1..l_array_event_id.count LOOP
174956 --
174957 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
174958 --
174959 l_event_id := l_array_event_id(idx); -- 5648433
174960
174961 --
174962 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
174963 --
174964
174965 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
174966 (g_array_event(l_event_id).array_value_num('header_index'))
174967 ,'N'
174968 ) <> 'Y'
174969 THEN
174970 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
174971 trace
174972 (p_msg => 'Trancaction revesal option is not Y '
174973 ,p_level => C_LEVEL_STATEMENT
174974 ,p_module => l_log_module);
174975 END IF;
174976
174977 --
174978 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
174979 --
174980 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
174981 --
174982 -- set event info as cache for other routines to refer event attributes
174983 --
174984
174985 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
174986 l_previous_event_id := l_event_id;
174987
174988 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
174989 (p_application_id => p_application_id
174990 ,p_primary_ledger_id => p_primary_ledger_id
174991 ,p_base_ledger_id => p_base_ledger_id
174992 ,p_target_ledger_id => p_target_ledger_id
174993 ,p_entity_id => l_array_entity_id(Idx)
174994 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
174995 ,p_entity_code => l_array_entity_code(Idx)
174996 ,p_transaction_num => l_array_transaction_num(Idx)
174997 ,p_event_id => l_array_event_id(Idx)
174998 ,p_event_class_code => l_array_class_code(Idx)
174999 ,p_event_type_code => l_array_event_type(Idx)
175000 ,p_event_number => l_array_event_number(Idx)
175001 ,p_event_date => l_array_event_date(Idx)
175002 ,p_transaction_date => l_array_transaction_date(Idx)
175003 ,p_reference_num_1 => l_array_reference_num_1(Idx)
175004 ,p_reference_num_2 => l_array_reference_num_2(Idx)
175005 ,p_reference_num_3 => l_array_reference_num_3(Idx)
175006 ,p_reference_num_4 => l_array_reference_num_4(Idx)
175007 ,p_reference_char_1 => l_array_reference_char_1(Idx)
175008 ,p_reference_char_2 => l_array_reference_char_2(Idx)
175009 ,p_reference_char_3 => l_array_reference_char_3(Idx)
175010 ,p_reference_char_4 => l_array_reference_char_4(Idx)
175011 ,p_reference_date_1 => l_array_reference_date_1(Idx)
175012 ,p_reference_date_2 => l_array_reference_date_2(Idx)
175013 ,p_reference_date_3 => l_array_reference_date_3(Idx)
175014 ,p_reference_date_4 => l_array_reference_date_4(Idx)
175015 ,p_event_created_by => l_array_event_created_by(Idx)
175016 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
175017 --
175018 END IF;
175019
175020
175021
175022 --
175023 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
175024
175025 l_acct_reversal_source := SUBSTR(NULL, 1,30);
175026
175027 IF l_continue_with_lines THEN
175028 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
175029 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
175030
175031 xla_accounting_err_pkg.build_message
175032 (p_appli_s_name => 'XLA'
175033 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
175034 ,p_token_1 => 'LINE_NUMBER'
175035 ,p_value_1 => l_array_extract_line_num(Idx)
175036 ,p_token_2 => 'PRODUCT_NAME'
175037 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
175038 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
175039 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
175040 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
175041
175042 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
175043 --
175044 -- following sets the accounting attributes needed to reverse
175045 -- accounting for a distributeion
175046 --
175047
175048 --
175049 -- 5217187
175050 --
175051 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
175052 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
175053 g_array_event(l_event_id).array_value_num('header_index'));
175054 --
175055 --
175056
175057 -- No reversal code generated
175058
175059 xla_ae_lines_pkg.SetAcctReversalAttrs
175060 (p_event_id => l_event_id
175061 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
175062 ,p_calculate_acctd_flag => l_calculate_acctd_flag
175063 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
175064 END IF;
175065
175066 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
175067 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
175068
175069 --
175070 AcctLineType_37 (
175071 p_application_id => p_application_id
175072 ,p_event_id => l_event_id
175073 ,p_calculate_acctd_flag => l_calculate_acctd_flag
175074 ,p_calculate_g_l_flag => l_calculate_g_l_flag
175075 ,p_actual_flag => l_actual_flag
175076 ,p_balance_type_code => l_balance_type_code
175077 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
175078
175079 , p_source_4 => l_array_source_4(Idx)
175080 , p_source_11 => l_array_source_11(Idx)
175081 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
175082 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
175083 , p_source_15 => l_array_source_15(Idx)
175084 , p_source_18 => l_array_source_18(Idx)
175085 , p_source_19 => l_array_source_19(Idx)
175086 , p_source_20 => l_array_source_20(Idx)
175087 , p_source_21 => l_array_source_21(Idx)
175088 , p_source_22 => l_array_source_22(Idx)
175089 , p_source_24 => l_array_source_24(Idx)
175090 );
175091 If(l_balance_type_code = 'A') THEN
175092 l_actual_gain_loss_ref := l_gain_or_loss_ref;
175093 END IF;
175094
175095 --
175096
175097
175098 --
175099 AcctLineType_64 (
175100 p_application_id => p_application_id
175101 ,p_event_id => l_event_id
175102 ,p_calculate_acctd_flag => l_calculate_acctd_flag
175103 ,p_calculate_g_l_flag => l_calculate_g_l_flag
175104 ,p_actual_flag => l_actual_flag
175105 ,p_balance_type_code => l_balance_type_code
175106 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
175107
175108 , p_source_4 => l_array_source_4(Idx)
175109 , p_source_11 => l_array_source_11(Idx)
175110 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
175111 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
175112 , p_source_15 => l_array_source_15(Idx)
175113 , p_source_18 => l_array_source_18(Idx)
175114 , p_source_19 => l_array_source_19(Idx)
175115 , p_source_20 => l_array_source_20(Idx)
175116 , p_source_21 => l_array_source_21(Idx)
175117 , p_source_22 => l_array_source_22(Idx)
175118 , p_source_24 => l_array_source_24(Idx)
175119 );
175120 If(l_balance_type_code = 'A') THEN
175121 l_actual_gain_loss_ref := l_gain_or_loss_ref;
175122 END IF;
175123
175124 --
175125
175126
175127 --
175128 AcctLineType_82 (
175129 p_application_id => p_application_id
175130 ,p_event_id => l_event_id
175131 ,p_calculate_acctd_flag => l_calculate_acctd_flag
175132 ,p_calculate_g_l_flag => l_calculate_g_l_flag
175133 ,p_actual_flag => l_actual_flag
175134 ,p_balance_type_code => l_balance_type_code
175135 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
175136
175137 , p_source_4 => l_array_source_4(Idx)
175138 , p_source_11 => l_array_source_11(Idx)
175139 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
175140 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
175141 , p_source_15 => l_array_source_15(Idx)
175142 , p_source_18 => l_array_source_18(Idx)
175143 , p_source_19 => l_array_source_19(Idx)
175144 , p_source_20 => l_array_source_20(Idx)
175145 , p_source_21 => l_array_source_21(Idx)
175146 , p_source_22 => l_array_source_22(Idx)
175147 , p_source_24 => l_array_source_24(Idx)
175148 );
175149 If(l_balance_type_code = 'A') THEN
175150 l_actual_gain_loss_ref := l_gain_or_loss_ref;
175151 END IF;
175152
175153 --
175154
175155
175156 --
175157 AcctLineType_103 (
175158 p_application_id => p_application_id
175159 ,p_event_id => l_event_id
175160 ,p_calculate_acctd_flag => l_calculate_acctd_flag
175161 ,p_calculate_g_l_flag => l_calculate_g_l_flag
175162 ,p_actual_flag => l_actual_flag
175163 ,p_balance_type_code => l_balance_type_code
175164 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
175165
175166 , p_source_4 => l_array_source_4(Idx)
175167 , p_source_11 => l_array_source_11(Idx)
175168 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
175169 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
175170 , p_source_15 => l_array_source_15(Idx)
175171 , p_source_18 => l_array_source_18(Idx)
175172 , p_source_19 => l_array_source_19(Idx)
175173 , p_source_20 => l_array_source_20(Idx)
175174 , p_source_21 => l_array_source_21(Idx)
175175 , p_source_22 => l_array_source_22(Idx)
175176 , p_source_24 => l_array_source_24(Idx)
175177 );
175178 If(l_balance_type_code = 'A') THEN
175179 l_actual_gain_loss_ref := l_gain_or_loss_ref;
175180 END IF;
175181
175182 --
175183
175184
175185 --
175186 AcctLineType_110 (
175187 p_application_id => p_application_id
175188 ,p_event_id => l_event_id
175189 ,p_calculate_acctd_flag => l_calculate_acctd_flag
175190 ,p_calculate_g_l_flag => l_calculate_g_l_flag
175191 ,p_actual_flag => l_actual_flag
175192 ,p_balance_type_code => l_balance_type_code
175193 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
175194
175195 , p_source_4 => l_array_source_4(Idx)
175196 , p_source_11 => l_array_source_11(Idx)
175197 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
175198 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
175199 , p_source_15 => l_array_source_15(Idx)
175200 , p_source_18 => l_array_source_18(Idx)
175201 , p_source_19 => l_array_source_19(Idx)
175202 , p_source_20 => l_array_source_20(Idx)
175203 , p_source_21 => l_array_source_21(Idx)
175204 , p_source_22 => l_array_source_22(Idx)
175205 , p_source_24 => l_array_source_24(Idx)
175206 );
175207 If(l_balance_type_code = 'A') THEN
175208 l_actual_gain_loss_ref := l_gain_or_loss_ref;
175209 END IF;
175210
175211 --
175212
175213
175214 --
175215 AcctLineType_136 (
175216 p_application_id => p_application_id
175217 ,p_event_id => l_event_id
175218 ,p_calculate_acctd_flag => l_calculate_acctd_flag
175219 ,p_calculate_g_l_flag => l_calculate_g_l_flag
175220 ,p_actual_flag => l_actual_flag
175221 ,p_balance_type_code => l_balance_type_code
175222 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
175223
175224 , p_source_4 => l_array_source_4(Idx)
175225 , p_source_11 => l_array_source_11(Idx)
175226 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
175227 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
175228 , p_source_15 => l_array_source_15(Idx)
175229 , p_source_18 => l_array_source_18(Idx)
175230 , p_source_19 => l_array_source_19(Idx)
175231 , p_source_20 => l_array_source_20(Idx)
175232 , p_source_21 => l_array_source_21(Idx)
175233 , p_source_22 => l_array_source_22(Idx)
175234 , p_source_24 => l_array_source_24(Idx)
175235 );
175236 If(l_balance_type_code = 'A') THEN
175237 l_actual_gain_loss_ref := l_gain_or_loss_ref;
175238 END IF;
175239
175240 --
175241
175242
175243 --
175244 AcctLineType_162 (
175245 p_application_id => p_application_id
175246 ,p_event_id => l_event_id
175247 ,p_calculate_acctd_flag => l_calculate_acctd_flag
175248 ,p_calculate_g_l_flag => l_calculate_g_l_flag
175249 ,p_actual_flag => l_actual_flag
175250 ,p_balance_type_code => l_balance_type_code
175251 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
175252
175253 , p_source_4 => l_array_source_4(Idx)
175254 , p_source_11 => l_array_source_11(Idx)
175255 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
175256 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
175257 , p_source_15 => l_array_source_15(Idx)
175258 , p_source_18 => l_array_source_18(Idx)
175259 , p_source_19 => l_array_source_19(Idx)
175260 , p_source_20 => l_array_source_20(Idx)
175261 , p_source_21 => l_array_source_21(Idx)
175262 , p_source_22 => l_array_source_22(Idx)
175263 , p_source_24 => l_array_source_24(Idx)
175264 );
175265 If(l_balance_type_code = 'A') THEN
175266 l_actual_gain_loss_ref := l_gain_or_loss_ref;
175267 END IF;
175268
175269 --
175270
175271
175272 --
175273 AcctLineType_186 (
175274 p_application_id => p_application_id
175275 ,p_event_id => l_event_id
175276 ,p_calculate_acctd_flag => l_calculate_acctd_flag
175277 ,p_calculate_g_l_flag => l_calculate_g_l_flag
175278 ,p_actual_flag => l_actual_flag
175279 ,p_balance_type_code => l_balance_type_code
175280 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
175281
175282 , p_source_4 => l_array_source_4(Idx)
175283 , p_source_11 => l_array_source_11(Idx)
175284 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
175285 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
175286 , p_source_15 => l_array_source_15(Idx)
175287 , p_source_18 => l_array_source_18(Idx)
175288 , p_source_19 => l_array_source_19(Idx)
175289 , p_source_20 => l_array_source_20(Idx)
175290 , p_source_21 => l_array_source_21(Idx)
175291 , p_source_22 => l_array_source_22(Idx)
175292 , p_source_24 => l_array_source_24(Idx)
175293 );
175294 If(l_balance_type_code = 'A') THEN
175295 l_actual_gain_loss_ref := l_gain_or_loss_ref;
175296 END IF;
175297
175298 --
175299
175300
175301 --
175302 AcctLineType_215 (
175303 p_application_id => p_application_id
175304 ,p_event_id => l_event_id
175305 ,p_calculate_acctd_flag => l_calculate_acctd_flag
175306 ,p_calculate_g_l_flag => l_calculate_g_l_flag
175307 ,p_actual_flag => l_actual_flag
175308 ,p_balance_type_code => l_balance_type_code
175309 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
175310
175311 , p_source_4 => l_array_source_4(Idx)
175312 , p_source_11 => l_array_source_11(Idx)
175313 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
175314 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
175315 , p_source_15 => l_array_source_15(Idx)
175316 , p_source_18 => l_array_source_18(Idx)
175317 , p_source_19 => l_array_source_19(Idx)
175318 , p_source_20 => l_array_source_20(Idx)
175319 , p_source_21 => l_array_source_21(Idx)
175320 , p_source_22 => l_array_source_22(Idx)
175321 , p_source_24 => l_array_source_24(Idx)
175322 );
175323 If(l_balance_type_code = 'A') THEN
175324 l_actual_gain_loss_ref := l_gain_or_loss_ref;
175325 END IF;
175326
175327 --
175328
175329 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
175330 -- or secondary ledger that has different currency with primary
175331 -- or alc that is calculated by sla
175332 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
175333 (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'))
175334
175335 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
175336 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
175337 AND (l_actual_flag = 'A')) THEN
175338 XLA_AE_LINES_PKG.CreateGainOrLossLines(
175339 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
175340 ,p_application_id => p_application_id
175341 ,p_amb_context_code => 'DEFAULT'
175342 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
175343 ,p_event_class_code => C_EVENT_CLASS_CODE
175344 ,p_event_type_code => C_EVENT_TYPE_CODE
175345
175346 ,p_gain_ccid => -1
175347 ,p_loss_ccid => -1
175348
175349 ,p_actual_flag => l_actual_flag
175350 ,p_enc_flag => null
175351 ,p_actual_g_l_ref => l_actual_gain_loss_ref
175352 ,p_enc_g_l_ref => null
175353 );
175354 END IF;
175355 END IF;
175356 END IF;
175357
175358 ELSE
175359 --
175360 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
175361 --
175362 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
175363 trace
175364 (p_msg => 'Trancaction revesal option is Y'
175365 ,p_level => C_LEVEL_STATEMENT
175366 ,p_module => l_log_module);
175367 END IF;
175368 END IF;
175369
175370 END LOOP;
175371 l_result := XLA_AE_LINES_PKG.InsertLines ;
175372 end loop;
175373 close line_cur;
175374
175375
175376 --
175377 -- insert headers into xla_ae_headers_gt table
175378 --
175379 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
175380
175381 -- insert into errors table here.
175382
175383 END LOOP;
175384
175385 --
175386 -- 4865292
175387 --
175388 -- Compare g_hdr_extract_count with event count in
175389 -- CreateHeadersAndLines.
175390 --
175391 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
175392
175393 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
175394 trace (p_msg => '# rows extracted from header extract objects '
175395 || ' (running total): '
175396 || g_hdr_extract_count
175397 ,p_level => C_LEVEL_STATEMENT
175398 ,p_module => l_log_module);
175399 END IF;
175400
175401 CLOSE header_cur;
175402 --
175403
175404 --
175405 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
175406 trace
175407 (p_msg => 'END of EventType_277'
175408 ,p_level => C_LEVEL_PROCEDURE
175409 ,p_module => l_log_module);
175410 END IF;
175411 --
175412 RETURN l_result;
175413 EXCEPTION
175414 WHEN xla_exceptions_pkg.application_exception THEN
175415
175416 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
175417
175418
175419 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
175420
175421 RAISE;
175422
175423 WHEN NO_DATA_FOUND THEN
175424
175425 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
175426 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
175427
175428 FOR header_record IN header_cur
175429 LOOP
175430 l_array_header_events(header_record.event_id) := header_record.event_id;
175431 END LOOP;
175432
175433 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
175434 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
175435
175436 fnd_file.put_line(fnd_file.LOG, ' ');
175437 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
175438 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
175439 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
175440
175441 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
175442 LOOP
175443 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
175444 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
175445 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
175446 END IF;
175447 END LOOP;
175448
175449 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
175450 fnd_file.put_line(fnd_file.LOG, ' ');
175451
175452
175453 xla_exceptions_pkg.raise_message
175454 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventType_277');
175455
175456
175457 WHEN OTHERS THEN
175458 xla_exceptions_pkg.raise_message
175459 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventType_277');
175460 END EventType_277;
175461 --
175462
175463 ---------------------------------------
175464 --
175465 -- PRIVATE PROCEDURE
175466 -- insert_sources_278
175467 --
175468 ----------------------------------------
175469 --
175470 PROCEDURE insert_sources_278(
175471 p_target_ledger_id IN NUMBER
175472 , p_language IN VARCHAR2
175473 , p_sla_ledger_id IN NUMBER
175474 , p_pad_start_date IN DATE
175475 , p_pad_end_date IN DATE
175476 )
175477 IS
175478
175479 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'UDIR_INTERORG_RCPT_NO_TP';
175480 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'USER_DEFINE';
175481 p_apps_owner VARCHAR2(30);
175482 l_log_module VARCHAR2(240);
175483 BEGIN
175484 IF g_log_enabled THEN
175485 l_log_module := C_DEFAULT_MODULE||'.insert_sources_278';
175486 END IF;
175487 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
175488
175489 trace
175490 (p_msg => 'BEGIN of insert_sources_278'
175491 ,p_level => C_LEVEL_PROCEDURE
175492 ,p_module => l_log_module);
175493
175494 END IF;
175495
175496 -- select APPS owner
175497 SELECT oracle_username
175498 INTO p_apps_owner
175499 FROM fnd_oracle_userid
175500 WHERE read_only_flag = 'U'
175501 ;
175502
175503 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
175504 trace
175505 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
175506 ' - p_language = '||p_language||
175507 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
175508 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
175509 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
175510 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
175511 ,p_level => C_LEVEL_STATEMENT
175512 ,p_module => l_log_module);
175513 END IF;
175514
175515
175516 --
175517 INSERT INTO xla_diag_sources --hdr1
175518 (
175519 event_id
175520 , ledger_id
175521 , sla_ledger_id
175522 , description_language
175523 , object_name
175524 , object_type_code
175525 , line_number
175526 , source_application_id
175527 , source_type_code
175528 , source_code
175529 , source_value
175530 , source_meaning
175531 , created_by
175532 , creation_date
175533 , last_update_date
175534 , last_updated_by
175535 , last_update_login
175536 , program_update_date
175537 , program_application_id
175538 , program_id
175539 , request_id
175540 )
175541 SELECT
175542 event_id
175543 , p_target_ledger_id
175544 , p_sla_ledger_id
175545 , p_language
175546 , object_name
175547 , object_type_code
175548 , line_number
175549 , source_application_id
175550 , source_type_code
175551 , source_code
175552 , SUBSTR(source_value ,1,1996)
175553 , SUBSTR(source_meaning,1,200)
175554 , xla_environment_pkg.g_Usr_Id
175555 , TRUNC(SYSDATE)
175556 , TRUNC(SYSDATE)
175557 , xla_environment_pkg.g_Usr_Id
175558 , xla_environment_pkg.g_Login_Id
175559 , TRUNC(SYSDATE)
175560 , xla_environment_pkg.g_Prog_Appl_Id
175561 , xla_environment_pkg.g_Prog_Id
175562 , xla_environment_pkg.g_Req_Id
175563 FROM (
175564 SELECT xet.event_id event_id
175565 , 0 line_number
175566 , CASE r
175567 WHEN 1 THEN 'CST_XLA_INV_HEADERS_V'
175568 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V'
175569
175570 ELSE null
175571 END object_name
175572 , CASE r
175573 WHEN 1 THEN 'HEADER'
175574 WHEN 2 THEN 'HEADER'
175575
175576 ELSE null
175577 END object_type_code
175578 , CASE r
175579 WHEN 1 THEN '707'
175580 WHEN 2 THEN '707'
175581
175582 ELSE null
175583 END source_application_id
175584 , 'S' source_type_code
175585 , CASE r
175586 WHEN 1 THEN 'DISTRIBUTION_TYPE'
175587 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR'
175588
175589 ELSE null
175590 END source_code
175591 , CASE r
175592 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
175593 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
175594
175595 ELSE null
175596 END source_value
175597 , CASE r
175598 WHEN 1 THEN fvl12.meaning
175599 WHEN 2 THEN fvl38.meaning
175600
175601 ELSE null
175602 END source_meaning
175603 FROM xla_events_gt xet
175604 , CST_XLA_INV_HEADERS_V h1
175605 , fnd_lookup_values fvl12
175606 , fnd_lookup_values fvl38
175607 ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
175608 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
175609 AND xet.event_type_code = C_EVENT_TYPE_CODE
175610 AND h1.event_id = xet.event_id
175611 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
175612 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
175613 AND fvl12.view_application_id(+) = 700
175614 AND fvl12.language(+) = USERENV('LANG')
175615 AND fvl38.lookup_type(+) = 'YES_NO'
175616 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
175617 AND fvl38.view_application_id(+) = 0
175618 AND fvl38.language(+) = USERENV('LANG')
175619
175620 )
175621 ;
175622 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
175623
175624 trace
175625 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
175626 ,p_level => C_LEVEL_STATEMENT
175627 ,p_module => l_log_module);
175628
175629 END IF;
175630 --
175631
175632
175633
175634 --
175635 INSERT INTO xla_diag_sources --line1
175636 (
175637 event_id
175638 , ledger_id
175639 , sla_ledger_id
175640 , description_language
175641 , object_name
175642 , object_type_code
175643 , line_number
175644 , source_application_id
175645 , source_type_code
175646 , source_code
175647 , source_value
175648 , source_meaning
175649 , created_by
175650 , creation_date
175651 , last_update_date
175652 , last_updated_by
175653 , last_update_login
175654 , program_update_date
175655 , program_application_id
175656 , program_id
175657 , request_id
175658 )
175659 SELECT event_id
175660 , p_target_ledger_id
175661 , p_sla_ledger_id
175662 , p_language
175663 , object_name
175664 , object_type_code
175665 , line_number
175666 , source_application_id
175667 , source_type_code
175668 , source_code
175669 , SUBSTR(source_value,1,1996)
175670 , SUBSTR(source_meaning,1,200)
175671 , xla_environment_pkg.g_Usr_Id
175672 , TRUNC(SYSDATE)
175673 , TRUNC(SYSDATE)
175674 , xla_environment_pkg.g_Usr_Id
175675 , xla_environment_pkg.g_Login_Id
175676 , TRUNC(SYSDATE)
175677 , xla_environment_pkg.g_Prog_Appl_Id
175678 , xla_environment_pkg.g_Prog_Id
175679 , xla_environment_pkg.g_Req_Id
175680 FROM (
175681 SELECT xet.event_id event_id
175682 , l2.line_number line_number
175683 , CASE r
175684 WHEN 1 THEN 'CST_XLA_INV_LINES_V'
175685 WHEN 2 THEN 'CST_XLA_INV_LINES_V'
175686 WHEN 3 THEN 'CST_XLA_INV_LINES_V'
175687 WHEN 4 THEN 'CST_XLA_INV_LINES_V'
175688 WHEN 5 THEN 'CST_XLA_INV_LINES_V'
175689 WHEN 6 THEN 'CST_XLA_INV_LINES_V'
175690 WHEN 7 THEN 'CST_XLA_INV_LINES_V'
175691 WHEN 8 THEN 'CST_XLA_INV_LINES_V'
175692 WHEN 9 THEN 'CST_XLA_INV_LINES_V'
175693
175694 ELSE null
175695 END object_name
175696 , CASE r
175697 WHEN 1 THEN 'LINE'
175698 WHEN 2 THEN 'LINE'
175699 WHEN 3 THEN 'LINE'
175700 WHEN 4 THEN 'LINE'
175701 WHEN 5 THEN 'LINE'
175702 WHEN 6 THEN 'LINE'
175703 WHEN 7 THEN 'LINE'
175704 WHEN 8 THEN 'LINE'
175705 WHEN 9 THEN 'LINE'
175706
175707 ELSE null
175708 END object_type_code
175709 , CASE r
175710 WHEN 1 THEN '707'
175711 WHEN 2 THEN '707'
175712 WHEN 3 THEN '707'
175713 WHEN 4 THEN '707'
175714 WHEN 5 THEN '707'
175715 WHEN 6 THEN '707'
175716 WHEN 7 THEN '707'
175717 WHEN 8 THEN '707'
175718 WHEN 9 THEN '707'
175719
175720 ELSE null
175721 END source_application_id
175722 , 'S' source_type_code
175723 , CASE r
175724 WHEN 1 THEN 'CODE_COMBINATION_ID'
175725 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER'
175726 WHEN 3 THEN 'CURRENCY_CODE'
175727 WHEN 4 THEN 'ENTERED_AMOUNT'
175728 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE'
175729 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE'
175730 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE'
175731 WHEN 8 THEN 'ACCOUNTED_AMOUNT'
175732 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE'
175733
175734 ELSE null
175735 END source_code
175736 , CASE r
175737 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
175738 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
175739 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
175740 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
175741 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
175742 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
175743 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
175744 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
175745 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
175746
175747 ELSE null
175748 END source_value
175749 , null source_meaning
175750 FROM xla_events_gt xet
175751 , CST_XLA_INV_LINES_V l2
175752 ,(select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
175753 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
175754 AND xet.event_type_code = C_EVENT_TYPE_CODE
175755 AND l2.event_id = xet.event_id
175756
175757 )
175758 ;
175759 --
175760 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
175761
175762 trace
175763 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
175764 ,p_level => C_LEVEL_STATEMENT
175765 ,p_module => l_log_module);
175766
175767 END IF;
175768
175769
175770 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
175771 trace
175772 (p_msg => 'END of insert_sources_278'
175773 ,p_level => C_LEVEL_PROCEDURE
175774 ,p_module => l_log_module);
175775 END IF;
175776 EXCEPTION
175777 WHEN xla_exceptions_pkg.application_exception THEN
175778 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
175779 trace
175780 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
175781 ,p_level => C_LEVEL_EXCEPTION
175782 ,p_module => l_log_module);
175783 END IF;
175784 RAISE;
175785 WHEN OTHERS THEN
175786 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
175787 trace
175788 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
175789 ,p_level => C_LEVEL_EXCEPTION
175790 ,p_module => l_log_module);
175791 END IF;
175792 xla_exceptions_pkg.raise_message
175793 (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_278');
175794 END insert_sources_278;
175795 --
175796
175797 ---------------------------------------
175798 --
175799 -- PRIVATE FUNCTION
175800 -- EventType_278
175801 --
175802 ----------------------------------------
175803 --
175804 FUNCTION EventType_278
175805 (p_application_id IN NUMBER
175806 ,p_base_ledger_id IN NUMBER
175807 ,p_target_ledger_id IN NUMBER
175808 ,p_language IN VARCHAR2
175809 ,p_currency_code IN VARCHAR2
175810 ,p_sla_ledger_id IN NUMBER
175811 ,p_pad_start_date IN DATE
175812 ,p_pad_end_date IN DATE
175813 ,p_primary_ledger_id IN NUMBER)
175814 RETURN BOOLEAN IS
175815 --
175816 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'UDIR_INTERORG_RCPT_NO_TP';
175817 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'USER_DEFINE';
175818
175819 l_calculate_acctd_flag VARCHAR2(1) :='Y';
175820 l_calculate_g_l_flag VARCHAR2(1) :='Y';
175821 --
175822 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
175823 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
175824 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
175825 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
175826 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
175827 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
175828 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
175829 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
175830 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
175831 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
175832 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
175833 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
175834 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
175835 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
175836 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
175837 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
175838 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
175839 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
175840 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
175841 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
175842 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
175843 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
175844 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
175845 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
175846 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
175847 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
175848
175849 l_event_id NUMBER;
175850 l_previous_event_id NUMBER;
175851 l_first_event_id NUMBER;
175852 l_last_event_id NUMBER;
175853
175854 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
175855 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
175856 --
175857 --
175858 l_result BOOLEAN := TRUE;
175859 l_rows NUMBER := 1000;
175860 l_event_type_name VARCHAR2(80) := 'User-defined Direct Interorg Receipt, No Transfer Price';
175861 l_event_class_name VARCHAR2(80) := 'User Defined Inventory Transaction Class';
175862 l_description VARCHAR2(4000);
175863 l_transaction_reversal NUMBER;
175864 l_ae_header_id NUMBER;
175865 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
175866 l_log_module VARCHAR2(240);
175867 --
175868 l_acct_reversal_source VARCHAR2(30);
175869 l_trx_reversal_source VARCHAR2(30);
175870
175871 l_continue_with_lines BOOLEAN := TRUE;
175872 --
175873 l_acc_rev_gl_date_source DATE; -- 4262811
175874 --
175875 type t_array_event_id is table of number index by binary_integer;
175876
175877 l_rec_array_event t_rec_array_event;
175878 l_null_rec_array_event t_rec_array_event;
175879 l_array_ae_header_id xla_number_array_type;
175880 l_actual_flag VARCHAR2(1) := NULL;
175881 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
175882 l_balance_type_code VARCHAR2(1) :=NULL;
175883 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
175884
175885 --
175886 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
175887 --
175888
175889 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
175890 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
175891
175892 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
175893 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
175894 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
175895 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
175896 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
175897 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
175898 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
175899 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
175900 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
175901
175902 l_array_source_12 t_array_source_12;
175903 l_array_source_12_meaning t_array_lookup_meaning;
175904 l_array_source_38 t_array_source_38;
175905 l_array_source_38_meaning t_array_lookup_meaning;
175906
175907 l_array_source_4 t_array_source_4;
175908 l_array_source_11 t_array_source_11;
175909 l_array_source_15 t_array_source_15;
175910 l_array_source_18 t_array_source_18;
175911 l_array_source_19 t_array_source_19;
175912 l_array_source_20 t_array_source_20;
175913 l_array_source_21 t_array_source_21;
175914 l_array_source_22 t_array_source_22;
175915 l_array_source_24 t_array_source_24;
175916
175917 --
175918 CURSOR header_cur
175919 IS
175920 SELECT /*+ leading(xet) cardinality(xet,1) */
175921 -- Event Type Code: UDIR_INTERORG_RCPT_NO_TP
175922 -- Event Class Code: USER_DEFINE
175923 xet.entity_id
175924 , xet.legal_entity_id
175925 , xet.entity_code
175926 , xet.transaction_number
175927 , xet.event_id
175928 , xet.event_class_code
175929 , xet.event_type_code
175930 , xet.event_number
175931 , xet.event_date
175932 , xet.transaction_date
175933 , xet.reference_num_1
175934 , xet.reference_num_2
175935 , xet.reference_num_3
175936 , xet.reference_num_4
175937 , xet.reference_char_1
175938 , xet.reference_char_2
175939 , xet.reference_char_3
175940 , xet.reference_char_4
175941 , xet.reference_date_1
175942 , xet.reference_date_2
175943 , xet.reference_date_3
175944 , xet.reference_date_4
175945 , xet.event_created_by
175946 , xet.budgetary_control_flag
175947 , h1.DISTRIBUTION_TYPE source_12
175948 , fvl12.meaning source_12_meaning
175949 , h1.TRANSFER_TO_GL_INDICATOR source_38
175950 , fvl38.meaning source_38_meaning
175951 FROM xla_events_gt xet
175952 , CST_XLA_INV_HEADERS_V h1
175953 , fnd_lookup_values fvl12
175954 , fnd_lookup_values fvl38
175955 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
175956 and xet.event_type_code = C_EVENT_TYPE_CODE
175957 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
175958 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
175959 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
175960 AND fvl12.view_application_id(+) = 700
175961 AND fvl12.language(+) = USERENV('LANG')
175962 AND fvl38.lookup_type(+) = 'YES_NO'
175963 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
175964 AND fvl38.view_application_id(+) = 0
175965 AND fvl38.language(+) = USERENV('LANG')
175966
175967 ORDER BY event_id
175968 ;
175969
175970
175971 --
175972 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
175973 IS
175974 SELECT /*+ leading(xet) cardinality(xet,1) */
175975 -- Event Type Code: UDIR_INTERORG_RCPT_NO_TP
175976 -- Event Class Code: USER_DEFINE
175977 xet.entity_id
175978 ,xet.legal_entity_id
175979 ,xet.entity_code
175980 ,xet.transaction_number
175981 ,xet.event_id
175982 ,xet.event_class_code
175983 ,xet.event_type_code
175984 ,xet.event_number
175985 ,xet.event_date
175986 ,xet.transaction_date
175987 ,xet.reference_num_1
175988 ,xet.reference_num_2
175989 ,xet.reference_num_3
175990 ,xet.reference_num_4
175991 ,xet.reference_char_1
175992 ,xet.reference_char_2
175993 ,xet.reference_char_3
175994 ,xet.reference_char_4
175995 ,xet.reference_date_1
175996 ,xet.reference_date_2
175997 ,xet.reference_date_3
175998 ,xet.reference_date_4
175999 ,xet.event_created_by
176000 ,xet.budgetary_control_flag , l2.LINE_NUMBER
176001 , l2.CODE_COMBINATION_ID source_4
176002 , l2.DISTRIBUTION_IDENTIFIER source_11
176003 , l2.CURRENCY_CODE source_15
176004 , l2.ENTERED_AMOUNT source_18
176005 , l2.CURRENCY_CONVERSION_DATE source_19
176006 , l2.CURRENCY_CONVERSION_RATE source_20
176007 , l2.CURRENCY_CONVERSION_TYPE source_21
176008 , l2.ACCOUNTED_AMOUNT source_22
176009 , l2.ACCOUNTING_LINE_TYPE_CODE source_24
176010 FROM xla_events_gt xet
176011 , CST_XLA_INV_LINES_V l2
176012 WHERE xet.event_id between x_first_event_id and x_last_event_id
176013 and xet.event_date between p_pad_start_date and p_pad_end_date
176014 and xet.event_type_code = C_EVENT_TYPE_CODE
176015 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
176016 ;
176017
176018 --
176019 BEGIN
176020 IF g_log_enabled THEN
176021 l_log_module := C_DEFAULT_MODULE||'.EventType_278';
176022 END IF;
176023 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
176024 trace
176025 (p_msg => 'BEGIN of EventType_278'
176026 ,p_level => C_LEVEL_PROCEDURE
176027 ,p_module => l_log_module);
176028 END IF;
176029
176030 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
176031 trace
176032 (p_msg => 'p_application_id = '||p_application_id||
176033 ' - p_base_ledger_id = '||p_base_ledger_id||
176034 ' - p_target_ledger_id = '||p_target_ledger_id||
176035 ' - p_language = '||p_language||
176036 ' - p_currency_code = '||p_currency_code||
176037 ' - p_sla_ledger_id = '||p_sla_ledger_id
176038 ,p_level => C_LEVEL_STATEMENT
176039 ,p_module => l_log_module);
176040 END IF;
176041 --
176042 -- initialze arrays
176043 --
176044 g_array_event.DELETE;
176045 l_rec_array_event := l_null_rec_array_event;
176046 --
176047 --------------------------------------
176048 -- 4262811 Initialze MPA Line Number
176049 --------------------------------------
176050 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
176051
176052 --
176053
176054 --
176055 OPEN header_cur;
176056 --
176057 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
176058 trace
176059 (p_msg => 'SQL - FETCH header_cur'
176060 ,p_level => C_LEVEL_STATEMENT
176061 ,p_module => l_log_module);
176062 END IF;
176063 --
176064 LOOP
176065 FETCH header_cur BULK COLLECT INTO
176066 l_array_entity_id
176067 , l_array_legal_entity_id
176068 , l_array_entity_code
176069 , l_array_transaction_num
176070 , l_array_event_id
176071 , l_array_class_code
176072 , l_array_event_type
176073 , l_array_event_number
176074 , l_array_event_date
176075 , l_array_transaction_date
176076 , l_array_reference_num_1
176077 , l_array_reference_num_2
176078 , l_array_reference_num_3
176079 , l_array_reference_num_4
176080 , l_array_reference_char_1
176081 , l_array_reference_char_2
176082 , l_array_reference_char_3
176083 , l_array_reference_char_4
176084 , l_array_reference_date_1
176085 , l_array_reference_date_2
176086 , l_array_reference_date_3
176087 , l_array_reference_date_4
176088 , l_array_event_created_by
176089 , l_array_budgetary_control_flag
176090 , l_array_source_12
176091 , l_array_source_12_meaning
176092 , l_array_source_38
176093 , l_array_source_38_meaning
176094 LIMIT l_rows;
176095 --
176096 IF (C_LEVEL_EVENT >= g_log_level) THEN
176097 trace
176098 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
176099 ,p_level => C_LEVEL_EVENT
176100 ,p_module => l_log_module);
176101 END IF;
176102 --
176103 EXIT WHEN l_array_entity_id.COUNT = 0;
176104
176105 -- initialize arrays
176106 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
176107 XLA_AE_LINES_PKG.g_rec_lines := NULL;
176108
176109 --
176110 -- Bug 4458708
176111 --
176112 XLA_AE_LINES_PKG.g_LineNumber := 0;
176113
176114
176115 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
176116 g_last_hdr_idx := l_array_event_id.LAST;
176117 --
176118 -- loop for the headers. Each iteration is for each header extract row
176119 -- fetched in header cursor
176120 --
176121 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
176122
176123 --
176124 -- set event info as cache for other routines to refer event attributes
176125 --
176126 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
176127 (p_application_id => p_application_id
176128 ,p_primary_ledger_id => p_primary_ledger_id
176129 ,p_base_ledger_id => p_base_ledger_id
176130 ,p_target_ledger_id => p_target_ledger_id
176131 ,p_entity_id => l_array_entity_id(hdr_idx)
176132 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
176133 ,p_entity_code => l_array_entity_code(hdr_idx)
176134 ,p_transaction_num => l_array_transaction_num(hdr_idx)
176135 ,p_event_id => l_array_event_id(hdr_idx)
176136 ,p_event_class_code => l_array_class_code(hdr_idx)
176137 ,p_event_type_code => l_array_event_type(hdr_idx)
176138 ,p_event_number => l_array_event_number(hdr_idx)
176139 ,p_event_date => l_array_event_date(hdr_idx)
176140 ,p_transaction_date => l_array_transaction_date(hdr_idx)
176141 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
176142 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
176143 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
176144 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
176145 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
176146 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
176147 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
176148 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
176149 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
176150 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
176151 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
176152 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
176153 ,p_event_created_by => l_array_event_created_by(hdr_idx)
176154 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
176155
176156 --
176157 -- set the status of entry to C_VALID (0)
176158 --
176159 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
176160
176161 --
176162 -- initialize a row for ae header
176163 --
176164 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
176165
176166 l_event_id := l_array_event_id(hdr_idx);
176167
176168 --
176169 -- storing the hdr_idx for event. May be used by line cursor.
176170 --
176171 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
176172
176173 --
176174 -- store sources from header extract. This can be improved to
176175 -- store only those sources from header extract that may be used in lines
176176 --
176177
176178 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
176179 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
176180 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
176181 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
176182
176183 --
176184 -- initilaize the status of ae headers for diffrent balance types
176185 -- the status is initialised to C_NOT_CREATED (2)
176186 --
176187 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
176188 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
176189 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
176190
176191 --
176192 -- call api to validate and store accounting attributes for header
176193 --
176194
176195 ------------------------------------------------------------
176196 -- Accrual Reversal : to get date for Standard Source (NONE)
176197 ------------------------------------------------------------
176198 l_acc_rev_gl_date_source := NULL;
176199
176200 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
176201 l_rec_acct_attrs.array_date_value(1) :=
176202 xla_ae_sources_pkg.GetSystemSourceDate(
176203 p_source_code => 'XLA_REFERENCE_DATE_1'
176204 , p_source_type_code => 'Y'
176205 , p_source_application_id => 602
176206 );
176207 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_TRANSFER_FLAG';
176208 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
176209
176210
176211 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
176212
176213 XLA_AE_HEADER_PKG.SetJeCategoryName;
176214
176215 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
176216 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
176217 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
176218 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
176219 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
176220
176221
176222 -- No header level analytical criteria
176223
176224 --
176225 --accounting attribute enhancement, bug 3612931
176226 --
176227 l_trx_reversal_source := SUBSTR(NULL, 1,30);
176228
176229 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
176230 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
176231
176232 xla_accounting_err_pkg.build_message
176233 (p_appli_s_name => 'XLA'
176234 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
176235 ,p_token_1 => 'ACCT_ATTR_NAME'
176236 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
176237 ,p_token_2 => 'PRODUCT_NAME'
176238 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
176239 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
176240 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
176241 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
176242
176243 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
176244 --
176245 -- following sets the accounting attributes needed to reverse
176246 -- accounting for a distributeion
176247 --
176248 xla_ae_lines_pkg.SetTrxReversalAttrs
176249 (p_event_id => l_event_id
176250 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
176251 ,p_trx_reversal_source => l_trx_reversal_source);
176252
176253 END IF;
176254
176255
176256 ----------------------------------------------------------------
176257 -- 4262811 - update the header statuses to invalid in need be
176258 ----------------------------------------------------------------
176259 --
176260 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
176261
176262
176263 -----------------------------------------------
176264 -- No accrual reversal for the event class/type
176265 -----------------------------------------------
176266 ----------------------------------------------------------------
176267
176268 --
176269 -- this ends the header loop iteration for one bulk fetch
176270 --
176271 END LOOP;
176272
176273 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
176274 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
176275
176276 --
176277 -- insert dummy rows into lines gt table that were created due to
176278 -- transaction reversals
176279 --
176280 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
176281 l_result := XLA_AE_LINES_PKG.InsertLines;
176282 END IF;
176283
176284 --
176285 -- reset the temp_line_num for each set of events fetched from header
176286 -- cursor rather than doing it for each new event in line cursor
176287 -- Bug 3939231
176288 --
176289 xla_ae_lines_pkg.g_temp_line_num := 0;
176290
176291
176292
176293 --
176294 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
176295 --
176296 --
176297 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
176298
176299 trace
176300 (p_msg => 'SQL - FETCH line_cur'
176301 ,p_level => C_LEVEL_STATEMENT
176302 ,p_module => l_log_module);
176303
176304 END IF;
176305 --
176306 --
176307 LOOP
176308 --
176309 FETCH line_cur BULK COLLECT INTO
176310 l_array_entity_id
176311 , l_array_legal_entity_id
176312 , l_array_entity_code
176313 , l_array_transaction_num
176314 , l_array_event_id
176315 , l_array_class_code
176316 , l_array_event_type
176317 , l_array_event_number
176318 , l_array_event_date
176319 , l_array_transaction_date
176320 , l_array_reference_num_1
176321 , l_array_reference_num_2
176322 , l_array_reference_num_3
176323 , l_array_reference_num_4
176324 , l_array_reference_char_1
176325 , l_array_reference_char_2
176326 , l_array_reference_char_3
176327 , l_array_reference_char_4
176328 , l_array_reference_date_1
176329 , l_array_reference_date_2
176330 , l_array_reference_date_3
176331 , l_array_reference_date_4
176332 , l_array_event_created_by
176333 , l_array_budgetary_control_flag
176334 , l_array_extract_line_num
176335 , l_array_source_4
176336 , l_array_source_11
176337 , l_array_source_15
176338 , l_array_source_18
176339 , l_array_source_19
176340 , l_array_source_20
176341 , l_array_source_21
176342 , l_array_source_22
176343 , l_array_source_24
176344 LIMIT l_rows;
176345
176346 --
176347 IF (C_LEVEL_EVENT >= g_log_level) THEN
176348 trace
176349 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
176350 ,p_level => C_LEVEL_EVENT
176351 ,p_module => l_log_module);
176352 END IF;
176353 --
176354 EXIT WHEN l_array_entity_id.count = 0;
176355
176356 XLA_AE_LINES_PKG.g_rec_lines := null;
176357
176358 --
176359 -- Bug 4458708
176360 --
176361 XLA_AE_LINES_PKG.g_LineNumber := 0;
176362 --
176363 --
176364
176365 FOR Idx IN 1..l_array_event_id.count LOOP
176366 --
176367 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
176368 --
176369 l_event_id := l_array_event_id(idx); -- 5648433
176370
176371 --
176372 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
176373 --
176374
176375 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
176376 (g_array_event(l_event_id).array_value_num('header_index'))
176377 ,'N'
176378 ) <> 'Y'
176379 THEN
176380 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
176381 trace
176382 (p_msg => 'Trancaction revesal option is not Y '
176383 ,p_level => C_LEVEL_STATEMENT
176384 ,p_module => l_log_module);
176385 END IF;
176386
176387 --
176388 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
176389 --
176390 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
176391 --
176392 -- set event info as cache for other routines to refer event attributes
176393 --
176394
176395 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
176396 l_previous_event_id := l_event_id;
176397
176398 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
176399 (p_application_id => p_application_id
176400 ,p_primary_ledger_id => p_primary_ledger_id
176401 ,p_base_ledger_id => p_base_ledger_id
176402 ,p_target_ledger_id => p_target_ledger_id
176403 ,p_entity_id => l_array_entity_id(Idx)
176404 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
176405 ,p_entity_code => l_array_entity_code(Idx)
176406 ,p_transaction_num => l_array_transaction_num(Idx)
176407 ,p_event_id => l_array_event_id(Idx)
176408 ,p_event_class_code => l_array_class_code(Idx)
176409 ,p_event_type_code => l_array_event_type(Idx)
176410 ,p_event_number => l_array_event_number(Idx)
176411 ,p_event_date => l_array_event_date(Idx)
176412 ,p_transaction_date => l_array_transaction_date(Idx)
176413 ,p_reference_num_1 => l_array_reference_num_1(Idx)
176414 ,p_reference_num_2 => l_array_reference_num_2(Idx)
176415 ,p_reference_num_3 => l_array_reference_num_3(Idx)
176416 ,p_reference_num_4 => l_array_reference_num_4(Idx)
176417 ,p_reference_char_1 => l_array_reference_char_1(Idx)
176418 ,p_reference_char_2 => l_array_reference_char_2(Idx)
176419 ,p_reference_char_3 => l_array_reference_char_3(Idx)
176420 ,p_reference_char_4 => l_array_reference_char_4(Idx)
176421 ,p_reference_date_1 => l_array_reference_date_1(Idx)
176422 ,p_reference_date_2 => l_array_reference_date_2(Idx)
176423 ,p_reference_date_3 => l_array_reference_date_3(Idx)
176424 ,p_reference_date_4 => l_array_reference_date_4(Idx)
176425 ,p_event_created_by => l_array_event_created_by(Idx)
176426 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
176427 --
176428 END IF;
176429
176430
176431
176432 --
176433 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
176434
176435 l_acct_reversal_source := SUBSTR(NULL, 1,30);
176436
176437 IF l_continue_with_lines THEN
176438 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
176439 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
176440
176441 xla_accounting_err_pkg.build_message
176442 (p_appli_s_name => 'XLA'
176443 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
176444 ,p_token_1 => 'LINE_NUMBER'
176445 ,p_value_1 => l_array_extract_line_num(Idx)
176446 ,p_token_2 => 'PRODUCT_NAME'
176447 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
176448 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
176449 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
176450 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
176451
176452 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
176453 --
176454 -- following sets the accounting attributes needed to reverse
176455 -- accounting for a distributeion
176456 --
176457
176458 --
176459 -- 5217187
176460 --
176461 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
176462 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
176463 g_array_event(l_event_id).array_value_num('header_index'));
176464 --
176465 --
176466
176467 -- No reversal code generated
176468
176469 xla_ae_lines_pkg.SetAcctReversalAttrs
176470 (p_event_id => l_event_id
176471 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
176472 ,p_calculate_acctd_flag => l_calculate_acctd_flag
176473 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
176474 END IF;
176475
176476 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
176477 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
176478
176479 --
176480 AcctLineType_36 (
176481 p_application_id => p_application_id
176482 ,p_event_id => l_event_id
176483 ,p_calculate_acctd_flag => l_calculate_acctd_flag
176484 ,p_calculate_g_l_flag => l_calculate_g_l_flag
176485 ,p_actual_flag => l_actual_flag
176486 ,p_balance_type_code => l_balance_type_code
176487 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
176488
176489 , p_source_4 => l_array_source_4(Idx)
176490 , p_source_11 => l_array_source_11(Idx)
176491 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
176492 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
176493 , p_source_15 => l_array_source_15(Idx)
176494 , p_source_18 => l_array_source_18(Idx)
176495 , p_source_19 => l_array_source_19(Idx)
176496 , p_source_20 => l_array_source_20(Idx)
176497 , p_source_21 => l_array_source_21(Idx)
176498 , p_source_22 => l_array_source_22(Idx)
176499 , p_source_24 => l_array_source_24(Idx)
176500 );
176501 If(l_balance_type_code = 'A') THEN
176502 l_actual_gain_loss_ref := l_gain_or_loss_ref;
176503 END IF;
176504
176505 --
176506
176507
176508 --
176509 AcctLineType_59 (
176510 p_application_id => p_application_id
176511 ,p_event_id => l_event_id
176512 ,p_calculate_acctd_flag => l_calculate_acctd_flag
176513 ,p_calculate_g_l_flag => l_calculate_g_l_flag
176514 ,p_actual_flag => l_actual_flag
176515 ,p_balance_type_code => l_balance_type_code
176516 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
176517
176518 , p_source_4 => l_array_source_4(Idx)
176519 , p_source_11 => l_array_source_11(Idx)
176520 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
176521 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
176522 , p_source_15 => l_array_source_15(Idx)
176523 , p_source_18 => l_array_source_18(Idx)
176524 , p_source_19 => l_array_source_19(Idx)
176525 , p_source_20 => l_array_source_20(Idx)
176526 , p_source_21 => l_array_source_21(Idx)
176527 , p_source_22 => l_array_source_22(Idx)
176528 , p_source_24 => l_array_source_24(Idx)
176529 );
176530 If(l_balance_type_code = 'A') THEN
176531 l_actual_gain_loss_ref := l_gain_or_loss_ref;
176532 END IF;
176533
176534 --
176535
176536
176537 --
176538 AcctLineType_70 (
176539 p_application_id => p_application_id
176540 ,p_event_id => l_event_id
176541 ,p_calculate_acctd_flag => l_calculate_acctd_flag
176542 ,p_calculate_g_l_flag => l_calculate_g_l_flag
176543 ,p_actual_flag => l_actual_flag
176544 ,p_balance_type_code => l_balance_type_code
176545 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
176546
176547 , p_source_4 => l_array_source_4(Idx)
176548 , p_source_11 => l_array_source_11(Idx)
176549 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
176550 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
176551 , p_source_15 => l_array_source_15(Idx)
176552 , p_source_18 => l_array_source_18(Idx)
176553 , p_source_19 => l_array_source_19(Idx)
176554 , p_source_20 => l_array_source_20(Idx)
176555 , p_source_21 => l_array_source_21(Idx)
176556 , p_source_22 => l_array_source_22(Idx)
176557 , p_source_24 => l_array_source_24(Idx)
176558 );
176559 If(l_balance_type_code = 'A') THEN
176560 l_actual_gain_loss_ref := l_gain_or_loss_ref;
176561 END IF;
176562
176563 --
176564
176565
176566 --
176567 AcctLineType_92 (
176568 p_application_id => p_application_id
176569 ,p_event_id => l_event_id
176570 ,p_calculate_acctd_flag => l_calculate_acctd_flag
176571 ,p_calculate_g_l_flag => l_calculate_g_l_flag
176572 ,p_actual_flag => l_actual_flag
176573 ,p_balance_type_code => l_balance_type_code
176574 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
176575
176576 , p_source_4 => l_array_source_4(Idx)
176577 , p_source_11 => l_array_source_11(Idx)
176578 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
176579 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
176580 , p_source_15 => l_array_source_15(Idx)
176581 , p_source_18 => l_array_source_18(Idx)
176582 , p_source_19 => l_array_source_19(Idx)
176583 , p_source_20 => l_array_source_20(Idx)
176584 , p_source_21 => l_array_source_21(Idx)
176585 , p_source_22 => l_array_source_22(Idx)
176586 , p_source_24 => l_array_source_24(Idx)
176587 );
176588 If(l_balance_type_code = 'A') THEN
176589 l_actual_gain_loss_ref := l_gain_or_loss_ref;
176590 END IF;
176591
176592 --
176593
176594
176595 --
176596 AcctLineType_106 (
176597 p_application_id => p_application_id
176598 ,p_event_id => l_event_id
176599 ,p_calculate_acctd_flag => l_calculate_acctd_flag
176600 ,p_calculate_g_l_flag => l_calculate_g_l_flag
176601 ,p_actual_flag => l_actual_flag
176602 ,p_balance_type_code => l_balance_type_code
176603 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
176604
176605 , p_source_4 => l_array_source_4(Idx)
176606 , p_source_11 => l_array_source_11(Idx)
176607 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
176608 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
176609 , p_source_15 => l_array_source_15(Idx)
176610 , p_source_18 => l_array_source_18(Idx)
176611 , p_source_19 => l_array_source_19(Idx)
176612 , p_source_20 => l_array_source_20(Idx)
176613 , p_source_21 => l_array_source_21(Idx)
176614 , p_source_22 => l_array_source_22(Idx)
176615 , p_source_24 => l_array_source_24(Idx)
176616 );
176617 If(l_balance_type_code = 'A') THEN
176618 l_actual_gain_loss_ref := l_gain_or_loss_ref;
176619 END IF;
176620
176621 --
176622
176623
176624 --
176625 AcctLineType_137 (
176626 p_application_id => p_application_id
176627 ,p_event_id => l_event_id
176628 ,p_calculate_acctd_flag => l_calculate_acctd_flag
176629 ,p_calculate_g_l_flag => l_calculate_g_l_flag
176630 ,p_actual_flag => l_actual_flag
176631 ,p_balance_type_code => l_balance_type_code
176632 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
176633
176634 , p_source_4 => l_array_source_4(Idx)
176635 , p_source_11 => l_array_source_11(Idx)
176636 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
176637 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
176638 , p_source_15 => l_array_source_15(Idx)
176639 , p_source_18 => l_array_source_18(Idx)
176640 , p_source_19 => l_array_source_19(Idx)
176641 , p_source_20 => l_array_source_20(Idx)
176642 , p_source_21 => l_array_source_21(Idx)
176643 , p_source_22 => l_array_source_22(Idx)
176644 , p_source_24 => l_array_source_24(Idx)
176645 );
176646 If(l_balance_type_code = 'A') THEN
176647 l_actual_gain_loss_ref := l_gain_or_loss_ref;
176648 END IF;
176649
176650 --
176651
176652
176653 --
176654 AcctLineType_167 (
176655 p_application_id => p_application_id
176656 ,p_event_id => l_event_id
176657 ,p_calculate_acctd_flag => l_calculate_acctd_flag
176658 ,p_calculate_g_l_flag => l_calculate_g_l_flag
176659 ,p_actual_flag => l_actual_flag
176660 ,p_balance_type_code => l_balance_type_code
176661 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
176662
176663 , p_source_4 => l_array_source_4(Idx)
176664 , p_source_11 => l_array_source_11(Idx)
176665 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
176666 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
176667 , p_source_15 => l_array_source_15(Idx)
176668 , p_source_18 => l_array_source_18(Idx)
176669 , p_source_19 => l_array_source_19(Idx)
176670 , p_source_20 => l_array_source_20(Idx)
176671 , p_source_21 => l_array_source_21(Idx)
176672 , p_source_22 => l_array_source_22(Idx)
176673 , p_source_24 => l_array_source_24(Idx)
176674 );
176675 If(l_balance_type_code = 'A') THEN
176676 l_actual_gain_loss_ref := l_gain_or_loss_ref;
176677 END IF;
176678
176679 --
176680
176681
176682 --
176683 AcctLineType_194 (
176684 p_application_id => p_application_id
176685 ,p_event_id => l_event_id
176686 ,p_calculate_acctd_flag => l_calculate_acctd_flag
176687 ,p_calculate_g_l_flag => l_calculate_g_l_flag
176688 ,p_actual_flag => l_actual_flag
176689 ,p_balance_type_code => l_balance_type_code
176690 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
176691
176692 , p_source_4 => l_array_source_4(Idx)
176693 , p_source_11 => l_array_source_11(Idx)
176694 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
176695 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
176696 , p_source_15 => l_array_source_15(Idx)
176697 , p_source_18 => l_array_source_18(Idx)
176698 , p_source_19 => l_array_source_19(Idx)
176699 , p_source_20 => l_array_source_20(Idx)
176700 , p_source_21 => l_array_source_21(Idx)
176701 , p_source_22 => l_array_source_22(Idx)
176702 , p_source_24 => l_array_source_24(Idx)
176703 );
176704 If(l_balance_type_code = 'A') THEN
176705 l_actual_gain_loss_ref := l_gain_or_loss_ref;
176706 END IF;
176707
176708 --
176709
176710
176711 --
176712 AcctLineType_220 (
176713 p_application_id => p_application_id
176714 ,p_event_id => l_event_id
176715 ,p_calculate_acctd_flag => l_calculate_acctd_flag
176716 ,p_calculate_g_l_flag => l_calculate_g_l_flag
176717 ,p_actual_flag => l_actual_flag
176718 ,p_balance_type_code => l_balance_type_code
176719 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
176720
176721 , p_source_4 => l_array_source_4(Idx)
176722 , p_source_11 => l_array_source_11(Idx)
176723 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
176724 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
176725 , p_source_15 => l_array_source_15(Idx)
176726 , p_source_18 => l_array_source_18(Idx)
176727 , p_source_19 => l_array_source_19(Idx)
176728 , p_source_20 => l_array_source_20(Idx)
176729 , p_source_21 => l_array_source_21(Idx)
176730 , p_source_22 => l_array_source_22(Idx)
176731 , p_source_24 => l_array_source_24(Idx)
176732 );
176733 If(l_balance_type_code = 'A') THEN
176734 l_actual_gain_loss_ref := l_gain_or_loss_ref;
176735 END IF;
176736
176737 --
176738
176739 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
176740 -- or secondary ledger that has different currency with primary
176741 -- or alc that is calculated by sla
176742 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
176743 (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'))
176744
176745 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
176746 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
176747 AND (l_actual_flag = 'A')) THEN
176748 XLA_AE_LINES_PKG.CreateGainOrLossLines(
176749 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
176750 ,p_application_id => p_application_id
176751 ,p_amb_context_code => 'DEFAULT'
176752 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
176753 ,p_event_class_code => C_EVENT_CLASS_CODE
176754 ,p_event_type_code => C_EVENT_TYPE_CODE
176755
176756 ,p_gain_ccid => -1
176757 ,p_loss_ccid => -1
176758
176759 ,p_actual_flag => l_actual_flag
176760 ,p_enc_flag => null
176761 ,p_actual_g_l_ref => l_actual_gain_loss_ref
176762 ,p_enc_g_l_ref => null
176763 );
176764 END IF;
176765 END IF;
176766 END IF;
176767
176768 ELSE
176769 --
176770 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
176771 --
176772 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
176773 trace
176774 (p_msg => 'Trancaction revesal option is Y'
176775 ,p_level => C_LEVEL_STATEMENT
176776 ,p_module => l_log_module);
176777 END IF;
176778 END IF;
176779
176780 END LOOP;
176781 l_result := XLA_AE_LINES_PKG.InsertLines ;
176782 end loop;
176783 close line_cur;
176784
176785
176786 --
176787 -- insert headers into xla_ae_headers_gt table
176788 --
176789 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
176790
176791 -- insert into errors table here.
176792
176793 END LOOP;
176794
176795 --
176796 -- 4865292
176797 --
176798 -- Compare g_hdr_extract_count with event count in
176799 -- CreateHeadersAndLines.
176800 --
176801 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
176802
176803 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
176804 trace (p_msg => '# rows extracted from header extract objects '
176805 || ' (running total): '
176806 || g_hdr_extract_count
176807 ,p_level => C_LEVEL_STATEMENT
176808 ,p_module => l_log_module);
176809 END IF;
176810
176811 CLOSE header_cur;
176812 --
176813
176814 --
176815 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
176816 trace
176817 (p_msg => 'END of EventType_278'
176818 ,p_level => C_LEVEL_PROCEDURE
176819 ,p_module => l_log_module);
176820 END IF;
176821 --
176822 RETURN l_result;
176823 EXCEPTION
176824 WHEN xla_exceptions_pkg.application_exception THEN
176825
176826 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
176827
176828
176829 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
176830
176831 RAISE;
176832
176833 WHEN NO_DATA_FOUND THEN
176834
176835 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
176836 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
176837
176838 FOR header_record IN header_cur
176839 LOOP
176840 l_array_header_events(header_record.event_id) := header_record.event_id;
176841 END LOOP;
176842
176843 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
176844 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
176845
176846 fnd_file.put_line(fnd_file.LOG, ' ');
176847 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
176848 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
176849 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
176850
176851 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
176852 LOOP
176853 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
176854 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
176855 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
176856 END IF;
176857 END LOOP;
176858
176859 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
176860 fnd_file.put_line(fnd_file.LOG, ' ');
176861
176862
176863 xla_exceptions_pkg.raise_message
176864 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventType_278');
176865
176866
176867 WHEN OTHERS THEN
176868 xla_exceptions_pkg.raise_message
176869 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventType_278');
176870 END EventType_278;
176871 --
176872
176873 ---------------------------------------
176874 --
176875 -- PRIVATE PROCEDURE
176876 -- insert_sources_279
176877 --
176878 ----------------------------------------
176879 --
176880 PROCEDURE insert_sources_279(
176881 p_target_ledger_id IN NUMBER
176882 , p_language IN VARCHAR2
176883 , p_sla_ledger_id IN NUMBER
176884 , p_pad_start_date IN DATE
176885 , p_pad_end_date IN DATE
176886 )
176887 IS
176888
176889 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'UDIR_INTERORG_RCPT_TP';
176890 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'USER_DEFINE';
176891 p_apps_owner VARCHAR2(30);
176892 l_log_module VARCHAR2(240);
176893 BEGIN
176894 IF g_log_enabled THEN
176895 l_log_module := C_DEFAULT_MODULE||'.insert_sources_279';
176896 END IF;
176897 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
176898
176899 trace
176900 (p_msg => 'BEGIN of insert_sources_279'
176901 ,p_level => C_LEVEL_PROCEDURE
176902 ,p_module => l_log_module);
176903
176904 END IF;
176905
176906 -- select APPS owner
176907 SELECT oracle_username
176908 INTO p_apps_owner
176909 FROM fnd_oracle_userid
176910 WHERE read_only_flag = 'U'
176911 ;
176912
176913 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
176914 trace
176915 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
176916 ' - p_language = '||p_language||
176917 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
176918 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
176919 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
176920 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
176921 ,p_level => C_LEVEL_STATEMENT
176922 ,p_module => l_log_module);
176923 END IF;
176924
176925
176926 --
176927 INSERT INTO xla_diag_sources --hdr1
176928 (
176929 event_id
176930 , ledger_id
176931 , sla_ledger_id
176932 , description_language
176933 , object_name
176934 , object_type_code
176935 , line_number
176936 , source_application_id
176937 , source_type_code
176938 , source_code
176939 , source_value
176940 , source_meaning
176941 , created_by
176942 , creation_date
176943 , last_update_date
176944 , last_updated_by
176945 , last_update_login
176946 , program_update_date
176947 , program_application_id
176948 , program_id
176949 , request_id
176950 )
176951 SELECT
176952 event_id
176953 , p_target_ledger_id
176954 , p_sla_ledger_id
176955 , p_language
176956 , object_name
176957 , object_type_code
176958 , line_number
176959 , source_application_id
176960 , source_type_code
176961 , source_code
176962 , SUBSTR(source_value ,1,1996)
176963 , SUBSTR(source_meaning,1,200)
176964 , xla_environment_pkg.g_Usr_Id
176965 , TRUNC(SYSDATE)
176966 , TRUNC(SYSDATE)
176967 , xla_environment_pkg.g_Usr_Id
176968 , xla_environment_pkg.g_Login_Id
176969 , TRUNC(SYSDATE)
176970 , xla_environment_pkg.g_Prog_Appl_Id
176971 , xla_environment_pkg.g_Prog_Id
176972 , xla_environment_pkg.g_Req_Id
176973 FROM (
176974 SELECT xet.event_id event_id
176975 , 0 line_number
176976 , CASE r
176977 WHEN 1 THEN 'CST_XLA_INV_HEADERS_V'
176978 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V'
176979
176980 ELSE null
176981 END object_name
176982 , CASE r
176983 WHEN 1 THEN 'HEADER'
176984 WHEN 2 THEN 'HEADER'
176985
176986 ELSE null
176987 END object_type_code
176988 , CASE r
176989 WHEN 1 THEN '707'
176990 WHEN 2 THEN '707'
176991
176992 ELSE null
176993 END source_application_id
176994 , 'S' source_type_code
176995 , CASE r
176996 WHEN 1 THEN 'DISTRIBUTION_TYPE'
176997 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR'
176998
176999 ELSE null
177000 END source_code
177001 , CASE r
177002 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
177003 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
177004
177005 ELSE null
177006 END source_value
177007 , CASE r
177008 WHEN 1 THEN fvl12.meaning
177009 WHEN 2 THEN fvl38.meaning
177010
177011 ELSE null
177012 END source_meaning
177013 FROM xla_events_gt xet
177014 , CST_XLA_INV_HEADERS_V h1
177015 , fnd_lookup_values fvl12
177016 , fnd_lookup_values fvl38
177017 ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
177018 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
177019 AND xet.event_type_code = C_EVENT_TYPE_CODE
177020 AND h1.event_id = xet.event_id
177021 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
177022 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
177023 AND fvl12.view_application_id(+) = 700
177024 AND fvl12.language(+) = USERENV('LANG')
177025 AND fvl38.lookup_type(+) = 'YES_NO'
177026 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
177027 AND fvl38.view_application_id(+) = 0
177028 AND fvl38.language(+) = USERENV('LANG')
177029
177030 )
177031 ;
177032 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
177033
177034 trace
177035 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
177036 ,p_level => C_LEVEL_STATEMENT
177037 ,p_module => l_log_module);
177038
177039 END IF;
177040 --
177041
177042
177043
177044 --
177045 INSERT INTO xla_diag_sources --line1
177046 (
177047 event_id
177048 , ledger_id
177049 , sla_ledger_id
177050 , description_language
177051 , object_name
177052 , object_type_code
177053 , line_number
177054 , source_application_id
177055 , source_type_code
177056 , source_code
177057 , source_value
177058 , source_meaning
177059 , created_by
177060 , creation_date
177061 , last_update_date
177062 , last_updated_by
177063 , last_update_login
177064 , program_update_date
177065 , program_application_id
177066 , program_id
177067 , request_id
177068 )
177069 SELECT event_id
177070 , p_target_ledger_id
177071 , p_sla_ledger_id
177072 , p_language
177073 , object_name
177074 , object_type_code
177075 , line_number
177076 , source_application_id
177077 , source_type_code
177078 , source_code
177079 , SUBSTR(source_value,1,1996)
177080 , SUBSTR(source_meaning,1,200)
177081 , xla_environment_pkg.g_Usr_Id
177082 , TRUNC(SYSDATE)
177083 , TRUNC(SYSDATE)
177084 , xla_environment_pkg.g_Usr_Id
177085 , xla_environment_pkg.g_Login_Id
177086 , TRUNC(SYSDATE)
177087 , xla_environment_pkg.g_Prog_Appl_Id
177088 , xla_environment_pkg.g_Prog_Id
177089 , xla_environment_pkg.g_Req_Id
177090 FROM (
177091 SELECT xet.event_id event_id
177092 , l2.line_number line_number
177093 , CASE r
177094 WHEN 1 THEN 'CST_XLA_INV_LINES_V'
177095 WHEN 2 THEN 'CST_XLA_INV_LINES_V'
177096 WHEN 3 THEN 'CST_XLA_INV_LINES_V'
177097 WHEN 4 THEN 'CST_XLA_INV_LINES_V'
177098 WHEN 5 THEN 'CST_XLA_INV_LINES_V'
177099 WHEN 6 THEN 'CST_XLA_INV_LINES_V'
177100 WHEN 7 THEN 'CST_XLA_INV_LINES_V'
177101 WHEN 8 THEN 'CST_XLA_INV_LINES_V'
177102 WHEN 9 THEN 'CST_XLA_INV_LINES_V'
177103
177104 ELSE null
177105 END object_name
177106 , CASE r
177107 WHEN 1 THEN 'LINE'
177108 WHEN 2 THEN 'LINE'
177109 WHEN 3 THEN 'LINE'
177110 WHEN 4 THEN 'LINE'
177111 WHEN 5 THEN 'LINE'
177112 WHEN 6 THEN 'LINE'
177113 WHEN 7 THEN 'LINE'
177114 WHEN 8 THEN 'LINE'
177115 WHEN 9 THEN 'LINE'
177116
177117 ELSE null
177118 END object_type_code
177119 , CASE r
177120 WHEN 1 THEN '707'
177121 WHEN 2 THEN '707'
177122 WHEN 3 THEN '707'
177123 WHEN 4 THEN '707'
177124 WHEN 5 THEN '707'
177125 WHEN 6 THEN '707'
177126 WHEN 7 THEN '707'
177127 WHEN 8 THEN '707'
177128 WHEN 9 THEN '707'
177129
177130 ELSE null
177131 END source_application_id
177132 , 'S' source_type_code
177133 , CASE r
177134 WHEN 1 THEN 'CODE_COMBINATION_ID'
177135 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER'
177136 WHEN 3 THEN 'CURRENCY_CODE'
177137 WHEN 4 THEN 'ENTERED_AMOUNT'
177138 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE'
177139 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE'
177140 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE'
177141 WHEN 8 THEN 'ACCOUNTED_AMOUNT'
177142 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE'
177143
177144 ELSE null
177145 END source_code
177146 , CASE r
177147 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
177148 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
177149 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
177150 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
177151 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
177152 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
177153 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
177154 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
177155 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
177156
177157 ELSE null
177158 END source_value
177159 , null source_meaning
177160 FROM xla_events_gt xet
177161 , CST_XLA_INV_LINES_V l2
177162 ,(select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
177163 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
177164 AND xet.event_type_code = C_EVENT_TYPE_CODE
177165 AND l2.event_id = xet.event_id
177166
177167 )
177168 ;
177169 --
177170 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
177171
177172 trace
177173 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
177174 ,p_level => C_LEVEL_STATEMENT
177175 ,p_module => l_log_module);
177176
177177 END IF;
177178
177179
177180 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
177181 trace
177182 (p_msg => 'END of insert_sources_279'
177183 ,p_level => C_LEVEL_PROCEDURE
177184 ,p_module => l_log_module);
177185 END IF;
177186 EXCEPTION
177187 WHEN xla_exceptions_pkg.application_exception THEN
177188 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
177189 trace
177190 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
177191 ,p_level => C_LEVEL_EXCEPTION
177192 ,p_module => l_log_module);
177193 END IF;
177194 RAISE;
177195 WHEN OTHERS THEN
177196 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
177197 trace
177198 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
177199 ,p_level => C_LEVEL_EXCEPTION
177200 ,p_module => l_log_module);
177201 END IF;
177202 xla_exceptions_pkg.raise_message
177203 (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_279');
177204 END insert_sources_279;
177205 --
177206
177207 ---------------------------------------
177208 --
177209 -- PRIVATE FUNCTION
177210 -- EventType_279
177211 --
177212 ----------------------------------------
177213 --
177214 FUNCTION EventType_279
177215 (p_application_id IN NUMBER
177216 ,p_base_ledger_id IN NUMBER
177217 ,p_target_ledger_id IN NUMBER
177218 ,p_language IN VARCHAR2
177219 ,p_currency_code IN VARCHAR2
177220 ,p_sla_ledger_id IN NUMBER
177221 ,p_pad_start_date IN DATE
177222 ,p_pad_end_date IN DATE
177223 ,p_primary_ledger_id IN NUMBER)
177224 RETURN BOOLEAN IS
177225 --
177226 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'UDIR_INTERORG_RCPT_TP';
177227 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'USER_DEFINE';
177228
177229 l_calculate_acctd_flag VARCHAR2(1) :='Y';
177230 l_calculate_g_l_flag VARCHAR2(1) :='Y';
177231 --
177232 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
177233 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
177234 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
177235 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
177236 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
177237 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
177238 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
177239 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
177240 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
177241 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
177242 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
177243 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
177244 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
177245 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
177246 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
177247 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
177248 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
177249 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
177250 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
177251 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
177252 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
177253 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
177254 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
177255 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
177256 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
177257 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
177258
177259 l_event_id NUMBER;
177260 l_previous_event_id NUMBER;
177261 l_first_event_id NUMBER;
177262 l_last_event_id NUMBER;
177263
177264 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
177265 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
177266 --
177267 --
177268 l_result BOOLEAN := TRUE;
177269 l_rows NUMBER := 1000;
177270 l_event_type_name VARCHAR2(80) := 'User-defined Direct Interorg Receipt, Transfer Price';
177271 l_event_class_name VARCHAR2(80) := 'User Defined Inventory Transaction Class';
177272 l_description VARCHAR2(4000);
177273 l_transaction_reversal NUMBER;
177274 l_ae_header_id NUMBER;
177275 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
177276 l_log_module VARCHAR2(240);
177277 --
177278 l_acct_reversal_source VARCHAR2(30);
177279 l_trx_reversal_source VARCHAR2(30);
177280
177281 l_continue_with_lines BOOLEAN := TRUE;
177282 --
177283 l_acc_rev_gl_date_source DATE; -- 4262811
177284 --
177285 type t_array_event_id is table of number index by binary_integer;
177286
177287 l_rec_array_event t_rec_array_event;
177288 l_null_rec_array_event t_rec_array_event;
177289 l_array_ae_header_id xla_number_array_type;
177290 l_actual_flag VARCHAR2(1) := NULL;
177291 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
177292 l_balance_type_code VARCHAR2(1) :=NULL;
177293 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
177294
177295 --
177296 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
177297 --
177298
177299 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
177300 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
177301
177302 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
177303 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
177304 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
177305 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
177306 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
177307 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
177308 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
177309 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
177310 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
177311
177312 l_array_source_12 t_array_source_12;
177313 l_array_source_12_meaning t_array_lookup_meaning;
177314 l_array_source_38 t_array_source_38;
177315 l_array_source_38_meaning t_array_lookup_meaning;
177316
177317 l_array_source_4 t_array_source_4;
177318 l_array_source_11 t_array_source_11;
177319 l_array_source_15 t_array_source_15;
177320 l_array_source_18 t_array_source_18;
177321 l_array_source_19 t_array_source_19;
177322 l_array_source_20 t_array_source_20;
177323 l_array_source_21 t_array_source_21;
177324 l_array_source_22 t_array_source_22;
177325 l_array_source_24 t_array_source_24;
177326
177327 --
177328 CURSOR header_cur
177329 IS
177330 SELECT /*+ leading(xet) cardinality(xet,1) */
177331 -- Event Type Code: UDIR_INTERORG_RCPT_TP
177332 -- Event Class Code: USER_DEFINE
177333 xet.entity_id
177334 , xet.legal_entity_id
177335 , xet.entity_code
177336 , xet.transaction_number
177337 , xet.event_id
177338 , xet.event_class_code
177339 , xet.event_type_code
177340 , xet.event_number
177341 , xet.event_date
177342 , xet.transaction_date
177343 , xet.reference_num_1
177344 , xet.reference_num_2
177345 , xet.reference_num_3
177346 , xet.reference_num_4
177347 , xet.reference_char_1
177348 , xet.reference_char_2
177349 , xet.reference_char_3
177350 , xet.reference_char_4
177351 , xet.reference_date_1
177352 , xet.reference_date_2
177353 , xet.reference_date_3
177354 , xet.reference_date_4
177355 , xet.event_created_by
177356 , xet.budgetary_control_flag
177357 , h1.DISTRIBUTION_TYPE source_12
177358 , fvl12.meaning source_12_meaning
177359 , h1.TRANSFER_TO_GL_INDICATOR source_38
177360 , fvl38.meaning source_38_meaning
177361 FROM xla_events_gt xet
177362 , CST_XLA_INV_HEADERS_V h1
177363 , fnd_lookup_values fvl12
177364 , fnd_lookup_values fvl38
177365 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
177366 and xet.event_type_code = C_EVENT_TYPE_CODE
177367 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
177368 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
177369 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
177370 AND fvl12.view_application_id(+) = 700
177371 AND fvl12.language(+) = USERENV('LANG')
177372 AND fvl38.lookup_type(+) = 'YES_NO'
177373 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
177374 AND fvl38.view_application_id(+) = 0
177375 AND fvl38.language(+) = USERENV('LANG')
177376
177377 ORDER BY event_id
177378 ;
177379
177380
177381 --
177382 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
177383 IS
177384 SELECT /*+ leading(xet) cardinality(xet,1) */
177385 -- Event Type Code: UDIR_INTERORG_RCPT_TP
177386 -- Event Class Code: USER_DEFINE
177387 xet.entity_id
177388 ,xet.legal_entity_id
177389 ,xet.entity_code
177390 ,xet.transaction_number
177391 ,xet.event_id
177392 ,xet.event_class_code
177393 ,xet.event_type_code
177394 ,xet.event_number
177395 ,xet.event_date
177396 ,xet.transaction_date
177397 ,xet.reference_num_1
177398 ,xet.reference_num_2
177399 ,xet.reference_num_3
177400 ,xet.reference_num_4
177401 ,xet.reference_char_1
177402 ,xet.reference_char_2
177403 ,xet.reference_char_3
177404 ,xet.reference_char_4
177405 ,xet.reference_date_1
177406 ,xet.reference_date_2
177407 ,xet.reference_date_3
177408 ,xet.reference_date_4
177409 ,xet.event_created_by
177410 ,xet.budgetary_control_flag , l2.LINE_NUMBER
177411 , l2.CODE_COMBINATION_ID source_4
177412 , l2.DISTRIBUTION_IDENTIFIER source_11
177413 , l2.CURRENCY_CODE source_15
177414 , l2.ENTERED_AMOUNT source_18
177415 , l2.CURRENCY_CONVERSION_DATE source_19
177416 , l2.CURRENCY_CONVERSION_RATE source_20
177417 , l2.CURRENCY_CONVERSION_TYPE source_21
177418 , l2.ACCOUNTED_AMOUNT source_22
177419 , l2.ACCOUNTING_LINE_TYPE_CODE source_24
177420 FROM xla_events_gt xet
177421 , CST_XLA_INV_LINES_V l2
177422 WHERE xet.event_id between x_first_event_id and x_last_event_id
177423 and xet.event_date between p_pad_start_date and p_pad_end_date
177424 and xet.event_type_code = C_EVENT_TYPE_CODE
177425 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
177426 ;
177427
177428 --
177429 BEGIN
177430 IF g_log_enabled THEN
177431 l_log_module := C_DEFAULT_MODULE||'.EventType_279';
177432 END IF;
177433 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
177434 trace
177435 (p_msg => 'BEGIN of EventType_279'
177436 ,p_level => C_LEVEL_PROCEDURE
177437 ,p_module => l_log_module);
177438 END IF;
177439
177440 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
177441 trace
177442 (p_msg => 'p_application_id = '||p_application_id||
177443 ' - p_base_ledger_id = '||p_base_ledger_id||
177444 ' - p_target_ledger_id = '||p_target_ledger_id||
177445 ' - p_language = '||p_language||
177446 ' - p_currency_code = '||p_currency_code||
177447 ' - p_sla_ledger_id = '||p_sla_ledger_id
177448 ,p_level => C_LEVEL_STATEMENT
177449 ,p_module => l_log_module);
177450 END IF;
177451 --
177452 -- initialze arrays
177453 --
177454 g_array_event.DELETE;
177455 l_rec_array_event := l_null_rec_array_event;
177456 --
177457 --------------------------------------
177458 -- 4262811 Initialze MPA Line Number
177459 --------------------------------------
177460 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
177461
177462 --
177463
177464 --
177465 OPEN header_cur;
177466 --
177467 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
177468 trace
177469 (p_msg => 'SQL - FETCH header_cur'
177470 ,p_level => C_LEVEL_STATEMENT
177471 ,p_module => l_log_module);
177472 END IF;
177473 --
177474 LOOP
177475 FETCH header_cur BULK COLLECT INTO
177476 l_array_entity_id
177477 , l_array_legal_entity_id
177478 , l_array_entity_code
177479 , l_array_transaction_num
177480 , l_array_event_id
177481 , l_array_class_code
177482 , l_array_event_type
177483 , l_array_event_number
177484 , l_array_event_date
177485 , l_array_transaction_date
177486 , l_array_reference_num_1
177487 , l_array_reference_num_2
177488 , l_array_reference_num_3
177489 , l_array_reference_num_4
177490 , l_array_reference_char_1
177491 , l_array_reference_char_2
177492 , l_array_reference_char_3
177493 , l_array_reference_char_4
177494 , l_array_reference_date_1
177495 , l_array_reference_date_2
177496 , l_array_reference_date_3
177497 , l_array_reference_date_4
177498 , l_array_event_created_by
177499 , l_array_budgetary_control_flag
177500 , l_array_source_12
177501 , l_array_source_12_meaning
177502 , l_array_source_38
177503 , l_array_source_38_meaning
177504 LIMIT l_rows;
177505 --
177506 IF (C_LEVEL_EVENT >= g_log_level) THEN
177507 trace
177508 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
177509 ,p_level => C_LEVEL_EVENT
177510 ,p_module => l_log_module);
177511 END IF;
177512 --
177513 EXIT WHEN l_array_entity_id.COUNT = 0;
177514
177515 -- initialize arrays
177516 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
177517 XLA_AE_LINES_PKG.g_rec_lines := NULL;
177518
177519 --
177520 -- Bug 4458708
177521 --
177522 XLA_AE_LINES_PKG.g_LineNumber := 0;
177523
177524
177525 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
177526 g_last_hdr_idx := l_array_event_id.LAST;
177527 --
177528 -- loop for the headers. Each iteration is for each header extract row
177529 -- fetched in header cursor
177530 --
177531 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
177532
177533 --
177534 -- set event info as cache for other routines to refer event attributes
177535 --
177536 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
177537 (p_application_id => p_application_id
177538 ,p_primary_ledger_id => p_primary_ledger_id
177539 ,p_base_ledger_id => p_base_ledger_id
177540 ,p_target_ledger_id => p_target_ledger_id
177541 ,p_entity_id => l_array_entity_id(hdr_idx)
177542 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
177543 ,p_entity_code => l_array_entity_code(hdr_idx)
177544 ,p_transaction_num => l_array_transaction_num(hdr_idx)
177545 ,p_event_id => l_array_event_id(hdr_idx)
177546 ,p_event_class_code => l_array_class_code(hdr_idx)
177547 ,p_event_type_code => l_array_event_type(hdr_idx)
177548 ,p_event_number => l_array_event_number(hdr_idx)
177549 ,p_event_date => l_array_event_date(hdr_idx)
177550 ,p_transaction_date => l_array_transaction_date(hdr_idx)
177551 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
177552 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
177553 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
177554 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
177555 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
177556 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
177557 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
177558 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
177559 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
177560 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
177561 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
177562 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
177563 ,p_event_created_by => l_array_event_created_by(hdr_idx)
177564 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
177565
177566 --
177567 -- set the status of entry to C_VALID (0)
177568 --
177569 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
177570
177571 --
177572 -- initialize a row for ae header
177573 --
177574 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
177575
177576 l_event_id := l_array_event_id(hdr_idx);
177577
177578 --
177579 -- storing the hdr_idx for event. May be used by line cursor.
177580 --
177581 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
177582
177583 --
177584 -- store sources from header extract. This can be improved to
177585 -- store only those sources from header extract that may be used in lines
177586 --
177587
177588 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
177589 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
177590 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
177591 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
177592
177593 --
177594 -- initilaize the status of ae headers for diffrent balance types
177595 -- the status is initialised to C_NOT_CREATED (2)
177596 --
177597 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
177598 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
177599 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
177600
177601 --
177602 -- call api to validate and store accounting attributes for header
177603 --
177604
177605 ------------------------------------------------------------
177606 -- Accrual Reversal : to get date for Standard Source (NONE)
177607 ------------------------------------------------------------
177608 l_acc_rev_gl_date_source := NULL;
177609
177610 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
177611 l_rec_acct_attrs.array_date_value(1) :=
177612 xla_ae_sources_pkg.GetSystemSourceDate(
177613 p_source_code => 'XLA_REFERENCE_DATE_1'
177614 , p_source_type_code => 'Y'
177615 , p_source_application_id => 602
177616 );
177617 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_TRANSFER_FLAG';
177618 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
177619
177620
177621 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
177622
177623 XLA_AE_HEADER_PKG.SetJeCategoryName;
177624
177625 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
177626 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
177627 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
177628 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
177629 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
177630
177631
177632 -- No header level analytical criteria
177633
177634 --
177635 --accounting attribute enhancement, bug 3612931
177636 --
177637 l_trx_reversal_source := SUBSTR(NULL, 1,30);
177638
177639 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
177640 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
177641
177642 xla_accounting_err_pkg.build_message
177643 (p_appli_s_name => 'XLA'
177644 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
177645 ,p_token_1 => 'ACCT_ATTR_NAME'
177646 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
177647 ,p_token_2 => 'PRODUCT_NAME'
177648 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
177649 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
177650 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
177651 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
177652
177653 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
177654 --
177655 -- following sets the accounting attributes needed to reverse
177656 -- accounting for a distributeion
177657 --
177658 xla_ae_lines_pkg.SetTrxReversalAttrs
177659 (p_event_id => l_event_id
177660 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
177661 ,p_trx_reversal_source => l_trx_reversal_source);
177662
177663 END IF;
177664
177665
177666 ----------------------------------------------------------------
177667 -- 4262811 - update the header statuses to invalid in need be
177668 ----------------------------------------------------------------
177669 --
177670 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
177671
177672
177673 -----------------------------------------------
177674 -- No accrual reversal for the event class/type
177675 -----------------------------------------------
177676 ----------------------------------------------------------------
177677
177678 --
177679 -- this ends the header loop iteration for one bulk fetch
177680 --
177681 END LOOP;
177682
177683 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
177684 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
177685
177686 --
177687 -- insert dummy rows into lines gt table that were created due to
177688 -- transaction reversals
177689 --
177690 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
177691 l_result := XLA_AE_LINES_PKG.InsertLines;
177692 END IF;
177693
177694 --
177695 -- reset the temp_line_num for each set of events fetched from header
177696 -- cursor rather than doing it for each new event in line cursor
177697 -- Bug 3939231
177698 --
177699 xla_ae_lines_pkg.g_temp_line_num := 0;
177700
177701
177702
177703 --
177704 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
177705 --
177706 --
177707 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
177708
177709 trace
177710 (p_msg => 'SQL - FETCH line_cur'
177711 ,p_level => C_LEVEL_STATEMENT
177712 ,p_module => l_log_module);
177713
177714 END IF;
177715 --
177716 --
177717 LOOP
177718 --
177719 FETCH line_cur BULK COLLECT INTO
177720 l_array_entity_id
177721 , l_array_legal_entity_id
177722 , l_array_entity_code
177723 , l_array_transaction_num
177724 , l_array_event_id
177725 , l_array_class_code
177726 , l_array_event_type
177727 , l_array_event_number
177728 , l_array_event_date
177729 , l_array_transaction_date
177730 , l_array_reference_num_1
177731 , l_array_reference_num_2
177732 , l_array_reference_num_3
177733 , l_array_reference_num_4
177734 , l_array_reference_char_1
177735 , l_array_reference_char_2
177736 , l_array_reference_char_3
177737 , l_array_reference_char_4
177738 , l_array_reference_date_1
177739 , l_array_reference_date_2
177740 , l_array_reference_date_3
177741 , l_array_reference_date_4
177742 , l_array_event_created_by
177743 , l_array_budgetary_control_flag
177744 , l_array_extract_line_num
177745 , l_array_source_4
177746 , l_array_source_11
177747 , l_array_source_15
177748 , l_array_source_18
177749 , l_array_source_19
177750 , l_array_source_20
177751 , l_array_source_21
177752 , l_array_source_22
177753 , l_array_source_24
177754 LIMIT l_rows;
177755
177756 --
177757 IF (C_LEVEL_EVENT >= g_log_level) THEN
177758 trace
177759 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
177760 ,p_level => C_LEVEL_EVENT
177761 ,p_module => l_log_module);
177762 END IF;
177763 --
177764 EXIT WHEN l_array_entity_id.count = 0;
177765
177766 XLA_AE_LINES_PKG.g_rec_lines := null;
177767
177768 --
177769 -- Bug 4458708
177770 --
177771 XLA_AE_LINES_PKG.g_LineNumber := 0;
177772 --
177773 --
177774
177775 FOR Idx IN 1..l_array_event_id.count LOOP
177776 --
177777 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
177778 --
177779 l_event_id := l_array_event_id(idx); -- 5648433
177780
177781 --
177782 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
177783 --
177784
177785 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
177786 (g_array_event(l_event_id).array_value_num('header_index'))
177787 ,'N'
177788 ) <> 'Y'
177789 THEN
177790 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
177791 trace
177792 (p_msg => 'Trancaction revesal option is not Y '
177793 ,p_level => C_LEVEL_STATEMENT
177794 ,p_module => l_log_module);
177795 END IF;
177796
177797 --
177798 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
177799 --
177800 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
177801 --
177802 -- set event info as cache for other routines to refer event attributes
177803 --
177804
177805 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
177806 l_previous_event_id := l_event_id;
177807
177808 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
177809 (p_application_id => p_application_id
177810 ,p_primary_ledger_id => p_primary_ledger_id
177811 ,p_base_ledger_id => p_base_ledger_id
177812 ,p_target_ledger_id => p_target_ledger_id
177813 ,p_entity_id => l_array_entity_id(Idx)
177814 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
177815 ,p_entity_code => l_array_entity_code(Idx)
177816 ,p_transaction_num => l_array_transaction_num(Idx)
177817 ,p_event_id => l_array_event_id(Idx)
177818 ,p_event_class_code => l_array_class_code(Idx)
177819 ,p_event_type_code => l_array_event_type(Idx)
177820 ,p_event_number => l_array_event_number(Idx)
177821 ,p_event_date => l_array_event_date(Idx)
177822 ,p_transaction_date => l_array_transaction_date(Idx)
177823 ,p_reference_num_1 => l_array_reference_num_1(Idx)
177824 ,p_reference_num_2 => l_array_reference_num_2(Idx)
177825 ,p_reference_num_3 => l_array_reference_num_3(Idx)
177826 ,p_reference_num_4 => l_array_reference_num_4(Idx)
177827 ,p_reference_char_1 => l_array_reference_char_1(Idx)
177828 ,p_reference_char_2 => l_array_reference_char_2(Idx)
177829 ,p_reference_char_3 => l_array_reference_char_3(Idx)
177830 ,p_reference_char_4 => l_array_reference_char_4(Idx)
177831 ,p_reference_date_1 => l_array_reference_date_1(Idx)
177832 ,p_reference_date_2 => l_array_reference_date_2(Idx)
177833 ,p_reference_date_3 => l_array_reference_date_3(Idx)
177834 ,p_reference_date_4 => l_array_reference_date_4(Idx)
177835 ,p_event_created_by => l_array_event_created_by(Idx)
177836 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
177837 --
177838 END IF;
177839
177840
177841
177842 --
177843 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
177844
177845 l_acct_reversal_source := SUBSTR(NULL, 1,30);
177846
177847 IF l_continue_with_lines THEN
177848 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
177849 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
177850
177851 xla_accounting_err_pkg.build_message
177852 (p_appli_s_name => 'XLA'
177853 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
177854 ,p_token_1 => 'LINE_NUMBER'
177855 ,p_value_1 => l_array_extract_line_num(Idx)
177856 ,p_token_2 => 'PRODUCT_NAME'
177857 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
177858 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
177859 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
177860 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
177861
177862 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
177863 --
177864 -- following sets the accounting attributes needed to reverse
177865 -- accounting for a distributeion
177866 --
177867
177868 --
177869 -- 5217187
177870 --
177871 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
177872 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
177873 g_array_event(l_event_id).array_value_num('header_index'));
177874 --
177875 --
177876
177877 -- No reversal code generated
177878
177879 xla_ae_lines_pkg.SetAcctReversalAttrs
177880 (p_event_id => l_event_id
177881 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
177882 ,p_calculate_acctd_flag => l_calculate_acctd_flag
177883 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
177884 END IF;
177885
177886 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
177887 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
177888
177889 --
177890 AcctLineType_31 (
177891 p_application_id => p_application_id
177892 ,p_event_id => l_event_id
177893 ,p_calculate_acctd_flag => l_calculate_acctd_flag
177894 ,p_calculate_g_l_flag => l_calculate_g_l_flag
177895 ,p_actual_flag => l_actual_flag
177896 ,p_balance_type_code => l_balance_type_code
177897 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
177898
177899 , p_source_4 => l_array_source_4(Idx)
177900 , p_source_11 => l_array_source_11(Idx)
177901 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
177902 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
177903 , p_source_15 => l_array_source_15(Idx)
177904 , p_source_18 => l_array_source_18(Idx)
177905 , p_source_19 => l_array_source_19(Idx)
177906 , p_source_20 => l_array_source_20(Idx)
177907 , p_source_21 => l_array_source_21(Idx)
177908 , p_source_22 => l_array_source_22(Idx)
177909 , p_source_24 => l_array_source_24(Idx)
177910 );
177911 If(l_balance_type_code = 'A') THEN
177912 l_actual_gain_loss_ref := l_gain_or_loss_ref;
177913 END IF;
177914
177915 --
177916
177917
177918 --
177919 AcctLineType_68 (
177920 p_application_id => p_application_id
177921 ,p_event_id => l_event_id
177922 ,p_calculate_acctd_flag => l_calculate_acctd_flag
177923 ,p_calculate_g_l_flag => l_calculate_g_l_flag
177924 ,p_actual_flag => l_actual_flag
177925 ,p_balance_type_code => l_balance_type_code
177926 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
177927
177928 , p_source_4 => l_array_source_4(Idx)
177929 , p_source_11 => l_array_source_11(Idx)
177930 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
177931 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
177932 , p_source_15 => l_array_source_15(Idx)
177933 , p_source_18 => l_array_source_18(Idx)
177934 , p_source_19 => l_array_source_19(Idx)
177935 , p_source_20 => l_array_source_20(Idx)
177936 , p_source_21 => l_array_source_21(Idx)
177937 , p_source_22 => l_array_source_22(Idx)
177938 , p_source_24 => l_array_source_24(Idx)
177939 );
177940 If(l_balance_type_code = 'A') THEN
177941 l_actual_gain_loss_ref := l_gain_or_loss_ref;
177942 END IF;
177943
177944 --
177945
177946
177947 --
177948 AcctLineType_77 (
177949 p_application_id => p_application_id
177950 ,p_event_id => l_event_id
177951 ,p_calculate_acctd_flag => l_calculate_acctd_flag
177952 ,p_calculate_g_l_flag => l_calculate_g_l_flag
177953 ,p_actual_flag => l_actual_flag
177954 ,p_balance_type_code => l_balance_type_code
177955 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
177956
177957 , p_source_4 => l_array_source_4(Idx)
177958 , p_source_11 => l_array_source_11(Idx)
177959 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
177960 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
177961 , p_source_15 => l_array_source_15(Idx)
177962 , p_source_18 => l_array_source_18(Idx)
177963 , p_source_19 => l_array_source_19(Idx)
177964 , p_source_20 => l_array_source_20(Idx)
177965 , p_source_21 => l_array_source_21(Idx)
177966 , p_source_22 => l_array_source_22(Idx)
177967 , p_source_24 => l_array_source_24(Idx)
177968 );
177969 If(l_balance_type_code = 'A') THEN
177970 l_actual_gain_loss_ref := l_gain_or_loss_ref;
177971 END IF;
177972
177973 --
177974
177975
177976 --
177977 AcctLineType_104 (
177978 p_application_id => p_application_id
177979 ,p_event_id => l_event_id
177980 ,p_calculate_acctd_flag => l_calculate_acctd_flag
177981 ,p_calculate_g_l_flag => l_calculate_g_l_flag
177982 ,p_actual_flag => l_actual_flag
177983 ,p_balance_type_code => l_balance_type_code
177984 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
177985
177986 , p_source_4 => l_array_source_4(Idx)
177987 , p_source_11 => l_array_source_11(Idx)
177988 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
177989 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
177990 , p_source_15 => l_array_source_15(Idx)
177991 , p_source_18 => l_array_source_18(Idx)
177992 , p_source_19 => l_array_source_19(Idx)
177993 , p_source_20 => l_array_source_20(Idx)
177994 , p_source_21 => l_array_source_21(Idx)
177995 , p_source_22 => l_array_source_22(Idx)
177996 , p_source_24 => l_array_source_24(Idx)
177997 );
177998 If(l_balance_type_code = 'A') THEN
177999 l_actual_gain_loss_ref := l_gain_or_loss_ref;
178000 END IF;
178001
178002 --
178003
178004
178005 --
178006 AcctLineType_105 (
178007 p_application_id => p_application_id
178008 ,p_event_id => l_event_id
178009 ,p_calculate_acctd_flag => l_calculate_acctd_flag
178010 ,p_calculate_g_l_flag => l_calculate_g_l_flag
178011 ,p_actual_flag => l_actual_flag
178012 ,p_balance_type_code => l_balance_type_code
178013 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
178014
178015 , p_source_4 => l_array_source_4(Idx)
178016 , p_source_11 => l_array_source_11(Idx)
178017 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
178018 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
178019 , p_source_15 => l_array_source_15(Idx)
178020 , p_source_18 => l_array_source_18(Idx)
178021 , p_source_19 => l_array_source_19(Idx)
178022 , p_source_20 => l_array_source_20(Idx)
178023 , p_source_21 => l_array_source_21(Idx)
178024 , p_source_22 => l_array_source_22(Idx)
178025 , p_source_24 => l_array_source_24(Idx)
178026 );
178027 If(l_balance_type_code = 'A') THEN
178028 l_actual_gain_loss_ref := l_gain_or_loss_ref;
178029 END IF;
178030
178031 --
178032
178033
178034 --
178035 AcctLineType_132 (
178036 p_application_id => p_application_id
178037 ,p_event_id => l_event_id
178038 ,p_calculate_acctd_flag => l_calculate_acctd_flag
178039 ,p_calculate_g_l_flag => l_calculate_g_l_flag
178040 ,p_actual_flag => l_actual_flag
178041 ,p_balance_type_code => l_balance_type_code
178042 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
178043
178044 , p_source_4 => l_array_source_4(Idx)
178045 , p_source_11 => l_array_source_11(Idx)
178046 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
178047 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
178048 , p_source_15 => l_array_source_15(Idx)
178049 , p_source_18 => l_array_source_18(Idx)
178050 , p_source_19 => l_array_source_19(Idx)
178051 , p_source_20 => l_array_source_20(Idx)
178052 , p_source_21 => l_array_source_21(Idx)
178053 , p_source_22 => l_array_source_22(Idx)
178054 , p_source_24 => l_array_source_24(Idx)
178055 );
178056 If(l_balance_type_code = 'A') THEN
178057 l_actual_gain_loss_ref := l_gain_or_loss_ref;
178058 END IF;
178059
178060 --
178061
178062
178063 --
178064 AcctLineType_168 (
178065 p_application_id => p_application_id
178066 ,p_event_id => l_event_id
178067 ,p_calculate_acctd_flag => l_calculate_acctd_flag
178068 ,p_calculate_g_l_flag => l_calculate_g_l_flag
178069 ,p_actual_flag => l_actual_flag
178070 ,p_balance_type_code => l_balance_type_code
178071 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
178072
178073 , p_source_4 => l_array_source_4(Idx)
178074 , p_source_11 => l_array_source_11(Idx)
178075 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
178076 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
178077 , p_source_15 => l_array_source_15(Idx)
178078 , p_source_18 => l_array_source_18(Idx)
178079 , p_source_19 => l_array_source_19(Idx)
178080 , p_source_20 => l_array_source_20(Idx)
178081 , p_source_21 => l_array_source_21(Idx)
178082 , p_source_22 => l_array_source_22(Idx)
178083 , p_source_24 => l_array_source_24(Idx)
178084 );
178085 If(l_balance_type_code = 'A') THEN
178086 l_actual_gain_loss_ref := l_gain_or_loss_ref;
178087 END IF;
178088
178089 --
178090
178091
178092 --
178093 AcctLineType_197 (
178094 p_application_id => p_application_id
178095 ,p_event_id => l_event_id
178096 ,p_calculate_acctd_flag => l_calculate_acctd_flag
178097 ,p_calculate_g_l_flag => l_calculate_g_l_flag
178098 ,p_actual_flag => l_actual_flag
178099 ,p_balance_type_code => l_balance_type_code
178100 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
178101
178102 , p_source_4 => l_array_source_4(Idx)
178103 , p_source_11 => l_array_source_11(Idx)
178104 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
178105 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
178106 , p_source_15 => l_array_source_15(Idx)
178107 , p_source_18 => l_array_source_18(Idx)
178108 , p_source_19 => l_array_source_19(Idx)
178109 , p_source_20 => l_array_source_20(Idx)
178110 , p_source_21 => l_array_source_21(Idx)
178111 , p_source_22 => l_array_source_22(Idx)
178112 , p_source_24 => l_array_source_24(Idx)
178113 );
178114 If(l_balance_type_code = 'A') THEN
178115 l_actual_gain_loss_ref := l_gain_or_loss_ref;
178116 END IF;
178117
178118 --
178119
178120
178121 --
178122 AcctLineType_212 (
178123 p_application_id => p_application_id
178124 ,p_event_id => l_event_id
178125 ,p_calculate_acctd_flag => l_calculate_acctd_flag
178126 ,p_calculate_g_l_flag => l_calculate_g_l_flag
178127 ,p_actual_flag => l_actual_flag
178128 ,p_balance_type_code => l_balance_type_code
178129 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
178130
178131 , p_source_4 => l_array_source_4(Idx)
178132 , p_source_11 => l_array_source_11(Idx)
178133 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
178134 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
178135 , p_source_15 => l_array_source_15(Idx)
178136 , p_source_18 => l_array_source_18(Idx)
178137 , p_source_19 => l_array_source_19(Idx)
178138 , p_source_20 => l_array_source_20(Idx)
178139 , p_source_21 => l_array_source_21(Idx)
178140 , p_source_22 => l_array_source_22(Idx)
178141 , p_source_24 => l_array_source_24(Idx)
178142 );
178143 If(l_balance_type_code = 'A') THEN
178144 l_actual_gain_loss_ref := l_gain_or_loss_ref;
178145 END IF;
178146
178147 --
178148
178149 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
178150 -- or secondary ledger that has different currency with primary
178151 -- or alc that is calculated by sla
178152 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
178153 (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'))
178154
178155 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
178156 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
178157 AND (l_actual_flag = 'A')) THEN
178158 XLA_AE_LINES_PKG.CreateGainOrLossLines(
178159 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
178160 ,p_application_id => p_application_id
178161 ,p_amb_context_code => 'DEFAULT'
178162 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
178163 ,p_event_class_code => C_EVENT_CLASS_CODE
178164 ,p_event_type_code => C_EVENT_TYPE_CODE
178165
178166 ,p_gain_ccid => -1
178167 ,p_loss_ccid => -1
178168
178169 ,p_actual_flag => l_actual_flag
178170 ,p_enc_flag => null
178171 ,p_actual_g_l_ref => l_actual_gain_loss_ref
178172 ,p_enc_g_l_ref => null
178173 );
178174 END IF;
178175 END IF;
178176 END IF;
178177
178178 ELSE
178179 --
178180 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
178181 --
178182 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
178183 trace
178184 (p_msg => 'Trancaction revesal option is Y'
178185 ,p_level => C_LEVEL_STATEMENT
178186 ,p_module => l_log_module);
178187 END IF;
178188 END IF;
178189
178190 END LOOP;
178191 l_result := XLA_AE_LINES_PKG.InsertLines ;
178192 end loop;
178193 close line_cur;
178194
178195
178196 --
178197 -- insert headers into xla_ae_headers_gt table
178198 --
178199 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
178200
178201 -- insert into errors table here.
178202
178203 END LOOP;
178204
178205 --
178206 -- 4865292
178207 --
178208 -- Compare g_hdr_extract_count with event count in
178209 -- CreateHeadersAndLines.
178210 --
178211 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
178212
178213 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
178214 trace (p_msg => '# rows extracted from header extract objects '
178215 || ' (running total): '
178216 || g_hdr_extract_count
178217 ,p_level => C_LEVEL_STATEMENT
178218 ,p_module => l_log_module);
178219 END IF;
178220
178221 CLOSE header_cur;
178222 --
178223
178224 --
178225 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
178226 trace
178227 (p_msg => 'END of EventType_279'
178228 ,p_level => C_LEVEL_PROCEDURE
178229 ,p_module => l_log_module);
178230 END IF;
178231 --
178232 RETURN l_result;
178233 EXCEPTION
178234 WHEN xla_exceptions_pkg.application_exception THEN
178235
178236 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
178237
178238
178239 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
178240
178241 RAISE;
178242
178243 WHEN NO_DATA_FOUND THEN
178244
178245 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
178246 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
178247
178248 FOR header_record IN header_cur
178249 LOOP
178250 l_array_header_events(header_record.event_id) := header_record.event_id;
178251 END LOOP;
178252
178253 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
178254 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
178255
178256 fnd_file.put_line(fnd_file.LOG, ' ');
178257 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
178258 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
178259 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
178260
178261 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
178262 LOOP
178263 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
178264 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
178265 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
178266 END IF;
178267 END LOOP;
178268
178269 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
178270 fnd_file.put_line(fnd_file.LOG, ' ');
178271
178272
178273 xla_exceptions_pkg.raise_message
178274 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventType_279');
178275
178276
178277 WHEN OTHERS THEN
178278 xla_exceptions_pkg.raise_message
178279 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventType_279');
178280 END EventType_279;
178281 --
178282
178283 ---------------------------------------
178284 --
178285 -- PRIVATE PROCEDURE
178286 -- insert_sources_280
178287 --
178288 ----------------------------------------
178289 --
178290 PROCEDURE insert_sources_280(
178291 p_target_ledger_id IN NUMBER
178292 , p_language IN VARCHAR2
178293 , p_sla_ledger_id IN NUMBER
178294 , p_pad_start_date IN DATE
178295 , p_pad_end_date IN DATE
178296 )
178297 IS
178298
178299 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'UDIR_INTERORG_SHIP';
178300 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'USER_DEFINE';
178301 p_apps_owner VARCHAR2(30);
178302 l_log_module VARCHAR2(240);
178303 BEGIN
178304 IF g_log_enabled THEN
178305 l_log_module := C_DEFAULT_MODULE||'.insert_sources_280';
178306 END IF;
178307 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
178308
178309 trace
178310 (p_msg => 'BEGIN of insert_sources_280'
178311 ,p_level => C_LEVEL_PROCEDURE
178312 ,p_module => l_log_module);
178313
178314 END IF;
178315
178316 -- select APPS owner
178317 SELECT oracle_username
178318 INTO p_apps_owner
178319 FROM fnd_oracle_userid
178320 WHERE read_only_flag = 'U'
178321 ;
178322
178323 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
178324 trace
178325 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
178326 ' - p_language = '||p_language||
178327 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
178328 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
178329 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
178330 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
178331 ,p_level => C_LEVEL_STATEMENT
178332 ,p_module => l_log_module);
178333 END IF;
178334
178335
178336 --
178337 INSERT INTO xla_diag_sources --hdr1
178338 (
178339 event_id
178340 , ledger_id
178341 , sla_ledger_id
178342 , description_language
178343 , object_name
178344 , object_type_code
178345 , line_number
178346 , source_application_id
178347 , source_type_code
178348 , source_code
178349 , source_value
178350 , source_meaning
178351 , created_by
178352 , creation_date
178353 , last_update_date
178354 , last_updated_by
178355 , last_update_login
178356 , program_update_date
178357 , program_application_id
178358 , program_id
178359 , request_id
178360 )
178361 SELECT
178362 event_id
178363 , p_target_ledger_id
178364 , p_sla_ledger_id
178365 , p_language
178366 , object_name
178367 , object_type_code
178368 , line_number
178369 , source_application_id
178370 , source_type_code
178371 , source_code
178372 , SUBSTR(source_value ,1,1996)
178373 , SUBSTR(source_meaning,1,200)
178374 , xla_environment_pkg.g_Usr_Id
178375 , TRUNC(SYSDATE)
178376 , TRUNC(SYSDATE)
178377 , xla_environment_pkg.g_Usr_Id
178378 , xla_environment_pkg.g_Login_Id
178379 , TRUNC(SYSDATE)
178380 , xla_environment_pkg.g_Prog_Appl_Id
178381 , xla_environment_pkg.g_Prog_Id
178382 , xla_environment_pkg.g_Req_Id
178383 FROM (
178384 SELECT xet.event_id event_id
178385 , 0 line_number
178386 , CASE r
178387 WHEN 1 THEN 'CST_XLA_INV_HEADERS_V'
178388 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V'
178389
178390 ELSE null
178391 END object_name
178392 , CASE r
178393 WHEN 1 THEN 'HEADER'
178394 WHEN 2 THEN 'HEADER'
178395
178396 ELSE null
178397 END object_type_code
178398 , CASE r
178399 WHEN 1 THEN '707'
178400 WHEN 2 THEN '707'
178401
178402 ELSE null
178403 END source_application_id
178404 , 'S' source_type_code
178405 , CASE r
178406 WHEN 1 THEN 'DISTRIBUTION_TYPE'
178407 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR'
178408
178409 ELSE null
178410 END source_code
178411 , CASE r
178412 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
178413 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
178414
178415 ELSE null
178416 END source_value
178417 , CASE r
178418 WHEN 1 THEN fvl12.meaning
178419 WHEN 2 THEN fvl38.meaning
178420
178421 ELSE null
178422 END source_meaning
178423 FROM xla_events_gt xet
178424 , CST_XLA_INV_HEADERS_V h1
178425 , fnd_lookup_values fvl12
178426 , fnd_lookup_values fvl38
178427 ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
178428 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
178429 AND xet.event_type_code = C_EVENT_TYPE_CODE
178430 AND h1.event_id = xet.event_id
178431 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
178432 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
178433 AND fvl12.view_application_id(+) = 700
178434 AND fvl12.language(+) = USERENV('LANG')
178435 AND fvl38.lookup_type(+) = 'YES_NO'
178436 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
178437 AND fvl38.view_application_id(+) = 0
178438 AND fvl38.language(+) = USERENV('LANG')
178439
178440 )
178441 ;
178442 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
178443
178444 trace
178445 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
178446 ,p_level => C_LEVEL_STATEMENT
178447 ,p_module => l_log_module);
178448
178449 END IF;
178450 --
178451
178452
178453
178454 --
178455 INSERT INTO xla_diag_sources --line1
178456 (
178457 event_id
178458 , ledger_id
178459 , sla_ledger_id
178460 , description_language
178461 , object_name
178462 , object_type_code
178463 , line_number
178464 , source_application_id
178465 , source_type_code
178466 , source_code
178467 , source_value
178468 , source_meaning
178469 , created_by
178470 , creation_date
178471 , last_update_date
178472 , last_updated_by
178473 , last_update_login
178474 , program_update_date
178475 , program_application_id
178476 , program_id
178477 , request_id
178478 )
178479 SELECT event_id
178480 , p_target_ledger_id
178481 , p_sla_ledger_id
178482 , p_language
178483 , object_name
178484 , object_type_code
178485 , line_number
178486 , source_application_id
178487 , source_type_code
178488 , source_code
178489 , SUBSTR(source_value,1,1996)
178490 , SUBSTR(source_meaning,1,200)
178491 , xla_environment_pkg.g_Usr_Id
178492 , TRUNC(SYSDATE)
178493 , TRUNC(SYSDATE)
178494 , xla_environment_pkg.g_Usr_Id
178495 , xla_environment_pkg.g_Login_Id
178496 , TRUNC(SYSDATE)
178497 , xla_environment_pkg.g_Prog_Appl_Id
178498 , xla_environment_pkg.g_Prog_Id
178499 , xla_environment_pkg.g_Req_Id
178500 FROM (
178501 SELECT xet.event_id event_id
178502 , l2.line_number line_number
178503 , CASE r
178504 WHEN 1 THEN 'CST_XLA_INV_LINES_V'
178505 WHEN 2 THEN 'CST_XLA_INV_LINES_V'
178506 WHEN 3 THEN 'CST_XLA_INV_LINES_V'
178507 WHEN 4 THEN 'CST_XLA_INV_LINES_V'
178508 WHEN 5 THEN 'CST_XLA_INV_LINES_V'
178509 WHEN 6 THEN 'CST_XLA_INV_LINES_V'
178510 WHEN 7 THEN 'CST_XLA_INV_LINES_V'
178511 WHEN 8 THEN 'CST_XLA_INV_LINES_V'
178512 WHEN 9 THEN 'CST_XLA_INV_LINES_V'
178513
178514 ELSE null
178515 END object_name
178516 , CASE r
178517 WHEN 1 THEN 'LINE'
178518 WHEN 2 THEN 'LINE'
178519 WHEN 3 THEN 'LINE'
178520 WHEN 4 THEN 'LINE'
178521 WHEN 5 THEN 'LINE'
178522 WHEN 6 THEN 'LINE'
178523 WHEN 7 THEN 'LINE'
178524 WHEN 8 THEN 'LINE'
178525 WHEN 9 THEN 'LINE'
178526
178527 ELSE null
178528 END object_type_code
178529 , CASE r
178530 WHEN 1 THEN '707'
178531 WHEN 2 THEN '707'
178532 WHEN 3 THEN '707'
178533 WHEN 4 THEN '707'
178534 WHEN 5 THEN '707'
178535 WHEN 6 THEN '707'
178536 WHEN 7 THEN '707'
178537 WHEN 8 THEN '707'
178538 WHEN 9 THEN '707'
178539
178540 ELSE null
178541 END source_application_id
178542 , 'S' source_type_code
178543 , CASE r
178544 WHEN 1 THEN 'CODE_COMBINATION_ID'
178545 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER'
178546 WHEN 3 THEN 'CURRENCY_CODE'
178547 WHEN 4 THEN 'ENTERED_AMOUNT'
178548 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE'
178549 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE'
178550 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE'
178551 WHEN 8 THEN 'ACCOUNTED_AMOUNT'
178552 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE'
178553
178554 ELSE null
178555 END source_code
178556 , CASE r
178557 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
178558 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
178559 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
178560 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
178561 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
178562 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
178563 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
178564 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
178565 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
178566
178567 ELSE null
178568 END source_value
178569 , null source_meaning
178570 FROM xla_events_gt xet
178571 , CST_XLA_INV_LINES_V l2
178572 ,(select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
178573 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
178574 AND xet.event_type_code = C_EVENT_TYPE_CODE
178575 AND l2.event_id = xet.event_id
178576
178577 )
178578 ;
178579 --
178580 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
178581
178582 trace
178583 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
178584 ,p_level => C_LEVEL_STATEMENT
178585 ,p_module => l_log_module);
178586
178587 END IF;
178588
178589
178590 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
178591 trace
178592 (p_msg => 'END of insert_sources_280'
178593 ,p_level => C_LEVEL_PROCEDURE
178594 ,p_module => l_log_module);
178595 END IF;
178596 EXCEPTION
178597 WHEN xla_exceptions_pkg.application_exception THEN
178598 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
178599 trace
178600 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
178601 ,p_level => C_LEVEL_EXCEPTION
178602 ,p_module => l_log_module);
178603 END IF;
178604 RAISE;
178605 WHEN OTHERS THEN
178606 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
178607 trace
178608 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
178609 ,p_level => C_LEVEL_EXCEPTION
178610 ,p_module => l_log_module);
178611 END IF;
178612 xla_exceptions_pkg.raise_message
178613 (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_280');
178614 END insert_sources_280;
178615 --
178616
178617 ---------------------------------------
178618 --
178619 -- PRIVATE FUNCTION
178620 -- EventType_280
178621 --
178622 ----------------------------------------
178623 --
178624 FUNCTION EventType_280
178625 (p_application_id IN NUMBER
178626 ,p_base_ledger_id IN NUMBER
178627 ,p_target_ledger_id IN NUMBER
178628 ,p_language IN VARCHAR2
178629 ,p_currency_code IN VARCHAR2
178630 ,p_sla_ledger_id IN NUMBER
178631 ,p_pad_start_date IN DATE
178632 ,p_pad_end_date IN DATE
178633 ,p_primary_ledger_id IN NUMBER)
178634 RETURN BOOLEAN IS
178635 --
178636 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'UDIR_INTERORG_SHIP';
178637 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'USER_DEFINE';
178638
178639 l_calculate_acctd_flag VARCHAR2(1) :='Y';
178640 l_calculate_g_l_flag VARCHAR2(1) :='Y';
178641 --
178642 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
178643 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
178644 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
178645 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
178646 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
178647 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
178648 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
178649 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
178650 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
178651 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
178652 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
178653 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
178654 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
178655 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
178656 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
178657 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
178658 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
178659 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
178660 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
178661 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
178662 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
178663 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
178664 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
178665 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
178666 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
178667 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
178668
178669 l_event_id NUMBER;
178670 l_previous_event_id NUMBER;
178671 l_first_event_id NUMBER;
178672 l_last_event_id NUMBER;
178673
178674 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
178675 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
178676 --
178677 --
178678 l_result BOOLEAN := TRUE;
178679 l_rows NUMBER := 1000;
178680 l_event_type_name VARCHAR2(80) := 'User-defined Direct Interorg Shipment';
178681 l_event_class_name VARCHAR2(80) := 'User Defined Inventory Transaction Class';
178682 l_description VARCHAR2(4000);
178683 l_transaction_reversal NUMBER;
178684 l_ae_header_id NUMBER;
178685 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
178686 l_log_module VARCHAR2(240);
178687 --
178688 l_acct_reversal_source VARCHAR2(30);
178689 l_trx_reversal_source VARCHAR2(30);
178690
178691 l_continue_with_lines BOOLEAN := TRUE;
178692 --
178693 l_acc_rev_gl_date_source DATE; -- 4262811
178694 --
178695 type t_array_event_id is table of number index by binary_integer;
178696
178697 l_rec_array_event t_rec_array_event;
178698 l_null_rec_array_event t_rec_array_event;
178699 l_array_ae_header_id xla_number_array_type;
178700 l_actual_flag VARCHAR2(1) := NULL;
178701 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
178702 l_balance_type_code VARCHAR2(1) :=NULL;
178703 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
178704
178705 --
178706 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
178707 --
178708
178709 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
178710 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
178711
178712 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
178713 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
178714 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
178715 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
178716 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
178717 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
178718 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
178719 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
178720 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
178721
178722 l_array_source_12 t_array_source_12;
178723 l_array_source_12_meaning t_array_lookup_meaning;
178724 l_array_source_38 t_array_source_38;
178725 l_array_source_38_meaning t_array_lookup_meaning;
178726
178727 l_array_source_4 t_array_source_4;
178728 l_array_source_11 t_array_source_11;
178729 l_array_source_15 t_array_source_15;
178730 l_array_source_18 t_array_source_18;
178731 l_array_source_19 t_array_source_19;
178732 l_array_source_20 t_array_source_20;
178733 l_array_source_21 t_array_source_21;
178734 l_array_source_22 t_array_source_22;
178735 l_array_source_24 t_array_source_24;
178736
178737 --
178738 CURSOR header_cur
178739 IS
178740 SELECT /*+ leading(xet) cardinality(xet,1) */
178741 -- Event Type Code: UDIR_INTERORG_SHIP
178742 -- Event Class Code: USER_DEFINE
178743 xet.entity_id
178744 , xet.legal_entity_id
178745 , xet.entity_code
178746 , xet.transaction_number
178747 , xet.event_id
178748 , xet.event_class_code
178749 , xet.event_type_code
178750 , xet.event_number
178751 , xet.event_date
178752 , xet.transaction_date
178753 , xet.reference_num_1
178754 , xet.reference_num_2
178755 , xet.reference_num_3
178756 , xet.reference_num_4
178757 , xet.reference_char_1
178758 , xet.reference_char_2
178759 , xet.reference_char_3
178760 , xet.reference_char_4
178761 , xet.reference_date_1
178762 , xet.reference_date_2
178763 , xet.reference_date_3
178764 , xet.reference_date_4
178765 , xet.event_created_by
178766 , xet.budgetary_control_flag
178767 , h1.DISTRIBUTION_TYPE source_12
178768 , fvl12.meaning source_12_meaning
178769 , h1.TRANSFER_TO_GL_INDICATOR source_38
178770 , fvl38.meaning source_38_meaning
178771 FROM xla_events_gt xet
178772 , CST_XLA_INV_HEADERS_V h1
178773 , fnd_lookup_values fvl12
178774 , fnd_lookup_values fvl38
178775 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
178776 and xet.event_type_code = C_EVENT_TYPE_CODE
178777 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
178778 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
178779 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
178780 AND fvl12.view_application_id(+) = 700
178781 AND fvl12.language(+) = USERENV('LANG')
178782 AND fvl38.lookup_type(+) = 'YES_NO'
178783 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
178784 AND fvl38.view_application_id(+) = 0
178785 AND fvl38.language(+) = USERENV('LANG')
178786
178787 ORDER BY event_id
178788 ;
178789
178790
178791 --
178792 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
178793 IS
178794 SELECT /*+ leading(xet) cardinality(xet,1) */
178795 -- Event Type Code: UDIR_INTERORG_SHIP
178796 -- Event Class Code: USER_DEFINE
178797 xet.entity_id
178798 ,xet.legal_entity_id
178799 ,xet.entity_code
178800 ,xet.transaction_number
178801 ,xet.event_id
178802 ,xet.event_class_code
178803 ,xet.event_type_code
178804 ,xet.event_number
178805 ,xet.event_date
178806 ,xet.transaction_date
178807 ,xet.reference_num_1
178808 ,xet.reference_num_2
178809 ,xet.reference_num_3
178810 ,xet.reference_num_4
178811 ,xet.reference_char_1
178812 ,xet.reference_char_2
178813 ,xet.reference_char_3
178814 ,xet.reference_char_4
178815 ,xet.reference_date_1
178816 ,xet.reference_date_2
178817 ,xet.reference_date_3
178818 ,xet.reference_date_4
178819 ,xet.event_created_by
178820 ,xet.budgetary_control_flag , l2.LINE_NUMBER
178821 , l2.CODE_COMBINATION_ID source_4
178822 , l2.DISTRIBUTION_IDENTIFIER source_11
178823 , l2.CURRENCY_CODE source_15
178824 , l2.ENTERED_AMOUNT source_18
178825 , l2.CURRENCY_CONVERSION_DATE source_19
178826 , l2.CURRENCY_CONVERSION_RATE source_20
178827 , l2.CURRENCY_CONVERSION_TYPE source_21
178828 , l2.ACCOUNTED_AMOUNT source_22
178829 , l2.ACCOUNTING_LINE_TYPE_CODE source_24
178830 FROM xla_events_gt xet
178831 , CST_XLA_INV_LINES_V l2
178832 WHERE xet.event_id between x_first_event_id and x_last_event_id
178833 and xet.event_date between p_pad_start_date and p_pad_end_date
178834 and xet.event_type_code = C_EVENT_TYPE_CODE
178835 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
178836 ;
178837
178838 --
178839 BEGIN
178840 IF g_log_enabled THEN
178841 l_log_module := C_DEFAULT_MODULE||'.EventType_280';
178842 END IF;
178843 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
178844 trace
178845 (p_msg => 'BEGIN of EventType_280'
178846 ,p_level => C_LEVEL_PROCEDURE
178847 ,p_module => l_log_module);
178848 END IF;
178849
178850 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
178851 trace
178852 (p_msg => 'p_application_id = '||p_application_id||
178853 ' - p_base_ledger_id = '||p_base_ledger_id||
178854 ' - p_target_ledger_id = '||p_target_ledger_id||
178855 ' - p_language = '||p_language||
178856 ' - p_currency_code = '||p_currency_code||
178857 ' - p_sla_ledger_id = '||p_sla_ledger_id
178858 ,p_level => C_LEVEL_STATEMENT
178859 ,p_module => l_log_module);
178860 END IF;
178861 --
178862 -- initialze arrays
178863 --
178864 g_array_event.DELETE;
178865 l_rec_array_event := l_null_rec_array_event;
178866 --
178867 --------------------------------------
178868 -- 4262811 Initialze MPA Line Number
178869 --------------------------------------
178870 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
178871
178872 --
178873
178874 --
178875 OPEN header_cur;
178876 --
178877 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
178878 trace
178879 (p_msg => 'SQL - FETCH header_cur'
178880 ,p_level => C_LEVEL_STATEMENT
178881 ,p_module => l_log_module);
178882 END IF;
178883 --
178884 LOOP
178885 FETCH header_cur BULK COLLECT INTO
178886 l_array_entity_id
178887 , l_array_legal_entity_id
178888 , l_array_entity_code
178889 , l_array_transaction_num
178890 , l_array_event_id
178891 , l_array_class_code
178892 , l_array_event_type
178893 , l_array_event_number
178894 , l_array_event_date
178895 , l_array_transaction_date
178896 , l_array_reference_num_1
178897 , l_array_reference_num_2
178898 , l_array_reference_num_3
178899 , l_array_reference_num_4
178900 , l_array_reference_char_1
178901 , l_array_reference_char_2
178902 , l_array_reference_char_3
178903 , l_array_reference_char_4
178904 , l_array_reference_date_1
178905 , l_array_reference_date_2
178906 , l_array_reference_date_3
178907 , l_array_reference_date_4
178908 , l_array_event_created_by
178909 , l_array_budgetary_control_flag
178910 , l_array_source_12
178911 , l_array_source_12_meaning
178912 , l_array_source_38
178913 , l_array_source_38_meaning
178914 LIMIT l_rows;
178915 --
178916 IF (C_LEVEL_EVENT >= g_log_level) THEN
178917 trace
178918 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
178919 ,p_level => C_LEVEL_EVENT
178920 ,p_module => l_log_module);
178921 END IF;
178922 --
178923 EXIT WHEN l_array_entity_id.COUNT = 0;
178924
178925 -- initialize arrays
178926 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
178927 XLA_AE_LINES_PKG.g_rec_lines := NULL;
178928
178929 --
178930 -- Bug 4458708
178931 --
178932 XLA_AE_LINES_PKG.g_LineNumber := 0;
178933
178934
178935 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
178936 g_last_hdr_idx := l_array_event_id.LAST;
178937 --
178938 -- loop for the headers. Each iteration is for each header extract row
178939 -- fetched in header cursor
178940 --
178941 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
178942
178943 --
178944 -- set event info as cache for other routines to refer event attributes
178945 --
178946 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
178947 (p_application_id => p_application_id
178948 ,p_primary_ledger_id => p_primary_ledger_id
178949 ,p_base_ledger_id => p_base_ledger_id
178950 ,p_target_ledger_id => p_target_ledger_id
178951 ,p_entity_id => l_array_entity_id(hdr_idx)
178952 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
178953 ,p_entity_code => l_array_entity_code(hdr_idx)
178954 ,p_transaction_num => l_array_transaction_num(hdr_idx)
178955 ,p_event_id => l_array_event_id(hdr_idx)
178956 ,p_event_class_code => l_array_class_code(hdr_idx)
178957 ,p_event_type_code => l_array_event_type(hdr_idx)
178958 ,p_event_number => l_array_event_number(hdr_idx)
178959 ,p_event_date => l_array_event_date(hdr_idx)
178960 ,p_transaction_date => l_array_transaction_date(hdr_idx)
178961 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
178962 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
178963 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
178964 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
178965 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
178966 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
178967 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
178968 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
178969 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
178970 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
178971 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
178972 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
178973 ,p_event_created_by => l_array_event_created_by(hdr_idx)
178974 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
178975
178976 --
178977 -- set the status of entry to C_VALID (0)
178978 --
178979 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
178980
178981 --
178982 -- initialize a row for ae header
178983 --
178984 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
178985
178986 l_event_id := l_array_event_id(hdr_idx);
178987
178988 --
178989 -- storing the hdr_idx for event. May be used by line cursor.
178990 --
178991 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
178992
178993 --
178994 -- store sources from header extract. This can be improved to
178995 -- store only those sources from header extract that may be used in lines
178996 --
178997
178998 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
178999 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
179000 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
179001 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
179002
179003 --
179004 -- initilaize the status of ae headers for diffrent balance types
179005 -- the status is initialised to C_NOT_CREATED (2)
179006 --
179007 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
179008 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
179009 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
179010
179011 --
179012 -- call api to validate and store accounting attributes for header
179013 --
179014
179015 ------------------------------------------------------------
179016 -- Accrual Reversal : to get date for Standard Source (NONE)
179017 ------------------------------------------------------------
179018 l_acc_rev_gl_date_source := NULL;
179019
179020 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
179021 l_rec_acct_attrs.array_date_value(1) :=
179022 xla_ae_sources_pkg.GetSystemSourceDate(
179023 p_source_code => 'XLA_REFERENCE_DATE_1'
179024 , p_source_type_code => 'Y'
179025 , p_source_application_id => 602
179026 );
179027 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_TRANSFER_FLAG';
179028 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
179029
179030
179031 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
179032
179033 XLA_AE_HEADER_PKG.SetJeCategoryName;
179034
179035 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
179036 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
179037 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
179038 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
179039 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
179040
179041
179042 -- No header level analytical criteria
179043
179044 --
179045 --accounting attribute enhancement, bug 3612931
179046 --
179047 l_trx_reversal_source := SUBSTR(NULL, 1,30);
179048
179049 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
179050 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
179051
179052 xla_accounting_err_pkg.build_message
179053 (p_appli_s_name => 'XLA'
179054 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
179055 ,p_token_1 => 'ACCT_ATTR_NAME'
179056 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
179057 ,p_token_2 => 'PRODUCT_NAME'
179058 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
179059 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
179060 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
179061 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
179062
179063 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
179064 --
179065 -- following sets the accounting attributes needed to reverse
179066 -- accounting for a distributeion
179067 --
179068 xla_ae_lines_pkg.SetTrxReversalAttrs
179069 (p_event_id => l_event_id
179070 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
179071 ,p_trx_reversal_source => l_trx_reversal_source);
179072
179073 END IF;
179074
179075
179076 ----------------------------------------------------------------
179077 -- 4262811 - update the header statuses to invalid in need be
179078 ----------------------------------------------------------------
179079 --
179080 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
179081
179082
179083 -----------------------------------------------
179084 -- No accrual reversal for the event class/type
179085 -----------------------------------------------
179086 ----------------------------------------------------------------
179087
179088 --
179089 -- this ends the header loop iteration for one bulk fetch
179090 --
179091 END LOOP;
179092
179093 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
179094 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
179095
179096 --
179097 -- insert dummy rows into lines gt table that were created due to
179098 -- transaction reversals
179099 --
179100 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
179101 l_result := XLA_AE_LINES_PKG.InsertLines;
179102 END IF;
179103
179104 --
179105 -- reset the temp_line_num for each set of events fetched from header
179106 -- cursor rather than doing it for each new event in line cursor
179107 -- Bug 3939231
179108 --
179109 xla_ae_lines_pkg.g_temp_line_num := 0;
179110
179111
179112
179113 --
179114 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
179115 --
179116 --
179117 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
179118
179119 trace
179120 (p_msg => 'SQL - FETCH line_cur'
179121 ,p_level => C_LEVEL_STATEMENT
179122 ,p_module => l_log_module);
179123
179124 END IF;
179125 --
179126 --
179127 LOOP
179128 --
179129 FETCH line_cur BULK COLLECT INTO
179130 l_array_entity_id
179131 , l_array_legal_entity_id
179132 , l_array_entity_code
179133 , l_array_transaction_num
179134 , l_array_event_id
179135 , l_array_class_code
179136 , l_array_event_type
179137 , l_array_event_number
179138 , l_array_event_date
179139 , l_array_transaction_date
179140 , l_array_reference_num_1
179141 , l_array_reference_num_2
179142 , l_array_reference_num_3
179143 , l_array_reference_num_4
179144 , l_array_reference_char_1
179145 , l_array_reference_char_2
179146 , l_array_reference_char_3
179147 , l_array_reference_char_4
179148 , l_array_reference_date_1
179149 , l_array_reference_date_2
179150 , l_array_reference_date_3
179151 , l_array_reference_date_4
179152 , l_array_event_created_by
179153 , l_array_budgetary_control_flag
179154 , l_array_extract_line_num
179155 , l_array_source_4
179156 , l_array_source_11
179157 , l_array_source_15
179158 , l_array_source_18
179159 , l_array_source_19
179160 , l_array_source_20
179161 , l_array_source_21
179162 , l_array_source_22
179163 , l_array_source_24
179164 LIMIT l_rows;
179165
179166 --
179167 IF (C_LEVEL_EVENT >= g_log_level) THEN
179168 trace
179169 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
179170 ,p_level => C_LEVEL_EVENT
179171 ,p_module => l_log_module);
179172 END IF;
179173 --
179174 EXIT WHEN l_array_entity_id.count = 0;
179175
179176 XLA_AE_LINES_PKG.g_rec_lines := null;
179177
179178 --
179179 -- Bug 4458708
179180 --
179181 XLA_AE_LINES_PKG.g_LineNumber := 0;
179182 --
179183 --
179184
179185 FOR Idx IN 1..l_array_event_id.count LOOP
179186 --
179187 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
179188 --
179189 l_event_id := l_array_event_id(idx); -- 5648433
179190
179191 --
179192 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
179193 --
179194
179195 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
179196 (g_array_event(l_event_id).array_value_num('header_index'))
179197 ,'N'
179198 ) <> 'Y'
179199 THEN
179200 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
179201 trace
179202 (p_msg => 'Trancaction revesal option is not Y '
179203 ,p_level => C_LEVEL_STATEMENT
179204 ,p_module => l_log_module);
179205 END IF;
179206
179207 --
179208 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
179209 --
179210 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
179211 --
179212 -- set event info as cache for other routines to refer event attributes
179213 --
179214
179215 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
179216 l_previous_event_id := l_event_id;
179217
179218 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
179219 (p_application_id => p_application_id
179220 ,p_primary_ledger_id => p_primary_ledger_id
179221 ,p_base_ledger_id => p_base_ledger_id
179222 ,p_target_ledger_id => p_target_ledger_id
179223 ,p_entity_id => l_array_entity_id(Idx)
179224 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
179225 ,p_entity_code => l_array_entity_code(Idx)
179226 ,p_transaction_num => l_array_transaction_num(Idx)
179227 ,p_event_id => l_array_event_id(Idx)
179228 ,p_event_class_code => l_array_class_code(Idx)
179229 ,p_event_type_code => l_array_event_type(Idx)
179230 ,p_event_number => l_array_event_number(Idx)
179231 ,p_event_date => l_array_event_date(Idx)
179232 ,p_transaction_date => l_array_transaction_date(Idx)
179233 ,p_reference_num_1 => l_array_reference_num_1(Idx)
179234 ,p_reference_num_2 => l_array_reference_num_2(Idx)
179235 ,p_reference_num_3 => l_array_reference_num_3(Idx)
179236 ,p_reference_num_4 => l_array_reference_num_4(Idx)
179237 ,p_reference_char_1 => l_array_reference_char_1(Idx)
179238 ,p_reference_char_2 => l_array_reference_char_2(Idx)
179239 ,p_reference_char_3 => l_array_reference_char_3(Idx)
179240 ,p_reference_char_4 => l_array_reference_char_4(Idx)
179241 ,p_reference_date_1 => l_array_reference_date_1(Idx)
179242 ,p_reference_date_2 => l_array_reference_date_2(Idx)
179243 ,p_reference_date_3 => l_array_reference_date_3(Idx)
179244 ,p_reference_date_4 => l_array_reference_date_4(Idx)
179245 ,p_event_created_by => l_array_event_created_by(Idx)
179246 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
179247 --
179248 END IF;
179249
179250
179251
179252 --
179253 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
179254
179255 l_acct_reversal_source := SUBSTR(NULL, 1,30);
179256
179257 IF l_continue_with_lines THEN
179258 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
179259 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
179260
179261 xla_accounting_err_pkg.build_message
179262 (p_appli_s_name => 'XLA'
179263 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
179264 ,p_token_1 => 'LINE_NUMBER'
179265 ,p_value_1 => l_array_extract_line_num(Idx)
179266 ,p_token_2 => 'PRODUCT_NAME'
179267 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
179268 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
179269 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
179270 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
179271
179272 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
179273 --
179274 -- following sets the accounting attributes needed to reverse
179275 -- accounting for a distributeion
179276 --
179277
179278 --
179279 -- 5217187
179280 --
179281 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
179282 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
179283 g_array_event(l_event_id).array_value_num('header_index'));
179284 --
179285 --
179286
179287 -- No reversal code generated
179288
179289 xla_ae_lines_pkg.SetAcctReversalAttrs
179290 (p_event_id => l_event_id
179291 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
179292 ,p_calculate_acctd_flag => l_calculate_acctd_flag
179293 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
179294 END IF;
179295
179296 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
179297 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
179298
179299 --
179300 AcctLineType_63 (
179301 p_application_id => p_application_id
179302 ,p_event_id => l_event_id
179303 ,p_calculate_acctd_flag => l_calculate_acctd_flag
179304 ,p_calculate_g_l_flag => l_calculate_g_l_flag
179305 ,p_actual_flag => l_actual_flag
179306 ,p_balance_type_code => l_balance_type_code
179307 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
179308
179309 , p_source_4 => l_array_source_4(Idx)
179310 , p_source_11 => l_array_source_11(Idx)
179311 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
179312 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
179313 , p_source_15 => l_array_source_15(Idx)
179314 , p_source_18 => l_array_source_18(Idx)
179315 , p_source_19 => l_array_source_19(Idx)
179316 , p_source_20 => l_array_source_20(Idx)
179317 , p_source_21 => l_array_source_21(Idx)
179318 , p_source_22 => l_array_source_22(Idx)
179319 , p_source_24 => l_array_source_24(Idx)
179320 );
179321 If(l_balance_type_code = 'A') THEN
179322 l_actual_gain_loss_ref := l_gain_or_loss_ref;
179323 END IF;
179324
179325 --
179326
179327
179328 --
179329 AcctLineType_79 (
179330 p_application_id => p_application_id
179331 ,p_event_id => l_event_id
179332 ,p_calculate_acctd_flag => l_calculate_acctd_flag
179333 ,p_calculate_g_l_flag => l_calculate_g_l_flag
179334 ,p_actual_flag => l_actual_flag
179335 ,p_balance_type_code => l_balance_type_code
179336 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
179337
179338 , p_source_4 => l_array_source_4(Idx)
179339 , p_source_11 => l_array_source_11(Idx)
179340 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
179341 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
179342 , p_source_15 => l_array_source_15(Idx)
179343 , p_source_18 => l_array_source_18(Idx)
179344 , p_source_19 => l_array_source_19(Idx)
179345 , p_source_20 => l_array_source_20(Idx)
179346 , p_source_21 => l_array_source_21(Idx)
179347 , p_source_22 => l_array_source_22(Idx)
179348 , p_source_24 => l_array_source_24(Idx)
179349 );
179350 If(l_balance_type_code = 'A') THEN
179351 l_actual_gain_loss_ref := l_gain_or_loss_ref;
179352 END IF;
179353
179354 --
179355
179356
179357 --
179358 AcctLineType_87 (
179359 p_application_id => p_application_id
179360 ,p_event_id => l_event_id
179361 ,p_calculate_acctd_flag => l_calculate_acctd_flag
179362 ,p_calculate_g_l_flag => l_calculate_g_l_flag
179363 ,p_actual_flag => l_actual_flag
179364 ,p_balance_type_code => l_balance_type_code
179365 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
179366
179367 , p_source_4 => l_array_source_4(Idx)
179368 , p_source_11 => l_array_source_11(Idx)
179369 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
179370 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
179371 , p_source_15 => l_array_source_15(Idx)
179372 , p_source_18 => l_array_source_18(Idx)
179373 , p_source_19 => l_array_source_19(Idx)
179374 , p_source_20 => l_array_source_20(Idx)
179375 , p_source_21 => l_array_source_21(Idx)
179376 , p_source_22 => l_array_source_22(Idx)
179377 , p_source_24 => l_array_source_24(Idx)
179378 );
179379 If(l_balance_type_code = 'A') THEN
179380 l_actual_gain_loss_ref := l_gain_or_loss_ref;
179381 END IF;
179382
179383 --
179384
179385
179386 --
179387 AcctLineType_94 (
179388 p_application_id => p_application_id
179389 ,p_event_id => l_event_id
179390 ,p_calculate_acctd_flag => l_calculate_acctd_flag
179391 ,p_calculate_g_l_flag => l_calculate_g_l_flag
179392 ,p_actual_flag => l_actual_flag
179393 ,p_balance_type_code => l_balance_type_code
179394 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
179395
179396 , p_source_4 => l_array_source_4(Idx)
179397 , p_source_11 => l_array_source_11(Idx)
179398 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
179399 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
179400 , p_source_15 => l_array_source_15(Idx)
179401 , p_source_18 => l_array_source_18(Idx)
179402 , p_source_19 => l_array_source_19(Idx)
179403 , p_source_20 => l_array_source_20(Idx)
179404 , p_source_21 => l_array_source_21(Idx)
179405 , p_source_22 => l_array_source_22(Idx)
179406 , p_source_24 => l_array_source_24(Idx)
179407 );
179408 If(l_balance_type_code = 'A') THEN
179409 l_actual_gain_loss_ref := l_gain_or_loss_ref;
179410 END IF;
179411
179412 --
179413
179414
179415 --
179416 AcctLineType_114 (
179417 p_application_id => p_application_id
179418 ,p_event_id => l_event_id
179419 ,p_calculate_acctd_flag => l_calculate_acctd_flag
179420 ,p_calculate_g_l_flag => l_calculate_g_l_flag
179421 ,p_actual_flag => l_actual_flag
179422 ,p_balance_type_code => l_balance_type_code
179423 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
179424
179425 , p_source_4 => l_array_source_4(Idx)
179426 , p_source_11 => l_array_source_11(Idx)
179427 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
179428 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
179429 , p_source_15 => l_array_source_15(Idx)
179430 , p_source_18 => l_array_source_18(Idx)
179431 , p_source_19 => l_array_source_19(Idx)
179432 , p_source_20 => l_array_source_20(Idx)
179433 , p_source_21 => l_array_source_21(Idx)
179434 , p_source_22 => l_array_source_22(Idx)
179435 , p_source_24 => l_array_source_24(Idx)
179436 );
179437 If(l_balance_type_code = 'A') THEN
179438 l_actual_gain_loss_ref := l_gain_or_loss_ref;
179439 END IF;
179440
179441 --
179442
179443
179444 --
179445 AcctLineType_128 (
179446 p_application_id => p_application_id
179447 ,p_event_id => l_event_id
179448 ,p_calculate_acctd_flag => l_calculate_acctd_flag
179449 ,p_calculate_g_l_flag => l_calculate_g_l_flag
179450 ,p_actual_flag => l_actual_flag
179451 ,p_balance_type_code => l_balance_type_code
179452 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
179453
179454 , p_source_4 => l_array_source_4(Idx)
179455 , p_source_11 => l_array_source_11(Idx)
179456 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
179457 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
179458 , p_source_15 => l_array_source_15(Idx)
179459 , p_source_18 => l_array_source_18(Idx)
179460 , p_source_19 => l_array_source_19(Idx)
179461 , p_source_20 => l_array_source_20(Idx)
179462 , p_source_21 => l_array_source_21(Idx)
179463 , p_source_22 => l_array_source_22(Idx)
179464 , p_source_24 => l_array_source_24(Idx)
179465 );
179466 If(l_balance_type_code = 'A') THEN
179467 l_actual_gain_loss_ref := l_gain_or_loss_ref;
179468 END IF;
179469
179470 --
179471
179472
179473 --
179474 AcctLineType_159 (
179475 p_application_id => p_application_id
179476 ,p_event_id => l_event_id
179477 ,p_calculate_acctd_flag => l_calculate_acctd_flag
179478 ,p_calculate_g_l_flag => l_calculate_g_l_flag
179479 ,p_actual_flag => l_actual_flag
179480 ,p_balance_type_code => l_balance_type_code
179481 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
179482
179483 , p_source_4 => l_array_source_4(Idx)
179484 , p_source_11 => l_array_source_11(Idx)
179485 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
179486 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
179487 , p_source_15 => l_array_source_15(Idx)
179488 , p_source_18 => l_array_source_18(Idx)
179489 , p_source_19 => l_array_source_19(Idx)
179490 , p_source_20 => l_array_source_20(Idx)
179491 , p_source_21 => l_array_source_21(Idx)
179492 , p_source_22 => l_array_source_22(Idx)
179493 , p_source_24 => l_array_source_24(Idx)
179494 );
179495 If(l_balance_type_code = 'A') THEN
179496 l_actual_gain_loss_ref := l_gain_or_loss_ref;
179497 END IF;
179498
179499 --
179500
179501
179502 --
179503 AcctLineType_187 (
179504 p_application_id => p_application_id
179505 ,p_event_id => l_event_id
179506 ,p_calculate_acctd_flag => l_calculate_acctd_flag
179507 ,p_calculate_g_l_flag => l_calculate_g_l_flag
179508 ,p_actual_flag => l_actual_flag
179509 ,p_balance_type_code => l_balance_type_code
179510 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
179511
179512 , p_source_4 => l_array_source_4(Idx)
179513 , p_source_11 => l_array_source_11(Idx)
179514 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
179515 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
179516 , p_source_15 => l_array_source_15(Idx)
179517 , p_source_18 => l_array_source_18(Idx)
179518 , p_source_19 => l_array_source_19(Idx)
179519 , p_source_20 => l_array_source_20(Idx)
179520 , p_source_21 => l_array_source_21(Idx)
179521 , p_source_22 => l_array_source_22(Idx)
179522 , p_source_24 => l_array_source_24(Idx)
179523 );
179524 If(l_balance_type_code = 'A') THEN
179525 l_actual_gain_loss_ref := l_gain_or_loss_ref;
179526 END IF;
179527
179528 --
179529
179530
179531 --
179532 AcctLineType_222 (
179533 p_application_id => p_application_id
179534 ,p_event_id => l_event_id
179535 ,p_calculate_acctd_flag => l_calculate_acctd_flag
179536 ,p_calculate_g_l_flag => l_calculate_g_l_flag
179537 ,p_actual_flag => l_actual_flag
179538 ,p_balance_type_code => l_balance_type_code
179539 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
179540
179541 , p_source_4 => l_array_source_4(Idx)
179542 , p_source_11 => l_array_source_11(Idx)
179543 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
179544 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
179545 , p_source_15 => l_array_source_15(Idx)
179546 , p_source_18 => l_array_source_18(Idx)
179547 , p_source_19 => l_array_source_19(Idx)
179548 , p_source_20 => l_array_source_20(Idx)
179549 , p_source_21 => l_array_source_21(Idx)
179550 , p_source_22 => l_array_source_22(Idx)
179551 , p_source_24 => l_array_source_24(Idx)
179552 );
179553 If(l_balance_type_code = 'A') THEN
179554 l_actual_gain_loss_ref := l_gain_or_loss_ref;
179555 END IF;
179556
179557 --
179558
179559 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
179560 -- or secondary ledger that has different currency with primary
179561 -- or alc that is calculated by sla
179562 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
179563 (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'))
179564
179565 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
179566 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
179567 AND (l_actual_flag = 'A')) THEN
179568 XLA_AE_LINES_PKG.CreateGainOrLossLines(
179569 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
179570 ,p_application_id => p_application_id
179571 ,p_amb_context_code => 'DEFAULT'
179572 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
179573 ,p_event_class_code => C_EVENT_CLASS_CODE
179574 ,p_event_type_code => C_EVENT_TYPE_CODE
179575
179576 ,p_gain_ccid => -1
179577 ,p_loss_ccid => -1
179578
179579 ,p_actual_flag => l_actual_flag
179580 ,p_enc_flag => null
179581 ,p_actual_g_l_ref => l_actual_gain_loss_ref
179582 ,p_enc_g_l_ref => null
179583 );
179584 END IF;
179585 END IF;
179586 END IF;
179587
179588 ELSE
179589 --
179590 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
179591 --
179592 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
179593 trace
179594 (p_msg => 'Trancaction revesal option is Y'
179595 ,p_level => C_LEVEL_STATEMENT
179596 ,p_module => l_log_module);
179597 END IF;
179598 END IF;
179599
179600 END LOOP;
179601 l_result := XLA_AE_LINES_PKG.InsertLines ;
179602 end loop;
179603 close line_cur;
179604
179605
179606 --
179607 -- insert headers into xla_ae_headers_gt table
179608 --
179609 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
179610
179611 -- insert into errors table here.
179612
179613 END LOOP;
179614
179615 --
179616 -- 4865292
179617 --
179618 -- Compare g_hdr_extract_count with event count in
179619 -- CreateHeadersAndLines.
179620 --
179621 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
179622
179623 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
179624 trace (p_msg => '# rows extracted from header extract objects '
179625 || ' (running total): '
179626 || g_hdr_extract_count
179627 ,p_level => C_LEVEL_STATEMENT
179628 ,p_module => l_log_module);
179629 END IF;
179630
179631 CLOSE header_cur;
179632 --
179633
179634 --
179635 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
179636 trace
179637 (p_msg => 'END of EventType_280'
179638 ,p_level => C_LEVEL_PROCEDURE
179639 ,p_module => l_log_module);
179640 END IF;
179641 --
179642 RETURN l_result;
179643 EXCEPTION
179644 WHEN xla_exceptions_pkg.application_exception THEN
179645
179646 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
179647
179648
179649 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
179650
179651 RAISE;
179652
179653 WHEN NO_DATA_FOUND THEN
179654
179655 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
179656 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
179657
179658 FOR header_record IN header_cur
179659 LOOP
179660 l_array_header_events(header_record.event_id) := header_record.event_id;
179661 END LOOP;
179662
179663 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
179664 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
179665
179666 fnd_file.put_line(fnd_file.LOG, ' ');
179667 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
179668 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
179669 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
179670
179671 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
179672 LOOP
179673 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
179674 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
179675 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
179676 END IF;
179677 END LOOP;
179678
179679 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
179680 fnd_file.put_line(fnd_file.LOG, ' ');
179681
179682
179683 xla_exceptions_pkg.raise_message
179684 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventType_280');
179685
179686
179687 WHEN OTHERS THEN
179688 xla_exceptions_pkg.raise_message
179689 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventType_280');
179690 END EventType_280;
179691 --
179692
179693 ---------------------------------------
179694 --
179695 -- PRIVATE PROCEDURE
179696 -- insert_sources_281
179697 --
179698 ----------------------------------------
179699 --
179700 PROCEDURE insert_sources_281(
179701 p_target_ledger_id IN NUMBER
179702 , p_language IN VARCHAR2
179703 , p_sla_ledger_id IN NUMBER
179704 , p_pad_start_date IN DATE
179705 , p_pad_end_date IN DATE
179706 )
179707 IS
179708
179709 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'UDIR_INTERORG_SHIP_NO_TP';
179710 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'USER_DEFINE';
179711 p_apps_owner VARCHAR2(30);
179712 l_log_module VARCHAR2(240);
179713 BEGIN
179714 IF g_log_enabled THEN
179715 l_log_module := C_DEFAULT_MODULE||'.insert_sources_281';
179716 END IF;
179717 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
179718
179719 trace
179720 (p_msg => 'BEGIN of insert_sources_281'
179721 ,p_level => C_LEVEL_PROCEDURE
179722 ,p_module => l_log_module);
179723
179724 END IF;
179725
179726 -- select APPS owner
179727 SELECT oracle_username
179728 INTO p_apps_owner
179729 FROM fnd_oracle_userid
179730 WHERE read_only_flag = 'U'
179731 ;
179732
179733 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
179734 trace
179735 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
179736 ' - p_language = '||p_language||
179737 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
179738 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
179739 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
179740 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
179741 ,p_level => C_LEVEL_STATEMENT
179742 ,p_module => l_log_module);
179743 END IF;
179744
179745
179746 --
179747 INSERT INTO xla_diag_sources --hdr1
179748 (
179749 event_id
179750 , ledger_id
179751 , sla_ledger_id
179752 , description_language
179753 , object_name
179754 , object_type_code
179755 , line_number
179756 , source_application_id
179757 , source_type_code
179758 , source_code
179759 , source_value
179760 , source_meaning
179761 , created_by
179762 , creation_date
179763 , last_update_date
179764 , last_updated_by
179765 , last_update_login
179766 , program_update_date
179767 , program_application_id
179768 , program_id
179769 , request_id
179770 )
179771 SELECT
179772 event_id
179773 , p_target_ledger_id
179774 , p_sla_ledger_id
179775 , p_language
179776 , object_name
179777 , object_type_code
179778 , line_number
179779 , source_application_id
179780 , source_type_code
179781 , source_code
179782 , SUBSTR(source_value ,1,1996)
179783 , SUBSTR(source_meaning,1,200)
179784 , xla_environment_pkg.g_Usr_Id
179785 , TRUNC(SYSDATE)
179786 , TRUNC(SYSDATE)
179787 , xla_environment_pkg.g_Usr_Id
179788 , xla_environment_pkg.g_Login_Id
179789 , TRUNC(SYSDATE)
179790 , xla_environment_pkg.g_Prog_Appl_Id
179791 , xla_environment_pkg.g_Prog_Id
179792 , xla_environment_pkg.g_Req_Id
179793 FROM (
179794 SELECT xet.event_id event_id
179795 , 0 line_number
179796 , CASE r
179797 WHEN 1 THEN 'CST_XLA_INV_HEADERS_V'
179798 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V'
179799
179800 ELSE null
179801 END object_name
179802 , CASE r
179803 WHEN 1 THEN 'HEADER'
179804 WHEN 2 THEN 'HEADER'
179805
179806 ELSE null
179807 END object_type_code
179808 , CASE r
179809 WHEN 1 THEN '707'
179810 WHEN 2 THEN '707'
179811
179812 ELSE null
179813 END source_application_id
179814 , 'S' source_type_code
179815 , CASE r
179816 WHEN 1 THEN 'DISTRIBUTION_TYPE'
179817 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR'
179818
179819 ELSE null
179820 END source_code
179821 , CASE r
179822 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
179823 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
179824
179825 ELSE null
179826 END source_value
179827 , CASE r
179828 WHEN 1 THEN fvl12.meaning
179829 WHEN 2 THEN fvl38.meaning
179830
179831 ELSE null
179832 END source_meaning
179833 FROM xla_events_gt xet
179834 , CST_XLA_INV_HEADERS_V h1
179835 , fnd_lookup_values fvl12
179836 , fnd_lookup_values fvl38
179837 ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
179838 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
179839 AND xet.event_type_code = C_EVENT_TYPE_CODE
179840 AND h1.event_id = xet.event_id
179841 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
179842 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
179843 AND fvl12.view_application_id(+) = 700
179844 AND fvl12.language(+) = USERENV('LANG')
179845 AND fvl38.lookup_type(+) = 'YES_NO'
179846 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
179847 AND fvl38.view_application_id(+) = 0
179848 AND fvl38.language(+) = USERENV('LANG')
179849
179850 )
179851 ;
179852 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
179853
179854 trace
179855 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
179856 ,p_level => C_LEVEL_STATEMENT
179857 ,p_module => l_log_module);
179858
179859 END IF;
179860 --
179861
179862
179863
179864 --
179865 INSERT INTO xla_diag_sources --line1
179866 (
179867 event_id
179868 , ledger_id
179869 , sla_ledger_id
179870 , description_language
179871 , object_name
179872 , object_type_code
179873 , line_number
179874 , source_application_id
179875 , source_type_code
179876 , source_code
179877 , source_value
179878 , source_meaning
179879 , created_by
179880 , creation_date
179881 , last_update_date
179882 , last_updated_by
179883 , last_update_login
179884 , program_update_date
179885 , program_application_id
179886 , program_id
179887 , request_id
179888 )
179889 SELECT event_id
179890 , p_target_ledger_id
179891 , p_sla_ledger_id
179892 , p_language
179893 , object_name
179894 , object_type_code
179895 , line_number
179896 , source_application_id
179897 , source_type_code
179898 , source_code
179899 , SUBSTR(source_value,1,1996)
179900 , SUBSTR(source_meaning,1,200)
179901 , xla_environment_pkg.g_Usr_Id
179902 , TRUNC(SYSDATE)
179903 , TRUNC(SYSDATE)
179904 , xla_environment_pkg.g_Usr_Id
179905 , xla_environment_pkg.g_Login_Id
179906 , TRUNC(SYSDATE)
179907 , xla_environment_pkg.g_Prog_Appl_Id
179908 , xla_environment_pkg.g_Prog_Id
179909 , xla_environment_pkg.g_Req_Id
179910 FROM (
179911 SELECT xet.event_id event_id
179912 , l2.line_number line_number
179913 , CASE r
179914 WHEN 1 THEN 'CST_XLA_INV_LINES_V'
179915 WHEN 2 THEN 'CST_XLA_INV_LINES_V'
179916 WHEN 3 THEN 'CST_XLA_INV_LINES_V'
179917 WHEN 4 THEN 'CST_XLA_INV_LINES_V'
179918 WHEN 5 THEN 'CST_XLA_INV_LINES_V'
179919 WHEN 6 THEN 'CST_XLA_INV_LINES_V'
179920 WHEN 7 THEN 'CST_XLA_INV_LINES_V'
179921 WHEN 8 THEN 'CST_XLA_INV_LINES_V'
179922 WHEN 9 THEN 'CST_XLA_INV_LINES_V'
179923
179924 ELSE null
179925 END object_name
179926 , CASE r
179927 WHEN 1 THEN 'LINE'
179928 WHEN 2 THEN 'LINE'
179929 WHEN 3 THEN 'LINE'
179930 WHEN 4 THEN 'LINE'
179931 WHEN 5 THEN 'LINE'
179932 WHEN 6 THEN 'LINE'
179933 WHEN 7 THEN 'LINE'
179934 WHEN 8 THEN 'LINE'
179935 WHEN 9 THEN 'LINE'
179936
179937 ELSE null
179938 END object_type_code
179939 , CASE r
179940 WHEN 1 THEN '707'
179941 WHEN 2 THEN '707'
179942 WHEN 3 THEN '707'
179943 WHEN 4 THEN '707'
179944 WHEN 5 THEN '707'
179945 WHEN 6 THEN '707'
179946 WHEN 7 THEN '707'
179947 WHEN 8 THEN '707'
179948 WHEN 9 THEN '707'
179949
179950 ELSE null
179951 END source_application_id
179952 , 'S' source_type_code
179953 , CASE r
179954 WHEN 1 THEN 'CODE_COMBINATION_ID'
179955 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER'
179956 WHEN 3 THEN 'CURRENCY_CODE'
179957 WHEN 4 THEN 'ENTERED_AMOUNT'
179958 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE'
179959 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE'
179960 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE'
179961 WHEN 8 THEN 'ACCOUNTED_AMOUNT'
179962 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE'
179963
179964 ELSE null
179965 END source_code
179966 , CASE r
179967 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
179968 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
179969 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
179970 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
179971 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
179972 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
179973 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
179974 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
179975 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
179976
179977 ELSE null
179978 END source_value
179979 , null source_meaning
179980 FROM xla_events_gt xet
179981 , CST_XLA_INV_LINES_V l2
179982 ,(select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
179983 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
179984 AND xet.event_type_code = C_EVENT_TYPE_CODE
179985 AND l2.event_id = xet.event_id
179986
179987 )
179988 ;
179989 --
179990 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
179991
179992 trace
179993 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
179994 ,p_level => C_LEVEL_STATEMENT
179995 ,p_module => l_log_module);
179996
179997 END IF;
179998
179999
180000 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
180001 trace
180002 (p_msg => 'END of insert_sources_281'
180003 ,p_level => C_LEVEL_PROCEDURE
180004 ,p_module => l_log_module);
180005 END IF;
180006 EXCEPTION
180007 WHEN xla_exceptions_pkg.application_exception THEN
180008 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
180009 trace
180010 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
180011 ,p_level => C_LEVEL_EXCEPTION
180012 ,p_module => l_log_module);
180013 END IF;
180014 RAISE;
180015 WHEN OTHERS THEN
180016 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
180017 trace
180018 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
180019 ,p_level => C_LEVEL_EXCEPTION
180020 ,p_module => l_log_module);
180021 END IF;
180022 xla_exceptions_pkg.raise_message
180023 (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_281');
180024 END insert_sources_281;
180025 --
180026
180027 ---------------------------------------
180028 --
180029 -- PRIVATE FUNCTION
180030 -- EventType_281
180031 --
180032 ----------------------------------------
180033 --
180034 FUNCTION EventType_281
180035 (p_application_id IN NUMBER
180036 ,p_base_ledger_id IN NUMBER
180037 ,p_target_ledger_id IN NUMBER
180038 ,p_language IN VARCHAR2
180039 ,p_currency_code IN VARCHAR2
180040 ,p_sla_ledger_id IN NUMBER
180041 ,p_pad_start_date IN DATE
180042 ,p_pad_end_date IN DATE
180043 ,p_primary_ledger_id IN NUMBER)
180044 RETURN BOOLEAN IS
180045 --
180046 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'UDIR_INTERORG_SHIP_NO_TP';
180047 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'USER_DEFINE';
180048
180049 l_calculate_acctd_flag VARCHAR2(1) :='Y';
180050 l_calculate_g_l_flag VARCHAR2(1) :='Y';
180051 --
180052 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
180053 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
180054 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
180055 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
180056 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
180057 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
180058 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
180059 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
180060 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
180061 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
180062 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
180063 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
180064 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
180065 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
180066 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
180067 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
180068 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
180069 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
180070 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
180071 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
180072 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
180073 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
180074 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
180075 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
180076 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
180077 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
180078
180079 l_event_id NUMBER;
180080 l_previous_event_id NUMBER;
180081 l_first_event_id NUMBER;
180082 l_last_event_id NUMBER;
180083
180084 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
180085 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
180086 --
180087 --
180088 l_result BOOLEAN := TRUE;
180089 l_rows NUMBER := 1000;
180090 l_event_type_name VARCHAR2(80) := 'User-defined Direct Interorg Shipment, No Transfer Price';
180091 l_event_class_name VARCHAR2(80) := 'User Defined Inventory Transaction Class';
180092 l_description VARCHAR2(4000);
180093 l_transaction_reversal NUMBER;
180094 l_ae_header_id NUMBER;
180095 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
180096 l_log_module VARCHAR2(240);
180097 --
180098 l_acct_reversal_source VARCHAR2(30);
180099 l_trx_reversal_source VARCHAR2(30);
180100
180101 l_continue_with_lines BOOLEAN := TRUE;
180102 --
180103 l_acc_rev_gl_date_source DATE; -- 4262811
180104 --
180105 type t_array_event_id is table of number index by binary_integer;
180106
180107 l_rec_array_event t_rec_array_event;
180108 l_null_rec_array_event t_rec_array_event;
180109 l_array_ae_header_id xla_number_array_type;
180110 l_actual_flag VARCHAR2(1) := NULL;
180111 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
180112 l_balance_type_code VARCHAR2(1) :=NULL;
180113 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
180114
180115 --
180116 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
180117 --
180118
180119 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
180120 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
180121
180122 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
180123 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
180124 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
180125 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
180126 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
180127 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
180128 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
180129 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
180130 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
180131
180132 l_array_source_12 t_array_source_12;
180133 l_array_source_12_meaning t_array_lookup_meaning;
180134 l_array_source_38 t_array_source_38;
180135 l_array_source_38_meaning t_array_lookup_meaning;
180136
180137 l_array_source_4 t_array_source_4;
180138 l_array_source_11 t_array_source_11;
180139 l_array_source_15 t_array_source_15;
180140 l_array_source_18 t_array_source_18;
180141 l_array_source_19 t_array_source_19;
180142 l_array_source_20 t_array_source_20;
180143 l_array_source_21 t_array_source_21;
180144 l_array_source_22 t_array_source_22;
180145 l_array_source_24 t_array_source_24;
180146
180147 --
180148 CURSOR header_cur
180149 IS
180150 SELECT /*+ leading(xet) cardinality(xet,1) */
180151 -- Event Type Code: UDIR_INTERORG_SHIP_NO_TP
180152 -- Event Class Code: USER_DEFINE
180153 xet.entity_id
180154 , xet.legal_entity_id
180155 , xet.entity_code
180156 , xet.transaction_number
180157 , xet.event_id
180158 , xet.event_class_code
180159 , xet.event_type_code
180160 , xet.event_number
180161 , xet.event_date
180162 , xet.transaction_date
180163 , xet.reference_num_1
180164 , xet.reference_num_2
180165 , xet.reference_num_3
180166 , xet.reference_num_4
180167 , xet.reference_char_1
180168 , xet.reference_char_2
180169 , xet.reference_char_3
180170 , xet.reference_char_4
180171 , xet.reference_date_1
180172 , xet.reference_date_2
180173 , xet.reference_date_3
180174 , xet.reference_date_4
180175 , xet.event_created_by
180176 , xet.budgetary_control_flag
180177 , h1.DISTRIBUTION_TYPE source_12
180178 , fvl12.meaning source_12_meaning
180179 , h1.TRANSFER_TO_GL_INDICATOR source_38
180180 , fvl38.meaning source_38_meaning
180181 FROM xla_events_gt xet
180182 , CST_XLA_INV_HEADERS_V h1
180183 , fnd_lookup_values fvl12
180184 , fnd_lookup_values fvl38
180185 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
180186 and xet.event_type_code = C_EVENT_TYPE_CODE
180187 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
180188 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
180189 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
180190 AND fvl12.view_application_id(+) = 700
180191 AND fvl12.language(+) = USERENV('LANG')
180192 AND fvl38.lookup_type(+) = 'YES_NO'
180193 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
180194 AND fvl38.view_application_id(+) = 0
180195 AND fvl38.language(+) = USERENV('LANG')
180196
180197 ORDER BY event_id
180198 ;
180199
180200
180201 --
180202 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
180203 IS
180204 SELECT /*+ leading(xet) cardinality(xet,1) */
180205 -- Event Type Code: UDIR_INTERORG_SHIP_NO_TP
180206 -- Event Class Code: USER_DEFINE
180207 xet.entity_id
180208 ,xet.legal_entity_id
180209 ,xet.entity_code
180210 ,xet.transaction_number
180211 ,xet.event_id
180212 ,xet.event_class_code
180213 ,xet.event_type_code
180214 ,xet.event_number
180215 ,xet.event_date
180216 ,xet.transaction_date
180217 ,xet.reference_num_1
180218 ,xet.reference_num_2
180219 ,xet.reference_num_3
180220 ,xet.reference_num_4
180221 ,xet.reference_char_1
180222 ,xet.reference_char_2
180223 ,xet.reference_char_3
180224 ,xet.reference_char_4
180225 ,xet.reference_date_1
180226 ,xet.reference_date_2
180227 ,xet.reference_date_3
180228 ,xet.reference_date_4
180229 ,xet.event_created_by
180230 ,xet.budgetary_control_flag , l2.LINE_NUMBER
180231 , l2.CODE_COMBINATION_ID source_4
180232 , l2.DISTRIBUTION_IDENTIFIER source_11
180233 , l2.CURRENCY_CODE source_15
180234 , l2.ENTERED_AMOUNT source_18
180235 , l2.CURRENCY_CONVERSION_DATE source_19
180236 , l2.CURRENCY_CONVERSION_RATE source_20
180237 , l2.CURRENCY_CONVERSION_TYPE source_21
180238 , l2.ACCOUNTED_AMOUNT source_22
180239 , l2.ACCOUNTING_LINE_TYPE_CODE source_24
180240 FROM xla_events_gt xet
180241 , CST_XLA_INV_LINES_V l2
180242 WHERE xet.event_id between x_first_event_id and x_last_event_id
180243 and xet.event_date between p_pad_start_date and p_pad_end_date
180244 and xet.event_type_code = C_EVENT_TYPE_CODE
180245 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
180246 ;
180247
180248 --
180249 BEGIN
180250 IF g_log_enabled THEN
180251 l_log_module := C_DEFAULT_MODULE||'.EventType_281';
180252 END IF;
180253 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
180254 trace
180255 (p_msg => 'BEGIN of EventType_281'
180256 ,p_level => C_LEVEL_PROCEDURE
180257 ,p_module => l_log_module);
180258 END IF;
180259
180260 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
180261 trace
180262 (p_msg => 'p_application_id = '||p_application_id||
180263 ' - p_base_ledger_id = '||p_base_ledger_id||
180264 ' - p_target_ledger_id = '||p_target_ledger_id||
180265 ' - p_language = '||p_language||
180266 ' - p_currency_code = '||p_currency_code||
180267 ' - p_sla_ledger_id = '||p_sla_ledger_id
180268 ,p_level => C_LEVEL_STATEMENT
180269 ,p_module => l_log_module);
180270 END IF;
180271 --
180272 -- initialze arrays
180273 --
180274 g_array_event.DELETE;
180275 l_rec_array_event := l_null_rec_array_event;
180276 --
180277 --------------------------------------
180278 -- 4262811 Initialze MPA Line Number
180279 --------------------------------------
180280 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
180281
180282 --
180283
180284 --
180285 OPEN header_cur;
180286 --
180287 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
180288 trace
180289 (p_msg => 'SQL - FETCH header_cur'
180290 ,p_level => C_LEVEL_STATEMENT
180291 ,p_module => l_log_module);
180292 END IF;
180293 --
180294 LOOP
180295 FETCH header_cur BULK COLLECT INTO
180296 l_array_entity_id
180297 , l_array_legal_entity_id
180298 , l_array_entity_code
180299 , l_array_transaction_num
180300 , l_array_event_id
180301 , l_array_class_code
180302 , l_array_event_type
180303 , l_array_event_number
180304 , l_array_event_date
180305 , l_array_transaction_date
180306 , l_array_reference_num_1
180307 , l_array_reference_num_2
180308 , l_array_reference_num_3
180309 , l_array_reference_num_4
180310 , l_array_reference_char_1
180311 , l_array_reference_char_2
180312 , l_array_reference_char_3
180313 , l_array_reference_char_4
180314 , l_array_reference_date_1
180315 , l_array_reference_date_2
180316 , l_array_reference_date_3
180317 , l_array_reference_date_4
180318 , l_array_event_created_by
180319 , l_array_budgetary_control_flag
180320 , l_array_source_12
180321 , l_array_source_12_meaning
180322 , l_array_source_38
180323 , l_array_source_38_meaning
180324 LIMIT l_rows;
180325 --
180326 IF (C_LEVEL_EVENT >= g_log_level) THEN
180327 trace
180328 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
180329 ,p_level => C_LEVEL_EVENT
180330 ,p_module => l_log_module);
180331 END IF;
180332 --
180333 EXIT WHEN l_array_entity_id.COUNT = 0;
180334
180335 -- initialize arrays
180336 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
180337 XLA_AE_LINES_PKG.g_rec_lines := NULL;
180338
180339 --
180340 -- Bug 4458708
180341 --
180342 XLA_AE_LINES_PKG.g_LineNumber := 0;
180343
180344
180345 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
180346 g_last_hdr_idx := l_array_event_id.LAST;
180347 --
180348 -- loop for the headers. Each iteration is for each header extract row
180349 -- fetched in header cursor
180350 --
180351 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
180352
180353 --
180354 -- set event info as cache for other routines to refer event attributes
180355 --
180356 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
180357 (p_application_id => p_application_id
180358 ,p_primary_ledger_id => p_primary_ledger_id
180359 ,p_base_ledger_id => p_base_ledger_id
180360 ,p_target_ledger_id => p_target_ledger_id
180361 ,p_entity_id => l_array_entity_id(hdr_idx)
180362 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
180363 ,p_entity_code => l_array_entity_code(hdr_idx)
180364 ,p_transaction_num => l_array_transaction_num(hdr_idx)
180365 ,p_event_id => l_array_event_id(hdr_idx)
180366 ,p_event_class_code => l_array_class_code(hdr_idx)
180367 ,p_event_type_code => l_array_event_type(hdr_idx)
180368 ,p_event_number => l_array_event_number(hdr_idx)
180369 ,p_event_date => l_array_event_date(hdr_idx)
180370 ,p_transaction_date => l_array_transaction_date(hdr_idx)
180371 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
180372 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
180373 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
180374 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
180375 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
180376 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
180377 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
180378 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
180379 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
180380 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
180381 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
180382 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
180383 ,p_event_created_by => l_array_event_created_by(hdr_idx)
180384 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
180385
180386 --
180387 -- set the status of entry to C_VALID (0)
180388 --
180389 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
180390
180391 --
180392 -- initialize a row for ae header
180393 --
180394 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
180395
180396 l_event_id := l_array_event_id(hdr_idx);
180397
180398 --
180399 -- storing the hdr_idx for event. May be used by line cursor.
180400 --
180401 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
180402
180403 --
180404 -- store sources from header extract. This can be improved to
180405 -- store only those sources from header extract that may be used in lines
180406 --
180407
180408 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
180409 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
180410 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
180411 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
180412
180413 --
180414 -- initilaize the status of ae headers for diffrent balance types
180415 -- the status is initialised to C_NOT_CREATED (2)
180416 --
180417 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
180418 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
180419 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
180420
180421 --
180422 -- call api to validate and store accounting attributes for header
180423 --
180424
180425 ------------------------------------------------------------
180426 -- Accrual Reversal : to get date for Standard Source (NONE)
180427 ------------------------------------------------------------
180428 l_acc_rev_gl_date_source := NULL;
180429
180430 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
180431 l_rec_acct_attrs.array_date_value(1) :=
180432 xla_ae_sources_pkg.GetSystemSourceDate(
180433 p_source_code => 'XLA_REFERENCE_DATE_1'
180434 , p_source_type_code => 'Y'
180435 , p_source_application_id => 602
180436 );
180437 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_TRANSFER_FLAG';
180438 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
180439
180440
180441 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
180442
180443 XLA_AE_HEADER_PKG.SetJeCategoryName;
180444
180445 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
180446 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
180447 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
180448 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
180449 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
180450
180451
180452 -- No header level analytical criteria
180453
180454 --
180455 --accounting attribute enhancement, bug 3612931
180456 --
180457 l_trx_reversal_source := SUBSTR(NULL, 1,30);
180458
180459 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
180460 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
180461
180462 xla_accounting_err_pkg.build_message
180463 (p_appli_s_name => 'XLA'
180464 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
180465 ,p_token_1 => 'ACCT_ATTR_NAME'
180466 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
180467 ,p_token_2 => 'PRODUCT_NAME'
180468 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
180469 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
180470 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
180471 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
180472
180473 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
180474 --
180475 -- following sets the accounting attributes needed to reverse
180476 -- accounting for a distributeion
180477 --
180478 xla_ae_lines_pkg.SetTrxReversalAttrs
180479 (p_event_id => l_event_id
180480 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
180481 ,p_trx_reversal_source => l_trx_reversal_source);
180482
180483 END IF;
180484
180485
180486 ----------------------------------------------------------------
180487 -- 4262811 - update the header statuses to invalid in need be
180488 ----------------------------------------------------------------
180489 --
180490 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
180491
180492
180493 -----------------------------------------------
180494 -- No accrual reversal for the event class/type
180495 -----------------------------------------------
180496 ----------------------------------------------------------------
180497
180498 --
180499 -- this ends the header loop iteration for one bulk fetch
180500 --
180501 END LOOP;
180502
180503 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
180504 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
180505
180506 --
180507 -- insert dummy rows into lines gt table that were created due to
180508 -- transaction reversals
180509 --
180510 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
180511 l_result := XLA_AE_LINES_PKG.InsertLines;
180512 END IF;
180513
180514 --
180515 -- reset the temp_line_num for each set of events fetched from header
180516 -- cursor rather than doing it for each new event in line cursor
180517 -- Bug 3939231
180518 --
180519 xla_ae_lines_pkg.g_temp_line_num := 0;
180520
180521
180522
180523 --
180524 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
180525 --
180526 --
180527 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
180528
180529 trace
180530 (p_msg => 'SQL - FETCH line_cur'
180531 ,p_level => C_LEVEL_STATEMENT
180532 ,p_module => l_log_module);
180533
180534 END IF;
180535 --
180536 --
180537 LOOP
180538 --
180539 FETCH line_cur BULK COLLECT INTO
180540 l_array_entity_id
180541 , l_array_legal_entity_id
180542 , l_array_entity_code
180543 , l_array_transaction_num
180544 , l_array_event_id
180545 , l_array_class_code
180546 , l_array_event_type
180547 , l_array_event_number
180548 , l_array_event_date
180549 , l_array_transaction_date
180550 , l_array_reference_num_1
180551 , l_array_reference_num_2
180552 , l_array_reference_num_3
180553 , l_array_reference_num_4
180554 , l_array_reference_char_1
180555 , l_array_reference_char_2
180556 , l_array_reference_char_3
180557 , l_array_reference_char_4
180558 , l_array_reference_date_1
180559 , l_array_reference_date_2
180560 , l_array_reference_date_3
180561 , l_array_reference_date_4
180562 , l_array_event_created_by
180563 , l_array_budgetary_control_flag
180564 , l_array_extract_line_num
180565 , l_array_source_4
180566 , l_array_source_11
180567 , l_array_source_15
180568 , l_array_source_18
180569 , l_array_source_19
180570 , l_array_source_20
180571 , l_array_source_21
180572 , l_array_source_22
180573 , l_array_source_24
180574 LIMIT l_rows;
180575
180576 --
180577 IF (C_LEVEL_EVENT >= g_log_level) THEN
180578 trace
180579 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
180580 ,p_level => C_LEVEL_EVENT
180581 ,p_module => l_log_module);
180582 END IF;
180583 --
180584 EXIT WHEN l_array_entity_id.count = 0;
180585
180586 XLA_AE_LINES_PKG.g_rec_lines := null;
180587
180588 --
180589 -- Bug 4458708
180590 --
180591 XLA_AE_LINES_PKG.g_LineNumber := 0;
180592 --
180593 --
180594
180595 FOR Idx IN 1..l_array_event_id.count LOOP
180596 --
180597 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
180598 --
180599 l_event_id := l_array_event_id(idx); -- 5648433
180600
180601 --
180602 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
180603 --
180604
180605 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
180606 (g_array_event(l_event_id).array_value_num('header_index'))
180607 ,'N'
180608 ) <> 'Y'
180609 THEN
180610 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
180611 trace
180612 (p_msg => 'Trancaction revesal option is not Y '
180613 ,p_level => C_LEVEL_STATEMENT
180614 ,p_module => l_log_module);
180615 END IF;
180616
180617 --
180618 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
180619 --
180620 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
180621 --
180622 -- set event info as cache for other routines to refer event attributes
180623 --
180624
180625 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
180626 l_previous_event_id := l_event_id;
180627
180628 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
180629 (p_application_id => p_application_id
180630 ,p_primary_ledger_id => p_primary_ledger_id
180631 ,p_base_ledger_id => p_base_ledger_id
180632 ,p_target_ledger_id => p_target_ledger_id
180633 ,p_entity_id => l_array_entity_id(Idx)
180634 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
180635 ,p_entity_code => l_array_entity_code(Idx)
180636 ,p_transaction_num => l_array_transaction_num(Idx)
180637 ,p_event_id => l_array_event_id(Idx)
180638 ,p_event_class_code => l_array_class_code(Idx)
180639 ,p_event_type_code => l_array_event_type(Idx)
180640 ,p_event_number => l_array_event_number(Idx)
180641 ,p_event_date => l_array_event_date(Idx)
180642 ,p_transaction_date => l_array_transaction_date(Idx)
180643 ,p_reference_num_1 => l_array_reference_num_1(Idx)
180644 ,p_reference_num_2 => l_array_reference_num_2(Idx)
180645 ,p_reference_num_3 => l_array_reference_num_3(Idx)
180646 ,p_reference_num_4 => l_array_reference_num_4(Idx)
180647 ,p_reference_char_1 => l_array_reference_char_1(Idx)
180648 ,p_reference_char_2 => l_array_reference_char_2(Idx)
180649 ,p_reference_char_3 => l_array_reference_char_3(Idx)
180650 ,p_reference_char_4 => l_array_reference_char_4(Idx)
180651 ,p_reference_date_1 => l_array_reference_date_1(Idx)
180652 ,p_reference_date_2 => l_array_reference_date_2(Idx)
180653 ,p_reference_date_3 => l_array_reference_date_3(Idx)
180654 ,p_reference_date_4 => l_array_reference_date_4(Idx)
180655 ,p_event_created_by => l_array_event_created_by(Idx)
180656 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
180657 --
180658 END IF;
180659
180660
180661
180662 --
180663 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
180664
180665 l_acct_reversal_source := SUBSTR(NULL, 1,30);
180666
180667 IF l_continue_with_lines THEN
180668 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
180669 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
180670
180671 xla_accounting_err_pkg.build_message
180672 (p_appli_s_name => 'XLA'
180673 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
180674 ,p_token_1 => 'LINE_NUMBER'
180675 ,p_value_1 => l_array_extract_line_num(Idx)
180676 ,p_token_2 => 'PRODUCT_NAME'
180677 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
180678 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
180679 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
180680 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
180681
180682 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
180683 --
180684 -- following sets the accounting attributes needed to reverse
180685 -- accounting for a distributeion
180686 --
180687
180688 --
180689 -- 5217187
180690 --
180691 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
180692 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
180693 g_array_event(l_event_id).array_value_num('header_index'));
180694 --
180695 --
180696
180697 -- No reversal code generated
180698
180699 xla_ae_lines_pkg.SetAcctReversalAttrs
180700 (p_event_id => l_event_id
180701 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
180702 ,p_calculate_acctd_flag => l_calculate_acctd_flag
180703 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
180704 END IF;
180705
180706 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
180707 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
180708
180709 --
180710 AcctLineType_61 (
180711 p_application_id => p_application_id
180712 ,p_event_id => l_event_id
180713 ,p_calculate_acctd_flag => l_calculate_acctd_flag
180714 ,p_calculate_g_l_flag => l_calculate_g_l_flag
180715 ,p_actual_flag => l_actual_flag
180716 ,p_balance_type_code => l_balance_type_code
180717 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
180718
180719 , p_source_4 => l_array_source_4(Idx)
180720 , p_source_11 => l_array_source_11(Idx)
180721 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
180722 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
180723 , p_source_15 => l_array_source_15(Idx)
180724 , p_source_18 => l_array_source_18(Idx)
180725 , p_source_19 => l_array_source_19(Idx)
180726 , p_source_20 => l_array_source_20(Idx)
180727 , p_source_21 => l_array_source_21(Idx)
180728 , p_source_22 => l_array_source_22(Idx)
180729 , p_source_24 => l_array_source_24(Idx)
180730 );
180731 If(l_balance_type_code = 'A') THEN
180732 l_actual_gain_loss_ref := l_gain_or_loss_ref;
180733 END IF;
180734
180735 --
180736
180737
180738 --
180739 AcctLineType_80 (
180740 p_application_id => p_application_id
180741 ,p_event_id => l_event_id
180742 ,p_calculate_acctd_flag => l_calculate_acctd_flag
180743 ,p_calculate_g_l_flag => l_calculate_g_l_flag
180744 ,p_actual_flag => l_actual_flag
180745 ,p_balance_type_code => l_balance_type_code
180746 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
180747
180748 , p_source_4 => l_array_source_4(Idx)
180749 , p_source_11 => l_array_source_11(Idx)
180750 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
180751 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
180752 , p_source_15 => l_array_source_15(Idx)
180753 , p_source_18 => l_array_source_18(Idx)
180754 , p_source_19 => l_array_source_19(Idx)
180755 , p_source_20 => l_array_source_20(Idx)
180756 , p_source_21 => l_array_source_21(Idx)
180757 , p_source_22 => l_array_source_22(Idx)
180758 , p_source_24 => l_array_source_24(Idx)
180759 );
180760 If(l_balance_type_code = 'A') THEN
180761 l_actual_gain_loss_ref := l_gain_or_loss_ref;
180762 END IF;
180763
180764 --
180765
180766
180767 --
180768 AcctLineType_91 (
180769 p_application_id => p_application_id
180770 ,p_event_id => l_event_id
180771 ,p_calculate_acctd_flag => l_calculate_acctd_flag
180772 ,p_calculate_g_l_flag => l_calculate_g_l_flag
180773 ,p_actual_flag => l_actual_flag
180774 ,p_balance_type_code => l_balance_type_code
180775 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
180776
180777 , p_source_4 => l_array_source_4(Idx)
180778 , p_source_11 => l_array_source_11(Idx)
180779 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
180780 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
180781 , p_source_15 => l_array_source_15(Idx)
180782 , p_source_18 => l_array_source_18(Idx)
180783 , p_source_19 => l_array_source_19(Idx)
180784 , p_source_20 => l_array_source_20(Idx)
180785 , p_source_21 => l_array_source_21(Idx)
180786 , p_source_22 => l_array_source_22(Idx)
180787 , p_source_24 => l_array_source_24(Idx)
180788 );
180789 If(l_balance_type_code = 'A') THEN
180790 l_actual_gain_loss_ref := l_gain_or_loss_ref;
180791 END IF;
180792
180793 --
180794
180795
180796 --
180797 AcctLineType_98 (
180798 p_application_id => p_application_id
180799 ,p_event_id => l_event_id
180800 ,p_calculate_acctd_flag => l_calculate_acctd_flag
180801 ,p_calculate_g_l_flag => l_calculate_g_l_flag
180802 ,p_actual_flag => l_actual_flag
180803 ,p_balance_type_code => l_balance_type_code
180804 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
180805
180806 , p_source_4 => l_array_source_4(Idx)
180807 , p_source_11 => l_array_source_11(Idx)
180808 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
180809 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
180810 , p_source_15 => l_array_source_15(Idx)
180811 , p_source_18 => l_array_source_18(Idx)
180812 , p_source_19 => l_array_source_19(Idx)
180813 , p_source_20 => l_array_source_20(Idx)
180814 , p_source_21 => l_array_source_21(Idx)
180815 , p_source_22 => l_array_source_22(Idx)
180816 , p_source_24 => l_array_source_24(Idx)
180817 );
180818 If(l_balance_type_code = 'A') THEN
180819 l_actual_gain_loss_ref := l_gain_or_loss_ref;
180820 END IF;
180821
180822 --
180823
180824
180825 --
180826 AcctLineType_108 (
180827 p_application_id => p_application_id
180828 ,p_event_id => l_event_id
180829 ,p_calculate_acctd_flag => l_calculate_acctd_flag
180830 ,p_calculate_g_l_flag => l_calculate_g_l_flag
180831 ,p_actual_flag => l_actual_flag
180832 ,p_balance_type_code => l_balance_type_code
180833 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
180834
180835 , p_source_4 => l_array_source_4(Idx)
180836 , p_source_11 => l_array_source_11(Idx)
180837 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
180838 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
180839 , p_source_15 => l_array_source_15(Idx)
180840 , p_source_18 => l_array_source_18(Idx)
180841 , p_source_19 => l_array_source_19(Idx)
180842 , p_source_20 => l_array_source_20(Idx)
180843 , p_source_21 => l_array_source_21(Idx)
180844 , p_source_22 => l_array_source_22(Idx)
180845 , p_source_24 => l_array_source_24(Idx)
180846 );
180847 If(l_balance_type_code = 'A') THEN
180848 l_actual_gain_loss_ref := l_gain_or_loss_ref;
180849 END IF;
180850
180851 --
180852
180853
180854 --
180855 AcctLineType_148 (
180856 p_application_id => p_application_id
180857 ,p_event_id => l_event_id
180858 ,p_calculate_acctd_flag => l_calculate_acctd_flag
180859 ,p_calculate_g_l_flag => l_calculate_g_l_flag
180860 ,p_actual_flag => l_actual_flag
180861 ,p_balance_type_code => l_balance_type_code
180862 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
180863
180864 , p_source_4 => l_array_source_4(Idx)
180865 , p_source_11 => l_array_source_11(Idx)
180866 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
180867 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
180868 , p_source_15 => l_array_source_15(Idx)
180869 , p_source_18 => l_array_source_18(Idx)
180870 , p_source_19 => l_array_source_19(Idx)
180871 , p_source_20 => l_array_source_20(Idx)
180872 , p_source_21 => l_array_source_21(Idx)
180873 , p_source_22 => l_array_source_22(Idx)
180874 , p_source_24 => l_array_source_24(Idx)
180875 );
180876 If(l_balance_type_code = 'A') THEN
180877 l_actual_gain_loss_ref := l_gain_or_loss_ref;
180878 END IF;
180879
180880 --
180881
180882
180883 --
180884 AcctLineType_165 (
180885 p_application_id => p_application_id
180886 ,p_event_id => l_event_id
180887 ,p_calculate_acctd_flag => l_calculate_acctd_flag
180888 ,p_calculate_g_l_flag => l_calculate_g_l_flag
180889 ,p_actual_flag => l_actual_flag
180890 ,p_balance_type_code => l_balance_type_code
180891 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
180892
180893 , p_source_4 => l_array_source_4(Idx)
180894 , p_source_11 => l_array_source_11(Idx)
180895 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
180896 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
180897 , p_source_15 => l_array_source_15(Idx)
180898 , p_source_18 => l_array_source_18(Idx)
180899 , p_source_19 => l_array_source_19(Idx)
180900 , p_source_20 => l_array_source_20(Idx)
180901 , p_source_21 => l_array_source_21(Idx)
180902 , p_source_22 => l_array_source_22(Idx)
180903 , p_source_24 => l_array_source_24(Idx)
180904 );
180905 If(l_balance_type_code = 'A') THEN
180906 l_actual_gain_loss_ref := l_gain_or_loss_ref;
180907 END IF;
180908
180909 --
180910
180911
180912 --
180913 AcctLineType_198 (
180914 p_application_id => p_application_id
180915 ,p_event_id => l_event_id
180916 ,p_calculate_acctd_flag => l_calculate_acctd_flag
180917 ,p_calculate_g_l_flag => l_calculate_g_l_flag
180918 ,p_actual_flag => l_actual_flag
180919 ,p_balance_type_code => l_balance_type_code
180920 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
180921
180922 , p_source_4 => l_array_source_4(Idx)
180923 , p_source_11 => l_array_source_11(Idx)
180924 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
180925 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
180926 , p_source_15 => l_array_source_15(Idx)
180927 , p_source_18 => l_array_source_18(Idx)
180928 , p_source_19 => l_array_source_19(Idx)
180929 , p_source_20 => l_array_source_20(Idx)
180930 , p_source_21 => l_array_source_21(Idx)
180931 , p_source_22 => l_array_source_22(Idx)
180932 , p_source_24 => l_array_source_24(Idx)
180933 );
180934 If(l_balance_type_code = 'A') THEN
180935 l_actual_gain_loss_ref := l_gain_or_loss_ref;
180936 END IF;
180937
180938 --
180939
180940
180941 --
180942 AcctLineType_221 (
180943 p_application_id => p_application_id
180944 ,p_event_id => l_event_id
180945 ,p_calculate_acctd_flag => l_calculate_acctd_flag
180946 ,p_calculate_g_l_flag => l_calculate_g_l_flag
180947 ,p_actual_flag => l_actual_flag
180948 ,p_balance_type_code => l_balance_type_code
180949 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
180950
180951 , p_source_4 => l_array_source_4(Idx)
180952 , p_source_11 => l_array_source_11(Idx)
180953 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
180954 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
180955 , p_source_15 => l_array_source_15(Idx)
180956 , p_source_18 => l_array_source_18(Idx)
180957 , p_source_19 => l_array_source_19(Idx)
180958 , p_source_20 => l_array_source_20(Idx)
180959 , p_source_21 => l_array_source_21(Idx)
180960 , p_source_22 => l_array_source_22(Idx)
180961 , p_source_24 => l_array_source_24(Idx)
180962 );
180963 If(l_balance_type_code = 'A') THEN
180964 l_actual_gain_loss_ref := l_gain_or_loss_ref;
180965 END IF;
180966
180967 --
180968
180969 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
180970 -- or secondary ledger that has different currency with primary
180971 -- or alc that is calculated by sla
180972 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
180973 (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'))
180974
180975 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
180976 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
180977 AND (l_actual_flag = 'A')) THEN
180978 XLA_AE_LINES_PKG.CreateGainOrLossLines(
180979 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
180980 ,p_application_id => p_application_id
180981 ,p_amb_context_code => 'DEFAULT'
180982 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
180983 ,p_event_class_code => C_EVENT_CLASS_CODE
180984 ,p_event_type_code => C_EVENT_TYPE_CODE
180985
180986 ,p_gain_ccid => -1
180987 ,p_loss_ccid => -1
180988
180989 ,p_actual_flag => l_actual_flag
180990 ,p_enc_flag => null
180991 ,p_actual_g_l_ref => l_actual_gain_loss_ref
180992 ,p_enc_g_l_ref => null
180993 );
180994 END IF;
180995 END IF;
180996 END IF;
180997
180998 ELSE
180999 --
181000 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
181001 --
181002 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
181003 trace
181004 (p_msg => 'Trancaction revesal option is Y'
181005 ,p_level => C_LEVEL_STATEMENT
181006 ,p_module => l_log_module);
181007 END IF;
181008 END IF;
181009
181010 END LOOP;
181011 l_result := XLA_AE_LINES_PKG.InsertLines ;
181012 end loop;
181013 close line_cur;
181014
181015
181016 --
181017 -- insert headers into xla_ae_headers_gt table
181018 --
181019 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
181020
181021 -- insert into errors table here.
181022
181023 END LOOP;
181024
181025 --
181026 -- 4865292
181027 --
181028 -- Compare g_hdr_extract_count with event count in
181029 -- CreateHeadersAndLines.
181030 --
181031 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
181032
181033 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
181034 trace (p_msg => '# rows extracted from header extract objects '
181035 || ' (running total): '
181036 || g_hdr_extract_count
181037 ,p_level => C_LEVEL_STATEMENT
181038 ,p_module => l_log_module);
181039 END IF;
181040
181041 CLOSE header_cur;
181042 --
181043
181044 --
181045 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
181046 trace
181047 (p_msg => 'END of EventType_281'
181048 ,p_level => C_LEVEL_PROCEDURE
181049 ,p_module => l_log_module);
181050 END IF;
181051 --
181052 RETURN l_result;
181053 EXCEPTION
181054 WHEN xla_exceptions_pkg.application_exception THEN
181055
181056 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
181057
181058
181059 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
181060
181061 RAISE;
181062
181063 WHEN NO_DATA_FOUND THEN
181064
181065 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
181066 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
181067
181068 FOR header_record IN header_cur
181069 LOOP
181070 l_array_header_events(header_record.event_id) := header_record.event_id;
181071 END LOOP;
181072
181073 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
181074 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
181075
181076 fnd_file.put_line(fnd_file.LOG, ' ');
181077 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
181078 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
181079 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
181080
181081 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
181082 LOOP
181083 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
181084 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
181085 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
181086 END IF;
181087 END LOOP;
181088
181089 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
181090 fnd_file.put_line(fnd_file.LOG, ' ');
181091
181092
181093 xla_exceptions_pkg.raise_message
181094 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventType_281');
181095
181096
181097 WHEN OTHERS THEN
181098 xla_exceptions_pkg.raise_message
181099 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventType_281');
181100 END EventType_281;
181101 --
181102
181103 ---------------------------------------
181104 --
181105 -- PRIVATE PROCEDURE
181106 -- insert_sources_282
181107 --
181108 ----------------------------------------
181109 --
181110 PROCEDURE insert_sources_282(
181111 p_target_ledger_id IN NUMBER
181112 , p_language IN VARCHAR2
181113 , p_sla_ledger_id IN NUMBER
181114 , p_pad_start_date IN DATE
181115 , p_pad_end_date IN DATE
181116 )
181117 IS
181118
181119 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'UDIR_INTERORG_SHIP_TP';
181120 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'USER_DEFINE';
181121 p_apps_owner VARCHAR2(30);
181122 l_log_module VARCHAR2(240);
181123 BEGIN
181124 IF g_log_enabled THEN
181125 l_log_module := C_DEFAULT_MODULE||'.insert_sources_282';
181126 END IF;
181127 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
181128
181129 trace
181130 (p_msg => 'BEGIN of insert_sources_282'
181131 ,p_level => C_LEVEL_PROCEDURE
181132 ,p_module => l_log_module);
181133
181134 END IF;
181135
181136 -- select APPS owner
181137 SELECT oracle_username
181138 INTO p_apps_owner
181139 FROM fnd_oracle_userid
181140 WHERE read_only_flag = 'U'
181141 ;
181142
181143 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
181144 trace
181145 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
181146 ' - p_language = '||p_language||
181147 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
181148 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
181149 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
181150 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
181151 ,p_level => C_LEVEL_STATEMENT
181152 ,p_module => l_log_module);
181153 END IF;
181154
181155
181156 --
181157 INSERT INTO xla_diag_sources --hdr1
181158 (
181159 event_id
181160 , ledger_id
181161 , sla_ledger_id
181162 , description_language
181163 , object_name
181164 , object_type_code
181165 , line_number
181166 , source_application_id
181167 , source_type_code
181168 , source_code
181169 , source_value
181170 , source_meaning
181171 , created_by
181172 , creation_date
181173 , last_update_date
181174 , last_updated_by
181175 , last_update_login
181176 , program_update_date
181177 , program_application_id
181178 , program_id
181179 , request_id
181180 )
181181 SELECT
181182 event_id
181183 , p_target_ledger_id
181184 , p_sla_ledger_id
181185 , p_language
181186 , object_name
181187 , object_type_code
181188 , line_number
181189 , source_application_id
181190 , source_type_code
181191 , source_code
181192 , SUBSTR(source_value ,1,1996)
181193 , SUBSTR(source_meaning,1,200)
181194 , xla_environment_pkg.g_Usr_Id
181195 , TRUNC(SYSDATE)
181196 , TRUNC(SYSDATE)
181197 , xla_environment_pkg.g_Usr_Id
181198 , xla_environment_pkg.g_Login_Id
181199 , TRUNC(SYSDATE)
181200 , xla_environment_pkg.g_Prog_Appl_Id
181201 , xla_environment_pkg.g_Prog_Id
181202 , xla_environment_pkg.g_Req_Id
181203 FROM (
181204 SELECT xet.event_id event_id
181205 , 0 line_number
181206 , CASE r
181207 WHEN 1 THEN 'CST_XLA_INV_HEADERS_V'
181208 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V'
181209
181210 ELSE null
181211 END object_name
181212 , CASE r
181213 WHEN 1 THEN 'HEADER'
181214 WHEN 2 THEN 'HEADER'
181215
181216 ELSE null
181217 END object_type_code
181218 , CASE r
181219 WHEN 1 THEN '707'
181220 WHEN 2 THEN '707'
181221
181222 ELSE null
181223 END source_application_id
181224 , 'S' source_type_code
181225 , CASE r
181226 WHEN 1 THEN 'DISTRIBUTION_TYPE'
181227 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR'
181228
181229 ELSE null
181230 END source_code
181231 , CASE r
181232 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
181233 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
181234
181235 ELSE null
181236 END source_value
181237 , CASE r
181238 WHEN 1 THEN fvl12.meaning
181239 WHEN 2 THEN fvl38.meaning
181240
181241 ELSE null
181242 END source_meaning
181243 FROM xla_events_gt xet
181244 , CST_XLA_INV_HEADERS_V h1
181245 , fnd_lookup_values fvl12
181246 , fnd_lookup_values fvl38
181247 ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
181248 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
181249 AND xet.event_type_code = C_EVENT_TYPE_CODE
181250 AND h1.event_id = xet.event_id
181251 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
181252 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
181253 AND fvl12.view_application_id(+) = 700
181254 AND fvl12.language(+) = USERENV('LANG')
181255 AND fvl38.lookup_type(+) = 'YES_NO'
181256 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
181257 AND fvl38.view_application_id(+) = 0
181258 AND fvl38.language(+) = USERENV('LANG')
181259
181260 )
181261 ;
181262 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
181263
181264 trace
181265 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
181266 ,p_level => C_LEVEL_STATEMENT
181267 ,p_module => l_log_module);
181268
181269 END IF;
181270 --
181271
181272
181273
181274 --
181275 INSERT INTO xla_diag_sources --line1
181276 (
181277 event_id
181278 , ledger_id
181279 , sla_ledger_id
181280 , description_language
181281 , object_name
181282 , object_type_code
181283 , line_number
181284 , source_application_id
181285 , source_type_code
181286 , source_code
181287 , source_value
181288 , source_meaning
181289 , created_by
181290 , creation_date
181291 , last_update_date
181292 , last_updated_by
181293 , last_update_login
181294 , program_update_date
181295 , program_application_id
181296 , program_id
181297 , request_id
181298 )
181299 SELECT event_id
181300 , p_target_ledger_id
181301 , p_sla_ledger_id
181302 , p_language
181303 , object_name
181304 , object_type_code
181305 , line_number
181306 , source_application_id
181307 , source_type_code
181308 , source_code
181309 , SUBSTR(source_value,1,1996)
181310 , SUBSTR(source_meaning,1,200)
181311 , xla_environment_pkg.g_Usr_Id
181312 , TRUNC(SYSDATE)
181313 , TRUNC(SYSDATE)
181314 , xla_environment_pkg.g_Usr_Id
181315 , xla_environment_pkg.g_Login_Id
181316 , TRUNC(SYSDATE)
181317 , xla_environment_pkg.g_Prog_Appl_Id
181318 , xla_environment_pkg.g_Prog_Id
181319 , xla_environment_pkg.g_Req_Id
181320 FROM (
181321 SELECT xet.event_id event_id
181322 , l2.line_number line_number
181323 , CASE r
181324 WHEN 1 THEN 'CST_XLA_INV_LINES_V'
181325 WHEN 2 THEN 'CST_XLA_INV_LINES_V'
181326 WHEN 3 THEN 'CST_XLA_INV_LINES_V'
181327 WHEN 4 THEN 'CST_XLA_INV_LINES_V'
181328 WHEN 5 THEN 'CST_XLA_INV_LINES_V'
181329 WHEN 6 THEN 'CST_XLA_INV_LINES_V'
181330 WHEN 7 THEN 'CST_XLA_INV_LINES_V'
181331 WHEN 8 THEN 'CST_XLA_INV_LINES_V'
181332 WHEN 9 THEN 'CST_XLA_INV_LINES_V'
181333
181334 ELSE null
181335 END object_name
181336 , CASE r
181337 WHEN 1 THEN 'LINE'
181338 WHEN 2 THEN 'LINE'
181339 WHEN 3 THEN 'LINE'
181340 WHEN 4 THEN 'LINE'
181341 WHEN 5 THEN 'LINE'
181342 WHEN 6 THEN 'LINE'
181343 WHEN 7 THEN 'LINE'
181344 WHEN 8 THEN 'LINE'
181345 WHEN 9 THEN 'LINE'
181346
181347 ELSE null
181348 END object_type_code
181349 , CASE r
181350 WHEN 1 THEN '707'
181351 WHEN 2 THEN '707'
181352 WHEN 3 THEN '707'
181353 WHEN 4 THEN '707'
181354 WHEN 5 THEN '707'
181355 WHEN 6 THEN '707'
181356 WHEN 7 THEN '707'
181357 WHEN 8 THEN '707'
181358 WHEN 9 THEN '707'
181359
181360 ELSE null
181361 END source_application_id
181362 , 'S' source_type_code
181363 , CASE r
181364 WHEN 1 THEN 'CODE_COMBINATION_ID'
181365 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER'
181366 WHEN 3 THEN 'CURRENCY_CODE'
181367 WHEN 4 THEN 'ENTERED_AMOUNT'
181368 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE'
181369 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE'
181370 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE'
181371 WHEN 8 THEN 'ACCOUNTED_AMOUNT'
181372 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE'
181373
181374 ELSE null
181375 END source_code
181376 , CASE r
181377 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
181378 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
181379 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
181380 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
181381 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
181382 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
181383 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
181384 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
181385 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
181386
181387 ELSE null
181388 END source_value
181389 , null source_meaning
181390 FROM xla_events_gt xet
181391 , CST_XLA_INV_LINES_V l2
181392 ,(select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
181393 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
181394 AND xet.event_type_code = C_EVENT_TYPE_CODE
181395 AND l2.event_id = xet.event_id
181396
181397 )
181398 ;
181399 --
181400 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
181401
181402 trace
181403 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
181404 ,p_level => C_LEVEL_STATEMENT
181405 ,p_module => l_log_module);
181406
181407 END IF;
181408
181409
181410 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
181411 trace
181412 (p_msg => 'END of insert_sources_282'
181413 ,p_level => C_LEVEL_PROCEDURE
181414 ,p_module => l_log_module);
181415 END IF;
181416 EXCEPTION
181417 WHEN xla_exceptions_pkg.application_exception THEN
181418 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
181419 trace
181420 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
181421 ,p_level => C_LEVEL_EXCEPTION
181422 ,p_module => l_log_module);
181423 END IF;
181424 RAISE;
181425 WHEN OTHERS THEN
181426 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
181427 trace
181428 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
181429 ,p_level => C_LEVEL_EXCEPTION
181430 ,p_module => l_log_module);
181431 END IF;
181432 xla_exceptions_pkg.raise_message
181433 (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_282');
181434 END insert_sources_282;
181435 --
181436
181437 ---------------------------------------
181438 --
181439 -- PRIVATE FUNCTION
181440 -- EventType_282
181441 --
181442 ----------------------------------------
181443 --
181444 FUNCTION EventType_282
181445 (p_application_id IN NUMBER
181446 ,p_base_ledger_id IN NUMBER
181447 ,p_target_ledger_id IN NUMBER
181448 ,p_language IN VARCHAR2
181449 ,p_currency_code IN VARCHAR2
181450 ,p_sla_ledger_id IN NUMBER
181451 ,p_pad_start_date IN DATE
181452 ,p_pad_end_date IN DATE
181453 ,p_primary_ledger_id IN NUMBER)
181454 RETURN BOOLEAN IS
181455 --
181456 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'UDIR_INTERORG_SHIP_TP';
181457 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'USER_DEFINE';
181458
181459 l_calculate_acctd_flag VARCHAR2(1) :='Y';
181460 l_calculate_g_l_flag VARCHAR2(1) :='Y';
181461 --
181462 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
181463 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
181464 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
181465 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
181466 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
181467 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
181468 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
181469 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
181470 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
181471 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
181472 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
181473 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
181474 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
181475 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
181476 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
181477 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
181478 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
181479 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
181480 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
181481 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
181482 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
181483 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
181484 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
181485 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
181486 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
181487 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
181488
181489 l_event_id NUMBER;
181490 l_previous_event_id NUMBER;
181491 l_first_event_id NUMBER;
181492 l_last_event_id NUMBER;
181493
181494 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
181495 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
181496 --
181497 --
181498 l_result BOOLEAN := TRUE;
181499 l_rows NUMBER := 1000;
181500 l_event_type_name VARCHAR2(80) := 'User-defined Direct Interorg Shipment, Transfer Price';
181501 l_event_class_name VARCHAR2(80) := 'User Defined Inventory Transaction Class';
181502 l_description VARCHAR2(4000);
181503 l_transaction_reversal NUMBER;
181504 l_ae_header_id NUMBER;
181505 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
181506 l_log_module VARCHAR2(240);
181507 --
181508 l_acct_reversal_source VARCHAR2(30);
181509 l_trx_reversal_source VARCHAR2(30);
181510
181511 l_continue_with_lines BOOLEAN := TRUE;
181512 --
181513 l_acc_rev_gl_date_source DATE; -- 4262811
181514 --
181515 type t_array_event_id is table of number index by binary_integer;
181516
181517 l_rec_array_event t_rec_array_event;
181518 l_null_rec_array_event t_rec_array_event;
181519 l_array_ae_header_id xla_number_array_type;
181520 l_actual_flag VARCHAR2(1) := NULL;
181521 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
181522 l_balance_type_code VARCHAR2(1) :=NULL;
181523 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
181524
181525 --
181526 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
181527 --
181528
181529 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
181530 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
181531
181532 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
181533 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
181534 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
181535 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
181536 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
181537 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
181538 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
181539 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
181540 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
181541
181542 l_array_source_12 t_array_source_12;
181543 l_array_source_12_meaning t_array_lookup_meaning;
181544 l_array_source_38 t_array_source_38;
181545 l_array_source_38_meaning t_array_lookup_meaning;
181546
181547 l_array_source_4 t_array_source_4;
181548 l_array_source_11 t_array_source_11;
181549 l_array_source_15 t_array_source_15;
181550 l_array_source_18 t_array_source_18;
181551 l_array_source_19 t_array_source_19;
181552 l_array_source_20 t_array_source_20;
181553 l_array_source_21 t_array_source_21;
181554 l_array_source_22 t_array_source_22;
181555 l_array_source_24 t_array_source_24;
181556
181557 --
181558 CURSOR header_cur
181559 IS
181560 SELECT /*+ leading(xet) cardinality(xet,1) */
181561 -- Event Type Code: UDIR_INTERORG_SHIP_TP
181562 -- Event Class Code: USER_DEFINE
181563 xet.entity_id
181564 , xet.legal_entity_id
181565 , xet.entity_code
181566 , xet.transaction_number
181567 , xet.event_id
181568 , xet.event_class_code
181569 , xet.event_type_code
181570 , xet.event_number
181571 , xet.event_date
181572 , xet.transaction_date
181573 , xet.reference_num_1
181574 , xet.reference_num_2
181575 , xet.reference_num_3
181576 , xet.reference_num_4
181577 , xet.reference_char_1
181578 , xet.reference_char_2
181579 , xet.reference_char_3
181580 , xet.reference_char_4
181581 , xet.reference_date_1
181582 , xet.reference_date_2
181583 , xet.reference_date_3
181584 , xet.reference_date_4
181585 , xet.event_created_by
181586 , xet.budgetary_control_flag
181587 , h1.DISTRIBUTION_TYPE source_12
181588 , fvl12.meaning source_12_meaning
181589 , h1.TRANSFER_TO_GL_INDICATOR source_38
181590 , fvl38.meaning source_38_meaning
181591 FROM xla_events_gt xet
181592 , CST_XLA_INV_HEADERS_V h1
181593 , fnd_lookup_values fvl12
181594 , fnd_lookup_values fvl38
181595 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
181596 and xet.event_type_code = C_EVENT_TYPE_CODE
181597 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
181598 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
181599 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
181600 AND fvl12.view_application_id(+) = 700
181601 AND fvl12.language(+) = USERENV('LANG')
181602 AND fvl38.lookup_type(+) = 'YES_NO'
181603 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
181604 AND fvl38.view_application_id(+) = 0
181605 AND fvl38.language(+) = USERENV('LANG')
181606
181607 ORDER BY event_id
181608 ;
181609
181610
181611 --
181612 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
181613 IS
181614 SELECT /*+ leading(xet) cardinality(xet,1) */
181615 -- Event Type Code: UDIR_INTERORG_SHIP_TP
181616 -- Event Class Code: USER_DEFINE
181617 xet.entity_id
181618 ,xet.legal_entity_id
181619 ,xet.entity_code
181620 ,xet.transaction_number
181621 ,xet.event_id
181622 ,xet.event_class_code
181623 ,xet.event_type_code
181624 ,xet.event_number
181625 ,xet.event_date
181626 ,xet.transaction_date
181627 ,xet.reference_num_1
181628 ,xet.reference_num_2
181629 ,xet.reference_num_3
181630 ,xet.reference_num_4
181631 ,xet.reference_char_1
181632 ,xet.reference_char_2
181633 ,xet.reference_char_3
181634 ,xet.reference_char_4
181635 ,xet.reference_date_1
181636 ,xet.reference_date_2
181637 ,xet.reference_date_3
181638 ,xet.reference_date_4
181639 ,xet.event_created_by
181640 ,xet.budgetary_control_flag , l2.LINE_NUMBER
181641 , l2.CODE_COMBINATION_ID source_4
181642 , l2.DISTRIBUTION_IDENTIFIER source_11
181643 , l2.CURRENCY_CODE source_15
181644 , l2.ENTERED_AMOUNT source_18
181645 , l2.CURRENCY_CONVERSION_DATE source_19
181646 , l2.CURRENCY_CONVERSION_RATE source_20
181647 , l2.CURRENCY_CONVERSION_TYPE source_21
181648 , l2.ACCOUNTED_AMOUNT source_22
181649 , l2.ACCOUNTING_LINE_TYPE_CODE source_24
181650 FROM xla_events_gt xet
181651 , CST_XLA_INV_LINES_V l2
181652 WHERE xet.event_id between x_first_event_id and x_last_event_id
181653 and xet.event_date between p_pad_start_date and p_pad_end_date
181654 and xet.event_type_code = C_EVENT_TYPE_CODE
181655 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
181656 ;
181657
181658 --
181659 BEGIN
181660 IF g_log_enabled THEN
181661 l_log_module := C_DEFAULT_MODULE||'.EventType_282';
181662 END IF;
181663 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
181664 trace
181665 (p_msg => 'BEGIN of EventType_282'
181666 ,p_level => C_LEVEL_PROCEDURE
181667 ,p_module => l_log_module);
181668 END IF;
181669
181670 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
181671 trace
181672 (p_msg => 'p_application_id = '||p_application_id||
181673 ' - p_base_ledger_id = '||p_base_ledger_id||
181674 ' - p_target_ledger_id = '||p_target_ledger_id||
181675 ' - p_language = '||p_language||
181676 ' - p_currency_code = '||p_currency_code||
181677 ' - p_sla_ledger_id = '||p_sla_ledger_id
181678 ,p_level => C_LEVEL_STATEMENT
181679 ,p_module => l_log_module);
181680 END IF;
181681 --
181682 -- initialze arrays
181683 --
181684 g_array_event.DELETE;
181685 l_rec_array_event := l_null_rec_array_event;
181686 --
181687 --------------------------------------
181688 -- 4262811 Initialze MPA Line Number
181689 --------------------------------------
181690 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
181691
181692 --
181693
181694 --
181695 OPEN header_cur;
181696 --
181697 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
181698 trace
181699 (p_msg => 'SQL - FETCH header_cur'
181700 ,p_level => C_LEVEL_STATEMENT
181701 ,p_module => l_log_module);
181702 END IF;
181703 --
181704 LOOP
181705 FETCH header_cur BULK COLLECT INTO
181706 l_array_entity_id
181707 , l_array_legal_entity_id
181708 , l_array_entity_code
181709 , l_array_transaction_num
181710 , l_array_event_id
181711 , l_array_class_code
181712 , l_array_event_type
181713 , l_array_event_number
181714 , l_array_event_date
181715 , l_array_transaction_date
181716 , l_array_reference_num_1
181717 , l_array_reference_num_2
181718 , l_array_reference_num_3
181719 , l_array_reference_num_4
181720 , l_array_reference_char_1
181721 , l_array_reference_char_2
181722 , l_array_reference_char_3
181723 , l_array_reference_char_4
181724 , l_array_reference_date_1
181725 , l_array_reference_date_2
181726 , l_array_reference_date_3
181727 , l_array_reference_date_4
181728 , l_array_event_created_by
181729 , l_array_budgetary_control_flag
181730 , l_array_source_12
181731 , l_array_source_12_meaning
181732 , l_array_source_38
181733 , l_array_source_38_meaning
181734 LIMIT l_rows;
181735 --
181736 IF (C_LEVEL_EVENT >= g_log_level) THEN
181737 trace
181738 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
181739 ,p_level => C_LEVEL_EVENT
181740 ,p_module => l_log_module);
181741 END IF;
181742 --
181743 EXIT WHEN l_array_entity_id.COUNT = 0;
181744
181745 -- initialize arrays
181746 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
181747 XLA_AE_LINES_PKG.g_rec_lines := NULL;
181748
181749 --
181750 -- Bug 4458708
181751 --
181752 XLA_AE_LINES_PKG.g_LineNumber := 0;
181753
181754
181755 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
181756 g_last_hdr_idx := l_array_event_id.LAST;
181757 --
181758 -- loop for the headers. Each iteration is for each header extract row
181759 -- fetched in header cursor
181760 --
181761 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
181762
181763 --
181764 -- set event info as cache for other routines to refer event attributes
181765 --
181766 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
181767 (p_application_id => p_application_id
181768 ,p_primary_ledger_id => p_primary_ledger_id
181769 ,p_base_ledger_id => p_base_ledger_id
181770 ,p_target_ledger_id => p_target_ledger_id
181771 ,p_entity_id => l_array_entity_id(hdr_idx)
181772 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
181773 ,p_entity_code => l_array_entity_code(hdr_idx)
181774 ,p_transaction_num => l_array_transaction_num(hdr_idx)
181775 ,p_event_id => l_array_event_id(hdr_idx)
181776 ,p_event_class_code => l_array_class_code(hdr_idx)
181777 ,p_event_type_code => l_array_event_type(hdr_idx)
181778 ,p_event_number => l_array_event_number(hdr_idx)
181779 ,p_event_date => l_array_event_date(hdr_idx)
181780 ,p_transaction_date => l_array_transaction_date(hdr_idx)
181781 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
181782 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
181783 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
181784 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
181785 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
181786 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
181787 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
181788 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
181789 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
181790 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
181791 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
181792 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
181793 ,p_event_created_by => l_array_event_created_by(hdr_idx)
181794 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
181795
181796 --
181797 -- set the status of entry to C_VALID (0)
181798 --
181799 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
181800
181801 --
181802 -- initialize a row for ae header
181803 --
181804 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
181805
181806 l_event_id := l_array_event_id(hdr_idx);
181807
181808 --
181809 -- storing the hdr_idx for event. May be used by line cursor.
181810 --
181811 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
181812
181813 --
181814 -- store sources from header extract. This can be improved to
181815 -- store only those sources from header extract that may be used in lines
181816 --
181817
181818 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
181819 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
181820 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
181821 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
181822
181823 --
181824 -- initilaize the status of ae headers for diffrent balance types
181825 -- the status is initialised to C_NOT_CREATED (2)
181826 --
181827 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
181828 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
181829 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
181830
181831 --
181832 -- call api to validate and store accounting attributes for header
181833 --
181834
181835 ------------------------------------------------------------
181836 -- Accrual Reversal : to get date for Standard Source (NONE)
181837 ------------------------------------------------------------
181838 l_acc_rev_gl_date_source := NULL;
181839
181840 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
181841 l_rec_acct_attrs.array_date_value(1) :=
181842 xla_ae_sources_pkg.GetSystemSourceDate(
181843 p_source_code => 'XLA_REFERENCE_DATE_1'
181844 , p_source_type_code => 'Y'
181845 , p_source_application_id => 602
181846 );
181847 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_TRANSFER_FLAG';
181848 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
181849
181850
181851 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
181852
181853 XLA_AE_HEADER_PKG.SetJeCategoryName;
181854
181855 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
181856 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
181857 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
181858 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
181859 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
181860
181861
181862 -- No header level analytical criteria
181863
181864 --
181865 --accounting attribute enhancement, bug 3612931
181866 --
181867 l_trx_reversal_source := SUBSTR(NULL, 1,30);
181868
181869 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
181870 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
181871
181872 xla_accounting_err_pkg.build_message
181873 (p_appli_s_name => 'XLA'
181874 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
181875 ,p_token_1 => 'ACCT_ATTR_NAME'
181876 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
181877 ,p_token_2 => 'PRODUCT_NAME'
181878 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
181879 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
181880 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
181881 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
181882
181883 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
181884 --
181885 -- following sets the accounting attributes needed to reverse
181886 -- accounting for a distributeion
181887 --
181888 xla_ae_lines_pkg.SetTrxReversalAttrs
181889 (p_event_id => l_event_id
181890 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
181891 ,p_trx_reversal_source => l_trx_reversal_source);
181892
181893 END IF;
181894
181895
181896 ----------------------------------------------------------------
181897 -- 4262811 - update the header statuses to invalid in need be
181898 ----------------------------------------------------------------
181899 --
181900 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
181901
181902
181903 -----------------------------------------------
181904 -- No accrual reversal for the event class/type
181905 -----------------------------------------------
181906 ----------------------------------------------------------------
181907
181908 --
181909 -- this ends the header loop iteration for one bulk fetch
181910 --
181911 END LOOP;
181912
181913 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
181914 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
181915
181916 --
181917 -- insert dummy rows into lines gt table that were created due to
181918 -- transaction reversals
181919 --
181920 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
181921 l_result := XLA_AE_LINES_PKG.InsertLines;
181922 END IF;
181923
181924 --
181925 -- reset the temp_line_num for each set of events fetched from header
181926 -- cursor rather than doing it for each new event in line cursor
181927 -- Bug 3939231
181928 --
181929 xla_ae_lines_pkg.g_temp_line_num := 0;
181930
181931
181932
181933 --
181934 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
181935 --
181936 --
181937 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
181938
181939 trace
181940 (p_msg => 'SQL - FETCH line_cur'
181941 ,p_level => C_LEVEL_STATEMENT
181942 ,p_module => l_log_module);
181943
181944 END IF;
181945 --
181946 --
181947 LOOP
181948 --
181949 FETCH line_cur BULK COLLECT INTO
181950 l_array_entity_id
181951 , l_array_legal_entity_id
181952 , l_array_entity_code
181953 , l_array_transaction_num
181954 , l_array_event_id
181955 , l_array_class_code
181956 , l_array_event_type
181957 , l_array_event_number
181958 , l_array_event_date
181959 , l_array_transaction_date
181960 , l_array_reference_num_1
181961 , l_array_reference_num_2
181962 , l_array_reference_num_3
181963 , l_array_reference_num_4
181964 , l_array_reference_char_1
181965 , l_array_reference_char_2
181966 , l_array_reference_char_3
181967 , l_array_reference_char_4
181968 , l_array_reference_date_1
181969 , l_array_reference_date_2
181970 , l_array_reference_date_3
181971 , l_array_reference_date_4
181972 , l_array_event_created_by
181973 , l_array_budgetary_control_flag
181974 , l_array_extract_line_num
181975 , l_array_source_4
181976 , l_array_source_11
181977 , l_array_source_15
181978 , l_array_source_18
181979 , l_array_source_19
181980 , l_array_source_20
181981 , l_array_source_21
181982 , l_array_source_22
181983 , l_array_source_24
181984 LIMIT l_rows;
181985
181986 --
181987 IF (C_LEVEL_EVENT >= g_log_level) THEN
181988 trace
181989 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
181990 ,p_level => C_LEVEL_EVENT
181991 ,p_module => l_log_module);
181992 END IF;
181993 --
181994 EXIT WHEN l_array_entity_id.count = 0;
181995
181996 XLA_AE_LINES_PKG.g_rec_lines := null;
181997
181998 --
181999 -- Bug 4458708
182000 --
182001 XLA_AE_LINES_PKG.g_LineNumber := 0;
182002 --
182003 --
182004
182005 FOR Idx IN 1..l_array_event_id.count LOOP
182006 --
182007 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
182008 --
182009 l_event_id := l_array_event_id(idx); -- 5648433
182010
182011 --
182012 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
182013 --
182014
182015 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
182016 (g_array_event(l_event_id).array_value_num('header_index'))
182017 ,'N'
182018 ) <> 'Y'
182019 THEN
182020 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
182021 trace
182022 (p_msg => 'Trancaction revesal option is not Y '
182023 ,p_level => C_LEVEL_STATEMENT
182024 ,p_module => l_log_module);
182025 END IF;
182026
182027 --
182028 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
182029 --
182030 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
182031 --
182032 -- set event info as cache for other routines to refer event attributes
182033 --
182034
182035 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
182036 l_previous_event_id := l_event_id;
182037
182038 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
182039 (p_application_id => p_application_id
182040 ,p_primary_ledger_id => p_primary_ledger_id
182041 ,p_base_ledger_id => p_base_ledger_id
182042 ,p_target_ledger_id => p_target_ledger_id
182043 ,p_entity_id => l_array_entity_id(Idx)
182044 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
182045 ,p_entity_code => l_array_entity_code(Idx)
182046 ,p_transaction_num => l_array_transaction_num(Idx)
182047 ,p_event_id => l_array_event_id(Idx)
182048 ,p_event_class_code => l_array_class_code(Idx)
182049 ,p_event_type_code => l_array_event_type(Idx)
182050 ,p_event_number => l_array_event_number(Idx)
182051 ,p_event_date => l_array_event_date(Idx)
182052 ,p_transaction_date => l_array_transaction_date(Idx)
182053 ,p_reference_num_1 => l_array_reference_num_1(Idx)
182054 ,p_reference_num_2 => l_array_reference_num_2(Idx)
182055 ,p_reference_num_3 => l_array_reference_num_3(Idx)
182056 ,p_reference_num_4 => l_array_reference_num_4(Idx)
182057 ,p_reference_char_1 => l_array_reference_char_1(Idx)
182058 ,p_reference_char_2 => l_array_reference_char_2(Idx)
182059 ,p_reference_char_3 => l_array_reference_char_3(Idx)
182060 ,p_reference_char_4 => l_array_reference_char_4(Idx)
182061 ,p_reference_date_1 => l_array_reference_date_1(Idx)
182062 ,p_reference_date_2 => l_array_reference_date_2(Idx)
182063 ,p_reference_date_3 => l_array_reference_date_3(Idx)
182064 ,p_reference_date_4 => l_array_reference_date_4(Idx)
182065 ,p_event_created_by => l_array_event_created_by(Idx)
182066 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
182067 --
182068 END IF;
182069
182070
182071
182072 --
182073 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
182074
182075 l_acct_reversal_source := SUBSTR(NULL, 1,30);
182076
182077 IF l_continue_with_lines THEN
182078 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
182079 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
182080
182081 xla_accounting_err_pkg.build_message
182082 (p_appli_s_name => 'XLA'
182083 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
182084 ,p_token_1 => 'LINE_NUMBER'
182085 ,p_value_1 => l_array_extract_line_num(Idx)
182086 ,p_token_2 => 'PRODUCT_NAME'
182087 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
182088 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
182089 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
182090 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
182091
182092 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
182093 --
182094 -- following sets the accounting attributes needed to reverse
182095 -- accounting for a distributeion
182096 --
182097
182098 --
182099 -- 5217187
182100 --
182101 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
182102 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
182103 g_array_event(l_event_id).array_value_num('header_index'));
182104 --
182105 --
182106
182107 -- No reversal code generated
182108
182109 xla_ae_lines_pkg.SetAcctReversalAttrs
182110 (p_event_id => l_event_id
182111 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
182112 ,p_calculate_acctd_flag => l_calculate_acctd_flag
182113 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
182114 END IF;
182115
182116 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
182117 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
182118
182119 --
182120 AcctLineType_67 (
182121 p_application_id => p_application_id
182122 ,p_event_id => l_event_id
182123 ,p_calculate_acctd_flag => l_calculate_acctd_flag
182124 ,p_calculate_g_l_flag => l_calculate_g_l_flag
182125 ,p_actual_flag => l_actual_flag
182126 ,p_balance_type_code => l_balance_type_code
182127 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
182128
182129 , p_source_4 => l_array_source_4(Idx)
182130 , p_source_11 => l_array_source_11(Idx)
182131 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
182132 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
182133 , p_source_15 => l_array_source_15(Idx)
182134 , p_source_18 => l_array_source_18(Idx)
182135 , p_source_19 => l_array_source_19(Idx)
182136 , p_source_20 => l_array_source_20(Idx)
182137 , p_source_21 => l_array_source_21(Idx)
182138 , p_source_22 => l_array_source_22(Idx)
182139 , p_source_24 => l_array_source_24(Idx)
182140 );
182141 If(l_balance_type_code = 'A') THEN
182142 l_actual_gain_loss_ref := l_gain_or_loss_ref;
182143 END IF;
182144
182145 --
182146
182147
182148 --
182149 AcctLineType_71 (
182150 p_application_id => p_application_id
182151 ,p_event_id => l_event_id
182152 ,p_calculate_acctd_flag => l_calculate_acctd_flag
182153 ,p_calculate_g_l_flag => l_calculate_g_l_flag
182154 ,p_actual_flag => l_actual_flag
182155 ,p_balance_type_code => l_balance_type_code
182156 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
182157
182158 , p_source_4 => l_array_source_4(Idx)
182159 , p_source_11 => l_array_source_11(Idx)
182160 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
182161 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
182162 , p_source_15 => l_array_source_15(Idx)
182163 , p_source_18 => l_array_source_18(Idx)
182164 , p_source_19 => l_array_source_19(Idx)
182165 , p_source_20 => l_array_source_20(Idx)
182166 , p_source_21 => l_array_source_21(Idx)
182167 , p_source_22 => l_array_source_22(Idx)
182168 , p_source_24 => l_array_source_24(Idx)
182169 );
182170 If(l_balance_type_code = 'A') THEN
182171 l_actual_gain_loss_ref := l_gain_or_loss_ref;
182172 END IF;
182173
182174 --
182175
182176
182177 --
182178 AcctLineType_83 (
182179 p_application_id => p_application_id
182180 ,p_event_id => l_event_id
182181 ,p_calculate_acctd_flag => l_calculate_acctd_flag
182182 ,p_calculate_g_l_flag => l_calculate_g_l_flag
182183 ,p_actual_flag => l_actual_flag
182184 ,p_balance_type_code => l_balance_type_code
182185 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
182186
182187 , p_source_4 => l_array_source_4(Idx)
182188 , p_source_11 => l_array_source_11(Idx)
182189 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
182190 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
182191 , p_source_15 => l_array_source_15(Idx)
182192 , p_source_18 => l_array_source_18(Idx)
182193 , p_source_19 => l_array_source_19(Idx)
182194 , p_source_20 => l_array_source_20(Idx)
182195 , p_source_21 => l_array_source_21(Idx)
182196 , p_source_22 => l_array_source_22(Idx)
182197 , p_source_24 => l_array_source_24(Idx)
182198 );
182199 If(l_balance_type_code = 'A') THEN
182200 l_actual_gain_loss_ref := l_gain_or_loss_ref;
182201 END IF;
182202
182203 --
182204
182205
182206 --
182207 AcctLineType_95 (
182208 p_application_id => p_application_id
182209 ,p_event_id => l_event_id
182210 ,p_calculate_acctd_flag => l_calculate_acctd_flag
182211 ,p_calculate_g_l_flag => l_calculate_g_l_flag
182212 ,p_actual_flag => l_actual_flag
182213 ,p_balance_type_code => l_balance_type_code
182214 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
182215
182216 , p_source_4 => l_array_source_4(Idx)
182217 , p_source_11 => l_array_source_11(Idx)
182218 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
182219 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
182220 , p_source_15 => l_array_source_15(Idx)
182221 , p_source_18 => l_array_source_18(Idx)
182222 , p_source_19 => l_array_source_19(Idx)
182223 , p_source_20 => l_array_source_20(Idx)
182224 , p_source_21 => l_array_source_21(Idx)
182225 , p_source_22 => l_array_source_22(Idx)
182226 , p_source_24 => l_array_source_24(Idx)
182227 );
182228 If(l_balance_type_code = 'A') THEN
182229 l_actual_gain_loss_ref := l_gain_or_loss_ref;
182230 END IF;
182231
182232 --
182233
182234
182235 --
182236 AcctLineType_111 (
182237 p_application_id => p_application_id
182238 ,p_event_id => l_event_id
182239 ,p_calculate_acctd_flag => l_calculate_acctd_flag
182240 ,p_calculate_g_l_flag => l_calculate_g_l_flag
182241 ,p_actual_flag => l_actual_flag
182242 ,p_balance_type_code => l_balance_type_code
182243 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
182244
182245 , p_source_4 => l_array_source_4(Idx)
182246 , p_source_11 => l_array_source_11(Idx)
182247 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
182248 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
182249 , p_source_15 => l_array_source_15(Idx)
182250 , p_source_18 => l_array_source_18(Idx)
182251 , p_source_19 => l_array_source_19(Idx)
182252 , p_source_20 => l_array_source_20(Idx)
182253 , p_source_21 => l_array_source_21(Idx)
182254 , p_source_22 => l_array_source_22(Idx)
182255 , p_source_24 => l_array_source_24(Idx)
182256 );
182257 If(l_balance_type_code = 'A') THEN
182258 l_actual_gain_loss_ref := l_gain_or_loss_ref;
182259 END IF;
182260
182261 --
182262
182263
182264 --
182265 AcctLineType_149 (
182266 p_application_id => p_application_id
182267 ,p_event_id => l_event_id
182268 ,p_calculate_acctd_flag => l_calculate_acctd_flag
182269 ,p_calculate_g_l_flag => l_calculate_g_l_flag
182270 ,p_actual_flag => l_actual_flag
182271 ,p_balance_type_code => l_balance_type_code
182272 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
182273
182274 , p_source_4 => l_array_source_4(Idx)
182275 , p_source_11 => l_array_source_11(Idx)
182276 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
182277 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
182278 , p_source_15 => l_array_source_15(Idx)
182279 , p_source_18 => l_array_source_18(Idx)
182280 , p_source_19 => l_array_source_19(Idx)
182281 , p_source_20 => l_array_source_20(Idx)
182282 , p_source_21 => l_array_source_21(Idx)
182283 , p_source_22 => l_array_source_22(Idx)
182284 , p_source_24 => l_array_source_24(Idx)
182285 );
182286 If(l_balance_type_code = 'A') THEN
182287 l_actual_gain_loss_ref := l_gain_or_loss_ref;
182288 END IF;
182289
182290 --
182291
182292
182293 --
182294 AcctLineType_172 (
182295 p_application_id => p_application_id
182296 ,p_event_id => l_event_id
182297 ,p_calculate_acctd_flag => l_calculate_acctd_flag
182298 ,p_calculate_g_l_flag => l_calculate_g_l_flag
182299 ,p_actual_flag => l_actual_flag
182300 ,p_balance_type_code => l_balance_type_code
182301 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
182302
182303 , p_source_4 => l_array_source_4(Idx)
182304 , p_source_11 => l_array_source_11(Idx)
182305 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
182306 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
182307 , p_source_15 => l_array_source_15(Idx)
182308 , p_source_18 => l_array_source_18(Idx)
182309 , p_source_19 => l_array_source_19(Idx)
182310 , p_source_20 => l_array_source_20(Idx)
182311 , p_source_21 => l_array_source_21(Idx)
182312 , p_source_22 => l_array_source_22(Idx)
182313 , p_source_24 => l_array_source_24(Idx)
182314 );
182315 If(l_balance_type_code = 'A') THEN
182316 l_actual_gain_loss_ref := l_gain_or_loss_ref;
182317 END IF;
182318
182319 --
182320
182321
182322 --
182323 AcctLineType_181 (
182324 p_application_id => p_application_id
182325 ,p_event_id => l_event_id
182326 ,p_calculate_acctd_flag => l_calculate_acctd_flag
182327 ,p_calculate_g_l_flag => l_calculate_g_l_flag
182328 ,p_actual_flag => l_actual_flag
182329 ,p_balance_type_code => l_balance_type_code
182330 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
182331
182332 , p_source_4 => l_array_source_4(Idx)
182333 , p_source_11 => l_array_source_11(Idx)
182334 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
182335 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
182336 , p_source_15 => l_array_source_15(Idx)
182337 , p_source_18 => l_array_source_18(Idx)
182338 , p_source_19 => l_array_source_19(Idx)
182339 , p_source_20 => l_array_source_20(Idx)
182340 , p_source_21 => l_array_source_21(Idx)
182341 , p_source_22 => l_array_source_22(Idx)
182342 , p_source_24 => l_array_source_24(Idx)
182343 );
182344 If(l_balance_type_code = 'A') THEN
182345 l_actual_gain_loss_ref := l_gain_or_loss_ref;
182346 END IF;
182347
182348 --
182349
182350
182351 --
182352 AcctLineType_226 (
182353 p_application_id => p_application_id
182354 ,p_event_id => l_event_id
182355 ,p_calculate_acctd_flag => l_calculate_acctd_flag
182356 ,p_calculate_g_l_flag => l_calculate_g_l_flag
182357 ,p_actual_flag => l_actual_flag
182358 ,p_balance_type_code => l_balance_type_code
182359 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
182360
182361 , p_source_4 => l_array_source_4(Idx)
182362 , p_source_11 => l_array_source_11(Idx)
182363 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
182364 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
182365 , p_source_15 => l_array_source_15(Idx)
182366 , p_source_18 => l_array_source_18(Idx)
182367 , p_source_19 => l_array_source_19(Idx)
182368 , p_source_20 => l_array_source_20(Idx)
182369 , p_source_21 => l_array_source_21(Idx)
182370 , p_source_22 => l_array_source_22(Idx)
182371 , p_source_24 => l_array_source_24(Idx)
182372 );
182373 If(l_balance_type_code = 'A') THEN
182374 l_actual_gain_loss_ref := l_gain_or_loss_ref;
182375 END IF;
182376
182377 --
182378
182379 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
182380 -- or secondary ledger that has different currency with primary
182381 -- or alc that is calculated by sla
182382 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
182383 (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'))
182384
182385 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
182386 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
182387 AND (l_actual_flag = 'A')) THEN
182388 XLA_AE_LINES_PKG.CreateGainOrLossLines(
182389 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
182390 ,p_application_id => p_application_id
182391 ,p_amb_context_code => 'DEFAULT'
182392 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
182393 ,p_event_class_code => C_EVENT_CLASS_CODE
182394 ,p_event_type_code => C_EVENT_TYPE_CODE
182395
182396 ,p_gain_ccid => -1
182397 ,p_loss_ccid => -1
182398
182399 ,p_actual_flag => l_actual_flag
182400 ,p_enc_flag => null
182401 ,p_actual_g_l_ref => l_actual_gain_loss_ref
182402 ,p_enc_g_l_ref => null
182403 );
182404 END IF;
182405 END IF;
182406 END IF;
182407
182408 ELSE
182409 --
182410 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
182411 --
182412 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
182413 trace
182414 (p_msg => 'Trancaction revesal option is Y'
182415 ,p_level => C_LEVEL_STATEMENT
182416 ,p_module => l_log_module);
182417 END IF;
182418 END IF;
182419
182420 END LOOP;
182421 l_result := XLA_AE_LINES_PKG.InsertLines ;
182422 end loop;
182423 close line_cur;
182424
182425
182426 --
182427 -- insert headers into xla_ae_headers_gt table
182428 --
182429 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
182430
182431 -- insert into errors table here.
182432
182433 END LOOP;
182434
182435 --
182436 -- 4865292
182437 --
182438 -- Compare g_hdr_extract_count with event count in
182439 -- CreateHeadersAndLines.
182440 --
182441 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
182442
182443 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
182444 trace (p_msg => '# rows extracted from header extract objects '
182445 || ' (running total): '
182446 || g_hdr_extract_count
182447 ,p_level => C_LEVEL_STATEMENT
182448 ,p_module => l_log_module);
182449 END IF;
182450
182451 CLOSE header_cur;
182452 --
182453
182454 --
182455 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
182456 trace
182457 (p_msg => 'END of EventType_282'
182458 ,p_level => C_LEVEL_PROCEDURE
182459 ,p_module => l_log_module);
182460 END IF;
182461 --
182462 RETURN l_result;
182463 EXCEPTION
182464 WHEN xla_exceptions_pkg.application_exception THEN
182465
182466 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
182467
182468
182469 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
182470
182471 RAISE;
182472
182473 WHEN NO_DATA_FOUND THEN
182474
182475 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
182476 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
182477
182478 FOR header_record IN header_cur
182479 LOOP
182480 l_array_header_events(header_record.event_id) := header_record.event_id;
182481 END LOOP;
182482
182483 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
182484 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
182485
182486 fnd_file.put_line(fnd_file.LOG, ' ');
182487 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
182488 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
182489 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
182490
182491 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
182492 LOOP
182493 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
182494 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
182495 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
182496 END IF;
182497 END LOOP;
182498
182499 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
182500 fnd_file.put_line(fnd_file.LOG, ' ');
182501
182502
182503 xla_exceptions_pkg.raise_message
182504 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventType_282');
182505
182506
182507 WHEN OTHERS THEN
182508 xla_exceptions_pkg.raise_message
182509 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventType_282');
182510 END EventType_282;
182511 --
182512
182513 ---------------------------------------
182514 --
182515 -- PRIVATE PROCEDURE
182516 -- insert_sources_283
182517 --
182518 ----------------------------------------
182519 --
182520 PROCEDURE insert_sources_283(
182521 p_target_ledger_id IN NUMBER
182522 , p_language IN VARCHAR2
182523 , p_sla_ledger_id IN NUMBER
182524 , p_pad_start_date IN DATE
182525 , p_pad_end_date IN DATE
182526 )
182527 IS
182528
182529 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'UFOB_RCPT_SENDER_SHIP';
182530 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'USER_DEFINE';
182531 p_apps_owner VARCHAR2(30);
182532 l_log_module VARCHAR2(240);
182533 BEGIN
182534 IF g_log_enabled THEN
182535 l_log_module := C_DEFAULT_MODULE||'.insert_sources_283';
182536 END IF;
182537 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
182538
182539 trace
182540 (p_msg => 'BEGIN of insert_sources_283'
182541 ,p_level => C_LEVEL_PROCEDURE
182542 ,p_module => l_log_module);
182543
182544 END IF;
182545
182546 -- select APPS owner
182547 SELECT oracle_username
182548 INTO p_apps_owner
182549 FROM fnd_oracle_userid
182550 WHERE read_only_flag = 'U'
182551 ;
182552
182553 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
182554 trace
182555 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
182556 ' - p_language = '||p_language||
182557 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
182558 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
182559 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
182560 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
182561 ,p_level => C_LEVEL_STATEMENT
182562 ,p_module => l_log_module);
182563 END IF;
182564
182565
182566 --
182567 INSERT INTO xla_diag_sources --hdr1
182568 (
182569 event_id
182570 , ledger_id
182571 , sla_ledger_id
182572 , description_language
182573 , object_name
182574 , object_type_code
182575 , line_number
182576 , source_application_id
182577 , source_type_code
182578 , source_code
182579 , source_value
182580 , source_meaning
182581 , created_by
182582 , creation_date
182583 , last_update_date
182584 , last_updated_by
182585 , last_update_login
182586 , program_update_date
182587 , program_application_id
182588 , program_id
182589 , request_id
182590 )
182591 SELECT
182592 event_id
182593 , p_target_ledger_id
182594 , p_sla_ledger_id
182595 , p_language
182596 , object_name
182597 , object_type_code
182598 , line_number
182599 , source_application_id
182600 , source_type_code
182601 , source_code
182602 , SUBSTR(source_value ,1,1996)
182603 , SUBSTR(source_meaning,1,200)
182604 , xla_environment_pkg.g_Usr_Id
182605 , TRUNC(SYSDATE)
182606 , TRUNC(SYSDATE)
182607 , xla_environment_pkg.g_Usr_Id
182608 , xla_environment_pkg.g_Login_Id
182609 , TRUNC(SYSDATE)
182610 , xla_environment_pkg.g_Prog_Appl_Id
182611 , xla_environment_pkg.g_Prog_Id
182612 , xla_environment_pkg.g_Req_Id
182613 FROM (
182614 SELECT xet.event_id event_id
182615 , 0 line_number
182616 , CASE r
182617 WHEN 1 THEN 'CST_XLA_INV_HEADERS_V'
182618 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V'
182619
182620 ELSE null
182621 END object_name
182622 , CASE r
182623 WHEN 1 THEN 'HEADER'
182624 WHEN 2 THEN 'HEADER'
182625
182626 ELSE null
182627 END object_type_code
182628 , CASE r
182629 WHEN 1 THEN '707'
182630 WHEN 2 THEN '707'
182631
182632 ELSE null
182633 END source_application_id
182634 , 'S' source_type_code
182635 , CASE r
182636 WHEN 1 THEN 'DISTRIBUTION_TYPE'
182637 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR'
182638
182639 ELSE null
182640 END source_code
182641 , CASE r
182642 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
182643 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
182644
182645 ELSE null
182646 END source_value
182647 , CASE r
182648 WHEN 1 THEN fvl12.meaning
182649 WHEN 2 THEN fvl38.meaning
182650
182651 ELSE null
182652 END source_meaning
182653 FROM xla_events_gt xet
182654 , CST_XLA_INV_HEADERS_V h1
182655 , fnd_lookup_values fvl12
182656 , fnd_lookup_values fvl38
182657 ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
182658 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
182659 AND xet.event_type_code = C_EVENT_TYPE_CODE
182660 AND h1.event_id = xet.event_id
182661 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
182662 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
182663 AND fvl12.view_application_id(+) = 700
182664 AND fvl12.language(+) = USERENV('LANG')
182665 AND fvl38.lookup_type(+) = 'YES_NO'
182666 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
182667 AND fvl38.view_application_id(+) = 0
182668 AND fvl38.language(+) = USERENV('LANG')
182669
182670 )
182671 ;
182672 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
182673
182674 trace
182675 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
182676 ,p_level => C_LEVEL_STATEMENT
182677 ,p_module => l_log_module);
182678
182679 END IF;
182680 --
182681
182682
182683
182684 --
182685 INSERT INTO xla_diag_sources --line1
182686 (
182687 event_id
182688 , ledger_id
182689 , sla_ledger_id
182690 , description_language
182691 , object_name
182692 , object_type_code
182693 , line_number
182694 , source_application_id
182695 , source_type_code
182696 , source_code
182697 , source_value
182698 , source_meaning
182699 , created_by
182700 , creation_date
182701 , last_update_date
182702 , last_updated_by
182703 , last_update_login
182704 , program_update_date
182705 , program_application_id
182706 , program_id
182707 , request_id
182708 )
182709 SELECT event_id
182710 , p_target_ledger_id
182711 , p_sla_ledger_id
182712 , p_language
182713 , object_name
182714 , object_type_code
182715 , line_number
182716 , source_application_id
182717 , source_type_code
182718 , source_code
182719 , SUBSTR(source_value,1,1996)
182720 , SUBSTR(source_meaning,1,200)
182721 , xla_environment_pkg.g_Usr_Id
182722 , TRUNC(SYSDATE)
182723 , TRUNC(SYSDATE)
182724 , xla_environment_pkg.g_Usr_Id
182725 , xla_environment_pkg.g_Login_Id
182726 , TRUNC(SYSDATE)
182727 , xla_environment_pkg.g_Prog_Appl_Id
182728 , xla_environment_pkg.g_Prog_Id
182729 , xla_environment_pkg.g_Req_Id
182730 FROM (
182731 SELECT xet.event_id event_id
182732 , l2.line_number line_number
182733 , CASE r
182734 WHEN 1 THEN 'CST_XLA_INV_LINES_V'
182735 WHEN 2 THEN 'CST_XLA_INV_LINES_V'
182736 WHEN 3 THEN 'CST_XLA_INV_LINES_V'
182737 WHEN 4 THEN 'CST_XLA_INV_LINES_V'
182738 WHEN 5 THEN 'CST_XLA_INV_LINES_V'
182739 WHEN 6 THEN 'CST_XLA_INV_LINES_V'
182740 WHEN 7 THEN 'CST_XLA_INV_LINES_V'
182741 WHEN 8 THEN 'CST_XLA_INV_LINES_V'
182742 WHEN 9 THEN 'CST_XLA_INV_LINES_V'
182743
182744 ELSE null
182745 END object_name
182746 , CASE r
182747 WHEN 1 THEN 'LINE'
182748 WHEN 2 THEN 'LINE'
182749 WHEN 3 THEN 'LINE'
182750 WHEN 4 THEN 'LINE'
182751 WHEN 5 THEN 'LINE'
182752 WHEN 6 THEN 'LINE'
182753 WHEN 7 THEN 'LINE'
182754 WHEN 8 THEN 'LINE'
182755 WHEN 9 THEN 'LINE'
182756
182757 ELSE null
182758 END object_type_code
182759 , CASE r
182760 WHEN 1 THEN '707'
182761 WHEN 2 THEN '707'
182762 WHEN 3 THEN '707'
182763 WHEN 4 THEN '707'
182764 WHEN 5 THEN '707'
182765 WHEN 6 THEN '707'
182766 WHEN 7 THEN '707'
182767 WHEN 8 THEN '707'
182768 WHEN 9 THEN '707'
182769
182770 ELSE null
182771 END source_application_id
182772 , 'S' source_type_code
182773 , CASE r
182774 WHEN 1 THEN 'CODE_COMBINATION_ID'
182775 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER'
182776 WHEN 3 THEN 'CURRENCY_CODE'
182777 WHEN 4 THEN 'ENTERED_AMOUNT'
182778 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE'
182779 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE'
182780 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE'
182781 WHEN 8 THEN 'ACCOUNTED_AMOUNT'
182782 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE'
182783
182784 ELSE null
182785 END source_code
182786 , CASE r
182787 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
182788 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
182789 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
182790 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
182791 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
182792 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
182793 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
182794 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
182795 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
182796
182797 ELSE null
182798 END source_value
182799 , null source_meaning
182800 FROM xla_events_gt xet
182801 , CST_XLA_INV_LINES_V l2
182802 ,(select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
182803 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
182804 AND xet.event_type_code = C_EVENT_TYPE_CODE
182805 AND l2.event_id = xet.event_id
182806
182807 )
182808 ;
182809 --
182810 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
182811
182812 trace
182813 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
182814 ,p_level => C_LEVEL_STATEMENT
182815 ,p_module => l_log_module);
182816
182817 END IF;
182818
182819
182820 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
182821 trace
182822 (p_msg => 'END of insert_sources_283'
182823 ,p_level => C_LEVEL_PROCEDURE
182824 ,p_module => l_log_module);
182825 END IF;
182826 EXCEPTION
182827 WHEN xla_exceptions_pkg.application_exception THEN
182828 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
182829 trace
182830 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
182831 ,p_level => C_LEVEL_EXCEPTION
182832 ,p_module => l_log_module);
182833 END IF;
182834 RAISE;
182835 WHEN OTHERS THEN
182836 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
182837 trace
182838 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
182839 ,p_level => C_LEVEL_EXCEPTION
182840 ,p_module => l_log_module);
182841 END IF;
182842 xla_exceptions_pkg.raise_message
182843 (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_283');
182844 END insert_sources_283;
182845 --
182846
182847 ---------------------------------------
182848 --
182849 -- PRIVATE FUNCTION
182850 -- EventType_283
182851 --
182852 ----------------------------------------
182853 --
182854 FUNCTION EventType_283
182855 (p_application_id IN NUMBER
182856 ,p_base_ledger_id IN NUMBER
182857 ,p_target_ledger_id IN NUMBER
182858 ,p_language IN VARCHAR2
182859 ,p_currency_code IN VARCHAR2
182860 ,p_sla_ledger_id IN NUMBER
182861 ,p_pad_start_date IN DATE
182862 ,p_pad_end_date IN DATE
182863 ,p_primary_ledger_id IN NUMBER)
182864 RETURN BOOLEAN IS
182865 --
182866 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'UFOB_RCPT_SENDER_SHIP';
182867 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'USER_DEFINE';
182868
182869 l_calculate_acctd_flag VARCHAR2(1) :='Y';
182870 l_calculate_g_l_flag VARCHAR2(1) :='Y';
182871 --
182872 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
182873 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
182874 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
182875 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
182876 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
182877 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
182878 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
182879 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
182880 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
182881 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
182882 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
182883 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
182884 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
182885 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
182886 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
182887 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
182888 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
182889 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
182890 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
182891 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
182892 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
182893 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
182894 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
182895 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
182896 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
182897 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
182898
182899 l_event_id NUMBER;
182900 l_previous_event_id NUMBER;
182901 l_first_event_id NUMBER;
182902 l_last_event_id NUMBER;
182903
182904 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
182905 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
182906 --
182907 --
182908 l_result BOOLEAN := TRUE;
182909 l_rows NUMBER := 1000;
182910 l_event_type_name VARCHAR2(80) := 'User-defined Sender Intransit Shipment - FOB Receipt';
182911 l_event_class_name VARCHAR2(80) := 'User Defined Inventory Transaction Class';
182912 l_description VARCHAR2(4000);
182913 l_transaction_reversal NUMBER;
182914 l_ae_header_id NUMBER;
182915 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
182916 l_log_module VARCHAR2(240);
182917 --
182918 l_acct_reversal_source VARCHAR2(30);
182919 l_trx_reversal_source VARCHAR2(30);
182920
182921 l_continue_with_lines BOOLEAN := TRUE;
182922 --
182923 l_acc_rev_gl_date_source DATE; -- 4262811
182924 --
182925 type t_array_event_id is table of number index by binary_integer;
182926
182927 l_rec_array_event t_rec_array_event;
182928 l_null_rec_array_event t_rec_array_event;
182929 l_array_ae_header_id xla_number_array_type;
182930 l_actual_flag VARCHAR2(1) := NULL;
182931 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
182932 l_balance_type_code VARCHAR2(1) :=NULL;
182933 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
182934
182935 --
182936 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
182937 --
182938
182939 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
182940 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
182941
182942 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
182943 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
182944 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
182945 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
182946 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
182947 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
182948 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
182949 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
182950 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
182951
182952 l_array_source_12 t_array_source_12;
182953 l_array_source_12_meaning t_array_lookup_meaning;
182954 l_array_source_38 t_array_source_38;
182955 l_array_source_38_meaning t_array_lookup_meaning;
182956
182957 l_array_source_4 t_array_source_4;
182958 l_array_source_11 t_array_source_11;
182959 l_array_source_15 t_array_source_15;
182960 l_array_source_18 t_array_source_18;
182961 l_array_source_19 t_array_source_19;
182962 l_array_source_20 t_array_source_20;
182963 l_array_source_21 t_array_source_21;
182964 l_array_source_22 t_array_source_22;
182965 l_array_source_24 t_array_source_24;
182966
182967 --
182968 CURSOR header_cur
182969 IS
182970 SELECT /*+ leading(xet) cardinality(xet,1) */
182971 -- Event Type Code: UFOB_RCPT_SENDER_SHIP
182972 -- Event Class Code: USER_DEFINE
182973 xet.entity_id
182974 , xet.legal_entity_id
182975 , xet.entity_code
182976 , xet.transaction_number
182977 , xet.event_id
182978 , xet.event_class_code
182979 , xet.event_type_code
182980 , xet.event_number
182981 , xet.event_date
182982 , xet.transaction_date
182983 , xet.reference_num_1
182984 , xet.reference_num_2
182985 , xet.reference_num_3
182986 , xet.reference_num_4
182987 , xet.reference_char_1
182988 , xet.reference_char_2
182989 , xet.reference_char_3
182990 , xet.reference_char_4
182991 , xet.reference_date_1
182992 , xet.reference_date_2
182993 , xet.reference_date_3
182994 , xet.reference_date_4
182995 , xet.event_created_by
182996 , xet.budgetary_control_flag
182997 , h1.DISTRIBUTION_TYPE source_12
182998 , fvl12.meaning source_12_meaning
182999 , h1.TRANSFER_TO_GL_INDICATOR source_38
183000 , fvl38.meaning source_38_meaning
183001 FROM xla_events_gt xet
183002 , CST_XLA_INV_HEADERS_V h1
183003 , fnd_lookup_values fvl12
183004 , fnd_lookup_values fvl38
183005 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
183006 and xet.event_type_code = C_EVENT_TYPE_CODE
183007 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
183008 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
183009 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
183010 AND fvl12.view_application_id(+) = 700
183011 AND fvl12.language(+) = USERENV('LANG')
183012 AND fvl38.lookup_type(+) = 'YES_NO'
183013 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
183014 AND fvl38.view_application_id(+) = 0
183015 AND fvl38.language(+) = USERENV('LANG')
183016
183017 ORDER BY event_id
183018 ;
183019
183020
183021 --
183022 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
183023 IS
183024 SELECT /*+ leading(xet) cardinality(xet,1) */
183025 -- Event Type Code: UFOB_RCPT_SENDER_SHIP
183026 -- Event Class Code: USER_DEFINE
183027 xet.entity_id
183028 ,xet.legal_entity_id
183029 ,xet.entity_code
183030 ,xet.transaction_number
183031 ,xet.event_id
183032 ,xet.event_class_code
183033 ,xet.event_type_code
183034 ,xet.event_number
183035 ,xet.event_date
183036 ,xet.transaction_date
183037 ,xet.reference_num_1
183038 ,xet.reference_num_2
183039 ,xet.reference_num_3
183040 ,xet.reference_num_4
183041 ,xet.reference_char_1
183042 ,xet.reference_char_2
183043 ,xet.reference_char_3
183044 ,xet.reference_char_4
183045 ,xet.reference_date_1
183046 ,xet.reference_date_2
183047 ,xet.reference_date_3
183048 ,xet.reference_date_4
183049 ,xet.event_created_by
183050 ,xet.budgetary_control_flag , l2.LINE_NUMBER
183051 , l2.CODE_COMBINATION_ID source_4
183052 , l2.DISTRIBUTION_IDENTIFIER source_11
183053 , l2.CURRENCY_CODE source_15
183054 , l2.ENTERED_AMOUNT source_18
183055 , l2.CURRENCY_CONVERSION_DATE source_19
183056 , l2.CURRENCY_CONVERSION_RATE source_20
183057 , l2.CURRENCY_CONVERSION_TYPE source_21
183058 , l2.ACCOUNTED_AMOUNT source_22
183059 , l2.ACCOUNTING_LINE_TYPE_CODE source_24
183060 FROM xla_events_gt xet
183061 , CST_XLA_INV_LINES_V l2
183062 WHERE xet.event_id between x_first_event_id and x_last_event_id
183063 and xet.event_date between p_pad_start_date and p_pad_end_date
183064 and xet.event_type_code = C_EVENT_TYPE_CODE
183065 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
183066 ;
183067
183068 --
183069 BEGIN
183070 IF g_log_enabled THEN
183071 l_log_module := C_DEFAULT_MODULE||'.EventType_283';
183072 END IF;
183073 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
183074 trace
183075 (p_msg => 'BEGIN of EventType_283'
183076 ,p_level => C_LEVEL_PROCEDURE
183077 ,p_module => l_log_module);
183078 END IF;
183079
183080 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
183081 trace
183082 (p_msg => 'p_application_id = '||p_application_id||
183083 ' - p_base_ledger_id = '||p_base_ledger_id||
183084 ' - p_target_ledger_id = '||p_target_ledger_id||
183085 ' - p_language = '||p_language||
183086 ' - p_currency_code = '||p_currency_code||
183087 ' - p_sla_ledger_id = '||p_sla_ledger_id
183088 ,p_level => C_LEVEL_STATEMENT
183089 ,p_module => l_log_module);
183090 END IF;
183091 --
183092 -- initialze arrays
183093 --
183094 g_array_event.DELETE;
183095 l_rec_array_event := l_null_rec_array_event;
183096 --
183097 --------------------------------------
183098 -- 4262811 Initialze MPA Line Number
183099 --------------------------------------
183100 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
183101
183102 --
183103
183104 --
183105 OPEN header_cur;
183106 --
183107 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
183108 trace
183109 (p_msg => 'SQL - FETCH header_cur'
183110 ,p_level => C_LEVEL_STATEMENT
183111 ,p_module => l_log_module);
183112 END IF;
183113 --
183114 LOOP
183115 FETCH header_cur BULK COLLECT INTO
183116 l_array_entity_id
183117 , l_array_legal_entity_id
183118 , l_array_entity_code
183119 , l_array_transaction_num
183120 , l_array_event_id
183121 , l_array_class_code
183122 , l_array_event_type
183123 , l_array_event_number
183124 , l_array_event_date
183125 , l_array_transaction_date
183126 , l_array_reference_num_1
183127 , l_array_reference_num_2
183128 , l_array_reference_num_3
183129 , l_array_reference_num_4
183130 , l_array_reference_char_1
183131 , l_array_reference_char_2
183132 , l_array_reference_char_3
183133 , l_array_reference_char_4
183134 , l_array_reference_date_1
183135 , l_array_reference_date_2
183136 , l_array_reference_date_3
183137 , l_array_reference_date_4
183138 , l_array_event_created_by
183139 , l_array_budgetary_control_flag
183140 , l_array_source_12
183141 , l_array_source_12_meaning
183142 , l_array_source_38
183143 , l_array_source_38_meaning
183144 LIMIT l_rows;
183145 --
183146 IF (C_LEVEL_EVENT >= g_log_level) THEN
183147 trace
183148 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
183149 ,p_level => C_LEVEL_EVENT
183150 ,p_module => l_log_module);
183151 END IF;
183152 --
183153 EXIT WHEN l_array_entity_id.COUNT = 0;
183154
183155 -- initialize arrays
183156 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
183157 XLA_AE_LINES_PKG.g_rec_lines := NULL;
183158
183159 --
183160 -- Bug 4458708
183161 --
183162 XLA_AE_LINES_PKG.g_LineNumber := 0;
183163
183164
183165 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
183166 g_last_hdr_idx := l_array_event_id.LAST;
183167 --
183168 -- loop for the headers. Each iteration is for each header extract row
183169 -- fetched in header cursor
183170 --
183171 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
183172
183173 --
183174 -- set event info as cache for other routines to refer event attributes
183175 --
183176 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
183177 (p_application_id => p_application_id
183178 ,p_primary_ledger_id => p_primary_ledger_id
183179 ,p_base_ledger_id => p_base_ledger_id
183180 ,p_target_ledger_id => p_target_ledger_id
183181 ,p_entity_id => l_array_entity_id(hdr_idx)
183182 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
183183 ,p_entity_code => l_array_entity_code(hdr_idx)
183184 ,p_transaction_num => l_array_transaction_num(hdr_idx)
183185 ,p_event_id => l_array_event_id(hdr_idx)
183186 ,p_event_class_code => l_array_class_code(hdr_idx)
183187 ,p_event_type_code => l_array_event_type(hdr_idx)
183188 ,p_event_number => l_array_event_number(hdr_idx)
183189 ,p_event_date => l_array_event_date(hdr_idx)
183190 ,p_transaction_date => l_array_transaction_date(hdr_idx)
183191 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
183192 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
183193 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
183194 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
183195 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
183196 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
183197 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
183198 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
183199 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
183200 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
183201 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
183202 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
183203 ,p_event_created_by => l_array_event_created_by(hdr_idx)
183204 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
183205
183206 --
183207 -- set the status of entry to C_VALID (0)
183208 --
183209 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
183210
183211 --
183212 -- initialize a row for ae header
183213 --
183214 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
183215
183216 l_event_id := l_array_event_id(hdr_idx);
183217
183218 --
183219 -- storing the hdr_idx for event. May be used by line cursor.
183220 --
183221 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
183222
183223 --
183224 -- store sources from header extract. This can be improved to
183225 -- store only those sources from header extract that may be used in lines
183226 --
183227
183228 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
183229 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
183230 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
183231 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
183232
183233 --
183234 -- initilaize the status of ae headers for diffrent balance types
183235 -- the status is initialised to C_NOT_CREATED (2)
183236 --
183237 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
183238 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
183239 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
183240
183241 --
183242 -- call api to validate and store accounting attributes for header
183243 --
183244
183245 ------------------------------------------------------------
183246 -- Accrual Reversal : to get date for Standard Source (NONE)
183247 ------------------------------------------------------------
183248 l_acc_rev_gl_date_source := NULL;
183249
183250 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
183251 l_rec_acct_attrs.array_date_value(1) :=
183252 xla_ae_sources_pkg.GetSystemSourceDate(
183253 p_source_code => 'XLA_REFERENCE_DATE_1'
183254 , p_source_type_code => 'Y'
183255 , p_source_application_id => 602
183256 );
183257 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_TRANSFER_FLAG';
183258 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
183259
183260
183261 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
183262
183263 XLA_AE_HEADER_PKG.SetJeCategoryName;
183264
183265 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
183266 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
183267 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
183268 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
183269 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
183270
183271
183272 -- No header level analytical criteria
183273
183274 --
183275 --accounting attribute enhancement, bug 3612931
183276 --
183277 l_trx_reversal_source := SUBSTR(NULL, 1,30);
183278
183279 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
183280 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
183281
183282 xla_accounting_err_pkg.build_message
183283 (p_appli_s_name => 'XLA'
183284 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
183285 ,p_token_1 => 'ACCT_ATTR_NAME'
183286 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
183287 ,p_token_2 => 'PRODUCT_NAME'
183288 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
183289 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
183290 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
183291 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
183292
183293 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
183294 --
183295 -- following sets the accounting attributes needed to reverse
183296 -- accounting for a distributeion
183297 --
183298 xla_ae_lines_pkg.SetTrxReversalAttrs
183299 (p_event_id => l_event_id
183300 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
183301 ,p_trx_reversal_source => l_trx_reversal_source);
183302
183303 END IF;
183304
183305
183306 ----------------------------------------------------------------
183307 -- 4262811 - update the header statuses to invalid in need be
183308 ----------------------------------------------------------------
183309 --
183310 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
183311
183312
183313 -----------------------------------------------
183314 -- No accrual reversal for the event class/type
183315 -----------------------------------------------
183316 ----------------------------------------------------------------
183317
183318 --
183319 -- this ends the header loop iteration for one bulk fetch
183320 --
183321 END LOOP;
183322
183323 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
183324 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
183325
183326 --
183327 -- insert dummy rows into lines gt table that were created due to
183328 -- transaction reversals
183329 --
183330 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
183331 l_result := XLA_AE_LINES_PKG.InsertLines;
183332 END IF;
183333
183334 --
183335 -- reset the temp_line_num for each set of events fetched from header
183336 -- cursor rather than doing it for each new event in line cursor
183337 -- Bug 3939231
183338 --
183339 xla_ae_lines_pkg.g_temp_line_num := 0;
183340
183341
183342
183343 --
183344 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
183345 --
183346 --
183347 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
183348
183349 trace
183350 (p_msg => 'SQL - FETCH line_cur'
183351 ,p_level => C_LEVEL_STATEMENT
183352 ,p_module => l_log_module);
183353
183354 END IF;
183355 --
183356 --
183357 LOOP
183358 --
183359 FETCH line_cur BULK COLLECT INTO
183360 l_array_entity_id
183361 , l_array_legal_entity_id
183362 , l_array_entity_code
183363 , l_array_transaction_num
183364 , l_array_event_id
183365 , l_array_class_code
183366 , l_array_event_type
183367 , l_array_event_number
183368 , l_array_event_date
183369 , l_array_transaction_date
183370 , l_array_reference_num_1
183371 , l_array_reference_num_2
183372 , l_array_reference_num_3
183373 , l_array_reference_num_4
183374 , l_array_reference_char_1
183375 , l_array_reference_char_2
183376 , l_array_reference_char_3
183377 , l_array_reference_char_4
183378 , l_array_reference_date_1
183379 , l_array_reference_date_2
183380 , l_array_reference_date_3
183381 , l_array_reference_date_4
183382 , l_array_event_created_by
183383 , l_array_budgetary_control_flag
183384 , l_array_extract_line_num
183385 , l_array_source_4
183386 , l_array_source_11
183387 , l_array_source_15
183388 , l_array_source_18
183389 , l_array_source_19
183390 , l_array_source_20
183391 , l_array_source_21
183392 , l_array_source_22
183393 , l_array_source_24
183394 LIMIT l_rows;
183395
183396 --
183397 IF (C_LEVEL_EVENT >= g_log_level) THEN
183398 trace
183399 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
183400 ,p_level => C_LEVEL_EVENT
183401 ,p_module => l_log_module);
183402 END IF;
183403 --
183404 EXIT WHEN l_array_entity_id.count = 0;
183405
183406 XLA_AE_LINES_PKG.g_rec_lines := null;
183407
183408 --
183409 -- Bug 4458708
183410 --
183411 XLA_AE_LINES_PKG.g_LineNumber := 0;
183412 --
183413 --
183414
183415 FOR Idx IN 1..l_array_event_id.count LOOP
183416 --
183417 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
183418 --
183419 l_event_id := l_array_event_id(idx); -- 5648433
183420
183421 --
183422 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
183423 --
183424
183425 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
183426 (g_array_event(l_event_id).array_value_num('header_index'))
183427 ,'N'
183428 ) <> 'Y'
183429 THEN
183430 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
183431 trace
183432 (p_msg => 'Trancaction revesal option is not Y '
183433 ,p_level => C_LEVEL_STATEMENT
183434 ,p_module => l_log_module);
183435 END IF;
183436
183437 --
183438 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
183439 --
183440 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
183441 --
183442 -- set event info as cache for other routines to refer event attributes
183443 --
183444
183445 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
183446 l_previous_event_id := l_event_id;
183447
183448 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
183449 (p_application_id => p_application_id
183450 ,p_primary_ledger_id => p_primary_ledger_id
183451 ,p_base_ledger_id => p_base_ledger_id
183452 ,p_target_ledger_id => p_target_ledger_id
183453 ,p_entity_id => l_array_entity_id(Idx)
183454 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
183455 ,p_entity_code => l_array_entity_code(Idx)
183456 ,p_transaction_num => l_array_transaction_num(Idx)
183457 ,p_event_id => l_array_event_id(Idx)
183458 ,p_event_class_code => l_array_class_code(Idx)
183459 ,p_event_type_code => l_array_event_type(Idx)
183460 ,p_event_number => l_array_event_number(Idx)
183461 ,p_event_date => l_array_event_date(Idx)
183462 ,p_transaction_date => l_array_transaction_date(Idx)
183463 ,p_reference_num_1 => l_array_reference_num_1(Idx)
183464 ,p_reference_num_2 => l_array_reference_num_2(Idx)
183465 ,p_reference_num_3 => l_array_reference_num_3(Idx)
183466 ,p_reference_num_4 => l_array_reference_num_4(Idx)
183467 ,p_reference_char_1 => l_array_reference_char_1(Idx)
183468 ,p_reference_char_2 => l_array_reference_char_2(Idx)
183469 ,p_reference_char_3 => l_array_reference_char_3(Idx)
183470 ,p_reference_char_4 => l_array_reference_char_4(Idx)
183471 ,p_reference_date_1 => l_array_reference_date_1(Idx)
183472 ,p_reference_date_2 => l_array_reference_date_2(Idx)
183473 ,p_reference_date_3 => l_array_reference_date_3(Idx)
183474 ,p_reference_date_4 => l_array_reference_date_4(Idx)
183475 ,p_event_created_by => l_array_event_created_by(Idx)
183476 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
183477 --
183478 END IF;
183479
183480
183481
183482 --
183483 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
183484
183485 l_acct_reversal_source := SUBSTR(NULL, 1,30);
183486
183487 IF l_continue_with_lines THEN
183488 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
183489 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
183490
183491 xla_accounting_err_pkg.build_message
183492 (p_appli_s_name => 'XLA'
183493 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
183494 ,p_token_1 => 'LINE_NUMBER'
183495 ,p_value_1 => l_array_extract_line_num(Idx)
183496 ,p_token_2 => 'PRODUCT_NAME'
183497 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
183498 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
183499 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
183500 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
183501
183502 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
183503 --
183504 -- following sets the accounting attributes needed to reverse
183505 -- accounting for a distributeion
183506 --
183507
183508 --
183509 -- 5217187
183510 --
183511 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
183512 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
183513 g_array_event(l_event_id).array_value_num('header_index'));
183514 --
183515 --
183516
183517 -- No reversal code generated
183518
183519 xla_ae_lines_pkg.SetAcctReversalAttrs
183520 (p_event_id => l_event_id
183521 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
183522 ,p_calculate_acctd_flag => l_calculate_acctd_flag
183523 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
183524 END IF;
183525
183526 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
183527 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
183528
183529 --
183530 AcctLineType_117 (
183531 p_application_id => p_application_id
183532 ,p_event_id => l_event_id
183533 ,p_calculate_acctd_flag => l_calculate_acctd_flag
183534 ,p_calculate_g_l_flag => l_calculate_g_l_flag
183535 ,p_actual_flag => l_actual_flag
183536 ,p_balance_type_code => l_balance_type_code
183537 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
183538
183539 , p_source_4 => l_array_source_4(Idx)
183540 , p_source_11 => l_array_source_11(Idx)
183541 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
183542 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
183543 , p_source_15 => l_array_source_15(Idx)
183544 , p_source_18 => l_array_source_18(Idx)
183545 , p_source_19 => l_array_source_19(Idx)
183546 , p_source_20 => l_array_source_20(Idx)
183547 , p_source_21 => l_array_source_21(Idx)
183548 , p_source_22 => l_array_source_22(Idx)
183549 , p_source_24 => l_array_source_24(Idx)
183550 );
183551 If(l_balance_type_code = 'A') THEN
183552 l_actual_gain_loss_ref := l_gain_or_loss_ref;
183553 END IF;
183554
183555 --
183556
183557
183558 --
183559 AcctLineType_142 (
183560 p_application_id => p_application_id
183561 ,p_event_id => l_event_id
183562 ,p_calculate_acctd_flag => l_calculate_acctd_flag
183563 ,p_calculate_g_l_flag => l_calculate_g_l_flag
183564 ,p_actual_flag => l_actual_flag
183565 ,p_balance_type_code => l_balance_type_code
183566 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
183567
183568 , p_source_4 => l_array_source_4(Idx)
183569 , p_source_11 => l_array_source_11(Idx)
183570 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
183571 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
183572 , p_source_15 => l_array_source_15(Idx)
183573 , p_source_18 => l_array_source_18(Idx)
183574 , p_source_19 => l_array_source_19(Idx)
183575 , p_source_20 => l_array_source_20(Idx)
183576 , p_source_21 => l_array_source_21(Idx)
183577 , p_source_22 => l_array_source_22(Idx)
183578 , p_source_24 => l_array_source_24(Idx)
183579 );
183580 If(l_balance_type_code = 'A') THEN
183581 l_actual_gain_loss_ref := l_gain_or_loss_ref;
183582 END IF;
183583
183584 --
183585
183586
183587 --
183588 AcctLineType_199 (
183589 p_application_id => p_application_id
183590 ,p_event_id => l_event_id
183591 ,p_calculate_acctd_flag => l_calculate_acctd_flag
183592 ,p_calculate_g_l_flag => l_calculate_g_l_flag
183593 ,p_actual_flag => l_actual_flag
183594 ,p_balance_type_code => l_balance_type_code
183595 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
183596
183597 , p_source_4 => l_array_source_4(Idx)
183598 , p_source_11 => l_array_source_11(Idx)
183599 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
183600 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
183601 , p_source_15 => l_array_source_15(Idx)
183602 , p_source_18 => l_array_source_18(Idx)
183603 , p_source_19 => l_array_source_19(Idx)
183604 , p_source_20 => l_array_source_20(Idx)
183605 , p_source_21 => l_array_source_21(Idx)
183606 , p_source_22 => l_array_source_22(Idx)
183607 , p_source_24 => l_array_source_24(Idx)
183608 );
183609 If(l_balance_type_code = 'A') THEN
183610 l_actual_gain_loss_ref := l_gain_or_loss_ref;
183611 END IF;
183612
183613 --
183614
183615 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
183616 -- or secondary ledger that has different currency with primary
183617 -- or alc that is calculated by sla
183618 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
183619 (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'))
183620
183621 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
183622 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
183623 AND (l_actual_flag = 'A')) THEN
183624 XLA_AE_LINES_PKG.CreateGainOrLossLines(
183625 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
183626 ,p_application_id => p_application_id
183627 ,p_amb_context_code => 'DEFAULT'
183628 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
183629 ,p_event_class_code => C_EVENT_CLASS_CODE
183630 ,p_event_type_code => C_EVENT_TYPE_CODE
183631
183632 ,p_gain_ccid => -1
183633 ,p_loss_ccid => -1
183634
183635 ,p_actual_flag => l_actual_flag
183636 ,p_enc_flag => null
183637 ,p_actual_g_l_ref => l_actual_gain_loss_ref
183638 ,p_enc_g_l_ref => null
183639 );
183640 END IF;
183641 END IF;
183642 END IF;
183643
183644 ELSE
183645 --
183646 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
183647 --
183648 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
183649 trace
183650 (p_msg => 'Trancaction revesal option is Y'
183651 ,p_level => C_LEVEL_STATEMENT
183652 ,p_module => l_log_module);
183653 END IF;
183654 END IF;
183655
183656 END LOOP;
183657 l_result := XLA_AE_LINES_PKG.InsertLines ;
183658 end loop;
183659 close line_cur;
183660
183661
183662 --
183663 -- insert headers into xla_ae_headers_gt table
183664 --
183665 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
183666
183667 -- insert into errors table here.
183668
183669 END LOOP;
183670
183671 --
183672 -- 4865292
183673 --
183674 -- Compare g_hdr_extract_count with event count in
183675 -- CreateHeadersAndLines.
183676 --
183677 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
183678
183679 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
183680 trace (p_msg => '# rows extracted from header extract objects '
183681 || ' (running total): '
183682 || g_hdr_extract_count
183683 ,p_level => C_LEVEL_STATEMENT
183684 ,p_module => l_log_module);
183685 END IF;
183686
183687 CLOSE header_cur;
183688 --
183689
183690 --
183691 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
183692 trace
183693 (p_msg => 'END of EventType_283'
183694 ,p_level => C_LEVEL_PROCEDURE
183695 ,p_module => l_log_module);
183696 END IF;
183697 --
183698 RETURN l_result;
183699 EXCEPTION
183700 WHEN xla_exceptions_pkg.application_exception THEN
183701
183702 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
183703
183704
183705 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
183706
183707 RAISE;
183708
183709 WHEN NO_DATA_FOUND THEN
183710
183711 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
183712 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
183713
183714 FOR header_record IN header_cur
183715 LOOP
183716 l_array_header_events(header_record.event_id) := header_record.event_id;
183717 END LOOP;
183718
183719 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
183720 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
183721
183722 fnd_file.put_line(fnd_file.LOG, ' ');
183723 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
183724 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
183725 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
183726
183727 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
183728 LOOP
183729 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
183730 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
183731 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
183732 END IF;
183733 END LOOP;
183734
183735 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
183736 fnd_file.put_line(fnd_file.LOG, ' ');
183737
183738
183739 xla_exceptions_pkg.raise_message
183740 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventType_283');
183741
183742
183743 WHEN OTHERS THEN
183744 xla_exceptions_pkg.raise_message
183745 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventType_283');
183746 END EventType_283;
183747 --
183748
183749 ---------------------------------------
183750 --
183751 -- PRIVATE PROCEDURE
183752 -- insert_sources_284
183753 --
183754 ----------------------------------------
183755 --
183756 PROCEDURE insert_sources_284(
183757 p_target_ledger_id IN NUMBER
183758 , p_language IN VARCHAR2
183759 , p_sla_ledger_id IN NUMBER
183760 , p_pad_start_date IN DATE
183761 , p_pad_end_date IN DATE
183762 )
183763 IS
183764
183765 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'UFOB_SHIP_RECIPIENT_SHIP_NO_TP';
183766 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'USER_DEFINE';
183767 p_apps_owner VARCHAR2(30);
183768 l_log_module VARCHAR2(240);
183769 BEGIN
183770 IF g_log_enabled THEN
183771 l_log_module := C_DEFAULT_MODULE||'.insert_sources_284';
183772 END IF;
183773 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
183774
183775 trace
183776 (p_msg => 'BEGIN of insert_sources_284'
183777 ,p_level => C_LEVEL_PROCEDURE
183778 ,p_module => l_log_module);
183779
183780 END IF;
183781
183782 -- select APPS owner
183783 SELECT oracle_username
183784 INTO p_apps_owner
183785 FROM fnd_oracle_userid
183786 WHERE read_only_flag = 'U'
183787 ;
183788
183789 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
183790 trace
183791 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
183792 ' - p_language = '||p_language||
183793 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
183794 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
183795 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
183796 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
183797 ,p_level => C_LEVEL_STATEMENT
183798 ,p_module => l_log_module);
183799 END IF;
183800
183801
183802 --
183803 INSERT INTO xla_diag_sources --hdr1
183804 (
183805 event_id
183806 , ledger_id
183807 , sla_ledger_id
183808 , description_language
183809 , object_name
183810 , object_type_code
183811 , line_number
183812 , source_application_id
183813 , source_type_code
183814 , source_code
183815 , source_value
183816 , source_meaning
183817 , created_by
183818 , creation_date
183819 , last_update_date
183820 , last_updated_by
183821 , last_update_login
183822 , program_update_date
183823 , program_application_id
183824 , program_id
183825 , request_id
183826 )
183827 SELECT
183828 event_id
183829 , p_target_ledger_id
183830 , p_sla_ledger_id
183831 , p_language
183832 , object_name
183833 , object_type_code
183834 , line_number
183835 , source_application_id
183836 , source_type_code
183837 , source_code
183838 , SUBSTR(source_value ,1,1996)
183839 , SUBSTR(source_meaning,1,200)
183840 , xla_environment_pkg.g_Usr_Id
183841 , TRUNC(SYSDATE)
183842 , TRUNC(SYSDATE)
183843 , xla_environment_pkg.g_Usr_Id
183844 , xla_environment_pkg.g_Login_Id
183845 , TRUNC(SYSDATE)
183846 , xla_environment_pkg.g_Prog_Appl_Id
183847 , xla_environment_pkg.g_Prog_Id
183848 , xla_environment_pkg.g_Req_Id
183849 FROM (
183850 SELECT xet.event_id event_id
183851 , 0 line_number
183852 , CASE r
183853 WHEN 1 THEN 'CST_XLA_INV_HEADERS_V'
183854 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V'
183855
183856 ELSE null
183857 END object_name
183858 , CASE r
183859 WHEN 1 THEN 'HEADER'
183860 WHEN 2 THEN 'HEADER'
183861
183862 ELSE null
183863 END object_type_code
183864 , CASE r
183865 WHEN 1 THEN '707'
183866 WHEN 2 THEN '707'
183867
183868 ELSE null
183869 END source_application_id
183870 , 'S' source_type_code
183871 , CASE r
183872 WHEN 1 THEN 'DISTRIBUTION_TYPE'
183873 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR'
183874
183875 ELSE null
183876 END source_code
183877 , CASE r
183878 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
183879 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
183880
183881 ELSE null
183882 END source_value
183883 , CASE r
183884 WHEN 1 THEN fvl12.meaning
183885 WHEN 2 THEN fvl38.meaning
183886
183887 ELSE null
183888 END source_meaning
183889 FROM xla_events_gt xet
183890 , CST_XLA_INV_HEADERS_V h1
183891 , fnd_lookup_values fvl12
183892 , fnd_lookup_values fvl38
183893 ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
183894 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
183895 AND xet.event_type_code = C_EVENT_TYPE_CODE
183896 AND h1.event_id = xet.event_id
183897 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
183898 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
183899 AND fvl12.view_application_id(+) = 700
183900 AND fvl12.language(+) = USERENV('LANG')
183901 AND fvl38.lookup_type(+) = 'YES_NO'
183902 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
183903 AND fvl38.view_application_id(+) = 0
183904 AND fvl38.language(+) = USERENV('LANG')
183905
183906 )
183907 ;
183908 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
183909
183910 trace
183911 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
183912 ,p_level => C_LEVEL_STATEMENT
183913 ,p_module => l_log_module);
183914
183915 END IF;
183916 --
183917
183918
183919
183920 --
183921 INSERT INTO xla_diag_sources --line1
183922 (
183923 event_id
183924 , ledger_id
183925 , sla_ledger_id
183926 , description_language
183927 , object_name
183928 , object_type_code
183929 , line_number
183930 , source_application_id
183931 , source_type_code
183932 , source_code
183933 , source_value
183934 , source_meaning
183935 , created_by
183936 , creation_date
183937 , last_update_date
183938 , last_updated_by
183939 , last_update_login
183940 , program_update_date
183941 , program_application_id
183942 , program_id
183943 , request_id
183944 )
183945 SELECT event_id
183946 , p_target_ledger_id
183947 , p_sla_ledger_id
183948 , p_language
183949 , object_name
183950 , object_type_code
183951 , line_number
183952 , source_application_id
183953 , source_type_code
183954 , source_code
183955 , SUBSTR(source_value,1,1996)
183956 , SUBSTR(source_meaning,1,200)
183957 , xla_environment_pkg.g_Usr_Id
183958 , TRUNC(SYSDATE)
183959 , TRUNC(SYSDATE)
183960 , xla_environment_pkg.g_Usr_Id
183961 , xla_environment_pkg.g_Login_Id
183962 , TRUNC(SYSDATE)
183963 , xla_environment_pkg.g_Prog_Appl_Id
183964 , xla_environment_pkg.g_Prog_Id
183965 , xla_environment_pkg.g_Req_Id
183966 FROM (
183967 SELECT xet.event_id event_id
183968 , l2.line_number line_number
183969 , CASE r
183970 WHEN 1 THEN 'CST_XLA_INV_LINES_V'
183971 WHEN 2 THEN 'CST_XLA_INV_LINES_V'
183972 WHEN 3 THEN 'CST_XLA_INV_LINES_V'
183973 WHEN 4 THEN 'CST_XLA_INV_LINES_V'
183974 WHEN 5 THEN 'CST_XLA_INV_LINES_V'
183975 WHEN 6 THEN 'CST_XLA_INV_LINES_V'
183976 WHEN 7 THEN 'CST_XLA_INV_LINES_V'
183977 WHEN 8 THEN 'CST_XLA_INV_LINES_V'
183978 WHEN 9 THEN 'CST_XLA_INV_LINES_V'
183979
183980 ELSE null
183981 END object_name
183982 , CASE r
183983 WHEN 1 THEN 'LINE'
183984 WHEN 2 THEN 'LINE'
183985 WHEN 3 THEN 'LINE'
183986 WHEN 4 THEN 'LINE'
183987 WHEN 5 THEN 'LINE'
183988 WHEN 6 THEN 'LINE'
183989 WHEN 7 THEN 'LINE'
183990 WHEN 8 THEN 'LINE'
183991 WHEN 9 THEN 'LINE'
183992
183993 ELSE null
183994 END object_type_code
183995 , CASE r
183996 WHEN 1 THEN '707'
183997 WHEN 2 THEN '707'
183998 WHEN 3 THEN '707'
183999 WHEN 4 THEN '707'
184000 WHEN 5 THEN '707'
184001 WHEN 6 THEN '707'
184002 WHEN 7 THEN '707'
184003 WHEN 8 THEN '707'
184004 WHEN 9 THEN '707'
184005
184006 ELSE null
184007 END source_application_id
184008 , 'S' source_type_code
184009 , CASE r
184010 WHEN 1 THEN 'CODE_COMBINATION_ID'
184011 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER'
184012 WHEN 3 THEN 'CURRENCY_CODE'
184013 WHEN 4 THEN 'ENTERED_AMOUNT'
184014 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE'
184015 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE'
184016 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE'
184017 WHEN 8 THEN 'ACCOUNTED_AMOUNT'
184018 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE'
184019
184020 ELSE null
184021 END source_code
184022 , CASE r
184023 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
184024 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
184025 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
184026 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
184027 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
184028 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
184029 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
184030 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
184031 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
184032
184033 ELSE null
184034 END source_value
184035 , null source_meaning
184036 FROM xla_events_gt xet
184037 , CST_XLA_INV_LINES_V l2
184038 ,(select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
184039 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
184040 AND xet.event_type_code = C_EVENT_TYPE_CODE
184041 AND l2.event_id = xet.event_id
184042
184043 )
184044 ;
184045 --
184046 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
184047
184048 trace
184049 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
184050 ,p_level => C_LEVEL_STATEMENT
184051 ,p_module => l_log_module);
184052
184053 END IF;
184054
184055
184056 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
184057 trace
184058 (p_msg => 'END of insert_sources_284'
184059 ,p_level => C_LEVEL_PROCEDURE
184060 ,p_module => l_log_module);
184061 END IF;
184062 EXCEPTION
184063 WHEN xla_exceptions_pkg.application_exception THEN
184064 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
184065 trace
184066 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
184067 ,p_level => C_LEVEL_EXCEPTION
184068 ,p_module => l_log_module);
184069 END IF;
184070 RAISE;
184071 WHEN OTHERS THEN
184072 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
184073 trace
184074 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
184075 ,p_level => C_LEVEL_EXCEPTION
184076 ,p_module => l_log_module);
184077 END IF;
184078 xla_exceptions_pkg.raise_message
184079 (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_284');
184080 END insert_sources_284;
184081 --
184082
184083 ---------------------------------------
184084 --
184085 -- PRIVATE FUNCTION
184086 -- EventType_284
184087 --
184088 ----------------------------------------
184089 --
184090 FUNCTION EventType_284
184091 (p_application_id IN NUMBER
184092 ,p_base_ledger_id IN NUMBER
184093 ,p_target_ledger_id IN NUMBER
184094 ,p_language IN VARCHAR2
184095 ,p_currency_code IN VARCHAR2
184096 ,p_sla_ledger_id IN NUMBER
184097 ,p_pad_start_date IN DATE
184098 ,p_pad_end_date IN DATE
184099 ,p_primary_ledger_id IN NUMBER)
184100 RETURN BOOLEAN IS
184101 --
184102 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'UFOB_SHIP_RECIPIENT_SHIP_NO_TP';
184103 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'USER_DEFINE';
184104
184105 l_calculate_acctd_flag VARCHAR2(1) :='Y';
184106 l_calculate_g_l_flag VARCHAR2(1) :='Y';
184107 --
184108 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
184109 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
184110 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
184111 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
184112 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
184113 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
184114 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
184115 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
184116 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
184117 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
184118 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
184119 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
184120 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
184121 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
184122 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
184123 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
184124 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
184125 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
184126 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
184127 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
184128 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
184129 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
184130 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
184131 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
184132 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
184133 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
184134
184135 l_event_id NUMBER;
184136 l_previous_event_id NUMBER;
184137 l_first_event_id NUMBER;
184138 l_last_event_id NUMBER;
184139
184140 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
184141 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
184142 --
184143 --
184144 l_result BOOLEAN := TRUE;
184145 l_rows NUMBER := 1000;
184146 l_event_type_name VARCHAR2(80) := 'User-defined Recipient Intransit Shipment - No Transfer Price - FOB Shipment';
184147 l_event_class_name VARCHAR2(80) := 'User Defined Inventory Transaction Class';
184148 l_description VARCHAR2(4000);
184149 l_transaction_reversal NUMBER;
184150 l_ae_header_id NUMBER;
184151 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
184152 l_log_module VARCHAR2(240);
184153 --
184154 l_acct_reversal_source VARCHAR2(30);
184155 l_trx_reversal_source VARCHAR2(30);
184156
184157 l_continue_with_lines BOOLEAN := TRUE;
184158 --
184159 l_acc_rev_gl_date_source DATE; -- 4262811
184160 --
184161 type t_array_event_id is table of number index by binary_integer;
184162
184163 l_rec_array_event t_rec_array_event;
184164 l_null_rec_array_event t_rec_array_event;
184165 l_array_ae_header_id xla_number_array_type;
184166 l_actual_flag VARCHAR2(1) := NULL;
184167 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
184168 l_balance_type_code VARCHAR2(1) :=NULL;
184169 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
184170
184171 --
184172 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
184173 --
184174
184175 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
184176 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
184177
184178 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
184179 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
184180 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
184181 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
184182 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
184183 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
184184 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
184185 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
184186 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
184187
184188 l_array_source_12 t_array_source_12;
184189 l_array_source_12_meaning t_array_lookup_meaning;
184190 l_array_source_38 t_array_source_38;
184191 l_array_source_38_meaning t_array_lookup_meaning;
184192
184193 l_array_source_4 t_array_source_4;
184194 l_array_source_11 t_array_source_11;
184195 l_array_source_15 t_array_source_15;
184196 l_array_source_18 t_array_source_18;
184197 l_array_source_19 t_array_source_19;
184198 l_array_source_20 t_array_source_20;
184199 l_array_source_21 t_array_source_21;
184200 l_array_source_22 t_array_source_22;
184201 l_array_source_24 t_array_source_24;
184202
184203 --
184204 CURSOR header_cur
184205 IS
184206 SELECT /*+ leading(xet) cardinality(xet,1) */
184207 -- Event Type Code: UFOB_SHIP_RECIPIENT_SHIP_NO_TP
184208 -- Event Class Code: USER_DEFINE
184209 xet.entity_id
184210 , xet.legal_entity_id
184211 , xet.entity_code
184212 , xet.transaction_number
184213 , xet.event_id
184214 , xet.event_class_code
184215 , xet.event_type_code
184216 , xet.event_number
184217 , xet.event_date
184218 , xet.transaction_date
184219 , xet.reference_num_1
184220 , xet.reference_num_2
184221 , xet.reference_num_3
184222 , xet.reference_num_4
184223 , xet.reference_char_1
184224 , xet.reference_char_2
184225 , xet.reference_char_3
184226 , xet.reference_char_4
184227 , xet.reference_date_1
184228 , xet.reference_date_2
184229 , xet.reference_date_3
184230 , xet.reference_date_4
184231 , xet.event_created_by
184232 , xet.budgetary_control_flag
184233 , h1.DISTRIBUTION_TYPE source_12
184234 , fvl12.meaning source_12_meaning
184235 , h1.TRANSFER_TO_GL_INDICATOR source_38
184236 , fvl38.meaning source_38_meaning
184237 FROM xla_events_gt xet
184238 , CST_XLA_INV_HEADERS_V h1
184239 , fnd_lookup_values fvl12
184240 , fnd_lookup_values fvl38
184241 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
184242 and xet.event_type_code = C_EVENT_TYPE_CODE
184243 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
184244 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
184245 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
184246 AND fvl12.view_application_id(+) = 700
184247 AND fvl12.language(+) = USERENV('LANG')
184248 AND fvl38.lookup_type(+) = 'YES_NO'
184249 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
184250 AND fvl38.view_application_id(+) = 0
184251 AND fvl38.language(+) = USERENV('LANG')
184252
184253 ORDER BY event_id
184254 ;
184255
184256
184257 --
184258 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
184259 IS
184260 SELECT /*+ leading(xet) cardinality(xet,1) */
184261 -- Event Type Code: UFOB_SHIP_RECIPIENT_SHIP_NO_TP
184262 -- Event Class Code: USER_DEFINE
184263 xet.entity_id
184264 ,xet.legal_entity_id
184265 ,xet.entity_code
184266 ,xet.transaction_number
184267 ,xet.event_id
184268 ,xet.event_class_code
184269 ,xet.event_type_code
184270 ,xet.event_number
184271 ,xet.event_date
184272 ,xet.transaction_date
184273 ,xet.reference_num_1
184274 ,xet.reference_num_2
184275 ,xet.reference_num_3
184276 ,xet.reference_num_4
184277 ,xet.reference_char_1
184278 ,xet.reference_char_2
184279 ,xet.reference_char_3
184280 ,xet.reference_char_4
184281 ,xet.reference_date_1
184282 ,xet.reference_date_2
184283 ,xet.reference_date_3
184284 ,xet.reference_date_4
184285 ,xet.event_created_by
184286 ,xet.budgetary_control_flag , l2.LINE_NUMBER
184287 , l2.CODE_COMBINATION_ID source_4
184288 , l2.DISTRIBUTION_IDENTIFIER source_11
184289 , l2.CURRENCY_CODE source_15
184290 , l2.ENTERED_AMOUNT source_18
184291 , l2.CURRENCY_CONVERSION_DATE source_19
184292 , l2.CURRENCY_CONVERSION_RATE source_20
184293 , l2.CURRENCY_CONVERSION_TYPE source_21
184294 , l2.ACCOUNTED_AMOUNT source_22
184295 , l2.ACCOUNTING_LINE_TYPE_CODE source_24
184296 FROM xla_events_gt xet
184297 , CST_XLA_INV_LINES_V l2
184298 WHERE xet.event_id between x_first_event_id and x_last_event_id
184299 and xet.event_date between p_pad_start_date and p_pad_end_date
184300 and xet.event_type_code = C_EVENT_TYPE_CODE
184301 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
184302 ;
184303
184304 --
184305 BEGIN
184306 IF g_log_enabled THEN
184307 l_log_module := C_DEFAULT_MODULE||'.EventType_284';
184308 END IF;
184309 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
184310 trace
184311 (p_msg => 'BEGIN of EventType_284'
184312 ,p_level => C_LEVEL_PROCEDURE
184313 ,p_module => l_log_module);
184314 END IF;
184315
184316 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
184317 trace
184318 (p_msg => 'p_application_id = '||p_application_id||
184319 ' - p_base_ledger_id = '||p_base_ledger_id||
184320 ' - p_target_ledger_id = '||p_target_ledger_id||
184321 ' - p_language = '||p_language||
184322 ' - p_currency_code = '||p_currency_code||
184323 ' - p_sla_ledger_id = '||p_sla_ledger_id
184324 ,p_level => C_LEVEL_STATEMENT
184325 ,p_module => l_log_module);
184326 END IF;
184327 --
184328 -- initialze arrays
184329 --
184330 g_array_event.DELETE;
184331 l_rec_array_event := l_null_rec_array_event;
184332 --
184333 --------------------------------------
184334 -- 4262811 Initialze MPA Line Number
184335 --------------------------------------
184336 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
184337
184338 --
184339
184340 --
184341 OPEN header_cur;
184342 --
184343 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
184344 trace
184345 (p_msg => 'SQL - FETCH header_cur'
184346 ,p_level => C_LEVEL_STATEMENT
184347 ,p_module => l_log_module);
184348 END IF;
184349 --
184350 LOOP
184351 FETCH header_cur BULK COLLECT INTO
184352 l_array_entity_id
184353 , l_array_legal_entity_id
184354 , l_array_entity_code
184355 , l_array_transaction_num
184356 , l_array_event_id
184357 , l_array_class_code
184358 , l_array_event_type
184359 , l_array_event_number
184360 , l_array_event_date
184361 , l_array_transaction_date
184362 , l_array_reference_num_1
184363 , l_array_reference_num_2
184364 , l_array_reference_num_3
184365 , l_array_reference_num_4
184366 , l_array_reference_char_1
184367 , l_array_reference_char_2
184368 , l_array_reference_char_3
184369 , l_array_reference_char_4
184370 , l_array_reference_date_1
184371 , l_array_reference_date_2
184372 , l_array_reference_date_3
184373 , l_array_reference_date_4
184374 , l_array_event_created_by
184375 , l_array_budgetary_control_flag
184376 , l_array_source_12
184377 , l_array_source_12_meaning
184378 , l_array_source_38
184379 , l_array_source_38_meaning
184380 LIMIT l_rows;
184381 --
184382 IF (C_LEVEL_EVENT >= g_log_level) THEN
184383 trace
184384 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
184385 ,p_level => C_LEVEL_EVENT
184386 ,p_module => l_log_module);
184387 END IF;
184388 --
184389 EXIT WHEN l_array_entity_id.COUNT = 0;
184390
184391 -- initialize arrays
184392 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
184393 XLA_AE_LINES_PKG.g_rec_lines := NULL;
184394
184395 --
184396 -- Bug 4458708
184397 --
184398 XLA_AE_LINES_PKG.g_LineNumber := 0;
184399
184400
184401 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
184402 g_last_hdr_idx := l_array_event_id.LAST;
184403 --
184404 -- loop for the headers. Each iteration is for each header extract row
184405 -- fetched in header cursor
184406 --
184407 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
184408
184409 --
184410 -- set event info as cache for other routines to refer event attributes
184411 --
184412 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
184413 (p_application_id => p_application_id
184414 ,p_primary_ledger_id => p_primary_ledger_id
184415 ,p_base_ledger_id => p_base_ledger_id
184416 ,p_target_ledger_id => p_target_ledger_id
184417 ,p_entity_id => l_array_entity_id(hdr_idx)
184418 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
184419 ,p_entity_code => l_array_entity_code(hdr_idx)
184420 ,p_transaction_num => l_array_transaction_num(hdr_idx)
184421 ,p_event_id => l_array_event_id(hdr_idx)
184422 ,p_event_class_code => l_array_class_code(hdr_idx)
184423 ,p_event_type_code => l_array_event_type(hdr_idx)
184424 ,p_event_number => l_array_event_number(hdr_idx)
184425 ,p_event_date => l_array_event_date(hdr_idx)
184426 ,p_transaction_date => l_array_transaction_date(hdr_idx)
184427 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
184428 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
184429 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
184430 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
184431 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
184432 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
184433 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
184434 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
184435 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
184436 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
184437 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
184438 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
184439 ,p_event_created_by => l_array_event_created_by(hdr_idx)
184440 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
184441
184442 --
184443 -- set the status of entry to C_VALID (0)
184444 --
184445 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
184446
184447 --
184448 -- initialize a row for ae header
184449 --
184450 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
184451
184452 l_event_id := l_array_event_id(hdr_idx);
184453
184454 --
184455 -- storing the hdr_idx for event. May be used by line cursor.
184456 --
184457 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
184458
184459 --
184460 -- store sources from header extract. This can be improved to
184461 -- store only those sources from header extract that may be used in lines
184462 --
184463
184464 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
184465 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
184466 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
184467 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
184468
184469 --
184470 -- initilaize the status of ae headers for diffrent balance types
184471 -- the status is initialised to C_NOT_CREATED (2)
184472 --
184473 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
184474 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
184475 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
184476
184477 --
184478 -- call api to validate and store accounting attributes for header
184479 --
184480
184481 ------------------------------------------------------------
184482 -- Accrual Reversal : to get date for Standard Source (NONE)
184483 ------------------------------------------------------------
184484 l_acc_rev_gl_date_source := NULL;
184485
184486 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
184487 l_rec_acct_attrs.array_date_value(1) :=
184488 xla_ae_sources_pkg.GetSystemSourceDate(
184489 p_source_code => 'XLA_REFERENCE_DATE_1'
184490 , p_source_type_code => 'Y'
184491 , p_source_application_id => 602
184492 );
184493 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_TRANSFER_FLAG';
184494 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
184495
184496
184497 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
184498
184499 XLA_AE_HEADER_PKG.SetJeCategoryName;
184500
184501 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
184502 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
184503 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
184504 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
184505 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
184506
184507
184508 -- No header level analytical criteria
184509
184510 --
184511 --accounting attribute enhancement, bug 3612931
184512 --
184513 l_trx_reversal_source := SUBSTR(NULL, 1,30);
184514
184515 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
184516 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
184517
184518 xla_accounting_err_pkg.build_message
184519 (p_appli_s_name => 'XLA'
184520 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
184521 ,p_token_1 => 'ACCT_ATTR_NAME'
184522 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
184523 ,p_token_2 => 'PRODUCT_NAME'
184524 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
184525 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
184526 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
184527 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
184528
184529 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
184530 --
184531 -- following sets the accounting attributes needed to reverse
184532 -- accounting for a distributeion
184533 --
184534 xla_ae_lines_pkg.SetTrxReversalAttrs
184535 (p_event_id => l_event_id
184536 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
184537 ,p_trx_reversal_source => l_trx_reversal_source);
184538
184539 END IF;
184540
184541
184542 ----------------------------------------------------------------
184543 -- 4262811 - update the header statuses to invalid in need be
184544 ----------------------------------------------------------------
184545 --
184546 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
184547
184548
184549 -----------------------------------------------
184550 -- No accrual reversal for the event class/type
184551 -----------------------------------------------
184552 ----------------------------------------------------------------
184553
184554 --
184555 -- this ends the header loop iteration for one bulk fetch
184556 --
184557 END LOOP;
184558
184559 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
184560 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
184561
184562 --
184563 -- insert dummy rows into lines gt table that were created due to
184564 -- transaction reversals
184565 --
184566 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
184567 l_result := XLA_AE_LINES_PKG.InsertLines;
184568 END IF;
184569
184570 --
184571 -- reset the temp_line_num for each set of events fetched from header
184572 -- cursor rather than doing it for each new event in line cursor
184573 -- Bug 3939231
184574 --
184575 xla_ae_lines_pkg.g_temp_line_num := 0;
184576
184577
184578
184579 --
184580 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
184581 --
184582 --
184583 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
184584
184585 trace
184586 (p_msg => 'SQL - FETCH line_cur'
184587 ,p_level => C_LEVEL_STATEMENT
184588 ,p_module => l_log_module);
184589
184590 END IF;
184591 --
184592 --
184593 LOOP
184594 --
184595 FETCH line_cur BULK COLLECT INTO
184596 l_array_entity_id
184597 , l_array_legal_entity_id
184598 , l_array_entity_code
184599 , l_array_transaction_num
184600 , l_array_event_id
184601 , l_array_class_code
184602 , l_array_event_type
184603 , l_array_event_number
184604 , l_array_event_date
184605 , l_array_transaction_date
184606 , l_array_reference_num_1
184607 , l_array_reference_num_2
184608 , l_array_reference_num_3
184609 , l_array_reference_num_4
184610 , l_array_reference_char_1
184611 , l_array_reference_char_2
184612 , l_array_reference_char_3
184613 , l_array_reference_char_4
184614 , l_array_reference_date_1
184615 , l_array_reference_date_2
184616 , l_array_reference_date_3
184617 , l_array_reference_date_4
184618 , l_array_event_created_by
184619 , l_array_budgetary_control_flag
184620 , l_array_extract_line_num
184621 , l_array_source_4
184622 , l_array_source_11
184623 , l_array_source_15
184624 , l_array_source_18
184625 , l_array_source_19
184626 , l_array_source_20
184627 , l_array_source_21
184628 , l_array_source_22
184629 , l_array_source_24
184630 LIMIT l_rows;
184631
184632 --
184633 IF (C_LEVEL_EVENT >= g_log_level) THEN
184634 trace
184635 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
184636 ,p_level => C_LEVEL_EVENT
184637 ,p_module => l_log_module);
184638 END IF;
184639 --
184640 EXIT WHEN l_array_entity_id.count = 0;
184641
184642 XLA_AE_LINES_PKG.g_rec_lines := null;
184643
184644 --
184645 -- Bug 4458708
184646 --
184647 XLA_AE_LINES_PKG.g_LineNumber := 0;
184648 --
184649 --
184650
184651 FOR Idx IN 1..l_array_event_id.count LOOP
184652 --
184653 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
184654 --
184655 l_event_id := l_array_event_id(idx); -- 5648433
184656
184657 --
184658 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
184659 --
184660
184661 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
184662 (g_array_event(l_event_id).array_value_num('header_index'))
184663 ,'N'
184664 ) <> 'Y'
184665 THEN
184666 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
184667 trace
184668 (p_msg => 'Trancaction revesal option is not Y '
184669 ,p_level => C_LEVEL_STATEMENT
184670 ,p_module => l_log_module);
184671 END IF;
184672
184673 --
184674 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
184675 --
184676 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
184677 --
184678 -- set event info as cache for other routines to refer event attributes
184679 --
184680
184681 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
184682 l_previous_event_id := l_event_id;
184683
184684 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
184685 (p_application_id => p_application_id
184686 ,p_primary_ledger_id => p_primary_ledger_id
184687 ,p_base_ledger_id => p_base_ledger_id
184688 ,p_target_ledger_id => p_target_ledger_id
184689 ,p_entity_id => l_array_entity_id(Idx)
184690 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
184691 ,p_entity_code => l_array_entity_code(Idx)
184692 ,p_transaction_num => l_array_transaction_num(Idx)
184693 ,p_event_id => l_array_event_id(Idx)
184694 ,p_event_class_code => l_array_class_code(Idx)
184695 ,p_event_type_code => l_array_event_type(Idx)
184696 ,p_event_number => l_array_event_number(Idx)
184697 ,p_event_date => l_array_event_date(Idx)
184698 ,p_transaction_date => l_array_transaction_date(Idx)
184699 ,p_reference_num_1 => l_array_reference_num_1(Idx)
184700 ,p_reference_num_2 => l_array_reference_num_2(Idx)
184701 ,p_reference_num_3 => l_array_reference_num_3(Idx)
184702 ,p_reference_num_4 => l_array_reference_num_4(Idx)
184703 ,p_reference_char_1 => l_array_reference_char_1(Idx)
184704 ,p_reference_char_2 => l_array_reference_char_2(Idx)
184705 ,p_reference_char_3 => l_array_reference_char_3(Idx)
184706 ,p_reference_char_4 => l_array_reference_char_4(Idx)
184707 ,p_reference_date_1 => l_array_reference_date_1(Idx)
184708 ,p_reference_date_2 => l_array_reference_date_2(Idx)
184709 ,p_reference_date_3 => l_array_reference_date_3(Idx)
184710 ,p_reference_date_4 => l_array_reference_date_4(Idx)
184711 ,p_event_created_by => l_array_event_created_by(Idx)
184712 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
184713 --
184714 END IF;
184715
184716
184717
184718 --
184719 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
184720
184721 l_acct_reversal_source := SUBSTR(NULL, 1,30);
184722
184723 IF l_continue_with_lines THEN
184724 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
184725 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
184726
184727 xla_accounting_err_pkg.build_message
184728 (p_appli_s_name => 'XLA'
184729 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
184730 ,p_token_1 => 'LINE_NUMBER'
184731 ,p_value_1 => l_array_extract_line_num(Idx)
184732 ,p_token_2 => 'PRODUCT_NAME'
184733 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
184734 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
184735 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
184736 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
184737
184738 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
184739 --
184740 -- following sets the accounting attributes needed to reverse
184741 -- accounting for a distributeion
184742 --
184743
184744 --
184745 -- 5217187
184746 --
184747 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
184748 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
184749 g_array_event(l_event_id).array_value_num('header_index'));
184750 --
184751 --
184752
184753 -- No reversal code generated
184754
184755 xla_ae_lines_pkg.SetAcctReversalAttrs
184756 (p_event_id => l_event_id
184757 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
184758 ,p_calculate_acctd_flag => l_calculate_acctd_flag
184759 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
184760 END IF;
184761
184762 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
184763 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
184764
184765 --
184766 AcctLineType_44 (
184767 p_application_id => p_application_id
184768 ,p_event_id => l_event_id
184769 ,p_calculate_acctd_flag => l_calculate_acctd_flag
184770 ,p_calculate_g_l_flag => l_calculate_g_l_flag
184771 ,p_actual_flag => l_actual_flag
184772 ,p_balance_type_code => l_balance_type_code
184773 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
184774
184775 , p_source_4 => l_array_source_4(Idx)
184776 , p_source_11 => l_array_source_11(Idx)
184777 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
184778 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
184779 , p_source_15 => l_array_source_15(Idx)
184780 , p_source_18 => l_array_source_18(Idx)
184781 , p_source_19 => l_array_source_19(Idx)
184782 , p_source_20 => l_array_source_20(Idx)
184783 , p_source_21 => l_array_source_21(Idx)
184784 , p_source_22 => l_array_source_22(Idx)
184785 , p_source_24 => l_array_source_24(Idx)
184786 );
184787 If(l_balance_type_code = 'A') THEN
184788 l_actual_gain_loss_ref := l_gain_or_loss_ref;
184789 END IF;
184790
184791 --
184792
184793
184794 --
184795 AcctLineType_52 (
184796 p_application_id => p_application_id
184797 ,p_event_id => l_event_id
184798 ,p_calculate_acctd_flag => l_calculate_acctd_flag
184799 ,p_calculate_g_l_flag => l_calculate_g_l_flag
184800 ,p_actual_flag => l_actual_flag
184801 ,p_balance_type_code => l_balance_type_code
184802 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
184803
184804 , p_source_4 => l_array_source_4(Idx)
184805 , p_source_11 => l_array_source_11(Idx)
184806 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
184807 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
184808 , p_source_15 => l_array_source_15(Idx)
184809 , p_source_18 => l_array_source_18(Idx)
184810 , p_source_19 => l_array_source_19(Idx)
184811 , p_source_20 => l_array_source_20(Idx)
184812 , p_source_21 => l_array_source_21(Idx)
184813 , p_source_22 => l_array_source_22(Idx)
184814 , p_source_24 => l_array_source_24(Idx)
184815 );
184816 If(l_balance_type_code = 'A') THEN
184817 l_actual_gain_loss_ref := l_gain_or_loss_ref;
184818 END IF;
184819
184820 --
184821
184822
184823 --
184824 AcctLineType_58 (
184825 p_application_id => p_application_id
184826 ,p_event_id => l_event_id
184827 ,p_calculate_acctd_flag => l_calculate_acctd_flag
184828 ,p_calculate_g_l_flag => l_calculate_g_l_flag
184829 ,p_actual_flag => l_actual_flag
184830 ,p_balance_type_code => l_balance_type_code
184831 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
184832
184833 , p_source_4 => l_array_source_4(Idx)
184834 , p_source_11 => l_array_source_11(Idx)
184835 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
184836 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
184837 , p_source_15 => l_array_source_15(Idx)
184838 , p_source_18 => l_array_source_18(Idx)
184839 , p_source_19 => l_array_source_19(Idx)
184840 , p_source_20 => l_array_source_20(Idx)
184841 , p_source_21 => l_array_source_21(Idx)
184842 , p_source_22 => l_array_source_22(Idx)
184843 , p_source_24 => l_array_source_24(Idx)
184844 );
184845 If(l_balance_type_code = 'A') THEN
184846 l_actual_gain_loss_ref := l_gain_or_loss_ref;
184847 END IF;
184848
184849 --
184850
184851
184852 --
184853 AcctLineType_74 (
184854 p_application_id => p_application_id
184855 ,p_event_id => l_event_id
184856 ,p_calculate_acctd_flag => l_calculate_acctd_flag
184857 ,p_calculate_g_l_flag => l_calculate_g_l_flag
184858 ,p_actual_flag => l_actual_flag
184859 ,p_balance_type_code => l_balance_type_code
184860 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
184861
184862 , p_source_4 => l_array_source_4(Idx)
184863 , p_source_11 => l_array_source_11(Idx)
184864 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
184865 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
184866 , p_source_15 => l_array_source_15(Idx)
184867 , p_source_18 => l_array_source_18(Idx)
184868 , p_source_19 => l_array_source_19(Idx)
184869 , p_source_20 => l_array_source_20(Idx)
184870 , p_source_21 => l_array_source_21(Idx)
184871 , p_source_22 => l_array_source_22(Idx)
184872 , p_source_24 => l_array_source_24(Idx)
184873 );
184874 If(l_balance_type_code = 'A') THEN
184875 l_actual_gain_loss_ref := l_gain_or_loss_ref;
184876 END IF;
184877
184878 --
184879
184880
184881 --
184882 AcctLineType_124 (
184883 p_application_id => p_application_id
184884 ,p_event_id => l_event_id
184885 ,p_calculate_acctd_flag => l_calculate_acctd_flag
184886 ,p_calculate_g_l_flag => l_calculate_g_l_flag
184887 ,p_actual_flag => l_actual_flag
184888 ,p_balance_type_code => l_balance_type_code
184889 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
184890
184891 , p_source_4 => l_array_source_4(Idx)
184892 , p_source_11 => l_array_source_11(Idx)
184893 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
184894 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
184895 , p_source_15 => l_array_source_15(Idx)
184896 , p_source_18 => l_array_source_18(Idx)
184897 , p_source_19 => l_array_source_19(Idx)
184898 , p_source_20 => l_array_source_20(Idx)
184899 , p_source_21 => l_array_source_21(Idx)
184900 , p_source_22 => l_array_source_22(Idx)
184901 , p_source_24 => l_array_source_24(Idx)
184902 );
184903 If(l_balance_type_code = 'A') THEN
184904 l_actual_gain_loss_ref := l_gain_or_loss_ref;
184905 END IF;
184906
184907 --
184908
184909
184910 --
184911 AcctLineType_169 (
184912 p_application_id => p_application_id
184913 ,p_event_id => l_event_id
184914 ,p_calculate_acctd_flag => l_calculate_acctd_flag
184915 ,p_calculate_g_l_flag => l_calculate_g_l_flag
184916 ,p_actual_flag => l_actual_flag
184917 ,p_balance_type_code => l_balance_type_code
184918 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
184919
184920 , p_source_4 => l_array_source_4(Idx)
184921 , p_source_11 => l_array_source_11(Idx)
184922 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
184923 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
184924 , p_source_15 => l_array_source_15(Idx)
184925 , p_source_18 => l_array_source_18(Idx)
184926 , p_source_19 => l_array_source_19(Idx)
184927 , p_source_20 => l_array_source_20(Idx)
184928 , p_source_21 => l_array_source_21(Idx)
184929 , p_source_22 => l_array_source_22(Idx)
184930 , p_source_24 => l_array_source_24(Idx)
184931 );
184932 If(l_balance_type_code = 'A') THEN
184933 l_actual_gain_loss_ref := l_gain_or_loss_ref;
184934 END IF;
184935
184936 --
184937
184938
184939 --
184940 AcctLineType_182 (
184941 p_application_id => p_application_id
184942 ,p_event_id => l_event_id
184943 ,p_calculate_acctd_flag => l_calculate_acctd_flag
184944 ,p_calculate_g_l_flag => l_calculate_g_l_flag
184945 ,p_actual_flag => l_actual_flag
184946 ,p_balance_type_code => l_balance_type_code
184947 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
184948
184949 , p_source_4 => l_array_source_4(Idx)
184950 , p_source_11 => l_array_source_11(Idx)
184951 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
184952 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
184953 , p_source_15 => l_array_source_15(Idx)
184954 , p_source_18 => l_array_source_18(Idx)
184955 , p_source_19 => l_array_source_19(Idx)
184956 , p_source_20 => l_array_source_20(Idx)
184957 , p_source_21 => l_array_source_21(Idx)
184958 , p_source_22 => l_array_source_22(Idx)
184959 , p_source_24 => l_array_source_24(Idx)
184960 );
184961 If(l_balance_type_code = 'A') THEN
184962 l_actual_gain_loss_ref := l_gain_or_loss_ref;
184963 END IF;
184964
184965 --
184966
184967
184968 --
184969 AcctLineType_210 (
184970 p_application_id => p_application_id
184971 ,p_event_id => l_event_id
184972 ,p_calculate_acctd_flag => l_calculate_acctd_flag
184973 ,p_calculate_g_l_flag => l_calculate_g_l_flag
184974 ,p_actual_flag => l_actual_flag
184975 ,p_balance_type_code => l_balance_type_code
184976 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
184977
184978 , p_source_4 => l_array_source_4(Idx)
184979 , p_source_11 => l_array_source_11(Idx)
184980 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
184981 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
184982 , p_source_15 => l_array_source_15(Idx)
184983 , p_source_18 => l_array_source_18(Idx)
184984 , p_source_19 => l_array_source_19(Idx)
184985 , p_source_20 => l_array_source_20(Idx)
184986 , p_source_21 => l_array_source_21(Idx)
184987 , p_source_22 => l_array_source_22(Idx)
184988 , p_source_24 => l_array_source_24(Idx)
184989 );
184990 If(l_balance_type_code = 'A') THEN
184991 l_actual_gain_loss_ref := l_gain_or_loss_ref;
184992 END IF;
184993
184994 --
184995
184996
184997 --
184998 AcctLineType_217 (
184999 p_application_id => p_application_id
185000 ,p_event_id => l_event_id
185001 ,p_calculate_acctd_flag => l_calculate_acctd_flag
185002 ,p_calculate_g_l_flag => l_calculate_g_l_flag
185003 ,p_actual_flag => l_actual_flag
185004 ,p_balance_type_code => l_balance_type_code
185005 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
185006
185007 , p_source_4 => l_array_source_4(Idx)
185008 , p_source_11 => l_array_source_11(Idx)
185009 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
185010 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
185011 , p_source_15 => l_array_source_15(Idx)
185012 , p_source_18 => l_array_source_18(Idx)
185013 , p_source_19 => l_array_source_19(Idx)
185014 , p_source_20 => l_array_source_20(Idx)
185015 , p_source_21 => l_array_source_21(Idx)
185016 , p_source_22 => l_array_source_22(Idx)
185017 , p_source_24 => l_array_source_24(Idx)
185018 );
185019 If(l_balance_type_code = 'A') THEN
185020 l_actual_gain_loss_ref := l_gain_or_loss_ref;
185021 END IF;
185022
185023 --
185024
185025 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
185026 -- or secondary ledger that has different currency with primary
185027 -- or alc that is calculated by sla
185028 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
185029 (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'))
185030
185031 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
185032 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
185033 AND (l_actual_flag = 'A')) THEN
185034 XLA_AE_LINES_PKG.CreateGainOrLossLines(
185035 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
185036 ,p_application_id => p_application_id
185037 ,p_amb_context_code => 'DEFAULT'
185038 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
185039 ,p_event_class_code => C_EVENT_CLASS_CODE
185040 ,p_event_type_code => C_EVENT_TYPE_CODE
185041
185042 ,p_gain_ccid => -1
185043 ,p_loss_ccid => -1
185044
185045 ,p_actual_flag => l_actual_flag
185046 ,p_enc_flag => null
185047 ,p_actual_g_l_ref => l_actual_gain_loss_ref
185048 ,p_enc_g_l_ref => null
185049 );
185050 END IF;
185051 END IF;
185052 END IF;
185053
185054 ELSE
185055 --
185056 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
185057 --
185058 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
185059 trace
185060 (p_msg => 'Trancaction revesal option is Y'
185061 ,p_level => C_LEVEL_STATEMENT
185062 ,p_module => l_log_module);
185063 END IF;
185064 END IF;
185065
185066 END LOOP;
185067 l_result := XLA_AE_LINES_PKG.InsertLines ;
185068 end loop;
185069 close line_cur;
185070
185071
185072 --
185073 -- insert headers into xla_ae_headers_gt table
185074 --
185075 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
185076
185077 -- insert into errors table here.
185078
185079 END LOOP;
185080
185081 --
185082 -- 4865292
185083 --
185084 -- Compare g_hdr_extract_count with event count in
185085 -- CreateHeadersAndLines.
185086 --
185087 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
185088
185089 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
185090 trace (p_msg => '# rows extracted from header extract objects '
185091 || ' (running total): '
185092 || g_hdr_extract_count
185093 ,p_level => C_LEVEL_STATEMENT
185094 ,p_module => l_log_module);
185095 END IF;
185096
185097 CLOSE header_cur;
185098 --
185099
185100 --
185101 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
185102 trace
185103 (p_msg => 'END of EventType_284'
185104 ,p_level => C_LEVEL_PROCEDURE
185105 ,p_module => l_log_module);
185106 END IF;
185107 --
185108 RETURN l_result;
185109 EXCEPTION
185110 WHEN xla_exceptions_pkg.application_exception THEN
185111
185112 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
185113
185114
185115 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
185116
185117 RAISE;
185118
185119 WHEN NO_DATA_FOUND THEN
185120
185121 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
185122 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
185123
185124 FOR header_record IN header_cur
185125 LOOP
185126 l_array_header_events(header_record.event_id) := header_record.event_id;
185127 END LOOP;
185128
185129 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
185130 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
185131
185132 fnd_file.put_line(fnd_file.LOG, ' ');
185133 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
185134 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
185135 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
185136
185137 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
185138 LOOP
185139 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
185140 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
185141 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
185142 END IF;
185143 END LOOP;
185144
185145 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
185146 fnd_file.put_line(fnd_file.LOG, ' ');
185147
185148
185149 xla_exceptions_pkg.raise_message
185150 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventType_284');
185151
185152
185153 WHEN OTHERS THEN
185154 xla_exceptions_pkg.raise_message
185155 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventType_284');
185156 END EventType_284;
185157 --
185158
185159 ---------------------------------------
185160 --
185161 -- PRIVATE PROCEDURE
185162 -- insert_sources_285
185163 --
185164 ----------------------------------------
185165 --
185166 PROCEDURE insert_sources_285(
185167 p_target_ledger_id IN NUMBER
185168 , p_language IN VARCHAR2
185169 , p_sla_ledger_id IN NUMBER
185170 , p_pad_start_date IN DATE
185171 , p_pad_end_date IN DATE
185172 )
185173 IS
185174
185175 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'UFOB_SHIP_RECIPIENT_SHIP_TP';
185176 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'USER_DEFINE';
185177 p_apps_owner VARCHAR2(30);
185178 l_log_module VARCHAR2(240);
185179 BEGIN
185180 IF g_log_enabled THEN
185181 l_log_module := C_DEFAULT_MODULE||'.insert_sources_285';
185182 END IF;
185183 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
185184
185185 trace
185186 (p_msg => 'BEGIN of insert_sources_285'
185187 ,p_level => C_LEVEL_PROCEDURE
185188 ,p_module => l_log_module);
185189
185190 END IF;
185191
185192 -- select APPS owner
185193 SELECT oracle_username
185194 INTO p_apps_owner
185195 FROM fnd_oracle_userid
185196 WHERE read_only_flag = 'U'
185197 ;
185198
185199 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
185200 trace
185201 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
185202 ' - p_language = '||p_language||
185203 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
185204 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
185205 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
185206 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
185207 ,p_level => C_LEVEL_STATEMENT
185208 ,p_module => l_log_module);
185209 END IF;
185210
185211
185212 --
185213 INSERT INTO xla_diag_sources --hdr1
185214 (
185215 event_id
185216 , ledger_id
185217 , sla_ledger_id
185218 , description_language
185219 , object_name
185220 , object_type_code
185221 , line_number
185222 , source_application_id
185223 , source_type_code
185224 , source_code
185225 , source_value
185226 , source_meaning
185227 , created_by
185228 , creation_date
185229 , last_update_date
185230 , last_updated_by
185231 , last_update_login
185232 , program_update_date
185233 , program_application_id
185234 , program_id
185235 , request_id
185236 )
185237 SELECT
185238 event_id
185239 , p_target_ledger_id
185240 , p_sla_ledger_id
185241 , p_language
185242 , object_name
185243 , object_type_code
185244 , line_number
185245 , source_application_id
185246 , source_type_code
185247 , source_code
185248 , SUBSTR(source_value ,1,1996)
185249 , SUBSTR(source_meaning,1,200)
185250 , xla_environment_pkg.g_Usr_Id
185251 , TRUNC(SYSDATE)
185252 , TRUNC(SYSDATE)
185253 , xla_environment_pkg.g_Usr_Id
185254 , xla_environment_pkg.g_Login_Id
185255 , TRUNC(SYSDATE)
185256 , xla_environment_pkg.g_Prog_Appl_Id
185257 , xla_environment_pkg.g_Prog_Id
185258 , xla_environment_pkg.g_Req_Id
185259 FROM (
185260 SELECT xet.event_id event_id
185261 , 0 line_number
185262 , CASE r
185263 WHEN 1 THEN 'CST_XLA_INV_HEADERS_V'
185264 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V'
185265
185266 ELSE null
185267 END object_name
185268 , CASE r
185269 WHEN 1 THEN 'HEADER'
185270 WHEN 2 THEN 'HEADER'
185271
185272 ELSE null
185273 END object_type_code
185274 , CASE r
185275 WHEN 1 THEN '707'
185276 WHEN 2 THEN '707'
185277
185278 ELSE null
185279 END source_application_id
185280 , 'S' source_type_code
185281 , CASE r
185282 WHEN 1 THEN 'DISTRIBUTION_TYPE'
185283 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR'
185284
185285 ELSE null
185286 END source_code
185287 , CASE r
185288 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
185289 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
185290
185291 ELSE null
185292 END source_value
185293 , CASE r
185294 WHEN 1 THEN fvl12.meaning
185295 WHEN 2 THEN fvl38.meaning
185296
185297 ELSE null
185298 END source_meaning
185299 FROM xla_events_gt xet
185300 , CST_XLA_INV_HEADERS_V h1
185301 , fnd_lookup_values fvl12
185302 , fnd_lookup_values fvl38
185303 ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
185304 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
185305 AND xet.event_type_code = C_EVENT_TYPE_CODE
185306 AND h1.event_id = xet.event_id
185307 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
185308 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
185309 AND fvl12.view_application_id(+) = 700
185310 AND fvl12.language(+) = USERENV('LANG')
185311 AND fvl38.lookup_type(+) = 'YES_NO'
185312 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
185313 AND fvl38.view_application_id(+) = 0
185314 AND fvl38.language(+) = USERENV('LANG')
185315
185316 )
185317 ;
185318 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
185319
185320 trace
185321 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
185322 ,p_level => C_LEVEL_STATEMENT
185323 ,p_module => l_log_module);
185324
185325 END IF;
185326 --
185327
185328
185329
185330 --
185331 INSERT INTO xla_diag_sources --line1
185332 (
185333 event_id
185334 , ledger_id
185335 , sla_ledger_id
185336 , description_language
185337 , object_name
185338 , object_type_code
185339 , line_number
185340 , source_application_id
185341 , source_type_code
185342 , source_code
185343 , source_value
185344 , source_meaning
185345 , created_by
185346 , creation_date
185347 , last_update_date
185348 , last_updated_by
185349 , last_update_login
185350 , program_update_date
185351 , program_application_id
185352 , program_id
185353 , request_id
185354 )
185355 SELECT event_id
185356 , p_target_ledger_id
185357 , p_sla_ledger_id
185358 , p_language
185359 , object_name
185360 , object_type_code
185361 , line_number
185362 , source_application_id
185363 , source_type_code
185364 , source_code
185365 , SUBSTR(source_value,1,1996)
185366 , SUBSTR(source_meaning,1,200)
185367 , xla_environment_pkg.g_Usr_Id
185368 , TRUNC(SYSDATE)
185369 , TRUNC(SYSDATE)
185370 , xla_environment_pkg.g_Usr_Id
185371 , xla_environment_pkg.g_Login_Id
185372 , TRUNC(SYSDATE)
185373 , xla_environment_pkg.g_Prog_Appl_Id
185374 , xla_environment_pkg.g_Prog_Id
185375 , xla_environment_pkg.g_Req_Id
185376 FROM (
185377 SELECT xet.event_id event_id
185378 , l2.line_number line_number
185379 , CASE r
185380 WHEN 1 THEN 'CST_XLA_INV_LINES_V'
185381 WHEN 2 THEN 'CST_XLA_INV_LINES_V'
185382 WHEN 3 THEN 'CST_XLA_INV_LINES_V'
185383 WHEN 4 THEN 'CST_XLA_INV_LINES_V'
185384 WHEN 5 THEN 'CST_XLA_INV_LINES_V'
185385 WHEN 6 THEN 'CST_XLA_INV_LINES_V'
185386 WHEN 7 THEN 'CST_XLA_INV_LINES_V'
185387 WHEN 8 THEN 'CST_XLA_INV_LINES_V'
185388 WHEN 9 THEN 'CST_XLA_INV_LINES_V'
185389
185390 ELSE null
185391 END object_name
185392 , CASE r
185393 WHEN 1 THEN 'LINE'
185394 WHEN 2 THEN 'LINE'
185395 WHEN 3 THEN 'LINE'
185396 WHEN 4 THEN 'LINE'
185397 WHEN 5 THEN 'LINE'
185398 WHEN 6 THEN 'LINE'
185399 WHEN 7 THEN 'LINE'
185400 WHEN 8 THEN 'LINE'
185401 WHEN 9 THEN 'LINE'
185402
185403 ELSE null
185404 END object_type_code
185405 , CASE r
185406 WHEN 1 THEN '707'
185407 WHEN 2 THEN '707'
185408 WHEN 3 THEN '707'
185409 WHEN 4 THEN '707'
185410 WHEN 5 THEN '707'
185411 WHEN 6 THEN '707'
185412 WHEN 7 THEN '707'
185413 WHEN 8 THEN '707'
185414 WHEN 9 THEN '707'
185415
185416 ELSE null
185417 END source_application_id
185418 , 'S' source_type_code
185419 , CASE r
185420 WHEN 1 THEN 'CODE_COMBINATION_ID'
185421 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER'
185422 WHEN 3 THEN 'CURRENCY_CODE'
185423 WHEN 4 THEN 'ENTERED_AMOUNT'
185424 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE'
185425 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE'
185426 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE'
185427 WHEN 8 THEN 'ACCOUNTED_AMOUNT'
185428 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE'
185429
185430 ELSE null
185431 END source_code
185432 , CASE r
185433 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
185434 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
185435 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
185436 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
185437 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
185438 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
185439 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
185440 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
185441 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
185442
185443 ELSE null
185444 END source_value
185445 , null source_meaning
185446 FROM xla_events_gt xet
185447 , CST_XLA_INV_LINES_V l2
185448 ,(select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
185449 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
185450 AND xet.event_type_code = C_EVENT_TYPE_CODE
185451 AND l2.event_id = xet.event_id
185452
185453 )
185454 ;
185455 --
185456 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
185457
185458 trace
185459 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
185460 ,p_level => C_LEVEL_STATEMENT
185461 ,p_module => l_log_module);
185462
185463 END IF;
185464
185465
185466 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
185467 trace
185468 (p_msg => 'END of insert_sources_285'
185469 ,p_level => C_LEVEL_PROCEDURE
185470 ,p_module => l_log_module);
185471 END IF;
185472 EXCEPTION
185473 WHEN xla_exceptions_pkg.application_exception THEN
185474 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
185475 trace
185476 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
185477 ,p_level => C_LEVEL_EXCEPTION
185478 ,p_module => l_log_module);
185479 END IF;
185480 RAISE;
185481 WHEN OTHERS THEN
185482 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
185483 trace
185484 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
185485 ,p_level => C_LEVEL_EXCEPTION
185486 ,p_module => l_log_module);
185487 END IF;
185488 xla_exceptions_pkg.raise_message
185489 (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_285');
185490 END insert_sources_285;
185491 --
185492
185493 ---------------------------------------
185494 --
185495 -- PRIVATE FUNCTION
185496 -- EventType_285
185497 --
185498 ----------------------------------------
185499 --
185500 FUNCTION EventType_285
185501 (p_application_id IN NUMBER
185502 ,p_base_ledger_id IN NUMBER
185503 ,p_target_ledger_id IN NUMBER
185504 ,p_language IN VARCHAR2
185505 ,p_currency_code IN VARCHAR2
185506 ,p_sla_ledger_id IN NUMBER
185507 ,p_pad_start_date IN DATE
185508 ,p_pad_end_date IN DATE
185509 ,p_primary_ledger_id IN NUMBER)
185510 RETURN BOOLEAN IS
185511 --
185512 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'UFOB_SHIP_RECIPIENT_SHIP_TP';
185513 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'USER_DEFINE';
185514
185515 l_calculate_acctd_flag VARCHAR2(1) :='Y';
185516 l_calculate_g_l_flag VARCHAR2(1) :='Y';
185517 --
185518 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
185519 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
185520 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
185521 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
185522 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
185523 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
185524 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
185525 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
185526 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
185527 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
185528 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
185529 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
185530 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
185531 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
185532 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
185533 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
185534 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
185535 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
185536 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
185537 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
185538 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
185539 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
185540 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
185541 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
185542 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
185543 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
185544
185545 l_event_id NUMBER;
185546 l_previous_event_id NUMBER;
185547 l_first_event_id NUMBER;
185548 l_last_event_id NUMBER;
185549
185550 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
185551 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
185552 --
185553 --
185554 l_result BOOLEAN := TRUE;
185555 l_rows NUMBER := 1000;
185556 l_event_type_name VARCHAR2(80) := 'User-defined Recipient Intransit Shipment - Transfer Price - FOB Shipment';
185557 l_event_class_name VARCHAR2(80) := 'User Defined Inventory Transaction Class';
185558 l_description VARCHAR2(4000);
185559 l_transaction_reversal NUMBER;
185560 l_ae_header_id NUMBER;
185561 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
185562 l_log_module VARCHAR2(240);
185563 --
185564 l_acct_reversal_source VARCHAR2(30);
185565 l_trx_reversal_source VARCHAR2(30);
185566
185567 l_continue_with_lines BOOLEAN := TRUE;
185568 --
185569 l_acc_rev_gl_date_source DATE; -- 4262811
185570 --
185571 type t_array_event_id is table of number index by binary_integer;
185572
185573 l_rec_array_event t_rec_array_event;
185574 l_null_rec_array_event t_rec_array_event;
185575 l_array_ae_header_id xla_number_array_type;
185576 l_actual_flag VARCHAR2(1) := NULL;
185577 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
185578 l_balance_type_code VARCHAR2(1) :=NULL;
185579 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
185580
185581 --
185582 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
185583 --
185584
185585 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
185586 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
185587
185588 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
185589 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
185590 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
185591 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
185592 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
185593 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
185594 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
185595 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
185596 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
185597
185598 l_array_source_12 t_array_source_12;
185599 l_array_source_12_meaning t_array_lookup_meaning;
185600 l_array_source_38 t_array_source_38;
185601 l_array_source_38_meaning t_array_lookup_meaning;
185602
185603 l_array_source_4 t_array_source_4;
185604 l_array_source_11 t_array_source_11;
185605 l_array_source_15 t_array_source_15;
185606 l_array_source_18 t_array_source_18;
185607 l_array_source_19 t_array_source_19;
185608 l_array_source_20 t_array_source_20;
185609 l_array_source_21 t_array_source_21;
185610 l_array_source_22 t_array_source_22;
185611 l_array_source_24 t_array_source_24;
185612
185613 --
185614 CURSOR header_cur
185615 IS
185616 SELECT /*+ leading(xet) cardinality(xet,1) */
185617 -- Event Type Code: UFOB_SHIP_RECIPIENT_SHIP_TP
185618 -- Event Class Code: USER_DEFINE
185619 xet.entity_id
185620 , xet.legal_entity_id
185621 , xet.entity_code
185622 , xet.transaction_number
185623 , xet.event_id
185624 , xet.event_class_code
185625 , xet.event_type_code
185626 , xet.event_number
185627 , xet.event_date
185628 , xet.transaction_date
185629 , xet.reference_num_1
185630 , xet.reference_num_2
185631 , xet.reference_num_3
185632 , xet.reference_num_4
185633 , xet.reference_char_1
185634 , xet.reference_char_2
185635 , xet.reference_char_3
185636 , xet.reference_char_4
185637 , xet.reference_date_1
185638 , xet.reference_date_2
185639 , xet.reference_date_3
185640 , xet.reference_date_4
185641 , xet.event_created_by
185642 , xet.budgetary_control_flag
185643 , h1.DISTRIBUTION_TYPE source_12
185644 , fvl12.meaning source_12_meaning
185645 , h1.TRANSFER_TO_GL_INDICATOR source_38
185646 , fvl38.meaning source_38_meaning
185647 FROM xla_events_gt xet
185648 , CST_XLA_INV_HEADERS_V h1
185649 , fnd_lookup_values fvl12
185650 , fnd_lookup_values fvl38
185651 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
185652 and xet.event_type_code = C_EVENT_TYPE_CODE
185653 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
185654 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
185655 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
185656 AND fvl12.view_application_id(+) = 700
185657 AND fvl12.language(+) = USERENV('LANG')
185658 AND fvl38.lookup_type(+) = 'YES_NO'
185659 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
185660 AND fvl38.view_application_id(+) = 0
185661 AND fvl38.language(+) = USERENV('LANG')
185662
185663 ORDER BY event_id
185664 ;
185665
185666
185667 --
185668 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
185669 IS
185670 SELECT /*+ leading(xet) cardinality(xet,1) */
185671 -- Event Type Code: UFOB_SHIP_RECIPIENT_SHIP_TP
185672 -- Event Class Code: USER_DEFINE
185673 xet.entity_id
185674 ,xet.legal_entity_id
185675 ,xet.entity_code
185676 ,xet.transaction_number
185677 ,xet.event_id
185678 ,xet.event_class_code
185679 ,xet.event_type_code
185680 ,xet.event_number
185681 ,xet.event_date
185682 ,xet.transaction_date
185683 ,xet.reference_num_1
185684 ,xet.reference_num_2
185685 ,xet.reference_num_3
185686 ,xet.reference_num_4
185687 ,xet.reference_char_1
185688 ,xet.reference_char_2
185689 ,xet.reference_char_3
185690 ,xet.reference_char_4
185691 ,xet.reference_date_1
185692 ,xet.reference_date_2
185693 ,xet.reference_date_3
185694 ,xet.reference_date_4
185695 ,xet.event_created_by
185696 ,xet.budgetary_control_flag , l2.LINE_NUMBER
185697 , l2.CODE_COMBINATION_ID source_4
185698 , l2.DISTRIBUTION_IDENTIFIER source_11
185699 , l2.CURRENCY_CODE source_15
185700 , l2.ENTERED_AMOUNT source_18
185701 , l2.CURRENCY_CONVERSION_DATE source_19
185702 , l2.CURRENCY_CONVERSION_RATE source_20
185703 , l2.CURRENCY_CONVERSION_TYPE source_21
185704 , l2.ACCOUNTED_AMOUNT source_22
185705 , l2.ACCOUNTING_LINE_TYPE_CODE source_24
185706 FROM xla_events_gt xet
185707 , CST_XLA_INV_LINES_V l2
185708 WHERE xet.event_id between x_first_event_id and x_last_event_id
185709 and xet.event_date between p_pad_start_date and p_pad_end_date
185710 and xet.event_type_code = C_EVENT_TYPE_CODE
185711 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
185712 ;
185713
185714 --
185715 BEGIN
185716 IF g_log_enabled THEN
185717 l_log_module := C_DEFAULT_MODULE||'.EventType_285';
185718 END IF;
185719 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
185720 trace
185721 (p_msg => 'BEGIN of EventType_285'
185722 ,p_level => C_LEVEL_PROCEDURE
185723 ,p_module => l_log_module);
185724 END IF;
185725
185726 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
185727 trace
185728 (p_msg => 'p_application_id = '||p_application_id||
185729 ' - p_base_ledger_id = '||p_base_ledger_id||
185730 ' - p_target_ledger_id = '||p_target_ledger_id||
185731 ' - p_language = '||p_language||
185732 ' - p_currency_code = '||p_currency_code||
185733 ' - p_sla_ledger_id = '||p_sla_ledger_id
185734 ,p_level => C_LEVEL_STATEMENT
185735 ,p_module => l_log_module);
185736 END IF;
185737 --
185738 -- initialze arrays
185739 --
185740 g_array_event.DELETE;
185741 l_rec_array_event := l_null_rec_array_event;
185742 --
185743 --------------------------------------
185744 -- 4262811 Initialze MPA Line Number
185745 --------------------------------------
185746 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
185747
185748 --
185749
185750 --
185751 OPEN header_cur;
185752 --
185753 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
185754 trace
185755 (p_msg => 'SQL - FETCH header_cur'
185756 ,p_level => C_LEVEL_STATEMENT
185757 ,p_module => l_log_module);
185758 END IF;
185759 --
185760 LOOP
185761 FETCH header_cur BULK COLLECT INTO
185762 l_array_entity_id
185763 , l_array_legal_entity_id
185764 , l_array_entity_code
185765 , l_array_transaction_num
185766 , l_array_event_id
185767 , l_array_class_code
185768 , l_array_event_type
185769 , l_array_event_number
185770 , l_array_event_date
185771 , l_array_transaction_date
185772 , l_array_reference_num_1
185773 , l_array_reference_num_2
185774 , l_array_reference_num_3
185775 , l_array_reference_num_4
185776 , l_array_reference_char_1
185777 , l_array_reference_char_2
185778 , l_array_reference_char_3
185779 , l_array_reference_char_4
185780 , l_array_reference_date_1
185781 , l_array_reference_date_2
185782 , l_array_reference_date_3
185783 , l_array_reference_date_4
185784 , l_array_event_created_by
185785 , l_array_budgetary_control_flag
185786 , l_array_source_12
185787 , l_array_source_12_meaning
185788 , l_array_source_38
185789 , l_array_source_38_meaning
185790 LIMIT l_rows;
185791 --
185792 IF (C_LEVEL_EVENT >= g_log_level) THEN
185793 trace
185794 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
185795 ,p_level => C_LEVEL_EVENT
185796 ,p_module => l_log_module);
185797 END IF;
185798 --
185799 EXIT WHEN l_array_entity_id.COUNT = 0;
185800
185801 -- initialize arrays
185802 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
185803 XLA_AE_LINES_PKG.g_rec_lines := NULL;
185804
185805 --
185806 -- Bug 4458708
185807 --
185808 XLA_AE_LINES_PKG.g_LineNumber := 0;
185809
185810
185811 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
185812 g_last_hdr_idx := l_array_event_id.LAST;
185813 --
185814 -- loop for the headers. Each iteration is for each header extract row
185815 -- fetched in header cursor
185816 --
185817 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
185818
185819 --
185820 -- set event info as cache for other routines to refer event attributes
185821 --
185822 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
185823 (p_application_id => p_application_id
185824 ,p_primary_ledger_id => p_primary_ledger_id
185825 ,p_base_ledger_id => p_base_ledger_id
185826 ,p_target_ledger_id => p_target_ledger_id
185827 ,p_entity_id => l_array_entity_id(hdr_idx)
185828 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
185829 ,p_entity_code => l_array_entity_code(hdr_idx)
185830 ,p_transaction_num => l_array_transaction_num(hdr_idx)
185831 ,p_event_id => l_array_event_id(hdr_idx)
185832 ,p_event_class_code => l_array_class_code(hdr_idx)
185833 ,p_event_type_code => l_array_event_type(hdr_idx)
185834 ,p_event_number => l_array_event_number(hdr_idx)
185835 ,p_event_date => l_array_event_date(hdr_idx)
185836 ,p_transaction_date => l_array_transaction_date(hdr_idx)
185837 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
185838 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
185839 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
185840 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
185841 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
185842 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
185843 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
185844 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
185845 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
185846 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
185847 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
185848 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
185849 ,p_event_created_by => l_array_event_created_by(hdr_idx)
185850 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
185851
185852 --
185853 -- set the status of entry to C_VALID (0)
185854 --
185855 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
185856
185857 --
185858 -- initialize a row for ae header
185859 --
185860 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
185861
185862 l_event_id := l_array_event_id(hdr_idx);
185863
185864 --
185865 -- storing the hdr_idx for event. May be used by line cursor.
185866 --
185867 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
185868
185869 --
185870 -- store sources from header extract. This can be improved to
185871 -- store only those sources from header extract that may be used in lines
185872 --
185873
185874 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
185875 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
185876 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
185877 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
185878
185879 --
185880 -- initilaize the status of ae headers for diffrent balance types
185881 -- the status is initialised to C_NOT_CREATED (2)
185882 --
185883 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
185884 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
185885 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
185886
185887 --
185888 -- call api to validate and store accounting attributes for header
185889 --
185890
185891 ------------------------------------------------------------
185892 -- Accrual Reversal : to get date for Standard Source (NONE)
185893 ------------------------------------------------------------
185894 l_acc_rev_gl_date_source := NULL;
185895
185896 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
185897 l_rec_acct_attrs.array_date_value(1) :=
185898 xla_ae_sources_pkg.GetSystemSourceDate(
185899 p_source_code => 'XLA_REFERENCE_DATE_1'
185900 , p_source_type_code => 'Y'
185901 , p_source_application_id => 602
185902 );
185903 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_TRANSFER_FLAG';
185904 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
185905
185906
185907 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
185908
185909 XLA_AE_HEADER_PKG.SetJeCategoryName;
185910
185911 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
185912 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
185913 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
185914 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
185915 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
185916
185917
185918 -- No header level analytical criteria
185919
185920 --
185921 --accounting attribute enhancement, bug 3612931
185922 --
185923 l_trx_reversal_source := SUBSTR(NULL, 1,30);
185924
185925 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
185926 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
185927
185928 xla_accounting_err_pkg.build_message
185929 (p_appli_s_name => 'XLA'
185930 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
185931 ,p_token_1 => 'ACCT_ATTR_NAME'
185932 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
185933 ,p_token_2 => 'PRODUCT_NAME'
185934 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
185935 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
185936 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
185937 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
185938
185939 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
185940 --
185941 -- following sets the accounting attributes needed to reverse
185942 -- accounting for a distributeion
185943 --
185944 xla_ae_lines_pkg.SetTrxReversalAttrs
185945 (p_event_id => l_event_id
185946 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
185947 ,p_trx_reversal_source => l_trx_reversal_source);
185948
185949 END IF;
185950
185951
185952 ----------------------------------------------------------------
185953 -- 4262811 - update the header statuses to invalid in need be
185954 ----------------------------------------------------------------
185955 --
185956 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
185957
185958
185959 -----------------------------------------------
185960 -- No accrual reversal for the event class/type
185961 -----------------------------------------------
185962 ----------------------------------------------------------------
185963
185964 --
185965 -- this ends the header loop iteration for one bulk fetch
185966 --
185967 END LOOP;
185968
185969 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
185970 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
185971
185972 --
185973 -- insert dummy rows into lines gt table that were created due to
185974 -- transaction reversals
185975 --
185976 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
185977 l_result := XLA_AE_LINES_PKG.InsertLines;
185978 END IF;
185979
185980 --
185981 -- reset the temp_line_num for each set of events fetched from header
185982 -- cursor rather than doing it for each new event in line cursor
185983 -- Bug 3939231
185984 --
185985 xla_ae_lines_pkg.g_temp_line_num := 0;
185986
185987
185988
185989 --
185990 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
185991 --
185992 --
185993 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
185994
185995 trace
185996 (p_msg => 'SQL - FETCH line_cur'
185997 ,p_level => C_LEVEL_STATEMENT
185998 ,p_module => l_log_module);
185999
186000 END IF;
186001 --
186002 --
186003 LOOP
186004 --
186005 FETCH line_cur BULK COLLECT INTO
186006 l_array_entity_id
186007 , l_array_legal_entity_id
186008 , l_array_entity_code
186009 , l_array_transaction_num
186010 , l_array_event_id
186011 , l_array_class_code
186012 , l_array_event_type
186013 , l_array_event_number
186014 , l_array_event_date
186015 , l_array_transaction_date
186016 , l_array_reference_num_1
186017 , l_array_reference_num_2
186018 , l_array_reference_num_3
186019 , l_array_reference_num_4
186020 , l_array_reference_char_1
186021 , l_array_reference_char_2
186022 , l_array_reference_char_3
186023 , l_array_reference_char_4
186024 , l_array_reference_date_1
186025 , l_array_reference_date_2
186026 , l_array_reference_date_3
186027 , l_array_reference_date_4
186028 , l_array_event_created_by
186029 , l_array_budgetary_control_flag
186030 , l_array_extract_line_num
186031 , l_array_source_4
186032 , l_array_source_11
186033 , l_array_source_15
186034 , l_array_source_18
186035 , l_array_source_19
186036 , l_array_source_20
186037 , l_array_source_21
186038 , l_array_source_22
186039 , l_array_source_24
186040 LIMIT l_rows;
186041
186042 --
186043 IF (C_LEVEL_EVENT >= g_log_level) THEN
186044 trace
186045 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
186046 ,p_level => C_LEVEL_EVENT
186047 ,p_module => l_log_module);
186048 END IF;
186049 --
186050 EXIT WHEN l_array_entity_id.count = 0;
186051
186052 XLA_AE_LINES_PKG.g_rec_lines := null;
186053
186054 --
186055 -- Bug 4458708
186056 --
186057 XLA_AE_LINES_PKG.g_LineNumber := 0;
186058 --
186059 --
186060
186061 FOR Idx IN 1..l_array_event_id.count LOOP
186062 --
186063 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
186064 --
186065 l_event_id := l_array_event_id(idx); -- 5648433
186066
186067 --
186068 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
186069 --
186070
186071 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
186072 (g_array_event(l_event_id).array_value_num('header_index'))
186073 ,'N'
186074 ) <> 'Y'
186075 THEN
186076 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
186077 trace
186078 (p_msg => 'Trancaction revesal option is not Y '
186079 ,p_level => C_LEVEL_STATEMENT
186080 ,p_module => l_log_module);
186081 END IF;
186082
186083 --
186084 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
186085 --
186086 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
186087 --
186088 -- set event info as cache for other routines to refer event attributes
186089 --
186090
186091 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
186092 l_previous_event_id := l_event_id;
186093
186094 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
186095 (p_application_id => p_application_id
186096 ,p_primary_ledger_id => p_primary_ledger_id
186097 ,p_base_ledger_id => p_base_ledger_id
186098 ,p_target_ledger_id => p_target_ledger_id
186099 ,p_entity_id => l_array_entity_id(Idx)
186100 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
186101 ,p_entity_code => l_array_entity_code(Idx)
186102 ,p_transaction_num => l_array_transaction_num(Idx)
186103 ,p_event_id => l_array_event_id(Idx)
186104 ,p_event_class_code => l_array_class_code(Idx)
186105 ,p_event_type_code => l_array_event_type(Idx)
186106 ,p_event_number => l_array_event_number(Idx)
186107 ,p_event_date => l_array_event_date(Idx)
186108 ,p_transaction_date => l_array_transaction_date(Idx)
186109 ,p_reference_num_1 => l_array_reference_num_1(Idx)
186110 ,p_reference_num_2 => l_array_reference_num_2(Idx)
186111 ,p_reference_num_3 => l_array_reference_num_3(Idx)
186112 ,p_reference_num_4 => l_array_reference_num_4(Idx)
186113 ,p_reference_char_1 => l_array_reference_char_1(Idx)
186114 ,p_reference_char_2 => l_array_reference_char_2(Idx)
186115 ,p_reference_char_3 => l_array_reference_char_3(Idx)
186116 ,p_reference_char_4 => l_array_reference_char_4(Idx)
186117 ,p_reference_date_1 => l_array_reference_date_1(Idx)
186118 ,p_reference_date_2 => l_array_reference_date_2(Idx)
186119 ,p_reference_date_3 => l_array_reference_date_3(Idx)
186120 ,p_reference_date_4 => l_array_reference_date_4(Idx)
186121 ,p_event_created_by => l_array_event_created_by(Idx)
186122 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
186123 --
186124 END IF;
186125
186126
186127
186128 --
186129 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
186130
186131 l_acct_reversal_source := SUBSTR(NULL, 1,30);
186132
186133 IF l_continue_with_lines THEN
186134 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
186135 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
186136
186137 xla_accounting_err_pkg.build_message
186138 (p_appli_s_name => 'XLA'
186139 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
186140 ,p_token_1 => 'LINE_NUMBER'
186141 ,p_value_1 => l_array_extract_line_num(Idx)
186142 ,p_token_2 => 'PRODUCT_NAME'
186143 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
186144 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
186145 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
186146 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
186147
186148 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
186149 --
186150 -- following sets the accounting attributes needed to reverse
186151 -- accounting for a distributeion
186152 --
186153
186154 --
186155 -- 5217187
186156 --
186157 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
186158 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
186159 g_array_event(l_event_id).array_value_num('header_index'));
186160 --
186161 --
186162
186163 -- No reversal code generated
186164
186165 xla_ae_lines_pkg.SetAcctReversalAttrs
186166 (p_event_id => l_event_id
186167 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
186168 ,p_calculate_acctd_flag => l_calculate_acctd_flag
186169 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
186170 END IF;
186171
186172 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
186173 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
186174
186175 --
186176 AcctLineType_30 (
186177 p_application_id => p_application_id
186178 ,p_event_id => l_event_id
186179 ,p_calculate_acctd_flag => l_calculate_acctd_flag
186180 ,p_calculate_g_l_flag => l_calculate_g_l_flag
186181 ,p_actual_flag => l_actual_flag
186182 ,p_balance_type_code => l_balance_type_code
186183 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
186184
186185 , p_source_4 => l_array_source_4(Idx)
186186 , p_source_11 => l_array_source_11(Idx)
186187 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
186188 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
186189 , p_source_15 => l_array_source_15(Idx)
186190 , p_source_18 => l_array_source_18(Idx)
186191 , p_source_19 => l_array_source_19(Idx)
186192 , p_source_20 => l_array_source_20(Idx)
186193 , p_source_21 => l_array_source_21(Idx)
186194 , p_source_22 => l_array_source_22(Idx)
186195 , p_source_24 => l_array_source_24(Idx)
186196 );
186197 If(l_balance_type_code = 'A') THEN
186198 l_actual_gain_loss_ref := l_gain_or_loss_ref;
186199 END IF;
186200
186201 --
186202
186203
186204 --
186205 AcctLineType_53 (
186206 p_application_id => p_application_id
186207 ,p_event_id => l_event_id
186208 ,p_calculate_acctd_flag => l_calculate_acctd_flag
186209 ,p_calculate_g_l_flag => l_calculate_g_l_flag
186210 ,p_actual_flag => l_actual_flag
186211 ,p_balance_type_code => l_balance_type_code
186212 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
186213
186214 , p_source_4 => l_array_source_4(Idx)
186215 , p_source_11 => l_array_source_11(Idx)
186216 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
186217 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
186218 , p_source_15 => l_array_source_15(Idx)
186219 , p_source_18 => l_array_source_18(Idx)
186220 , p_source_19 => l_array_source_19(Idx)
186221 , p_source_20 => l_array_source_20(Idx)
186222 , p_source_21 => l_array_source_21(Idx)
186223 , p_source_22 => l_array_source_22(Idx)
186224 , p_source_24 => l_array_source_24(Idx)
186225 );
186226 If(l_balance_type_code = 'A') THEN
186227 l_actual_gain_loss_ref := l_gain_or_loss_ref;
186228 END IF;
186229
186230 --
186231
186232
186233 --
186234 AcctLineType_66 (
186235 p_application_id => p_application_id
186236 ,p_event_id => l_event_id
186237 ,p_calculate_acctd_flag => l_calculate_acctd_flag
186238 ,p_calculate_g_l_flag => l_calculate_g_l_flag
186239 ,p_actual_flag => l_actual_flag
186240 ,p_balance_type_code => l_balance_type_code
186241 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
186242
186243 , p_source_4 => l_array_source_4(Idx)
186244 , p_source_11 => l_array_source_11(Idx)
186245 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
186246 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
186247 , p_source_15 => l_array_source_15(Idx)
186248 , p_source_18 => l_array_source_18(Idx)
186249 , p_source_19 => l_array_source_19(Idx)
186250 , p_source_20 => l_array_source_20(Idx)
186251 , p_source_21 => l_array_source_21(Idx)
186252 , p_source_22 => l_array_source_22(Idx)
186253 , p_source_24 => l_array_source_24(Idx)
186254 );
186255 If(l_balance_type_code = 'A') THEN
186256 l_actual_gain_loss_ref := l_gain_or_loss_ref;
186257 END IF;
186258
186259 --
186260
186261
186262 --
186263 AcctLineType_75 (
186264 p_application_id => p_application_id
186265 ,p_event_id => l_event_id
186266 ,p_calculate_acctd_flag => l_calculate_acctd_flag
186267 ,p_calculate_g_l_flag => l_calculate_g_l_flag
186268 ,p_actual_flag => l_actual_flag
186269 ,p_balance_type_code => l_balance_type_code
186270 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
186271
186272 , p_source_4 => l_array_source_4(Idx)
186273 , p_source_11 => l_array_source_11(Idx)
186274 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
186275 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
186276 , p_source_15 => l_array_source_15(Idx)
186277 , p_source_18 => l_array_source_18(Idx)
186278 , p_source_19 => l_array_source_19(Idx)
186279 , p_source_20 => l_array_source_20(Idx)
186280 , p_source_21 => l_array_source_21(Idx)
186281 , p_source_22 => l_array_source_22(Idx)
186282 , p_source_24 => l_array_source_24(Idx)
186283 );
186284 If(l_balance_type_code = 'A') THEN
186285 l_actual_gain_loss_ref := l_gain_or_loss_ref;
186286 END IF;
186287
186288 --
186289
186290
186291 --
186292 AcctLineType_123 (
186293 p_application_id => p_application_id
186294 ,p_event_id => l_event_id
186295 ,p_calculate_acctd_flag => l_calculate_acctd_flag
186296 ,p_calculate_g_l_flag => l_calculate_g_l_flag
186297 ,p_actual_flag => l_actual_flag
186298 ,p_balance_type_code => l_balance_type_code
186299 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
186300
186301 , p_source_4 => l_array_source_4(Idx)
186302 , p_source_11 => l_array_source_11(Idx)
186303 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
186304 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
186305 , p_source_15 => l_array_source_15(Idx)
186306 , p_source_18 => l_array_source_18(Idx)
186307 , p_source_19 => l_array_source_19(Idx)
186308 , p_source_20 => l_array_source_20(Idx)
186309 , p_source_21 => l_array_source_21(Idx)
186310 , p_source_22 => l_array_source_22(Idx)
186311 , p_source_24 => l_array_source_24(Idx)
186312 );
186313 If(l_balance_type_code = 'A') THEN
186314 l_actual_gain_loss_ref := l_gain_or_loss_ref;
186315 END IF;
186316
186317 --
186318
186319
186320 --
186321 AcctLineType_170 (
186322 p_application_id => p_application_id
186323 ,p_event_id => l_event_id
186324 ,p_calculate_acctd_flag => l_calculate_acctd_flag
186325 ,p_calculate_g_l_flag => l_calculate_g_l_flag
186326 ,p_actual_flag => l_actual_flag
186327 ,p_balance_type_code => l_balance_type_code
186328 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
186329
186330 , p_source_4 => l_array_source_4(Idx)
186331 , p_source_11 => l_array_source_11(Idx)
186332 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
186333 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
186334 , p_source_15 => l_array_source_15(Idx)
186335 , p_source_18 => l_array_source_18(Idx)
186336 , p_source_19 => l_array_source_19(Idx)
186337 , p_source_20 => l_array_source_20(Idx)
186338 , p_source_21 => l_array_source_21(Idx)
186339 , p_source_22 => l_array_source_22(Idx)
186340 , p_source_24 => l_array_source_24(Idx)
186341 );
186342 If(l_balance_type_code = 'A') THEN
186343 l_actual_gain_loss_ref := l_gain_or_loss_ref;
186344 END IF;
186345
186346 --
186347
186348
186349 --
186350 AcctLineType_175 (
186351 p_application_id => p_application_id
186352 ,p_event_id => l_event_id
186353 ,p_calculate_acctd_flag => l_calculate_acctd_flag
186354 ,p_calculate_g_l_flag => l_calculate_g_l_flag
186355 ,p_actual_flag => l_actual_flag
186356 ,p_balance_type_code => l_balance_type_code
186357 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
186358
186359 , p_source_4 => l_array_source_4(Idx)
186360 , p_source_11 => l_array_source_11(Idx)
186361 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
186362 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
186363 , p_source_15 => l_array_source_15(Idx)
186364 , p_source_18 => l_array_source_18(Idx)
186365 , p_source_19 => l_array_source_19(Idx)
186366 , p_source_20 => l_array_source_20(Idx)
186367 , p_source_21 => l_array_source_21(Idx)
186368 , p_source_22 => l_array_source_22(Idx)
186369 , p_source_24 => l_array_source_24(Idx)
186370 );
186371 If(l_balance_type_code = 'A') THEN
186372 l_actual_gain_loss_ref := l_gain_or_loss_ref;
186373 END IF;
186374
186375 --
186376
186377
186378 --
186379 AcctLineType_208 (
186380 p_application_id => p_application_id
186381 ,p_event_id => l_event_id
186382 ,p_calculate_acctd_flag => l_calculate_acctd_flag
186383 ,p_calculate_g_l_flag => l_calculate_g_l_flag
186384 ,p_actual_flag => l_actual_flag
186385 ,p_balance_type_code => l_balance_type_code
186386 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
186387
186388 , p_source_4 => l_array_source_4(Idx)
186389 , p_source_11 => l_array_source_11(Idx)
186390 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
186391 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
186392 , p_source_15 => l_array_source_15(Idx)
186393 , p_source_18 => l_array_source_18(Idx)
186394 , p_source_19 => l_array_source_19(Idx)
186395 , p_source_20 => l_array_source_20(Idx)
186396 , p_source_21 => l_array_source_21(Idx)
186397 , p_source_22 => l_array_source_22(Idx)
186398 , p_source_24 => l_array_source_24(Idx)
186399 );
186400 If(l_balance_type_code = 'A') THEN
186401 l_actual_gain_loss_ref := l_gain_or_loss_ref;
186402 END IF;
186403
186404 --
186405
186406
186407 --
186408 AcctLineType_213 (
186409 p_application_id => p_application_id
186410 ,p_event_id => l_event_id
186411 ,p_calculate_acctd_flag => l_calculate_acctd_flag
186412 ,p_calculate_g_l_flag => l_calculate_g_l_flag
186413 ,p_actual_flag => l_actual_flag
186414 ,p_balance_type_code => l_balance_type_code
186415 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
186416
186417 , p_source_4 => l_array_source_4(Idx)
186418 , p_source_11 => l_array_source_11(Idx)
186419 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
186420 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
186421 , p_source_15 => l_array_source_15(Idx)
186422 , p_source_18 => l_array_source_18(Idx)
186423 , p_source_19 => l_array_source_19(Idx)
186424 , p_source_20 => l_array_source_20(Idx)
186425 , p_source_21 => l_array_source_21(Idx)
186426 , p_source_22 => l_array_source_22(Idx)
186427 , p_source_24 => l_array_source_24(Idx)
186428 );
186429 If(l_balance_type_code = 'A') THEN
186430 l_actual_gain_loss_ref := l_gain_or_loss_ref;
186431 END IF;
186432
186433 --
186434
186435 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
186436 -- or secondary ledger that has different currency with primary
186437 -- or alc that is calculated by sla
186438 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
186439 (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'))
186440
186441 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
186442 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
186443 AND (l_actual_flag = 'A')) THEN
186444 XLA_AE_LINES_PKG.CreateGainOrLossLines(
186445 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
186446 ,p_application_id => p_application_id
186447 ,p_amb_context_code => 'DEFAULT'
186448 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
186449 ,p_event_class_code => C_EVENT_CLASS_CODE
186450 ,p_event_type_code => C_EVENT_TYPE_CODE
186451
186452 ,p_gain_ccid => -1
186453 ,p_loss_ccid => -1
186454
186455 ,p_actual_flag => l_actual_flag
186456 ,p_enc_flag => null
186457 ,p_actual_g_l_ref => l_actual_gain_loss_ref
186458 ,p_enc_g_l_ref => null
186459 );
186460 END IF;
186461 END IF;
186462 END IF;
186463
186464 ELSE
186465 --
186466 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
186467 --
186468 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
186469 trace
186470 (p_msg => 'Trancaction revesal option is Y'
186471 ,p_level => C_LEVEL_STATEMENT
186472 ,p_module => l_log_module);
186473 END IF;
186474 END IF;
186475
186476 END LOOP;
186477 l_result := XLA_AE_LINES_PKG.InsertLines ;
186478 end loop;
186479 close line_cur;
186480
186481
186482 --
186483 -- insert headers into xla_ae_headers_gt table
186484 --
186485 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
186486
186487 -- insert into errors table here.
186488
186489 END LOOP;
186490
186491 --
186492 -- 4865292
186493 --
186494 -- Compare g_hdr_extract_count with event count in
186495 -- CreateHeadersAndLines.
186496 --
186497 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
186498
186499 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
186500 trace (p_msg => '# rows extracted from header extract objects '
186501 || ' (running total): '
186502 || g_hdr_extract_count
186503 ,p_level => C_LEVEL_STATEMENT
186504 ,p_module => l_log_module);
186505 END IF;
186506
186507 CLOSE header_cur;
186508 --
186509
186510 --
186511 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
186512 trace
186513 (p_msg => 'END of EventType_285'
186514 ,p_level => C_LEVEL_PROCEDURE
186515 ,p_module => l_log_module);
186516 END IF;
186517 --
186518 RETURN l_result;
186519 EXCEPTION
186520 WHEN xla_exceptions_pkg.application_exception THEN
186521
186522 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
186523
186524
186525 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
186526
186527 RAISE;
186528
186529 WHEN NO_DATA_FOUND THEN
186530
186531 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
186532 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
186533
186534 FOR header_record IN header_cur
186535 LOOP
186536 l_array_header_events(header_record.event_id) := header_record.event_id;
186537 END LOOP;
186538
186539 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
186540 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
186541
186542 fnd_file.put_line(fnd_file.LOG, ' ');
186543 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
186544 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
186545 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
186546
186547 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
186548 LOOP
186549 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
186550 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
186551 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
186552 END IF;
186553 END LOOP;
186554
186555 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
186556 fnd_file.put_line(fnd_file.LOG, ' ');
186557
186558
186559 xla_exceptions_pkg.raise_message
186560 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventType_285');
186561
186562
186563 WHEN OTHERS THEN
186564 xla_exceptions_pkg.raise_message
186565 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventType_285');
186566 END EventType_285;
186567 --
186568
186569 ---------------------------------------
186570 --
186571 -- PRIVATE PROCEDURE
186572 -- insert_sources_286
186573 --
186574 ----------------------------------------
186575 --
186576 PROCEDURE insert_sources_286(
186577 p_target_ledger_id IN NUMBER
186578 , p_language IN VARCHAR2
186579 , p_sla_ledger_id IN NUMBER
186580 , p_pad_start_date IN DATE
186581 , p_pad_end_date IN DATE
186582 )
186583 IS
186584
186585 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'UFOB_SHIP_SENDER_SHIP_NO_TP';
186586 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'USER_DEFINE';
186587 p_apps_owner VARCHAR2(30);
186588 l_log_module VARCHAR2(240);
186589 BEGIN
186590 IF g_log_enabled THEN
186591 l_log_module := C_DEFAULT_MODULE||'.insert_sources_286';
186592 END IF;
186593 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
186594
186595 trace
186596 (p_msg => 'BEGIN of insert_sources_286'
186597 ,p_level => C_LEVEL_PROCEDURE
186598 ,p_module => l_log_module);
186599
186600 END IF;
186601
186602 -- select APPS owner
186603 SELECT oracle_username
186604 INTO p_apps_owner
186605 FROM fnd_oracle_userid
186606 WHERE read_only_flag = 'U'
186607 ;
186608
186609 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
186610 trace
186611 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
186612 ' - p_language = '||p_language||
186613 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
186614 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
186615 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
186616 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
186617 ,p_level => C_LEVEL_STATEMENT
186618 ,p_module => l_log_module);
186619 END IF;
186620
186621
186622 --
186623 INSERT INTO xla_diag_sources --hdr1
186624 (
186625 event_id
186626 , ledger_id
186627 , sla_ledger_id
186628 , description_language
186629 , object_name
186630 , object_type_code
186631 , line_number
186632 , source_application_id
186633 , source_type_code
186634 , source_code
186635 , source_value
186636 , source_meaning
186637 , created_by
186638 , creation_date
186639 , last_update_date
186640 , last_updated_by
186641 , last_update_login
186642 , program_update_date
186643 , program_application_id
186644 , program_id
186645 , request_id
186646 )
186647 SELECT
186648 event_id
186649 , p_target_ledger_id
186650 , p_sla_ledger_id
186651 , p_language
186652 , object_name
186653 , object_type_code
186654 , line_number
186655 , source_application_id
186656 , source_type_code
186657 , source_code
186658 , SUBSTR(source_value ,1,1996)
186659 , SUBSTR(source_meaning,1,200)
186660 , xla_environment_pkg.g_Usr_Id
186661 , TRUNC(SYSDATE)
186662 , TRUNC(SYSDATE)
186663 , xla_environment_pkg.g_Usr_Id
186664 , xla_environment_pkg.g_Login_Id
186665 , TRUNC(SYSDATE)
186666 , xla_environment_pkg.g_Prog_Appl_Id
186667 , xla_environment_pkg.g_Prog_Id
186668 , xla_environment_pkg.g_Req_Id
186669 FROM (
186670 SELECT xet.event_id event_id
186671 , 0 line_number
186672 , CASE r
186673 WHEN 1 THEN 'CST_XLA_INV_HEADERS_V'
186674 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V'
186675
186676 ELSE null
186677 END object_name
186678 , CASE r
186679 WHEN 1 THEN 'HEADER'
186680 WHEN 2 THEN 'HEADER'
186681
186682 ELSE null
186683 END object_type_code
186684 , CASE r
186685 WHEN 1 THEN '707'
186686 WHEN 2 THEN '707'
186687
186688 ELSE null
186689 END source_application_id
186690 , 'S' source_type_code
186691 , CASE r
186692 WHEN 1 THEN 'DISTRIBUTION_TYPE'
186693 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR'
186694
186695 ELSE null
186696 END source_code
186697 , CASE r
186698 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
186699 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
186700
186701 ELSE null
186702 END source_value
186703 , CASE r
186704 WHEN 1 THEN fvl12.meaning
186705 WHEN 2 THEN fvl38.meaning
186706
186707 ELSE null
186708 END source_meaning
186709 FROM xla_events_gt xet
186710 , CST_XLA_INV_HEADERS_V h1
186711 , fnd_lookup_values fvl12
186712 , fnd_lookup_values fvl38
186713 ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
186714 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
186715 AND xet.event_type_code = C_EVENT_TYPE_CODE
186716 AND h1.event_id = xet.event_id
186717 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
186718 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
186719 AND fvl12.view_application_id(+) = 700
186720 AND fvl12.language(+) = USERENV('LANG')
186721 AND fvl38.lookup_type(+) = 'YES_NO'
186722 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
186723 AND fvl38.view_application_id(+) = 0
186724 AND fvl38.language(+) = USERENV('LANG')
186725
186726 )
186727 ;
186728 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
186729
186730 trace
186731 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
186732 ,p_level => C_LEVEL_STATEMENT
186733 ,p_module => l_log_module);
186734
186735 END IF;
186736 --
186737
186738
186739
186740 --
186741 INSERT INTO xla_diag_sources --line1
186742 (
186743 event_id
186744 , ledger_id
186745 , sla_ledger_id
186746 , description_language
186747 , object_name
186748 , object_type_code
186749 , line_number
186750 , source_application_id
186751 , source_type_code
186752 , source_code
186753 , source_value
186754 , source_meaning
186755 , created_by
186756 , creation_date
186757 , last_update_date
186758 , last_updated_by
186759 , last_update_login
186760 , program_update_date
186761 , program_application_id
186762 , program_id
186763 , request_id
186764 )
186765 SELECT event_id
186766 , p_target_ledger_id
186767 , p_sla_ledger_id
186768 , p_language
186769 , object_name
186770 , object_type_code
186771 , line_number
186772 , source_application_id
186773 , source_type_code
186774 , source_code
186775 , SUBSTR(source_value,1,1996)
186776 , SUBSTR(source_meaning,1,200)
186777 , xla_environment_pkg.g_Usr_Id
186778 , TRUNC(SYSDATE)
186779 , TRUNC(SYSDATE)
186780 , xla_environment_pkg.g_Usr_Id
186781 , xla_environment_pkg.g_Login_Id
186782 , TRUNC(SYSDATE)
186783 , xla_environment_pkg.g_Prog_Appl_Id
186784 , xla_environment_pkg.g_Prog_Id
186785 , xla_environment_pkg.g_Req_Id
186786 FROM (
186787 SELECT xet.event_id event_id
186788 , l2.line_number line_number
186789 , CASE r
186790 WHEN 1 THEN 'CST_XLA_INV_LINES_V'
186791 WHEN 2 THEN 'CST_XLA_INV_LINES_V'
186792 WHEN 3 THEN 'CST_XLA_INV_LINES_V'
186793 WHEN 4 THEN 'CST_XLA_INV_LINES_V'
186794 WHEN 5 THEN 'CST_XLA_INV_LINES_V'
186795 WHEN 6 THEN 'CST_XLA_INV_LINES_V'
186796 WHEN 7 THEN 'CST_XLA_INV_LINES_V'
186797 WHEN 8 THEN 'CST_XLA_INV_LINES_V'
186798 WHEN 9 THEN 'CST_XLA_INV_LINES_V'
186799
186800 ELSE null
186801 END object_name
186802 , CASE r
186803 WHEN 1 THEN 'LINE'
186804 WHEN 2 THEN 'LINE'
186805 WHEN 3 THEN 'LINE'
186806 WHEN 4 THEN 'LINE'
186807 WHEN 5 THEN 'LINE'
186808 WHEN 6 THEN 'LINE'
186809 WHEN 7 THEN 'LINE'
186810 WHEN 8 THEN 'LINE'
186811 WHEN 9 THEN 'LINE'
186812
186813 ELSE null
186814 END object_type_code
186815 , CASE r
186816 WHEN 1 THEN '707'
186817 WHEN 2 THEN '707'
186818 WHEN 3 THEN '707'
186819 WHEN 4 THEN '707'
186820 WHEN 5 THEN '707'
186821 WHEN 6 THEN '707'
186822 WHEN 7 THEN '707'
186823 WHEN 8 THEN '707'
186824 WHEN 9 THEN '707'
186825
186826 ELSE null
186827 END source_application_id
186828 , 'S' source_type_code
186829 , CASE r
186830 WHEN 1 THEN 'CODE_COMBINATION_ID'
186831 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER'
186832 WHEN 3 THEN 'CURRENCY_CODE'
186833 WHEN 4 THEN 'ENTERED_AMOUNT'
186834 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE'
186835 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE'
186836 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE'
186837 WHEN 8 THEN 'ACCOUNTED_AMOUNT'
186838 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE'
186839
186840 ELSE null
186841 END source_code
186842 , CASE r
186843 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
186844 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
186845 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
186846 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
186847 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
186848 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
186849 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
186850 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
186851 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
186852
186853 ELSE null
186854 END source_value
186855 , null source_meaning
186856 FROM xla_events_gt xet
186857 , CST_XLA_INV_LINES_V l2
186858 ,(select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
186859 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
186860 AND xet.event_type_code = C_EVENT_TYPE_CODE
186861 AND l2.event_id = xet.event_id
186862
186863 )
186864 ;
186865 --
186866 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
186867
186868 trace
186869 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
186870 ,p_level => C_LEVEL_STATEMENT
186871 ,p_module => l_log_module);
186872
186873 END IF;
186874
186875
186876 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
186877 trace
186878 (p_msg => 'END of insert_sources_286'
186879 ,p_level => C_LEVEL_PROCEDURE
186880 ,p_module => l_log_module);
186881 END IF;
186882 EXCEPTION
186883 WHEN xla_exceptions_pkg.application_exception THEN
186884 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
186885 trace
186886 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
186887 ,p_level => C_LEVEL_EXCEPTION
186888 ,p_module => l_log_module);
186889 END IF;
186890 RAISE;
186891 WHEN OTHERS THEN
186892 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
186893 trace
186894 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
186895 ,p_level => C_LEVEL_EXCEPTION
186896 ,p_module => l_log_module);
186897 END IF;
186898 xla_exceptions_pkg.raise_message
186899 (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_286');
186900 END insert_sources_286;
186901 --
186902
186903 ---------------------------------------
186904 --
186905 -- PRIVATE FUNCTION
186906 -- EventType_286
186907 --
186908 ----------------------------------------
186909 --
186910 FUNCTION EventType_286
186911 (p_application_id IN NUMBER
186912 ,p_base_ledger_id IN NUMBER
186913 ,p_target_ledger_id IN NUMBER
186914 ,p_language IN VARCHAR2
186915 ,p_currency_code IN VARCHAR2
186916 ,p_sla_ledger_id IN NUMBER
186917 ,p_pad_start_date IN DATE
186918 ,p_pad_end_date IN DATE
186919 ,p_primary_ledger_id IN NUMBER)
186920 RETURN BOOLEAN IS
186921 --
186922 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'UFOB_SHIP_SENDER_SHIP_NO_TP';
186923 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'USER_DEFINE';
186924
186925 l_calculate_acctd_flag VARCHAR2(1) :='Y';
186926 l_calculate_g_l_flag VARCHAR2(1) :='Y';
186927 --
186928 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
186929 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
186930 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
186931 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
186932 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
186933 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
186934 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
186935 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
186936 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
186937 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
186938 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
186939 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
186940 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
186941 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
186942 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
186943 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
186944 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
186945 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
186946 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
186947 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
186948 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
186949 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
186950 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
186951 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
186952 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
186953 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
186954
186955 l_event_id NUMBER;
186956 l_previous_event_id NUMBER;
186957 l_first_event_id NUMBER;
186958 l_last_event_id NUMBER;
186959
186960 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
186961 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
186962 --
186963 --
186964 l_result BOOLEAN := TRUE;
186965 l_rows NUMBER := 1000;
186966 l_event_type_name VARCHAR2(80) := 'User-defined Sender Intransit Shipment - No Transfer Price - FOB Shipment';
186967 l_event_class_name VARCHAR2(80) := 'User Defined Inventory Transaction Class';
186968 l_description VARCHAR2(4000);
186969 l_transaction_reversal NUMBER;
186970 l_ae_header_id NUMBER;
186971 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
186972 l_log_module VARCHAR2(240);
186973 --
186974 l_acct_reversal_source VARCHAR2(30);
186975 l_trx_reversal_source VARCHAR2(30);
186976
186977 l_continue_with_lines BOOLEAN := TRUE;
186978 --
186979 l_acc_rev_gl_date_source DATE; -- 4262811
186980 --
186981 type t_array_event_id is table of number index by binary_integer;
186982
186983 l_rec_array_event t_rec_array_event;
186984 l_null_rec_array_event t_rec_array_event;
186985 l_array_ae_header_id xla_number_array_type;
186986 l_actual_flag VARCHAR2(1) := NULL;
186987 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
186988 l_balance_type_code VARCHAR2(1) :=NULL;
186989 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
186990
186991 --
186992 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
186993 --
186994
186995 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
186996 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
186997
186998 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
186999 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
187000 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
187001 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
187002 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
187003 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
187004 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
187005 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
187006 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
187007
187008 l_array_source_12 t_array_source_12;
187009 l_array_source_12_meaning t_array_lookup_meaning;
187010 l_array_source_38 t_array_source_38;
187011 l_array_source_38_meaning t_array_lookup_meaning;
187012
187013 l_array_source_4 t_array_source_4;
187014 l_array_source_11 t_array_source_11;
187015 l_array_source_15 t_array_source_15;
187016 l_array_source_18 t_array_source_18;
187017 l_array_source_19 t_array_source_19;
187018 l_array_source_20 t_array_source_20;
187019 l_array_source_21 t_array_source_21;
187020 l_array_source_22 t_array_source_22;
187021 l_array_source_24 t_array_source_24;
187022
187023 --
187024 CURSOR header_cur
187025 IS
187026 SELECT /*+ leading(xet) cardinality(xet,1) */
187027 -- Event Type Code: UFOB_SHIP_SENDER_SHIP_NO_TP
187028 -- Event Class Code: USER_DEFINE
187029 xet.entity_id
187030 , xet.legal_entity_id
187031 , xet.entity_code
187032 , xet.transaction_number
187033 , xet.event_id
187034 , xet.event_class_code
187035 , xet.event_type_code
187036 , xet.event_number
187037 , xet.event_date
187038 , xet.transaction_date
187039 , xet.reference_num_1
187040 , xet.reference_num_2
187041 , xet.reference_num_3
187042 , xet.reference_num_4
187043 , xet.reference_char_1
187044 , xet.reference_char_2
187045 , xet.reference_char_3
187046 , xet.reference_char_4
187047 , xet.reference_date_1
187048 , xet.reference_date_2
187049 , xet.reference_date_3
187050 , xet.reference_date_4
187051 , xet.event_created_by
187052 , xet.budgetary_control_flag
187053 , h1.DISTRIBUTION_TYPE source_12
187054 , fvl12.meaning source_12_meaning
187055 , h1.TRANSFER_TO_GL_INDICATOR source_38
187056 , fvl38.meaning source_38_meaning
187057 FROM xla_events_gt xet
187058 , CST_XLA_INV_HEADERS_V h1
187059 , fnd_lookup_values fvl12
187060 , fnd_lookup_values fvl38
187061 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
187062 and xet.event_type_code = C_EVENT_TYPE_CODE
187063 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
187064 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
187065 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
187066 AND fvl12.view_application_id(+) = 700
187067 AND fvl12.language(+) = USERENV('LANG')
187068 AND fvl38.lookup_type(+) = 'YES_NO'
187069 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
187070 AND fvl38.view_application_id(+) = 0
187071 AND fvl38.language(+) = USERENV('LANG')
187072
187073 ORDER BY event_id
187074 ;
187075
187076
187077 --
187078 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
187079 IS
187080 SELECT /*+ leading(xet) cardinality(xet,1) */
187081 -- Event Type Code: UFOB_SHIP_SENDER_SHIP_NO_TP
187082 -- Event Class Code: USER_DEFINE
187083 xet.entity_id
187084 ,xet.legal_entity_id
187085 ,xet.entity_code
187086 ,xet.transaction_number
187087 ,xet.event_id
187088 ,xet.event_class_code
187089 ,xet.event_type_code
187090 ,xet.event_number
187091 ,xet.event_date
187092 ,xet.transaction_date
187093 ,xet.reference_num_1
187094 ,xet.reference_num_2
187095 ,xet.reference_num_3
187096 ,xet.reference_num_4
187097 ,xet.reference_char_1
187098 ,xet.reference_char_2
187099 ,xet.reference_char_3
187100 ,xet.reference_char_4
187101 ,xet.reference_date_1
187102 ,xet.reference_date_2
187103 ,xet.reference_date_3
187104 ,xet.reference_date_4
187105 ,xet.event_created_by
187106 ,xet.budgetary_control_flag , l2.LINE_NUMBER
187107 , l2.CODE_COMBINATION_ID source_4
187108 , l2.DISTRIBUTION_IDENTIFIER source_11
187109 , l2.CURRENCY_CODE source_15
187110 , l2.ENTERED_AMOUNT source_18
187111 , l2.CURRENCY_CONVERSION_DATE source_19
187112 , l2.CURRENCY_CONVERSION_RATE source_20
187113 , l2.CURRENCY_CONVERSION_TYPE source_21
187114 , l2.ACCOUNTED_AMOUNT source_22
187115 , l2.ACCOUNTING_LINE_TYPE_CODE source_24
187116 FROM xla_events_gt xet
187117 , CST_XLA_INV_LINES_V l2
187118 WHERE xet.event_id between x_first_event_id and x_last_event_id
187119 and xet.event_date between p_pad_start_date and p_pad_end_date
187120 and xet.event_type_code = C_EVENT_TYPE_CODE
187121 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
187122 ;
187123
187124 --
187125 BEGIN
187126 IF g_log_enabled THEN
187127 l_log_module := C_DEFAULT_MODULE||'.EventType_286';
187128 END IF;
187129 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
187130 trace
187131 (p_msg => 'BEGIN of EventType_286'
187132 ,p_level => C_LEVEL_PROCEDURE
187133 ,p_module => l_log_module);
187134 END IF;
187135
187136 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
187137 trace
187138 (p_msg => 'p_application_id = '||p_application_id||
187139 ' - p_base_ledger_id = '||p_base_ledger_id||
187140 ' - p_target_ledger_id = '||p_target_ledger_id||
187141 ' - p_language = '||p_language||
187142 ' - p_currency_code = '||p_currency_code||
187143 ' - p_sla_ledger_id = '||p_sla_ledger_id
187144 ,p_level => C_LEVEL_STATEMENT
187145 ,p_module => l_log_module);
187146 END IF;
187147 --
187148 -- initialze arrays
187149 --
187150 g_array_event.DELETE;
187151 l_rec_array_event := l_null_rec_array_event;
187152 --
187153 --------------------------------------
187154 -- 4262811 Initialze MPA Line Number
187155 --------------------------------------
187156 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
187157
187158 --
187159
187160 --
187161 OPEN header_cur;
187162 --
187163 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
187164 trace
187165 (p_msg => 'SQL - FETCH header_cur'
187166 ,p_level => C_LEVEL_STATEMENT
187167 ,p_module => l_log_module);
187168 END IF;
187169 --
187170 LOOP
187171 FETCH header_cur BULK COLLECT INTO
187172 l_array_entity_id
187173 , l_array_legal_entity_id
187174 , l_array_entity_code
187175 , l_array_transaction_num
187176 , l_array_event_id
187177 , l_array_class_code
187178 , l_array_event_type
187179 , l_array_event_number
187180 , l_array_event_date
187181 , l_array_transaction_date
187182 , l_array_reference_num_1
187183 , l_array_reference_num_2
187184 , l_array_reference_num_3
187185 , l_array_reference_num_4
187186 , l_array_reference_char_1
187187 , l_array_reference_char_2
187188 , l_array_reference_char_3
187189 , l_array_reference_char_4
187190 , l_array_reference_date_1
187191 , l_array_reference_date_2
187192 , l_array_reference_date_3
187193 , l_array_reference_date_4
187194 , l_array_event_created_by
187195 , l_array_budgetary_control_flag
187196 , l_array_source_12
187197 , l_array_source_12_meaning
187198 , l_array_source_38
187199 , l_array_source_38_meaning
187200 LIMIT l_rows;
187201 --
187202 IF (C_LEVEL_EVENT >= g_log_level) THEN
187203 trace
187204 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
187205 ,p_level => C_LEVEL_EVENT
187206 ,p_module => l_log_module);
187207 END IF;
187208 --
187209 EXIT WHEN l_array_entity_id.COUNT = 0;
187210
187211 -- initialize arrays
187212 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
187213 XLA_AE_LINES_PKG.g_rec_lines := NULL;
187214
187215 --
187216 -- Bug 4458708
187217 --
187218 XLA_AE_LINES_PKG.g_LineNumber := 0;
187219
187220
187221 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
187222 g_last_hdr_idx := l_array_event_id.LAST;
187223 --
187224 -- loop for the headers. Each iteration is for each header extract row
187225 -- fetched in header cursor
187226 --
187227 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
187228
187229 --
187230 -- set event info as cache for other routines to refer event attributes
187231 --
187232 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
187233 (p_application_id => p_application_id
187234 ,p_primary_ledger_id => p_primary_ledger_id
187235 ,p_base_ledger_id => p_base_ledger_id
187236 ,p_target_ledger_id => p_target_ledger_id
187237 ,p_entity_id => l_array_entity_id(hdr_idx)
187238 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
187239 ,p_entity_code => l_array_entity_code(hdr_idx)
187240 ,p_transaction_num => l_array_transaction_num(hdr_idx)
187241 ,p_event_id => l_array_event_id(hdr_idx)
187242 ,p_event_class_code => l_array_class_code(hdr_idx)
187243 ,p_event_type_code => l_array_event_type(hdr_idx)
187244 ,p_event_number => l_array_event_number(hdr_idx)
187245 ,p_event_date => l_array_event_date(hdr_idx)
187246 ,p_transaction_date => l_array_transaction_date(hdr_idx)
187247 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
187248 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
187249 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
187250 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
187251 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
187252 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
187253 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
187254 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
187255 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
187256 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
187257 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
187258 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
187259 ,p_event_created_by => l_array_event_created_by(hdr_idx)
187260 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
187261
187262 --
187263 -- set the status of entry to C_VALID (0)
187264 --
187265 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
187266
187267 --
187268 -- initialize a row for ae header
187269 --
187270 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
187271
187272 l_event_id := l_array_event_id(hdr_idx);
187273
187274 --
187275 -- storing the hdr_idx for event. May be used by line cursor.
187276 --
187277 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
187278
187279 --
187280 -- store sources from header extract. This can be improved to
187281 -- store only those sources from header extract that may be used in lines
187282 --
187283
187284 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
187285 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
187286 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
187287 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
187288
187289 --
187290 -- initilaize the status of ae headers for diffrent balance types
187291 -- the status is initialised to C_NOT_CREATED (2)
187292 --
187293 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
187294 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
187295 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
187296
187297 --
187298 -- call api to validate and store accounting attributes for header
187299 --
187300
187301 ------------------------------------------------------------
187302 -- Accrual Reversal : to get date for Standard Source (NONE)
187303 ------------------------------------------------------------
187304 l_acc_rev_gl_date_source := NULL;
187305
187306 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
187307 l_rec_acct_attrs.array_date_value(1) :=
187308 xla_ae_sources_pkg.GetSystemSourceDate(
187309 p_source_code => 'XLA_REFERENCE_DATE_1'
187310 , p_source_type_code => 'Y'
187311 , p_source_application_id => 602
187312 );
187313 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_TRANSFER_FLAG';
187314 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
187315
187316
187317 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
187318
187319 XLA_AE_HEADER_PKG.SetJeCategoryName;
187320
187321 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
187322 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
187323 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
187324 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
187325 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
187326
187327
187328 -- No header level analytical criteria
187329
187330 --
187331 --accounting attribute enhancement, bug 3612931
187332 --
187333 l_trx_reversal_source := SUBSTR(NULL, 1,30);
187334
187335 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
187336 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
187337
187338 xla_accounting_err_pkg.build_message
187339 (p_appli_s_name => 'XLA'
187340 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
187341 ,p_token_1 => 'ACCT_ATTR_NAME'
187342 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
187343 ,p_token_2 => 'PRODUCT_NAME'
187344 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
187345 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
187346 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
187347 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
187348
187349 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
187350 --
187351 -- following sets the accounting attributes needed to reverse
187352 -- accounting for a distributeion
187353 --
187354 xla_ae_lines_pkg.SetTrxReversalAttrs
187355 (p_event_id => l_event_id
187356 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
187357 ,p_trx_reversal_source => l_trx_reversal_source);
187358
187359 END IF;
187360
187361
187362 ----------------------------------------------------------------
187363 -- 4262811 - update the header statuses to invalid in need be
187364 ----------------------------------------------------------------
187365 --
187366 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
187367
187368
187369 -----------------------------------------------
187370 -- No accrual reversal for the event class/type
187371 -----------------------------------------------
187372 ----------------------------------------------------------------
187373
187374 --
187375 -- this ends the header loop iteration for one bulk fetch
187376 --
187377 END LOOP;
187378
187379 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
187380 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
187381
187382 --
187383 -- insert dummy rows into lines gt table that were created due to
187384 -- transaction reversals
187385 --
187386 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
187387 l_result := XLA_AE_LINES_PKG.InsertLines;
187388 END IF;
187389
187390 --
187391 -- reset the temp_line_num for each set of events fetched from header
187392 -- cursor rather than doing it for each new event in line cursor
187393 -- Bug 3939231
187394 --
187395 xla_ae_lines_pkg.g_temp_line_num := 0;
187396
187397
187398
187399 --
187400 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
187401 --
187402 --
187403 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
187404
187405 trace
187406 (p_msg => 'SQL - FETCH line_cur'
187407 ,p_level => C_LEVEL_STATEMENT
187408 ,p_module => l_log_module);
187409
187410 END IF;
187411 --
187412 --
187413 LOOP
187414 --
187415 FETCH line_cur BULK COLLECT INTO
187416 l_array_entity_id
187417 , l_array_legal_entity_id
187418 , l_array_entity_code
187419 , l_array_transaction_num
187420 , l_array_event_id
187421 , l_array_class_code
187422 , l_array_event_type
187423 , l_array_event_number
187424 , l_array_event_date
187425 , l_array_transaction_date
187426 , l_array_reference_num_1
187427 , l_array_reference_num_2
187428 , l_array_reference_num_3
187429 , l_array_reference_num_4
187430 , l_array_reference_char_1
187431 , l_array_reference_char_2
187432 , l_array_reference_char_3
187433 , l_array_reference_char_4
187434 , l_array_reference_date_1
187435 , l_array_reference_date_2
187436 , l_array_reference_date_3
187437 , l_array_reference_date_4
187438 , l_array_event_created_by
187439 , l_array_budgetary_control_flag
187440 , l_array_extract_line_num
187441 , l_array_source_4
187442 , l_array_source_11
187443 , l_array_source_15
187444 , l_array_source_18
187445 , l_array_source_19
187446 , l_array_source_20
187447 , l_array_source_21
187448 , l_array_source_22
187449 , l_array_source_24
187450 LIMIT l_rows;
187451
187452 --
187453 IF (C_LEVEL_EVENT >= g_log_level) THEN
187454 trace
187455 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
187456 ,p_level => C_LEVEL_EVENT
187457 ,p_module => l_log_module);
187458 END IF;
187459 --
187460 EXIT WHEN l_array_entity_id.count = 0;
187461
187462 XLA_AE_LINES_PKG.g_rec_lines := null;
187463
187464 --
187465 -- Bug 4458708
187466 --
187467 XLA_AE_LINES_PKG.g_LineNumber := 0;
187468 --
187469 --
187470
187471 FOR Idx IN 1..l_array_event_id.count LOOP
187472 --
187473 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
187474 --
187475 l_event_id := l_array_event_id(idx); -- 5648433
187476
187477 --
187478 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
187479 --
187480
187481 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
187482 (g_array_event(l_event_id).array_value_num('header_index'))
187483 ,'N'
187484 ) <> 'Y'
187485 THEN
187486 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
187487 trace
187488 (p_msg => 'Trancaction revesal option is not Y '
187489 ,p_level => C_LEVEL_STATEMENT
187490 ,p_module => l_log_module);
187491 END IF;
187492
187493 --
187494 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
187495 --
187496 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
187497 --
187498 -- set event info as cache for other routines to refer event attributes
187499 --
187500
187501 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
187502 l_previous_event_id := l_event_id;
187503
187504 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
187505 (p_application_id => p_application_id
187506 ,p_primary_ledger_id => p_primary_ledger_id
187507 ,p_base_ledger_id => p_base_ledger_id
187508 ,p_target_ledger_id => p_target_ledger_id
187509 ,p_entity_id => l_array_entity_id(Idx)
187510 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
187511 ,p_entity_code => l_array_entity_code(Idx)
187512 ,p_transaction_num => l_array_transaction_num(Idx)
187513 ,p_event_id => l_array_event_id(Idx)
187514 ,p_event_class_code => l_array_class_code(Idx)
187515 ,p_event_type_code => l_array_event_type(Idx)
187516 ,p_event_number => l_array_event_number(Idx)
187517 ,p_event_date => l_array_event_date(Idx)
187518 ,p_transaction_date => l_array_transaction_date(Idx)
187519 ,p_reference_num_1 => l_array_reference_num_1(Idx)
187520 ,p_reference_num_2 => l_array_reference_num_2(Idx)
187521 ,p_reference_num_3 => l_array_reference_num_3(Idx)
187522 ,p_reference_num_4 => l_array_reference_num_4(Idx)
187523 ,p_reference_char_1 => l_array_reference_char_1(Idx)
187524 ,p_reference_char_2 => l_array_reference_char_2(Idx)
187525 ,p_reference_char_3 => l_array_reference_char_3(Idx)
187526 ,p_reference_char_4 => l_array_reference_char_4(Idx)
187527 ,p_reference_date_1 => l_array_reference_date_1(Idx)
187528 ,p_reference_date_2 => l_array_reference_date_2(Idx)
187529 ,p_reference_date_3 => l_array_reference_date_3(Idx)
187530 ,p_reference_date_4 => l_array_reference_date_4(Idx)
187531 ,p_event_created_by => l_array_event_created_by(Idx)
187532 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
187533 --
187534 END IF;
187535
187536
187537
187538 --
187539 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
187540
187541 l_acct_reversal_source := SUBSTR(NULL, 1,30);
187542
187543 IF l_continue_with_lines THEN
187544 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
187545 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
187546
187547 xla_accounting_err_pkg.build_message
187548 (p_appli_s_name => 'XLA'
187549 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
187550 ,p_token_1 => 'LINE_NUMBER'
187551 ,p_value_1 => l_array_extract_line_num(Idx)
187552 ,p_token_2 => 'PRODUCT_NAME'
187553 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
187554 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
187555 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
187556 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
187557
187558 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
187559 --
187560 -- following sets the accounting attributes needed to reverse
187561 -- accounting for a distributeion
187562 --
187563
187564 --
187565 -- 5217187
187566 --
187567 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
187568 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
187569 g_array_event(l_event_id).array_value_num('header_index'));
187570 --
187571 --
187572
187573 -- No reversal code generated
187574
187575 xla_ae_lines_pkg.SetAcctReversalAttrs
187576 (p_event_id => l_event_id
187577 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
187578 ,p_calculate_acctd_flag => l_calculate_acctd_flag
187579 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
187580 END IF;
187581
187582 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
187583 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
187584
187585 --
187586 AcctLineType_19 (
187587 p_application_id => p_application_id
187588 ,p_event_id => l_event_id
187589 ,p_calculate_acctd_flag => l_calculate_acctd_flag
187590 ,p_calculate_g_l_flag => l_calculate_g_l_flag
187591 ,p_actual_flag => l_actual_flag
187592 ,p_balance_type_code => l_balance_type_code
187593 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
187594
187595 , p_source_4 => l_array_source_4(Idx)
187596 , p_source_11 => l_array_source_11(Idx)
187597 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
187598 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
187599 , p_source_15 => l_array_source_15(Idx)
187600 , p_source_18 => l_array_source_18(Idx)
187601 , p_source_19 => l_array_source_19(Idx)
187602 , p_source_20 => l_array_source_20(Idx)
187603 , p_source_21 => l_array_source_21(Idx)
187604 , p_source_22 => l_array_source_22(Idx)
187605 , p_source_24 => l_array_source_24(Idx)
187606 );
187607 If(l_balance_type_code = 'A') THEN
187608 l_actual_gain_loss_ref := l_gain_or_loss_ref;
187609 END IF;
187610
187611 --
187612
187613
187614 --
187615 AcctLineType_90 (
187616 p_application_id => p_application_id
187617 ,p_event_id => l_event_id
187618 ,p_calculate_acctd_flag => l_calculate_acctd_flag
187619 ,p_calculate_g_l_flag => l_calculate_g_l_flag
187620 ,p_actual_flag => l_actual_flag
187621 ,p_balance_type_code => l_balance_type_code
187622 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
187623
187624 , p_source_4 => l_array_source_4(Idx)
187625 , p_source_11 => l_array_source_11(Idx)
187626 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
187627 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
187628 , p_source_15 => l_array_source_15(Idx)
187629 , p_source_18 => l_array_source_18(Idx)
187630 , p_source_19 => l_array_source_19(Idx)
187631 , p_source_20 => l_array_source_20(Idx)
187632 , p_source_21 => l_array_source_21(Idx)
187633 , p_source_22 => l_array_source_22(Idx)
187634 , p_source_24 => l_array_source_24(Idx)
187635 );
187636 If(l_balance_type_code = 'A') THEN
187637 l_actual_gain_loss_ref := l_gain_or_loss_ref;
187638 END IF;
187639
187640 --
187641
187642
187643 --
187644 AcctLineType_99 (
187645 p_application_id => p_application_id
187646 ,p_event_id => l_event_id
187647 ,p_calculate_acctd_flag => l_calculate_acctd_flag
187648 ,p_calculate_g_l_flag => l_calculate_g_l_flag
187649 ,p_actual_flag => l_actual_flag
187650 ,p_balance_type_code => l_balance_type_code
187651 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
187652
187653 , p_source_4 => l_array_source_4(Idx)
187654 , p_source_11 => l_array_source_11(Idx)
187655 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
187656 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
187657 , p_source_15 => l_array_source_15(Idx)
187658 , p_source_18 => l_array_source_18(Idx)
187659 , p_source_19 => l_array_source_19(Idx)
187660 , p_source_20 => l_array_source_20(Idx)
187661 , p_source_21 => l_array_source_21(Idx)
187662 , p_source_22 => l_array_source_22(Idx)
187663 , p_source_24 => l_array_source_24(Idx)
187664 );
187665 If(l_balance_type_code = 'A') THEN
187666 l_actual_gain_loss_ref := l_gain_or_loss_ref;
187667 END IF;
187668
187669 --
187670
187671
187672 --
187673 AcctLineType_112 (
187674 p_application_id => p_application_id
187675 ,p_event_id => l_event_id
187676 ,p_calculate_acctd_flag => l_calculate_acctd_flag
187677 ,p_calculate_g_l_flag => l_calculate_g_l_flag
187678 ,p_actual_flag => l_actual_flag
187679 ,p_balance_type_code => l_balance_type_code
187680 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
187681
187682 , p_source_4 => l_array_source_4(Idx)
187683 , p_source_11 => l_array_source_11(Idx)
187684 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
187685 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
187686 , p_source_15 => l_array_source_15(Idx)
187687 , p_source_18 => l_array_source_18(Idx)
187688 , p_source_19 => l_array_source_19(Idx)
187689 , p_source_20 => l_array_source_20(Idx)
187690 , p_source_21 => l_array_source_21(Idx)
187691 , p_source_22 => l_array_source_22(Idx)
187692 , p_source_24 => l_array_source_24(Idx)
187693 );
187694 If(l_balance_type_code = 'A') THEN
187695 l_actual_gain_loss_ref := l_gain_or_loss_ref;
187696 END IF;
187697
187698 --
187699
187700
187701 --
187702 AcctLineType_138 (
187703 p_application_id => p_application_id
187704 ,p_event_id => l_event_id
187705 ,p_calculate_acctd_flag => l_calculate_acctd_flag
187706 ,p_calculate_g_l_flag => l_calculate_g_l_flag
187707 ,p_actual_flag => l_actual_flag
187708 ,p_balance_type_code => l_balance_type_code
187709 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
187710
187711 , p_source_4 => l_array_source_4(Idx)
187712 , p_source_11 => l_array_source_11(Idx)
187713 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
187714 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
187715 , p_source_15 => l_array_source_15(Idx)
187716 , p_source_18 => l_array_source_18(Idx)
187717 , p_source_19 => l_array_source_19(Idx)
187718 , p_source_20 => l_array_source_20(Idx)
187719 , p_source_21 => l_array_source_21(Idx)
187720 , p_source_22 => l_array_source_22(Idx)
187721 , p_source_24 => l_array_source_24(Idx)
187722 );
187723 If(l_balance_type_code = 'A') THEN
187724 l_actual_gain_loss_ref := l_gain_or_loss_ref;
187725 END IF;
187726
187727 --
187728
187729
187730 --
187731 AcctLineType_183 (
187732 p_application_id => p_application_id
187733 ,p_event_id => l_event_id
187734 ,p_calculate_acctd_flag => l_calculate_acctd_flag
187735 ,p_calculate_g_l_flag => l_calculate_g_l_flag
187736 ,p_actual_flag => l_actual_flag
187737 ,p_balance_type_code => l_balance_type_code
187738 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
187739
187740 , p_source_4 => l_array_source_4(Idx)
187741 , p_source_11 => l_array_source_11(Idx)
187742 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
187743 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
187744 , p_source_15 => l_array_source_15(Idx)
187745 , p_source_18 => l_array_source_18(Idx)
187746 , p_source_19 => l_array_source_19(Idx)
187747 , p_source_20 => l_array_source_20(Idx)
187748 , p_source_21 => l_array_source_21(Idx)
187749 , p_source_22 => l_array_source_22(Idx)
187750 , p_source_24 => l_array_source_24(Idx)
187751 );
187752 If(l_balance_type_code = 'A') THEN
187753 l_actual_gain_loss_ref := l_gain_or_loss_ref;
187754 END IF;
187755
187756 --
187757
187758 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
187759 -- or secondary ledger that has different currency with primary
187760 -- or alc that is calculated by sla
187761 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
187762 (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'))
187763
187764 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
187765 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
187766 AND (l_actual_flag = 'A')) THEN
187767 XLA_AE_LINES_PKG.CreateGainOrLossLines(
187768 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
187769 ,p_application_id => p_application_id
187770 ,p_amb_context_code => 'DEFAULT'
187771 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
187772 ,p_event_class_code => C_EVENT_CLASS_CODE
187773 ,p_event_type_code => C_EVENT_TYPE_CODE
187774
187775 ,p_gain_ccid => -1
187776 ,p_loss_ccid => -1
187777
187778 ,p_actual_flag => l_actual_flag
187779 ,p_enc_flag => null
187780 ,p_actual_g_l_ref => l_actual_gain_loss_ref
187781 ,p_enc_g_l_ref => null
187782 );
187783 END IF;
187784 END IF;
187785 END IF;
187786
187787 ELSE
187788 --
187789 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
187790 --
187791 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
187792 trace
187793 (p_msg => 'Trancaction revesal option is Y'
187794 ,p_level => C_LEVEL_STATEMENT
187795 ,p_module => l_log_module);
187796 END IF;
187797 END IF;
187798
187799 END LOOP;
187800 l_result := XLA_AE_LINES_PKG.InsertLines ;
187801 end loop;
187802 close line_cur;
187803
187804
187805 --
187806 -- insert headers into xla_ae_headers_gt table
187807 --
187808 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
187809
187810 -- insert into errors table here.
187811
187812 END LOOP;
187813
187814 --
187815 -- 4865292
187816 --
187817 -- Compare g_hdr_extract_count with event count in
187818 -- CreateHeadersAndLines.
187819 --
187820 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
187821
187822 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
187823 trace (p_msg => '# rows extracted from header extract objects '
187824 || ' (running total): '
187825 || g_hdr_extract_count
187826 ,p_level => C_LEVEL_STATEMENT
187827 ,p_module => l_log_module);
187828 END IF;
187829
187830 CLOSE header_cur;
187831 --
187832
187833 --
187834 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
187835 trace
187836 (p_msg => 'END of EventType_286'
187837 ,p_level => C_LEVEL_PROCEDURE
187838 ,p_module => l_log_module);
187839 END IF;
187840 --
187841 RETURN l_result;
187842 EXCEPTION
187843 WHEN xla_exceptions_pkg.application_exception THEN
187844
187845 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
187846
187847
187848 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
187849
187850 RAISE;
187851
187852 WHEN NO_DATA_FOUND THEN
187853
187854 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
187855 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
187856
187857 FOR header_record IN header_cur
187858 LOOP
187859 l_array_header_events(header_record.event_id) := header_record.event_id;
187860 END LOOP;
187861
187862 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
187863 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
187864
187865 fnd_file.put_line(fnd_file.LOG, ' ');
187866 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
187867 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
187868 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
187869
187870 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
187871 LOOP
187872 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
187873 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
187874 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
187875 END IF;
187876 END LOOP;
187877
187878 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
187879 fnd_file.put_line(fnd_file.LOG, ' ');
187880
187881
187882 xla_exceptions_pkg.raise_message
187883 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventType_286');
187884
187885
187886 WHEN OTHERS THEN
187887 xla_exceptions_pkg.raise_message
187888 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventType_286');
187889 END EventType_286;
187890 --
187891
187892 ---------------------------------------
187893 --
187894 -- PRIVATE PROCEDURE
187895 -- insert_sources_287
187896 --
187897 ----------------------------------------
187898 --
187899 PROCEDURE insert_sources_287(
187900 p_target_ledger_id IN NUMBER
187901 , p_language IN VARCHAR2
187902 , p_sla_ledger_id IN NUMBER
187903 , p_pad_start_date IN DATE
187904 , p_pad_end_date IN DATE
187905 )
187906 IS
187907
187908 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'UFOB_SHIP_SENDER_SHIP_TP';
187909 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'USER_DEFINE';
187910 p_apps_owner VARCHAR2(30);
187911 l_log_module VARCHAR2(240);
187912 BEGIN
187913 IF g_log_enabled THEN
187914 l_log_module := C_DEFAULT_MODULE||'.insert_sources_287';
187915 END IF;
187916 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
187917
187918 trace
187919 (p_msg => 'BEGIN of insert_sources_287'
187920 ,p_level => C_LEVEL_PROCEDURE
187921 ,p_module => l_log_module);
187922
187923 END IF;
187924
187925 -- select APPS owner
187926 SELECT oracle_username
187927 INTO p_apps_owner
187928 FROM fnd_oracle_userid
187929 WHERE read_only_flag = 'U'
187930 ;
187931
187932 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
187933 trace
187934 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
187935 ' - p_language = '||p_language||
187936 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
187937 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
187938 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
187939 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
187940 ,p_level => C_LEVEL_STATEMENT
187941 ,p_module => l_log_module);
187942 END IF;
187943
187944
187945 --
187946 INSERT INTO xla_diag_sources --hdr1
187947 (
187948 event_id
187949 , ledger_id
187950 , sla_ledger_id
187951 , description_language
187952 , object_name
187953 , object_type_code
187954 , line_number
187955 , source_application_id
187956 , source_type_code
187957 , source_code
187958 , source_value
187959 , source_meaning
187960 , created_by
187961 , creation_date
187962 , last_update_date
187963 , last_updated_by
187964 , last_update_login
187965 , program_update_date
187966 , program_application_id
187967 , program_id
187968 , request_id
187969 )
187970 SELECT
187971 event_id
187972 , p_target_ledger_id
187973 , p_sla_ledger_id
187974 , p_language
187975 , object_name
187976 , object_type_code
187977 , line_number
187978 , source_application_id
187979 , source_type_code
187980 , source_code
187981 , SUBSTR(source_value ,1,1996)
187982 , SUBSTR(source_meaning,1,200)
187983 , xla_environment_pkg.g_Usr_Id
187984 , TRUNC(SYSDATE)
187985 , TRUNC(SYSDATE)
187986 , xla_environment_pkg.g_Usr_Id
187987 , xla_environment_pkg.g_Login_Id
187988 , TRUNC(SYSDATE)
187989 , xla_environment_pkg.g_Prog_Appl_Id
187990 , xla_environment_pkg.g_Prog_Id
187991 , xla_environment_pkg.g_Req_Id
187992 FROM (
187993 SELECT xet.event_id event_id
187994 , 0 line_number
187995 , CASE r
187996 WHEN 1 THEN 'CST_XLA_INV_HEADERS_V'
187997 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V'
187998
187999 ELSE null
188000 END object_name
188001 , CASE r
188002 WHEN 1 THEN 'HEADER'
188003 WHEN 2 THEN 'HEADER'
188004
188005 ELSE null
188006 END object_type_code
188007 , CASE r
188008 WHEN 1 THEN '707'
188009 WHEN 2 THEN '707'
188010
188011 ELSE null
188012 END source_application_id
188013 , 'S' source_type_code
188014 , CASE r
188015 WHEN 1 THEN 'DISTRIBUTION_TYPE'
188016 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR'
188017
188018 ELSE null
188019 END source_code
188020 , CASE r
188021 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
188022 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
188023
188024 ELSE null
188025 END source_value
188026 , CASE r
188027 WHEN 1 THEN fvl12.meaning
188028 WHEN 2 THEN fvl38.meaning
188029
188030 ELSE null
188031 END source_meaning
188032 FROM xla_events_gt xet
188033 , CST_XLA_INV_HEADERS_V h1
188034 , fnd_lookup_values fvl12
188035 , fnd_lookup_values fvl38
188036 ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
188037 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
188038 AND xet.event_type_code = C_EVENT_TYPE_CODE
188039 AND h1.event_id = xet.event_id
188040 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
188041 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
188042 AND fvl12.view_application_id(+) = 700
188043 AND fvl12.language(+) = USERENV('LANG')
188044 AND fvl38.lookup_type(+) = 'YES_NO'
188045 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
188046 AND fvl38.view_application_id(+) = 0
188047 AND fvl38.language(+) = USERENV('LANG')
188048
188049 )
188050 ;
188051 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
188052
188053 trace
188054 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
188055 ,p_level => C_LEVEL_STATEMENT
188056 ,p_module => l_log_module);
188057
188058 END IF;
188059 --
188060
188061
188062
188063 --
188064 INSERT INTO xla_diag_sources --line1
188065 (
188066 event_id
188067 , ledger_id
188068 , sla_ledger_id
188069 , description_language
188070 , object_name
188071 , object_type_code
188072 , line_number
188073 , source_application_id
188074 , source_type_code
188075 , source_code
188076 , source_value
188077 , source_meaning
188078 , created_by
188079 , creation_date
188080 , last_update_date
188081 , last_updated_by
188082 , last_update_login
188083 , program_update_date
188084 , program_application_id
188085 , program_id
188086 , request_id
188087 )
188088 SELECT event_id
188089 , p_target_ledger_id
188090 , p_sla_ledger_id
188091 , p_language
188092 , object_name
188093 , object_type_code
188094 , line_number
188095 , source_application_id
188096 , source_type_code
188097 , source_code
188098 , SUBSTR(source_value,1,1996)
188099 , SUBSTR(source_meaning,1,200)
188100 , xla_environment_pkg.g_Usr_Id
188101 , TRUNC(SYSDATE)
188102 , TRUNC(SYSDATE)
188103 , xla_environment_pkg.g_Usr_Id
188104 , xla_environment_pkg.g_Login_Id
188105 , TRUNC(SYSDATE)
188106 , xla_environment_pkg.g_Prog_Appl_Id
188107 , xla_environment_pkg.g_Prog_Id
188108 , xla_environment_pkg.g_Req_Id
188109 FROM (
188110 SELECT xet.event_id event_id
188111 , l2.line_number line_number
188112 , CASE r
188113 WHEN 1 THEN 'CST_XLA_INV_LINES_V'
188114 WHEN 2 THEN 'CST_XLA_INV_LINES_V'
188115 WHEN 3 THEN 'CST_XLA_INV_LINES_V'
188116 WHEN 4 THEN 'CST_XLA_INV_LINES_V'
188117 WHEN 5 THEN 'CST_XLA_INV_LINES_V'
188118 WHEN 6 THEN 'CST_XLA_INV_LINES_V'
188119 WHEN 7 THEN 'CST_XLA_INV_LINES_V'
188120 WHEN 8 THEN 'CST_XLA_INV_LINES_V'
188121 WHEN 9 THEN 'CST_XLA_INV_LINES_V'
188122
188123 ELSE null
188124 END object_name
188125 , CASE r
188126 WHEN 1 THEN 'LINE'
188127 WHEN 2 THEN 'LINE'
188128 WHEN 3 THEN 'LINE'
188129 WHEN 4 THEN 'LINE'
188130 WHEN 5 THEN 'LINE'
188131 WHEN 6 THEN 'LINE'
188132 WHEN 7 THEN 'LINE'
188133 WHEN 8 THEN 'LINE'
188134 WHEN 9 THEN 'LINE'
188135
188136 ELSE null
188137 END object_type_code
188138 , CASE r
188139 WHEN 1 THEN '707'
188140 WHEN 2 THEN '707'
188141 WHEN 3 THEN '707'
188142 WHEN 4 THEN '707'
188143 WHEN 5 THEN '707'
188144 WHEN 6 THEN '707'
188145 WHEN 7 THEN '707'
188146 WHEN 8 THEN '707'
188147 WHEN 9 THEN '707'
188148
188149 ELSE null
188150 END source_application_id
188151 , 'S' source_type_code
188152 , CASE r
188153 WHEN 1 THEN 'CODE_COMBINATION_ID'
188154 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER'
188155 WHEN 3 THEN 'CURRENCY_CODE'
188156 WHEN 4 THEN 'ENTERED_AMOUNT'
188157 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE'
188158 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE'
188159 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE'
188160 WHEN 8 THEN 'ACCOUNTED_AMOUNT'
188161 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE'
188162
188163 ELSE null
188164 END source_code
188165 , CASE r
188166 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
188167 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
188168 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
188169 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
188170 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
188171 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
188172 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
188173 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
188174 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
188175
188176 ELSE null
188177 END source_value
188178 , null source_meaning
188179 FROM xla_events_gt xet
188180 , CST_XLA_INV_LINES_V l2
188181 ,(select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
188182 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
188183 AND xet.event_type_code = C_EVENT_TYPE_CODE
188184 AND l2.event_id = xet.event_id
188185
188186 )
188187 ;
188188 --
188189 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
188190
188191 trace
188192 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
188193 ,p_level => C_LEVEL_STATEMENT
188194 ,p_module => l_log_module);
188195
188196 END IF;
188197
188198
188199 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
188200 trace
188201 (p_msg => 'END of insert_sources_287'
188202 ,p_level => C_LEVEL_PROCEDURE
188203 ,p_module => l_log_module);
188204 END IF;
188205 EXCEPTION
188206 WHEN xla_exceptions_pkg.application_exception THEN
188207 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
188208 trace
188209 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
188210 ,p_level => C_LEVEL_EXCEPTION
188211 ,p_module => l_log_module);
188212 END IF;
188213 RAISE;
188214 WHEN OTHERS THEN
188215 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
188216 trace
188217 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
188218 ,p_level => C_LEVEL_EXCEPTION
188219 ,p_module => l_log_module);
188220 END IF;
188221 xla_exceptions_pkg.raise_message
188222 (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_287');
188223 END insert_sources_287;
188224 --
188225
188226 ---------------------------------------
188227 --
188228 -- PRIVATE FUNCTION
188229 -- EventType_287
188230 --
188231 ----------------------------------------
188232 --
188233 FUNCTION EventType_287
188234 (p_application_id IN NUMBER
188235 ,p_base_ledger_id IN NUMBER
188236 ,p_target_ledger_id IN NUMBER
188237 ,p_language IN VARCHAR2
188238 ,p_currency_code IN VARCHAR2
188239 ,p_sla_ledger_id IN NUMBER
188240 ,p_pad_start_date IN DATE
188241 ,p_pad_end_date IN DATE
188242 ,p_primary_ledger_id IN NUMBER)
188243 RETURN BOOLEAN IS
188244 --
188245 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'UFOB_SHIP_SENDER_SHIP_TP';
188246 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'USER_DEFINE';
188247
188248 l_calculate_acctd_flag VARCHAR2(1) :='Y';
188249 l_calculate_g_l_flag VARCHAR2(1) :='Y';
188250 --
188251 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
188252 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
188253 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
188254 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
188255 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
188256 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
188257 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
188258 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
188259 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
188260 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
188261 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
188262 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
188263 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
188264 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
188265 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
188266 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
188267 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
188268 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
188269 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
188270 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
188271 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
188272 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
188273 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
188274 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
188275 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
188276 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
188277
188278 l_event_id NUMBER;
188279 l_previous_event_id NUMBER;
188280 l_first_event_id NUMBER;
188281 l_last_event_id NUMBER;
188282
188283 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
188284 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
188285 --
188286 --
188287 l_result BOOLEAN := TRUE;
188288 l_rows NUMBER := 1000;
188289 l_event_type_name VARCHAR2(80) := 'User-defined Sender Intransit Shipment - Transfer Price - FOB Shipment';
188290 l_event_class_name VARCHAR2(80) := 'User Defined Inventory Transaction Class';
188291 l_description VARCHAR2(4000);
188292 l_transaction_reversal NUMBER;
188293 l_ae_header_id NUMBER;
188294 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
188295 l_log_module VARCHAR2(240);
188296 --
188297 l_acct_reversal_source VARCHAR2(30);
188298 l_trx_reversal_source VARCHAR2(30);
188299
188300 l_continue_with_lines BOOLEAN := TRUE;
188301 --
188302 l_acc_rev_gl_date_source DATE; -- 4262811
188303 --
188304 type t_array_event_id is table of number index by binary_integer;
188305
188306 l_rec_array_event t_rec_array_event;
188307 l_null_rec_array_event t_rec_array_event;
188308 l_array_ae_header_id xla_number_array_type;
188309 l_actual_flag VARCHAR2(1) := NULL;
188310 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
188311 l_balance_type_code VARCHAR2(1) :=NULL;
188312 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
188313
188314 --
188315 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
188316 --
188317
188318 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
188319 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
188320
188321 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
188322 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
188323 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
188324 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
188325 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
188326 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
188327 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
188328 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
188329 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
188330
188331 l_array_source_12 t_array_source_12;
188332 l_array_source_12_meaning t_array_lookup_meaning;
188333 l_array_source_38 t_array_source_38;
188334 l_array_source_38_meaning t_array_lookup_meaning;
188335
188336 l_array_source_4 t_array_source_4;
188337 l_array_source_11 t_array_source_11;
188338 l_array_source_15 t_array_source_15;
188339 l_array_source_18 t_array_source_18;
188340 l_array_source_19 t_array_source_19;
188341 l_array_source_20 t_array_source_20;
188342 l_array_source_21 t_array_source_21;
188343 l_array_source_22 t_array_source_22;
188344 l_array_source_24 t_array_source_24;
188345
188346 --
188347 CURSOR header_cur
188348 IS
188349 SELECT /*+ leading(xet) cardinality(xet,1) */
188350 -- Event Type Code: UFOB_SHIP_SENDER_SHIP_TP
188351 -- Event Class Code: USER_DEFINE
188352 xet.entity_id
188353 , xet.legal_entity_id
188354 , xet.entity_code
188355 , xet.transaction_number
188356 , xet.event_id
188357 , xet.event_class_code
188358 , xet.event_type_code
188359 , xet.event_number
188360 , xet.event_date
188361 , xet.transaction_date
188362 , xet.reference_num_1
188363 , xet.reference_num_2
188364 , xet.reference_num_3
188365 , xet.reference_num_4
188366 , xet.reference_char_1
188367 , xet.reference_char_2
188368 , xet.reference_char_3
188369 , xet.reference_char_4
188370 , xet.reference_date_1
188371 , xet.reference_date_2
188372 , xet.reference_date_3
188373 , xet.reference_date_4
188374 , xet.event_created_by
188375 , xet.budgetary_control_flag
188376 , h1.DISTRIBUTION_TYPE source_12
188377 , fvl12.meaning source_12_meaning
188378 , h1.TRANSFER_TO_GL_INDICATOR source_38
188379 , fvl38.meaning source_38_meaning
188380 FROM xla_events_gt xet
188381 , CST_XLA_INV_HEADERS_V h1
188382 , fnd_lookup_values fvl12
188383 , fnd_lookup_values fvl38
188384 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
188385 and xet.event_type_code = C_EVENT_TYPE_CODE
188386 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
188387 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
188388 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
188389 AND fvl12.view_application_id(+) = 700
188390 AND fvl12.language(+) = USERENV('LANG')
188391 AND fvl38.lookup_type(+) = 'YES_NO'
188392 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
188393 AND fvl38.view_application_id(+) = 0
188394 AND fvl38.language(+) = USERENV('LANG')
188395
188396 ORDER BY event_id
188397 ;
188398
188399
188400 --
188401 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
188402 IS
188403 SELECT /*+ leading(xet) cardinality(xet,1) */
188404 -- Event Type Code: UFOB_SHIP_SENDER_SHIP_TP
188405 -- Event Class Code: USER_DEFINE
188406 xet.entity_id
188407 ,xet.legal_entity_id
188408 ,xet.entity_code
188409 ,xet.transaction_number
188410 ,xet.event_id
188411 ,xet.event_class_code
188412 ,xet.event_type_code
188413 ,xet.event_number
188414 ,xet.event_date
188415 ,xet.transaction_date
188416 ,xet.reference_num_1
188417 ,xet.reference_num_2
188418 ,xet.reference_num_3
188419 ,xet.reference_num_4
188420 ,xet.reference_char_1
188421 ,xet.reference_char_2
188422 ,xet.reference_char_3
188423 ,xet.reference_char_4
188424 ,xet.reference_date_1
188425 ,xet.reference_date_2
188426 ,xet.reference_date_3
188427 ,xet.reference_date_4
188428 ,xet.event_created_by
188429 ,xet.budgetary_control_flag , l2.LINE_NUMBER
188430 , l2.CODE_COMBINATION_ID source_4
188431 , l2.DISTRIBUTION_IDENTIFIER source_11
188432 , l2.CURRENCY_CODE source_15
188433 , l2.ENTERED_AMOUNT source_18
188434 , l2.CURRENCY_CONVERSION_DATE source_19
188435 , l2.CURRENCY_CONVERSION_RATE source_20
188436 , l2.CURRENCY_CONVERSION_TYPE source_21
188437 , l2.ACCOUNTED_AMOUNT source_22
188438 , l2.ACCOUNTING_LINE_TYPE_CODE source_24
188439 FROM xla_events_gt xet
188440 , CST_XLA_INV_LINES_V l2
188441 WHERE xet.event_id between x_first_event_id and x_last_event_id
188442 and xet.event_date between p_pad_start_date and p_pad_end_date
188443 and xet.event_type_code = C_EVENT_TYPE_CODE
188444 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
188445 ;
188446
188447 --
188448 BEGIN
188449 IF g_log_enabled THEN
188450 l_log_module := C_DEFAULT_MODULE||'.EventType_287';
188451 END IF;
188452 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
188453 trace
188454 (p_msg => 'BEGIN of EventType_287'
188455 ,p_level => C_LEVEL_PROCEDURE
188456 ,p_module => l_log_module);
188457 END IF;
188458
188459 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
188460 trace
188461 (p_msg => 'p_application_id = '||p_application_id||
188462 ' - p_base_ledger_id = '||p_base_ledger_id||
188463 ' - p_target_ledger_id = '||p_target_ledger_id||
188464 ' - p_language = '||p_language||
188465 ' - p_currency_code = '||p_currency_code||
188466 ' - p_sla_ledger_id = '||p_sla_ledger_id
188467 ,p_level => C_LEVEL_STATEMENT
188468 ,p_module => l_log_module);
188469 END IF;
188470 --
188471 -- initialze arrays
188472 --
188473 g_array_event.DELETE;
188474 l_rec_array_event := l_null_rec_array_event;
188475 --
188476 --------------------------------------
188477 -- 4262811 Initialze MPA Line Number
188478 --------------------------------------
188479 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
188480
188481 --
188482
188483 --
188484 OPEN header_cur;
188485 --
188486 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
188487 trace
188488 (p_msg => 'SQL - FETCH header_cur'
188489 ,p_level => C_LEVEL_STATEMENT
188490 ,p_module => l_log_module);
188491 END IF;
188492 --
188493 LOOP
188494 FETCH header_cur BULK COLLECT INTO
188495 l_array_entity_id
188496 , l_array_legal_entity_id
188497 , l_array_entity_code
188498 , l_array_transaction_num
188499 , l_array_event_id
188500 , l_array_class_code
188501 , l_array_event_type
188502 , l_array_event_number
188503 , l_array_event_date
188504 , l_array_transaction_date
188505 , l_array_reference_num_1
188506 , l_array_reference_num_2
188507 , l_array_reference_num_3
188508 , l_array_reference_num_4
188509 , l_array_reference_char_1
188510 , l_array_reference_char_2
188511 , l_array_reference_char_3
188512 , l_array_reference_char_4
188513 , l_array_reference_date_1
188514 , l_array_reference_date_2
188515 , l_array_reference_date_3
188516 , l_array_reference_date_4
188517 , l_array_event_created_by
188518 , l_array_budgetary_control_flag
188519 , l_array_source_12
188520 , l_array_source_12_meaning
188521 , l_array_source_38
188522 , l_array_source_38_meaning
188523 LIMIT l_rows;
188524 --
188525 IF (C_LEVEL_EVENT >= g_log_level) THEN
188526 trace
188527 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
188528 ,p_level => C_LEVEL_EVENT
188529 ,p_module => l_log_module);
188530 END IF;
188531 --
188532 EXIT WHEN l_array_entity_id.COUNT = 0;
188533
188534 -- initialize arrays
188535 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
188536 XLA_AE_LINES_PKG.g_rec_lines := NULL;
188537
188538 --
188539 -- Bug 4458708
188540 --
188541 XLA_AE_LINES_PKG.g_LineNumber := 0;
188542
188543
188544 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
188545 g_last_hdr_idx := l_array_event_id.LAST;
188546 --
188547 -- loop for the headers. Each iteration is for each header extract row
188548 -- fetched in header cursor
188549 --
188550 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
188551
188552 --
188553 -- set event info as cache for other routines to refer event attributes
188554 --
188555 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
188556 (p_application_id => p_application_id
188557 ,p_primary_ledger_id => p_primary_ledger_id
188558 ,p_base_ledger_id => p_base_ledger_id
188559 ,p_target_ledger_id => p_target_ledger_id
188560 ,p_entity_id => l_array_entity_id(hdr_idx)
188561 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
188562 ,p_entity_code => l_array_entity_code(hdr_idx)
188563 ,p_transaction_num => l_array_transaction_num(hdr_idx)
188564 ,p_event_id => l_array_event_id(hdr_idx)
188565 ,p_event_class_code => l_array_class_code(hdr_idx)
188566 ,p_event_type_code => l_array_event_type(hdr_idx)
188567 ,p_event_number => l_array_event_number(hdr_idx)
188568 ,p_event_date => l_array_event_date(hdr_idx)
188569 ,p_transaction_date => l_array_transaction_date(hdr_idx)
188570 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
188571 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
188572 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
188573 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
188574 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
188575 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
188576 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
188577 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
188578 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
188579 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
188580 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
188581 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
188582 ,p_event_created_by => l_array_event_created_by(hdr_idx)
188583 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
188584
188585 --
188586 -- set the status of entry to C_VALID (0)
188587 --
188588 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
188589
188590 --
188591 -- initialize a row for ae header
188592 --
188593 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
188594
188595 l_event_id := l_array_event_id(hdr_idx);
188596
188597 --
188598 -- storing the hdr_idx for event. May be used by line cursor.
188599 --
188600 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
188601
188602 --
188603 -- store sources from header extract. This can be improved to
188604 -- store only those sources from header extract that may be used in lines
188605 --
188606
188607 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
188608 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
188609 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
188610 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
188611
188612 --
188613 -- initilaize the status of ae headers for diffrent balance types
188614 -- the status is initialised to C_NOT_CREATED (2)
188615 --
188616 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
188617 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
188618 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
188619
188620 --
188621 -- call api to validate and store accounting attributes for header
188622 --
188623
188624 ------------------------------------------------------------
188625 -- Accrual Reversal : to get date for Standard Source (NONE)
188626 ------------------------------------------------------------
188627 l_acc_rev_gl_date_source := NULL;
188628
188629 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
188630 l_rec_acct_attrs.array_date_value(1) :=
188631 xla_ae_sources_pkg.GetSystemSourceDate(
188632 p_source_code => 'XLA_REFERENCE_DATE_1'
188633 , p_source_type_code => 'Y'
188634 , p_source_application_id => 602
188635 );
188636 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_TRANSFER_FLAG';
188637 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
188638
188639
188640 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
188641
188642 XLA_AE_HEADER_PKG.SetJeCategoryName;
188643
188644 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
188645 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
188646 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
188647 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
188648 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
188649
188650
188651 -- No header level analytical criteria
188652
188653 --
188654 --accounting attribute enhancement, bug 3612931
188655 --
188656 l_trx_reversal_source := SUBSTR(NULL, 1,30);
188657
188658 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
188659 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
188660
188661 xla_accounting_err_pkg.build_message
188662 (p_appli_s_name => 'XLA'
188663 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
188664 ,p_token_1 => 'ACCT_ATTR_NAME'
188665 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
188666 ,p_token_2 => 'PRODUCT_NAME'
188667 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
188668 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
188669 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
188670 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
188671
188672 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
188673 --
188674 -- following sets the accounting attributes needed to reverse
188675 -- accounting for a distributeion
188676 --
188677 xla_ae_lines_pkg.SetTrxReversalAttrs
188678 (p_event_id => l_event_id
188679 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
188680 ,p_trx_reversal_source => l_trx_reversal_source);
188681
188682 END IF;
188683
188684
188685 ----------------------------------------------------------------
188686 -- 4262811 - update the header statuses to invalid in need be
188687 ----------------------------------------------------------------
188688 --
188689 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
188690
188691
188692 -----------------------------------------------
188693 -- No accrual reversal for the event class/type
188694 -----------------------------------------------
188695 ----------------------------------------------------------------
188696
188697 --
188698 -- this ends the header loop iteration for one bulk fetch
188699 --
188700 END LOOP;
188701
188702 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
188703 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
188704
188705 --
188706 -- insert dummy rows into lines gt table that were created due to
188707 -- transaction reversals
188708 --
188709 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
188710 l_result := XLA_AE_LINES_PKG.InsertLines;
188711 END IF;
188712
188713 --
188714 -- reset the temp_line_num for each set of events fetched from header
188715 -- cursor rather than doing it for each new event in line cursor
188716 -- Bug 3939231
188717 --
188718 xla_ae_lines_pkg.g_temp_line_num := 0;
188719
188720
188721
188722 --
188723 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
188724 --
188725 --
188726 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
188727
188728 trace
188729 (p_msg => 'SQL - FETCH line_cur'
188730 ,p_level => C_LEVEL_STATEMENT
188731 ,p_module => l_log_module);
188732
188733 END IF;
188734 --
188735 --
188736 LOOP
188737 --
188738 FETCH line_cur BULK COLLECT INTO
188739 l_array_entity_id
188740 , l_array_legal_entity_id
188741 , l_array_entity_code
188742 , l_array_transaction_num
188743 , l_array_event_id
188744 , l_array_class_code
188745 , l_array_event_type
188746 , l_array_event_number
188747 , l_array_event_date
188748 , l_array_transaction_date
188749 , l_array_reference_num_1
188750 , l_array_reference_num_2
188751 , l_array_reference_num_3
188752 , l_array_reference_num_4
188753 , l_array_reference_char_1
188754 , l_array_reference_char_2
188755 , l_array_reference_char_3
188756 , l_array_reference_char_4
188757 , l_array_reference_date_1
188758 , l_array_reference_date_2
188759 , l_array_reference_date_3
188760 , l_array_reference_date_4
188761 , l_array_event_created_by
188762 , l_array_budgetary_control_flag
188763 , l_array_extract_line_num
188764 , l_array_source_4
188765 , l_array_source_11
188766 , l_array_source_15
188767 , l_array_source_18
188768 , l_array_source_19
188769 , l_array_source_20
188770 , l_array_source_21
188771 , l_array_source_22
188772 , l_array_source_24
188773 LIMIT l_rows;
188774
188775 --
188776 IF (C_LEVEL_EVENT >= g_log_level) THEN
188777 trace
188778 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
188779 ,p_level => C_LEVEL_EVENT
188780 ,p_module => l_log_module);
188781 END IF;
188782 --
188783 EXIT WHEN l_array_entity_id.count = 0;
188784
188785 XLA_AE_LINES_PKG.g_rec_lines := null;
188786
188787 --
188788 -- Bug 4458708
188789 --
188790 XLA_AE_LINES_PKG.g_LineNumber := 0;
188791 --
188792 --
188793
188794 FOR Idx IN 1..l_array_event_id.count LOOP
188795 --
188796 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
188797 --
188798 l_event_id := l_array_event_id(idx); -- 5648433
188799
188800 --
188801 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
188802 --
188803
188804 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
188805 (g_array_event(l_event_id).array_value_num('header_index'))
188806 ,'N'
188807 ) <> 'Y'
188808 THEN
188809 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
188810 trace
188811 (p_msg => 'Trancaction revesal option is not Y '
188812 ,p_level => C_LEVEL_STATEMENT
188813 ,p_module => l_log_module);
188814 END IF;
188815
188816 --
188817 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
188818 --
188819 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
188820 --
188821 -- set event info as cache for other routines to refer event attributes
188822 --
188823
188824 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
188825 l_previous_event_id := l_event_id;
188826
188827 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
188828 (p_application_id => p_application_id
188829 ,p_primary_ledger_id => p_primary_ledger_id
188830 ,p_base_ledger_id => p_base_ledger_id
188831 ,p_target_ledger_id => p_target_ledger_id
188832 ,p_entity_id => l_array_entity_id(Idx)
188833 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
188834 ,p_entity_code => l_array_entity_code(Idx)
188835 ,p_transaction_num => l_array_transaction_num(Idx)
188836 ,p_event_id => l_array_event_id(Idx)
188837 ,p_event_class_code => l_array_class_code(Idx)
188838 ,p_event_type_code => l_array_event_type(Idx)
188839 ,p_event_number => l_array_event_number(Idx)
188840 ,p_event_date => l_array_event_date(Idx)
188841 ,p_transaction_date => l_array_transaction_date(Idx)
188842 ,p_reference_num_1 => l_array_reference_num_1(Idx)
188843 ,p_reference_num_2 => l_array_reference_num_2(Idx)
188844 ,p_reference_num_3 => l_array_reference_num_3(Idx)
188845 ,p_reference_num_4 => l_array_reference_num_4(Idx)
188846 ,p_reference_char_1 => l_array_reference_char_1(Idx)
188847 ,p_reference_char_2 => l_array_reference_char_2(Idx)
188848 ,p_reference_char_3 => l_array_reference_char_3(Idx)
188849 ,p_reference_char_4 => l_array_reference_char_4(Idx)
188850 ,p_reference_date_1 => l_array_reference_date_1(Idx)
188851 ,p_reference_date_2 => l_array_reference_date_2(Idx)
188852 ,p_reference_date_3 => l_array_reference_date_3(Idx)
188853 ,p_reference_date_4 => l_array_reference_date_4(Idx)
188854 ,p_event_created_by => l_array_event_created_by(Idx)
188855 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
188856 --
188857 END IF;
188858
188859
188860
188861 --
188862 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
188863
188864 l_acct_reversal_source := SUBSTR(NULL, 1,30);
188865
188866 IF l_continue_with_lines THEN
188867 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
188868 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
188869
188870 xla_accounting_err_pkg.build_message
188871 (p_appli_s_name => 'XLA'
188872 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
188873 ,p_token_1 => 'LINE_NUMBER'
188874 ,p_value_1 => l_array_extract_line_num(Idx)
188875 ,p_token_2 => 'PRODUCT_NAME'
188876 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
188877 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
188878 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
188879 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
188880
188881 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
188882 --
188883 -- following sets the accounting attributes needed to reverse
188884 -- accounting for a distributeion
188885 --
188886
188887 --
188888 -- 5217187
188889 --
188890 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
188891 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
188892 g_array_event(l_event_id).array_value_num('header_index'));
188893 --
188894 --
188895
188896 -- No reversal code generated
188897
188898 xla_ae_lines_pkg.SetAcctReversalAttrs
188899 (p_event_id => l_event_id
188900 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
188901 ,p_calculate_acctd_flag => l_calculate_acctd_flag
188902 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
188903 END IF;
188904
188905 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
188906 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
188907
188908 --
188909 AcctLineType_16 (
188910 p_application_id => p_application_id
188911 ,p_event_id => l_event_id
188912 ,p_calculate_acctd_flag => l_calculate_acctd_flag
188913 ,p_calculate_g_l_flag => l_calculate_g_l_flag
188914 ,p_actual_flag => l_actual_flag
188915 ,p_balance_type_code => l_balance_type_code
188916 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
188917
188918 , p_source_4 => l_array_source_4(Idx)
188919 , p_source_11 => l_array_source_11(Idx)
188920 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
188921 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
188922 , p_source_15 => l_array_source_15(Idx)
188923 , p_source_18 => l_array_source_18(Idx)
188924 , p_source_19 => l_array_source_19(Idx)
188925 , p_source_20 => l_array_source_20(Idx)
188926 , p_source_21 => l_array_source_21(Idx)
188927 , p_source_22 => l_array_source_22(Idx)
188928 , p_source_24 => l_array_source_24(Idx)
188929 );
188930 If(l_balance_type_code = 'A') THEN
188931 l_actual_gain_loss_ref := l_gain_or_loss_ref;
188932 END IF;
188933
188934 --
188935
188936
188937 --
188938 AcctLineType_89 (
188939 p_application_id => p_application_id
188940 ,p_event_id => l_event_id
188941 ,p_calculate_acctd_flag => l_calculate_acctd_flag
188942 ,p_calculate_g_l_flag => l_calculate_g_l_flag
188943 ,p_actual_flag => l_actual_flag
188944 ,p_balance_type_code => l_balance_type_code
188945 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
188946
188947 , p_source_4 => l_array_source_4(Idx)
188948 , p_source_11 => l_array_source_11(Idx)
188949 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
188950 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
188951 , p_source_15 => l_array_source_15(Idx)
188952 , p_source_18 => l_array_source_18(Idx)
188953 , p_source_19 => l_array_source_19(Idx)
188954 , p_source_20 => l_array_source_20(Idx)
188955 , p_source_21 => l_array_source_21(Idx)
188956 , p_source_22 => l_array_source_22(Idx)
188957 , p_source_24 => l_array_source_24(Idx)
188958 );
188959 If(l_balance_type_code = 'A') THEN
188960 l_actual_gain_loss_ref := l_gain_or_loss_ref;
188961 END IF;
188962
188963 --
188964
188965
188966 --
188967 AcctLineType_101 (
188968 p_application_id => p_application_id
188969 ,p_event_id => l_event_id
188970 ,p_calculate_acctd_flag => l_calculate_acctd_flag
188971 ,p_calculate_g_l_flag => l_calculate_g_l_flag
188972 ,p_actual_flag => l_actual_flag
188973 ,p_balance_type_code => l_balance_type_code
188974 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
188975
188976 , p_source_4 => l_array_source_4(Idx)
188977 , p_source_11 => l_array_source_11(Idx)
188978 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
188979 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
188980 , p_source_15 => l_array_source_15(Idx)
188981 , p_source_18 => l_array_source_18(Idx)
188982 , p_source_19 => l_array_source_19(Idx)
188983 , p_source_20 => l_array_source_20(Idx)
188984 , p_source_21 => l_array_source_21(Idx)
188985 , p_source_22 => l_array_source_22(Idx)
188986 , p_source_24 => l_array_source_24(Idx)
188987 );
188988 If(l_balance_type_code = 'A') THEN
188989 l_actual_gain_loss_ref := l_gain_or_loss_ref;
188990 END IF;
188991
188992 --
188993
188994
188995 --
188996 AcctLineType_115 (
188997 p_application_id => p_application_id
188998 ,p_event_id => l_event_id
188999 ,p_calculate_acctd_flag => l_calculate_acctd_flag
189000 ,p_calculate_g_l_flag => l_calculate_g_l_flag
189001 ,p_actual_flag => l_actual_flag
189002 ,p_balance_type_code => l_balance_type_code
189003 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
189004
189005 , p_source_4 => l_array_source_4(Idx)
189006 , p_source_11 => l_array_source_11(Idx)
189007 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
189008 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
189009 , p_source_15 => l_array_source_15(Idx)
189010 , p_source_18 => l_array_source_18(Idx)
189011 , p_source_19 => l_array_source_19(Idx)
189012 , p_source_20 => l_array_source_20(Idx)
189013 , p_source_21 => l_array_source_21(Idx)
189014 , p_source_22 => l_array_source_22(Idx)
189015 , p_source_24 => l_array_source_24(Idx)
189016 );
189017 If(l_balance_type_code = 'A') THEN
189018 l_actual_gain_loss_ref := l_gain_or_loss_ref;
189019 END IF;
189020
189021 --
189022
189023
189024 --
189025 AcctLineType_133 (
189026 p_application_id => p_application_id
189027 ,p_event_id => l_event_id
189028 ,p_calculate_acctd_flag => l_calculate_acctd_flag
189029 ,p_calculate_g_l_flag => l_calculate_g_l_flag
189030 ,p_actual_flag => l_actual_flag
189031 ,p_balance_type_code => l_balance_type_code
189032 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
189033
189034 , p_source_4 => l_array_source_4(Idx)
189035 , p_source_11 => l_array_source_11(Idx)
189036 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
189037 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
189038 , p_source_15 => l_array_source_15(Idx)
189039 , p_source_18 => l_array_source_18(Idx)
189040 , p_source_19 => l_array_source_19(Idx)
189041 , p_source_20 => l_array_source_20(Idx)
189042 , p_source_21 => l_array_source_21(Idx)
189043 , p_source_22 => l_array_source_22(Idx)
189044 , p_source_24 => l_array_source_24(Idx)
189045 );
189046 If(l_balance_type_code = 'A') THEN
189047 l_actual_gain_loss_ref := l_gain_or_loss_ref;
189048 END IF;
189049
189050 --
189051
189052
189053 --
189054 AcctLineType_200 (
189055 p_application_id => p_application_id
189056 ,p_event_id => l_event_id
189057 ,p_calculate_acctd_flag => l_calculate_acctd_flag
189058 ,p_calculate_g_l_flag => l_calculate_g_l_flag
189059 ,p_actual_flag => l_actual_flag
189060 ,p_balance_type_code => l_balance_type_code
189061 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
189062
189063 , p_source_4 => l_array_source_4(Idx)
189064 , p_source_11 => l_array_source_11(Idx)
189065 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
189066 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
189067 , p_source_15 => l_array_source_15(Idx)
189068 , p_source_18 => l_array_source_18(Idx)
189069 , p_source_19 => l_array_source_19(Idx)
189070 , p_source_20 => l_array_source_20(Idx)
189071 , p_source_21 => l_array_source_21(Idx)
189072 , p_source_22 => l_array_source_22(Idx)
189073 , p_source_24 => l_array_source_24(Idx)
189074 );
189075 If(l_balance_type_code = 'A') THEN
189076 l_actual_gain_loss_ref := l_gain_or_loss_ref;
189077 END IF;
189078
189079 --
189080
189081 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
189082 -- or secondary ledger that has different currency with primary
189083 -- or alc that is calculated by sla
189084 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
189085 (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'))
189086
189087 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
189088 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
189089 AND (l_actual_flag = 'A')) THEN
189090 XLA_AE_LINES_PKG.CreateGainOrLossLines(
189091 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
189092 ,p_application_id => p_application_id
189093 ,p_amb_context_code => 'DEFAULT'
189094 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
189095 ,p_event_class_code => C_EVENT_CLASS_CODE
189096 ,p_event_type_code => C_EVENT_TYPE_CODE
189097
189098 ,p_gain_ccid => -1
189099 ,p_loss_ccid => -1
189100
189101 ,p_actual_flag => l_actual_flag
189102 ,p_enc_flag => null
189103 ,p_actual_g_l_ref => l_actual_gain_loss_ref
189104 ,p_enc_g_l_ref => null
189105 );
189106 END IF;
189107 END IF;
189108 END IF;
189109
189110 ELSE
189111 --
189112 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
189113 --
189114 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
189115 trace
189116 (p_msg => 'Trancaction revesal option is Y'
189117 ,p_level => C_LEVEL_STATEMENT
189118 ,p_module => l_log_module);
189119 END IF;
189120 END IF;
189121
189122 END LOOP;
189123 l_result := XLA_AE_LINES_PKG.InsertLines ;
189124 end loop;
189125 close line_cur;
189126
189127
189128 --
189129 -- insert headers into xla_ae_headers_gt table
189130 --
189131 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
189132
189133 -- insert into errors table here.
189134
189135 END LOOP;
189136
189137 --
189138 -- 4865292
189139 --
189140 -- Compare g_hdr_extract_count with event count in
189141 -- CreateHeadersAndLines.
189142 --
189143 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
189144
189145 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
189146 trace (p_msg => '# rows extracted from header extract objects '
189147 || ' (running total): '
189148 || g_hdr_extract_count
189149 ,p_level => C_LEVEL_STATEMENT
189150 ,p_module => l_log_module);
189151 END IF;
189152
189153 CLOSE header_cur;
189154 --
189155
189156 --
189157 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
189158 trace
189159 (p_msg => 'END of EventType_287'
189160 ,p_level => C_LEVEL_PROCEDURE
189161 ,p_module => l_log_module);
189162 END IF;
189163 --
189164 RETURN l_result;
189165 EXCEPTION
189166 WHEN xla_exceptions_pkg.application_exception THEN
189167
189168 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
189169
189170
189171 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
189172
189173 RAISE;
189174
189175 WHEN NO_DATA_FOUND THEN
189176
189177 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
189178 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
189179
189180 FOR header_record IN header_cur
189181 LOOP
189182 l_array_header_events(header_record.event_id) := header_record.event_id;
189183 END LOOP;
189184
189185 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
189186 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
189187
189188 fnd_file.put_line(fnd_file.LOG, ' ');
189189 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
189190 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
189191 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
189192
189193 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
189194 LOOP
189195 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
189196 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
189197 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
189198 END IF;
189199 END LOOP;
189200
189201 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
189202 fnd_file.put_line(fnd_file.LOG, ' ');
189203
189204
189205 xla_exceptions_pkg.raise_message
189206 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventType_287');
189207
189208
189209 WHEN OTHERS THEN
189210 xla_exceptions_pkg.raise_message
189211 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventType_287');
189212 END EventType_287;
189213 --
189214
189215 ---------------------------------------
189216 --
189217 -- PRIVATE PROCEDURE
189218 -- insert_sources_288
189219 --
189220 ----------------------------------------
189221 --
189222 PROCEDURE insert_sources_288(
189223 p_target_ledger_id IN NUMBER
189224 , p_language IN VARCHAR2
189225 , p_sla_ledger_id IN NUMBER
189226 , p_pad_start_date IN DATE
189227 , p_pad_end_date IN DATE
189228 )
189229 IS
189230
189231 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'UIPV_TXFR';
189232 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'USER_DEFINE';
189233 p_apps_owner VARCHAR2(30);
189234 l_log_module VARCHAR2(240);
189235 BEGIN
189236 IF g_log_enabled THEN
189237 l_log_module := C_DEFAULT_MODULE||'.insert_sources_288';
189238 END IF;
189239 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
189240
189241 trace
189242 (p_msg => 'BEGIN of insert_sources_288'
189243 ,p_level => C_LEVEL_PROCEDURE
189244 ,p_module => l_log_module);
189245
189246 END IF;
189247
189248 -- select APPS owner
189249 SELECT oracle_username
189250 INTO p_apps_owner
189251 FROM fnd_oracle_userid
189252 WHERE read_only_flag = 'U'
189253 ;
189254
189255 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
189256 trace
189257 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
189258 ' - p_language = '||p_language||
189259 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
189260 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
189261 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
189262 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
189263 ,p_level => C_LEVEL_STATEMENT
189264 ,p_module => l_log_module);
189265 END IF;
189266
189267
189268 --
189269 INSERT INTO xla_diag_sources --hdr1
189270 (
189271 event_id
189272 , ledger_id
189273 , sla_ledger_id
189274 , description_language
189275 , object_name
189276 , object_type_code
189277 , line_number
189278 , source_application_id
189279 , source_type_code
189280 , source_code
189281 , source_value
189282 , source_meaning
189283 , created_by
189284 , creation_date
189285 , last_update_date
189286 , last_updated_by
189287 , last_update_login
189288 , program_update_date
189289 , program_application_id
189290 , program_id
189291 , request_id
189292 )
189293 SELECT
189294 event_id
189295 , p_target_ledger_id
189296 , p_sla_ledger_id
189297 , p_language
189298 , object_name
189299 , object_type_code
189300 , line_number
189301 , source_application_id
189302 , source_type_code
189303 , source_code
189304 , SUBSTR(source_value ,1,1996)
189305 , SUBSTR(source_meaning,1,200)
189306 , xla_environment_pkg.g_Usr_Id
189307 , TRUNC(SYSDATE)
189308 , TRUNC(SYSDATE)
189309 , xla_environment_pkg.g_Usr_Id
189310 , xla_environment_pkg.g_Login_Id
189311 , TRUNC(SYSDATE)
189312 , xla_environment_pkg.g_Prog_Appl_Id
189313 , xla_environment_pkg.g_Prog_Id
189314 , xla_environment_pkg.g_Req_Id
189315 FROM (
189316 SELECT xet.event_id event_id
189317 , 0 line_number
189318 , CASE r
189319 WHEN 1 THEN 'CST_XLA_INV_HEADERS_V'
189320 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V'
189321
189322 ELSE null
189323 END object_name
189324 , CASE r
189325 WHEN 1 THEN 'HEADER'
189326 WHEN 2 THEN 'HEADER'
189327
189328 ELSE null
189329 END object_type_code
189330 , CASE r
189331 WHEN 1 THEN '707'
189332 WHEN 2 THEN '707'
189333
189334 ELSE null
189335 END source_application_id
189336 , 'S' source_type_code
189337 , CASE r
189338 WHEN 1 THEN 'DISTRIBUTION_TYPE'
189339 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR'
189340
189341 ELSE null
189342 END source_code
189343 , CASE r
189344 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
189345 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
189346
189347 ELSE null
189348 END source_value
189349 , CASE r
189350 WHEN 1 THEN fvl12.meaning
189351 WHEN 2 THEN fvl38.meaning
189352
189353 ELSE null
189354 END source_meaning
189355 FROM xla_events_gt xet
189356 , CST_XLA_INV_HEADERS_V h1
189357 , fnd_lookup_values fvl12
189358 , fnd_lookup_values fvl38
189359 ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
189360 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
189361 AND xet.event_type_code = C_EVENT_TYPE_CODE
189362 AND h1.event_id = xet.event_id
189363 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
189364 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
189365 AND fvl12.view_application_id(+) = 700
189366 AND fvl12.language(+) = USERENV('LANG')
189367 AND fvl38.lookup_type(+) = 'YES_NO'
189368 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
189369 AND fvl38.view_application_id(+) = 0
189370 AND fvl38.language(+) = USERENV('LANG')
189371
189372 )
189373 ;
189374 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
189375
189376 trace
189377 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
189378 ,p_level => C_LEVEL_STATEMENT
189379 ,p_module => l_log_module);
189380
189381 END IF;
189382 --
189383
189384
189385
189386 --
189387 INSERT INTO xla_diag_sources --line1
189388 (
189389 event_id
189390 , ledger_id
189391 , sla_ledger_id
189392 , description_language
189393 , object_name
189394 , object_type_code
189395 , line_number
189396 , source_application_id
189397 , source_type_code
189398 , source_code
189399 , source_value
189400 , source_meaning
189401 , created_by
189402 , creation_date
189403 , last_update_date
189404 , last_updated_by
189405 , last_update_login
189406 , program_update_date
189407 , program_application_id
189408 , program_id
189409 , request_id
189410 )
189411 SELECT event_id
189412 , p_target_ledger_id
189413 , p_sla_ledger_id
189414 , p_language
189415 , object_name
189416 , object_type_code
189417 , line_number
189418 , source_application_id
189419 , source_type_code
189420 , source_code
189421 , SUBSTR(source_value,1,1996)
189422 , SUBSTR(source_meaning,1,200)
189423 , xla_environment_pkg.g_Usr_Id
189424 , TRUNC(SYSDATE)
189425 , TRUNC(SYSDATE)
189426 , xla_environment_pkg.g_Usr_Id
189427 , xla_environment_pkg.g_Login_Id
189428 , TRUNC(SYSDATE)
189429 , xla_environment_pkg.g_Prog_Appl_Id
189430 , xla_environment_pkg.g_Prog_Id
189431 , xla_environment_pkg.g_Req_Id
189432 FROM (
189433 SELECT xet.event_id event_id
189434 , l2.line_number line_number
189435 , CASE r
189436 WHEN 1 THEN 'CST_XLA_INV_LINES_V'
189437 WHEN 2 THEN 'CST_XLA_INV_LINES_V'
189438 WHEN 3 THEN 'CST_XLA_INV_LINES_V'
189439 WHEN 4 THEN 'CST_XLA_INV_LINES_V'
189440 WHEN 5 THEN 'CST_XLA_INV_LINES_V'
189441 WHEN 6 THEN 'CST_XLA_INV_LINES_V'
189442 WHEN 7 THEN 'CST_XLA_INV_LINES_V'
189443 WHEN 8 THEN 'CST_XLA_INV_LINES_V'
189444 WHEN 9 THEN 'CST_XLA_INV_LINES_V'
189445
189446 ELSE null
189447 END object_name
189448 , CASE r
189449 WHEN 1 THEN 'LINE'
189450 WHEN 2 THEN 'LINE'
189451 WHEN 3 THEN 'LINE'
189452 WHEN 4 THEN 'LINE'
189453 WHEN 5 THEN 'LINE'
189454 WHEN 6 THEN 'LINE'
189455 WHEN 7 THEN 'LINE'
189456 WHEN 8 THEN 'LINE'
189457 WHEN 9 THEN 'LINE'
189458
189459 ELSE null
189460 END object_type_code
189461 , CASE r
189462 WHEN 1 THEN '707'
189463 WHEN 2 THEN '707'
189464 WHEN 3 THEN '707'
189465 WHEN 4 THEN '707'
189466 WHEN 5 THEN '707'
189467 WHEN 6 THEN '707'
189468 WHEN 7 THEN '707'
189469 WHEN 8 THEN '707'
189470 WHEN 9 THEN '707'
189471
189472 ELSE null
189473 END source_application_id
189474 , 'S' source_type_code
189475 , CASE r
189476 WHEN 1 THEN 'CODE_COMBINATION_ID'
189477 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER'
189478 WHEN 3 THEN 'CURRENCY_CODE'
189479 WHEN 4 THEN 'ENTERED_AMOUNT'
189480 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE'
189481 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE'
189482 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE'
189483 WHEN 8 THEN 'ACCOUNTED_AMOUNT'
189484 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE'
189485
189486 ELSE null
189487 END source_code
189488 , CASE r
189489 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
189490 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
189491 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
189492 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
189493 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
189494 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
189495 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
189496 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
189497 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
189498
189499 ELSE null
189500 END source_value
189501 , null source_meaning
189502 FROM xla_events_gt xet
189503 , CST_XLA_INV_LINES_V l2
189504 ,(select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
189505 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
189506 AND xet.event_type_code = C_EVENT_TYPE_CODE
189507 AND l2.event_id = xet.event_id
189508
189509 )
189510 ;
189511 --
189512 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
189513
189514 trace
189515 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
189516 ,p_level => C_LEVEL_STATEMENT
189517 ,p_module => l_log_module);
189518
189519 END IF;
189520
189521
189522 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
189523 trace
189524 (p_msg => 'END of insert_sources_288'
189525 ,p_level => C_LEVEL_PROCEDURE
189526 ,p_module => l_log_module);
189527 END IF;
189528 EXCEPTION
189529 WHEN xla_exceptions_pkg.application_exception THEN
189530 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
189531 trace
189532 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
189533 ,p_level => C_LEVEL_EXCEPTION
189534 ,p_module => l_log_module);
189535 END IF;
189536 RAISE;
189537 WHEN OTHERS THEN
189538 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
189539 trace
189540 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
189541 ,p_level => C_LEVEL_EXCEPTION
189542 ,p_module => l_log_module);
189543 END IF;
189544 xla_exceptions_pkg.raise_message
189545 (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_288');
189546 END insert_sources_288;
189547 --
189548
189549 ---------------------------------------
189550 --
189551 -- PRIVATE FUNCTION
189552 -- EventType_288
189553 --
189554 ----------------------------------------
189555 --
189556 FUNCTION EventType_288
189557 (p_application_id IN NUMBER
189558 ,p_base_ledger_id IN NUMBER
189559 ,p_target_ledger_id IN NUMBER
189560 ,p_language IN VARCHAR2
189561 ,p_currency_code IN VARCHAR2
189562 ,p_sla_ledger_id IN NUMBER
189563 ,p_pad_start_date IN DATE
189564 ,p_pad_end_date IN DATE
189565 ,p_primary_ledger_id IN NUMBER)
189566 RETURN BOOLEAN IS
189567 --
189568 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'UIPV_TXFR';
189569 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'USER_DEFINE';
189570
189571 l_calculate_acctd_flag VARCHAR2(1) :='Y';
189572 l_calculate_g_l_flag VARCHAR2(1) :='Y';
189573 --
189574 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
189575 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
189576 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
189577 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
189578 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
189579 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
189580 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
189581 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
189582 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
189583 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
189584 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
189585 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
189586 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
189587 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
189588 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
189589 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
189590 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
189591 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
189592 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
189593 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
189594 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
189595 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
189596 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
189597 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
189598 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
189599 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
189600
189601 l_event_id NUMBER;
189602 l_previous_event_id NUMBER;
189603 l_first_event_id NUMBER;
189604 l_last_event_id NUMBER;
189605
189606 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
189607 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
189608 --
189609 --
189610 l_result BOOLEAN := TRUE;
189611 l_rows NUMBER := 1000;
189612 l_event_type_name VARCHAR2(80) := 'User-defined Invoice Price Variance Transfer';
189613 l_event_class_name VARCHAR2(80) := 'User Defined Inventory Transaction Class';
189614 l_description VARCHAR2(4000);
189615 l_transaction_reversal NUMBER;
189616 l_ae_header_id NUMBER;
189617 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
189618 l_log_module VARCHAR2(240);
189619 --
189620 l_acct_reversal_source VARCHAR2(30);
189621 l_trx_reversal_source VARCHAR2(30);
189622
189623 l_continue_with_lines BOOLEAN := TRUE;
189624 --
189625 l_acc_rev_gl_date_source DATE; -- 4262811
189626 --
189627 type t_array_event_id is table of number index by binary_integer;
189628
189629 l_rec_array_event t_rec_array_event;
189630 l_null_rec_array_event t_rec_array_event;
189631 l_array_ae_header_id xla_number_array_type;
189632 l_actual_flag VARCHAR2(1) := NULL;
189633 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
189634 l_balance_type_code VARCHAR2(1) :=NULL;
189635 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
189636
189637 --
189638 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
189639 --
189640
189641 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
189642 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
189643
189644 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
189645 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
189646 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
189647 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
189648 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
189649 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
189650 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
189651 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
189652 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
189653
189654 l_array_source_12 t_array_source_12;
189655 l_array_source_12_meaning t_array_lookup_meaning;
189656 l_array_source_38 t_array_source_38;
189657 l_array_source_38_meaning t_array_lookup_meaning;
189658
189659 l_array_source_4 t_array_source_4;
189660 l_array_source_11 t_array_source_11;
189661 l_array_source_15 t_array_source_15;
189662 l_array_source_18 t_array_source_18;
189663 l_array_source_19 t_array_source_19;
189664 l_array_source_20 t_array_source_20;
189665 l_array_source_21 t_array_source_21;
189666 l_array_source_22 t_array_source_22;
189667 l_array_source_24 t_array_source_24;
189668
189669 --
189670 CURSOR header_cur
189671 IS
189672 SELECT /*+ leading(xet) cardinality(xet,1) */
189673 -- Event Type Code: UIPV_TXFR
189674 -- Event Class Code: USER_DEFINE
189675 xet.entity_id
189676 , xet.legal_entity_id
189677 , xet.entity_code
189678 , xet.transaction_number
189679 , xet.event_id
189680 , xet.event_class_code
189681 , xet.event_type_code
189682 , xet.event_number
189683 , xet.event_date
189684 , xet.transaction_date
189685 , xet.reference_num_1
189686 , xet.reference_num_2
189687 , xet.reference_num_3
189688 , xet.reference_num_4
189689 , xet.reference_char_1
189690 , xet.reference_char_2
189691 , xet.reference_char_3
189692 , xet.reference_char_4
189693 , xet.reference_date_1
189694 , xet.reference_date_2
189695 , xet.reference_date_3
189696 , xet.reference_date_4
189697 , xet.event_created_by
189698 , xet.budgetary_control_flag
189699 , h1.DISTRIBUTION_TYPE source_12
189700 , fvl12.meaning source_12_meaning
189701 , h1.TRANSFER_TO_GL_INDICATOR source_38
189702 , fvl38.meaning source_38_meaning
189703 FROM xla_events_gt xet
189704 , CST_XLA_INV_HEADERS_V h1
189705 , fnd_lookup_values fvl12
189706 , fnd_lookup_values fvl38
189707 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
189708 and xet.event_type_code = C_EVENT_TYPE_CODE
189709 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
189710 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
189711 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
189712 AND fvl12.view_application_id(+) = 700
189713 AND fvl12.language(+) = USERENV('LANG')
189714 AND fvl38.lookup_type(+) = 'YES_NO'
189715 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
189716 AND fvl38.view_application_id(+) = 0
189717 AND fvl38.language(+) = USERENV('LANG')
189718
189719 ORDER BY event_id
189720 ;
189721
189722
189723 --
189724 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
189725 IS
189726 SELECT /*+ leading(xet) cardinality(xet,1) */
189727 -- Event Type Code: UIPV_TXFR
189728 -- Event Class Code: USER_DEFINE
189729 xet.entity_id
189730 ,xet.legal_entity_id
189731 ,xet.entity_code
189732 ,xet.transaction_number
189733 ,xet.event_id
189734 ,xet.event_class_code
189735 ,xet.event_type_code
189736 ,xet.event_number
189737 ,xet.event_date
189738 ,xet.transaction_date
189739 ,xet.reference_num_1
189740 ,xet.reference_num_2
189741 ,xet.reference_num_3
189742 ,xet.reference_num_4
189743 ,xet.reference_char_1
189744 ,xet.reference_char_2
189745 ,xet.reference_char_3
189746 ,xet.reference_char_4
189747 ,xet.reference_date_1
189748 ,xet.reference_date_2
189749 ,xet.reference_date_3
189750 ,xet.reference_date_4
189751 ,xet.event_created_by
189752 ,xet.budgetary_control_flag , l2.LINE_NUMBER
189753 , l2.CODE_COMBINATION_ID source_4
189754 , l2.DISTRIBUTION_IDENTIFIER source_11
189755 , l2.CURRENCY_CODE source_15
189756 , l2.ENTERED_AMOUNT source_18
189757 , l2.CURRENCY_CONVERSION_DATE source_19
189758 , l2.CURRENCY_CONVERSION_RATE source_20
189759 , l2.CURRENCY_CONVERSION_TYPE source_21
189760 , l2.ACCOUNTED_AMOUNT source_22
189761 , l2.ACCOUNTING_LINE_TYPE_CODE source_24
189762 FROM xla_events_gt xet
189763 , CST_XLA_INV_LINES_V l2
189764 WHERE xet.event_id between x_first_event_id and x_last_event_id
189765 and xet.event_date between p_pad_start_date and p_pad_end_date
189766 and xet.event_type_code = C_EVENT_TYPE_CODE
189767 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
189768 ;
189769
189770 --
189771 BEGIN
189772 IF g_log_enabled THEN
189773 l_log_module := C_DEFAULT_MODULE||'.EventType_288';
189774 END IF;
189775 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
189776 trace
189777 (p_msg => 'BEGIN of EventType_288'
189778 ,p_level => C_LEVEL_PROCEDURE
189779 ,p_module => l_log_module);
189780 END IF;
189781
189782 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
189783 trace
189784 (p_msg => 'p_application_id = '||p_application_id||
189785 ' - p_base_ledger_id = '||p_base_ledger_id||
189786 ' - p_target_ledger_id = '||p_target_ledger_id||
189787 ' - p_language = '||p_language||
189788 ' - p_currency_code = '||p_currency_code||
189789 ' - p_sla_ledger_id = '||p_sla_ledger_id
189790 ,p_level => C_LEVEL_STATEMENT
189791 ,p_module => l_log_module);
189792 END IF;
189793 --
189794 -- initialze arrays
189795 --
189796 g_array_event.DELETE;
189797 l_rec_array_event := l_null_rec_array_event;
189798 --
189799 --------------------------------------
189800 -- 4262811 Initialze MPA Line Number
189801 --------------------------------------
189802 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
189803
189804 --
189805
189806 --
189807 OPEN header_cur;
189808 --
189809 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
189810 trace
189811 (p_msg => 'SQL - FETCH header_cur'
189812 ,p_level => C_LEVEL_STATEMENT
189813 ,p_module => l_log_module);
189814 END IF;
189815 --
189816 LOOP
189817 FETCH header_cur BULK COLLECT INTO
189818 l_array_entity_id
189819 , l_array_legal_entity_id
189820 , l_array_entity_code
189821 , l_array_transaction_num
189822 , l_array_event_id
189823 , l_array_class_code
189824 , l_array_event_type
189825 , l_array_event_number
189826 , l_array_event_date
189827 , l_array_transaction_date
189828 , l_array_reference_num_1
189829 , l_array_reference_num_2
189830 , l_array_reference_num_3
189831 , l_array_reference_num_4
189832 , l_array_reference_char_1
189833 , l_array_reference_char_2
189834 , l_array_reference_char_3
189835 , l_array_reference_char_4
189836 , l_array_reference_date_1
189837 , l_array_reference_date_2
189838 , l_array_reference_date_3
189839 , l_array_reference_date_4
189840 , l_array_event_created_by
189841 , l_array_budgetary_control_flag
189842 , l_array_source_12
189843 , l_array_source_12_meaning
189844 , l_array_source_38
189845 , l_array_source_38_meaning
189846 LIMIT l_rows;
189847 --
189848 IF (C_LEVEL_EVENT >= g_log_level) THEN
189849 trace
189850 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
189851 ,p_level => C_LEVEL_EVENT
189852 ,p_module => l_log_module);
189853 END IF;
189854 --
189855 EXIT WHEN l_array_entity_id.COUNT = 0;
189856
189857 -- initialize arrays
189858 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
189859 XLA_AE_LINES_PKG.g_rec_lines := NULL;
189860
189861 --
189862 -- Bug 4458708
189863 --
189864 XLA_AE_LINES_PKG.g_LineNumber := 0;
189865
189866
189867 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
189868 g_last_hdr_idx := l_array_event_id.LAST;
189869 --
189870 -- loop for the headers. Each iteration is for each header extract row
189871 -- fetched in header cursor
189872 --
189873 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
189874
189875 --
189876 -- set event info as cache for other routines to refer event attributes
189877 --
189878 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
189879 (p_application_id => p_application_id
189880 ,p_primary_ledger_id => p_primary_ledger_id
189881 ,p_base_ledger_id => p_base_ledger_id
189882 ,p_target_ledger_id => p_target_ledger_id
189883 ,p_entity_id => l_array_entity_id(hdr_idx)
189884 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
189885 ,p_entity_code => l_array_entity_code(hdr_idx)
189886 ,p_transaction_num => l_array_transaction_num(hdr_idx)
189887 ,p_event_id => l_array_event_id(hdr_idx)
189888 ,p_event_class_code => l_array_class_code(hdr_idx)
189889 ,p_event_type_code => l_array_event_type(hdr_idx)
189890 ,p_event_number => l_array_event_number(hdr_idx)
189891 ,p_event_date => l_array_event_date(hdr_idx)
189892 ,p_transaction_date => l_array_transaction_date(hdr_idx)
189893 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
189894 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
189895 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
189896 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
189897 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
189898 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
189899 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
189900 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
189901 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
189902 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
189903 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
189904 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
189905 ,p_event_created_by => l_array_event_created_by(hdr_idx)
189906 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
189907
189908 --
189909 -- set the status of entry to C_VALID (0)
189910 --
189911 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
189912
189913 --
189914 -- initialize a row for ae header
189915 --
189916 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
189917
189918 l_event_id := l_array_event_id(hdr_idx);
189919
189920 --
189921 -- storing the hdr_idx for event. May be used by line cursor.
189922 --
189923 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
189924
189925 --
189926 -- store sources from header extract. This can be improved to
189927 -- store only those sources from header extract that may be used in lines
189928 --
189929
189930 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
189931 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
189932 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
189933 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
189934
189935 --
189936 -- initilaize the status of ae headers for diffrent balance types
189937 -- the status is initialised to C_NOT_CREATED (2)
189938 --
189939 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
189940 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
189941 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
189942
189943 --
189944 -- call api to validate and store accounting attributes for header
189945 --
189946
189947 ------------------------------------------------------------
189948 -- Accrual Reversal : to get date for Standard Source (NONE)
189949 ------------------------------------------------------------
189950 l_acc_rev_gl_date_source := NULL;
189951
189952 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
189953 l_rec_acct_attrs.array_date_value(1) :=
189954 xla_ae_sources_pkg.GetSystemSourceDate(
189955 p_source_code => 'XLA_REFERENCE_DATE_1'
189956 , p_source_type_code => 'Y'
189957 , p_source_application_id => 602
189958 );
189959 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_TRANSFER_FLAG';
189960 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
189961
189962
189963 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
189964
189965 XLA_AE_HEADER_PKG.SetJeCategoryName;
189966
189967 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
189968 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
189969 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
189970 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
189971 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
189972
189973
189974 -- No header level analytical criteria
189975
189976 --
189977 --accounting attribute enhancement, bug 3612931
189978 --
189979 l_trx_reversal_source := SUBSTR(NULL, 1,30);
189980
189981 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
189982 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
189983
189984 xla_accounting_err_pkg.build_message
189985 (p_appli_s_name => 'XLA'
189986 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
189987 ,p_token_1 => 'ACCT_ATTR_NAME'
189988 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
189989 ,p_token_2 => 'PRODUCT_NAME'
189990 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
189991 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
189992 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
189993 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
189994
189995 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
189996 --
189997 -- following sets the accounting attributes needed to reverse
189998 -- accounting for a distributeion
189999 --
190000 xla_ae_lines_pkg.SetTrxReversalAttrs
190001 (p_event_id => l_event_id
190002 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
190003 ,p_trx_reversal_source => l_trx_reversal_source);
190004
190005 END IF;
190006
190007
190008 ----------------------------------------------------------------
190009 -- 4262811 - update the header statuses to invalid in need be
190010 ----------------------------------------------------------------
190011 --
190012 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
190013
190014
190015 -----------------------------------------------
190016 -- No accrual reversal for the event class/type
190017 -----------------------------------------------
190018 ----------------------------------------------------------------
190019
190020 --
190021 -- this ends the header loop iteration for one bulk fetch
190022 --
190023 END LOOP;
190024
190025 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
190026 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
190027
190028 --
190029 -- insert dummy rows into lines gt table that were created due to
190030 -- transaction reversals
190031 --
190032 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
190033 l_result := XLA_AE_LINES_PKG.InsertLines;
190034 END IF;
190035
190036 --
190037 -- reset the temp_line_num for each set of events fetched from header
190038 -- cursor rather than doing it for each new event in line cursor
190039 -- Bug 3939231
190040 --
190041 xla_ae_lines_pkg.g_temp_line_num := 0;
190042
190043
190044
190045 --
190046 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
190047 --
190048 --
190049 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
190050
190051 trace
190052 (p_msg => 'SQL - FETCH line_cur'
190053 ,p_level => C_LEVEL_STATEMENT
190054 ,p_module => l_log_module);
190055
190056 END IF;
190057 --
190058 --
190059 LOOP
190060 --
190061 FETCH line_cur BULK COLLECT INTO
190062 l_array_entity_id
190063 , l_array_legal_entity_id
190064 , l_array_entity_code
190065 , l_array_transaction_num
190066 , l_array_event_id
190067 , l_array_class_code
190068 , l_array_event_type
190069 , l_array_event_number
190070 , l_array_event_date
190071 , l_array_transaction_date
190072 , l_array_reference_num_1
190073 , l_array_reference_num_2
190074 , l_array_reference_num_3
190075 , l_array_reference_num_4
190076 , l_array_reference_char_1
190077 , l_array_reference_char_2
190078 , l_array_reference_char_3
190079 , l_array_reference_char_4
190080 , l_array_reference_date_1
190081 , l_array_reference_date_2
190082 , l_array_reference_date_3
190083 , l_array_reference_date_4
190084 , l_array_event_created_by
190085 , l_array_budgetary_control_flag
190086 , l_array_extract_line_num
190087 , l_array_source_4
190088 , l_array_source_11
190089 , l_array_source_15
190090 , l_array_source_18
190091 , l_array_source_19
190092 , l_array_source_20
190093 , l_array_source_21
190094 , l_array_source_22
190095 , l_array_source_24
190096 LIMIT l_rows;
190097
190098 --
190099 IF (C_LEVEL_EVENT >= g_log_level) THEN
190100 trace
190101 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
190102 ,p_level => C_LEVEL_EVENT
190103 ,p_module => l_log_module);
190104 END IF;
190105 --
190106 EXIT WHEN l_array_entity_id.count = 0;
190107
190108 XLA_AE_LINES_PKG.g_rec_lines := null;
190109
190110 --
190111 -- Bug 4458708
190112 --
190113 XLA_AE_LINES_PKG.g_LineNumber := 0;
190114 --
190115 --
190116
190117 FOR Idx IN 1..l_array_event_id.count LOOP
190118 --
190119 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
190120 --
190121 l_event_id := l_array_event_id(idx); -- 5648433
190122
190123 --
190124 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
190125 --
190126
190127 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
190128 (g_array_event(l_event_id).array_value_num('header_index'))
190129 ,'N'
190130 ) <> 'Y'
190131 THEN
190132 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
190133 trace
190134 (p_msg => 'Trancaction revesal option is not Y '
190135 ,p_level => C_LEVEL_STATEMENT
190136 ,p_module => l_log_module);
190137 END IF;
190138
190139 --
190140 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
190141 --
190142 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
190143 --
190144 -- set event info as cache for other routines to refer event attributes
190145 --
190146
190147 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
190148 l_previous_event_id := l_event_id;
190149
190150 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
190151 (p_application_id => p_application_id
190152 ,p_primary_ledger_id => p_primary_ledger_id
190153 ,p_base_ledger_id => p_base_ledger_id
190154 ,p_target_ledger_id => p_target_ledger_id
190155 ,p_entity_id => l_array_entity_id(Idx)
190156 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
190157 ,p_entity_code => l_array_entity_code(Idx)
190158 ,p_transaction_num => l_array_transaction_num(Idx)
190159 ,p_event_id => l_array_event_id(Idx)
190160 ,p_event_class_code => l_array_class_code(Idx)
190161 ,p_event_type_code => l_array_event_type(Idx)
190162 ,p_event_number => l_array_event_number(Idx)
190163 ,p_event_date => l_array_event_date(Idx)
190164 ,p_transaction_date => l_array_transaction_date(Idx)
190165 ,p_reference_num_1 => l_array_reference_num_1(Idx)
190166 ,p_reference_num_2 => l_array_reference_num_2(Idx)
190167 ,p_reference_num_3 => l_array_reference_num_3(Idx)
190168 ,p_reference_num_4 => l_array_reference_num_4(Idx)
190169 ,p_reference_char_1 => l_array_reference_char_1(Idx)
190170 ,p_reference_char_2 => l_array_reference_char_2(Idx)
190171 ,p_reference_char_3 => l_array_reference_char_3(Idx)
190172 ,p_reference_char_4 => l_array_reference_char_4(Idx)
190173 ,p_reference_date_1 => l_array_reference_date_1(Idx)
190174 ,p_reference_date_2 => l_array_reference_date_2(Idx)
190175 ,p_reference_date_3 => l_array_reference_date_3(Idx)
190176 ,p_reference_date_4 => l_array_reference_date_4(Idx)
190177 ,p_event_created_by => l_array_event_created_by(Idx)
190178 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
190179 --
190180 END IF;
190181
190182
190183
190184 --
190185 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
190186
190187 l_acct_reversal_source := SUBSTR(NULL, 1,30);
190188
190189 IF l_continue_with_lines THEN
190190 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
190191 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
190192
190193 xla_accounting_err_pkg.build_message
190194 (p_appli_s_name => 'XLA'
190195 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
190196 ,p_token_1 => 'LINE_NUMBER'
190197 ,p_value_1 => l_array_extract_line_num(Idx)
190198 ,p_token_2 => 'PRODUCT_NAME'
190199 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
190200 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
190201 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
190202 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
190203
190204 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
190205 --
190206 -- following sets the accounting attributes needed to reverse
190207 -- accounting for a distributeion
190208 --
190209
190210 --
190211 -- 5217187
190212 --
190213 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
190214 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
190215 g_array_event(l_event_id).array_value_num('header_index'));
190216 --
190217 --
190218
190219 -- No reversal code generated
190220
190221 xla_ae_lines_pkg.SetAcctReversalAttrs
190222 (p_event_id => l_event_id
190223 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
190224 ,p_calculate_acctd_flag => l_calculate_acctd_flag
190225 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
190226 END IF;
190227
190228 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
190229 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
190230
190231 --
190232 AcctLineType_22 (
190233 p_application_id => p_application_id
190234 ,p_event_id => l_event_id
190235 ,p_calculate_acctd_flag => l_calculate_acctd_flag
190236 ,p_calculate_g_l_flag => l_calculate_g_l_flag
190237 ,p_actual_flag => l_actual_flag
190238 ,p_balance_type_code => l_balance_type_code
190239 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
190240
190241 , p_source_4 => l_array_source_4(Idx)
190242 , p_source_11 => l_array_source_11(Idx)
190243 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
190244 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
190245 , p_source_15 => l_array_source_15(Idx)
190246 , p_source_18 => l_array_source_18(Idx)
190247 , p_source_19 => l_array_source_19(Idx)
190248 , p_source_20 => l_array_source_20(Idx)
190249 , p_source_21 => l_array_source_21(Idx)
190250 , p_source_22 => l_array_source_22(Idx)
190251 , p_source_24 => l_array_source_24(Idx)
190252 );
190253 If(l_balance_type_code = 'A') THEN
190254 l_actual_gain_loss_ref := l_gain_or_loss_ref;
190255 END IF;
190256
190257 --
190258
190259
190260 --
190261 AcctLineType_40 (
190262 p_application_id => p_application_id
190263 ,p_event_id => l_event_id
190264 ,p_calculate_acctd_flag => l_calculate_acctd_flag
190265 ,p_calculate_g_l_flag => l_calculate_g_l_flag
190266 ,p_actual_flag => l_actual_flag
190267 ,p_balance_type_code => l_balance_type_code
190268 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
190269
190270 , p_source_4 => l_array_source_4(Idx)
190271 , p_source_11 => l_array_source_11(Idx)
190272 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
190273 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
190274 , p_source_15 => l_array_source_15(Idx)
190275 , p_source_18 => l_array_source_18(Idx)
190276 , p_source_19 => l_array_source_19(Idx)
190277 , p_source_20 => l_array_source_20(Idx)
190278 , p_source_21 => l_array_source_21(Idx)
190279 , p_source_22 => l_array_source_22(Idx)
190280 , p_source_24 => l_array_source_24(Idx)
190281 );
190282 If(l_balance_type_code = 'A') THEN
190283 l_actual_gain_loss_ref := l_gain_or_loss_ref;
190284 END IF;
190285
190286 --
190287
190288
190289 --
190290 AcctLineType_121 (
190291 p_application_id => p_application_id
190292 ,p_event_id => l_event_id
190293 ,p_calculate_acctd_flag => l_calculate_acctd_flag
190294 ,p_calculate_g_l_flag => l_calculate_g_l_flag
190295 ,p_actual_flag => l_actual_flag
190296 ,p_balance_type_code => l_balance_type_code
190297 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
190298
190299 , p_source_4 => l_array_source_4(Idx)
190300 , p_source_11 => l_array_source_11(Idx)
190301 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
190302 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
190303 , p_source_15 => l_array_source_15(Idx)
190304 , p_source_18 => l_array_source_18(Idx)
190305 , p_source_19 => l_array_source_19(Idx)
190306 , p_source_20 => l_array_source_20(Idx)
190307 , p_source_21 => l_array_source_21(Idx)
190308 , p_source_22 => l_array_source_22(Idx)
190309 , p_source_24 => l_array_source_24(Idx)
190310 );
190311 If(l_balance_type_code = 'A') THEN
190312 l_actual_gain_loss_ref := l_gain_or_loss_ref;
190313 END IF;
190314
190315 --
190316
190317
190318 --
190319 AcctLineType_143 (
190320 p_application_id => p_application_id
190321 ,p_event_id => l_event_id
190322 ,p_calculate_acctd_flag => l_calculate_acctd_flag
190323 ,p_calculate_g_l_flag => l_calculate_g_l_flag
190324 ,p_actual_flag => l_actual_flag
190325 ,p_balance_type_code => l_balance_type_code
190326 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
190327
190328 , p_source_4 => l_array_source_4(Idx)
190329 , p_source_11 => l_array_source_11(Idx)
190330 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
190331 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
190332 , p_source_15 => l_array_source_15(Idx)
190333 , p_source_18 => l_array_source_18(Idx)
190334 , p_source_19 => l_array_source_19(Idx)
190335 , p_source_20 => l_array_source_20(Idx)
190336 , p_source_21 => l_array_source_21(Idx)
190337 , p_source_22 => l_array_source_22(Idx)
190338 , p_source_24 => l_array_source_24(Idx)
190339 );
190340 If(l_balance_type_code = 'A') THEN
190341 l_actual_gain_loss_ref := l_gain_or_loss_ref;
190342 END IF;
190343
190344 --
190345
190346 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
190347 -- or secondary ledger that has different currency with primary
190348 -- or alc that is calculated by sla
190349 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
190350 (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'))
190351
190352 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
190353 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
190354 AND (l_actual_flag = 'A')) THEN
190355 XLA_AE_LINES_PKG.CreateGainOrLossLines(
190356 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
190357 ,p_application_id => p_application_id
190358 ,p_amb_context_code => 'DEFAULT'
190359 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
190360 ,p_event_class_code => C_EVENT_CLASS_CODE
190361 ,p_event_type_code => C_EVENT_TYPE_CODE
190362
190363 ,p_gain_ccid => -1
190364 ,p_loss_ccid => -1
190365
190366 ,p_actual_flag => l_actual_flag
190367 ,p_enc_flag => null
190368 ,p_actual_g_l_ref => l_actual_gain_loss_ref
190369 ,p_enc_g_l_ref => null
190370 );
190371 END IF;
190372 END IF;
190373 END IF;
190374
190375 ELSE
190376 --
190377 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
190378 --
190379 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
190380 trace
190381 (p_msg => 'Trancaction revesal option is Y'
190382 ,p_level => C_LEVEL_STATEMENT
190383 ,p_module => l_log_module);
190384 END IF;
190385 END IF;
190386
190387 END LOOP;
190388 l_result := XLA_AE_LINES_PKG.InsertLines ;
190389 end loop;
190390 close line_cur;
190391
190392
190393 --
190394 -- insert headers into xla_ae_headers_gt table
190395 --
190396 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
190397
190398 -- insert into errors table here.
190399
190400 END LOOP;
190401
190402 --
190403 -- 4865292
190404 --
190405 -- Compare g_hdr_extract_count with event count in
190406 -- CreateHeadersAndLines.
190407 --
190408 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
190409
190410 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
190411 trace (p_msg => '# rows extracted from header extract objects '
190412 || ' (running total): '
190413 || g_hdr_extract_count
190414 ,p_level => C_LEVEL_STATEMENT
190415 ,p_module => l_log_module);
190416 END IF;
190417
190418 CLOSE header_cur;
190419 --
190420
190421 --
190422 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
190423 trace
190424 (p_msg => 'END of EventType_288'
190425 ,p_level => C_LEVEL_PROCEDURE
190426 ,p_module => l_log_module);
190427 END IF;
190428 --
190429 RETURN l_result;
190430 EXCEPTION
190431 WHEN xla_exceptions_pkg.application_exception THEN
190432
190433 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
190434
190435
190436 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
190437
190438 RAISE;
190439
190440 WHEN NO_DATA_FOUND THEN
190441
190442 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
190443 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
190444
190445 FOR header_record IN header_cur
190446 LOOP
190447 l_array_header_events(header_record.event_id) := header_record.event_id;
190448 END LOOP;
190449
190450 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
190451 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
190452
190453 fnd_file.put_line(fnd_file.LOG, ' ');
190454 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
190455 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
190456 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
190457
190458 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
190459 LOOP
190460 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
190461 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
190462 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
190463 END IF;
190464 END LOOP;
190465
190466 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
190467 fnd_file.put_line(fnd_file.LOG, ' ');
190468
190469
190470 xla_exceptions_pkg.raise_message
190471 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventType_288');
190472
190473
190474 WHEN OTHERS THEN
190475 xla_exceptions_pkg.raise_message
190476 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventType_288');
190477 END EventType_288;
190478 --
190479
190480 ---------------------------------------
190481 --
190482 -- PRIVATE PROCEDURE
190483 -- insert_sources_289
190484 --
190485 ----------------------------------------
190486 --
190487 PROCEDURE insert_sources_289(
190488 p_target_ledger_id IN NUMBER
190489 , p_language IN VARCHAR2
190490 , p_sla_ledger_id IN NUMBER
190491 , p_pad_start_date IN DATE
190492 , p_pad_end_date IN DATE
190493 )
190494 IS
190495
190496 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'UMISC_ISSUE';
190497 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'USER_DEFINE';
190498 p_apps_owner VARCHAR2(30);
190499 l_log_module VARCHAR2(240);
190500 BEGIN
190501 IF g_log_enabled THEN
190502 l_log_module := C_DEFAULT_MODULE||'.insert_sources_289';
190503 END IF;
190504 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
190505
190506 trace
190507 (p_msg => 'BEGIN of insert_sources_289'
190508 ,p_level => C_LEVEL_PROCEDURE
190509 ,p_module => l_log_module);
190510
190511 END IF;
190512
190513 -- select APPS owner
190514 SELECT oracle_username
190515 INTO p_apps_owner
190516 FROM fnd_oracle_userid
190517 WHERE read_only_flag = 'U'
190518 ;
190519
190520 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
190521 trace
190522 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
190523 ' - p_language = '||p_language||
190524 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
190525 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
190526 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
190527 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
190528 ,p_level => C_LEVEL_STATEMENT
190529 ,p_module => l_log_module);
190530 END IF;
190531
190532
190533 --
190534 INSERT INTO xla_diag_sources --hdr1
190535 (
190536 event_id
190537 , ledger_id
190538 , sla_ledger_id
190539 , description_language
190540 , object_name
190541 , object_type_code
190542 , line_number
190543 , source_application_id
190544 , source_type_code
190545 , source_code
190546 , source_value
190547 , source_meaning
190548 , created_by
190549 , creation_date
190550 , last_update_date
190551 , last_updated_by
190552 , last_update_login
190553 , program_update_date
190554 , program_application_id
190555 , program_id
190556 , request_id
190557 )
190558 SELECT
190559 event_id
190560 , p_target_ledger_id
190561 , p_sla_ledger_id
190562 , p_language
190563 , object_name
190564 , object_type_code
190565 , line_number
190566 , source_application_id
190567 , source_type_code
190568 , source_code
190569 , SUBSTR(source_value ,1,1996)
190570 , SUBSTR(source_meaning,1,200)
190571 , xla_environment_pkg.g_Usr_Id
190572 , TRUNC(SYSDATE)
190573 , TRUNC(SYSDATE)
190574 , xla_environment_pkg.g_Usr_Id
190575 , xla_environment_pkg.g_Login_Id
190576 , TRUNC(SYSDATE)
190577 , xla_environment_pkg.g_Prog_Appl_Id
190578 , xla_environment_pkg.g_Prog_Id
190579 , xla_environment_pkg.g_Req_Id
190580 FROM (
190581 SELECT xet.event_id event_id
190582 , 0 line_number
190583 , CASE r
190584 WHEN 1 THEN 'CST_XLA_INV_HEADERS_V'
190585 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V'
190586
190587 ELSE null
190588 END object_name
190589 , CASE r
190590 WHEN 1 THEN 'HEADER'
190591 WHEN 2 THEN 'HEADER'
190592
190593 ELSE null
190594 END object_type_code
190595 , CASE r
190596 WHEN 1 THEN '707'
190597 WHEN 2 THEN '707'
190598
190599 ELSE null
190600 END source_application_id
190601 , 'S' source_type_code
190602 , CASE r
190603 WHEN 1 THEN 'DISTRIBUTION_TYPE'
190604 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR'
190605
190606 ELSE null
190607 END source_code
190608 , CASE r
190609 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
190610 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
190611
190612 ELSE null
190613 END source_value
190614 , CASE r
190615 WHEN 1 THEN fvl12.meaning
190616 WHEN 2 THEN fvl38.meaning
190617
190618 ELSE null
190619 END source_meaning
190620 FROM xla_events_gt xet
190621 , CST_XLA_INV_HEADERS_V h1
190622 , fnd_lookup_values fvl12
190623 , fnd_lookup_values fvl38
190624 ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
190625 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
190626 AND xet.event_type_code = C_EVENT_TYPE_CODE
190627 AND h1.event_id = xet.event_id
190628 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
190629 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
190630 AND fvl12.view_application_id(+) = 700
190631 AND fvl12.language(+) = USERENV('LANG')
190632 AND fvl38.lookup_type(+) = 'YES_NO'
190633 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
190634 AND fvl38.view_application_id(+) = 0
190635 AND fvl38.language(+) = USERENV('LANG')
190636
190637 )
190638 ;
190639 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
190640
190641 trace
190642 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
190643 ,p_level => C_LEVEL_STATEMENT
190644 ,p_module => l_log_module);
190645
190646 END IF;
190647 --
190648
190649
190650
190651 --
190652 INSERT INTO xla_diag_sources --line1
190653 (
190654 event_id
190655 , ledger_id
190656 , sla_ledger_id
190657 , description_language
190658 , object_name
190659 , object_type_code
190660 , line_number
190661 , source_application_id
190662 , source_type_code
190663 , source_code
190664 , source_value
190665 , source_meaning
190666 , created_by
190667 , creation_date
190668 , last_update_date
190669 , last_updated_by
190670 , last_update_login
190671 , program_update_date
190672 , program_application_id
190673 , program_id
190674 , request_id
190675 )
190676 SELECT event_id
190677 , p_target_ledger_id
190678 , p_sla_ledger_id
190679 , p_language
190680 , object_name
190681 , object_type_code
190682 , line_number
190683 , source_application_id
190684 , source_type_code
190685 , source_code
190686 , SUBSTR(source_value,1,1996)
190687 , SUBSTR(source_meaning,1,200)
190688 , xla_environment_pkg.g_Usr_Id
190689 , TRUNC(SYSDATE)
190690 , TRUNC(SYSDATE)
190691 , xla_environment_pkg.g_Usr_Id
190692 , xla_environment_pkg.g_Login_Id
190693 , TRUNC(SYSDATE)
190694 , xla_environment_pkg.g_Prog_Appl_Id
190695 , xla_environment_pkg.g_Prog_Id
190696 , xla_environment_pkg.g_Req_Id
190697 FROM (
190698 SELECT xet.event_id event_id
190699 , l2.line_number line_number
190700 , CASE r
190701 WHEN 1 THEN 'CST_XLA_INV_LINES_V'
190702 WHEN 2 THEN 'CST_XLA_INV_LINES_V'
190703 WHEN 3 THEN 'CST_XLA_INV_LINES_V'
190704 WHEN 4 THEN 'CST_XLA_INV_LINES_V'
190705 WHEN 5 THEN 'CST_XLA_INV_LINES_V'
190706 WHEN 6 THEN 'CST_XLA_INV_LINES_V'
190707 WHEN 7 THEN 'CST_XLA_INV_LINES_V'
190708 WHEN 8 THEN 'CST_XLA_INV_LINES_V'
190709 WHEN 9 THEN 'CST_XLA_INV_LINES_V'
190710
190711 ELSE null
190712 END object_name
190713 , CASE r
190714 WHEN 1 THEN 'LINE'
190715 WHEN 2 THEN 'LINE'
190716 WHEN 3 THEN 'LINE'
190717 WHEN 4 THEN 'LINE'
190718 WHEN 5 THEN 'LINE'
190719 WHEN 6 THEN 'LINE'
190720 WHEN 7 THEN 'LINE'
190721 WHEN 8 THEN 'LINE'
190722 WHEN 9 THEN 'LINE'
190723
190724 ELSE null
190725 END object_type_code
190726 , CASE r
190727 WHEN 1 THEN '707'
190728 WHEN 2 THEN '707'
190729 WHEN 3 THEN '707'
190730 WHEN 4 THEN '707'
190731 WHEN 5 THEN '707'
190732 WHEN 6 THEN '707'
190733 WHEN 7 THEN '707'
190734 WHEN 8 THEN '707'
190735 WHEN 9 THEN '707'
190736
190737 ELSE null
190738 END source_application_id
190739 , 'S' source_type_code
190740 , CASE r
190741 WHEN 1 THEN 'CODE_COMBINATION_ID'
190742 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER'
190743 WHEN 3 THEN 'CURRENCY_CODE'
190744 WHEN 4 THEN 'ENTERED_AMOUNT'
190745 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE'
190746 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE'
190747 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE'
190748 WHEN 8 THEN 'ACCOUNTED_AMOUNT'
190749 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE'
190750
190751 ELSE null
190752 END source_code
190753 , CASE r
190754 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
190755 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
190756 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
190757 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
190758 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
190759 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
190760 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
190761 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
190762 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
190763
190764 ELSE null
190765 END source_value
190766 , null source_meaning
190767 FROM xla_events_gt xet
190768 , CST_XLA_INV_LINES_V l2
190769 ,(select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
190770 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
190771 AND xet.event_type_code = C_EVENT_TYPE_CODE
190772 AND l2.event_id = xet.event_id
190773
190774 )
190775 ;
190776 --
190777 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
190778
190779 trace
190780 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
190781 ,p_level => C_LEVEL_STATEMENT
190782 ,p_module => l_log_module);
190783
190784 END IF;
190785
190786
190787 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
190788 trace
190789 (p_msg => 'END of insert_sources_289'
190790 ,p_level => C_LEVEL_PROCEDURE
190791 ,p_module => l_log_module);
190792 END IF;
190793 EXCEPTION
190794 WHEN xla_exceptions_pkg.application_exception THEN
190795 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
190796 trace
190797 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
190798 ,p_level => C_LEVEL_EXCEPTION
190799 ,p_module => l_log_module);
190800 END IF;
190801 RAISE;
190802 WHEN OTHERS THEN
190803 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
190804 trace
190805 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
190806 ,p_level => C_LEVEL_EXCEPTION
190807 ,p_module => l_log_module);
190808 END IF;
190809 xla_exceptions_pkg.raise_message
190810 (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_289');
190811 END insert_sources_289;
190812 --
190813
190814 ---------------------------------------
190815 --
190816 -- PRIVATE FUNCTION
190817 -- EventType_289
190818 --
190819 ----------------------------------------
190820 --
190821 FUNCTION EventType_289
190822 (p_application_id IN NUMBER
190823 ,p_base_ledger_id IN NUMBER
190824 ,p_target_ledger_id IN NUMBER
190825 ,p_language IN VARCHAR2
190826 ,p_currency_code IN VARCHAR2
190827 ,p_sla_ledger_id IN NUMBER
190828 ,p_pad_start_date IN DATE
190829 ,p_pad_end_date IN DATE
190830 ,p_primary_ledger_id IN NUMBER)
190831 RETURN BOOLEAN IS
190832 --
190833 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'UMISC_ISSUE';
190834 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'USER_DEFINE';
190835
190836 l_calculate_acctd_flag VARCHAR2(1) :='Y';
190837 l_calculate_g_l_flag VARCHAR2(1) :='Y';
190838 --
190839 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
190840 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
190841 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
190842 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
190843 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
190844 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
190845 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
190846 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
190847 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
190848 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
190849 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
190850 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
190851 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
190852 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
190853 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
190854 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
190855 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
190856 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
190857 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
190858 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
190859 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
190860 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
190861 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
190862 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
190863 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
190864 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
190865
190866 l_event_id NUMBER;
190867 l_previous_event_id NUMBER;
190868 l_first_event_id NUMBER;
190869 l_last_event_id NUMBER;
190870
190871 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
190872 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
190873 --
190874 --
190875 l_result BOOLEAN := TRUE;
190876 l_rows NUMBER := 1000;
190877 l_event_type_name VARCHAR2(80) := 'User-defined Issue';
190878 l_event_class_name VARCHAR2(80) := 'User Defined Inventory Transaction Class';
190879 l_description VARCHAR2(4000);
190880 l_transaction_reversal NUMBER;
190881 l_ae_header_id NUMBER;
190882 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
190883 l_log_module VARCHAR2(240);
190884 --
190885 l_acct_reversal_source VARCHAR2(30);
190886 l_trx_reversal_source VARCHAR2(30);
190887
190888 l_continue_with_lines BOOLEAN := TRUE;
190889 --
190890 l_acc_rev_gl_date_source DATE; -- 4262811
190891 --
190892 type t_array_event_id is table of number index by binary_integer;
190893
190894 l_rec_array_event t_rec_array_event;
190895 l_null_rec_array_event t_rec_array_event;
190896 l_array_ae_header_id xla_number_array_type;
190897 l_actual_flag VARCHAR2(1) := NULL;
190898 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
190899 l_balance_type_code VARCHAR2(1) :=NULL;
190900 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
190901
190902 --
190903 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
190904 --
190905
190906 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
190907 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
190908
190909 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
190910 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
190911 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
190912 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
190913 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
190914 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
190915 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
190916 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
190917 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
190918
190919 l_array_source_12 t_array_source_12;
190920 l_array_source_12_meaning t_array_lookup_meaning;
190921 l_array_source_38 t_array_source_38;
190922 l_array_source_38_meaning t_array_lookup_meaning;
190923
190924 l_array_source_4 t_array_source_4;
190925 l_array_source_11 t_array_source_11;
190926 l_array_source_15 t_array_source_15;
190927 l_array_source_18 t_array_source_18;
190928 l_array_source_19 t_array_source_19;
190929 l_array_source_20 t_array_source_20;
190930 l_array_source_21 t_array_source_21;
190931 l_array_source_22 t_array_source_22;
190932 l_array_source_24 t_array_source_24;
190933
190934 --
190935 CURSOR header_cur
190936 IS
190937 SELECT /*+ leading(xet) cardinality(xet,1) */
190938 -- Event Type Code: UMISC_ISSUE
190939 -- Event Class Code: USER_DEFINE
190940 xet.entity_id
190941 , xet.legal_entity_id
190942 , xet.entity_code
190943 , xet.transaction_number
190944 , xet.event_id
190945 , xet.event_class_code
190946 , xet.event_type_code
190947 , xet.event_number
190948 , xet.event_date
190949 , xet.transaction_date
190950 , xet.reference_num_1
190951 , xet.reference_num_2
190952 , xet.reference_num_3
190953 , xet.reference_num_4
190954 , xet.reference_char_1
190955 , xet.reference_char_2
190956 , xet.reference_char_3
190957 , xet.reference_char_4
190958 , xet.reference_date_1
190959 , xet.reference_date_2
190960 , xet.reference_date_3
190961 , xet.reference_date_4
190962 , xet.event_created_by
190963 , xet.budgetary_control_flag
190964 , h1.DISTRIBUTION_TYPE source_12
190965 , fvl12.meaning source_12_meaning
190966 , h1.TRANSFER_TO_GL_INDICATOR source_38
190967 , fvl38.meaning source_38_meaning
190968 FROM xla_events_gt xet
190969 , CST_XLA_INV_HEADERS_V h1
190970 , fnd_lookup_values fvl12
190971 , fnd_lookup_values fvl38
190972 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
190973 and xet.event_type_code = C_EVENT_TYPE_CODE
190974 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
190975 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
190976 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
190977 AND fvl12.view_application_id(+) = 700
190978 AND fvl12.language(+) = USERENV('LANG')
190979 AND fvl38.lookup_type(+) = 'YES_NO'
190980 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
190981 AND fvl38.view_application_id(+) = 0
190982 AND fvl38.language(+) = USERENV('LANG')
190983
190984 ORDER BY event_id
190985 ;
190986
190987
190988 --
190989 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
190990 IS
190991 SELECT /*+ leading(xet) cardinality(xet,1) */
190992 -- Event Type Code: UMISC_ISSUE
190993 -- Event Class Code: USER_DEFINE
190994 xet.entity_id
190995 ,xet.legal_entity_id
190996 ,xet.entity_code
190997 ,xet.transaction_number
190998 ,xet.event_id
190999 ,xet.event_class_code
191000 ,xet.event_type_code
191001 ,xet.event_number
191002 ,xet.event_date
191003 ,xet.transaction_date
191004 ,xet.reference_num_1
191005 ,xet.reference_num_2
191006 ,xet.reference_num_3
191007 ,xet.reference_num_4
191008 ,xet.reference_char_1
191009 ,xet.reference_char_2
191010 ,xet.reference_char_3
191011 ,xet.reference_char_4
191012 ,xet.reference_date_1
191013 ,xet.reference_date_2
191014 ,xet.reference_date_3
191015 ,xet.reference_date_4
191016 ,xet.event_created_by
191017 ,xet.budgetary_control_flag , l2.LINE_NUMBER
191018 , l2.CODE_COMBINATION_ID source_4
191019 , l2.DISTRIBUTION_IDENTIFIER source_11
191020 , l2.CURRENCY_CODE source_15
191021 , l2.ENTERED_AMOUNT source_18
191022 , l2.CURRENCY_CONVERSION_DATE source_19
191023 , l2.CURRENCY_CONVERSION_RATE source_20
191024 , l2.CURRENCY_CONVERSION_TYPE source_21
191025 , l2.ACCOUNTED_AMOUNT source_22
191026 , l2.ACCOUNTING_LINE_TYPE_CODE source_24
191027 FROM xla_events_gt xet
191028 , CST_XLA_INV_LINES_V l2
191029 WHERE xet.event_id between x_first_event_id and x_last_event_id
191030 and xet.event_date between p_pad_start_date and p_pad_end_date
191031 and xet.event_type_code = C_EVENT_TYPE_CODE
191032 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
191033 ;
191034
191035 --
191036 BEGIN
191037 IF g_log_enabled THEN
191038 l_log_module := C_DEFAULT_MODULE||'.EventType_289';
191039 END IF;
191040 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
191041 trace
191042 (p_msg => 'BEGIN of EventType_289'
191043 ,p_level => C_LEVEL_PROCEDURE
191044 ,p_module => l_log_module);
191045 END IF;
191046
191047 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
191048 trace
191049 (p_msg => 'p_application_id = '||p_application_id||
191050 ' - p_base_ledger_id = '||p_base_ledger_id||
191051 ' - p_target_ledger_id = '||p_target_ledger_id||
191052 ' - p_language = '||p_language||
191053 ' - p_currency_code = '||p_currency_code||
191054 ' - p_sla_ledger_id = '||p_sla_ledger_id
191055 ,p_level => C_LEVEL_STATEMENT
191056 ,p_module => l_log_module);
191057 END IF;
191058 --
191059 -- initialze arrays
191060 --
191061 g_array_event.DELETE;
191062 l_rec_array_event := l_null_rec_array_event;
191063 --
191064 --------------------------------------
191065 -- 4262811 Initialze MPA Line Number
191066 --------------------------------------
191067 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
191068
191069 --
191070
191071 --
191072 OPEN header_cur;
191073 --
191074 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
191075 trace
191076 (p_msg => 'SQL - FETCH header_cur'
191077 ,p_level => C_LEVEL_STATEMENT
191078 ,p_module => l_log_module);
191079 END IF;
191080 --
191081 LOOP
191082 FETCH header_cur BULK COLLECT INTO
191083 l_array_entity_id
191084 , l_array_legal_entity_id
191085 , l_array_entity_code
191086 , l_array_transaction_num
191087 , l_array_event_id
191088 , l_array_class_code
191089 , l_array_event_type
191090 , l_array_event_number
191091 , l_array_event_date
191092 , l_array_transaction_date
191093 , l_array_reference_num_1
191094 , l_array_reference_num_2
191095 , l_array_reference_num_3
191096 , l_array_reference_num_4
191097 , l_array_reference_char_1
191098 , l_array_reference_char_2
191099 , l_array_reference_char_3
191100 , l_array_reference_char_4
191101 , l_array_reference_date_1
191102 , l_array_reference_date_2
191103 , l_array_reference_date_3
191104 , l_array_reference_date_4
191105 , l_array_event_created_by
191106 , l_array_budgetary_control_flag
191107 , l_array_source_12
191108 , l_array_source_12_meaning
191109 , l_array_source_38
191110 , l_array_source_38_meaning
191111 LIMIT l_rows;
191112 --
191113 IF (C_LEVEL_EVENT >= g_log_level) THEN
191114 trace
191115 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
191116 ,p_level => C_LEVEL_EVENT
191117 ,p_module => l_log_module);
191118 END IF;
191119 --
191120 EXIT WHEN l_array_entity_id.COUNT = 0;
191121
191122 -- initialize arrays
191123 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
191124 XLA_AE_LINES_PKG.g_rec_lines := NULL;
191125
191126 --
191127 -- Bug 4458708
191128 --
191129 XLA_AE_LINES_PKG.g_LineNumber := 0;
191130
191131
191132 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
191133 g_last_hdr_idx := l_array_event_id.LAST;
191134 --
191135 -- loop for the headers. Each iteration is for each header extract row
191136 -- fetched in header cursor
191137 --
191138 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
191139
191140 --
191141 -- set event info as cache for other routines to refer event attributes
191142 --
191143 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
191144 (p_application_id => p_application_id
191145 ,p_primary_ledger_id => p_primary_ledger_id
191146 ,p_base_ledger_id => p_base_ledger_id
191147 ,p_target_ledger_id => p_target_ledger_id
191148 ,p_entity_id => l_array_entity_id(hdr_idx)
191149 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
191150 ,p_entity_code => l_array_entity_code(hdr_idx)
191151 ,p_transaction_num => l_array_transaction_num(hdr_idx)
191152 ,p_event_id => l_array_event_id(hdr_idx)
191153 ,p_event_class_code => l_array_class_code(hdr_idx)
191154 ,p_event_type_code => l_array_event_type(hdr_idx)
191155 ,p_event_number => l_array_event_number(hdr_idx)
191156 ,p_event_date => l_array_event_date(hdr_idx)
191157 ,p_transaction_date => l_array_transaction_date(hdr_idx)
191158 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
191159 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
191160 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
191161 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
191162 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
191163 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
191164 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
191165 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
191166 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
191167 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
191168 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
191169 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
191170 ,p_event_created_by => l_array_event_created_by(hdr_idx)
191171 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
191172
191173 --
191174 -- set the status of entry to C_VALID (0)
191175 --
191176 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
191177
191178 --
191179 -- initialize a row for ae header
191180 --
191181 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
191182
191183 l_event_id := l_array_event_id(hdr_idx);
191184
191185 --
191186 -- storing the hdr_idx for event. May be used by line cursor.
191187 --
191188 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
191189
191190 --
191191 -- store sources from header extract. This can be improved to
191192 -- store only those sources from header extract that may be used in lines
191193 --
191194
191195 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
191196 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
191197 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
191198 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
191199
191200 --
191201 -- initilaize the status of ae headers for diffrent balance types
191202 -- the status is initialised to C_NOT_CREATED (2)
191203 --
191204 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
191205 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
191206 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
191207
191208 --
191209 -- call api to validate and store accounting attributes for header
191210 --
191211
191212 ------------------------------------------------------------
191213 -- Accrual Reversal : to get date for Standard Source (NONE)
191214 ------------------------------------------------------------
191215 l_acc_rev_gl_date_source := NULL;
191216
191217 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
191218 l_rec_acct_attrs.array_date_value(1) :=
191219 xla_ae_sources_pkg.GetSystemSourceDate(
191220 p_source_code => 'XLA_REFERENCE_DATE_1'
191221 , p_source_type_code => 'Y'
191222 , p_source_application_id => 602
191223 );
191224 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_TRANSFER_FLAG';
191225 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
191226
191227
191228 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
191229
191230 XLA_AE_HEADER_PKG.SetJeCategoryName;
191231
191232 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
191233 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
191234 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
191235 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
191236 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
191237
191238
191239 -- No header level analytical criteria
191240
191241 --
191242 --accounting attribute enhancement, bug 3612931
191243 --
191244 l_trx_reversal_source := SUBSTR(NULL, 1,30);
191245
191246 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
191247 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
191248
191249 xla_accounting_err_pkg.build_message
191250 (p_appli_s_name => 'XLA'
191251 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
191252 ,p_token_1 => 'ACCT_ATTR_NAME'
191253 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
191254 ,p_token_2 => 'PRODUCT_NAME'
191255 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
191256 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
191257 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
191258 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
191259
191260 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
191261 --
191262 -- following sets the accounting attributes needed to reverse
191263 -- accounting for a distributeion
191264 --
191265 xla_ae_lines_pkg.SetTrxReversalAttrs
191266 (p_event_id => l_event_id
191267 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
191268 ,p_trx_reversal_source => l_trx_reversal_source);
191269
191270 END IF;
191271
191272
191273 ----------------------------------------------------------------
191274 -- 4262811 - update the header statuses to invalid in need be
191275 ----------------------------------------------------------------
191276 --
191277 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
191278
191279
191280 -----------------------------------------------
191281 -- No accrual reversal for the event class/type
191282 -----------------------------------------------
191283 ----------------------------------------------------------------
191284
191285 --
191286 -- this ends the header loop iteration for one bulk fetch
191287 --
191288 END LOOP;
191289
191290 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
191291 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
191292
191293 --
191294 -- insert dummy rows into lines gt table that were created due to
191295 -- transaction reversals
191296 --
191297 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
191298 l_result := XLA_AE_LINES_PKG.InsertLines;
191299 END IF;
191300
191301 --
191302 -- reset the temp_line_num for each set of events fetched from header
191303 -- cursor rather than doing it for each new event in line cursor
191304 -- Bug 3939231
191305 --
191306 xla_ae_lines_pkg.g_temp_line_num := 0;
191307
191308
191309
191310 --
191311 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
191312 --
191313 --
191314 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
191315
191316 trace
191317 (p_msg => 'SQL - FETCH line_cur'
191318 ,p_level => C_LEVEL_STATEMENT
191319 ,p_module => l_log_module);
191320
191321 END IF;
191322 --
191323 --
191324 LOOP
191325 --
191326 FETCH line_cur BULK COLLECT INTO
191327 l_array_entity_id
191328 , l_array_legal_entity_id
191329 , l_array_entity_code
191330 , l_array_transaction_num
191331 , l_array_event_id
191332 , l_array_class_code
191333 , l_array_event_type
191334 , l_array_event_number
191335 , l_array_event_date
191336 , l_array_transaction_date
191337 , l_array_reference_num_1
191338 , l_array_reference_num_2
191339 , l_array_reference_num_3
191340 , l_array_reference_num_4
191341 , l_array_reference_char_1
191342 , l_array_reference_char_2
191343 , l_array_reference_char_3
191344 , l_array_reference_char_4
191345 , l_array_reference_date_1
191346 , l_array_reference_date_2
191347 , l_array_reference_date_3
191348 , l_array_reference_date_4
191349 , l_array_event_created_by
191350 , l_array_budgetary_control_flag
191351 , l_array_extract_line_num
191352 , l_array_source_4
191353 , l_array_source_11
191354 , l_array_source_15
191355 , l_array_source_18
191356 , l_array_source_19
191357 , l_array_source_20
191358 , l_array_source_21
191359 , l_array_source_22
191360 , l_array_source_24
191361 LIMIT l_rows;
191362
191363 --
191364 IF (C_LEVEL_EVENT >= g_log_level) THEN
191365 trace
191366 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
191367 ,p_level => C_LEVEL_EVENT
191368 ,p_module => l_log_module);
191369 END IF;
191370 --
191371 EXIT WHEN l_array_entity_id.count = 0;
191372
191373 XLA_AE_LINES_PKG.g_rec_lines := null;
191374
191375 --
191376 -- Bug 4458708
191377 --
191378 XLA_AE_LINES_PKG.g_LineNumber := 0;
191379 --
191380 --
191381
191382 FOR Idx IN 1..l_array_event_id.count LOOP
191383 --
191384 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
191385 --
191386 l_event_id := l_array_event_id(idx); -- 5648433
191387
191388 --
191389 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
191390 --
191391
191392 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
191393 (g_array_event(l_event_id).array_value_num('header_index'))
191394 ,'N'
191395 ) <> 'Y'
191396 THEN
191397 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
191398 trace
191399 (p_msg => 'Trancaction revesal option is not Y '
191400 ,p_level => C_LEVEL_STATEMENT
191401 ,p_module => l_log_module);
191402 END IF;
191403
191404 --
191405 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
191406 --
191407 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
191408 --
191409 -- set event info as cache for other routines to refer event attributes
191410 --
191411
191412 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
191413 l_previous_event_id := l_event_id;
191414
191415 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
191416 (p_application_id => p_application_id
191417 ,p_primary_ledger_id => p_primary_ledger_id
191418 ,p_base_ledger_id => p_base_ledger_id
191419 ,p_target_ledger_id => p_target_ledger_id
191420 ,p_entity_id => l_array_entity_id(Idx)
191421 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
191422 ,p_entity_code => l_array_entity_code(Idx)
191423 ,p_transaction_num => l_array_transaction_num(Idx)
191424 ,p_event_id => l_array_event_id(Idx)
191425 ,p_event_class_code => l_array_class_code(Idx)
191426 ,p_event_type_code => l_array_event_type(Idx)
191427 ,p_event_number => l_array_event_number(Idx)
191428 ,p_event_date => l_array_event_date(Idx)
191429 ,p_transaction_date => l_array_transaction_date(Idx)
191430 ,p_reference_num_1 => l_array_reference_num_1(Idx)
191431 ,p_reference_num_2 => l_array_reference_num_2(Idx)
191432 ,p_reference_num_3 => l_array_reference_num_3(Idx)
191433 ,p_reference_num_4 => l_array_reference_num_4(Idx)
191434 ,p_reference_char_1 => l_array_reference_char_1(Idx)
191435 ,p_reference_char_2 => l_array_reference_char_2(Idx)
191436 ,p_reference_char_3 => l_array_reference_char_3(Idx)
191437 ,p_reference_char_4 => l_array_reference_char_4(Idx)
191438 ,p_reference_date_1 => l_array_reference_date_1(Idx)
191439 ,p_reference_date_2 => l_array_reference_date_2(Idx)
191440 ,p_reference_date_3 => l_array_reference_date_3(Idx)
191441 ,p_reference_date_4 => l_array_reference_date_4(Idx)
191442 ,p_event_created_by => l_array_event_created_by(Idx)
191443 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
191444 --
191445 END IF;
191446
191447
191448
191449 --
191450 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
191451
191452 l_acct_reversal_source := SUBSTR(NULL, 1,30);
191453
191454 IF l_continue_with_lines THEN
191455 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
191456 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
191457
191458 xla_accounting_err_pkg.build_message
191459 (p_appli_s_name => 'XLA'
191460 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
191461 ,p_token_1 => 'LINE_NUMBER'
191462 ,p_value_1 => l_array_extract_line_num(Idx)
191463 ,p_token_2 => 'PRODUCT_NAME'
191464 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
191465 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
191466 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
191467 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
191468
191469 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
191470 --
191471 -- following sets the accounting attributes needed to reverse
191472 -- accounting for a distributeion
191473 --
191474
191475 --
191476 -- 5217187
191477 --
191478 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
191479 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
191480 g_array_event(l_event_id).array_value_num('header_index'));
191481 --
191482 --
191483
191484 -- No reversal code generated
191485
191486 xla_ae_lines_pkg.SetAcctReversalAttrs
191487 (p_event_id => l_event_id
191488 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
191489 ,p_calculate_acctd_flag => l_calculate_acctd_flag
191490 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
191491 END IF;
191492
191493 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
191494 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
191495
191496 --
191497 AcctLineType_26 (
191498 p_application_id => p_application_id
191499 ,p_event_id => l_event_id
191500 ,p_calculate_acctd_flag => l_calculate_acctd_flag
191501 ,p_calculate_g_l_flag => l_calculate_g_l_flag
191502 ,p_actual_flag => l_actual_flag
191503 ,p_balance_type_code => l_balance_type_code
191504 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
191505
191506 , p_source_4 => l_array_source_4(Idx)
191507 , p_source_11 => l_array_source_11(Idx)
191508 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
191509 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
191510 , p_source_15 => l_array_source_15(Idx)
191511 , p_source_18 => l_array_source_18(Idx)
191512 , p_source_19 => l_array_source_19(Idx)
191513 , p_source_20 => l_array_source_20(Idx)
191514 , p_source_21 => l_array_source_21(Idx)
191515 , p_source_22 => l_array_source_22(Idx)
191516 , p_source_24 => l_array_source_24(Idx)
191517 );
191518 If(l_balance_type_code = 'A') THEN
191519 l_actual_gain_loss_ref := l_gain_or_loss_ref;
191520 END IF;
191521
191522 --
191523
191524
191525 --
191526 AcctLineType_150 (
191527 p_application_id => p_application_id
191528 ,p_event_id => l_event_id
191529 ,p_calculate_acctd_flag => l_calculate_acctd_flag
191530 ,p_calculate_g_l_flag => l_calculate_g_l_flag
191531 ,p_actual_flag => l_actual_flag
191532 ,p_balance_type_code => l_balance_type_code
191533 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
191534
191535 , p_source_4 => l_array_source_4(Idx)
191536 , p_source_11 => l_array_source_11(Idx)
191537 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
191538 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
191539 , p_source_15 => l_array_source_15(Idx)
191540 , p_source_18 => l_array_source_18(Idx)
191541 , p_source_19 => l_array_source_19(Idx)
191542 , p_source_20 => l_array_source_20(Idx)
191543 , p_source_21 => l_array_source_21(Idx)
191544 , p_source_22 => l_array_source_22(Idx)
191545 , p_source_24 => l_array_source_24(Idx)
191546 );
191547 If(l_balance_type_code = 'A') THEN
191548 l_actual_gain_loss_ref := l_gain_or_loss_ref;
191549 END IF;
191550
191551 --
191552
191553
191554 --
191555 AcctLineType_174 (
191556 p_application_id => p_application_id
191557 ,p_event_id => l_event_id
191558 ,p_calculate_acctd_flag => l_calculate_acctd_flag
191559 ,p_calculate_g_l_flag => l_calculate_g_l_flag
191560 ,p_actual_flag => l_actual_flag
191561 ,p_balance_type_code => l_balance_type_code
191562 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
191563
191564 , p_source_4 => l_array_source_4(Idx)
191565 , p_source_11 => l_array_source_11(Idx)
191566 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
191567 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
191568 , p_source_15 => l_array_source_15(Idx)
191569 , p_source_18 => l_array_source_18(Idx)
191570 , p_source_19 => l_array_source_19(Idx)
191571 , p_source_20 => l_array_source_20(Idx)
191572 , p_source_21 => l_array_source_21(Idx)
191573 , p_source_22 => l_array_source_22(Idx)
191574 , p_source_24 => l_array_source_24(Idx)
191575 );
191576 If(l_balance_type_code = 'A') THEN
191577 l_actual_gain_loss_ref := l_gain_or_loss_ref;
191578 END IF;
191579
191580 --
191581
191582 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
191583 -- or secondary ledger that has different currency with primary
191584 -- or alc that is calculated by sla
191585 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
191586 (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'))
191587
191588 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
191589 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
191590 AND (l_actual_flag = 'A')) THEN
191591 XLA_AE_LINES_PKG.CreateGainOrLossLines(
191592 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
191593 ,p_application_id => p_application_id
191594 ,p_amb_context_code => 'DEFAULT'
191595 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
191596 ,p_event_class_code => C_EVENT_CLASS_CODE
191597 ,p_event_type_code => C_EVENT_TYPE_CODE
191598
191599 ,p_gain_ccid => -1
191600 ,p_loss_ccid => -1
191601
191602 ,p_actual_flag => l_actual_flag
191603 ,p_enc_flag => null
191604 ,p_actual_g_l_ref => l_actual_gain_loss_ref
191605 ,p_enc_g_l_ref => null
191606 );
191607 END IF;
191608 END IF;
191609 END IF;
191610
191611 ELSE
191612 --
191613 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
191614 --
191615 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
191616 trace
191617 (p_msg => 'Trancaction revesal option is Y'
191618 ,p_level => C_LEVEL_STATEMENT
191619 ,p_module => l_log_module);
191620 END IF;
191621 END IF;
191622
191623 END LOOP;
191624 l_result := XLA_AE_LINES_PKG.InsertLines ;
191625 end loop;
191626 close line_cur;
191627
191628
191629 --
191630 -- insert headers into xla_ae_headers_gt table
191631 --
191632 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
191633
191634 -- insert into errors table here.
191635
191636 END LOOP;
191637
191638 --
191639 -- 4865292
191640 --
191641 -- Compare g_hdr_extract_count with event count in
191642 -- CreateHeadersAndLines.
191643 --
191644 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
191645
191646 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
191647 trace (p_msg => '# rows extracted from header extract objects '
191648 || ' (running total): '
191649 || g_hdr_extract_count
191650 ,p_level => C_LEVEL_STATEMENT
191651 ,p_module => l_log_module);
191652 END IF;
191653
191654 CLOSE header_cur;
191655 --
191656
191657 --
191658 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
191659 trace
191660 (p_msg => 'END of EventType_289'
191661 ,p_level => C_LEVEL_PROCEDURE
191662 ,p_module => l_log_module);
191663 END IF;
191664 --
191665 RETURN l_result;
191666 EXCEPTION
191667 WHEN xla_exceptions_pkg.application_exception THEN
191668
191669 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
191670
191671
191672 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
191673
191674 RAISE;
191675
191676 WHEN NO_DATA_FOUND THEN
191677
191678 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
191679 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
191680
191681 FOR header_record IN header_cur
191682 LOOP
191683 l_array_header_events(header_record.event_id) := header_record.event_id;
191684 END LOOP;
191685
191686 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
191687 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
191688
191689 fnd_file.put_line(fnd_file.LOG, ' ');
191690 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
191691 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
191692 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
191693
191694 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
191695 LOOP
191696 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
191697 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
191698 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
191699 END IF;
191700 END LOOP;
191701
191702 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
191703 fnd_file.put_line(fnd_file.LOG, ' ');
191704
191705
191706 xla_exceptions_pkg.raise_message
191707 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventType_289');
191708
191709
191710 WHEN OTHERS THEN
191711 xla_exceptions_pkg.raise_message
191712 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventType_289');
191713 END EventType_289;
191714 --
191715
191716 ---------------------------------------
191717 --
191718 -- PRIVATE PROCEDURE
191719 -- insert_sources_290
191720 --
191721 ----------------------------------------
191722 --
191723 PROCEDURE insert_sources_290(
191724 p_target_ledger_id IN NUMBER
191725 , p_language IN VARCHAR2
191726 , p_sla_ledger_id IN NUMBER
191727 , p_pad_start_date IN DATE
191728 , p_pad_end_date IN DATE
191729 )
191730 IS
191731
191732 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'UMISC_RCPT';
191733 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'USER_DEFINE';
191734 p_apps_owner VARCHAR2(30);
191735 l_log_module VARCHAR2(240);
191736 BEGIN
191737 IF g_log_enabled THEN
191738 l_log_module := C_DEFAULT_MODULE||'.insert_sources_290';
191739 END IF;
191740 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
191741
191742 trace
191743 (p_msg => 'BEGIN of insert_sources_290'
191744 ,p_level => C_LEVEL_PROCEDURE
191745 ,p_module => l_log_module);
191746
191747 END IF;
191748
191749 -- select APPS owner
191750 SELECT oracle_username
191751 INTO p_apps_owner
191752 FROM fnd_oracle_userid
191753 WHERE read_only_flag = 'U'
191754 ;
191755
191756 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
191757 trace
191758 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
191759 ' - p_language = '||p_language||
191760 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
191761 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
191762 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
191763 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
191764 ,p_level => C_LEVEL_STATEMENT
191765 ,p_module => l_log_module);
191766 END IF;
191767
191768
191769 --
191770 INSERT INTO xla_diag_sources --hdr1
191771 (
191772 event_id
191773 , ledger_id
191774 , sla_ledger_id
191775 , description_language
191776 , object_name
191777 , object_type_code
191778 , line_number
191779 , source_application_id
191780 , source_type_code
191781 , source_code
191782 , source_value
191783 , source_meaning
191784 , created_by
191785 , creation_date
191786 , last_update_date
191787 , last_updated_by
191788 , last_update_login
191789 , program_update_date
191790 , program_application_id
191791 , program_id
191792 , request_id
191793 )
191794 SELECT
191795 event_id
191796 , p_target_ledger_id
191797 , p_sla_ledger_id
191798 , p_language
191799 , object_name
191800 , object_type_code
191801 , line_number
191802 , source_application_id
191803 , source_type_code
191804 , source_code
191805 , SUBSTR(source_value ,1,1996)
191806 , SUBSTR(source_meaning,1,200)
191807 , xla_environment_pkg.g_Usr_Id
191808 , TRUNC(SYSDATE)
191809 , TRUNC(SYSDATE)
191810 , xla_environment_pkg.g_Usr_Id
191811 , xla_environment_pkg.g_Login_Id
191812 , TRUNC(SYSDATE)
191813 , xla_environment_pkg.g_Prog_Appl_Id
191814 , xla_environment_pkg.g_Prog_Id
191815 , xla_environment_pkg.g_Req_Id
191816 FROM (
191817 SELECT xet.event_id event_id
191818 , 0 line_number
191819 , CASE r
191820 WHEN 1 THEN 'CST_XLA_INV_HEADERS_V'
191821 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V'
191822
191823 ELSE null
191824 END object_name
191825 , CASE r
191826 WHEN 1 THEN 'HEADER'
191827 WHEN 2 THEN 'HEADER'
191828
191829 ELSE null
191830 END object_type_code
191831 , CASE r
191832 WHEN 1 THEN '707'
191833 WHEN 2 THEN '707'
191834
191835 ELSE null
191836 END source_application_id
191837 , 'S' source_type_code
191838 , CASE r
191839 WHEN 1 THEN 'DISTRIBUTION_TYPE'
191840 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR'
191841
191842 ELSE null
191843 END source_code
191844 , CASE r
191845 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
191846 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
191847
191848 ELSE null
191849 END source_value
191850 , CASE r
191851 WHEN 1 THEN fvl12.meaning
191852 WHEN 2 THEN fvl38.meaning
191853
191854 ELSE null
191855 END source_meaning
191856 FROM xla_events_gt xet
191857 , CST_XLA_INV_HEADERS_V h1
191858 , fnd_lookup_values fvl12
191859 , fnd_lookup_values fvl38
191860 ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
191861 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
191862 AND xet.event_type_code = C_EVENT_TYPE_CODE
191863 AND h1.event_id = xet.event_id
191864 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
191865 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
191866 AND fvl12.view_application_id(+) = 700
191867 AND fvl12.language(+) = USERENV('LANG')
191868 AND fvl38.lookup_type(+) = 'YES_NO'
191869 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
191870 AND fvl38.view_application_id(+) = 0
191871 AND fvl38.language(+) = USERENV('LANG')
191872
191873 )
191874 ;
191875 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
191876
191877 trace
191878 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
191879 ,p_level => C_LEVEL_STATEMENT
191880 ,p_module => l_log_module);
191881
191882 END IF;
191883 --
191884
191885
191886
191887 --
191888 INSERT INTO xla_diag_sources --line1
191889 (
191890 event_id
191891 , ledger_id
191892 , sla_ledger_id
191893 , description_language
191894 , object_name
191895 , object_type_code
191896 , line_number
191897 , source_application_id
191898 , source_type_code
191899 , source_code
191900 , source_value
191901 , source_meaning
191902 , created_by
191903 , creation_date
191904 , last_update_date
191905 , last_updated_by
191906 , last_update_login
191907 , program_update_date
191908 , program_application_id
191909 , program_id
191910 , request_id
191911 )
191912 SELECT event_id
191913 , p_target_ledger_id
191914 , p_sla_ledger_id
191915 , p_language
191916 , object_name
191917 , object_type_code
191918 , line_number
191919 , source_application_id
191920 , source_type_code
191921 , source_code
191922 , SUBSTR(source_value,1,1996)
191923 , SUBSTR(source_meaning,1,200)
191924 , xla_environment_pkg.g_Usr_Id
191925 , TRUNC(SYSDATE)
191926 , TRUNC(SYSDATE)
191927 , xla_environment_pkg.g_Usr_Id
191928 , xla_environment_pkg.g_Login_Id
191929 , TRUNC(SYSDATE)
191930 , xla_environment_pkg.g_Prog_Appl_Id
191931 , xla_environment_pkg.g_Prog_Id
191932 , xla_environment_pkg.g_Req_Id
191933 FROM (
191934 SELECT xet.event_id event_id
191935 , l2.line_number line_number
191936 , CASE r
191937 WHEN 1 THEN 'CST_XLA_INV_LINES_V'
191938 WHEN 2 THEN 'CST_XLA_INV_LINES_V'
191939 WHEN 3 THEN 'CST_XLA_INV_LINES_V'
191940 WHEN 4 THEN 'CST_XLA_INV_LINES_V'
191941 WHEN 5 THEN 'CST_XLA_INV_LINES_V'
191942 WHEN 6 THEN 'CST_XLA_INV_LINES_V'
191943 WHEN 7 THEN 'CST_XLA_INV_LINES_V'
191944 WHEN 8 THEN 'CST_XLA_INV_LINES_V'
191945 WHEN 9 THEN 'CST_XLA_INV_LINES_V'
191946
191947 ELSE null
191948 END object_name
191949 , CASE r
191950 WHEN 1 THEN 'LINE'
191951 WHEN 2 THEN 'LINE'
191952 WHEN 3 THEN 'LINE'
191953 WHEN 4 THEN 'LINE'
191954 WHEN 5 THEN 'LINE'
191955 WHEN 6 THEN 'LINE'
191956 WHEN 7 THEN 'LINE'
191957 WHEN 8 THEN 'LINE'
191958 WHEN 9 THEN 'LINE'
191959
191960 ELSE null
191961 END object_type_code
191962 , CASE r
191963 WHEN 1 THEN '707'
191964 WHEN 2 THEN '707'
191965 WHEN 3 THEN '707'
191966 WHEN 4 THEN '707'
191967 WHEN 5 THEN '707'
191968 WHEN 6 THEN '707'
191969 WHEN 7 THEN '707'
191970 WHEN 8 THEN '707'
191971 WHEN 9 THEN '707'
191972
191973 ELSE null
191974 END source_application_id
191975 , 'S' source_type_code
191976 , CASE r
191977 WHEN 1 THEN 'CODE_COMBINATION_ID'
191978 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER'
191979 WHEN 3 THEN 'CURRENCY_CODE'
191980 WHEN 4 THEN 'ENTERED_AMOUNT'
191981 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE'
191982 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE'
191983 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE'
191984 WHEN 8 THEN 'ACCOUNTED_AMOUNT'
191985 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE'
191986
191987 ELSE null
191988 END source_code
191989 , CASE r
191990 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
191991 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
191992 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
191993 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
191994 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
191995 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
191996 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
191997 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
191998 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
191999
192000 ELSE null
192001 END source_value
192002 , null source_meaning
192003 FROM xla_events_gt xet
192004 , CST_XLA_INV_LINES_V l2
192005 ,(select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
192006 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
192007 AND xet.event_type_code = C_EVENT_TYPE_CODE
192008 AND l2.event_id = xet.event_id
192009
192010 )
192011 ;
192012 --
192013 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
192014
192015 trace
192016 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
192017 ,p_level => C_LEVEL_STATEMENT
192018 ,p_module => l_log_module);
192019
192020 END IF;
192021
192022
192023 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
192024 trace
192025 (p_msg => 'END of insert_sources_290'
192026 ,p_level => C_LEVEL_PROCEDURE
192027 ,p_module => l_log_module);
192028 END IF;
192029 EXCEPTION
192030 WHEN xla_exceptions_pkg.application_exception THEN
192031 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
192032 trace
192033 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
192034 ,p_level => C_LEVEL_EXCEPTION
192035 ,p_module => l_log_module);
192036 END IF;
192037 RAISE;
192038 WHEN OTHERS THEN
192039 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
192040 trace
192041 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
192042 ,p_level => C_LEVEL_EXCEPTION
192043 ,p_module => l_log_module);
192044 END IF;
192045 xla_exceptions_pkg.raise_message
192046 (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_290');
192047 END insert_sources_290;
192048 --
192049
192050 ---------------------------------------
192051 --
192052 -- PRIVATE FUNCTION
192053 -- EventType_290
192054 --
192055 ----------------------------------------
192056 --
192057 FUNCTION EventType_290
192058 (p_application_id IN NUMBER
192059 ,p_base_ledger_id IN NUMBER
192060 ,p_target_ledger_id IN NUMBER
192061 ,p_language IN VARCHAR2
192062 ,p_currency_code IN VARCHAR2
192063 ,p_sla_ledger_id IN NUMBER
192064 ,p_pad_start_date IN DATE
192065 ,p_pad_end_date IN DATE
192066 ,p_primary_ledger_id IN NUMBER)
192067 RETURN BOOLEAN IS
192068 --
192069 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'UMISC_RCPT';
192070 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'USER_DEFINE';
192071
192072 l_calculate_acctd_flag VARCHAR2(1) :='Y';
192073 l_calculate_g_l_flag VARCHAR2(1) :='Y';
192074 --
192075 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
192076 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
192077 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
192078 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
192079 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
192080 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
192081 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
192082 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
192083 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
192084 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
192085 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
192086 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
192087 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
192088 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
192089 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
192090 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
192091 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
192092 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
192093 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
192094 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
192095 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
192096 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
192097 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
192098 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
192099 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
192100 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
192101
192102 l_event_id NUMBER;
192103 l_previous_event_id NUMBER;
192104 l_first_event_id NUMBER;
192105 l_last_event_id NUMBER;
192106
192107 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
192108 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
192109 --
192110 --
192111 l_result BOOLEAN := TRUE;
192112 l_rows NUMBER := 1000;
192113 l_event_type_name VARCHAR2(80) := 'User-defined Receipt';
192114 l_event_class_name VARCHAR2(80) := 'User Defined Inventory Transaction Class';
192115 l_description VARCHAR2(4000);
192116 l_transaction_reversal NUMBER;
192117 l_ae_header_id NUMBER;
192118 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
192119 l_log_module VARCHAR2(240);
192120 --
192121 l_acct_reversal_source VARCHAR2(30);
192122 l_trx_reversal_source VARCHAR2(30);
192123
192124 l_continue_with_lines BOOLEAN := TRUE;
192125 --
192126 l_acc_rev_gl_date_source DATE; -- 4262811
192127 --
192128 type t_array_event_id is table of number index by binary_integer;
192129
192130 l_rec_array_event t_rec_array_event;
192131 l_null_rec_array_event t_rec_array_event;
192132 l_array_ae_header_id xla_number_array_type;
192133 l_actual_flag VARCHAR2(1) := NULL;
192134 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
192135 l_balance_type_code VARCHAR2(1) :=NULL;
192136 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
192137
192138 --
192139 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
192140 --
192141
192142 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
192143 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
192144
192145 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
192146 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
192147 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
192148 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
192149 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
192150 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
192151 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
192152 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
192153 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
192154
192155 l_array_source_12 t_array_source_12;
192156 l_array_source_12_meaning t_array_lookup_meaning;
192157 l_array_source_38 t_array_source_38;
192158 l_array_source_38_meaning t_array_lookup_meaning;
192159
192160 l_array_source_4 t_array_source_4;
192161 l_array_source_11 t_array_source_11;
192162 l_array_source_15 t_array_source_15;
192163 l_array_source_18 t_array_source_18;
192164 l_array_source_19 t_array_source_19;
192165 l_array_source_20 t_array_source_20;
192166 l_array_source_21 t_array_source_21;
192167 l_array_source_22 t_array_source_22;
192168 l_array_source_24 t_array_source_24;
192169
192170 --
192171 CURSOR header_cur
192172 IS
192173 SELECT /*+ leading(xet) cardinality(xet,1) */
192174 -- Event Type Code: UMISC_RCPT
192175 -- Event Class Code: USER_DEFINE
192176 xet.entity_id
192177 , xet.legal_entity_id
192178 , xet.entity_code
192179 , xet.transaction_number
192180 , xet.event_id
192181 , xet.event_class_code
192182 , xet.event_type_code
192183 , xet.event_number
192184 , xet.event_date
192185 , xet.transaction_date
192186 , xet.reference_num_1
192187 , xet.reference_num_2
192188 , xet.reference_num_3
192189 , xet.reference_num_4
192190 , xet.reference_char_1
192191 , xet.reference_char_2
192192 , xet.reference_char_3
192193 , xet.reference_char_4
192194 , xet.reference_date_1
192195 , xet.reference_date_2
192196 , xet.reference_date_3
192197 , xet.reference_date_4
192198 , xet.event_created_by
192199 , xet.budgetary_control_flag
192200 , h1.DISTRIBUTION_TYPE source_12
192201 , fvl12.meaning source_12_meaning
192202 , h1.TRANSFER_TO_GL_INDICATOR source_38
192203 , fvl38.meaning source_38_meaning
192204 FROM xla_events_gt xet
192205 , CST_XLA_INV_HEADERS_V h1
192206 , fnd_lookup_values fvl12
192207 , fnd_lookup_values fvl38
192208 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
192209 and xet.event_type_code = C_EVENT_TYPE_CODE
192210 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
192211 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
192212 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
192213 AND fvl12.view_application_id(+) = 700
192214 AND fvl12.language(+) = USERENV('LANG')
192215 AND fvl38.lookup_type(+) = 'YES_NO'
192216 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
192217 AND fvl38.view_application_id(+) = 0
192218 AND fvl38.language(+) = USERENV('LANG')
192219
192220 ORDER BY event_id
192221 ;
192222
192223
192224 --
192225 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
192226 IS
192227 SELECT /*+ leading(xet) cardinality(xet,1) */
192228 -- Event Type Code: UMISC_RCPT
192229 -- Event Class Code: USER_DEFINE
192230 xet.entity_id
192231 ,xet.legal_entity_id
192232 ,xet.entity_code
192233 ,xet.transaction_number
192234 ,xet.event_id
192235 ,xet.event_class_code
192236 ,xet.event_type_code
192237 ,xet.event_number
192238 ,xet.event_date
192239 ,xet.transaction_date
192240 ,xet.reference_num_1
192241 ,xet.reference_num_2
192242 ,xet.reference_num_3
192243 ,xet.reference_num_4
192244 ,xet.reference_char_1
192245 ,xet.reference_char_2
192246 ,xet.reference_char_3
192247 ,xet.reference_char_4
192248 ,xet.reference_date_1
192249 ,xet.reference_date_2
192250 ,xet.reference_date_3
192251 ,xet.reference_date_4
192252 ,xet.event_created_by
192253 ,xet.budgetary_control_flag , l2.LINE_NUMBER
192254 , l2.CODE_COMBINATION_ID source_4
192255 , l2.DISTRIBUTION_IDENTIFIER source_11
192256 , l2.CURRENCY_CODE source_15
192257 , l2.ENTERED_AMOUNT source_18
192258 , l2.CURRENCY_CONVERSION_DATE source_19
192259 , l2.CURRENCY_CONVERSION_RATE source_20
192260 , l2.CURRENCY_CONVERSION_TYPE source_21
192261 , l2.ACCOUNTED_AMOUNT source_22
192262 , l2.ACCOUNTING_LINE_TYPE_CODE source_24
192263 FROM xla_events_gt xet
192264 , CST_XLA_INV_LINES_V l2
192265 WHERE xet.event_id between x_first_event_id and x_last_event_id
192266 and xet.event_date between p_pad_start_date and p_pad_end_date
192267 and xet.event_type_code = C_EVENT_TYPE_CODE
192268 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
192269 ;
192270
192271 --
192272 BEGIN
192273 IF g_log_enabled THEN
192274 l_log_module := C_DEFAULT_MODULE||'.EventType_290';
192275 END IF;
192276 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
192277 trace
192278 (p_msg => 'BEGIN of EventType_290'
192279 ,p_level => C_LEVEL_PROCEDURE
192280 ,p_module => l_log_module);
192281 END IF;
192282
192283 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
192284 trace
192285 (p_msg => 'p_application_id = '||p_application_id||
192286 ' - p_base_ledger_id = '||p_base_ledger_id||
192287 ' - p_target_ledger_id = '||p_target_ledger_id||
192288 ' - p_language = '||p_language||
192289 ' - p_currency_code = '||p_currency_code||
192290 ' - p_sla_ledger_id = '||p_sla_ledger_id
192291 ,p_level => C_LEVEL_STATEMENT
192292 ,p_module => l_log_module);
192293 END IF;
192294 --
192295 -- initialze arrays
192296 --
192297 g_array_event.DELETE;
192298 l_rec_array_event := l_null_rec_array_event;
192299 --
192300 --------------------------------------
192301 -- 4262811 Initialze MPA Line Number
192302 --------------------------------------
192303 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
192304
192305 --
192306
192307 --
192308 OPEN header_cur;
192309 --
192310 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
192311 trace
192312 (p_msg => 'SQL - FETCH header_cur'
192313 ,p_level => C_LEVEL_STATEMENT
192314 ,p_module => l_log_module);
192315 END IF;
192316 --
192317 LOOP
192318 FETCH header_cur BULK COLLECT INTO
192319 l_array_entity_id
192320 , l_array_legal_entity_id
192321 , l_array_entity_code
192322 , l_array_transaction_num
192323 , l_array_event_id
192324 , l_array_class_code
192325 , l_array_event_type
192326 , l_array_event_number
192327 , l_array_event_date
192328 , l_array_transaction_date
192329 , l_array_reference_num_1
192330 , l_array_reference_num_2
192331 , l_array_reference_num_3
192332 , l_array_reference_num_4
192333 , l_array_reference_char_1
192334 , l_array_reference_char_2
192335 , l_array_reference_char_3
192336 , l_array_reference_char_4
192337 , l_array_reference_date_1
192338 , l_array_reference_date_2
192339 , l_array_reference_date_3
192340 , l_array_reference_date_4
192341 , l_array_event_created_by
192342 , l_array_budgetary_control_flag
192343 , l_array_source_12
192344 , l_array_source_12_meaning
192345 , l_array_source_38
192346 , l_array_source_38_meaning
192347 LIMIT l_rows;
192348 --
192349 IF (C_LEVEL_EVENT >= g_log_level) THEN
192350 trace
192351 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
192352 ,p_level => C_LEVEL_EVENT
192353 ,p_module => l_log_module);
192354 END IF;
192355 --
192356 EXIT WHEN l_array_entity_id.COUNT = 0;
192357
192358 -- initialize arrays
192359 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
192360 XLA_AE_LINES_PKG.g_rec_lines := NULL;
192361
192362 --
192363 -- Bug 4458708
192364 --
192365 XLA_AE_LINES_PKG.g_LineNumber := 0;
192366
192367
192368 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
192369 g_last_hdr_idx := l_array_event_id.LAST;
192370 --
192371 -- loop for the headers. Each iteration is for each header extract row
192372 -- fetched in header cursor
192373 --
192374 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
192375
192376 --
192377 -- set event info as cache for other routines to refer event attributes
192378 --
192379 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
192380 (p_application_id => p_application_id
192381 ,p_primary_ledger_id => p_primary_ledger_id
192382 ,p_base_ledger_id => p_base_ledger_id
192383 ,p_target_ledger_id => p_target_ledger_id
192384 ,p_entity_id => l_array_entity_id(hdr_idx)
192385 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
192386 ,p_entity_code => l_array_entity_code(hdr_idx)
192387 ,p_transaction_num => l_array_transaction_num(hdr_idx)
192388 ,p_event_id => l_array_event_id(hdr_idx)
192389 ,p_event_class_code => l_array_class_code(hdr_idx)
192390 ,p_event_type_code => l_array_event_type(hdr_idx)
192391 ,p_event_number => l_array_event_number(hdr_idx)
192392 ,p_event_date => l_array_event_date(hdr_idx)
192393 ,p_transaction_date => l_array_transaction_date(hdr_idx)
192394 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
192395 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
192396 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
192397 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
192398 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
192399 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
192400 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
192401 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
192402 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
192403 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
192404 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
192405 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
192406 ,p_event_created_by => l_array_event_created_by(hdr_idx)
192407 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
192408
192409 --
192410 -- set the status of entry to C_VALID (0)
192411 --
192412 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
192413
192414 --
192415 -- initialize a row for ae header
192416 --
192417 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
192418
192419 l_event_id := l_array_event_id(hdr_idx);
192420
192421 --
192422 -- storing the hdr_idx for event. May be used by line cursor.
192423 --
192424 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
192425
192426 --
192427 -- store sources from header extract. This can be improved to
192428 -- store only those sources from header extract that may be used in lines
192429 --
192430
192431 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
192432 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
192433 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
192434 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
192435
192436 --
192437 -- initilaize the status of ae headers for diffrent balance types
192438 -- the status is initialised to C_NOT_CREATED (2)
192439 --
192440 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
192441 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
192442 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
192443
192444 --
192445 -- call api to validate and store accounting attributes for header
192446 --
192447
192448 ------------------------------------------------------------
192449 -- Accrual Reversal : to get date for Standard Source (NONE)
192450 ------------------------------------------------------------
192451 l_acc_rev_gl_date_source := NULL;
192452
192453 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
192454 l_rec_acct_attrs.array_date_value(1) :=
192455 xla_ae_sources_pkg.GetSystemSourceDate(
192456 p_source_code => 'XLA_REFERENCE_DATE_1'
192457 , p_source_type_code => 'Y'
192458 , p_source_application_id => 602
192459 );
192460 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_TRANSFER_FLAG';
192461 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
192462
192463
192464 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
192465
192466 XLA_AE_HEADER_PKG.SetJeCategoryName;
192467
192468 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
192469 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
192470 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
192471 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
192472 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
192473
192474
192475 -- No header level analytical criteria
192476
192477 --
192478 --accounting attribute enhancement, bug 3612931
192479 --
192480 l_trx_reversal_source := SUBSTR(NULL, 1,30);
192481
192482 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
192483 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
192484
192485 xla_accounting_err_pkg.build_message
192486 (p_appli_s_name => 'XLA'
192487 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
192488 ,p_token_1 => 'ACCT_ATTR_NAME'
192489 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
192490 ,p_token_2 => 'PRODUCT_NAME'
192491 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
192492 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
192493 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
192494 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
192495
192496 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
192497 --
192498 -- following sets the accounting attributes needed to reverse
192499 -- accounting for a distributeion
192500 --
192501 xla_ae_lines_pkg.SetTrxReversalAttrs
192502 (p_event_id => l_event_id
192503 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
192504 ,p_trx_reversal_source => l_trx_reversal_source);
192505
192506 END IF;
192507
192508
192509 ----------------------------------------------------------------
192510 -- 4262811 - update the header statuses to invalid in need be
192511 ----------------------------------------------------------------
192512 --
192513 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
192514
192515
192516 -----------------------------------------------
192517 -- No accrual reversal for the event class/type
192518 -----------------------------------------------
192519 ----------------------------------------------------------------
192520
192521 --
192522 -- this ends the header loop iteration for one bulk fetch
192523 --
192524 END LOOP;
192525
192526 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
192527 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
192528
192529 --
192530 -- insert dummy rows into lines gt table that were created due to
192531 -- transaction reversals
192532 --
192533 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
192534 l_result := XLA_AE_LINES_PKG.InsertLines;
192535 END IF;
192536
192537 --
192538 -- reset the temp_line_num for each set of events fetched from header
192539 -- cursor rather than doing it for each new event in line cursor
192540 -- Bug 3939231
192541 --
192542 xla_ae_lines_pkg.g_temp_line_num := 0;
192543
192544
192545
192546 --
192547 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
192548 --
192549 --
192550 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
192551
192552 trace
192553 (p_msg => 'SQL - FETCH line_cur'
192554 ,p_level => C_LEVEL_STATEMENT
192555 ,p_module => l_log_module);
192556
192557 END IF;
192558 --
192559 --
192560 LOOP
192561 --
192562 FETCH line_cur BULK COLLECT INTO
192563 l_array_entity_id
192564 , l_array_legal_entity_id
192565 , l_array_entity_code
192566 , l_array_transaction_num
192567 , l_array_event_id
192568 , l_array_class_code
192569 , l_array_event_type
192570 , l_array_event_number
192571 , l_array_event_date
192572 , l_array_transaction_date
192573 , l_array_reference_num_1
192574 , l_array_reference_num_2
192575 , l_array_reference_num_3
192576 , l_array_reference_num_4
192577 , l_array_reference_char_1
192578 , l_array_reference_char_2
192579 , l_array_reference_char_3
192580 , l_array_reference_char_4
192581 , l_array_reference_date_1
192582 , l_array_reference_date_2
192583 , l_array_reference_date_3
192584 , l_array_reference_date_4
192585 , l_array_event_created_by
192586 , l_array_budgetary_control_flag
192587 , l_array_extract_line_num
192588 , l_array_source_4
192589 , l_array_source_11
192590 , l_array_source_15
192591 , l_array_source_18
192592 , l_array_source_19
192593 , l_array_source_20
192594 , l_array_source_21
192595 , l_array_source_22
192596 , l_array_source_24
192597 LIMIT l_rows;
192598
192599 --
192600 IF (C_LEVEL_EVENT >= g_log_level) THEN
192601 trace
192602 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
192603 ,p_level => C_LEVEL_EVENT
192604 ,p_module => l_log_module);
192605 END IF;
192606 --
192607 EXIT WHEN l_array_entity_id.count = 0;
192608
192609 XLA_AE_LINES_PKG.g_rec_lines := null;
192610
192611 --
192612 -- Bug 4458708
192613 --
192614 XLA_AE_LINES_PKG.g_LineNumber := 0;
192615 --
192616 --
192617
192618 FOR Idx IN 1..l_array_event_id.count LOOP
192619 --
192620 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
192621 --
192622 l_event_id := l_array_event_id(idx); -- 5648433
192623
192624 --
192625 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
192626 --
192627
192628 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
192629 (g_array_event(l_event_id).array_value_num('header_index'))
192630 ,'N'
192631 ) <> 'Y'
192632 THEN
192633 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
192634 trace
192635 (p_msg => 'Trancaction revesal option is not Y '
192636 ,p_level => C_LEVEL_STATEMENT
192637 ,p_module => l_log_module);
192638 END IF;
192639
192640 --
192641 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
192642 --
192643 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
192644 --
192645 -- set event info as cache for other routines to refer event attributes
192646 --
192647
192648 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
192649 l_previous_event_id := l_event_id;
192650
192651 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
192652 (p_application_id => p_application_id
192653 ,p_primary_ledger_id => p_primary_ledger_id
192654 ,p_base_ledger_id => p_base_ledger_id
192655 ,p_target_ledger_id => p_target_ledger_id
192656 ,p_entity_id => l_array_entity_id(Idx)
192657 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
192658 ,p_entity_code => l_array_entity_code(Idx)
192659 ,p_transaction_num => l_array_transaction_num(Idx)
192660 ,p_event_id => l_array_event_id(Idx)
192661 ,p_event_class_code => l_array_class_code(Idx)
192662 ,p_event_type_code => l_array_event_type(Idx)
192663 ,p_event_number => l_array_event_number(Idx)
192664 ,p_event_date => l_array_event_date(Idx)
192665 ,p_transaction_date => l_array_transaction_date(Idx)
192666 ,p_reference_num_1 => l_array_reference_num_1(Idx)
192667 ,p_reference_num_2 => l_array_reference_num_2(Idx)
192668 ,p_reference_num_3 => l_array_reference_num_3(Idx)
192669 ,p_reference_num_4 => l_array_reference_num_4(Idx)
192670 ,p_reference_char_1 => l_array_reference_char_1(Idx)
192671 ,p_reference_char_2 => l_array_reference_char_2(Idx)
192672 ,p_reference_char_3 => l_array_reference_char_3(Idx)
192673 ,p_reference_char_4 => l_array_reference_char_4(Idx)
192674 ,p_reference_date_1 => l_array_reference_date_1(Idx)
192675 ,p_reference_date_2 => l_array_reference_date_2(Idx)
192676 ,p_reference_date_3 => l_array_reference_date_3(Idx)
192677 ,p_reference_date_4 => l_array_reference_date_4(Idx)
192678 ,p_event_created_by => l_array_event_created_by(Idx)
192679 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
192680 --
192681 END IF;
192682
192683
192684
192685 --
192686 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
192687
192688 l_acct_reversal_source := SUBSTR(NULL, 1,30);
192689
192690 IF l_continue_with_lines THEN
192691 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
192692 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
192693
192694 xla_accounting_err_pkg.build_message
192695 (p_appli_s_name => 'XLA'
192696 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
192697 ,p_token_1 => 'LINE_NUMBER'
192698 ,p_value_1 => l_array_extract_line_num(Idx)
192699 ,p_token_2 => 'PRODUCT_NAME'
192700 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
192701 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
192702 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
192703 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
192704
192705 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
192706 --
192707 -- following sets the accounting attributes needed to reverse
192708 -- accounting for a distributeion
192709 --
192710
192711 --
192712 -- 5217187
192713 --
192714 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
192715 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
192716 g_array_event(l_event_id).array_value_num('header_index'));
192717 --
192718 --
192719
192720 -- No reversal code generated
192721
192722 xla_ae_lines_pkg.SetAcctReversalAttrs
192723 (p_event_id => l_event_id
192724 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
192725 ,p_calculate_acctd_flag => l_calculate_acctd_flag
192726 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
192727 END IF;
192728
192729 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
192730 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
192731
192732 --
192733 AcctLineType_43 (
192734 p_application_id => p_application_id
192735 ,p_event_id => l_event_id
192736 ,p_calculate_acctd_flag => l_calculate_acctd_flag
192737 ,p_calculate_g_l_flag => l_calculate_g_l_flag
192738 ,p_actual_flag => l_actual_flag
192739 ,p_balance_type_code => l_balance_type_code
192740 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
192741
192742 , p_source_4 => l_array_source_4(Idx)
192743 , p_source_11 => l_array_source_11(Idx)
192744 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
192745 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
192746 , p_source_15 => l_array_source_15(Idx)
192747 , p_source_18 => l_array_source_18(Idx)
192748 , p_source_19 => l_array_source_19(Idx)
192749 , p_source_20 => l_array_source_20(Idx)
192750 , p_source_21 => l_array_source_21(Idx)
192751 , p_source_22 => l_array_source_22(Idx)
192752 , p_source_24 => l_array_source_24(Idx)
192753 );
192754 If(l_balance_type_code = 'A') THEN
192755 l_actual_gain_loss_ref := l_gain_or_loss_ref;
192756 END IF;
192757
192758 --
192759
192760
192761 --
192762 AcctLineType_134 (
192763 p_application_id => p_application_id
192764 ,p_event_id => l_event_id
192765 ,p_calculate_acctd_flag => l_calculate_acctd_flag
192766 ,p_calculate_g_l_flag => l_calculate_g_l_flag
192767 ,p_actual_flag => l_actual_flag
192768 ,p_balance_type_code => l_balance_type_code
192769 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
192770
192771 , p_source_4 => l_array_source_4(Idx)
192772 , p_source_11 => l_array_source_11(Idx)
192773 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
192774 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
192775 , p_source_15 => l_array_source_15(Idx)
192776 , p_source_18 => l_array_source_18(Idx)
192777 , p_source_19 => l_array_source_19(Idx)
192778 , p_source_20 => l_array_source_20(Idx)
192779 , p_source_21 => l_array_source_21(Idx)
192780 , p_source_22 => l_array_source_22(Idx)
192781 , p_source_24 => l_array_source_24(Idx)
192782 );
192783 If(l_balance_type_code = 'A') THEN
192784 l_actual_gain_loss_ref := l_gain_or_loss_ref;
192785 END IF;
192786
192787 --
192788
192789
192790 --
192791 AcctLineType_195 (
192792 p_application_id => p_application_id
192793 ,p_event_id => l_event_id
192794 ,p_calculate_acctd_flag => l_calculate_acctd_flag
192795 ,p_calculate_g_l_flag => l_calculate_g_l_flag
192796 ,p_actual_flag => l_actual_flag
192797 ,p_balance_type_code => l_balance_type_code
192798 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
192799
192800 , p_source_4 => l_array_source_4(Idx)
192801 , p_source_11 => l_array_source_11(Idx)
192802 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
192803 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
192804 , p_source_15 => l_array_source_15(Idx)
192805 , p_source_18 => l_array_source_18(Idx)
192806 , p_source_19 => l_array_source_19(Idx)
192807 , p_source_20 => l_array_source_20(Idx)
192808 , p_source_21 => l_array_source_21(Idx)
192809 , p_source_22 => l_array_source_22(Idx)
192810 , p_source_24 => l_array_source_24(Idx)
192811 );
192812 If(l_balance_type_code = 'A') THEN
192813 l_actual_gain_loss_ref := l_gain_or_loss_ref;
192814 END IF;
192815
192816 --
192817
192818 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
192819 -- or secondary ledger that has different currency with primary
192820 -- or alc that is calculated by sla
192821 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
192822 (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'))
192823
192824 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
192825 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
192826 AND (l_actual_flag = 'A')) THEN
192827 XLA_AE_LINES_PKG.CreateGainOrLossLines(
192828 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
192829 ,p_application_id => p_application_id
192830 ,p_amb_context_code => 'DEFAULT'
192831 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
192832 ,p_event_class_code => C_EVENT_CLASS_CODE
192833 ,p_event_type_code => C_EVENT_TYPE_CODE
192834
192835 ,p_gain_ccid => -1
192836 ,p_loss_ccid => -1
192837
192838 ,p_actual_flag => l_actual_flag
192839 ,p_enc_flag => null
192840 ,p_actual_g_l_ref => l_actual_gain_loss_ref
192841 ,p_enc_g_l_ref => null
192842 );
192843 END IF;
192844 END IF;
192845 END IF;
192846
192847 ELSE
192848 --
192849 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
192850 --
192851 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
192852 trace
192853 (p_msg => 'Trancaction revesal option is Y'
192854 ,p_level => C_LEVEL_STATEMENT
192855 ,p_module => l_log_module);
192856 END IF;
192857 END IF;
192858
192859 END LOOP;
192860 l_result := XLA_AE_LINES_PKG.InsertLines ;
192861 end loop;
192862 close line_cur;
192863
192864
192865 --
192866 -- insert headers into xla_ae_headers_gt table
192867 --
192868 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
192869
192870 -- insert into errors table here.
192871
192872 END LOOP;
192873
192874 --
192875 -- 4865292
192876 --
192877 -- Compare g_hdr_extract_count with event count in
192878 -- CreateHeadersAndLines.
192879 --
192880 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
192881
192882 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
192883 trace (p_msg => '# rows extracted from header extract objects '
192884 || ' (running total): '
192885 || g_hdr_extract_count
192886 ,p_level => C_LEVEL_STATEMENT
192887 ,p_module => l_log_module);
192888 END IF;
192889
192890 CLOSE header_cur;
192891 --
192892
192893 --
192894 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
192895 trace
192896 (p_msg => 'END of EventType_290'
192897 ,p_level => C_LEVEL_PROCEDURE
192898 ,p_module => l_log_module);
192899 END IF;
192900 --
192901 RETURN l_result;
192902 EXCEPTION
192903 WHEN xla_exceptions_pkg.application_exception THEN
192904
192905 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
192906
192907
192908 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
192909
192910 RAISE;
192911
192912 WHEN NO_DATA_FOUND THEN
192913
192914 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
192915 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
192916
192917 FOR header_record IN header_cur
192918 LOOP
192919 l_array_header_events(header_record.event_id) := header_record.event_id;
192920 END LOOP;
192921
192922 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
192923 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
192924
192925 fnd_file.put_line(fnd_file.LOG, ' ');
192926 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
192927 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
192928 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
192929
192930 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
192931 LOOP
192932 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
192933 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
192934 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
192935 END IF;
192936 END LOOP;
192937
192938 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
192939 fnd_file.put_line(fnd_file.LOG, ' ');
192940
192941
192942 xla_exceptions_pkg.raise_message
192943 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventType_290');
192944
192945
192946 WHEN OTHERS THEN
192947 xla_exceptions_pkg.raise_message
192948 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventType_290');
192949 END EventType_290;
192950 --
192951
192952 ---------------------------------------
192953 --
192954 -- PRIVATE PROCEDURE
192955 -- insert_sources_291
192956 --
192957 ----------------------------------------
192958 --
192959 PROCEDURE insert_sources_291(
192960 p_target_ledger_id IN NUMBER
192961 , p_language IN VARCHAR2
192962 , p_sla_ledger_id IN NUMBER
192963 , p_pad_start_date IN DATE
192964 , p_pad_end_date IN DATE
192965 )
192966 IS
192967
192968 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'USUB_TXFR';
192969 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'USER_DEFINE';
192970 p_apps_owner VARCHAR2(30);
192971 l_log_module VARCHAR2(240);
192972 BEGIN
192973 IF g_log_enabled THEN
192974 l_log_module := C_DEFAULT_MODULE||'.insert_sources_291';
192975 END IF;
192976 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
192977
192978 trace
192979 (p_msg => 'BEGIN of insert_sources_291'
192980 ,p_level => C_LEVEL_PROCEDURE
192981 ,p_module => l_log_module);
192982
192983 END IF;
192984
192985 -- select APPS owner
192986 SELECT oracle_username
192987 INTO p_apps_owner
192988 FROM fnd_oracle_userid
192989 WHERE read_only_flag = 'U'
192990 ;
192991
192992 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
192993 trace
192994 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
192995 ' - p_language = '||p_language||
192996 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
192997 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
192998 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
192999 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
193000 ,p_level => C_LEVEL_STATEMENT
193001 ,p_module => l_log_module);
193002 END IF;
193003
193004
193005 --
193006 INSERT INTO xla_diag_sources --hdr1
193007 (
193008 event_id
193009 , ledger_id
193010 , sla_ledger_id
193011 , description_language
193012 , object_name
193013 , object_type_code
193014 , line_number
193015 , source_application_id
193016 , source_type_code
193017 , source_code
193018 , source_value
193019 , source_meaning
193020 , created_by
193021 , creation_date
193022 , last_update_date
193023 , last_updated_by
193024 , last_update_login
193025 , program_update_date
193026 , program_application_id
193027 , program_id
193028 , request_id
193029 )
193030 SELECT
193031 event_id
193032 , p_target_ledger_id
193033 , p_sla_ledger_id
193034 , p_language
193035 , object_name
193036 , object_type_code
193037 , line_number
193038 , source_application_id
193039 , source_type_code
193040 , source_code
193041 , SUBSTR(source_value ,1,1996)
193042 , SUBSTR(source_meaning,1,200)
193043 , xla_environment_pkg.g_Usr_Id
193044 , TRUNC(SYSDATE)
193045 , TRUNC(SYSDATE)
193046 , xla_environment_pkg.g_Usr_Id
193047 , xla_environment_pkg.g_Login_Id
193048 , TRUNC(SYSDATE)
193049 , xla_environment_pkg.g_Prog_Appl_Id
193050 , xla_environment_pkg.g_Prog_Id
193051 , xla_environment_pkg.g_Req_Id
193052 FROM (
193053 SELECT xet.event_id event_id
193054 , 0 line_number
193055 , CASE r
193056 WHEN 1 THEN 'CST_XLA_INV_HEADERS_V'
193057 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V'
193058
193059 ELSE null
193060 END object_name
193061 , CASE r
193062 WHEN 1 THEN 'HEADER'
193063 WHEN 2 THEN 'HEADER'
193064
193065 ELSE null
193066 END object_type_code
193067 , CASE r
193068 WHEN 1 THEN '707'
193069 WHEN 2 THEN '707'
193070
193071 ELSE null
193072 END source_application_id
193073 , 'S' source_type_code
193074 , CASE r
193075 WHEN 1 THEN 'DISTRIBUTION_TYPE'
193076 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR'
193077
193078 ELSE null
193079 END source_code
193080 , CASE r
193081 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
193082 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
193083
193084 ELSE null
193085 END source_value
193086 , CASE r
193087 WHEN 1 THEN fvl12.meaning
193088 WHEN 2 THEN fvl38.meaning
193089
193090 ELSE null
193091 END source_meaning
193092 FROM xla_events_gt xet
193093 , CST_XLA_INV_HEADERS_V h1
193094 , fnd_lookup_values fvl12
193095 , fnd_lookup_values fvl38
193096 ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
193097 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
193098 AND xet.event_type_code = C_EVENT_TYPE_CODE
193099 AND h1.event_id = xet.event_id
193100 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
193101 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
193102 AND fvl12.view_application_id(+) = 700
193103 AND fvl12.language(+) = USERENV('LANG')
193104 AND fvl38.lookup_type(+) = 'YES_NO'
193105 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
193106 AND fvl38.view_application_id(+) = 0
193107 AND fvl38.language(+) = USERENV('LANG')
193108
193109 )
193110 ;
193111 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
193112
193113 trace
193114 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
193115 ,p_level => C_LEVEL_STATEMENT
193116 ,p_module => l_log_module);
193117
193118 END IF;
193119 --
193120
193121
193122
193123 --
193124 INSERT INTO xla_diag_sources --line1
193125 (
193126 event_id
193127 , ledger_id
193128 , sla_ledger_id
193129 , description_language
193130 , object_name
193131 , object_type_code
193132 , line_number
193133 , source_application_id
193134 , source_type_code
193135 , source_code
193136 , source_value
193137 , source_meaning
193138 , created_by
193139 , creation_date
193140 , last_update_date
193141 , last_updated_by
193142 , last_update_login
193143 , program_update_date
193144 , program_application_id
193145 , program_id
193146 , request_id
193147 )
193148 SELECT event_id
193149 , p_target_ledger_id
193150 , p_sla_ledger_id
193151 , p_language
193152 , object_name
193153 , object_type_code
193154 , line_number
193155 , source_application_id
193156 , source_type_code
193157 , source_code
193158 , SUBSTR(source_value,1,1996)
193159 , SUBSTR(source_meaning,1,200)
193160 , xla_environment_pkg.g_Usr_Id
193161 , TRUNC(SYSDATE)
193162 , TRUNC(SYSDATE)
193163 , xla_environment_pkg.g_Usr_Id
193164 , xla_environment_pkg.g_Login_Id
193165 , TRUNC(SYSDATE)
193166 , xla_environment_pkg.g_Prog_Appl_Id
193167 , xla_environment_pkg.g_Prog_Id
193168 , xla_environment_pkg.g_Req_Id
193169 FROM (
193170 SELECT xet.event_id event_id
193171 , l2.line_number line_number
193172 , CASE r
193173 WHEN 1 THEN 'CST_XLA_INV_LINES_V'
193174 WHEN 2 THEN 'CST_XLA_INV_LINES_V'
193175 WHEN 3 THEN 'CST_XLA_INV_LINES_V'
193176 WHEN 4 THEN 'CST_XLA_INV_LINES_V'
193177 WHEN 5 THEN 'CST_XLA_INV_LINES_V'
193178 WHEN 6 THEN 'CST_XLA_INV_LINES_V'
193179 WHEN 7 THEN 'CST_XLA_INV_LINES_V'
193180 WHEN 8 THEN 'CST_XLA_INV_LINES_V'
193181 WHEN 9 THEN 'CST_XLA_INV_LINES_V'
193182
193183 ELSE null
193184 END object_name
193185 , CASE r
193186 WHEN 1 THEN 'LINE'
193187 WHEN 2 THEN 'LINE'
193188 WHEN 3 THEN 'LINE'
193189 WHEN 4 THEN 'LINE'
193190 WHEN 5 THEN 'LINE'
193191 WHEN 6 THEN 'LINE'
193192 WHEN 7 THEN 'LINE'
193193 WHEN 8 THEN 'LINE'
193194 WHEN 9 THEN 'LINE'
193195
193196 ELSE null
193197 END object_type_code
193198 , CASE r
193199 WHEN 1 THEN '707'
193200 WHEN 2 THEN '707'
193201 WHEN 3 THEN '707'
193202 WHEN 4 THEN '707'
193203 WHEN 5 THEN '707'
193204 WHEN 6 THEN '707'
193205 WHEN 7 THEN '707'
193206 WHEN 8 THEN '707'
193207 WHEN 9 THEN '707'
193208
193209 ELSE null
193210 END source_application_id
193211 , 'S' source_type_code
193212 , CASE r
193213 WHEN 1 THEN 'CODE_COMBINATION_ID'
193214 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER'
193215 WHEN 3 THEN 'CURRENCY_CODE'
193216 WHEN 4 THEN 'ENTERED_AMOUNT'
193217 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE'
193218 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE'
193219 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE'
193220 WHEN 8 THEN 'ACCOUNTED_AMOUNT'
193221 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE'
193222
193223 ELSE null
193224 END source_code
193225 , CASE r
193226 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
193227 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
193228 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
193229 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
193230 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
193231 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
193232 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
193233 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
193234 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
193235
193236 ELSE null
193237 END source_value
193238 , null source_meaning
193239 FROM xla_events_gt xet
193240 , CST_XLA_INV_LINES_V l2
193241 ,(select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
193242 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
193243 AND xet.event_type_code = C_EVENT_TYPE_CODE
193244 AND l2.event_id = xet.event_id
193245
193246 )
193247 ;
193248 --
193249 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
193250
193251 trace
193252 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
193253 ,p_level => C_LEVEL_STATEMENT
193254 ,p_module => l_log_module);
193255
193256 END IF;
193257
193258
193259 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
193260 trace
193261 (p_msg => 'END of insert_sources_291'
193262 ,p_level => C_LEVEL_PROCEDURE
193263 ,p_module => l_log_module);
193264 END IF;
193265 EXCEPTION
193266 WHEN xla_exceptions_pkg.application_exception THEN
193267 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
193268 trace
193269 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
193270 ,p_level => C_LEVEL_EXCEPTION
193271 ,p_module => l_log_module);
193272 END IF;
193273 RAISE;
193274 WHEN OTHERS THEN
193275 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
193276 trace
193277 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
193278 ,p_level => C_LEVEL_EXCEPTION
193279 ,p_module => l_log_module);
193280 END IF;
193281 xla_exceptions_pkg.raise_message
193282 (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_291');
193283 END insert_sources_291;
193284 --
193285
193286 ---------------------------------------
193287 --
193288 -- PRIVATE FUNCTION
193289 -- EventType_291
193290 --
193291 ----------------------------------------
193292 --
193293 FUNCTION EventType_291
193294 (p_application_id IN NUMBER
193295 ,p_base_ledger_id IN NUMBER
193296 ,p_target_ledger_id IN NUMBER
193297 ,p_language IN VARCHAR2
193298 ,p_currency_code IN VARCHAR2
193299 ,p_sla_ledger_id IN NUMBER
193300 ,p_pad_start_date IN DATE
193301 ,p_pad_end_date IN DATE
193302 ,p_primary_ledger_id IN NUMBER)
193303 RETURN BOOLEAN IS
193304 --
193305 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'USUB_TXFR';
193306 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'USER_DEFINE';
193307
193308 l_calculate_acctd_flag VARCHAR2(1) :='Y';
193309 l_calculate_g_l_flag VARCHAR2(1) :='Y';
193310 --
193311 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
193312 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
193313 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
193314 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
193315 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
193316 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
193317 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
193318 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
193319 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
193320 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
193321 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
193322 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
193323 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
193324 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
193325 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
193326 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
193327 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
193328 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
193329 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
193330 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
193331 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
193332 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
193333 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
193334 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
193335 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
193336 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
193337
193338 l_event_id NUMBER;
193339 l_previous_event_id NUMBER;
193340 l_first_event_id NUMBER;
193341 l_last_event_id NUMBER;
193342
193343 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
193344 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
193345 --
193346 --
193347 l_result BOOLEAN := TRUE;
193348 l_rows NUMBER := 1000;
193349 l_event_type_name VARCHAR2(80) := 'User-defined Subinventory Transfer';
193350 l_event_class_name VARCHAR2(80) := 'User Defined Inventory Transaction Class';
193351 l_description VARCHAR2(4000);
193352 l_transaction_reversal NUMBER;
193353 l_ae_header_id NUMBER;
193354 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
193355 l_log_module VARCHAR2(240);
193356 --
193357 l_acct_reversal_source VARCHAR2(30);
193358 l_trx_reversal_source VARCHAR2(30);
193359
193360 l_continue_with_lines BOOLEAN := TRUE;
193361 --
193362 l_acc_rev_gl_date_source DATE; -- 4262811
193363 --
193364 type t_array_event_id is table of number index by binary_integer;
193365
193366 l_rec_array_event t_rec_array_event;
193367 l_null_rec_array_event t_rec_array_event;
193368 l_array_ae_header_id xla_number_array_type;
193369 l_actual_flag VARCHAR2(1) := NULL;
193370 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
193371 l_balance_type_code VARCHAR2(1) :=NULL;
193372 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
193373
193374 --
193375 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
193376 --
193377
193378 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
193379 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
193380
193381 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
193382 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
193383 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
193384 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
193385 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
193386 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
193387 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
193388 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
193389 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
193390
193391 l_array_source_12 t_array_source_12;
193392 l_array_source_12_meaning t_array_lookup_meaning;
193393 l_array_source_38 t_array_source_38;
193394 l_array_source_38_meaning t_array_lookup_meaning;
193395
193396 l_array_source_4 t_array_source_4;
193397 l_array_source_11 t_array_source_11;
193398 l_array_source_15 t_array_source_15;
193399 l_array_source_18 t_array_source_18;
193400 l_array_source_19 t_array_source_19;
193401 l_array_source_20 t_array_source_20;
193402 l_array_source_21 t_array_source_21;
193403 l_array_source_22 t_array_source_22;
193404 l_array_source_24 t_array_source_24;
193405
193406 --
193407 CURSOR header_cur
193408 IS
193409 SELECT /*+ leading(xet) cardinality(xet,1) */
193410 -- Event Type Code: USUB_TXFR
193411 -- Event Class Code: USER_DEFINE
193412 xet.entity_id
193413 , xet.legal_entity_id
193414 , xet.entity_code
193415 , xet.transaction_number
193416 , xet.event_id
193417 , xet.event_class_code
193418 , xet.event_type_code
193419 , xet.event_number
193420 , xet.event_date
193421 , xet.transaction_date
193422 , xet.reference_num_1
193423 , xet.reference_num_2
193424 , xet.reference_num_3
193425 , xet.reference_num_4
193426 , xet.reference_char_1
193427 , xet.reference_char_2
193428 , xet.reference_char_3
193429 , xet.reference_char_4
193430 , xet.reference_date_1
193431 , xet.reference_date_2
193432 , xet.reference_date_3
193433 , xet.reference_date_4
193434 , xet.event_created_by
193435 , xet.budgetary_control_flag
193436 , h1.DISTRIBUTION_TYPE source_12
193437 , fvl12.meaning source_12_meaning
193438 , h1.TRANSFER_TO_GL_INDICATOR source_38
193439 , fvl38.meaning source_38_meaning
193440 FROM xla_events_gt xet
193441 , CST_XLA_INV_HEADERS_V h1
193442 , fnd_lookup_values fvl12
193443 , fnd_lookup_values fvl38
193444 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
193445 and xet.event_type_code = C_EVENT_TYPE_CODE
193446 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
193447 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
193448 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
193449 AND fvl12.view_application_id(+) = 700
193450 AND fvl12.language(+) = USERENV('LANG')
193451 AND fvl38.lookup_type(+) = 'YES_NO'
193452 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
193453 AND fvl38.view_application_id(+) = 0
193454 AND fvl38.language(+) = USERENV('LANG')
193455
193456 ORDER BY event_id
193457 ;
193458
193459
193460 --
193461 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
193462 IS
193463 SELECT /*+ leading(xet) cardinality(xet,1) */
193464 -- Event Type Code: USUB_TXFR
193465 -- Event Class Code: USER_DEFINE
193466 xet.entity_id
193467 ,xet.legal_entity_id
193468 ,xet.entity_code
193469 ,xet.transaction_number
193470 ,xet.event_id
193471 ,xet.event_class_code
193472 ,xet.event_type_code
193473 ,xet.event_number
193474 ,xet.event_date
193475 ,xet.transaction_date
193476 ,xet.reference_num_1
193477 ,xet.reference_num_2
193478 ,xet.reference_num_3
193479 ,xet.reference_num_4
193480 ,xet.reference_char_1
193481 ,xet.reference_char_2
193482 ,xet.reference_char_3
193483 ,xet.reference_char_4
193484 ,xet.reference_date_1
193485 ,xet.reference_date_2
193486 ,xet.reference_date_3
193487 ,xet.reference_date_4
193488 ,xet.event_created_by
193489 ,xet.budgetary_control_flag , l2.LINE_NUMBER
193490 , l2.CODE_COMBINATION_ID source_4
193491 , l2.DISTRIBUTION_IDENTIFIER source_11
193492 , l2.CURRENCY_CODE source_15
193493 , l2.ENTERED_AMOUNT source_18
193494 , l2.CURRENCY_CONVERSION_DATE source_19
193495 , l2.CURRENCY_CONVERSION_RATE source_20
193496 , l2.CURRENCY_CONVERSION_TYPE source_21
193497 , l2.ACCOUNTED_AMOUNT source_22
193498 , l2.ACCOUNTING_LINE_TYPE_CODE source_24
193499 FROM xla_events_gt xet
193500 , CST_XLA_INV_LINES_V l2
193501 WHERE xet.event_id between x_first_event_id and x_last_event_id
193502 and xet.event_date between p_pad_start_date and p_pad_end_date
193503 and xet.event_type_code = C_EVENT_TYPE_CODE
193504 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
193505 ;
193506
193507 --
193508 BEGIN
193509 IF g_log_enabled THEN
193510 l_log_module := C_DEFAULT_MODULE||'.EventType_291';
193511 END IF;
193512 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
193513 trace
193514 (p_msg => 'BEGIN of EventType_291'
193515 ,p_level => C_LEVEL_PROCEDURE
193516 ,p_module => l_log_module);
193517 END IF;
193518
193519 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
193520 trace
193521 (p_msg => 'p_application_id = '||p_application_id||
193522 ' - p_base_ledger_id = '||p_base_ledger_id||
193523 ' - p_target_ledger_id = '||p_target_ledger_id||
193524 ' - p_language = '||p_language||
193525 ' - p_currency_code = '||p_currency_code||
193526 ' - p_sla_ledger_id = '||p_sla_ledger_id
193527 ,p_level => C_LEVEL_STATEMENT
193528 ,p_module => l_log_module);
193529 END IF;
193530 --
193531 -- initialze arrays
193532 --
193533 g_array_event.DELETE;
193534 l_rec_array_event := l_null_rec_array_event;
193535 --
193536 --------------------------------------
193537 -- 4262811 Initialze MPA Line Number
193538 --------------------------------------
193539 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
193540
193541 --
193542
193543 --
193544 OPEN header_cur;
193545 --
193546 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
193547 trace
193548 (p_msg => 'SQL - FETCH header_cur'
193549 ,p_level => C_LEVEL_STATEMENT
193550 ,p_module => l_log_module);
193551 END IF;
193552 --
193553 LOOP
193554 FETCH header_cur BULK COLLECT INTO
193555 l_array_entity_id
193556 , l_array_legal_entity_id
193557 , l_array_entity_code
193558 , l_array_transaction_num
193559 , l_array_event_id
193560 , l_array_class_code
193561 , l_array_event_type
193562 , l_array_event_number
193563 , l_array_event_date
193564 , l_array_transaction_date
193565 , l_array_reference_num_1
193566 , l_array_reference_num_2
193567 , l_array_reference_num_3
193568 , l_array_reference_num_4
193569 , l_array_reference_char_1
193570 , l_array_reference_char_2
193571 , l_array_reference_char_3
193572 , l_array_reference_char_4
193573 , l_array_reference_date_1
193574 , l_array_reference_date_2
193575 , l_array_reference_date_3
193576 , l_array_reference_date_4
193577 , l_array_event_created_by
193578 , l_array_budgetary_control_flag
193579 , l_array_source_12
193580 , l_array_source_12_meaning
193581 , l_array_source_38
193582 , l_array_source_38_meaning
193583 LIMIT l_rows;
193584 --
193585 IF (C_LEVEL_EVENT >= g_log_level) THEN
193586 trace
193587 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
193588 ,p_level => C_LEVEL_EVENT
193589 ,p_module => l_log_module);
193590 END IF;
193591 --
193592 EXIT WHEN l_array_entity_id.COUNT = 0;
193593
193594 -- initialize arrays
193595 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
193596 XLA_AE_LINES_PKG.g_rec_lines := NULL;
193597
193598 --
193599 -- Bug 4458708
193600 --
193601 XLA_AE_LINES_PKG.g_LineNumber := 0;
193602
193603
193604 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
193605 g_last_hdr_idx := l_array_event_id.LAST;
193606 --
193607 -- loop for the headers. Each iteration is for each header extract row
193608 -- fetched in header cursor
193609 --
193610 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
193611
193612 --
193613 -- set event info as cache for other routines to refer event attributes
193614 --
193615 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
193616 (p_application_id => p_application_id
193617 ,p_primary_ledger_id => p_primary_ledger_id
193618 ,p_base_ledger_id => p_base_ledger_id
193619 ,p_target_ledger_id => p_target_ledger_id
193620 ,p_entity_id => l_array_entity_id(hdr_idx)
193621 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
193622 ,p_entity_code => l_array_entity_code(hdr_idx)
193623 ,p_transaction_num => l_array_transaction_num(hdr_idx)
193624 ,p_event_id => l_array_event_id(hdr_idx)
193625 ,p_event_class_code => l_array_class_code(hdr_idx)
193626 ,p_event_type_code => l_array_event_type(hdr_idx)
193627 ,p_event_number => l_array_event_number(hdr_idx)
193628 ,p_event_date => l_array_event_date(hdr_idx)
193629 ,p_transaction_date => l_array_transaction_date(hdr_idx)
193630 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
193631 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
193632 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
193633 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
193634 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
193635 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
193636 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
193637 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
193638 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
193639 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
193640 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
193641 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
193642 ,p_event_created_by => l_array_event_created_by(hdr_idx)
193643 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
193644
193645 --
193646 -- set the status of entry to C_VALID (0)
193647 --
193648 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
193649
193650 --
193651 -- initialize a row for ae header
193652 --
193653 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
193654
193655 l_event_id := l_array_event_id(hdr_idx);
193656
193657 --
193658 -- storing the hdr_idx for event. May be used by line cursor.
193659 --
193660 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
193661
193662 --
193663 -- store sources from header extract. This can be improved to
193664 -- store only those sources from header extract that may be used in lines
193665 --
193666
193667 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
193668 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
193669 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
193670 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
193671
193672 --
193673 -- initilaize the status of ae headers for diffrent balance types
193674 -- the status is initialised to C_NOT_CREATED (2)
193675 --
193676 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
193677 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
193678 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
193679
193680 --
193681 -- call api to validate and store accounting attributes for header
193682 --
193683
193684 ------------------------------------------------------------
193685 -- Accrual Reversal : to get date for Standard Source (NONE)
193686 ------------------------------------------------------------
193687 l_acc_rev_gl_date_source := NULL;
193688
193689 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
193690 l_rec_acct_attrs.array_date_value(1) :=
193691 xla_ae_sources_pkg.GetSystemSourceDate(
193692 p_source_code => 'XLA_REFERENCE_DATE_1'
193693 , p_source_type_code => 'Y'
193694 , p_source_application_id => 602
193695 );
193696 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_TRANSFER_FLAG';
193697 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
193698
193699
193700 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
193701
193702 XLA_AE_HEADER_PKG.SetJeCategoryName;
193703
193704 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
193705 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
193706 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
193707 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
193708 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
193709
193710
193711 -- No header level analytical criteria
193712
193713 --
193714 --accounting attribute enhancement, bug 3612931
193715 --
193716 l_trx_reversal_source := SUBSTR(NULL, 1,30);
193717
193718 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
193719 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
193720
193721 xla_accounting_err_pkg.build_message
193722 (p_appli_s_name => 'XLA'
193723 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
193724 ,p_token_1 => 'ACCT_ATTR_NAME'
193725 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
193726 ,p_token_2 => 'PRODUCT_NAME'
193727 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
193728 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
193729 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
193730 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
193731
193732 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
193733 --
193734 -- following sets the accounting attributes needed to reverse
193735 -- accounting for a distributeion
193736 --
193737 xla_ae_lines_pkg.SetTrxReversalAttrs
193738 (p_event_id => l_event_id
193739 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
193740 ,p_trx_reversal_source => l_trx_reversal_source);
193741
193742 END IF;
193743
193744
193745 ----------------------------------------------------------------
193746 -- 4262811 - update the header statuses to invalid in need be
193747 ----------------------------------------------------------------
193748 --
193749 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
193750
193751
193752 -----------------------------------------------
193753 -- No accrual reversal for the event class/type
193754 -----------------------------------------------
193755 ----------------------------------------------------------------
193756
193757 --
193758 -- this ends the header loop iteration for one bulk fetch
193759 --
193760 END LOOP;
193761
193762 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
193763 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
193764
193765 --
193766 -- insert dummy rows into lines gt table that were created due to
193767 -- transaction reversals
193768 --
193769 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
193770 l_result := XLA_AE_LINES_PKG.InsertLines;
193771 END IF;
193772
193773 --
193774 -- reset the temp_line_num for each set of events fetched from header
193775 -- cursor rather than doing it for each new event in line cursor
193776 -- Bug 3939231
193777 --
193778 xla_ae_lines_pkg.g_temp_line_num := 0;
193779
193780
193781
193782 --
193783 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
193784 --
193785 --
193786 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
193787
193788 trace
193789 (p_msg => 'SQL - FETCH line_cur'
193790 ,p_level => C_LEVEL_STATEMENT
193791 ,p_module => l_log_module);
193792
193793 END IF;
193794 --
193795 --
193796 LOOP
193797 --
193798 FETCH line_cur BULK COLLECT INTO
193799 l_array_entity_id
193800 , l_array_legal_entity_id
193801 , l_array_entity_code
193802 , l_array_transaction_num
193803 , l_array_event_id
193804 , l_array_class_code
193805 , l_array_event_type
193806 , l_array_event_number
193807 , l_array_event_date
193808 , l_array_transaction_date
193809 , l_array_reference_num_1
193810 , l_array_reference_num_2
193811 , l_array_reference_num_3
193812 , l_array_reference_num_4
193813 , l_array_reference_char_1
193814 , l_array_reference_char_2
193815 , l_array_reference_char_3
193816 , l_array_reference_char_4
193817 , l_array_reference_date_1
193818 , l_array_reference_date_2
193819 , l_array_reference_date_3
193820 , l_array_reference_date_4
193821 , l_array_event_created_by
193822 , l_array_budgetary_control_flag
193823 , l_array_extract_line_num
193824 , l_array_source_4
193825 , l_array_source_11
193826 , l_array_source_15
193827 , l_array_source_18
193828 , l_array_source_19
193829 , l_array_source_20
193830 , l_array_source_21
193831 , l_array_source_22
193832 , l_array_source_24
193833 LIMIT l_rows;
193834
193835 --
193836 IF (C_LEVEL_EVENT >= g_log_level) THEN
193837 trace
193838 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
193839 ,p_level => C_LEVEL_EVENT
193840 ,p_module => l_log_module);
193841 END IF;
193842 --
193843 EXIT WHEN l_array_entity_id.count = 0;
193844
193845 XLA_AE_LINES_PKG.g_rec_lines := null;
193846
193847 --
193848 -- Bug 4458708
193849 --
193850 XLA_AE_LINES_PKG.g_LineNumber := 0;
193851 --
193852 --
193853
193854 FOR Idx IN 1..l_array_event_id.count LOOP
193855 --
193856 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
193857 --
193858 l_event_id := l_array_event_id(idx); -- 5648433
193859
193860 --
193861 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
193862 --
193863
193864 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
193865 (g_array_event(l_event_id).array_value_num('header_index'))
193866 ,'N'
193867 ) <> 'Y'
193868 THEN
193869 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
193870 trace
193871 (p_msg => 'Trancaction revesal option is not Y '
193872 ,p_level => C_LEVEL_STATEMENT
193873 ,p_module => l_log_module);
193874 END IF;
193875
193876 --
193877 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
193878 --
193879 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
193880 --
193881 -- set event info as cache for other routines to refer event attributes
193882 --
193883
193884 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
193885 l_previous_event_id := l_event_id;
193886
193887 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
193888 (p_application_id => p_application_id
193889 ,p_primary_ledger_id => p_primary_ledger_id
193890 ,p_base_ledger_id => p_base_ledger_id
193891 ,p_target_ledger_id => p_target_ledger_id
193892 ,p_entity_id => l_array_entity_id(Idx)
193893 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
193894 ,p_entity_code => l_array_entity_code(Idx)
193895 ,p_transaction_num => l_array_transaction_num(Idx)
193896 ,p_event_id => l_array_event_id(Idx)
193897 ,p_event_class_code => l_array_class_code(Idx)
193898 ,p_event_type_code => l_array_event_type(Idx)
193899 ,p_event_number => l_array_event_number(Idx)
193900 ,p_event_date => l_array_event_date(Idx)
193901 ,p_transaction_date => l_array_transaction_date(Idx)
193902 ,p_reference_num_1 => l_array_reference_num_1(Idx)
193903 ,p_reference_num_2 => l_array_reference_num_2(Idx)
193904 ,p_reference_num_3 => l_array_reference_num_3(Idx)
193905 ,p_reference_num_4 => l_array_reference_num_4(Idx)
193906 ,p_reference_char_1 => l_array_reference_char_1(Idx)
193907 ,p_reference_char_2 => l_array_reference_char_2(Idx)
193908 ,p_reference_char_3 => l_array_reference_char_3(Idx)
193909 ,p_reference_char_4 => l_array_reference_char_4(Idx)
193910 ,p_reference_date_1 => l_array_reference_date_1(Idx)
193911 ,p_reference_date_2 => l_array_reference_date_2(Idx)
193912 ,p_reference_date_3 => l_array_reference_date_3(Idx)
193913 ,p_reference_date_4 => l_array_reference_date_4(Idx)
193914 ,p_event_created_by => l_array_event_created_by(Idx)
193915 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
193916 --
193917 END IF;
193918
193919
193920
193921 --
193922 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
193923
193924 l_acct_reversal_source := SUBSTR(NULL, 1,30);
193925
193926 IF l_continue_with_lines THEN
193927 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
193928 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
193929
193930 xla_accounting_err_pkg.build_message
193931 (p_appli_s_name => 'XLA'
193932 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
193933 ,p_token_1 => 'LINE_NUMBER'
193934 ,p_value_1 => l_array_extract_line_num(Idx)
193935 ,p_token_2 => 'PRODUCT_NAME'
193936 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
193937 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
193938 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
193939 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
193940
193941 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
193942 --
193943 -- following sets the accounting attributes needed to reverse
193944 -- accounting for a distributeion
193945 --
193946
193947 --
193948 -- 5217187
193949 --
193950 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
193951 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
193952 g_array_event(l_event_id).array_value_num('header_index'));
193953 --
193954 --
193955
193956 -- No reversal code generated
193957
193958 xla_ae_lines_pkg.SetAcctReversalAttrs
193959 (p_event_id => l_event_id
193960 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
193961 ,p_calculate_acctd_flag => l_calculate_acctd_flag
193962 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
193963 END IF;
193964
193965 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
193966 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
193967
193968 --
193969 AcctLineType_35 (
193970 p_application_id => p_application_id
193971 ,p_event_id => l_event_id
193972 ,p_calculate_acctd_flag => l_calculate_acctd_flag
193973 ,p_calculate_g_l_flag => l_calculate_g_l_flag
193974 ,p_actual_flag => l_actual_flag
193975 ,p_balance_type_code => l_balance_type_code
193976 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
193977
193978 , p_source_4 => l_array_source_4(Idx)
193979 , p_source_11 => l_array_source_11(Idx)
193980 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
193981 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
193982 , p_source_15 => l_array_source_15(Idx)
193983 , p_source_18 => l_array_source_18(Idx)
193984 , p_source_19 => l_array_source_19(Idx)
193985 , p_source_20 => l_array_source_20(Idx)
193986 , p_source_21 => l_array_source_21(Idx)
193987 , p_source_22 => l_array_source_22(Idx)
193988 , p_source_24 => l_array_source_24(Idx)
193989 );
193990 If(l_balance_type_code = 'A') THEN
193991 l_actual_gain_loss_ref := l_gain_or_loss_ref;
193992 END IF;
193993
193994 --
193995
193996
193997 --
193998 AcctLineType_144 (
193999 p_application_id => p_application_id
194000 ,p_event_id => l_event_id
194001 ,p_calculate_acctd_flag => l_calculate_acctd_flag
194002 ,p_calculate_g_l_flag => l_calculate_g_l_flag
194003 ,p_actual_flag => l_actual_flag
194004 ,p_balance_type_code => l_balance_type_code
194005 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
194006
194007 , p_source_4 => l_array_source_4(Idx)
194008 , p_source_11 => l_array_source_11(Idx)
194009 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
194010 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
194011 , p_source_15 => l_array_source_15(Idx)
194012 , p_source_18 => l_array_source_18(Idx)
194013 , p_source_19 => l_array_source_19(Idx)
194014 , p_source_20 => l_array_source_20(Idx)
194015 , p_source_21 => l_array_source_21(Idx)
194016 , p_source_22 => l_array_source_22(Idx)
194017 , p_source_24 => l_array_source_24(Idx)
194018 );
194019 If(l_balance_type_code = 'A') THEN
194020 l_actual_gain_loss_ref := l_gain_or_loss_ref;
194021 END IF;
194022
194023 --
194024
194025
194026 --
194027 AcctLineType_176 (
194028 p_application_id => p_application_id
194029 ,p_event_id => l_event_id
194030 ,p_calculate_acctd_flag => l_calculate_acctd_flag
194031 ,p_calculate_g_l_flag => l_calculate_g_l_flag
194032 ,p_actual_flag => l_actual_flag
194033 ,p_balance_type_code => l_balance_type_code
194034 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
194035
194036 , p_source_4 => l_array_source_4(Idx)
194037 , p_source_11 => l_array_source_11(Idx)
194038 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
194039 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
194040 , p_source_15 => l_array_source_15(Idx)
194041 , p_source_18 => l_array_source_18(Idx)
194042 , p_source_19 => l_array_source_19(Idx)
194043 , p_source_20 => l_array_source_20(Idx)
194044 , p_source_21 => l_array_source_21(Idx)
194045 , p_source_22 => l_array_source_22(Idx)
194046 , p_source_24 => l_array_source_24(Idx)
194047 );
194048 If(l_balance_type_code = 'A') THEN
194049 l_actual_gain_loss_ref := l_gain_or_loss_ref;
194050 END IF;
194051
194052 --
194053
194054 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
194055 -- or secondary ledger that has different currency with primary
194056 -- or alc that is calculated by sla
194057 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
194058 (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'))
194059
194060 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
194061 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
194062 AND (l_actual_flag = 'A')) THEN
194063 XLA_AE_LINES_PKG.CreateGainOrLossLines(
194064 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
194065 ,p_application_id => p_application_id
194066 ,p_amb_context_code => 'DEFAULT'
194067 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
194068 ,p_event_class_code => C_EVENT_CLASS_CODE
194069 ,p_event_type_code => C_EVENT_TYPE_CODE
194070
194071 ,p_gain_ccid => -1
194072 ,p_loss_ccid => -1
194073
194074 ,p_actual_flag => l_actual_flag
194075 ,p_enc_flag => null
194076 ,p_actual_g_l_ref => l_actual_gain_loss_ref
194077 ,p_enc_g_l_ref => null
194078 );
194079 END IF;
194080 END IF;
194081 END IF;
194082
194083 ELSE
194084 --
194085 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
194086 --
194087 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
194088 trace
194089 (p_msg => 'Trancaction revesal option is Y'
194090 ,p_level => C_LEVEL_STATEMENT
194091 ,p_module => l_log_module);
194092 END IF;
194093 END IF;
194094
194095 END LOOP;
194096 l_result := XLA_AE_LINES_PKG.InsertLines ;
194097 end loop;
194098 close line_cur;
194099
194100
194101 --
194102 -- insert headers into xla_ae_headers_gt table
194103 --
194104 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
194105
194106 -- insert into errors table here.
194107
194108 END LOOP;
194109
194110 --
194111 -- 4865292
194112 --
194113 -- Compare g_hdr_extract_count with event count in
194114 -- CreateHeadersAndLines.
194115 --
194116 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
194117
194118 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
194119 trace (p_msg => '# rows extracted from header extract objects '
194120 || ' (running total): '
194121 || g_hdr_extract_count
194122 ,p_level => C_LEVEL_STATEMENT
194123 ,p_module => l_log_module);
194124 END IF;
194125
194126 CLOSE header_cur;
194127 --
194128
194129 --
194130 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
194131 trace
194132 (p_msg => 'END of EventType_291'
194133 ,p_level => C_LEVEL_PROCEDURE
194134 ,p_module => l_log_module);
194135 END IF;
194136 --
194137 RETURN l_result;
194138 EXCEPTION
194139 WHEN xla_exceptions_pkg.application_exception THEN
194140
194141 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
194142
194143
194144 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
194145
194146 RAISE;
194147
194148 WHEN NO_DATA_FOUND THEN
194149
194150 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
194151 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
194152
194153 FOR header_record IN header_cur
194154 LOOP
194155 l_array_header_events(header_record.event_id) := header_record.event_id;
194156 END LOOP;
194157
194158 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
194159 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
194160
194161 fnd_file.put_line(fnd_file.LOG, ' ');
194162 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
194163 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
194164 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
194165
194166 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
194167 LOOP
194168 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
194169 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
194170 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
194171 END IF;
194172 END LOOP;
194173
194174 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
194175 fnd_file.put_line(fnd_file.LOG, ' ');
194176
194177
194178 xla_exceptions_pkg.raise_message
194179 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventType_291');
194180
194181
194182 WHEN OTHERS THEN
194183 xla_exceptions_pkg.raise_message
194184 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventType_291');
194185 END EventType_291;
194186 --
194187
194188 ---------------------------------------
194189 --
194190 -- PRIVATE PROCEDURE
194191 -- insert_sources_292
194192 --
194193 ----------------------------------------
194194 --
194195 PROCEDURE insert_sources_292(
194196 p_target_ledger_id IN NUMBER
194197 , p_language IN VARCHAR2
194198 , p_sla_ledger_id IN NUMBER
194199 , p_pad_start_date IN DATE
194200 , p_pad_end_date IN DATE
194201 )
194202 IS
194203
194204 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'VARIANCE_ALL';
194205 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'VARIANCE';
194206 p_apps_owner VARCHAR2(30);
194207 l_log_module VARCHAR2(240);
194208 BEGIN
194209 IF g_log_enabled THEN
194210 l_log_module := C_DEFAULT_MODULE||'.insert_sources_292';
194211 END IF;
194212 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
194213
194214 trace
194215 (p_msg => 'BEGIN of insert_sources_292'
194216 ,p_level => C_LEVEL_PROCEDURE
194217 ,p_module => l_log_module);
194218
194219 END IF;
194220
194221 -- select APPS owner
194222 SELECT oracle_username
194223 INTO p_apps_owner
194224 FROM fnd_oracle_userid
194225 WHERE read_only_flag = 'U'
194226 ;
194227
194228 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
194229 trace
194230 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
194231 ' - p_language = '||p_language||
194232 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
194233 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
194234 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
194235 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
194236 ,p_level => C_LEVEL_STATEMENT
194237 ,p_module => l_log_module);
194238 END IF;
194239
194240
194241 --
194242 INSERT INTO xla_diag_sources --hdr2
194243 (
194244 event_id
194245 , ledger_id
194246 , sla_ledger_id
194247 , description_language
194248 , object_name
194249 , object_type_code
194250 , line_number
194251 , source_application_id
194252 , source_type_code
194253 , source_code
194254 , source_value
194255 , source_meaning
194256 , created_by
194257 , creation_date
194258 , last_update_date
194259 , last_updated_by
194260 , last_update_login
194261 , program_update_date
194262 , program_application_id
194263 , program_id
194264 , request_id
194265 )
194266 SELECT
194267 event_id
194268 , p_target_ledger_id
194269 , p_sla_ledger_id
194270 , p_language
194271 , object_name
194272 , object_type_code
194273 , line_number
194274 , source_application_id
194275 , source_type_code
194276 , source_code
194277 , SUBSTR(source_value ,1,1996)
194278 , SUBSTR(source_meaning ,1,200)
194279 , xla_environment_pkg.g_Usr_Id
194280 , TRUNC(SYSDATE)
194281 , TRUNC(SYSDATE)
194282 , xla_environment_pkg.g_Usr_Id
194283 , xla_environment_pkg.g_Login_Id
194284 , TRUNC(SYSDATE)
194285 , xla_environment_pkg.g_Prog_Appl_Id
194286 , xla_environment_pkg.g_Prog_Id
194287 , xla_environment_pkg.g_Req_Id
194288 FROM (
194289 SELECT xet.event_id event_id
194290 , 0 line_number
194291 , CASE r
194292 WHEN 1 THEN 'CST_XLA_WIP_HEADERS_V'
194293 WHEN 2 THEN 'CST_XLA_WIP_HEADERS_V'
194294 WHEN 3 THEN 'CST_XLA_WIP_HEADERS_V'
194295 WHEN 4 THEN 'CST_XLA_WIP_HEADERS_V'
194296 WHEN 5 THEN 'CST_XLA_WIP_HEADERS_V'
194297 WHEN 6 THEN 'CST_XLA_WIP_HEADERS_V'
194298
194299 ELSE null
194300 END object_name
194301 , CASE r
194302 WHEN 1 THEN 'HEADER'
194303 WHEN 2 THEN 'HEADER'
194304 WHEN 3 THEN 'HEADER'
194305 WHEN 4 THEN 'HEADER'
194306 WHEN 5 THEN 'HEADER'
194307 WHEN 6 THEN 'HEADER'
194308
194309 ELSE null
194310 END object_type_code
194311 , CASE r
194312 WHEN 1 THEN '707'
194313 WHEN 2 THEN '707'
194314 WHEN 3 THEN '707'
194315 WHEN 4 THEN '707'
194316 WHEN 5 THEN '707'
194317 WHEN 6 THEN '707'
194318
194319 ELSE null
194320 END source_application_id
194321 , 'S' source_type_code
194322 , CASE r
194323 WHEN 1 THEN 'DISTRIBUTION_TYPE'
194324 WHEN 2 THEN 'CURRENCY_CODE'
194325 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE'
194326 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE'
194327 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE'
194328 WHEN 6 THEN 'TRANSFER_TO_GL_INDICATOR'
194329
194330 ELSE null
194331 END source_code
194332 , CASE r
194333 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
194334 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
194335 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
194336 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
194337 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
194338 WHEN 6 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
194339
194340 ELSE null
194341 END source_value
194342 , CASE r
194343 WHEN 1 THEN fvl12.meaning
194344 WHEN 6 THEN fvl38.meaning
194345
194346 ELSE null
194347 END source_meaning
194348 FROM xla_events_gt xet
194349 , CST_XLA_WIP_HEADERS_V h1
194350 , fnd_lookup_values fvl12
194351 , fnd_lookup_values fvl38
194352 ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
194353 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
194354 AND xet.event_class_code = C_EVENT_CLASS_CODE
194355 AND h1.event_id = xet.event_id
194356 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
194357 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
194358 AND fvl12.view_application_id(+) = 700
194359 AND fvl12.language(+) = USERENV('LANG')
194360 AND fvl38.lookup_type(+) = 'YES_NO'
194361 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
194362 AND fvl38.view_application_id(+) = 0
194363 AND fvl38.language(+) = USERENV('LANG')
194364
194365 )
194366 ;
194367 --
194368 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
194369
194370 trace
194371 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
194372 ,p_level => C_LEVEL_STATEMENT
194373 ,p_module => l_log_module);
194374
194375 END IF;
194376 --
194377
194378
194379
194380 --
194381 INSERT INTO xla_diag_sources --line2
194382 (
194383 event_id
194384 , ledger_id
194385 , sla_ledger_id
194386 , description_language
194387 , object_name
194388 , object_type_code
194389 , line_number
194390 , source_application_id
194391 , source_type_code
194392 , source_code
194393 , source_value
194394 , source_meaning
194395 , created_by
194396 , creation_date
194397 , last_update_date
194398 , last_updated_by
194399 , last_update_login
194400 , program_update_date
194401 , program_application_id
194402 , program_id
194403 , request_id
194404 )
194405 SELECT event_id
194406 , p_target_ledger_id
194407 , p_sla_ledger_id
194408 , p_language
194409 , object_name
194410 , object_type_code
194411 , line_number
194412 , source_application_id
194413 , source_type_code
194414 , source_code
194415 , SUBSTR(source_value,1,1996)
194416 , SUBSTR(source_meaning ,1,200)
194417 , xla_environment_pkg.g_Usr_Id
194418 , TRUNC(SYSDATE)
194419 , TRUNC(SYSDATE)
194420 , xla_environment_pkg.g_Usr_Id
194421 , xla_environment_pkg.g_Login_Id
194422 , TRUNC(SYSDATE)
194423 , xla_environment_pkg.g_Prog_Appl_Id
194424 , xla_environment_pkg.g_Prog_Id
194425 , xla_environment_pkg.g_Req_Id
194426 FROM (
194427 SELECT xet.event_id event_id
194428 , l2.line_number line_number
194429 , CASE r
194430 WHEN 1 THEN 'CST_XLA_WIP_LINES_V'
194431 WHEN 2 THEN 'CST_XLA_WIP_LINES_V'
194432 WHEN 3 THEN 'CST_XLA_WIP_LINES_V'
194433 WHEN 4 THEN 'CST_XLA_WIP_LINES_V'
194434 WHEN 5 THEN 'CST_XLA_WIP_LINES_V'
194435
194436 ELSE null
194437 END object_name
194438 , CASE r
194439 WHEN 1 THEN 'LINE'
194440 WHEN 2 THEN 'LINE'
194441 WHEN 3 THEN 'LINE'
194442 WHEN 4 THEN 'LINE'
194443 WHEN 5 THEN 'LINE'
194444
194445 ELSE null
194446 END object_type_code
194447 , CASE r
194448 WHEN 1 THEN '707'
194449 WHEN 2 THEN '707'
194450 WHEN 3 THEN '707'
194451 WHEN 4 THEN '707'
194452 WHEN 5 THEN '707'
194453
194454 ELSE null
194455 END source_application_id
194456 , 'S' source_type_code
194457 , CASE r
194458 WHEN 1 THEN 'CODE_COMBINATION_ID'
194459 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER'
194460 WHEN 3 THEN 'ENTERED_AMOUNT'
194461 WHEN 4 THEN 'ACCOUNTED_AMOUNT'
194462 WHEN 5 THEN 'ACCOUNTING_LINE_TYPE_CODE'
194463
194464 ELSE null
194465 END source_code
194466 , CASE r
194467 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
194468 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
194469 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
194470 WHEN 4 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
194471 WHEN 5 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
194472
194473 ELSE null
194474 END source_value
194475 , null source_meaning
194476 FROM xla_events_gt xet
194477 , CST_XLA_WIP_LINES_V l2
194478 , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
194479 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
194480 AND xet.event_class_code = C_EVENT_CLASS_CODE
194481 AND l2.event_id = xet.event_id
194482
194483 )
194484 ;
194485 --
194486 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
194487
194488 trace
194489 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
194490 ,p_level => C_LEVEL_STATEMENT
194491 ,p_module => l_log_module);
194492
194493 END IF;
194494
194495
194496 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
194497 trace
194498 (p_msg => 'END of insert_sources_292'
194499 ,p_level => C_LEVEL_PROCEDURE
194500 ,p_module => l_log_module);
194501 END IF;
194502 EXCEPTION
194503 WHEN xla_exceptions_pkg.application_exception THEN
194504 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
194505 trace
194506 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
194507 ,p_level => C_LEVEL_EXCEPTION
194508 ,p_module => l_log_module);
194509 END IF;
194510 RAISE;
194511 WHEN OTHERS THEN
194512 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
194513 trace
194514 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
194515 ,p_level => C_LEVEL_EXCEPTION
194516 ,p_module => l_log_module);
194517 END IF;
194518 xla_exceptions_pkg.raise_message
194519 (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_292');
194520 END insert_sources_292;
194521 --
194522
194523 ---------------------------------------
194524 --
194525 -- PRIVATE FUNCTION
194526 -- EventClass_292
194527 --
194528 ----------------------------------------
194529 --
194530 FUNCTION EventClass_292
194531 (p_application_id IN NUMBER
194532 ,p_base_ledger_id IN NUMBER
194533 ,p_target_ledger_id IN NUMBER
194534 ,p_language IN VARCHAR2
194535 ,p_currency_code IN VARCHAR2
194536 ,p_sla_ledger_id IN NUMBER
194537 ,p_pad_start_date IN DATE
194538 ,p_pad_end_date IN DATE
194539 ,p_primary_ledger_id IN NUMBER)
194540 RETURN BOOLEAN IS
194541 --
194542 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'VARIANCE_ALL';
194543 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'VARIANCE';
194544
194545 l_calculate_acctd_flag VARCHAR2(1) :='N';
194546 l_calculate_g_l_flag VARCHAR2(1) :='N';
194547 --
194548 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
194549 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
194550 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
194551 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
194552 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
194553 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
194554 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
194555 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
194556 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
194557 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
194558 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
194559 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
194560 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
194561 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
194562 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
194563 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
194564 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
194565 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
194566 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
194567 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
194568 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
194569 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
194570 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
194571 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
194572 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
194573 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
194574
194575 l_event_id NUMBER;
194576 l_previous_event_id NUMBER;
194577 l_first_event_id NUMBER;
194578 l_last_event_id NUMBER;
194579
194580 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
194581 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
194582 --
194583 --
194584 l_result BOOLEAN := TRUE;
194585 l_rows NUMBER := 1000;
194586 l_event_type_name VARCHAR2(80) := 'All';
194587 l_event_class_name VARCHAR2(80) := 'WIP Variance';
194588 l_description VARCHAR2(4000);
194589 l_transaction_reversal NUMBER;
194590 l_ae_header_id NUMBER;
194591 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
194592 l_log_module VARCHAR2(240);
194593 --
194594 l_acct_reversal_source VARCHAR2(30);
194595 l_trx_reversal_source VARCHAR2(30);
194596
194597 l_continue_with_lines BOOLEAN := TRUE;
194598 --
194599 l_acc_rev_gl_date_source DATE; -- 4262811
194600 --
194601 type t_array_event_id is table of number index by binary_integer;
194602
194603 l_rec_array_event t_rec_array_event;
194604 l_null_rec_array_event t_rec_array_event;
194605 l_array_ae_header_id xla_number_array_type;
194606 l_actual_flag VARCHAR2(1) := NULL;
194607 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
194608 l_balance_type_code VARCHAR2(1) :=NULL;
194609 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
194610
194611 --
194612 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
194613 --
194614
194615 TYPE t_array_source_12 IS TABLE OF CST_XLA_WIP_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
194616 TYPE t_array_source_15 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
194617 TYPE t_array_source_19 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
194618 TYPE t_array_source_20 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
194619 TYPE t_array_source_21 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
194620 TYPE t_array_source_38 IS TABLE OF CST_XLA_WIP_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
194621
194622 TYPE t_array_source_4 IS TABLE OF CST_XLA_WIP_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
194623 TYPE t_array_source_11 IS TABLE OF CST_XLA_WIP_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
194624 TYPE t_array_source_18 IS TABLE OF CST_XLA_WIP_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
194625 TYPE t_array_source_22 IS TABLE OF CST_XLA_WIP_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
194626 TYPE t_array_source_24 IS TABLE OF CST_XLA_WIP_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
194627
194628 l_array_source_12 t_array_source_12;
194629 l_array_source_12_meaning t_array_lookup_meaning;
194630 l_array_source_15 t_array_source_15;
194631 l_array_source_19 t_array_source_19;
194632 l_array_source_20 t_array_source_20;
194633 l_array_source_21 t_array_source_21;
194634 l_array_source_38 t_array_source_38;
194635 l_array_source_38_meaning t_array_lookup_meaning;
194636
194637 l_array_source_4 t_array_source_4;
194638 l_array_source_11 t_array_source_11;
194639 l_array_source_18 t_array_source_18;
194640 l_array_source_22 t_array_source_22;
194641 l_array_source_24 t_array_source_24;
194642
194643 --
194644 CURSOR header_cur
194645 IS
194646 SELECT /*+ leading(xet) cardinality(xet,1) */
194647 -- Event Class Code: VARIANCE
194648 xet.entity_id
194649 ,xet.legal_entity_id
194650 ,xet.entity_code
194651 ,xet.transaction_number
194652 ,xet.event_id
194653 ,xet.event_class_code
194654 ,xet.event_type_code
194655 ,xet.event_number
194656 ,xet.event_date
194657 ,xet.transaction_date
194658 ,xet.reference_num_1
194659 ,xet.reference_num_2
194660 ,xet.reference_num_3
194661 ,xet.reference_num_4
194662 ,xet.reference_char_1
194663 ,xet.reference_char_2
194664 ,xet.reference_char_3
194665 ,xet.reference_char_4
194666 ,xet.reference_date_1
194667 ,xet.reference_date_2
194668 ,xet.reference_date_3
194669 ,xet.reference_date_4
194670 ,xet.event_created_by
194671 ,xet.budgetary_control_flag
194672 , h1.DISTRIBUTION_TYPE source_12
194673 , fvl12.meaning source_12_meaning
194674 , h1.CURRENCY_CODE source_15
194675 , h1.CURRENCY_CONVERSION_DATE source_19
194676 , h1.CURRENCY_CONVERSION_RATE source_20
194677 , h1.CURRENCY_CONVERSION_TYPE source_21
194678 , h1.TRANSFER_TO_GL_INDICATOR source_38
194679 , fvl38.meaning source_38_meaning
194680 FROM xla_events_gt xet
194681 , CST_XLA_WIP_HEADERS_V h1
194682 , fnd_lookup_values fvl12
194683 , fnd_lookup_values fvl38
194684 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
194685 and xet.event_class_code = C_EVENT_CLASS_CODE
194686 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
194687 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
194688 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
194689 AND fvl12.view_application_id(+) = 700
194690 AND fvl12.language(+) = USERENV('LANG')
194691 AND fvl38.lookup_type(+) = 'YES_NO'
194692 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
194693 AND fvl38.view_application_id(+) = 0
194694 AND fvl38.language(+) = USERENV('LANG')
194695
194696 ORDER BY event_id
194697 ;
194698
194699
194700 --
194701 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
194702 IS
194703 SELECT /*+ leading(xet) cardinality(xet,1) */
194704 -- Event Class Code: VARIANCE
194705 xet.entity_id
194706 ,xet.legal_entity_id
194707 ,xet.entity_code
194708 ,xet.transaction_number
194709 ,xet.event_id
194710 ,xet.event_class_code
194711 ,xet.event_type_code
194712 ,xet.event_number
194713 ,xet.event_date
194714 ,xet.transaction_date
194715 ,xet.reference_num_1
194716 ,xet.reference_num_2
194717 ,xet.reference_num_3
194718 ,xet.reference_num_4
194719 ,xet.reference_char_1
194720 ,xet.reference_char_2
194721 ,xet.reference_char_3
194722 ,xet.reference_char_4
194723 ,xet.reference_date_1
194724 ,xet.reference_date_2
194725 ,xet.reference_date_3
194726 ,xet.reference_date_4
194727 ,xet.event_created_by
194728 ,xet.budgetary_control_flag
194729 , l2.LINE_NUMBER
194730 , l2.CODE_COMBINATION_ID source_4
194731 , l2.DISTRIBUTION_IDENTIFIER source_11
194732 , l2.ENTERED_AMOUNT source_18
194733 , l2.ACCOUNTED_AMOUNT source_22
194734 , l2.ACCOUNTING_LINE_TYPE_CODE source_24
194735 FROM xla_events_gt xet
194736 , CST_XLA_WIP_LINES_V l2
194737 WHERE xet.event_id between x_first_event_id and x_last_event_id
194738 and xet.event_date between p_pad_start_date and p_pad_end_date
194739 and xet.event_class_code = C_EVENT_CLASS_CODE
194740 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
194741 ;
194742
194743 --
194744 BEGIN
194745 IF g_log_enabled THEN
194746 l_log_module := C_DEFAULT_MODULE||'.EventClass_292';
194747 END IF;
194748 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
194749 trace
194750 (p_msg => 'BEGIN of EventClass_292'
194751 ,p_level => C_LEVEL_PROCEDURE
194752 ,p_module => l_log_module);
194753 END IF;
194754
194755 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
194756 trace
194757 (p_msg => 'p_application_id = '||p_application_id||
194758 ' - p_base_ledger_id = '||p_base_ledger_id||
194759 ' - p_target_ledger_id = '||p_target_ledger_id||
194760 ' - p_language = '||p_language||
194761 ' - p_currency_code = '||p_currency_code||
194762 ' - p_sla_ledger_id = '||p_sla_ledger_id
194763 ,p_level => C_LEVEL_STATEMENT
194764 ,p_module => l_log_module);
194765 END IF;
194766 --
194767 -- initialze arrays
194768 --
194769 g_array_event.DELETE;
194770 l_rec_array_event := l_null_rec_array_event;
194771 --
194772 --------------------------------------
194773 -- 4262811 Initialze MPA Line Number
194774 --------------------------------------
194775 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
194776
194777 --
194778
194779 --
194780 OPEN header_cur;
194781 --
194782 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
194783 trace
194784 (p_msg => 'SQL - FETCH header_cur'
194785 ,p_level => C_LEVEL_STATEMENT
194786 ,p_module => l_log_module);
194787 END IF;
194788 --
194789 LOOP
194790 FETCH header_cur BULK COLLECT INTO
194791 l_array_entity_id
194792 , l_array_legal_entity_id
194793 , l_array_entity_code
194794 , l_array_transaction_num
194795 , l_array_event_id
194796 , l_array_class_code
194797 , l_array_event_type
194798 , l_array_event_number
194799 , l_array_event_date
194800 , l_array_transaction_date
194801 , l_array_reference_num_1
194802 , l_array_reference_num_2
194803 , l_array_reference_num_3
194804 , l_array_reference_num_4
194805 , l_array_reference_char_1
194806 , l_array_reference_char_2
194807 , l_array_reference_char_3
194808 , l_array_reference_char_4
194809 , l_array_reference_date_1
194810 , l_array_reference_date_2
194811 , l_array_reference_date_3
194812 , l_array_reference_date_4
194813 , l_array_event_created_by
194814 , l_array_budgetary_control_flag
194815 , l_array_source_12
194816 , l_array_source_12_meaning
194817 , l_array_source_15
194818 , l_array_source_19
194819 , l_array_source_20
194820 , l_array_source_21
194821 , l_array_source_38
194822 , l_array_source_38_meaning
194823 LIMIT l_rows;
194824 --
194825 IF (C_LEVEL_EVENT >= g_log_level) THEN
194826 trace
194827 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
194828 ,p_level => C_LEVEL_EVENT
194829 ,p_module => l_log_module);
194830 END IF;
194831 --
194832 EXIT WHEN l_array_entity_id.COUNT = 0;
194833
194834 -- initialize arrays
194835 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
194836 XLA_AE_LINES_PKG.g_rec_lines := NULL;
194837
194838 --
194839 -- Bug 4458708
194840 --
194841 XLA_AE_LINES_PKG.g_LineNumber := 0;
194842
194843
194844 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
194845 g_last_hdr_idx := l_array_event_id.LAST;
194846 --
194847 -- loop for the headers. Each iteration is for each header extract row
194848 -- fetched in header cursor
194849 --
194850 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
194851
194852 --
194853 -- set event info as cache for other routines to refer event attributes
194854 --
194855 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
194856 (p_application_id => p_application_id
194857 ,p_primary_ledger_id => p_primary_ledger_id
194858 ,p_base_ledger_id => p_base_ledger_id
194859 ,p_target_ledger_id => p_target_ledger_id
194860 ,p_entity_id => l_array_entity_id(hdr_idx)
194861 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
194862 ,p_entity_code => l_array_entity_code(hdr_idx)
194863 ,p_transaction_num => l_array_transaction_num(hdr_idx)
194864 ,p_event_id => l_array_event_id(hdr_idx)
194865 ,p_event_class_code => l_array_class_code(hdr_idx)
194866 ,p_event_type_code => l_array_event_type(hdr_idx)
194867 ,p_event_number => l_array_event_number(hdr_idx)
194868 ,p_event_date => l_array_event_date(hdr_idx)
194869 ,p_transaction_date => l_array_transaction_date(hdr_idx)
194870 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
194871 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
194872 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
194873 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
194874 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
194875 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
194876 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
194877 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
194878 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
194879 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
194880 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
194881 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
194882 ,p_event_created_by => l_array_event_created_by(hdr_idx)
194883 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
194884
194885 --
194886 -- set the status of entry to C_VALID (0)
194887 --
194888 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
194889
194890 --
194891 -- initialize a row for ae header
194892 --
194893 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
194894
194895 l_event_id := l_array_event_id(hdr_idx);
194896
194897 --
194898 -- storing the hdr_idx for event. May be used by line cursor.
194899 --
194900 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
194901
194902 --
194903 -- store sources from header extract. This can be improved to
194904 -- store only those sources from header extract that may be used in lines
194905 --
194906
194907 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
194908 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
194909 g_array_event(l_event_id).array_value_char('source_15') := l_array_source_15(hdr_idx);
194910 g_array_event(l_event_id).array_value_date('source_19') := l_array_source_19(hdr_idx);
194911 g_array_event(l_event_id).array_value_num('source_20') := l_array_source_20(hdr_idx);
194912 g_array_event(l_event_id).array_value_char('source_21') := l_array_source_21(hdr_idx);
194913 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
194914 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
194915
194916 --
194917 -- initilaize the status of ae headers for diffrent balance types
194918 -- the status is initialised to C_NOT_CREATED (2)
194919 --
194920 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
194921 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
194922 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
194923
194924 --
194925 -- call api to validate and store accounting attributes for header
194926 --
194927
194928 ------------------------------------------------------------
194929 -- Accrual Reversal : to get date for Standard Source (NONE)
194930 ------------------------------------------------------------
194931 l_acc_rev_gl_date_source := NULL;
194932
194933 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
194934 l_rec_acct_attrs.array_date_value(1) :=
194935 xla_ae_sources_pkg.GetSystemSourceDate(
194936 p_source_code => 'XLA_REFERENCE_DATE_1'
194937 , p_source_type_code => 'Y'
194938 , p_source_application_id => 602
194939 );
194940 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_TRANSFER_FLAG';
194941 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
194942
194943
194944 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
194945
194946 XLA_AE_HEADER_PKG.SetJeCategoryName;
194947
194948 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
194949 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
194950 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
194951 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
194952 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
194953
194954
194955 -- No header level analytical criteria
194956
194957 --
194958 --accounting attribute enhancement, bug 3612931
194959 --
194960 l_trx_reversal_source := SUBSTR(NULL, 1,30);
194961
194962 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
194963 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
194964
194965 xla_accounting_err_pkg.build_message
194966 (p_appli_s_name => 'XLA'
194967 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
194968 ,p_token_1 => 'ACCT_ATTR_NAME'
194969 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
194970 ,p_token_2 => 'PRODUCT_NAME'
194971 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
194972 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
194973 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
194974 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
194975
194976 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
194977 --
194978 -- following sets the accounting attributes needed to reverse
194979 -- accounting for a distributeion
194980 --
194981 xla_ae_lines_pkg.SetTrxReversalAttrs
194982 (p_event_id => l_event_id
194983 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
194984 ,p_trx_reversal_source => l_trx_reversal_source);
194985
194986 END IF;
194987
194988
194989 ----------------------------------------------------------------
194990 -- 4262811 - update the header statuses to invalid in need be
194991 ----------------------------------------------------------------
194992 --
194993 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
194994
194995
194996 -----------------------------------------------
194997 -- No accrual reversal for the event class/type
194998 -----------------------------------------------
194999 ----------------------------------------------------------------
195000
195001 --
195002 -- this ends the header loop iteration for one bulk fetch
195003 --
195004 END LOOP;
195005
195006 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
195007 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
195008
195009 --
195010 -- insert dummy rows into lines gt table that were created due to
195011 -- transaction reversals
195012 --
195013 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
195014 l_result := XLA_AE_LINES_PKG.InsertLines;
195015 END IF;
195016
195017 --
195018 -- reset the temp_line_num for each set of events fetched from header
195019 -- cursor rather than doing it for each new event in line cursor
195020 -- Bug 3939231
195021 --
195022 xla_ae_lines_pkg.g_temp_line_num := 0;
195023
195024
195025
195026 --
195027 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
195028 --
195029 --
195030 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
195031
195032 trace
195033 (p_msg => 'SQL - FETCH line_cur'
195034 ,p_level => C_LEVEL_STATEMENT
195035 ,p_module => l_log_module);
195036
195037 END IF;
195038 --
195039 --
195040 LOOP
195041 --
195042 FETCH line_cur BULK COLLECT INTO
195043 l_array_entity_id
195044 , l_array_legal_entity_id
195045 , l_array_entity_code
195046 , l_array_transaction_num
195047 , l_array_event_id
195048 , l_array_class_code
195049 , l_array_event_type
195050 , l_array_event_number
195051 , l_array_event_date
195052 , l_array_transaction_date
195053 , l_array_reference_num_1
195054 , l_array_reference_num_2
195055 , l_array_reference_num_3
195056 , l_array_reference_num_4
195057 , l_array_reference_char_1
195058 , l_array_reference_char_2
195059 , l_array_reference_char_3
195060 , l_array_reference_char_4
195061 , l_array_reference_date_1
195062 , l_array_reference_date_2
195063 , l_array_reference_date_3
195064 , l_array_reference_date_4
195065 , l_array_event_created_by
195066 , l_array_budgetary_control_flag
195067 , l_array_extract_line_num
195068 , l_array_source_4
195069 , l_array_source_11
195070 , l_array_source_18
195071 , l_array_source_22
195072 , l_array_source_24
195073 LIMIT l_rows;
195074
195075 --
195076 IF (C_LEVEL_EVENT >= g_log_level) THEN
195077 trace
195078 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
195079 ,p_level => C_LEVEL_EVENT
195080 ,p_module => l_log_module);
195081 END IF;
195082 --
195083 EXIT WHEN l_array_entity_id.count = 0;
195084
195085 XLA_AE_LINES_PKG.g_rec_lines := null;
195086
195087 --
195088 -- Bug 4458708
195089 --
195090 XLA_AE_LINES_PKG.g_LineNumber := 0;
195091 --
195092 --
195093
195094 FOR Idx IN 1..l_array_event_id.count LOOP
195095 --
195096 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
195097 --
195098 l_event_id := l_array_event_id(idx); -- 5648433
195099
195100 --
195101 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
195102 --
195103
195104 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
195105 (g_array_event(l_event_id).array_value_num('header_index'))
195106 ,'N'
195107 ) <> 'Y'
195108 THEN
195109 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
195110 trace
195111 (p_msg => 'Trancaction revesal option is not Y '
195112 ,p_level => C_LEVEL_STATEMENT
195113 ,p_module => l_log_module);
195114 END IF;
195115
195116 --
195117 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
195118 --
195119 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
195120 --
195121 -- set event info as cache for other routines to refer event attributes
195122 --
195123
195124 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
195125 l_previous_event_id := l_event_id;
195126
195127 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
195128 (p_application_id => p_application_id
195129 ,p_primary_ledger_id => p_primary_ledger_id
195130 ,p_base_ledger_id => p_base_ledger_id
195131 ,p_target_ledger_id => p_target_ledger_id
195132 ,p_entity_id => l_array_entity_id(Idx)
195133 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
195134 ,p_entity_code => l_array_entity_code(Idx)
195135 ,p_transaction_num => l_array_transaction_num(Idx)
195136 ,p_event_id => l_array_event_id(Idx)
195137 ,p_event_class_code => l_array_class_code(Idx)
195138 ,p_event_type_code => l_array_event_type(Idx)
195139 ,p_event_number => l_array_event_number(Idx)
195140 ,p_event_date => l_array_event_date(Idx)
195141 ,p_transaction_date => l_array_transaction_date(Idx)
195142 ,p_reference_num_1 => l_array_reference_num_1(Idx)
195143 ,p_reference_num_2 => l_array_reference_num_2(Idx)
195144 ,p_reference_num_3 => l_array_reference_num_3(Idx)
195145 ,p_reference_num_4 => l_array_reference_num_4(Idx)
195146 ,p_reference_char_1 => l_array_reference_char_1(Idx)
195147 ,p_reference_char_2 => l_array_reference_char_2(Idx)
195148 ,p_reference_char_3 => l_array_reference_char_3(Idx)
195149 ,p_reference_char_4 => l_array_reference_char_4(Idx)
195150 ,p_reference_date_1 => l_array_reference_date_1(Idx)
195151 ,p_reference_date_2 => l_array_reference_date_2(Idx)
195152 ,p_reference_date_3 => l_array_reference_date_3(Idx)
195153 ,p_reference_date_4 => l_array_reference_date_4(Idx)
195154 ,p_event_created_by => l_array_event_created_by(Idx)
195155 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
195156 --
195157 END IF;
195158
195159
195160
195161 --
195162 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
195163
195164 l_acct_reversal_source := SUBSTR(NULL, 1,30);
195165
195166 IF l_continue_with_lines THEN
195167 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
195168 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
195169
195170 xla_accounting_err_pkg.build_message
195171 (p_appli_s_name => 'XLA'
195172 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
195173 ,p_token_1 => 'LINE_NUMBER'
195174 ,p_value_1 => l_array_extract_line_num(Idx)
195175 ,p_token_2 => 'PRODUCT_NAME'
195176 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
195177 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
195178 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
195179 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
195180
195181 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
195182 --
195183 -- following sets the accounting attributes needed to reverse
195184 -- accounting for a distributeion
195185 --
195186
195187 --
195188 -- 5217187
195189 --
195190 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
195191 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
195192 g_array_event(l_event_id).array_value_num('header_index'));
195193 --
195194 --
195195
195196 -- No reversal code generated
195197
195198 xla_ae_lines_pkg.SetAcctReversalAttrs
195199 (p_event_id => l_event_id
195200 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
195201 ,p_calculate_acctd_flag => l_calculate_acctd_flag
195202 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
195203 END IF;
195204
195205 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
195206 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
195207
195208 --
195209 AcctLineType_242 (
195210 p_application_id => p_application_id
195211 ,p_event_id => l_event_id
195212 ,p_calculate_acctd_flag => l_calculate_acctd_flag
195213 ,p_calculate_g_l_flag => l_calculate_g_l_flag
195214 ,p_actual_flag => l_actual_flag
195215 ,p_balance_type_code => l_balance_type_code
195216 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
195217
195218 , p_source_4 => l_array_source_4(Idx)
195219 , p_source_11 => l_array_source_11(Idx)
195220 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
195221 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
195222 , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
195223 , p_source_18 => l_array_source_18(Idx)
195224 , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
195225 , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
195226 , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
195227 , p_source_22 => l_array_source_22(Idx)
195228 , p_source_24 => l_array_source_24(Idx)
195229 );
195230 If(l_balance_type_code = 'A') THEN
195231 l_actual_gain_loss_ref := l_gain_or_loss_ref;
195232 END IF;
195233
195234 --
195235
195236
195237 --
195238 AcctLineType_247 (
195239 p_application_id => p_application_id
195240 ,p_event_id => l_event_id
195241 ,p_calculate_acctd_flag => l_calculate_acctd_flag
195242 ,p_calculate_g_l_flag => l_calculate_g_l_flag
195243 ,p_actual_flag => l_actual_flag
195244 ,p_balance_type_code => l_balance_type_code
195245 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
195246
195247 , p_source_4 => l_array_source_4(Idx)
195248 , p_source_11 => l_array_source_11(Idx)
195249 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
195250 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
195251 , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
195252 , p_source_18 => l_array_source_18(Idx)
195253 , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
195254 , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
195255 , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
195256 , p_source_22 => l_array_source_22(Idx)
195257 , p_source_24 => l_array_source_24(Idx)
195258 );
195259 If(l_balance_type_code = 'A') THEN
195260 l_actual_gain_loss_ref := l_gain_or_loss_ref;
195261 END IF;
195262
195263 --
195264
195265 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
195266 -- or secondary ledger that has different currency with primary
195267 -- or alc that is calculated by sla
195268 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
195269 (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'))
195270
195271 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
195272 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
195273 AND (l_actual_flag = 'A')) THEN
195274 XLA_AE_LINES_PKG.CreateGainOrLossLines(
195275 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
195276 ,p_application_id => p_application_id
195277 ,p_amb_context_code => 'DEFAULT'
195278 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
195279 ,p_event_class_code => C_EVENT_CLASS_CODE
195280 ,p_event_type_code => C_EVENT_TYPE_CODE
195281
195282 ,p_gain_ccid => -1
195283 ,p_loss_ccid => -1
195284
195285 ,p_actual_flag => l_actual_flag
195286 ,p_enc_flag => null
195287 ,p_actual_g_l_ref => l_actual_gain_loss_ref
195288 ,p_enc_g_l_ref => null
195289 );
195290 END IF;
195291 END IF;
195292 END IF;
195293
195294 ELSE
195295 --
195296 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
195297 --
195298 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
195299 trace
195300 (p_msg => 'Trancaction revesal option is Y'
195301 ,p_level => C_LEVEL_STATEMENT
195302 ,p_module => l_log_module);
195303 END IF;
195304 END IF;
195305
195306 END LOOP;
195307 l_result := XLA_AE_LINES_PKG.InsertLines ;
195308 end loop;
195309 close line_cur;
195310
195311
195312 --
195313 -- insert headers into xla_ae_headers_gt table
195314 --
195315 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
195316
195317 -- insert into errors table here.
195318
195319 END LOOP;
195320
195321 --
195322 -- 4865292
195323 --
195324 -- Compare g_hdr_extract_count with event count in
195325 -- CreateHeadersAndLines.
195326 --
195327 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
195328
195329 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
195330 trace (p_msg => '# rows extracted from header extract objects '
195331 || ' (running total): '
195332 || g_hdr_extract_count
195333 ,p_level => C_LEVEL_STATEMENT
195334 ,p_module => l_log_module);
195335 END IF;
195336
195337 CLOSE header_cur;
195338 --
195339
195340 --
195341 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
195342 trace
195343 (p_msg => 'END of EventClass_292'
195344 ,p_level => C_LEVEL_PROCEDURE
195345 ,p_module => l_log_module);
195346 END IF;
195347 --
195348 RETURN l_result;
195349 EXCEPTION
195350 WHEN xla_exceptions_pkg.application_exception THEN
195351
195352 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
195353
195354
195355 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
195356
195357 RAISE;
195358
195359 WHEN NO_DATA_FOUND THEN
195360
195361 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
195362 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
195363
195364 FOR header_record IN header_cur
195365 LOOP
195366 l_array_header_events(header_record.event_id) := header_record.event_id;
195367 END LOOP;
195368
195369 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
195370 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
195371
195372 fnd_file.put_line(fnd_file.LOG, ' ');
195373 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
195374 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
195375 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
195376
195377 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
195378 LOOP
195379 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
195380 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
195381 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
195382 END IF;
195383 END LOOP;
195384
195385 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
195386 fnd_file.put_line(fnd_file.LOG, ' ');
195387
195388
195389 xla_exceptions_pkg.raise_message
195390 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_292');
195391
195392
195393 WHEN OTHERS THEN
195394 xla_exceptions_pkg.raise_message
195395 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_292');
195396 END EventClass_292;
195397 --
195398
195399 ---------------------------------------
195400 --
195401 -- PRIVATE PROCEDURE
195402 -- insert_sources_293
195403 --
195404 ----------------------------------------
195405 --
195406 PROCEDURE insert_sources_293(
195407 p_target_ledger_id IN NUMBER
195408 , p_language IN VARCHAR2
195409 , p_sla_ledger_id IN NUMBER
195410 , p_pad_start_date IN DATE
195411 , p_pad_end_date IN DATE
195412 )
195413 IS
195414
195415 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'WIP_COST_UPD_ALL';
195416 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'WIP_COST_UPD';
195417 p_apps_owner VARCHAR2(30);
195418 l_log_module VARCHAR2(240);
195419 BEGIN
195420 IF g_log_enabled THEN
195421 l_log_module := C_DEFAULT_MODULE||'.insert_sources_293';
195422 END IF;
195423 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
195424
195425 trace
195426 (p_msg => 'BEGIN of insert_sources_293'
195427 ,p_level => C_LEVEL_PROCEDURE
195428 ,p_module => l_log_module);
195429
195430 END IF;
195431
195432 -- select APPS owner
195433 SELECT oracle_username
195434 INTO p_apps_owner
195435 FROM fnd_oracle_userid
195436 WHERE read_only_flag = 'U'
195437 ;
195438
195439 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
195440 trace
195441 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
195442 ' - p_language = '||p_language||
195443 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
195444 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
195445 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
195446 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
195447 ,p_level => C_LEVEL_STATEMENT
195448 ,p_module => l_log_module);
195449 END IF;
195450
195451
195452 --
195453 INSERT INTO xla_diag_sources --hdr2
195454 (
195455 event_id
195456 , ledger_id
195457 , sla_ledger_id
195458 , description_language
195459 , object_name
195460 , object_type_code
195461 , line_number
195462 , source_application_id
195463 , source_type_code
195464 , source_code
195465 , source_value
195466 , source_meaning
195467 , created_by
195468 , creation_date
195469 , last_update_date
195470 , last_updated_by
195471 , last_update_login
195472 , program_update_date
195473 , program_application_id
195474 , program_id
195475 , request_id
195476 )
195477 SELECT
195478 event_id
195479 , p_target_ledger_id
195480 , p_sla_ledger_id
195481 , p_language
195482 , object_name
195483 , object_type_code
195484 , line_number
195485 , source_application_id
195486 , source_type_code
195487 , source_code
195488 , SUBSTR(source_value ,1,1996)
195489 , SUBSTR(source_meaning ,1,200)
195490 , xla_environment_pkg.g_Usr_Id
195491 , TRUNC(SYSDATE)
195492 , TRUNC(SYSDATE)
195493 , xla_environment_pkg.g_Usr_Id
195494 , xla_environment_pkg.g_Login_Id
195495 , TRUNC(SYSDATE)
195496 , xla_environment_pkg.g_Prog_Appl_Id
195497 , xla_environment_pkg.g_Prog_Id
195498 , xla_environment_pkg.g_Req_Id
195499 FROM (
195500 SELECT xet.event_id event_id
195501 , 0 line_number
195502 , CASE r
195503 WHEN 1 THEN 'CST_XLA_WIP_HEADERS_V'
195504 WHEN 2 THEN 'CST_XLA_WIP_HEADERS_V'
195505 WHEN 3 THEN 'CST_XLA_WIP_HEADERS_V'
195506 WHEN 4 THEN 'CST_XLA_WIP_HEADERS_V'
195507 WHEN 5 THEN 'CST_XLA_WIP_HEADERS_V'
195508 WHEN 6 THEN 'CST_XLA_WIP_HEADERS_V'
195509
195510 ELSE null
195511 END object_name
195512 , CASE r
195513 WHEN 1 THEN 'HEADER'
195514 WHEN 2 THEN 'HEADER'
195515 WHEN 3 THEN 'HEADER'
195516 WHEN 4 THEN 'HEADER'
195517 WHEN 5 THEN 'HEADER'
195518 WHEN 6 THEN 'HEADER'
195519
195520 ELSE null
195521 END object_type_code
195522 , CASE r
195523 WHEN 1 THEN '707'
195524 WHEN 2 THEN '707'
195525 WHEN 3 THEN '707'
195526 WHEN 4 THEN '707'
195527 WHEN 5 THEN '707'
195528 WHEN 6 THEN '707'
195529
195530 ELSE null
195531 END source_application_id
195532 , 'S' source_type_code
195533 , CASE r
195534 WHEN 1 THEN 'DISTRIBUTION_TYPE'
195535 WHEN 2 THEN 'CURRENCY_CODE'
195536 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE'
195537 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE'
195538 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE'
195539 WHEN 6 THEN 'TRANSFER_TO_GL_INDICATOR'
195540
195541 ELSE null
195542 END source_code
195543 , CASE r
195544 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
195545 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
195546 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
195547 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
195548 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
195549 WHEN 6 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
195550
195551 ELSE null
195552 END source_value
195553 , CASE r
195554 WHEN 1 THEN fvl12.meaning
195555 WHEN 6 THEN fvl38.meaning
195556
195557 ELSE null
195558 END source_meaning
195559 FROM xla_events_gt xet
195560 , CST_XLA_WIP_HEADERS_V h1
195561 , fnd_lookup_values fvl12
195562 , fnd_lookup_values fvl38
195563 ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
195564 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
195565 AND xet.event_class_code = C_EVENT_CLASS_CODE
195566 AND h1.event_id = xet.event_id
195567 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
195568 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
195569 AND fvl12.view_application_id(+) = 700
195570 AND fvl12.language(+) = USERENV('LANG')
195571 AND fvl38.lookup_type(+) = 'YES_NO'
195572 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
195573 AND fvl38.view_application_id(+) = 0
195574 AND fvl38.language(+) = USERENV('LANG')
195575
195576 )
195577 ;
195578 --
195579 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
195580
195581 trace
195582 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
195583 ,p_level => C_LEVEL_STATEMENT
195584 ,p_module => l_log_module);
195585
195586 END IF;
195587 --
195588
195589
195590
195591 --
195592 INSERT INTO xla_diag_sources --line2
195593 (
195594 event_id
195595 , ledger_id
195596 , sla_ledger_id
195597 , description_language
195598 , object_name
195599 , object_type_code
195600 , line_number
195601 , source_application_id
195602 , source_type_code
195603 , source_code
195604 , source_value
195605 , source_meaning
195606 , created_by
195607 , creation_date
195608 , last_update_date
195609 , last_updated_by
195610 , last_update_login
195611 , program_update_date
195612 , program_application_id
195613 , program_id
195614 , request_id
195615 )
195616 SELECT event_id
195617 , p_target_ledger_id
195618 , p_sla_ledger_id
195619 , p_language
195620 , object_name
195621 , object_type_code
195622 , line_number
195623 , source_application_id
195624 , source_type_code
195625 , source_code
195626 , SUBSTR(source_value,1,1996)
195627 , SUBSTR(source_meaning ,1,200)
195628 , xla_environment_pkg.g_Usr_Id
195629 , TRUNC(SYSDATE)
195630 , TRUNC(SYSDATE)
195631 , xla_environment_pkg.g_Usr_Id
195632 , xla_environment_pkg.g_Login_Id
195633 , TRUNC(SYSDATE)
195634 , xla_environment_pkg.g_Prog_Appl_Id
195635 , xla_environment_pkg.g_Prog_Id
195636 , xla_environment_pkg.g_Req_Id
195637 FROM (
195638 SELECT xet.event_id event_id
195639 , l2.line_number line_number
195640 , CASE r
195641 WHEN 1 THEN 'CST_XLA_WIP_LINES_V'
195642 WHEN 2 THEN 'CST_XLA_WIP_LINES_V'
195643 WHEN 3 THEN 'CST_XLA_WIP_LINES_V'
195644 WHEN 4 THEN 'CST_XLA_WIP_LINES_V'
195645 WHEN 5 THEN 'CST_XLA_WIP_LINES_V'
195646
195647 ELSE null
195648 END object_name
195649 , CASE r
195650 WHEN 1 THEN 'LINE'
195651 WHEN 2 THEN 'LINE'
195652 WHEN 3 THEN 'LINE'
195653 WHEN 4 THEN 'LINE'
195654 WHEN 5 THEN 'LINE'
195655
195656 ELSE null
195657 END object_type_code
195658 , CASE r
195659 WHEN 1 THEN '707'
195660 WHEN 2 THEN '707'
195661 WHEN 3 THEN '707'
195662 WHEN 4 THEN '707'
195663 WHEN 5 THEN '707'
195664
195665 ELSE null
195666 END source_application_id
195667 , 'S' source_type_code
195668 , CASE r
195669 WHEN 1 THEN 'CODE_COMBINATION_ID'
195670 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER'
195671 WHEN 3 THEN 'ENTERED_AMOUNT'
195672 WHEN 4 THEN 'ACCOUNTED_AMOUNT'
195673 WHEN 5 THEN 'ACCOUNTING_LINE_TYPE_CODE'
195674
195675 ELSE null
195676 END source_code
195677 , CASE r
195678 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
195679 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
195680 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
195681 WHEN 4 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
195682 WHEN 5 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
195683
195684 ELSE null
195685 END source_value
195686 , null source_meaning
195687 FROM xla_events_gt xet
195688 , CST_XLA_WIP_LINES_V l2
195689 , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
195690 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
195691 AND xet.event_class_code = C_EVENT_CLASS_CODE
195692 AND l2.event_id = xet.event_id
195693
195694 )
195695 ;
195696 --
195697 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
195698
195699 trace
195700 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
195701 ,p_level => C_LEVEL_STATEMENT
195702 ,p_module => l_log_module);
195703
195704 END IF;
195705
195706
195707 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
195708 trace
195709 (p_msg => 'END of insert_sources_293'
195710 ,p_level => C_LEVEL_PROCEDURE
195711 ,p_module => l_log_module);
195712 END IF;
195713 EXCEPTION
195714 WHEN xla_exceptions_pkg.application_exception THEN
195715 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
195716 trace
195717 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
195718 ,p_level => C_LEVEL_EXCEPTION
195719 ,p_module => l_log_module);
195720 END IF;
195721 RAISE;
195722 WHEN OTHERS THEN
195723 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
195724 trace
195725 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
195726 ,p_level => C_LEVEL_EXCEPTION
195727 ,p_module => l_log_module);
195728 END IF;
195729 xla_exceptions_pkg.raise_message
195730 (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_293');
195731 END insert_sources_293;
195732 --
195733
195734 ---------------------------------------
195735 --
195736 -- PRIVATE FUNCTION
195737 -- EventClass_293
195738 --
195739 ----------------------------------------
195740 --
195741 FUNCTION EventClass_293
195742 (p_application_id IN NUMBER
195743 ,p_base_ledger_id IN NUMBER
195744 ,p_target_ledger_id IN NUMBER
195745 ,p_language IN VARCHAR2
195746 ,p_currency_code IN VARCHAR2
195747 ,p_sla_ledger_id IN NUMBER
195748 ,p_pad_start_date IN DATE
195749 ,p_pad_end_date IN DATE
195750 ,p_primary_ledger_id IN NUMBER)
195751 RETURN BOOLEAN IS
195752 --
195753 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'WIP_COST_UPD_ALL';
195754 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'WIP_COST_UPD';
195755
195756 l_calculate_acctd_flag VARCHAR2(1) :='N';
195757 l_calculate_g_l_flag VARCHAR2(1) :='N';
195758 --
195759 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
195760 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
195761 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
195762 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
195763 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
195764 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
195765 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
195766 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
195767 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
195768 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
195769 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
195770 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
195771 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
195772 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
195773 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
195774 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
195775 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
195776 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
195777 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
195778 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
195779 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
195780 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
195781 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
195782 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
195783 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
195784 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
195785
195786 l_event_id NUMBER;
195787 l_previous_event_id NUMBER;
195788 l_first_event_id NUMBER;
195789 l_last_event_id NUMBER;
195790
195791 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
195792 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
195793 --
195794 --
195795 l_result BOOLEAN := TRUE;
195796 l_rows NUMBER := 1000;
195797 l_event_type_name VARCHAR2(80) := 'All';
195798 l_event_class_name VARCHAR2(80) := 'WIP Cost Update';
195799 l_description VARCHAR2(4000);
195800 l_transaction_reversal NUMBER;
195801 l_ae_header_id NUMBER;
195802 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
195803 l_log_module VARCHAR2(240);
195804 --
195805 l_acct_reversal_source VARCHAR2(30);
195806 l_trx_reversal_source VARCHAR2(30);
195807
195808 l_continue_with_lines BOOLEAN := TRUE;
195809 --
195810 l_acc_rev_gl_date_source DATE; -- 4262811
195811 --
195812 type t_array_event_id is table of number index by binary_integer;
195813
195814 l_rec_array_event t_rec_array_event;
195815 l_null_rec_array_event t_rec_array_event;
195816 l_array_ae_header_id xla_number_array_type;
195817 l_actual_flag VARCHAR2(1) := NULL;
195818 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
195819 l_balance_type_code VARCHAR2(1) :=NULL;
195820 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
195821
195822 --
195823 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
195824 --
195825
195826 TYPE t_array_source_12 IS TABLE OF CST_XLA_WIP_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
195827 TYPE t_array_source_15 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
195828 TYPE t_array_source_19 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
195829 TYPE t_array_source_20 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
195830 TYPE t_array_source_21 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
195831 TYPE t_array_source_38 IS TABLE OF CST_XLA_WIP_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
195832
195833 TYPE t_array_source_4 IS TABLE OF CST_XLA_WIP_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
195834 TYPE t_array_source_11 IS TABLE OF CST_XLA_WIP_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
195835 TYPE t_array_source_18 IS TABLE OF CST_XLA_WIP_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
195836 TYPE t_array_source_22 IS TABLE OF CST_XLA_WIP_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
195837 TYPE t_array_source_24 IS TABLE OF CST_XLA_WIP_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
195838
195839 l_array_source_12 t_array_source_12;
195840 l_array_source_12_meaning t_array_lookup_meaning;
195841 l_array_source_15 t_array_source_15;
195842 l_array_source_19 t_array_source_19;
195843 l_array_source_20 t_array_source_20;
195844 l_array_source_21 t_array_source_21;
195845 l_array_source_38 t_array_source_38;
195846 l_array_source_38_meaning t_array_lookup_meaning;
195847
195848 l_array_source_4 t_array_source_4;
195849 l_array_source_11 t_array_source_11;
195850 l_array_source_18 t_array_source_18;
195851 l_array_source_22 t_array_source_22;
195852 l_array_source_24 t_array_source_24;
195853
195854 --
195855 CURSOR header_cur
195856 IS
195857 SELECT /*+ leading(xet) cardinality(xet,1) */
195858 -- Event Class Code: WIP_COST_UPD
195859 xet.entity_id
195860 ,xet.legal_entity_id
195861 ,xet.entity_code
195862 ,xet.transaction_number
195863 ,xet.event_id
195864 ,xet.event_class_code
195865 ,xet.event_type_code
195866 ,xet.event_number
195867 ,xet.event_date
195868 ,xet.transaction_date
195869 ,xet.reference_num_1
195870 ,xet.reference_num_2
195871 ,xet.reference_num_3
195872 ,xet.reference_num_4
195873 ,xet.reference_char_1
195874 ,xet.reference_char_2
195875 ,xet.reference_char_3
195876 ,xet.reference_char_4
195877 ,xet.reference_date_1
195878 ,xet.reference_date_2
195879 ,xet.reference_date_3
195880 ,xet.reference_date_4
195881 ,xet.event_created_by
195882 ,xet.budgetary_control_flag
195883 , h1.DISTRIBUTION_TYPE source_12
195884 , fvl12.meaning source_12_meaning
195885 , h1.CURRENCY_CODE source_15
195886 , h1.CURRENCY_CONVERSION_DATE source_19
195887 , h1.CURRENCY_CONVERSION_RATE source_20
195888 , h1.CURRENCY_CONVERSION_TYPE source_21
195889 , h1.TRANSFER_TO_GL_INDICATOR source_38
195890 , fvl38.meaning source_38_meaning
195891 FROM xla_events_gt xet
195892 , CST_XLA_WIP_HEADERS_V h1
195893 , fnd_lookup_values fvl12
195894 , fnd_lookup_values fvl38
195895 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
195896 and xet.event_class_code = C_EVENT_CLASS_CODE
195897 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
195898 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
195899 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
195900 AND fvl12.view_application_id(+) = 700
195901 AND fvl12.language(+) = USERENV('LANG')
195902 AND fvl38.lookup_type(+) = 'YES_NO'
195903 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
195904 AND fvl38.view_application_id(+) = 0
195905 AND fvl38.language(+) = USERENV('LANG')
195906
195907 ORDER BY event_id
195908 ;
195909
195910
195911 --
195912 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
195913 IS
195914 SELECT /*+ leading(xet) cardinality(xet,1) */
195915 -- Event Class Code: WIP_COST_UPD
195916 xet.entity_id
195917 ,xet.legal_entity_id
195918 ,xet.entity_code
195919 ,xet.transaction_number
195920 ,xet.event_id
195921 ,xet.event_class_code
195922 ,xet.event_type_code
195923 ,xet.event_number
195924 ,xet.event_date
195925 ,xet.transaction_date
195926 ,xet.reference_num_1
195927 ,xet.reference_num_2
195928 ,xet.reference_num_3
195929 ,xet.reference_num_4
195930 ,xet.reference_char_1
195931 ,xet.reference_char_2
195932 ,xet.reference_char_3
195933 ,xet.reference_char_4
195934 ,xet.reference_date_1
195935 ,xet.reference_date_2
195936 ,xet.reference_date_3
195937 ,xet.reference_date_4
195938 ,xet.event_created_by
195939 ,xet.budgetary_control_flag
195940 , l2.LINE_NUMBER
195941 , l2.CODE_COMBINATION_ID source_4
195942 , l2.DISTRIBUTION_IDENTIFIER source_11
195943 , l2.ENTERED_AMOUNT source_18
195944 , l2.ACCOUNTED_AMOUNT source_22
195945 , l2.ACCOUNTING_LINE_TYPE_CODE source_24
195946 FROM xla_events_gt xet
195947 , CST_XLA_WIP_LINES_V l2
195948 WHERE xet.event_id between x_first_event_id and x_last_event_id
195949 and xet.event_date between p_pad_start_date and p_pad_end_date
195950 and xet.event_class_code = C_EVENT_CLASS_CODE
195951 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
195952 ;
195953
195954 --
195955 BEGIN
195956 IF g_log_enabled THEN
195957 l_log_module := C_DEFAULT_MODULE||'.EventClass_293';
195958 END IF;
195959 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
195960 trace
195961 (p_msg => 'BEGIN of EventClass_293'
195962 ,p_level => C_LEVEL_PROCEDURE
195963 ,p_module => l_log_module);
195964 END IF;
195965
195966 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
195967 trace
195968 (p_msg => 'p_application_id = '||p_application_id||
195969 ' - p_base_ledger_id = '||p_base_ledger_id||
195970 ' - p_target_ledger_id = '||p_target_ledger_id||
195971 ' - p_language = '||p_language||
195972 ' - p_currency_code = '||p_currency_code||
195973 ' - p_sla_ledger_id = '||p_sla_ledger_id
195974 ,p_level => C_LEVEL_STATEMENT
195975 ,p_module => l_log_module);
195976 END IF;
195977 --
195978 -- initialze arrays
195979 --
195980 g_array_event.DELETE;
195981 l_rec_array_event := l_null_rec_array_event;
195982 --
195983 --------------------------------------
195984 -- 4262811 Initialze MPA Line Number
195985 --------------------------------------
195986 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
195987
195988 --
195989
195990 --
195991 OPEN header_cur;
195992 --
195993 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
195994 trace
195995 (p_msg => 'SQL - FETCH header_cur'
195996 ,p_level => C_LEVEL_STATEMENT
195997 ,p_module => l_log_module);
195998 END IF;
195999 --
196000 LOOP
196001 FETCH header_cur BULK COLLECT INTO
196002 l_array_entity_id
196003 , l_array_legal_entity_id
196004 , l_array_entity_code
196005 , l_array_transaction_num
196006 , l_array_event_id
196007 , l_array_class_code
196008 , l_array_event_type
196009 , l_array_event_number
196010 , l_array_event_date
196011 , l_array_transaction_date
196012 , l_array_reference_num_1
196013 , l_array_reference_num_2
196014 , l_array_reference_num_3
196015 , l_array_reference_num_4
196016 , l_array_reference_char_1
196017 , l_array_reference_char_2
196018 , l_array_reference_char_3
196019 , l_array_reference_char_4
196020 , l_array_reference_date_1
196021 , l_array_reference_date_2
196022 , l_array_reference_date_3
196023 , l_array_reference_date_4
196024 , l_array_event_created_by
196025 , l_array_budgetary_control_flag
196026 , l_array_source_12
196027 , l_array_source_12_meaning
196028 , l_array_source_15
196029 , l_array_source_19
196030 , l_array_source_20
196031 , l_array_source_21
196032 , l_array_source_38
196033 , l_array_source_38_meaning
196034 LIMIT l_rows;
196035 --
196036 IF (C_LEVEL_EVENT >= g_log_level) THEN
196037 trace
196038 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
196039 ,p_level => C_LEVEL_EVENT
196040 ,p_module => l_log_module);
196041 END IF;
196042 --
196043 EXIT WHEN l_array_entity_id.COUNT = 0;
196044
196045 -- initialize arrays
196046 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
196047 XLA_AE_LINES_PKG.g_rec_lines := NULL;
196048
196049 --
196050 -- Bug 4458708
196051 --
196052 XLA_AE_LINES_PKG.g_LineNumber := 0;
196053
196054
196055 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
196056 g_last_hdr_idx := l_array_event_id.LAST;
196057 --
196058 -- loop for the headers. Each iteration is for each header extract row
196059 -- fetched in header cursor
196060 --
196061 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
196062
196063 --
196064 -- set event info as cache for other routines to refer event attributes
196065 --
196066 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
196067 (p_application_id => p_application_id
196068 ,p_primary_ledger_id => p_primary_ledger_id
196069 ,p_base_ledger_id => p_base_ledger_id
196070 ,p_target_ledger_id => p_target_ledger_id
196071 ,p_entity_id => l_array_entity_id(hdr_idx)
196072 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
196073 ,p_entity_code => l_array_entity_code(hdr_idx)
196074 ,p_transaction_num => l_array_transaction_num(hdr_idx)
196075 ,p_event_id => l_array_event_id(hdr_idx)
196076 ,p_event_class_code => l_array_class_code(hdr_idx)
196077 ,p_event_type_code => l_array_event_type(hdr_idx)
196078 ,p_event_number => l_array_event_number(hdr_idx)
196079 ,p_event_date => l_array_event_date(hdr_idx)
196080 ,p_transaction_date => l_array_transaction_date(hdr_idx)
196081 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
196082 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
196083 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
196084 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
196085 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
196086 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
196087 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
196088 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
196089 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
196090 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
196091 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
196092 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
196093 ,p_event_created_by => l_array_event_created_by(hdr_idx)
196094 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
196095
196096 --
196097 -- set the status of entry to C_VALID (0)
196098 --
196099 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
196100
196101 --
196102 -- initialize a row for ae header
196103 --
196104 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
196105
196106 l_event_id := l_array_event_id(hdr_idx);
196107
196108 --
196109 -- storing the hdr_idx for event. May be used by line cursor.
196110 --
196111 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
196112
196113 --
196114 -- store sources from header extract. This can be improved to
196115 -- store only those sources from header extract that may be used in lines
196116 --
196117
196118 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
196119 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
196120 g_array_event(l_event_id).array_value_char('source_15') := l_array_source_15(hdr_idx);
196121 g_array_event(l_event_id).array_value_date('source_19') := l_array_source_19(hdr_idx);
196122 g_array_event(l_event_id).array_value_num('source_20') := l_array_source_20(hdr_idx);
196123 g_array_event(l_event_id).array_value_char('source_21') := l_array_source_21(hdr_idx);
196124 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
196125 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
196126
196127 --
196128 -- initilaize the status of ae headers for diffrent balance types
196129 -- the status is initialised to C_NOT_CREATED (2)
196130 --
196131 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
196132 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
196133 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
196134
196135 --
196136 -- call api to validate and store accounting attributes for header
196137 --
196138
196139 ------------------------------------------------------------
196140 -- Accrual Reversal : to get date for Standard Source (NONE)
196141 ------------------------------------------------------------
196142 l_acc_rev_gl_date_source := NULL;
196143
196144 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
196145 l_rec_acct_attrs.array_date_value(1) :=
196146 xla_ae_sources_pkg.GetSystemSourceDate(
196147 p_source_code => 'XLA_REFERENCE_DATE_1'
196148 , p_source_type_code => 'Y'
196149 , p_source_application_id => 602
196150 );
196151 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_TRANSFER_FLAG';
196152 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
196153
196154
196155 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
196156
196157 XLA_AE_HEADER_PKG.SetJeCategoryName;
196158
196159 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
196160 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
196161 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
196162 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
196163 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
196164
196165
196166 -- No header level analytical criteria
196167
196168 --
196169 --accounting attribute enhancement, bug 3612931
196170 --
196171 l_trx_reversal_source := SUBSTR(NULL, 1,30);
196172
196173 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
196174 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
196175
196176 xla_accounting_err_pkg.build_message
196177 (p_appli_s_name => 'XLA'
196178 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
196179 ,p_token_1 => 'ACCT_ATTR_NAME'
196180 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
196181 ,p_token_2 => 'PRODUCT_NAME'
196182 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
196183 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
196184 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
196185 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
196186
196187 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
196188 --
196189 -- following sets the accounting attributes needed to reverse
196190 -- accounting for a distributeion
196191 --
196192 xla_ae_lines_pkg.SetTrxReversalAttrs
196193 (p_event_id => l_event_id
196194 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
196195 ,p_trx_reversal_source => l_trx_reversal_source);
196196
196197 END IF;
196198
196199
196200 ----------------------------------------------------------------
196201 -- 4262811 - update the header statuses to invalid in need be
196202 ----------------------------------------------------------------
196203 --
196204 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
196205
196206
196207 -----------------------------------------------
196208 -- No accrual reversal for the event class/type
196209 -----------------------------------------------
196210 ----------------------------------------------------------------
196211
196212 --
196213 -- this ends the header loop iteration for one bulk fetch
196214 --
196215 END LOOP;
196216
196217 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
196218 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
196219
196220 --
196221 -- insert dummy rows into lines gt table that were created due to
196222 -- transaction reversals
196223 --
196224 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
196225 l_result := XLA_AE_LINES_PKG.InsertLines;
196226 END IF;
196227
196228 --
196229 -- reset the temp_line_num for each set of events fetched from header
196230 -- cursor rather than doing it for each new event in line cursor
196231 -- Bug 3939231
196232 --
196233 xla_ae_lines_pkg.g_temp_line_num := 0;
196234
196235
196236
196237 --
196238 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
196239 --
196240 --
196241 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
196242
196243 trace
196244 (p_msg => 'SQL - FETCH line_cur'
196245 ,p_level => C_LEVEL_STATEMENT
196246 ,p_module => l_log_module);
196247
196248 END IF;
196249 --
196250 --
196251 LOOP
196252 --
196253 FETCH line_cur BULK COLLECT INTO
196254 l_array_entity_id
196255 , l_array_legal_entity_id
196256 , l_array_entity_code
196257 , l_array_transaction_num
196258 , l_array_event_id
196259 , l_array_class_code
196260 , l_array_event_type
196261 , l_array_event_number
196262 , l_array_event_date
196263 , l_array_transaction_date
196264 , l_array_reference_num_1
196265 , l_array_reference_num_2
196266 , l_array_reference_num_3
196267 , l_array_reference_num_4
196268 , l_array_reference_char_1
196269 , l_array_reference_char_2
196270 , l_array_reference_char_3
196271 , l_array_reference_char_4
196272 , l_array_reference_date_1
196273 , l_array_reference_date_2
196274 , l_array_reference_date_3
196275 , l_array_reference_date_4
196276 , l_array_event_created_by
196277 , l_array_budgetary_control_flag
196278 , l_array_extract_line_num
196279 , l_array_source_4
196280 , l_array_source_11
196281 , l_array_source_18
196282 , l_array_source_22
196283 , l_array_source_24
196284 LIMIT l_rows;
196285
196286 --
196287 IF (C_LEVEL_EVENT >= g_log_level) THEN
196288 trace
196289 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
196290 ,p_level => C_LEVEL_EVENT
196291 ,p_module => l_log_module);
196292 END IF;
196293 --
196294 EXIT WHEN l_array_entity_id.count = 0;
196295
196296 XLA_AE_LINES_PKG.g_rec_lines := null;
196297
196298 --
196299 -- Bug 4458708
196300 --
196301 XLA_AE_LINES_PKG.g_LineNumber := 0;
196302 --
196303 --
196304
196305 FOR Idx IN 1..l_array_event_id.count LOOP
196306 --
196307 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
196308 --
196309 l_event_id := l_array_event_id(idx); -- 5648433
196310
196311 --
196312 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
196313 --
196314
196315 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
196316 (g_array_event(l_event_id).array_value_num('header_index'))
196317 ,'N'
196318 ) <> 'Y'
196319 THEN
196320 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
196321 trace
196322 (p_msg => 'Trancaction revesal option is not Y '
196323 ,p_level => C_LEVEL_STATEMENT
196324 ,p_module => l_log_module);
196325 END IF;
196326
196327 --
196328 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
196329 --
196330 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
196331 --
196332 -- set event info as cache for other routines to refer event attributes
196333 --
196334
196335 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
196336 l_previous_event_id := l_event_id;
196337
196338 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
196339 (p_application_id => p_application_id
196340 ,p_primary_ledger_id => p_primary_ledger_id
196341 ,p_base_ledger_id => p_base_ledger_id
196342 ,p_target_ledger_id => p_target_ledger_id
196343 ,p_entity_id => l_array_entity_id(Idx)
196344 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
196345 ,p_entity_code => l_array_entity_code(Idx)
196346 ,p_transaction_num => l_array_transaction_num(Idx)
196347 ,p_event_id => l_array_event_id(Idx)
196348 ,p_event_class_code => l_array_class_code(Idx)
196349 ,p_event_type_code => l_array_event_type(Idx)
196350 ,p_event_number => l_array_event_number(Idx)
196351 ,p_event_date => l_array_event_date(Idx)
196352 ,p_transaction_date => l_array_transaction_date(Idx)
196353 ,p_reference_num_1 => l_array_reference_num_1(Idx)
196354 ,p_reference_num_2 => l_array_reference_num_2(Idx)
196355 ,p_reference_num_3 => l_array_reference_num_3(Idx)
196356 ,p_reference_num_4 => l_array_reference_num_4(Idx)
196357 ,p_reference_char_1 => l_array_reference_char_1(Idx)
196358 ,p_reference_char_2 => l_array_reference_char_2(Idx)
196359 ,p_reference_char_3 => l_array_reference_char_3(Idx)
196360 ,p_reference_char_4 => l_array_reference_char_4(Idx)
196361 ,p_reference_date_1 => l_array_reference_date_1(Idx)
196362 ,p_reference_date_2 => l_array_reference_date_2(Idx)
196363 ,p_reference_date_3 => l_array_reference_date_3(Idx)
196364 ,p_reference_date_4 => l_array_reference_date_4(Idx)
196365 ,p_event_created_by => l_array_event_created_by(Idx)
196366 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
196367 --
196368 END IF;
196369
196370
196371
196372 --
196373 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
196374
196375 l_acct_reversal_source := SUBSTR(NULL, 1,30);
196376
196377 IF l_continue_with_lines THEN
196378 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
196379 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
196380
196381 xla_accounting_err_pkg.build_message
196382 (p_appli_s_name => 'XLA'
196383 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
196384 ,p_token_1 => 'LINE_NUMBER'
196385 ,p_value_1 => l_array_extract_line_num(Idx)
196386 ,p_token_2 => 'PRODUCT_NAME'
196387 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
196388 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
196389 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
196390 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
196391
196392 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
196393 --
196394 -- following sets the accounting attributes needed to reverse
196395 -- accounting for a distributeion
196396 --
196397
196398 --
196399 -- 5217187
196400 --
196401 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
196402 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
196403 g_array_event(l_event_id).array_value_num('header_index'));
196404 --
196405 --
196406
196407 -- No reversal code generated
196408
196409 xla_ae_lines_pkg.SetAcctReversalAttrs
196410 (p_event_id => l_event_id
196411 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
196412 ,p_calculate_acctd_flag => l_calculate_acctd_flag
196413 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
196414 END IF;
196415
196416 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
196417 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
196418
196419 --
196420 AcctLineType_21 (
196421 p_application_id => p_application_id
196422 ,p_event_id => l_event_id
196423 ,p_calculate_acctd_flag => l_calculate_acctd_flag
196424 ,p_calculate_g_l_flag => l_calculate_g_l_flag
196425 ,p_actual_flag => l_actual_flag
196426 ,p_balance_type_code => l_balance_type_code
196427 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
196428
196429 , p_source_4 => l_array_source_4(Idx)
196430 , p_source_11 => l_array_source_11(Idx)
196431 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
196432 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
196433 , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
196434 , p_source_18 => l_array_source_18(Idx)
196435 , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
196436 , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
196437 , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
196438 , p_source_22 => l_array_source_22(Idx)
196439 , p_source_24 => l_array_source_24(Idx)
196440 );
196441 If(l_balance_type_code = 'A') THEN
196442 l_actual_gain_loss_ref := l_gain_or_loss_ref;
196443 END IF;
196444
196445 --
196446
196447
196448 --
196449 AcctLineType_243 (
196450 p_application_id => p_application_id
196451 ,p_event_id => l_event_id
196452 ,p_calculate_acctd_flag => l_calculate_acctd_flag
196453 ,p_calculate_g_l_flag => l_calculate_g_l_flag
196454 ,p_actual_flag => l_actual_flag
196455 ,p_balance_type_code => l_balance_type_code
196456 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
196457
196458 , p_source_4 => l_array_source_4(Idx)
196459 , p_source_11 => l_array_source_11(Idx)
196460 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
196461 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
196462 , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
196463 , p_source_18 => l_array_source_18(Idx)
196464 , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
196465 , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
196466 , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
196467 , p_source_22 => l_array_source_22(Idx)
196468 , p_source_24 => l_array_source_24(Idx)
196469 );
196470 If(l_balance_type_code = 'A') THEN
196471 l_actual_gain_loss_ref := l_gain_or_loss_ref;
196472 END IF;
196473
196474 --
196475
196476 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
196477 -- or secondary ledger that has different currency with primary
196478 -- or alc that is calculated by sla
196479 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
196480 (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'))
196481
196482 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
196483 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
196484 AND (l_actual_flag = 'A')) THEN
196485 XLA_AE_LINES_PKG.CreateGainOrLossLines(
196486 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
196487 ,p_application_id => p_application_id
196488 ,p_amb_context_code => 'DEFAULT'
196489 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
196490 ,p_event_class_code => C_EVENT_CLASS_CODE
196491 ,p_event_type_code => C_EVENT_TYPE_CODE
196492
196493 ,p_gain_ccid => -1
196494 ,p_loss_ccid => -1
196495
196496 ,p_actual_flag => l_actual_flag
196497 ,p_enc_flag => null
196498 ,p_actual_g_l_ref => l_actual_gain_loss_ref
196499 ,p_enc_g_l_ref => null
196500 );
196501 END IF;
196502 END IF;
196503 END IF;
196504
196505 ELSE
196506 --
196507 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
196508 --
196509 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
196510 trace
196511 (p_msg => 'Trancaction revesal option is Y'
196512 ,p_level => C_LEVEL_STATEMENT
196513 ,p_module => l_log_module);
196514 END IF;
196515 END IF;
196516
196517 END LOOP;
196518 l_result := XLA_AE_LINES_PKG.InsertLines ;
196519 end loop;
196520 close line_cur;
196521
196522
196523 --
196524 -- insert headers into xla_ae_headers_gt table
196525 --
196526 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
196527
196528 -- insert into errors table here.
196529
196530 END LOOP;
196531
196532 --
196533 -- 4865292
196534 --
196535 -- Compare g_hdr_extract_count with event count in
196536 -- CreateHeadersAndLines.
196537 --
196538 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
196539
196540 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
196541 trace (p_msg => '# rows extracted from header extract objects '
196542 || ' (running total): '
196543 || g_hdr_extract_count
196544 ,p_level => C_LEVEL_STATEMENT
196545 ,p_module => l_log_module);
196546 END IF;
196547
196548 CLOSE header_cur;
196549 --
196550
196551 --
196552 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
196553 trace
196554 (p_msg => 'END of EventClass_293'
196555 ,p_level => C_LEVEL_PROCEDURE
196556 ,p_module => l_log_module);
196557 END IF;
196558 --
196559 RETURN l_result;
196560 EXCEPTION
196561 WHEN xla_exceptions_pkg.application_exception THEN
196562
196563 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
196564
196565
196566 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
196567
196568 RAISE;
196569
196570 WHEN NO_DATA_FOUND THEN
196571
196572 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
196573 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
196574
196575 FOR header_record IN header_cur
196576 LOOP
196577 l_array_header_events(header_record.event_id) := header_record.event_id;
196578 END LOOP;
196579
196580 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
196581 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
196582
196583 fnd_file.put_line(fnd_file.LOG, ' ');
196584 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
196585 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
196586 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
196587
196588 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
196589 LOOP
196590 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
196591 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
196592 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
196593 END IF;
196594 END LOOP;
196595
196596 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
196597 fnd_file.put_line(fnd_file.LOG, ' ');
196598
196599
196600 xla_exceptions_pkg.raise_message
196601 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_293');
196602
196603
196604 WHEN OTHERS THEN
196605 xla_exceptions_pkg.raise_message
196606 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_293');
196607 END EventClass_293;
196608 --
196609
196610 ---------------------------------------
196611 --
196612 -- PRIVATE PROCEDURE
196613 -- insert_sources_294
196614 --
196615 ----------------------------------------
196616 --
196617 PROCEDURE insert_sources_294(
196618 p_target_ledger_id IN NUMBER
196619 , p_language IN VARCHAR2
196620 , p_sla_ledger_id IN NUMBER
196621 , p_pad_start_date IN DATE
196622 , p_pad_end_date IN DATE
196623 )
196624 IS
196625
196626 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'WIP_LOT_ALL';
196627 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'WIP_LOT';
196628 p_apps_owner VARCHAR2(30);
196629 l_log_module VARCHAR2(240);
196630 BEGIN
196631 IF g_log_enabled THEN
196632 l_log_module := C_DEFAULT_MODULE||'.insert_sources_294';
196633 END IF;
196634 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
196635
196636 trace
196637 (p_msg => 'BEGIN of insert_sources_294'
196638 ,p_level => C_LEVEL_PROCEDURE
196639 ,p_module => l_log_module);
196640
196641 END IF;
196642
196643 -- select APPS owner
196644 SELECT oracle_username
196645 INTO p_apps_owner
196646 FROM fnd_oracle_userid
196647 WHERE read_only_flag = 'U'
196648 ;
196649
196650 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
196651 trace
196652 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
196653 ' - p_language = '||p_language||
196654 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
196655 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
196656 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
196657 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
196658 ,p_level => C_LEVEL_STATEMENT
196659 ,p_module => l_log_module);
196660 END IF;
196661
196662
196663 --
196664 INSERT INTO xla_diag_sources --hdr2
196665 (
196666 event_id
196667 , ledger_id
196668 , sla_ledger_id
196669 , description_language
196670 , object_name
196671 , object_type_code
196672 , line_number
196673 , source_application_id
196674 , source_type_code
196675 , source_code
196676 , source_value
196677 , source_meaning
196678 , created_by
196679 , creation_date
196680 , last_update_date
196681 , last_updated_by
196682 , last_update_login
196683 , program_update_date
196684 , program_application_id
196685 , program_id
196686 , request_id
196687 )
196688 SELECT
196689 event_id
196690 , p_target_ledger_id
196691 , p_sla_ledger_id
196692 , p_language
196693 , object_name
196694 , object_type_code
196695 , line_number
196696 , source_application_id
196697 , source_type_code
196698 , source_code
196699 , SUBSTR(source_value ,1,1996)
196700 , SUBSTR(source_meaning ,1,200)
196701 , xla_environment_pkg.g_Usr_Id
196702 , TRUNC(SYSDATE)
196703 , TRUNC(SYSDATE)
196704 , xla_environment_pkg.g_Usr_Id
196705 , xla_environment_pkg.g_Login_Id
196706 , TRUNC(SYSDATE)
196707 , xla_environment_pkg.g_Prog_Appl_Id
196708 , xla_environment_pkg.g_Prog_Id
196709 , xla_environment_pkg.g_Req_Id
196710 FROM (
196711 SELECT xet.event_id event_id
196712 , 0 line_number
196713 , CASE r
196714 WHEN 1 THEN 'CST_XLA_WIP_HEADERS_V'
196715 WHEN 2 THEN 'CST_XLA_WIP_HEADERS_V'
196716 WHEN 3 THEN 'CST_XLA_WIP_HEADERS_V'
196717 WHEN 4 THEN 'CST_XLA_WIP_HEADERS_V'
196718 WHEN 5 THEN 'CST_XLA_WIP_HEADERS_V'
196719 WHEN 6 THEN 'CST_XLA_WIP_HEADERS_V'
196720
196721 ELSE null
196722 END object_name
196723 , CASE r
196724 WHEN 1 THEN 'HEADER'
196725 WHEN 2 THEN 'HEADER'
196726 WHEN 3 THEN 'HEADER'
196727 WHEN 4 THEN 'HEADER'
196728 WHEN 5 THEN 'HEADER'
196729 WHEN 6 THEN 'HEADER'
196730
196731 ELSE null
196732 END object_type_code
196733 , CASE r
196734 WHEN 1 THEN '707'
196735 WHEN 2 THEN '707'
196736 WHEN 3 THEN '707'
196737 WHEN 4 THEN '707'
196738 WHEN 5 THEN '707'
196739 WHEN 6 THEN '707'
196740
196741 ELSE null
196742 END source_application_id
196743 , 'S' source_type_code
196744 , CASE r
196745 WHEN 1 THEN 'DISTRIBUTION_TYPE'
196746 WHEN 2 THEN 'CURRENCY_CODE'
196747 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE'
196748 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE'
196749 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE'
196750 WHEN 6 THEN 'TRANSFER_TO_GL_INDICATOR'
196751
196752 ELSE null
196753 END source_code
196754 , CASE r
196755 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
196756 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
196757 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
196758 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
196759 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
196760 WHEN 6 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
196761
196762 ELSE null
196763 END source_value
196764 , CASE r
196765 WHEN 1 THEN fvl12.meaning
196766 WHEN 6 THEN fvl38.meaning
196767
196768 ELSE null
196769 END source_meaning
196770 FROM xla_events_gt xet
196771 , CST_XLA_WIP_HEADERS_V h1
196772 , fnd_lookup_values fvl12
196773 , fnd_lookup_values fvl38
196774 ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
196775 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
196776 AND xet.event_class_code = C_EVENT_CLASS_CODE
196777 AND h1.event_id = xet.event_id
196778 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
196779 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
196780 AND fvl12.view_application_id(+) = 700
196781 AND fvl12.language(+) = USERENV('LANG')
196782 AND fvl38.lookup_type(+) = 'YES_NO'
196783 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
196784 AND fvl38.view_application_id(+) = 0
196785 AND fvl38.language(+) = USERENV('LANG')
196786
196787 )
196788 ;
196789 --
196790 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
196791
196792 trace
196793 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
196794 ,p_level => C_LEVEL_STATEMENT
196795 ,p_module => l_log_module);
196796
196797 END IF;
196798 --
196799
196800
196801
196802 --
196803 INSERT INTO xla_diag_sources --line2
196804 (
196805 event_id
196806 , ledger_id
196807 , sla_ledger_id
196808 , description_language
196809 , object_name
196810 , object_type_code
196811 , line_number
196812 , source_application_id
196813 , source_type_code
196814 , source_code
196815 , source_value
196816 , source_meaning
196817 , created_by
196818 , creation_date
196819 , last_update_date
196820 , last_updated_by
196821 , last_update_login
196822 , program_update_date
196823 , program_application_id
196824 , program_id
196825 , request_id
196826 )
196827 SELECT event_id
196828 , p_target_ledger_id
196829 , p_sla_ledger_id
196830 , p_language
196831 , object_name
196832 , object_type_code
196833 , line_number
196834 , source_application_id
196835 , source_type_code
196836 , source_code
196837 , SUBSTR(source_value,1,1996)
196838 , SUBSTR(source_meaning ,1,200)
196839 , xla_environment_pkg.g_Usr_Id
196840 , TRUNC(SYSDATE)
196841 , TRUNC(SYSDATE)
196842 , xla_environment_pkg.g_Usr_Id
196843 , xla_environment_pkg.g_Login_Id
196844 , TRUNC(SYSDATE)
196845 , xla_environment_pkg.g_Prog_Appl_Id
196846 , xla_environment_pkg.g_Prog_Id
196847 , xla_environment_pkg.g_Req_Id
196848 FROM (
196849 SELECT xet.event_id event_id
196850 , l2.line_number line_number
196851 , CASE r
196852 WHEN 1 THEN 'CST_XLA_WIP_LINES_V'
196853 WHEN 2 THEN 'CST_XLA_WIP_LINES_V'
196854 WHEN 3 THEN 'CST_XLA_WIP_LINES_V'
196855 WHEN 4 THEN 'CST_XLA_WIP_LINES_V'
196856 WHEN 5 THEN 'CST_XLA_WIP_LINES_V'
196857
196858 ELSE null
196859 END object_name
196860 , CASE r
196861 WHEN 1 THEN 'LINE'
196862 WHEN 2 THEN 'LINE'
196863 WHEN 3 THEN 'LINE'
196864 WHEN 4 THEN 'LINE'
196865 WHEN 5 THEN 'LINE'
196866
196867 ELSE null
196868 END object_type_code
196869 , CASE r
196870 WHEN 1 THEN '707'
196871 WHEN 2 THEN '707'
196872 WHEN 3 THEN '707'
196873 WHEN 4 THEN '707'
196874 WHEN 5 THEN '707'
196875
196876 ELSE null
196877 END source_application_id
196878 , 'S' source_type_code
196879 , CASE r
196880 WHEN 1 THEN 'CODE_COMBINATION_ID'
196881 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER'
196882 WHEN 3 THEN 'ENTERED_AMOUNT'
196883 WHEN 4 THEN 'ACCOUNTED_AMOUNT'
196884 WHEN 5 THEN 'ACCOUNTING_LINE_TYPE_CODE'
196885
196886 ELSE null
196887 END source_code
196888 , CASE r
196889 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
196890 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
196891 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
196892 WHEN 4 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
196893 WHEN 5 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
196894
196895 ELSE null
196896 END source_value
196897 , null source_meaning
196898 FROM xla_events_gt xet
196899 , CST_XLA_WIP_LINES_V l2
196900 , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
196901 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
196902 AND xet.event_class_code = C_EVENT_CLASS_CODE
196903 AND l2.event_id = xet.event_id
196904
196905 )
196906 ;
196907 --
196908 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
196909
196910 trace
196911 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
196912 ,p_level => C_LEVEL_STATEMENT
196913 ,p_module => l_log_module);
196914
196915 END IF;
196916
196917
196918 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
196919 trace
196920 (p_msg => 'END of insert_sources_294'
196921 ,p_level => C_LEVEL_PROCEDURE
196922 ,p_module => l_log_module);
196923 END IF;
196924 EXCEPTION
196925 WHEN xla_exceptions_pkg.application_exception THEN
196926 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
196927 trace
196928 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
196929 ,p_level => C_LEVEL_EXCEPTION
196930 ,p_module => l_log_module);
196931 END IF;
196932 RAISE;
196933 WHEN OTHERS THEN
196934 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
196935 trace
196936 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
196937 ,p_level => C_LEVEL_EXCEPTION
196938 ,p_module => l_log_module);
196939 END IF;
196940 xla_exceptions_pkg.raise_message
196941 (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_294');
196942 END insert_sources_294;
196943 --
196944
196945 ---------------------------------------
196946 --
196947 -- PRIVATE FUNCTION
196948 -- EventClass_294
196949 --
196950 ----------------------------------------
196951 --
196952 FUNCTION EventClass_294
196953 (p_application_id IN NUMBER
196954 ,p_base_ledger_id IN NUMBER
196955 ,p_target_ledger_id IN NUMBER
196956 ,p_language IN VARCHAR2
196957 ,p_currency_code IN VARCHAR2
196958 ,p_sla_ledger_id IN NUMBER
196959 ,p_pad_start_date IN DATE
196960 ,p_pad_end_date IN DATE
196961 ,p_primary_ledger_id IN NUMBER)
196962 RETURN BOOLEAN IS
196963 --
196964 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'WIP_LOT_ALL';
196965 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'WIP_LOT';
196966
196967 l_calculate_acctd_flag VARCHAR2(1) :='N';
196968 l_calculate_g_l_flag VARCHAR2(1) :='N';
196969 --
196970 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
196971 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
196972 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
196973 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
196974 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
196975 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
196976 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
196977 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
196978 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
196979 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
196980 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
196981 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
196982 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
196983 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
196984 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
196985 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
196986 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
196987 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
196988 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
196989 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
196990 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
196991 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
196992 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
196993 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
196994 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
196995 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
196996
196997 l_event_id NUMBER;
196998 l_previous_event_id NUMBER;
196999 l_first_event_id NUMBER;
197000 l_last_event_id NUMBER;
197001
197002 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
197003 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
197004 --
197005 --
197006 l_result BOOLEAN := TRUE;
197007 l_rows NUMBER := 1000;
197008 l_event_type_name VARCHAR2(80) := 'All';
197009 l_event_class_name VARCHAR2(80) := 'WIP Lot';
197010 l_description VARCHAR2(4000);
197011 l_transaction_reversal NUMBER;
197012 l_ae_header_id NUMBER;
197013 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
197014 l_log_module VARCHAR2(240);
197015 --
197016 l_acct_reversal_source VARCHAR2(30);
197017 l_trx_reversal_source VARCHAR2(30);
197018
197019 l_continue_with_lines BOOLEAN := TRUE;
197020 --
197021 l_acc_rev_gl_date_source DATE; -- 4262811
197022 --
197023 type t_array_event_id is table of number index by binary_integer;
197024
197025 l_rec_array_event t_rec_array_event;
197026 l_null_rec_array_event t_rec_array_event;
197027 l_array_ae_header_id xla_number_array_type;
197028 l_actual_flag VARCHAR2(1) := NULL;
197029 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
197030 l_balance_type_code VARCHAR2(1) :=NULL;
197031 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
197032
197033 --
197034 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
197035 --
197036
197037 TYPE t_array_source_12 IS TABLE OF CST_XLA_WIP_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
197038 TYPE t_array_source_15 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
197039 TYPE t_array_source_19 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
197040 TYPE t_array_source_20 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
197041 TYPE t_array_source_21 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
197042 TYPE t_array_source_38 IS TABLE OF CST_XLA_WIP_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
197043
197044 TYPE t_array_source_4 IS TABLE OF CST_XLA_WIP_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
197045 TYPE t_array_source_11 IS TABLE OF CST_XLA_WIP_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
197046 TYPE t_array_source_18 IS TABLE OF CST_XLA_WIP_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
197047 TYPE t_array_source_22 IS TABLE OF CST_XLA_WIP_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
197048 TYPE t_array_source_24 IS TABLE OF CST_XLA_WIP_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
197049
197050 l_array_source_12 t_array_source_12;
197051 l_array_source_12_meaning t_array_lookup_meaning;
197052 l_array_source_15 t_array_source_15;
197053 l_array_source_19 t_array_source_19;
197054 l_array_source_20 t_array_source_20;
197055 l_array_source_21 t_array_source_21;
197056 l_array_source_38 t_array_source_38;
197057 l_array_source_38_meaning t_array_lookup_meaning;
197058
197059 l_array_source_4 t_array_source_4;
197060 l_array_source_11 t_array_source_11;
197061 l_array_source_18 t_array_source_18;
197062 l_array_source_22 t_array_source_22;
197063 l_array_source_24 t_array_source_24;
197064
197065 --
197066 CURSOR header_cur
197067 IS
197068 SELECT /*+ leading(xet) cardinality(xet,1) */
197069 -- Event Class Code: WIP_LOT
197070 xet.entity_id
197071 ,xet.legal_entity_id
197072 ,xet.entity_code
197073 ,xet.transaction_number
197074 ,xet.event_id
197075 ,xet.event_class_code
197076 ,xet.event_type_code
197077 ,xet.event_number
197078 ,xet.event_date
197079 ,xet.transaction_date
197080 ,xet.reference_num_1
197081 ,xet.reference_num_2
197082 ,xet.reference_num_3
197083 ,xet.reference_num_4
197084 ,xet.reference_char_1
197085 ,xet.reference_char_2
197086 ,xet.reference_char_3
197087 ,xet.reference_char_4
197088 ,xet.reference_date_1
197089 ,xet.reference_date_2
197090 ,xet.reference_date_3
197091 ,xet.reference_date_4
197092 ,xet.event_created_by
197093 ,xet.budgetary_control_flag
197094 , h1.DISTRIBUTION_TYPE source_12
197095 , fvl12.meaning source_12_meaning
197096 , h1.CURRENCY_CODE source_15
197097 , h1.CURRENCY_CONVERSION_DATE source_19
197098 , h1.CURRENCY_CONVERSION_RATE source_20
197099 , h1.CURRENCY_CONVERSION_TYPE source_21
197100 , h1.TRANSFER_TO_GL_INDICATOR source_38
197101 , fvl38.meaning source_38_meaning
197102 FROM xla_events_gt xet
197103 , CST_XLA_WIP_HEADERS_V h1
197104 , fnd_lookup_values fvl12
197105 , fnd_lookup_values fvl38
197106 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
197107 and xet.event_class_code = C_EVENT_CLASS_CODE
197108 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
197109 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
197110 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
197111 AND fvl12.view_application_id(+) = 700
197112 AND fvl12.language(+) = USERENV('LANG')
197113 AND fvl38.lookup_type(+) = 'YES_NO'
197114 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
197115 AND fvl38.view_application_id(+) = 0
197116 AND fvl38.language(+) = USERENV('LANG')
197117
197118 ORDER BY event_id
197119 ;
197120
197121
197122 --
197123 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
197124 IS
197125 SELECT /*+ leading(xet) cardinality(xet,1) */
197126 -- Event Class Code: WIP_LOT
197127 xet.entity_id
197128 ,xet.legal_entity_id
197129 ,xet.entity_code
197130 ,xet.transaction_number
197131 ,xet.event_id
197132 ,xet.event_class_code
197133 ,xet.event_type_code
197134 ,xet.event_number
197135 ,xet.event_date
197136 ,xet.transaction_date
197137 ,xet.reference_num_1
197138 ,xet.reference_num_2
197139 ,xet.reference_num_3
197140 ,xet.reference_num_4
197141 ,xet.reference_char_1
197142 ,xet.reference_char_2
197143 ,xet.reference_char_3
197144 ,xet.reference_char_4
197145 ,xet.reference_date_1
197146 ,xet.reference_date_2
197147 ,xet.reference_date_3
197148 ,xet.reference_date_4
197149 ,xet.event_created_by
197150 ,xet.budgetary_control_flag
197151 , l2.LINE_NUMBER
197152 , l2.CODE_COMBINATION_ID source_4
197153 , l2.DISTRIBUTION_IDENTIFIER source_11
197154 , l2.ENTERED_AMOUNT source_18
197155 , l2.ACCOUNTED_AMOUNT source_22
197156 , l2.ACCOUNTING_LINE_TYPE_CODE source_24
197157 FROM xla_events_gt xet
197158 , CST_XLA_WIP_LINES_V l2
197159 WHERE xet.event_id between x_first_event_id and x_last_event_id
197160 and xet.event_date between p_pad_start_date and p_pad_end_date
197161 and xet.event_class_code = C_EVENT_CLASS_CODE
197162 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
197163 ;
197164
197165 --
197166 BEGIN
197167 IF g_log_enabled THEN
197168 l_log_module := C_DEFAULT_MODULE||'.EventClass_294';
197169 END IF;
197170 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
197171 trace
197172 (p_msg => 'BEGIN of EventClass_294'
197173 ,p_level => C_LEVEL_PROCEDURE
197174 ,p_module => l_log_module);
197175 END IF;
197176
197177 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
197178 trace
197179 (p_msg => 'p_application_id = '||p_application_id||
197180 ' - p_base_ledger_id = '||p_base_ledger_id||
197181 ' - p_target_ledger_id = '||p_target_ledger_id||
197182 ' - p_language = '||p_language||
197183 ' - p_currency_code = '||p_currency_code||
197184 ' - p_sla_ledger_id = '||p_sla_ledger_id
197185 ,p_level => C_LEVEL_STATEMENT
197186 ,p_module => l_log_module);
197187 END IF;
197188 --
197189 -- initialze arrays
197190 --
197191 g_array_event.DELETE;
197192 l_rec_array_event := l_null_rec_array_event;
197193 --
197194 --------------------------------------
197195 -- 4262811 Initialze MPA Line Number
197196 --------------------------------------
197197 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
197198
197199 --
197200
197201 --
197202 OPEN header_cur;
197203 --
197204 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
197205 trace
197206 (p_msg => 'SQL - FETCH header_cur'
197207 ,p_level => C_LEVEL_STATEMENT
197208 ,p_module => l_log_module);
197209 END IF;
197210 --
197211 LOOP
197212 FETCH header_cur BULK COLLECT INTO
197213 l_array_entity_id
197214 , l_array_legal_entity_id
197215 , l_array_entity_code
197216 , l_array_transaction_num
197217 , l_array_event_id
197218 , l_array_class_code
197219 , l_array_event_type
197220 , l_array_event_number
197221 , l_array_event_date
197222 , l_array_transaction_date
197223 , l_array_reference_num_1
197224 , l_array_reference_num_2
197225 , l_array_reference_num_3
197226 , l_array_reference_num_4
197227 , l_array_reference_char_1
197228 , l_array_reference_char_2
197229 , l_array_reference_char_3
197230 , l_array_reference_char_4
197231 , l_array_reference_date_1
197232 , l_array_reference_date_2
197233 , l_array_reference_date_3
197234 , l_array_reference_date_4
197235 , l_array_event_created_by
197236 , l_array_budgetary_control_flag
197237 , l_array_source_12
197238 , l_array_source_12_meaning
197239 , l_array_source_15
197240 , l_array_source_19
197241 , l_array_source_20
197242 , l_array_source_21
197243 , l_array_source_38
197244 , l_array_source_38_meaning
197245 LIMIT l_rows;
197246 --
197247 IF (C_LEVEL_EVENT >= g_log_level) THEN
197248 trace
197249 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
197250 ,p_level => C_LEVEL_EVENT
197251 ,p_module => l_log_module);
197252 END IF;
197253 --
197254 EXIT WHEN l_array_entity_id.COUNT = 0;
197255
197256 -- initialize arrays
197257 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
197258 XLA_AE_LINES_PKG.g_rec_lines := NULL;
197259
197260 --
197261 -- Bug 4458708
197262 --
197263 XLA_AE_LINES_PKG.g_LineNumber := 0;
197264
197265
197266 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
197267 g_last_hdr_idx := l_array_event_id.LAST;
197268 --
197269 -- loop for the headers. Each iteration is for each header extract row
197270 -- fetched in header cursor
197271 --
197272 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
197273
197274 --
197275 -- set event info as cache for other routines to refer event attributes
197276 --
197277 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
197278 (p_application_id => p_application_id
197279 ,p_primary_ledger_id => p_primary_ledger_id
197280 ,p_base_ledger_id => p_base_ledger_id
197281 ,p_target_ledger_id => p_target_ledger_id
197282 ,p_entity_id => l_array_entity_id(hdr_idx)
197283 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
197284 ,p_entity_code => l_array_entity_code(hdr_idx)
197285 ,p_transaction_num => l_array_transaction_num(hdr_idx)
197286 ,p_event_id => l_array_event_id(hdr_idx)
197287 ,p_event_class_code => l_array_class_code(hdr_idx)
197288 ,p_event_type_code => l_array_event_type(hdr_idx)
197289 ,p_event_number => l_array_event_number(hdr_idx)
197290 ,p_event_date => l_array_event_date(hdr_idx)
197291 ,p_transaction_date => l_array_transaction_date(hdr_idx)
197292 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
197293 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
197294 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
197295 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
197296 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
197297 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
197298 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
197299 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
197300 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
197301 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
197302 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
197303 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
197304 ,p_event_created_by => l_array_event_created_by(hdr_idx)
197305 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
197306
197307 --
197308 -- set the status of entry to C_VALID (0)
197309 --
197310 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
197311
197312 --
197313 -- initialize a row for ae header
197314 --
197315 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
197316
197317 l_event_id := l_array_event_id(hdr_idx);
197318
197319 --
197320 -- storing the hdr_idx for event. May be used by line cursor.
197321 --
197322 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
197323
197324 --
197325 -- store sources from header extract. This can be improved to
197326 -- store only those sources from header extract that may be used in lines
197327 --
197328
197329 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
197330 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
197331 g_array_event(l_event_id).array_value_char('source_15') := l_array_source_15(hdr_idx);
197332 g_array_event(l_event_id).array_value_date('source_19') := l_array_source_19(hdr_idx);
197333 g_array_event(l_event_id).array_value_num('source_20') := l_array_source_20(hdr_idx);
197334 g_array_event(l_event_id).array_value_char('source_21') := l_array_source_21(hdr_idx);
197335 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
197336 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
197337
197338 --
197339 -- initilaize the status of ae headers for diffrent balance types
197340 -- the status is initialised to C_NOT_CREATED (2)
197341 --
197342 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
197343 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
197344 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
197345
197346 --
197347 -- call api to validate and store accounting attributes for header
197348 --
197349
197350 ------------------------------------------------------------
197351 -- Accrual Reversal : to get date for Standard Source (NONE)
197352 ------------------------------------------------------------
197353 l_acc_rev_gl_date_source := NULL;
197354
197355 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
197356 l_rec_acct_attrs.array_date_value(1) :=
197357 xla_ae_sources_pkg.GetSystemSourceDate(
197358 p_source_code => 'XLA_REFERENCE_DATE_1'
197359 , p_source_type_code => 'Y'
197360 , p_source_application_id => 602
197361 );
197362 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_TRANSFER_FLAG';
197363 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
197364
197365
197366 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
197367
197368 XLA_AE_HEADER_PKG.SetJeCategoryName;
197369
197370 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
197371 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
197372 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
197373 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
197374 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
197375
197376
197377 -- No header level analytical criteria
197378
197379 --
197380 --accounting attribute enhancement, bug 3612931
197381 --
197382 l_trx_reversal_source := SUBSTR(NULL, 1,30);
197383
197384 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
197385 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
197386
197387 xla_accounting_err_pkg.build_message
197388 (p_appli_s_name => 'XLA'
197389 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
197390 ,p_token_1 => 'ACCT_ATTR_NAME'
197391 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
197392 ,p_token_2 => 'PRODUCT_NAME'
197393 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
197394 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
197395 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
197396 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
197397
197398 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
197399 --
197400 -- following sets the accounting attributes needed to reverse
197401 -- accounting for a distributeion
197402 --
197403 xla_ae_lines_pkg.SetTrxReversalAttrs
197404 (p_event_id => l_event_id
197405 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
197406 ,p_trx_reversal_source => l_trx_reversal_source);
197407
197408 END IF;
197409
197410
197411 ----------------------------------------------------------------
197412 -- 4262811 - update the header statuses to invalid in need be
197413 ----------------------------------------------------------------
197414 --
197415 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
197416
197417
197418 -----------------------------------------------
197419 -- No accrual reversal for the event class/type
197420 -----------------------------------------------
197421 ----------------------------------------------------------------
197422
197423 --
197424 -- this ends the header loop iteration for one bulk fetch
197425 --
197426 END LOOP;
197427
197428 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
197429 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
197430
197431 --
197432 -- insert dummy rows into lines gt table that were created due to
197433 -- transaction reversals
197434 --
197435 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
197436 l_result := XLA_AE_LINES_PKG.InsertLines;
197437 END IF;
197438
197439 --
197440 -- reset the temp_line_num for each set of events fetched from header
197441 -- cursor rather than doing it for each new event in line cursor
197442 -- Bug 3939231
197443 --
197444 xla_ae_lines_pkg.g_temp_line_num := 0;
197445
197446
197447
197448 --
197449 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
197450 --
197451 --
197452 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
197453
197454 trace
197455 (p_msg => 'SQL - FETCH line_cur'
197456 ,p_level => C_LEVEL_STATEMENT
197457 ,p_module => l_log_module);
197458
197459 END IF;
197460 --
197461 --
197462 LOOP
197463 --
197464 FETCH line_cur BULK COLLECT INTO
197465 l_array_entity_id
197466 , l_array_legal_entity_id
197467 , l_array_entity_code
197468 , l_array_transaction_num
197469 , l_array_event_id
197470 , l_array_class_code
197471 , l_array_event_type
197472 , l_array_event_number
197473 , l_array_event_date
197474 , l_array_transaction_date
197475 , l_array_reference_num_1
197476 , l_array_reference_num_2
197477 , l_array_reference_num_3
197478 , l_array_reference_num_4
197479 , l_array_reference_char_1
197480 , l_array_reference_char_2
197481 , l_array_reference_char_3
197482 , l_array_reference_char_4
197483 , l_array_reference_date_1
197484 , l_array_reference_date_2
197485 , l_array_reference_date_3
197486 , l_array_reference_date_4
197487 , l_array_event_created_by
197488 , l_array_budgetary_control_flag
197489 , l_array_extract_line_num
197490 , l_array_source_4
197491 , l_array_source_11
197492 , l_array_source_18
197493 , l_array_source_22
197494 , l_array_source_24
197495 LIMIT l_rows;
197496
197497 --
197498 IF (C_LEVEL_EVENT >= g_log_level) THEN
197499 trace
197500 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
197501 ,p_level => C_LEVEL_EVENT
197502 ,p_module => l_log_module);
197503 END IF;
197504 --
197505 EXIT WHEN l_array_entity_id.count = 0;
197506
197507 XLA_AE_LINES_PKG.g_rec_lines := null;
197508
197509 --
197510 -- Bug 4458708
197511 --
197512 XLA_AE_LINES_PKG.g_LineNumber := 0;
197513 --
197514 --
197515
197516 FOR Idx IN 1..l_array_event_id.count LOOP
197517 --
197518 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
197519 --
197520 l_event_id := l_array_event_id(idx); -- 5648433
197521
197522 --
197523 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
197524 --
197525
197526 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
197527 (g_array_event(l_event_id).array_value_num('header_index'))
197528 ,'N'
197529 ) <> 'Y'
197530 THEN
197531 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
197532 trace
197533 (p_msg => 'Trancaction revesal option is not Y '
197534 ,p_level => C_LEVEL_STATEMENT
197535 ,p_module => l_log_module);
197536 END IF;
197537
197538 --
197539 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
197540 --
197541 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
197542 --
197543 -- set event info as cache for other routines to refer event attributes
197544 --
197545
197546 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
197547 l_previous_event_id := l_event_id;
197548
197549 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
197550 (p_application_id => p_application_id
197551 ,p_primary_ledger_id => p_primary_ledger_id
197552 ,p_base_ledger_id => p_base_ledger_id
197553 ,p_target_ledger_id => p_target_ledger_id
197554 ,p_entity_id => l_array_entity_id(Idx)
197555 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
197556 ,p_entity_code => l_array_entity_code(Idx)
197557 ,p_transaction_num => l_array_transaction_num(Idx)
197558 ,p_event_id => l_array_event_id(Idx)
197559 ,p_event_class_code => l_array_class_code(Idx)
197560 ,p_event_type_code => l_array_event_type(Idx)
197561 ,p_event_number => l_array_event_number(Idx)
197562 ,p_event_date => l_array_event_date(Idx)
197563 ,p_transaction_date => l_array_transaction_date(Idx)
197564 ,p_reference_num_1 => l_array_reference_num_1(Idx)
197565 ,p_reference_num_2 => l_array_reference_num_2(Idx)
197566 ,p_reference_num_3 => l_array_reference_num_3(Idx)
197567 ,p_reference_num_4 => l_array_reference_num_4(Idx)
197568 ,p_reference_char_1 => l_array_reference_char_1(Idx)
197569 ,p_reference_char_2 => l_array_reference_char_2(Idx)
197570 ,p_reference_char_3 => l_array_reference_char_3(Idx)
197571 ,p_reference_char_4 => l_array_reference_char_4(Idx)
197572 ,p_reference_date_1 => l_array_reference_date_1(Idx)
197573 ,p_reference_date_2 => l_array_reference_date_2(Idx)
197574 ,p_reference_date_3 => l_array_reference_date_3(Idx)
197575 ,p_reference_date_4 => l_array_reference_date_4(Idx)
197576 ,p_event_created_by => l_array_event_created_by(Idx)
197577 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
197578 --
197579 END IF;
197580
197581
197582
197583 --
197584 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
197585
197586 l_acct_reversal_source := SUBSTR(NULL, 1,30);
197587
197588 IF l_continue_with_lines THEN
197589 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
197590 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
197591
197592 xla_accounting_err_pkg.build_message
197593 (p_appli_s_name => 'XLA'
197594 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
197595 ,p_token_1 => 'LINE_NUMBER'
197596 ,p_value_1 => l_array_extract_line_num(Idx)
197597 ,p_token_2 => 'PRODUCT_NAME'
197598 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
197599 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
197600 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
197601 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
197602
197603 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
197604 --
197605 -- following sets the accounting attributes needed to reverse
197606 -- accounting for a distributeion
197607 --
197608
197609 --
197610 -- 5217187
197611 --
197612 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
197613 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
197614 g_array_event(l_event_id).array_value_num('header_index'));
197615 --
197616 --
197617
197618 -- No reversal code generated
197619
197620 xla_ae_lines_pkg.SetAcctReversalAttrs
197621 (p_event_id => l_event_id
197622 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
197623 ,p_calculate_acctd_flag => l_calculate_acctd_flag
197624 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
197625 END IF;
197626
197627 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
197628 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
197629
197630 --
197631 AcctLineType_177 (
197632 p_application_id => p_application_id
197633 ,p_event_id => l_event_id
197634 ,p_calculate_acctd_flag => l_calculate_acctd_flag
197635 ,p_calculate_g_l_flag => l_calculate_g_l_flag
197636 ,p_actual_flag => l_actual_flag
197637 ,p_balance_type_code => l_balance_type_code
197638 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
197639
197640 , p_source_4 => l_array_source_4(Idx)
197641 , p_source_11 => l_array_source_11(Idx)
197642 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
197643 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
197644 , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
197645 , p_source_18 => l_array_source_18(Idx)
197646 , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
197647 , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
197648 , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
197649 , p_source_22 => l_array_source_22(Idx)
197650 , p_source_24 => l_array_source_24(Idx)
197651 );
197652 If(l_balance_type_code = 'A') THEN
197653 l_actual_gain_loss_ref := l_gain_or_loss_ref;
197654 END IF;
197655
197656 --
197657
197658
197659 --
197660 AcctLineType_244 (
197661 p_application_id => p_application_id
197662 ,p_event_id => l_event_id
197663 ,p_calculate_acctd_flag => l_calculate_acctd_flag
197664 ,p_calculate_g_l_flag => l_calculate_g_l_flag
197665 ,p_actual_flag => l_actual_flag
197666 ,p_balance_type_code => l_balance_type_code
197667 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
197668
197669 , p_source_4 => l_array_source_4(Idx)
197670 , p_source_11 => l_array_source_11(Idx)
197671 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
197672 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
197673 , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
197674 , p_source_18 => l_array_source_18(Idx)
197675 , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
197676 , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
197677 , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
197678 , p_source_22 => l_array_source_22(Idx)
197679 , p_source_24 => l_array_source_24(Idx)
197680 );
197681 If(l_balance_type_code = 'A') THEN
197682 l_actual_gain_loss_ref := l_gain_or_loss_ref;
197683 END IF;
197684
197685 --
197686
197687 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
197688 -- or secondary ledger that has different currency with primary
197689 -- or alc that is calculated by sla
197690 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
197691 (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'))
197692
197693 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
197694 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
197695 AND (l_actual_flag = 'A')) THEN
197696 XLA_AE_LINES_PKG.CreateGainOrLossLines(
197697 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
197698 ,p_application_id => p_application_id
197699 ,p_amb_context_code => 'DEFAULT'
197700 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
197701 ,p_event_class_code => C_EVENT_CLASS_CODE
197702 ,p_event_type_code => C_EVENT_TYPE_CODE
197703
197704 ,p_gain_ccid => -1
197705 ,p_loss_ccid => -1
197706
197707 ,p_actual_flag => l_actual_flag
197708 ,p_enc_flag => null
197709 ,p_actual_g_l_ref => l_actual_gain_loss_ref
197710 ,p_enc_g_l_ref => null
197711 );
197712 END IF;
197713 END IF;
197714 END IF;
197715
197716 ELSE
197717 --
197718 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
197719 --
197720 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
197721 trace
197722 (p_msg => 'Trancaction revesal option is Y'
197723 ,p_level => C_LEVEL_STATEMENT
197724 ,p_module => l_log_module);
197725 END IF;
197726 END IF;
197727
197728 END LOOP;
197729 l_result := XLA_AE_LINES_PKG.InsertLines ;
197730 end loop;
197731 close line_cur;
197732
197733
197734 --
197735 -- insert headers into xla_ae_headers_gt table
197736 --
197737 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
197738
197739 -- insert into errors table here.
197740
197741 END LOOP;
197742
197743 --
197744 -- 4865292
197745 --
197746 -- Compare g_hdr_extract_count with event count in
197747 -- CreateHeadersAndLines.
197748 --
197749 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
197750
197751 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
197752 trace (p_msg => '# rows extracted from header extract objects '
197753 || ' (running total): '
197754 || g_hdr_extract_count
197755 ,p_level => C_LEVEL_STATEMENT
197756 ,p_module => l_log_module);
197757 END IF;
197758
197759 CLOSE header_cur;
197760 --
197761
197762 --
197763 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
197764 trace
197765 (p_msg => 'END of EventClass_294'
197766 ,p_level => C_LEVEL_PROCEDURE
197767 ,p_module => l_log_module);
197768 END IF;
197769 --
197770 RETURN l_result;
197771 EXCEPTION
197772 WHEN xla_exceptions_pkg.application_exception THEN
197773
197774 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
197775
197776
197777 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
197778
197779 RAISE;
197780
197781 WHEN NO_DATA_FOUND THEN
197782
197783 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
197784 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
197785
197786 FOR header_record IN header_cur
197787 LOOP
197788 l_array_header_events(header_record.event_id) := header_record.event_id;
197789 END LOOP;
197790
197791 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
197792 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
197793
197794 fnd_file.put_line(fnd_file.LOG, ' ');
197795 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
197796 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
197797 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
197798
197799 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
197800 LOOP
197801 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
197802 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
197803 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
197804 END IF;
197805 END LOOP;
197806
197807 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
197808 fnd_file.put_line(fnd_file.LOG, ' ');
197809
197810
197811 xla_exceptions_pkg.raise_message
197812 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_294');
197813
197814
197815 WHEN OTHERS THEN
197816 xla_exceptions_pkg.raise_message
197817 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_294');
197818 END EventClass_294;
197819 --
197820
197821 ---------------------------------------
197822 --
197823 -- PRIVATE PROCEDURE
197824 -- insert_sources_295
197825 --
197826 ----------------------------------------
197827 --
197828 PROCEDURE insert_sources_295(
197829 p_target_ledger_id IN NUMBER
197830 , p_language IN VARCHAR2
197831 , p_sla_ledger_id IN NUMBER
197832 , p_pad_start_date IN DATE
197833 , p_pad_end_date IN DATE
197834 )
197835 IS
197836
197837 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'WIP_MTL_ALL';
197838 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'WIP_MTL';
197839 p_apps_owner VARCHAR2(30);
197840 l_log_module VARCHAR2(240);
197841 BEGIN
197842 IF g_log_enabled THEN
197843 l_log_module := C_DEFAULT_MODULE||'.insert_sources_295';
197844 END IF;
197845 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
197846
197847 trace
197848 (p_msg => 'BEGIN of insert_sources_295'
197849 ,p_level => C_LEVEL_PROCEDURE
197850 ,p_module => l_log_module);
197851
197852 END IF;
197853
197854 -- select APPS owner
197855 SELECT oracle_username
197856 INTO p_apps_owner
197857 FROM fnd_oracle_userid
197858 WHERE read_only_flag = 'U'
197859 ;
197860
197861 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
197862 trace
197863 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
197864 ' - p_language = '||p_language||
197865 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
197866 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
197867 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
197868 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
197869 ,p_level => C_LEVEL_STATEMENT
197870 ,p_module => l_log_module);
197871 END IF;
197872
197873
197874 --
197875 INSERT INTO xla_diag_sources --hdr2
197876 (
197877 event_id
197878 , ledger_id
197879 , sla_ledger_id
197880 , description_language
197881 , object_name
197882 , object_type_code
197883 , line_number
197884 , source_application_id
197885 , source_type_code
197886 , source_code
197887 , source_value
197888 , source_meaning
197889 , created_by
197890 , creation_date
197891 , last_update_date
197892 , last_updated_by
197893 , last_update_login
197894 , program_update_date
197895 , program_application_id
197896 , program_id
197897 , request_id
197898 )
197899 SELECT
197900 event_id
197901 , p_target_ledger_id
197902 , p_sla_ledger_id
197903 , p_language
197904 , object_name
197905 , object_type_code
197906 , line_number
197907 , source_application_id
197908 , source_type_code
197909 , source_code
197910 , SUBSTR(source_value ,1,1996)
197911 , SUBSTR(source_meaning ,1,200)
197912 , xla_environment_pkg.g_Usr_Id
197913 , TRUNC(SYSDATE)
197914 , TRUNC(SYSDATE)
197915 , xla_environment_pkg.g_Usr_Id
197916 , xla_environment_pkg.g_Login_Id
197917 , TRUNC(SYSDATE)
197918 , xla_environment_pkg.g_Prog_Appl_Id
197919 , xla_environment_pkg.g_Prog_Id
197920 , xla_environment_pkg.g_Req_Id
197921 FROM (
197922 SELECT xet.event_id event_id
197923 , 0 line_number
197924 , CASE r
197925 WHEN 1 THEN 'CST_XLA_INV_HEADERS_V'
197926 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V'
197927
197928 ELSE null
197929 END object_name
197930 , CASE r
197931 WHEN 1 THEN 'HEADER'
197932 WHEN 2 THEN 'HEADER'
197933
197934 ELSE null
197935 END object_type_code
197936 , CASE r
197937 WHEN 1 THEN '707'
197938 WHEN 2 THEN '707'
197939
197940 ELSE null
197941 END source_application_id
197942 , 'S' source_type_code
197943 , CASE r
197944 WHEN 1 THEN 'DISTRIBUTION_TYPE'
197945 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR'
197946
197947 ELSE null
197948 END source_code
197949 , CASE r
197950 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
197951 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
197952
197953 ELSE null
197954 END source_value
197955 , CASE r
197956 WHEN 1 THEN fvl12.meaning
197957 WHEN 2 THEN fvl38.meaning
197958
197959 ELSE null
197960 END source_meaning
197961 FROM xla_events_gt xet
197962 , CST_XLA_INV_HEADERS_V h1
197963 , fnd_lookup_values fvl12
197964 , fnd_lookup_values fvl38
197965 ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
197966 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
197967 AND xet.event_class_code = C_EVENT_CLASS_CODE
197968 AND h1.event_id = xet.event_id
197969 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
197970 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
197971 AND fvl12.view_application_id(+) = 700
197972 AND fvl12.language(+) = USERENV('LANG')
197973 AND fvl38.lookup_type(+) = 'YES_NO'
197974 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
197975 AND fvl38.view_application_id(+) = 0
197976 AND fvl38.language(+) = USERENV('LANG')
197977
197978 )
197979 ;
197980 --
197981 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
197982
197983 trace
197984 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
197985 ,p_level => C_LEVEL_STATEMENT
197986 ,p_module => l_log_module);
197987
197988 END IF;
197989 --
197990
197991
197992
197993 --
197994 INSERT INTO xla_diag_sources --line2
197995 (
197996 event_id
197997 , ledger_id
197998 , sla_ledger_id
197999 , description_language
198000 , object_name
198001 , object_type_code
198002 , line_number
198003 , source_application_id
198004 , source_type_code
198005 , source_code
198006 , source_value
198007 , source_meaning
198008 , created_by
198009 , creation_date
198010 , last_update_date
198011 , last_updated_by
198012 , last_update_login
198013 , program_update_date
198014 , program_application_id
198015 , program_id
198016 , request_id
198017 )
198018 SELECT event_id
198019 , p_target_ledger_id
198020 , p_sla_ledger_id
198021 , p_language
198022 , object_name
198023 , object_type_code
198024 , line_number
198025 , source_application_id
198026 , source_type_code
198027 , source_code
198028 , SUBSTR(source_value,1,1996)
198029 , SUBSTR(source_meaning ,1,200)
198030 , xla_environment_pkg.g_Usr_Id
198031 , TRUNC(SYSDATE)
198032 , TRUNC(SYSDATE)
198033 , xla_environment_pkg.g_Usr_Id
198034 , xla_environment_pkg.g_Login_Id
198035 , TRUNC(SYSDATE)
198036 , xla_environment_pkg.g_Prog_Appl_Id
198037 , xla_environment_pkg.g_Prog_Id
198038 , xla_environment_pkg.g_Req_Id
198039 FROM (
198040 SELECT xet.event_id event_id
198041 , l2.line_number line_number
198042 , CASE r
198043 WHEN 1 THEN 'CST_XLA_INV_LINES_V'
198044 WHEN 2 THEN 'CST_XLA_INV_LINES_V'
198045 WHEN 3 THEN 'CST_XLA_INV_LINES_V'
198046 WHEN 4 THEN 'CST_XLA_INV_LINES_V'
198047 WHEN 5 THEN 'CST_XLA_INV_LINES_V'
198048 WHEN 6 THEN 'CST_XLA_INV_LINES_V'
198049 WHEN 7 THEN 'CST_XLA_INV_LINES_V'
198050 WHEN 8 THEN 'CST_XLA_INV_LINES_V'
198051 WHEN 9 THEN 'CST_XLA_INV_LINES_V'
198052
198053 ELSE null
198054 END object_name
198055 , CASE r
198056 WHEN 1 THEN 'LINE'
198057 WHEN 2 THEN 'LINE'
198058 WHEN 3 THEN 'LINE'
198059 WHEN 4 THEN 'LINE'
198060 WHEN 5 THEN 'LINE'
198061 WHEN 6 THEN 'LINE'
198062 WHEN 7 THEN 'LINE'
198063 WHEN 8 THEN 'LINE'
198064 WHEN 9 THEN 'LINE'
198065
198066 ELSE null
198067 END object_type_code
198068 , CASE r
198069 WHEN 1 THEN '707'
198070 WHEN 2 THEN '707'
198071 WHEN 3 THEN '707'
198072 WHEN 4 THEN '707'
198073 WHEN 5 THEN '707'
198074 WHEN 6 THEN '707'
198075 WHEN 7 THEN '707'
198076 WHEN 8 THEN '707'
198077 WHEN 9 THEN '707'
198078
198079 ELSE null
198080 END source_application_id
198081 , 'S' source_type_code
198082 , CASE r
198083 WHEN 1 THEN 'CODE_COMBINATION_ID'
198084 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER'
198085 WHEN 3 THEN 'CURRENCY_CODE'
198086 WHEN 4 THEN 'ENTERED_AMOUNT'
198087 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE'
198088 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE'
198089 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE'
198090 WHEN 8 THEN 'ACCOUNTED_AMOUNT'
198091 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE'
198092
198093 ELSE null
198094 END source_code
198095 , CASE r
198096 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
198097 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
198098 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
198099 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
198100 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
198101 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
198102 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
198103 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
198104 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
198105
198106 ELSE null
198107 END source_value
198108 , null source_meaning
198109 FROM xla_events_gt xet
198110 , CST_XLA_INV_LINES_V l2
198111 , (select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
198112 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
198113 AND xet.event_class_code = C_EVENT_CLASS_CODE
198114 AND l2.event_id = xet.event_id
198115
198116 )
198117 ;
198118 --
198119 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
198120
198121 trace
198122 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
198123 ,p_level => C_LEVEL_STATEMENT
198124 ,p_module => l_log_module);
198125
198126 END IF;
198127
198128
198129 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
198130 trace
198131 (p_msg => 'END of insert_sources_295'
198132 ,p_level => C_LEVEL_PROCEDURE
198133 ,p_module => l_log_module);
198134 END IF;
198135 EXCEPTION
198136 WHEN xla_exceptions_pkg.application_exception THEN
198137 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
198138 trace
198139 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
198140 ,p_level => C_LEVEL_EXCEPTION
198141 ,p_module => l_log_module);
198142 END IF;
198143 RAISE;
198144 WHEN OTHERS THEN
198145 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
198146 trace
198147 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
198148 ,p_level => C_LEVEL_EXCEPTION
198149 ,p_module => l_log_module);
198150 END IF;
198151 xla_exceptions_pkg.raise_message
198152 (p_location => 'XLA_00707_AAD_S_000007_PKG.insert_sources_295');
198153 END insert_sources_295;
198154 --
198155
198156 ---------------------------------------
198157 --
198158 -- PRIVATE FUNCTION
198159 -- EventClass_295
198160 --
198161 ----------------------------------------
198162 --
198163 FUNCTION EventClass_295
198164 (p_application_id IN NUMBER
198165 ,p_base_ledger_id IN NUMBER
198166 ,p_target_ledger_id IN NUMBER
198167 ,p_language IN VARCHAR2
198168 ,p_currency_code IN VARCHAR2
198169 ,p_sla_ledger_id IN NUMBER
198170 ,p_pad_start_date IN DATE
198171 ,p_pad_end_date IN DATE
198172 ,p_primary_ledger_id IN NUMBER)
198173 RETURN BOOLEAN IS
198174 --
198175 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'WIP_MTL_ALL';
198176 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'WIP_MTL';
198177
198178 l_calculate_acctd_flag VARCHAR2(1) :='N';
198179 l_calculate_g_l_flag VARCHAR2(1) :='N';
198180 --
198181 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
198182 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
198183 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
198184 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
198185 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
198186 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
198187 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
198188 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
198189 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
198190 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
198191 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
198192 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
198193 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
198194 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
198195 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
198196 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
198197 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
198198 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
198199 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
198200 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
198201 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
198202 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
198203 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
198204 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
198205 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
198206 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
198207
198208 l_event_id NUMBER;
198209 l_previous_event_id NUMBER;
198210 l_first_event_id NUMBER;
198211 l_last_event_id NUMBER;
198212
198213 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
198214 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
198215 --
198216 --
198217 l_result BOOLEAN := TRUE;
198218 l_rows NUMBER := 1000;
198219 l_event_type_name VARCHAR2(80) := 'All';
198220 l_event_class_name VARCHAR2(80) := 'WIP Material';
198221 l_description VARCHAR2(4000);
198222 l_transaction_reversal NUMBER;
198223 l_ae_header_id NUMBER;
198224 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
198225 l_log_module VARCHAR2(240);
198226 --
198227 l_acct_reversal_source VARCHAR2(30);
198228 l_trx_reversal_source VARCHAR2(30);
198229
198230 l_continue_with_lines BOOLEAN := TRUE;
198231 --
198232 l_acc_rev_gl_date_source DATE; -- 4262811
198233 --
198234 type t_array_event_id is table of number index by binary_integer;
198235
198236 l_rec_array_event t_rec_array_event;
198237 l_null_rec_array_event t_rec_array_event;
198238 l_array_ae_header_id xla_number_array_type;
198239 l_actual_flag VARCHAR2(1) := NULL;
198240 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
198241 l_balance_type_code VARCHAR2(1) :=NULL;
198242 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
198243
198244 --
198245 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
198246 --
198247
198248 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
198249 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
198250
198251 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
198252 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
198253 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
198254 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
198255 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
198256 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
198257 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
198258 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
198259 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
198260
198261 l_array_source_12 t_array_source_12;
198262 l_array_source_12_meaning t_array_lookup_meaning;
198263 l_array_source_38 t_array_source_38;
198264 l_array_source_38_meaning t_array_lookup_meaning;
198265
198266 l_array_source_4 t_array_source_4;
198267 l_array_source_11 t_array_source_11;
198268 l_array_source_15 t_array_source_15;
198269 l_array_source_18 t_array_source_18;
198270 l_array_source_19 t_array_source_19;
198271 l_array_source_20 t_array_source_20;
198272 l_array_source_21 t_array_source_21;
198273 l_array_source_22 t_array_source_22;
198274 l_array_source_24 t_array_source_24;
198275
198276 --
198277 CURSOR header_cur
198278 IS
198279 SELECT /*+ leading(xet) cardinality(xet,1) */
198280 -- Event Class Code: WIP_MTL
198281 xet.entity_id
198282 ,xet.legal_entity_id
198283 ,xet.entity_code
198284 ,xet.transaction_number
198285 ,xet.event_id
198286 ,xet.event_class_code
198287 ,xet.event_type_code
198288 ,xet.event_number
198289 ,xet.event_date
198290 ,xet.transaction_date
198291 ,xet.reference_num_1
198292 ,xet.reference_num_2
198293 ,xet.reference_num_3
198294 ,xet.reference_num_4
198295 ,xet.reference_char_1
198296 ,xet.reference_char_2
198297 ,xet.reference_char_3
198298 ,xet.reference_char_4
198299 ,xet.reference_date_1
198300 ,xet.reference_date_2
198301 ,xet.reference_date_3
198302 ,xet.reference_date_4
198303 ,xet.event_created_by
198304 ,xet.budgetary_control_flag
198305 , h1.DISTRIBUTION_TYPE source_12
198306 , fvl12.meaning source_12_meaning
198307 , h1.TRANSFER_TO_GL_INDICATOR source_38
198308 , fvl38.meaning source_38_meaning
198309 FROM xla_events_gt xet
198310 , CST_XLA_INV_HEADERS_V h1
198311 , fnd_lookup_values fvl12
198312 , fnd_lookup_values fvl38
198313 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
198314 and xet.event_class_code = C_EVENT_CLASS_CODE
198315 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
198316 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
198317 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
198318 AND fvl12.view_application_id(+) = 700
198319 AND fvl12.language(+) = USERENV('LANG')
198320 AND fvl38.lookup_type(+) = 'YES_NO'
198321 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
198322 AND fvl38.view_application_id(+) = 0
198323 AND fvl38.language(+) = USERENV('LANG')
198324
198325 ORDER BY event_id
198326 ;
198327
198328
198329 --
198330 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
198331 IS
198332 SELECT /*+ leading(xet) cardinality(xet,1) */
198333 -- Event Class Code: WIP_MTL
198334 xet.entity_id
198335 ,xet.legal_entity_id
198336 ,xet.entity_code
198337 ,xet.transaction_number
198338 ,xet.event_id
198339 ,xet.event_class_code
198340 ,xet.event_type_code
198341 ,xet.event_number
198342 ,xet.event_date
198343 ,xet.transaction_date
198344 ,xet.reference_num_1
198345 ,xet.reference_num_2
198346 ,xet.reference_num_3
198347 ,xet.reference_num_4
198348 ,xet.reference_char_1
198349 ,xet.reference_char_2
198350 ,xet.reference_char_3
198351 ,xet.reference_char_4
198352 ,xet.reference_date_1
198353 ,xet.reference_date_2
198354 ,xet.reference_date_3
198355 ,xet.reference_date_4
198356 ,xet.event_created_by
198357 ,xet.budgetary_control_flag
198358 , l2.LINE_NUMBER
198359 , l2.CODE_COMBINATION_ID source_4
198360 , l2.DISTRIBUTION_IDENTIFIER source_11
198361 , l2.CURRENCY_CODE source_15
198362 , l2.ENTERED_AMOUNT source_18
198363 , l2.CURRENCY_CONVERSION_DATE source_19
198364 , l2.CURRENCY_CONVERSION_RATE source_20
198365 , l2.CURRENCY_CONVERSION_TYPE source_21
198366 , l2.ACCOUNTED_AMOUNT source_22
198367 , l2.ACCOUNTING_LINE_TYPE_CODE source_24
198368 FROM xla_events_gt xet
198369 , CST_XLA_INV_LINES_V l2
198370 WHERE xet.event_id between x_first_event_id and x_last_event_id
198371 and xet.event_date between p_pad_start_date and p_pad_end_date
198372 and xet.event_class_code = C_EVENT_CLASS_CODE
198373 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
198374 ;
198375
198376 --
198377 BEGIN
198378 IF g_log_enabled THEN
198379 l_log_module := C_DEFAULT_MODULE||'.EventClass_295';
198380 END IF;
198381 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
198382 trace
198383 (p_msg => 'BEGIN of EventClass_295'
198384 ,p_level => C_LEVEL_PROCEDURE
198385 ,p_module => l_log_module);
198386 END IF;
198387
198388 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
198389 trace
198390 (p_msg => 'p_application_id = '||p_application_id||
198391 ' - p_base_ledger_id = '||p_base_ledger_id||
198392 ' - p_target_ledger_id = '||p_target_ledger_id||
198393 ' - p_language = '||p_language||
198394 ' - p_currency_code = '||p_currency_code||
198395 ' - p_sla_ledger_id = '||p_sla_ledger_id
198396 ,p_level => C_LEVEL_STATEMENT
198397 ,p_module => l_log_module);
198398 END IF;
198399 --
198400 -- initialze arrays
198401 --
198402 g_array_event.DELETE;
198403 l_rec_array_event := l_null_rec_array_event;
198404 --
198405 --------------------------------------
198406 -- 4262811 Initialze MPA Line Number
198407 --------------------------------------
198408 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
198409
198410 --
198411
198412 --
198413 OPEN header_cur;
198414 --
198415 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
198416 trace
198417 (p_msg => 'SQL - FETCH header_cur'
198418 ,p_level => C_LEVEL_STATEMENT
198419 ,p_module => l_log_module);
198420 END IF;
198421 --
198422 LOOP
198423 FETCH header_cur BULK COLLECT INTO
198424 l_array_entity_id
198425 , l_array_legal_entity_id
198426 , l_array_entity_code
198427 , l_array_transaction_num
198428 , l_array_event_id
198429 , l_array_class_code
198430 , l_array_event_type
198431 , l_array_event_number
198432 , l_array_event_date
198433 , l_array_transaction_date
198434 , l_array_reference_num_1
198435 , l_array_reference_num_2
198436 , l_array_reference_num_3
198437 , l_array_reference_num_4
198438 , l_array_reference_char_1
198439 , l_array_reference_char_2
198440 , l_array_reference_char_3
198441 , l_array_reference_char_4
198442 , l_array_reference_date_1
198443 , l_array_reference_date_2
198444 , l_array_reference_date_3
198445 , l_array_reference_date_4
198446 , l_array_event_created_by
198447 , l_array_budgetary_control_flag
198448 , l_array_source_12
198449 , l_array_source_12_meaning
198450 , l_array_source_38
198451 , l_array_source_38_meaning
198452 LIMIT l_rows;
198453 --
198454 IF (C_LEVEL_EVENT >= g_log_level) THEN
198455 trace
198456 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
198457 ,p_level => C_LEVEL_EVENT
198458 ,p_module => l_log_module);
198459 END IF;
198460 --
198461 EXIT WHEN l_array_entity_id.COUNT = 0;
198462
198463 -- initialize arrays
198464 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
198465 XLA_AE_LINES_PKG.g_rec_lines := NULL;
198466
198467 --
198468 -- Bug 4458708
198469 --
198470 XLA_AE_LINES_PKG.g_LineNumber := 0;
198471
198472
198473 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
198474 g_last_hdr_idx := l_array_event_id.LAST;
198475 --
198476 -- loop for the headers. Each iteration is for each header extract row
198477 -- fetched in header cursor
198478 --
198479 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
198480
198481 --
198482 -- set event info as cache for other routines to refer event attributes
198483 --
198484 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
198485 (p_application_id => p_application_id
198486 ,p_primary_ledger_id => p_primary_ledger_id
198487 ,p_base_ledger_id => p_base_ledger_id
198488 ,p_target_ledger_id => p_target_ledger_id
198489 ,p_entity_id => l_array_entity_id(hdr_idx)
198490 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
198491 ,p_entity_code => l_array_entity_code(hdr_idx)
198492 ,p_transaction_num => l_array_transaction_num(hdr_idx)
198493 ,p_event_id => l_array_event_id(hdr_idx)
198494 ,p_event_class_code => l_array_class_code(hdr_idx)
198495 ,p_event_type_code => l_array_event_type(hdr_idx)
198496 ,p_event_number => l_array_event_number(hdr_idx)
198497 ,p_event_date => l_array_event_date(hdr_idx)
198498 ,p_transaction_date => l_array_transaction_date(hdr_idx)
198499 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
198500 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
198501 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
198502 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
198503 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
198504 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
198505 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
198506 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
198507 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
198508 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
198509 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
198510 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
198511 ,p_event_created_by => l_array_event_created_by(hdr_idx)
198512 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
198513
198514 --
198515 -- set the status of entry to C_VALID (0)
198516 --
198517 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
198518
198519 --
198520 -- initialize a row for ae header
198521 --
198522 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
198523
198524 l_event_id := l_array_event_id(hdr_idx);
198525
198526 --
198527 -- storing the hdr_idx for event. May be used by line cursor.
198528 --
198529 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
198530
198531 --
198532 -- store sources from header extract. This can be improved to
198533 -- store only those sources from header extract that may be used in lines
198534 --
198535
198536 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
198537 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
198538 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
198539 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
198540
198541 --
198542 -- initilaize the status of ae headers for diffrent balance types
198543 -- the status is initialised to C_NOT_CREATED (2)
198544 --
198545 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
198546 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
198547 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
198548
198549 --
198550 -- call api to validate and store accounting attributes for header
198551 --
198552
198553 ------------------------------------------------------------
198554 -- Accrual Reversal : to get date for Standard Source (NONE)
198555 ------------------------------------------------------------
198556 l_acc_rev_gl_date_source := NULL;
198557
198558 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
198559 l_rec_acct_attrs.array_date_value(1) :=
198560 xla_ae_sources_pkg.GetSystemSourceDate(
198561 p_source_code => 'XLA_REFERENCE_DATE_1'
198562 , p_source_type_code => 'Y'
198563 , p_source_application_id => 602
198564 );
198565 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_TRANSFER_FLAG';
198566 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
198567
198568
198569 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
198570
198571 XLA_AE_HEADER_PKG.SetJeCategoryName;
198572
198573 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
198574 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
198575 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
198576 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
198577 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
198578
198579
198580 -- No header level analytical criteria
198581
198582 --
198583 --accounting attribute enhancement, bug 3612931
198584 --
198585 l_trx_reversal_source := SUBSTR(NULL, 1,30);
198586
198587 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
198588 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
198589
198590 xla_accounting_err_pkg.build_message
198591 (p_appli_s_name => 'XLA'
198592 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
198593 ,p_token_1 => 'ACCT_ATTR_NAME'
198594 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
198595 ,p_token_2 => 'PRODUCT_NAME'
198596 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
198597 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
198598 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
198599 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
198600
198601 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
198602 --
198603 -- following sets the accounting attributes needed to reverse
198604 -- accounting for a distributeion
198605 --
198606 xla_ae_lines_pkg.SetTrxReversalAttrs
198607 (p_event_id => l_event_id
198608 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
198609 ,p_trx_reversal_source => l_trx_reversal_source);
198610
198611 END IF;
198612
198613
198614 ----------------------------------------------------------------
198615 -- 4262811 - update the header statuses to invalid in need be
198616 ----------------------------------------------------------------
198617 --
198618 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
198619
198620
198621 -----------------------------------------------
198622 -- No accrual reversal for the event class/type
198623 -----------------------------------------------
198624 ----------------------------------------------------------------
198625
198626 --
198627 -- this ends the header loop iteration for one bulk fetch
198628 --
198629 END LOOP;
198630
198631 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
198632 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
198633
198634 --
198635 -- insert dummy rows into lines gt table that were created due to
198636 -- transaction reversals
198637 --
198638 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
198639 l_result := XLA_AE_LINES_PKG.InsertLines;
198640 END IF;
198641
198642 --
198643 -- reset the temp_line_num for each set of events fetched from header
198644 -- cursor rather than doing it for each new event in line cursor
198645 -- Bug 3939231
198646 --
198647 xla_ae_lines_pkg.g_temp_line_num := 0;
198648
198649
198650
198651 --
198652 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
198653 --
198654 --
198655 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
198656
198657 trace
198658 (p_msg => 'SQL - FETCH line_cur'
198659 ,p_level => C_LEVEL_STATEMENT
198660 ,p_module => l_log_module);
198661
198662 END IF;
198663 --
198664 --
198665 LOOP
198666 --
198667 FETCH line_cur BULK COLLECT INTO
198668 l_array_entity_id
198669 , l_array_legal_entity_id
198670 , l_array_entity_code
198671 , l_array_transaction_num
198672 , l_array_event_id
198673 , l_array_class_code
198674 , l_array_event_type
198675 , l_array_event_number
198676 , l_array_event_date
198677 , l_array_transaction_date
198678 , l_array_reference_num_1
198679 , l_array_reference_num_2
198680 , l_array_reference_num_3
198681 , l_array_reference_num_4
198682 , l_array_reference_char_1
198683 , l_array_reference_char_2
198684 , l_array_reference_char_3
198685 , l_array_reference_char_4
198686 , l_array_reference_date_1
198687 , l_array_reference_date_2
198688 , l_array_reference_date_3
198689 , l_array_reference_date_4
198690 , l_array_event_created_by
198691 , l_array_budgetary_control_flag
198692 , l_array_extract_line_num
198693 , l_array_source_4
198694 , l_array_source_11
198695 , l_array_source_15
198696 , l_array_source_18
198697 , l_array_source_19
198698 , l_array_source_20
198699 , l_array_source_21
198700 , l_array_source_22
198701 , l_array_source_24
198702 LIMIT l_rows;
198703
198704 --
198705 IF (C_LEVEL_EVENT >= g_log_level) THEN
198706 trace
198707 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
198708 ,p_level => C_LEVEL_EVENT
198709 ,p_module => l_log_module);
198710 END IF;
198711 --
198712 EXIT WHEN l_array_entity_id.count = 0;
198713
198714 XLA_AE_LINES_PKG.g_rec_lines := null;
198715
198716 --
198717 -- Bug 4458708
198718 --
198719 XLA_AE_LINES_PKG.g_LineNumber := 0;
198720 --
198721 --
198722
198723 FOR Idx IN 1..l_array_event_id.count LOOP
198724 --
198725 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
198726 --
198727 l_event_id := l_array_event_id(idx); -- 5648433
198728
198729 --
198730 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
198731 --
198732
198733 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
198734 (g_array_event(l_event_id).array_value_num('header_index'))
198735 ,'N'
198736 ) <> 'Y'
198737 THEN
198738 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
198739 trace
198740 (p_msg => 'Trancaction revesal option is not Y '
198741 ,p_level => C_LEVEL_STATEMENT
198742 ,p_module => l_log_module);
198743 END IF;
198744
198745 --
198746 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
198747 --
198748 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
198749 --
198750 -- set event info as cache for other routines to refer event attributes
198751 --
198752
198753 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
198754 l_previous_event_id := l_event_id;
198755
198756 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
198757 (p_application_id => p_application_id
198758 ,p_primary_ledger_id => p_primary_ledger_id
198759 ,p_base_ledger_id => p_base_ledger_id
198760 ,p_target_ledger_id => p_target_ledger_id
198761 ,p_entity_id => l_array_entity_id(Idx)
198762 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
198763 ,p_entity_code => l_array_entity_code(Idx)
198764 ,p_transaction_num => l_array_transaction_num(Idx)
198765 ,p_event_id => l_array_event_id(Idx)
198766 ,p_event_class_code => l_array_class_code(Idx)
198767 ,p_event_type_code => l_array_event_type(Idx)
198768 ,p_event_number => l_array_event_number(Idx)
198769 ,p_event_date => l_array_event_date(Idx)
198770 ,p_transaction_date => l_array_transaction_date(Idx)
198771 ,p_reference_num_1 => l_array_reference_num_1(Idx)
198772 ,p_reference_num_2 => l_array_reference_num_2(Idx)
198773 ,p_reference_num_3 => l_array_reference_num_3(Idx)
198774 ,p_reference_num_4 => l_array_reference_num_4(Idx)
198775 ,p_reference_char_1 => l_array_reference_char_1(Idx)
198776 ,p_reference_char_2 => l_array_reference_char_2(Idx)
198777 ,p_reference_char_3 => l_array_reference_char_3(Idx)
198778 ,p_reference_char_4 => l_array_reference_char_4(Idx)
198779 ,p_reference_date_1 => l_array_reference_date_1(Idx)
198780 ,p_reference_date_2 => l_array_reference_date_2(Idx)
198781 ,p_reference_date_3 => l_array_reference_date_3(Idx)
198782 ,p_reference_date_4 => l_array_reference_date_4(Idx)
198783 ,p_event_created_by => l_array_event_created_by(Idx)
198784 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
198785 --
198786 END IF;
198787
198788
198789
198790 --
198791 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
198792
198793 l_acct_reversal_source := SUBSTR(NULL, 1,30);
198794
198795 IF l_continue_with_lines THEN
198796 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
198797 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
198798
198799 xla_accounting_err_pkg.build_message
198800 (p_appli_s_name => 'XLA'
198801 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
198802 ,p_token_1 => 'LINE_NUMBER'
198803 ,p_value_1 => l_array_extract_line_num(Idx)
198804 ,p_token_2 => 'PRODUCT_NAME'
198805 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
198806 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
198807 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
198808 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
198809
198810 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
198811 --
198812 -- following sets the accounting attributes needed to reverse
198813 -- accounting for a distributeion
198814 --
198815
198816 --
198817 -- 5217187
198818 --
198819 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
198820 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
198821 g_array_event(l_event_id).array_value_num('header_index'));
198822 --
198823 --
198824
198825 -- No reversal code generated
198826
198827 xla_ae_lines_pkg.SetAcctReversalAttrs
198828 (p_event_id => l_event_id
198829 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
198830 ,p_calculate_acctd_flag => l_calculate_acctd_flag
198831 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
198832 END IF;
198833
198834 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
198835 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
198836
198837 --
198838 AcctLineType_39 (
198839 p_application_id => p_application_id
198840 ,p_event_id => l_event_id
198841 ,p_calculate_acctd_flag => l_calculate_acctd_flag
198842 ,p_calculate_g_l_flag => l_calculate_g_l_flag
198843 ,p_actual_flag => l_actual_flag
198844 ,p_balance_type_code => l_balance_type_code
198845 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
198846
198847 , p_source_4 => l_array_source_4(Idx)
198848 , p_source_11 => l_array_source_11(Idx)
198849 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
198850 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
198851 , p_source_15 => l_array_source_15(Idx)
198852 , p_source_18 => l_array_source_18(Idx)
198853 , p_source_19 => l_array_source_19(Idx)
198854 , p_source_20 => l_array_source_20(Idx)
198855 , p_source_21 => l_array_source_21(Idx)
198856 , p_source_22 => l_array_source_22(Idx)
198857 , p_source_24 => l_array_source_24(Idx)
198858 );
198859 If(l_balance_type_code = 'A') THEN
198860 l_actual_gain_loss_ref := l_gain_or_loss_ref;
198861 END IF;
198862
198863 --
198864
198865
198866 --
198867 AcctLineType_139 (
198868 p_application_id => p_application_id
198869 ,p_event_id => l_event_id
198870 ,p_calculate_acctd_flag => l_calculate_acctd_flag
198871 ,p_calculate_g_l_flag => l_calculate_g_l_flag
198872 ,p_actual_flag => l_actual_flag
198873 ,p_balance_type_code => l_balance_type_code
198874 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
198875
198876 , p_source_4 => l_array_source_4(Idx)
198877 , p_source_11 => l_array_source_11(Idx)
198878 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
198879 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
198880 , p_source_15 => l_array_source_15(Idx)
198881 , p_source_18 => l_array_source_18(Idx)
198882 , p_source_19 => l_array_source_19(Idx)
198883 , p_source_20 => l_array_source_20(Idx)
198884 , p_source_21 => l_array_source_21(Idx)
198885 , p_source_22 => l_array_source_22(Idx)
198886 , p_source_24 => l_array_source_24(Idx)
198887 );
198888 If(l_balance_type_code = 'A') THEN
198889 l_actual_gain_loss_ref := l_gain_or_loss_ref;
198890 END IF;
198891
198892 --
198893
198894
198895 --
198896 AcctLineType_163 (
198897 p_application_id => p_application_id
198898 ,p_event_id => l_event_id
198899 ,p_calculate_acctd_flag => l_calculate_acctd_flag
198900 ,p_calculate_g_l_flag => l_calculate_g_l_flag
198901 ,p_actual_flag => l_actual_flag
198902 ,p_balance_type_code => l_balance_type_code
198903 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
198904
198905 , p_source_4 => l_array_source_4(Idx)
198906 , p_source_11 => l_array_source_11(Idx)
198907 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
198908 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
198909 , p_source_15 => l_array_source_15(Idx)
198910 , p_source_18 => l_array_source_18(Idx)
198911 , p_source_19 => l_array_source_19(Idx)
198912 , p_source_20 => l_array_source_20(Idx)
198913 , p_source_21 => l_array_source_21(Idx)
198914 , p_source_22 => l_array_source_22(Idx)
198915 , p_source_24 => l_array_source_24(Idx)
198916 );
198917 If(l_balance_type_code = 'A') THEN
198918 l_actual_gain_loss_ref := l_gain_or_loss_ref;
198919 END IF;
198920
198921 --
198922
198923
198924 --
198925 AcctLineType_201 (
198926 p_application_id => p_application_id
198927 ,p_event_id => l_event_id
198928 ,p_calculate_acctd_flag => l_calculate_acctd_flag
198929 ,p_calculate_g_l_flag => l_calculate_g_l_flag
198930 ,p_actual_flag => l_actual_flag
198931 ,p_balance_type_code => l_balance_type_code
198932 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
198933
198934 , p_source_4 => l_array_source_4(Idx)
198935 , p_source_11 => l_array_source_11(Idx)
198936 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
198937 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
198938 , p_source_15 => l_array_source_15(Idx)
198939 , p_source_18 => l_array_source_18(Idx)
198940 , p_source_19 => l_array_source_19(Idx)
198941 , p_source_20 => l_array_source_20(Idx)
198942 , p_source_21 => l_array_source_21(Idx)
198943 , p_source_22 => l_array_source_22(Idx)
198944 , p_source_24 => l_array_source_24(Idx)
198945 );
198946 If(l_balance_type_code = 'A') THEN
198947 l_actual_gain_loss_ref := l_gain_or_loss_ref;
198948 END IF;
198949
198950 --
198951
198952
198953 --
198954 AcctLineType_245 (
198955 p_application_id => p_application_id
198956 ,p_event_id => l_event_id
198957 ,p_calculate_acctd_flag => l_calculate_acctd_flag
198958 ,p_calculate_g_l_flag => l_calculate_g_l_flag
198959 ,p_actual_flag => l_actual_flag
198960 ,p_balance_type_code => l_balance_type_code
198961 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
198962
198963 , p_source_4 => l_array_source_4(Idx)
198964 , p_source_11 => l_array_source_11(Idx)
198965 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
198966 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
198967 , p_source_15 => l_array_source_15(Idx)
198968 , p_source_18 => l_array_source_18(Idx)
198969 , p_source_19 => l_array_source_19(Idx)
198970 , p_source_20 => l_array_source_20(Idx)
198971 , p_source_21 => l_array_source_21(Idx)
198972 , p_source_22 => l_array_source_22(Idx)
198973 , p_source_24 => l_array_source_24(Idx)
198974 );
198975 If(l_balance_type_code = 'A') THEN
198976 l_actual_gain_loss_ref := l_gain_or_loss_ref;
198977 END IF;
198978
198979 --
198980
198981 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
198982 -- or secondary ledger that has different currency with primary
198983 -- or alc that is calculated by sla
198984 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
198985 (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'))
198986
198987 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
198988 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
198989 AND (l_actual_flag = 'A')) THEN
198990 XLA_AE_LINES_PKG.CreateGainOrLossLines(
198991 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
198992 ,p_application_id => p_application_id
198993 ,p_amb_context_code => 'DEFAULT'
198994 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
198995 ,p_event_class_code => C_EVENT_CLASS_CODE
198996 ,p_event_type_code => C_EVENT_TYPE_CODE
198997
198998 ,p_gain_ccid => -1
198999 ,p_loss_ccid => -1
199000
199001 ,p_actual_flag => l_actual_flag
199002 ,p_enc_flag => null
199003 ,p_actual_g_l_ref => l_actual_gain_loss_ref
199004 ,p_enc_g_l_ref => null
199005 );
199006 END IF;
199007 END IF;
199008 END IF;
199009
199010 ELSE
199011 --
199012 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
199013 --
199014 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
199015 trace
199016 (p_msg => 'Trancaction revesal option is Y'
199017 ,p_level => C_LEVEL_STATEMENT
199018 ,p_module => l_log_module);
199019 END IF;
199020 END IF;
199021
199022 END LOOP;
199023 l_result := XLA_AE_LINES_PKG.InsertLines ;
199024 end loop;
199025 close line_cur;
199026
199027
199028 --
199029 -- insert headers into xla_ae_headers_gt table
199030 --
199031 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
199032
199033 -- insert into errors table here.
199034
199035 END LOOP;
199036
199037 --
199038 -- 4865292
199039 --
199040 -- Compare g_hdr_extract_count with event count in
199041 -- CreateHeadersAndLines.
199042 --
199043 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
199044
199045 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
199046 trace (p_msg => '# rows extracted from header extract objects '
199047 || ' (running total): '
199048 || g_hdr_extract_count
199049 ,p_level => C_LEVEL_STATEMENT
199050 ,p_module => l_log_module);
199051 END IF;
199052
199053 CLOSE header_cur;
199054 --
199055
199056 --
199057 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
199058 trace
199059 (p_msg => 'END of EventClass_295'
199060 ,p_level => C_LEVEL_PROCEDURE
199061 ,p_module => l_log_module);
199062 END IF;
199063 --
199064 RETURN l_result;
199065 EXCEPTION
199066 WHEN xla_exceptions_pkg.application_exception THEN
199067
199068 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
199069
199070
199071 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
199072
199073 RAISE;
199074
199075 WHEN NO_DATA_FOUND THEN
199076
199077 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
199078 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
199079
199080 FOR header_record IN header_cur
199081 LOOP
199082 l_array_header_events(header_record.event_id) := header_record.event_id;
199083 END LOOP;
199084
199085 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
199086 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
199087
199088 fnd_file.put_line(fnd_file.LOG, ' ');
199089 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
199090 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
199091 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
199092
199093 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
199094 LOOP
199095 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
199096 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
199097 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
199098 END IF;
199099 END LOOP;
199100
199101 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
199102 fnd_file.put_line(fnd_file.LOG, ' ');
199103
199104
199105 xla_exceptions_pkg.raise_message
199106 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_295');
199107
199108
199109 WHEN OTHERS THEN
199110 xla_exceptions_pkg.raise_message
199111 (p_location => 'XLA_00707_AAD_S_000007_PKG.EventClass_295');
199112 END EventClass_295;
199113 --
199114
199115 --
199116 --+============================================+
199117 --| |
199118 --| PRIVATE FUNCTION |
199119 --| |
199120 --+============================================+
199121 --
199122 FUNCTION CreateHeadersAndLines
199123 (p_application_id IN NUMBER
199124 ,p_base_ledger_id IN NUMBER
199125 ,p_target_ledger_id IN NUMBER
199126 ,p_pad_start_date IN DATE
199127 ,p_pad_end_date IN DATE
199128 ,p_primary_ledger_id IN NUMBER)
199129 RETURN BOOLEAN IS
199130 l_created BOOLEAN:=FALSE;
199131 l_event_id NUMBER;
199132 l_event_date DATE;
199133 l_language VARCHAR2(30);
199134 l_currency_code VARCHAR2(30);
199135 l_sla_ledger_id NUMBER;
199136 l_log_module VARCHAR2(240);
199137
199138 BEGIN
199139 --
199140 IF g_log_enabled THEN
199141 l_log_module := C_DEFAULT_MODULE||'.CreateHeadersAndLines';
199142 END IF;
199143 --
199144 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
199145 trace
199146 (p_msg => 'BEGIN of CreateHeadersAndLines'
199147 ,p_level => C_LEVEL_PROCEDURE
199148 ,p_module => l_log_module);
199149 END IF;
199150
199151 l_language := xla_ae_journal_entry_pkg.g_cache_ledgers_info.description_language;
199152 l_currency_code := xla_ae_journal_entry_pkg.g_cache_ledgers_info.currency_code;
199153 l_sla_ledger_id := xla_ae_journal_entry_pkg.g_cache_ledgers_info.sla_ledger_id;
199154
199155 --
199156 -- initialize array of lines with NULL
199157 --
199158 xla_ae_lines_pkg.SetNullLine;
199159
199160 --
199161 -- initialize header extract count -- Bug 4865292
199162 --
199163 g_hdr_extract_count:= 0;
199164
199165
199166 l_created := EventClass_250(
199167 p_application_id => p_application_id
199168 , p_base_ledger_id => p_base_ledger_id
199169 , p_target_ledger_id => p_target_ledger_id
199170 , p_language => l_language
199171 , p_currency_code => l_currency_code
199172 , p_sla_ledger_id => l_sla_ledger_id
199173 , p_pad_start_date => p_pad_start_date
199174 , p_pad_end_date => p_pad_end_date
199175 , p_primary_ledger_id => p_primary_ledger_id
199176 );
199177
199178
199179
199180 IF ( g_diagnostics_mode ='Y' ) THEN
199181
199182 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
199183 trace
199184 (p_msg => 'CALL Transaction Objects Diagnostics'
199185 ,p_level => C_LEVEL_STATEMENT
199186 ,p_module => l_log_module);
199187
199188 END IF;
199189
199190 insert_sources_250(
199191 p_target_ledger_id => p_target_ledger_id
199192 , p_language => l_language
199193 , p_sla_ledger_id => l_sla_ledger_id
199194 , p_pad_start_date => p_pad_start_date
199195 , p_pad_end_date => p_pad_end_date
199196 );
199197
199198 END IF;
199199
199200 l_created := EventClass_251(
199201 p_application_id => p_application_id
199202 , p_base_ledger_id => p_base_ledger_id
199203 , p_target_ledger_id => p_target_ledger_id
199204 , p_language => l_language
199205 , p_currency_code => l_currency_code
199206 , p_sla_ledger_id => l_sla_ledger_id
199207 , p_pad_start_date => p_pad_start_date
199208 , p_pad_end_date => p_pad_end_date
199209 , p_primary_ledger_id => p_primary_ledger_id
199210 );
199211
199212
199213
199214 IF ( g_diagnostics_mode ='Y' ) THEN
199215
199216 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
199217 trace
199218 (p_msg => 'CALL Transaction Objects Diagnostics'
199219 ,p_level => C_LEVEL_STATEMENT
199220 ,p_module => l_log_module);
199221
199222 END IF;
199223
199224 insert_sources_251(
199225 p_target_ledger_id => p_target_ledger_id
199226 , p_language => l_language
199227 , p_sla_ledger_id => l_sla_ledger_id
199228 , p_pad_start_date => p_pad_start_date
199229 , p_pad_end_date => p_pad_end_date
199230 );
199231
199232 END IF;
199233
199234 l_created := EventClass_252(
199235 p_application_id => p_application_id
199236 , p_base_ledger_id => p_base_ledger_id
199237 , p_target_ledger_id => p_target_ledger_id
199238 , p_language => l_language
199239 , p_currency_code => l_currency_code
199240 , p_sla_ledger_id => l_sla_ledger_id
199241 , p_pad_start_date => p_pad_start_date
199242 , p_pad_end_date => p_pad_end_date
199243 , p_primary_ledger_id => p_primary_ledger_id
199244 );
199245
199246
199247
199248 IF ( g_diagnostics_mode ='Y' ) THEN
199249
199250 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
199251 trace
199252 (p_msg => 'CALL Transaction Objects Diagnostics'
199253 ,p_level => C_LEVEL_STATEMENT
199254 ,p_module => l_log_module);
199255
199256 END IF;
199257
199258 insert_sources_252(
199259 p_target_ledger_id => p_target_ledger_id
199260 , p_language => l_language
199261 , p_sla_ledger_id => l_sla_ledger_id
199262 , p_pad_start_date => p_pad_start_date
199263 , p_pad_end_date => p_pad_end_date
199264 );
199265
199266 END IF;
199267
199268 l_created := EventClass_253(
199269 p_application_id => p_application_id
199270 , p_base_ledger_id => p_base_ledger_id
199271 , p_target_ledger_id => p_target_ledger_id
199272 , p_language => l_language
199273 , p_currency_code => l_currency_code
199274 , p_sla_ledger_id => l_sla_ledger_id
199275 , p_pad_start_date => p_pad_start_date
199276 , p_pad_end_date => p_pad_end_date
199277 , p_primary_ledger_id => p_primary_ledger_id
199278 );
199279
199280
199281
199282 IF ( g_diagnostics_mode ='Y' ) THEN
199283
199284 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
199285 trace
199286 (p_msg => 'CALL Transaction Objects Diagnostics'
199287 ,p_level => C_LEVEL_STATEMENT
199288 ,p_module => l_log_module);
199289
199290 END IF;
199291
199292 insert_sources_253(
199293 p_target_ledger_id => p_target_ledger_id
199294 , p_language => l_language
199295 , p_sla_ledger_id => l_sla_ledger_id
199296 , p_pad_start_date => p_pad_start_date
199297 , p_pad_end_date => p_pad_end_date
199298 );
199299
199300 END IF;
199301
199302 l_created := EventClass_254(
199303 p_application_id => p_application_id
199304 , p_base_ledger_id => p_base_ledger_id
199305 , p_target_ledger_id => p_target_ledger_id
199306 , p_language => l_language
199307 , p_currency_code => l_currency_code
199308 , p_sla_ledger_id => l_sla_ledger_id
199309 , p_pad_start_date => p_pad_start_date
199310 , p_pad_end_date => p_pad_end_date
199311 , p_primary_ledger_id => p_primary_ledger_id
199312 );
199313
199314
199315
199316 IF ( g_diagnostics_mode ='Y' ) THEN
199317
199318 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
199319 trace
199320 (p_msg => 'CALL Transaction Objects Diagnostics'
199321 ,p_level => C_LEVEL_STATEMENT
199322 ,p_module => l_log_module);
199323
199324 END IF;
199325
199326 insert_sources_254(
199327 p_target_ledger_id => p_target_ledger_id
199328 , p_language => l_language
199329 , p_sla_ledger_id => l_sla_ledger_id
199330 , p_pad_start_date => p_pad_start_date
199331 , p_pad_end_date => p_pad_end_date
199332 );
199333
199334 END IF;
199335
199336 l_created := EventClass_255(
199337 p_application_id => p_application_id
199338 , p_base_ledger_id => p_base_ledger_id
199339 , p_target_ledger_id => p_target_ledger_id
199340 , p_language => l_language
199341 , p_currency_code => l_currency_code
199342 , p_sla_ledger_id => l_sla_ledger_id
199343 , p_pad_start_date => p_pad_start_date
199344 , p_pad_end_date => p_pad_end_date
199345 , p_primary_ledger_id => p_primary_ledger_id
199346 );
199347
199348
199349
199350 IF ( g_diagnostics_mode ='Y' ) THEN
199351
199352 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
199353 trace
199354 (p_msg => 'CALL Transaction Objects Diagnostics'
199355 ,p_level => C_LEVEL_STATEMENT
199356 ,p_module => l_log_module);
199357
199358 END IF;
199359
199360 insert_sources_255(
199361 p_target_ledger_id => p_target_ledger_id
199362 , p_language => l_language
199363 , p_sla_ledger_id => l_sla_ledger_id
199364 , p_pad_start_date => p_pad_start_date
199365 , p_pad_end_date => p_pad_end_date
199366 );
199367
199368 END IF;
199369
199370 l_created := EventClass_256(
199371 p_application_id => p_application_id
199372 , p_base_ledger_id => p_base_ledger_id
199373 , p_target_ledger_id => p_target_ledger_id
199374 , p_language => l_language
199375 , p_currency_code => l_currency_code
199376 , p_sla_ledger_id => l_sla_ledger_id
199377 , p_pad_start_date => p_pad_start_date
199378 , p_pad_end_date => p_pad_end_date
199379 , p_primary_ledger_id => p_primary_ledger_id
199380 );
199381
199382
199383
199384 IF ( g_diagnostics_mode ='Y' ) THEN
199385
199386 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
199387 trace
199388 (p_msg => 'CALL Transaction Objects Diagnostics'
199389 ,p_level => C_LEVEL_STATEMENT
199390 ,p_module => l_log_module);
199391
199392 END IF;
199393
199394 insert_sources_256(
199395 p_target_ledger_id => p_target_ledger_id
199396 , p_language => l_language
199397 , p_sla_ledger_id => l_sla_ledger_id
199398 , p_pad_start_date => p_pad_start_date
199399 , p_pad_end_date => p_pad_end_date
199400 );
199401
199402 END IF;
199403
199404 l_created := EventClass_257(
199405 p_application_id => p_application_id
199406 , p_base_ledger_id => p_base_ledger_id
199407 , p_target_ledger_id => p_target_ledger_id
199408 , p_language => l_language
199409 , p_currency_code => l_currency_code
199410 , p_sla_ledger_id => l_sla_ledger_id
199411 , p_pad_start_date => p_pad_start_date
199412 , p_pad_end_date => p_pad_end_date
199413 , p_primary_ledger_id => p_primary_ledger_id
199414 );
199415
199416
199417
199418 IF ( g_diagnostics_mode ='Y' ) THEN
199419
199420 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
199421 trace
199422 (p_msg => 'CALL Transaction Objects Diagnostics'
199423 ,p_level => C_LEVEL_STATEMENT
199424 ,p_module => l_log_module);
199425
199426 END IF;
199427
199428 insert_sources_257(
199429 p_target_ledger_id => p_target_ledger_id
199430 , p_language => l_language
199431 , p_sla_ledger_id => l_sla_ledger_id
199432 , p_pad_start_date => p_pad_start_date
199433 , p_pad_end_date => p_pad_end_date
199434 );
199435
199436 END IF;
199437
199438 l_created := EventClass_258(
199439 p_application_id => p_application_id
199440 , p_base_ledger_id => p_base_ledger_id
199441 , p_target_ledger_id => p_target_ledger_id
199442 , p_language => l_language
199443 , p_currency_code => l_currency_code
199444 , p_sla_ledger_id => l_sla_ledger_id
199445 , p_pad_start_date => p_pad_start_date
199446 , p_pad_end_date => p_pad_end_date
199447 , p_primary_ledger_id => p_primary_ledger_id
199448 );
199449
199450
199451
199452 IF ( g_diagnostics_mode ='Y' ) THEN
199453
199454 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
199455 trace
199456 (p_msg => 'CALL Transaction Objects Diagnostics'
199457 ,p_level => C_LEVEL_STATEMENT
199458 ,p_module => l_log_module);
199459
199460 END IF;
199461
199462 insert_sources_258(
199463 p_target_ledger_id => p_target_ledger_id
199464 , p_language => l_language
199465 , p_sla_ledger_id => l_sla_ledger_id
199466 , p_pad_start_date => p_pad_start_date
199467 , p_pad_end_date => p_pad_end_date
199468 );
199469
199470 END IF;
199471
199472 l_created := EventClass_259(
199473 p_application_id => p_application_id
199474 , p_base_ledger_id => p_base_ledger_id
199475 , p_target_ledger_id => p_target_ledger_id
199476 , p_language => l_language
199477 , p_currency_code => l_currency_code
199478 , p_sla_ledger_id => l_sla_ledger_id
199479 , p_pad_start_date => p_pad_start_date
199480 , p_pad_end_date => p_pad_end_date
199481 , p_primary_ledger_id => p_primary_ledger_id
199482 );
199483
199484
199485
199486 IF ( g_diagnostics_mode ='Y' ) THEN
199487
199488 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
199489 trace
199490 (p_msg => 'CALL Transaction Objects Diagnostics'
199491 ,p_level => C_LEVEL_STATEMENT
199492 ,p_module => l_log_module);
199493
199494 END IF;
199495
199496 insert_sources_259(
199497 p_target_ledger_id => p_target_ledger_id
199498 , p_language => l_language
199499 , p_sla_ledger_id => l_sla_ledger_id
199500 , p_pad_start_date => p_pad_start_date
199501 , p_pad_end_date => p_pad_end_date
199502 );
199503
199504 END IF;
199505
199506 l_created := EventClass_260(
199507 p_application_id => p_application_id
199508 , p_base_ledger_id => p_base_ledger_id
199509 , p_target_ledger_id => p_target_ledger_id
199510 , p_language => l_language
199511 , p_currency_code => l_currency_code
199512 , p_sla_ledger_id => l_sla_ledger_id
199513 , p_pad_start_date => p_pad_start_date
199514 , p_pad_end_date => p_pad_end_date
199515 , p_primary_ledger_id => p_primary_ledger_id
199516 );
199517
199518
199519
199520 IF ( g_diagnostics_mode ='Y' ) THEN
199521
199522 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
199523 trace
199524 (p_msg => 'CALL Transaction Objects Diagnostics'
199525 ,p_level => C_LEVEL_STATEMENT
199526 ,p_module => l_log_module);
199527
199528 END IF;
199529
199530 insert_sources_260(
199531 p_target_ledger_id => p_target_ledger_id
199532 , p_language => l_language
199533 , p_sla_ledger_id => l_sla_ledger_id
199534 , p_pad_start_date => p_pad_start_date
199535 , p_pad_end_date => p_pad_end_date
199536 );
199537
199538 END IF;
199539
199540 l_created := EventClass_261(
199541 p_application_id => p_application_id
199542 , p_base_ledger_id => p_base_ledger_id
199543 , p_target_ledger_id => p_target_ledger_id
199544 , p_language => l_language
199545 , p_currency_code => l_currency_code
199546 , p_sla_ledger_id => l_sla_ledger_id
199547 , p_pad_start_date => p_pad_start_date
199548 , p_pad_end_date => p_pad_end_date
199549 , p_primary_ledger_id => p_primary_ledger_id
199550 );
199551
199552
199553
199554 IF ( g_diagnostics_mode ='Y' ) THEN
199555
199556 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
199557 trace
199558 (p_msg => 'CALL Transaction Objects Diagnostics'
199559 ,p_level => C_LEVEL_STATEMENT
199560 ,p_module => l_log_module);
199561
199562 END IF;
199563
199564 insert_sources_261(
199565 p_target_ledger_id => p_target_ledger_id
199566 , p_language => l_language
199567 , p_sla_ledger_id => l_sla_ledger_id
199568 , p_pad_start_date => p_pad_start_date
199569 , p_pad_end_date => p_pad_end_date
199570 );
199571
199572 END IF;
199573
199574 l_created := EventClass_262(
199575 p_application_id => p_application_id
199576 , p_base_ledger_id => p_base_ledger_id
199577 , p_target_ledger_id => p_target_ledger_id
199578 , p_language => l_language
199579 , p_currency_code => l_currency_code
199580 , p_sla_ledger_id => l_sla_ledger_id
199581 , p_pad_start_date => p_pad_start_date
199582 , p_pad_end_date => p_pad_end_date
199583 , p_primary_ledger_id => p_primary_ledger_id
199584 );
199585
199586
199587
199588 IF ( g_diagnostics_mode ='Y' ) THEN
199589
199590 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
199591 trace
199592 (p_msg => 'CALL Transaction Objects Diagnostics'
199593 ,p_level => C_LEVEL_STATEMENT
199594 ,p_module => l_log_module);
199595
199596 END IF;
199597
199598 insert_sources_262(
199599 p_target_ledger_id => p_target_ledger_id
199600 , p_language => l_language
199601 , p_sla_ledger_id => l_sla_ledger_id
199602 , p_pad_start_date => p_pad_start_date
199603 , p_pad_end_date => p_pad_end_date
199604 );
199605
199606 END IF;
199607
199608 l_created := EventClass_263(
199609 p_application_id => p_application_id
199610 , p_base_ledger_id => p_base_ledger_id
199611 , p_target_ledger_id => p_target_ledger_id
199612 , p_language => l_language
199613 , p_currency_code => l_currency_code
199614 , p_sla_ledger_id => l_sla_ledger_id
199615 , p_pad_start_date => p_pad_start_date
199616 , p_pad_end_date => p_pad_end_date
199617 , p_primary_ledger_id => p_primary_ledger_id
199618 );
199619
199620
199621
199622 IF ( g_diagnostics_mode ='Y' ) THEN
199623
199624 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
199625 trace
199626 (p_msg => 'CALL Transaction Objects Diagnostics'
199627 ,p_level => C_LEVEL_STATEMENT
199628 ,p_module => l_log_module);
199629
199630 END IF;
199631
199632 insert_sources_263(
199633 p_target_ledger_id => p_target_ledger_id
199634 , p_language => l_language
199635 , p_sla_ledger_id => l_sla_ledger_id
199636 , p_pad_start_date => p_pad_start_date
199637 , p_pad_end_date => p_pad_end_date
199638 );
199639
199640 END IF;
199641
199642 l_created := EventClass_264(
199643 p_application_id => p_application_id
199644 , p_base_ledger_id => p_base_ledger_id
199645 , p_target_ledger_id => p_target_ledger_id
199646 , p_language => l_language
199647 , p_currency_code => l_currency_code
199648 , p_sla_ledger_id => l_sla_ledger_id
199649 , p_pad_start_date => p_pad_start_date
199650 , p_pad_end_date => p_pad_end_date
199651 , p_primary_ledger_id => p_primary_ledger_id
199652 );
199653
199654
199655
199656 IF ( g_diagnostics_mode ='Y' ) THEN
199657
199658 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
199659 trace
199660 (p_msg => 'CALL Transaction Objects Diagnostics'
199661 ,p_level => C_LEVEL_STATEMENT
199662 ,p_module => l_log_module);
199663
199664 END IF;
199665
199666 insert_sources_264(
199667 p_target_ledger_id => p_target_ledger_id
199668 , p_language => l_language
199669 , p_sla_ledger_id => l_sla_ledger_id
199670 , p_pad_start_date => p_pad_start_date
199671 , p_pad_end_date => p_pad_end_date
199672 );
199673
199674 END IF;
199675
199676 l_created := EventClass_265(
199677 p_application_id => p_application_id
199678 , p_base_ledger_id => p_base_ledger_id
199679 , p_target_ledger_id => p_target_ledger_id
199680 , p_language => l_language
199681 , p_currency_code => l_currency_code
199682 , p_sla_ledger_id => l_sla_ledger_id
199683 , p_pad_start_date => p_pad_start_date
199684 , p_pad_end_date => p_pad_end_date
199685 , p_primary_ledger_id => p_primary_ledger_id
199686 );
199687
199688
199689
199690 IF ( g_diagnostics_mode ='Y' ) THEN
199691
199692 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
199693 trace
199694 (p_msg => 'CALL Transaction Objects Diagnostics'
199695 ,p_level => C_LEVEL_STATEMENT
199696 ,p_module => l_log_module);
199697
199698 END IF;
199699
199700 insert_sources_265(
199701 p_target_ledger_id => p_target_ledger_id
199702 , p_language => l_language
199703 , p_sla_ledger_id => l_sla_ledger_id
199704 , p_pad_start_date => p_pad_start_date
199705 , p_pad_end_date => p_pad_end_date
199706 );
199707
199708 END IF;
199709
199710 l_created := EventClass_266(
199711 p_application_id => p_application_id
199712 , p_base_ledger_id => p_base_ledger_id
199713 , p_target_ledger_id => p_target_ledger_id
199714 , p_language => l_language
199715 , p_currency_code => l_currency_code
199716 , p_sla_ledger_id => l_sla_ledger_id
199717 , p_pad_start_date => p_pad_start_date
199718 , p_pad_end_date => p_pad_end_date
199719 , p_primary_ledger_id => p_primary_ledger_id
199720 );
199721
199722
199723
199724 IF ( g_diagnostics_mode ='Y' ) THEN
199725
199726 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
199727 trace
199728 (p_msg => 'CALL Transaction Objects Diagnostics'
199729 ,p_level => C_LEVEL_STATEMENT
199730 ,p_module => l_log_module);
199731
199732 END IF;
199733
199734 insert_sources_266(
199735 p_target_ledger_id => p_target_ledger_id
199736 , p_language => l_language
199737 , p_sla_ledger_id => l_sla_ledger_id
199738 , p_pad_start_date => p_pad_start_date
199739 , p_pad_end_date => p_pad_end_date
199740 );
199741
199742 END IF;
199743
199744 l_created := EventClass_267(
199745 p_application_id => p_application_id
199746 , p_base_ledger_id => p_base_ledger_id
199747 , p_target_ledger_id => p_target_ledger_id
199748 , p_language => l_language
199749 , p_currency_code => l_currency_code
199750 , p_sla_ledger_id => l_sla_ledger_id
199751 , p_pad_start_date => p_pad_start_date
199752 , p_pad_end_date => p_pad_end_date
199753 , p_primary_ledger_id => p_primary_ledger_id
199754 );
199755
199756
199757
199758 IF ( g_diagnostics_mode ='Y' ) THEN
199759
199760 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
199761 trace
199762 (p_msg => 'CALL Transaction Objects Diagnostics'
199763 ,p_level => C_LEVEL_STATEMENT
199764 ,p_module => l_log_module);
199765
199766 END IF;
199767
199768 insert_sources_267(
199769 p_target_ledger_id => p_target_ledger_id
199770 , p_language => l_language
199771 , p_sla_ledger_id => l_sla_ledger_id
199772 , p_pad_start_date => p_pad_start_date
199773 , p_pad_end_date => p_pad_end_date
199774 );
199775
199776 END IF;
199777
199778 l_created := EventClass_268(
199779 p_application_id => p_application_id
199780 , p_base_ledger_id => p_base_ledger_id
199781 , p_target_ledger_id => p_target_ledger_id
199782 , p_language => l_language
199783 , p_currency_code => l_currency_code
199784 , p_sla_ledger_id => l_sla_ledger_id
199785 , p_pad_start_date => p_pad_start_date
199786 , p_pad_end_date => p_pad_end_date
199787 , p_primary_ledger_id => p_primary_ledger_id
199788 );
199789
199790
199791
199792 IF ( g_diagnostics_mode ='Y' ) THEN
199793
199794 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
199795 trace
199796 (p_msg => 'CALL Transaction Objects Diagnostics'
199797 ,p_level => C_LEVEL_STATEMENT
199798 ,p_module => l_log_module);
199799
199800 END IF;
199801
199802 insert_sources_268(
199803 p_target_ledger_id => p_target_ledger_id
199804 , p_language => l_language
199805 , p_sla_ledger_id => l_sla_ledger_id
199806 , p_pad_start_date => p_pad_start_date
199807 , p_pad_end_date => p_pad_end_date
199808 );
199809
199810 END IF;
199811
199812 l_created := EventClass_269(
199813 p_application_id => p_application_id
199814 , p_base_ledger_id => p_base_ledger_id
199815 , p_target_ledger_id => p_target_ledger_id
199816 , p_language => l_language
199817 , p_currency_code => l_currency_code
199818 , p_sla_ledger_id => l_sla_ledger_id
199819 , p_pad_start_date => p_pad_start_date
199820 , p_pad_end_date => p_pad_end_date
199821 , p_primary_ledger_id => p_primary_ledger_id
199822 );
199823
199824
199825
199826 IF ( g_diagnostics_mode ='Y' ) THEN
199827
199828 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
199829 trace
199830 (p_msg => 'CALL Transaction Objects Diagnostics'
199831 ,p_level => C_LEVEL_STATEMENT
199832 ,p_module => l_log_module);
199833
199834 END IF;
199835
199836 insert_sources_269(
199837 p_target_ledger_id => p_target_ledger_id
199838 , p_language => l_language
199839 , p_sla_ledger_id => l_sla_ledger_id
199840 , p_pad_start_date => p_pad_start_date
199841 , p_pad_end_date => p_pad_end_date
199842 );
199843
199844 END IF;
199845
199846 l_created := EventClass_270(
199847 p_application_id => p_application_id
199848 , p_base_ledger_id => p_base_ledger_id
199849 , p_target_ledger_id => p_target_ledger_id
199850 , p_language => l_language
199851 , p_currency_code => l_currency_code
199852 , p_sla_ledger_id => l_sla_ledger_id
199853 , p_pad_start_date => p_pad_start_date
199854 , p_pad_end_date => p_pad_end_date
199855 , p_primary_ledger_id => p_primary_ledger_id
199856 );
199857
199858
199859
199860 IF ( g_diagnostics_mode ='Y' ) THEN
199861
199862 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
199863 trace
199864 (p_msg => 'CALL Transaction Objects Diagnostics'
199865 ,p_level => C_LEVEL_STATEMENT
199866 ,p_module => l_log_module);
199867
199868 END IF;
199869
199870 insert_sources_270(
199871 p_target_ledger_id => p_target_ledger_id
199872 , p_language => l_language
199873 , p_sla_ledger_id => l_sla_ledger_id
199874 , p_pad_start_date => p_pad_start_date
199875 , p_pad_end_date => p_pad_end_date
199876 );
199877
199878 END IF;
199879
199880 l_created := EventClass_271(
199881 p_application_id => p_application_id
199882 , p_base_ledger_id => p_base_ledger_id
199883 , p_target_ledger_id => p_target_ledger_id
199884 , p_language => l_language
199885 , p_currency_code => l_currency_code
199886 , p_sla_ledger_id => l_sla_ledger_id
199887 , p_pad_start_date => p_pad_start_date
199888 , p_pad_end_date => p_pad_end_date
199889 , p_primary_ledger_id => p_primary_ledger_id
199890 );
199891
199892
199893
199894 IF ( g_diagnostics_mode ='Y' ) THEN
199895
199896 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
199897 trace
199898 (p_msg => 'CALL Transaction Objects Diagnostics'
199899 ,p_level => C_LEVEL_STATEMENT
199900 ,p_module => l_log_module);
199901
199902 END IF;
199903
199904 insert_sources_271(
199905 p_target_ledger_id => p_target_ledger_id
199906 , p_language => l_language
199907 , p_sla_ledger_id => l_sla_ledger_id
199908 , p_pad_start_date => p_pad_start_date
199909 , p_pad_end_date => p_pad_end_date
199910 );
199911
199912 END IF;
199913
199914 l_created := EventClass_272(
199915 p_application_id => p_application_id
199916 , p_base_ledger_id => p_base_ledger_id
199917 , p_target_ledger_id => p_target_ledger_id
199918 , p_language => l_language
199919 , p_currency_code => l_currency_code
199920 , p_sla_ledger_id => l_sla_ledger_id
199921 , p_pad_start_date => p_pad_start_date
199922 , p_pad_end_date => p_pad_end_date
199923 , p_primary_ledger_id => p_primary_ledger_id
199924 );
199925
199926
199927
199928 IF ( g_diagnostics_mode ='Y' ) THEN
199929
199930 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
199931 trace
199932 (p_msg => 'CALL Transaction Objects Diagnostics'
199933 ,p_level => C_LEVEL_STATEMENT
199934 ,p_module => l_log_module);
199935
199936 END IF;
199937
199938 insert_sources_272(
199939 p_target_ledger_id => p_target_ledger_id
199940 , p_language => l_language
199941 , p_sla_ledger_id => l_sla_ledger_id
199942 , p_pad_start_date => p_pad_start_date
199943 , p_pad_end_date => p_pad_end_date
199944 );
199945
199946 END IF;
199947
199948 l_created := EventClass_273(
199949 p_application_id => p_application_id
199950 , p_base_ledger_id => p_base_ledger_id
199951 , p_target_ledger_id => p_target_ledger_id
199952 , p_language => l_language
199953 , p_currency_code => l_currency_code
199954 , p_sla_ledger_id => l_sla_ledger_id
199955 , p_pad_start_date => p_pad_start_date
199956 , p_pad_end_date => p_pad_end_date
199957 , p_primary_ledger_id => p_primary_ledger_id
199958 );
199959
199960
199961
199962 IF ( g_diagnostics_mode ='Y' ) THEN
199963
199964 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
199965 trace
199966 (p_msg => 'CALL Transaction Objects Diagnostics'
199967 ,p_level => C_LEVEL_STATEMENT
199968 ,p_module => l_log_module);
199969
199970 END IF;
199971
199972 insert_sources_273(
199973 p_target_ledger_id => p_target_ledger_id
199974 , p_language => l_language
199975 , p_sla_ledger_id => l_sla_ledger_id
199976 , p_pad_start_date => p_pad_start_date
199977 , p_pad_end_date => p_pad_end_date
199978 );
199979
199980 END IF;
199981
199982 l_created := EventClass_274(
199983 p_application_id => p_application_id
199984 , p_base_ledger_id => p_base_ledger_id
199985 , p_target_ledger_id => p_target_ledger_id
199986 , p_language => l_language
199987 , p_currency_code => l_currency_code
199988 , p_sla_ledger_id => l_sla_ledger_id
199989 , p_pad_start_date => p_pad_start_date
199990 , p_pad_end_date => p_pad_end_date
199991 , p_primary_ledger_id => p_primary_ledger_id
199992 );
199993
199994
199995
199996 IF ( g_diagnostics_mode ='Y' ) THEN
199997
199998 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
199999 trace
200000 (p_msg => 'CALL Transaction Objects Diagnostics'
200001 ,p_level => C_LEVEL_STATEMENT
200002 ,p_module => l_log_module);
200003
200004 END IF;
200005
200006 insert_sources_274(
200007 p_target_ledger_id => p_target_ledger_id
200008 , p_language => l_language
200009 , p_sla_ledger_id => l_sla_ledger_id
200010 , p_pad_start_date => p_pad_start_date
200011 , p_pad_end_date => p_pad_end_date
200012 );
200013
200014 END IF;
200015
200016 l_created := EventType_275(
200017 p_application_id => p_application_id
200018 , p_base_ledger_id => p_base_ledger_id
200019 , p_target_ledger_id => p_target_ledger_id
200020 , p_language => l_language
200021 , p_currency_code => l_currency_code
200022 , p_sla_ledger_id => l_sla_ledger_id
200023 , p_pad_start_date => p_pad_start_date
200024 , p_pad_end_date => p_pad_end_date
200025 , p_primary_ledger_id => p_primary_ledger_id
200026 );
200027
200028
200029
200030 IF ( g_diagnostics_mode ='Y' ) THEN
200031
200032 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
200033 trace
200034 (p_msg => 'CALL Transaction Objects Diagnostics'
200035 ,p_level => C_LEVEL_STATEMENT
200036 ,p_module => l_log_module);
200037
200038 END IF;
200039
200040 insert_sources_275(
200041 p_target_ledger_id => p_target_ledger_id
200042 , p_language => l_language
200043 , p_sla_ledger_id => l_sla_ledger_id
200044 , p_pad_start_date => p_pad_start_date
200045 , p_pad_end_date => p_pad_end_date
200046 );
200047
200048 END IF;
200049
200050 l_created := EventType_276(
200051 p_application_id => p_application_id
200052 , p_base_ledger_id => p_base_ledger_id
200053 , p_target_ledger_id => p_target_ledger_id
200054 , p_language => l_language
200055 , p_currency_code => l_currency_code
200056 , p_sla_ledger_id => l_sla_ledger_id
200057 , p_pad_start_date => p_pad_start_date
200058 , p_pad_end_date => p_pad_end_date
200059 , p_primary_ledger_id => p_primary_ledger_id
200060 );
200061
200062
200063
200064 IF ( g_diagnostics_mode ='Y' ) THEN
200065
200066 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
200067 trace
200068 (p_msg => 'CALL Transaction Objects Diagnostics'
200069 ,p_level => C_LEVEL_STATEMENT
200070 ,p_module => l_log_module);
200071
200072 END IF;
200073
200074 insert_sources_276(
200075 p_target_ledger_id => p_target_ledger_id
200076 , p_language => l_language
200077 , p_sla_ledger_id => l_sla_ledger_id
200078 , p_pad_start_date => p_pad_start_date
200079 , p_pad_end_date => p_pad_end_date
200080 );
200081
200082 END IF;
200083
200084 l_created := EventType_277(
200085 p_application_id => p_application_id
200086 , p_base_ledger_id => p_base_ledger_id
200087 , p_target_ledger_id => p_target_ledger_id
200088 , p_language => l_language
200089 , p_currency_code => l_currency_code
200090 , p_sla_ledger_id => l_sla_ledger_id
200091 , p_pad_start_date => p_pad_start_date
200092 , p_pad_end_date => p_pad_end_date
200093 , p_primary_ledger_id => p_primary_ledger_id
200094 );
200095
200096
200097
200098 IF ( g_diagnostics_mode ='Y' ) THEN
200099
200100 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
200101 trace
200102 (p_msg => 'CALL Transaction Objects Diagnostics'
200103 ,p_level => C_LEVEL_STATEMENT
200104 ,p_module => l_log_module);
200105
200106 END IF;
200107
200108 insert_sources_277(
200109 p_target_ledger_id => p_target_ledger_id
200110 , p_language => l_language
200111 , p_sla_ledger_id => l_sla_ledger_id
200112 , p_pad_start_date => p_pad_start_date
200113 , p_pad_end_date => p_pad_end_date
200114 );
200115
200116 END IF;
200117
200118 l_created := EventType_278(
200119 p_application_id => p_application_id
200120 , p_base_ledger_id => p_base_ledger_id
200121 , p_target_ledger_id => p_target_ledger_id
200122 , p_language => l_language
200123 , p_currency_code => l_currency_code
200124 , p_sla_ledger_id => l_sla_ledger_id
200125 , p_pad_start_date => p_pad_start_date
200126 , p_pad_end_date => p_pad_end_date
200127 , p_primary_ledger_id => p_primary_ledger_id
200128 );
200129
200130
200131
200132 IF ( g_diagnostics_mode ='Y' ) THEN
200133
200134 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
200135 trace
200136 (p_msg => 'CALL Transaction Objects Diagnostics'
200137 ,p_level => C_LEVEL_STATEMENT
200138 ,p_module => l_log_module);
200139
200140 END IF;
200141
200142 insert_sources_278(
200143 p_target_ledger_id => p_target_ledger_id
200144 , p_language => l_language
200145 , p_sla_ledger_id => l_sla_ledger_id
200146 , p_pad_start_date => p_pad_start_date
200147 , p_pad_end_date => p_pad_end_date
200148 );
200149
200150 END IF;
200151
200152 l_created := EventType_279(
200153 p_application_id => p_application_id
200154 , p_base_ledger_id => p_base_ledger_id
200155 , p_target_ledger_id => p_target_ledger_id
200156 , p_language => l_language
200157 , p_currency_code => l_currency_code
200158 , p_sla_ledger_id => l_sla_ledger_id
200159 , p_pad_start_date => p_pad_start_date
200160 , p_pad_end_date => p_pad_end_date
200161 , p_primary_ledger_id => p_primary_ledger_id
200162 );
200163
200164
200165
200166 IF ( g_diagnostics_mode ='Y' ) THEN
200167
200168 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
200169 trace
200170 (p_msg => 'CALL Transaction Objects Diagnostics'
200171 ,p_level => C_LEVEL_STATEMENT
200172 ,p_module => l_log_module);
200173
200174 END IF;
200175
200176 insert_sources_279(
200177 p_target_ledger_id => p_target_ledger_id
200178 , p_language => l_language
200179 , p_sla_ledger_id => l_sla_ledger_id
200180 , p_pad_start_date => p_pad_start_date
200181 , p_pad_end_date => p_pad_end_date
200182 );
200183
200184 END IF;
200185
200186 l_created := EventType_280(
200187 p_application_id => p_application_id
200188 , p_base_ledger_id => p_base_ledger_id
200189 , p_target_ledger_id => p_target_ledger_id
200190 , p_language => l_language
200191 , p_currency_code => l_currency_code
200192 , p_sla_ledger_id => l_sla_ledger_id
200193 , p_pad_start_date => p_pad_start_date
200194 , p_pad_end_date => p_pad_end_date
200195 , p_primary_ledger_id => p_primary_ledger_id
200196 );
200197
200198
200199
200200 IF ( g_diagnostics_mode ='Y' ) THEN
200201
200202 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
200203 trace
200204 (p_msg => 'CALL Transaction Objects Diagnostics'
200205 ,p_level => C_LEVEL_STATEMENT
200206 ,p_module => l_log_module);
200207
200208 END IF;
200209
200210 insert_sources_280(
200211 p_target_ledger_id => p_target_ledger_id
200212 , p_language => l_language
200213 , p_sla_ledger_id => l_sla_ledger_id
200214 , p_pad_start_date => p_pad_start_date
200215 , p_pad_end_date => p_pad_end_date
200216 );
200217
200218 END IF;
200219
200220 l_created := EventType_281(
200221 p_application_id => p_application_id
200222 , p_base_ledger_id => p_base_ledger_id
200223 , p_target_ledger_id => p_target_ledger_id
200224 , p_language => l_language
200225 , p_currency_code => l_currency_code
200226 , p_sla_ledger_id => l_sla_ledger_id
200227 , p_pad_start_date => p_pad_start_date
200228 , p_pad_end_date => p_pad_end_date
200229 , p_primary_ledger_id => p_primary_ledger_id
200230 );
200231
200232
200233
200234 IF ( g_diagnostics_mode ='Y' ) THEN
200235
200236 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
200237 trace
200238 (p_msg => 'CALL Transaction Objects Diagnostics'
200239 ,p_level => C_LEVEL_STATEMENT
200240 ,p_module => l_log_module);
200241
200242 END IF;
200243
200244 insert_sources_281(
200245 p_target_ledger_id => p_target_ledger_id
200246 , p_language => l_language
200247 , p_sla_ledger_id => l_sla_ledger_id
200248 , p_pad_start_date => p_pad_start_date
200249 , p_pad_end_date => p_pad_end_date
200250 );
200251
200252 END IF;
200253
200254 l_created := EventType_282(
200255 p_application_id => p_application_id
200256 , p_base_ledger_id => p_base_ledger_id
200257 , p_target_ledger_id => p_target_ledger_id
200258 , p_language => l_language
200259 , p_currency_code => l_currency_code
200260 , p_sla_ledger_id => l_sla_ledger_id
200261 , p_pad_start_date => p_pad_start_date
200262 , p_pad_end_date => p_pad_end_date
200263 , p_primary_ledger_id => p_primary_ledger_id
200264 );
200265
200266
200267
200268 IF ( g_diagnostics_mode ='Y' ) THEN
200269
200270 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
200271 trace
200272 (p_msg => 'CALL Transaction Objects Diagnostics'
200273 ,p_level => C_LEVEL_STATEMENT
200274 ,p_module => l_log_module);
200275
200276 END IF;
200277
200278 insert_sources_282(
200279 p_target_ledger_id => p_target_ledger_id
200280 , p_language => l_language
200281 , p_sla_ledger_id => l_sla_ledger_id
200282 , p_pad_start_date => p_pad_start_date
200283 , p_pad_end_date => p_pad_end_date
200284 );
200285
200286 END IF;
200287
200288 l_created := EventType_283(
200289 p_application_id => p_application_id
200290 , p_base_ledger_id => p_base_ledger_id
200291 , p_target_ledger_id => p_target_ledger_id
200292 , p_language => l_language
200293 , p_currency_code => l_currency_code
200294 , p_sla_ledger_id => l_sla_ledger_id
200295 , p_pad_start_date => p_pad_start_date
200296 , p_pad_end_date => p_pad_end_date
200297 , p_primary_ledger_id => p_primary_ledger_id
200298 );
200299
200300
200301
200302 IF ( g_diagnostics_mode ='Y' ) THEN
200303
200304 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
200305 trace
200306 (p_msg => 'CALL Transaction Objects Diagnostics'
200307 ,p_level => C_LEVEL_STATEMENT
200308 ,p_module => l_log_module);
200309
200310 END IF;
200311
200312 insert_sources_283(
200313 p_target_ledger_id => p_target_ledger_id
200314 , p_language => l_language
200315 , p_sla_ledger_id => l_sla_ledger_id
200316 , p_pad_start_date => p_pad_start_date
200317 , p_pad_end_date => p_pad_end_date
200318 );
200319
200320 END IF;
200321
200322 l_created := EventType_284(
200323 p_application_id => p_application_id
200324 , p_base_ledger_id => p_base_ledger_id
200325 , p_target_ledger_id => p_target_ledger_id
200326 , p_language => l_language
200327 , p_currency_code => l_currency_code
200328 , p_sla_ledger_id => l_sla_ledger_id
200329 , p_pad_start_date => p_pad_start_date
200330 , p_pad_end_date => p_pad_end_date
200331 , p_primary_ledger_id => p_primary_ledger_id
200332 );
200333
200334
200335
200336 IF ( g_diagnostics_mode ='Y' ) THEN
200337
200338 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
200339 trace
200340 (p_msg => 'CALL Transaction Objects Diagnostics'
200341 ,p_level => C_LEVEL_STATEMENT
200342 ,p_module => l_log_module);
200343
200344 END IF;
200345
200346 insert_sources_284(
200347 p_target_ledger_id => p_target_ledger_id
200348 , p_language => l_language
200349 , p_sla_ledger_id => l_sla_ledger_id
200350 , p_pad_start_date => p_pad_start_date
200351 , p_pad_end_date => p_pad_end_date
200352 );
200353
200354 END IF;
200355
200356 l_created := EventType_285(
200357 p_application_id => p_application_id
200358 , p_base_ledger_id => p_base_ledger_id
200359 , p_target_ledger_id => p_target_ledger_id
200360 , p_language => l_language
200361 , p_currency_code => l_currency_code
200362 , p_sla_ledger_id => l_sla_ledger_id
200363 , p_pad_start_date => p_pad_start_date
200364 , p_pad_end_date => p_pad_end_date
200365 , p_primary_ledger_id => p_primary_ledger_id
200366 );
200367
200368
200369
200370 IF ( g_diagnostics_mode ='Y' ) THEN
200371
200372 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
200373 trace
200374 (p_msg => 'CALL Transaction Objects Diagnostics'
200375 ,p_level => C_LEVEL_STATEMENT
200376 ,p_module => l_log_module);
200377
200378 END IF;
200379
200380 insert_sources_285(
200381 p_target_ledger_id => p_target_ledger_id
200382 , p_language => l_language
200383 , p_sla_ledger_id => l_sla_ledger_id
200384 , p_pad_start_date => p_pad_start_date
200385 , p_pad_end_date => p_pad_end_date
200386 );
200387
200388 END IF;
200389
200390 l_created := EventType_286(
200391 p_application_id => p_application_id
200392 , p_base_ledger_id => p_base_ledger_id
200393 , p_target_ledger_id => p_target_ledger_id
200394 , p_language => l_language
200395 , p_currency_code => l_currency_code
200396 , p_sla_ledger_id => l_sla_ledger_id
200397 , p_pad_start_date => p_pad_start_date
200398 , p_pad_end_date => p_pad_end_date
200399 , p_primary_ledger_id => p_primary_ledger_id
200400 );
200401
200402
200403
200404 IF ( g_diagnostics_mode ='Y' ) THEN
200405
200406 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
200407 trace
200408 (p_msg => 'CALL Transaction Objects Diagnostics'
200409 ,p_level => C_LEVEL_STATEMENT
200410 ,p_module => l_log_module);
200411
200412 END IF;
200413
200414 insert_sources_286(
200415 p_target_ledger_id => p_target_ledger_id
200416 , p_language => l_language
200417 , p_sla_ledger_id => l_sla_ledger_id
200418 , p_pad_start_date => p_pad_start_date
200419 , p_pad_end_date => p_pad_end_date
200420 );
200421
200422 END IF;
200423
200424 l_created := EventType_287(
200425 p_application_id => p_application_id
200426 , p_base_ledger_id => p_base_ledger_id
200427 , p_target_ledger_id => p_target_ledger_id
200428 , p_language => l_language
200429 , p_currency_code => l_currency_code
200430 , p_sla_ledger_id => l_sla_ledger_id
200431 , p_pad_start_date => p_pad_start_date
200432 , p_pad_end_date => p_pad_end_date
200433 , p_primary_ledger_id => p_primary_ledger_id
200434 );
200435
200436
200437
200438 IF ( g_diagnostics_mode ='Y' ) THEN
200439
200440 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
200441 trace
200442 (p_msg => 'CALL Transaction Objects Diagnostics'
200443 ,p_level => C_LEVEL_STATEMENT
200444 ,p_module => l_log_module);
200445
200446 END IF;
200447
200448 insert_sources_287(
200449 p_target_ledger_id => p_target_ledger_id
200450 , p_language => l_language
200451 , p_sla_ledger_id => l_sla_ledger_id
200452 , p_pad_start_date => p_pad_start_date
200453 , p_pad_end_date => p_pad_end_date
200454 );
200455
200456 END IF;
200457
200458 l_created := EventType_288(
200459 p_application_id => p_application_id
200460 , p_base_ledger_id => p_base_ledger_id
200461 , p_target_ledger_id => p_target_ledger_id
200462 , p_language => l_language
200463 , p_currency_code => l_currency_code
200464 , p_sla_ledger_id => l_sla_ledger_id
200465 , p_pad_start_date => p_pad_start_date
200466 , p_pad_end_date => p_pad_end_date
200467 , p_primary_ledger_id => p_primary_ledger_id
200468 );
200469
200470
200471
200472 IF ( g_diagnostics_mode ='Y' ) THEN
200473
200474 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
200475 trace
200476 (p_msg => 'CALL Transaction Objects Diagnostics'
200477 ,p_level => C_LEVEL_STATEMENT
200478 ,p_module => l_log_module);
200479
200480 END IF;
200481
200482 insert_sources_288(
200483 p_target_ledger_id => p_target_ledger_id
200484 , p_language => l_language
200485 , p_sla_ledger_id => l_sla_ledger_id
200486 , p_pad_start_date => p_pad_start_date
200487 , p_pad_end_date => p_pad_end_date
200488 );
200489
200490 END IF;
200491
200492 l_created := EventType_289(
200493 p_application_id => p_application_id
200494 , p_base_ledger_id => p_base_ledger_id
200495 , p_target_ledger_id => p_target_ledger_id
200496 , p_language => l_language
200497 , p_currency_code => l_currency_code
200498 , p_sla_ledger_id => l_sla_ledger_id
200499 , p_pad_start_date => p_pad_start_date
200500 , p_pad_end_date => p_pad_end_date
200501 , p_primary_ledger_id => p_primary_ledger_id
200502 );
200503
200504
200505
200506 IF ( g_diagnostics_mode ='Y' ) THEN
200507
200508 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
200509 trace
200510 (p_msg => 'CALL Transaction Objects Diagnostics'
200511 ,p_level => C_LEVEL_STATEMENT
200512 ,p_module => l_log_module);
200513
200514 END IF;
200515
200516 insert_sources_289(
200517 p_target_ledger_id => p_target_ledger_id
200518 , p_language => l_language
200519 , p_sla_ledger_id => l_sla_ledger_id
200520 , p_pad_start_date => p_pad_start_date
200521 , p_pad_end_date => p_pad_end_date
200522 );
200523
200524 END IF;
200525
200526 l_created := EventType_290(
200527 p_application_id => p_application_id
200528 , p_base_ledger_id => p_base_ledger_id
200529 , p_target_ledger_id => p_target_ledger_id
200530 , p_language => l_language
200531 , p_currency_code => l_currency_code
200532 , p_sla_ledger_id => l_sla_ledger_id
200533 , p_pad_start_date => p_pad_start_date
200534 , p_pad_end_date => p_pad_end_date
200535 , p_primary_ledger_id => p_primary_ledger_id
200536 );
200537
200538
200539
200540 IF ( g_diagnostics_mode ='Y' ) THEN
200541
200542 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
200543 trace
200544 (p_msg => 'CALL Transaction Objects Diagnostics'
200545 ,p_level => C_LEVEL_STATEMENT
200546 ,p_module => l_log_module);
200547
200548 END IF;
200549
200550 insert_sources_290(
200551 p_target_ledger_id => p_target_ledger_id
200552 , p_language => l_language
200553 , p_sla_ledger_id => l_sla_ledger_id
200554 , p_pad_start_date => p_pad_start_date
200555 , p_pad_end_date => p_pad_end_date
200556 );
200557
200558 END IF;
200559
200560 l_created := EventType_291(
200561 p_application_id => p_application_id
200562 , p_base_ledger_id => p_base_ledger_id
200563 , p_target_ledger_id => p_target_ledger_id
200564 , p_language => l_language
200565 , p_currency_code => l_currency_code
200566 , p_sla_ledger_id => l_sla_ledger_id
200567 , p_pad_start_date => p_pad_start_date
200568 , p_pad_end_date => p_pad_end_date
200569 , p_primary_ledger_id => p_primary_ledger_id
200570 );
200571
200572
200573
200574 IF ( g_diagnostics_mode ='Y' ) THEN
200575
200576 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
200577 trace
200578 (p_msg => 'CALL Transaction Objects Diagnostics'
200579 ,p_level => C_LEVEL_STATEMENT
200580 ,p_module => l_log_module);
200581
200582 END IF;
200583
200584 insert_sources_291(
200585 p_target_ledger_id => p_target_ledger_id
200586 , p_language => l_language
200587 , p_sla_ledger_id => l_sla_ledger_id
200588 , p_pad_start_date => p_pad_start_date
200589 , p_pad_end_date => p_pad_end_date
200590 );
200591
200592 END IF;
200593
200594 l_created := EventClass_292(
200595 p_application_id => p_application_id
200596 , p_base_ledger_id => p_base_ledger_id
200597 , p_target_ledger_id => p_target_ledger_id
200598 , p_language => l_language
200599 , p_currency_code => l_currency_code
200600 , p_sla_ledger_id => l_sla_ledger_id
200601 , p_pad_start_date => p_pad_start_date
200602 , p_pad_end_date => p_pad_end_date
200603 , p_primary_ledger_id => p_primary_ledger_id
200604 );
200605
200606
200607
200608 IF ( g_diagnostics_mode ='Y' ) THEN
200609
200610 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
200611 trace
200612 (p_msg => 'CALL Transaction Objects Diagnostics'
200613 ,p_level => C_LEVEL_STATEMENT
200614 ,p_module => l_log_module);
200615
200616 END IF;
200617
200618 insert_sources_292(
200619 p_target_ledger_id => p_target_ledger_id
200620 , p_language => l_language
200621 , p_sla_ledger_id => l_sla_ledger_id
200622 , p_pad_start_date => p_pad_start_date
200623 , p_pad_end_date => p_pad_end_date
200624 );
200625
200626 END IF;
200627
200628 l_created := EventClass_293(
200629 p_application_id => p_application_id
200630 , p_base_ledger_id => p_base_ledger_id
200631 , p_target_ledger_id => p_target_ledger_id
200632 , p_language => l_language
200633 , p_currency_code => l_currency_code
200634 , p_sla_ledger_id => l_sla_ledger_id
200635 , p_pad_start_date => p_pad_start_date
200636 , p_pad_end_date => p_pad_end_date
200637 , p_primary_ledger_id => p_primary_ledger_id
200638 );
200639
200640
200641
200642 IF ( g_diagnostics_mode ='Y' ) THEN
200643
200644 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
200645 trace
200646 (p_msg => 'CALL Transaction Objects Diagnostics'
200647 ,p_level => C_LEVEL_STATEMENT
200648 ,p_module => l_log_module);
200649
200650 END IF;
200651
200652 insert_sources_293(
200653 p_target_ledger_id => p_target_ledger_id
200654 , p_language => l_language
200655 , p_sla_ledger_id => l_sla_ledger_id
200656 , p_pad_start_date => p_pad_start_date
200657 , p_pad_end_date => p_pad_end_date
200658 );
200659
200660 END IF;
200661
200662 l_created := EventClass_294(
200663 p_application_id => p_application_id
200664 , p_base_ledger_id => p_base_ledger_id
200665 , p_target_ledger_id => p_target_ledger_id
200666 , p_language => l_language
200667 , p_currency_code => l_currency_code
200668 , p_sla_ledger_id => l_sla_ledger_id
200669 , p_pad_start_date => p_pad_start_date
200670 , p_pad_end_date => p_pad_end_date
200671 , p_primary_ledger_id => p_primary_ledger_id
200672 );
200673
200674
200675
200676 IF ( g_diagnostics_mode ='Y' ) THEN
200677
200678 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
200679 trace
200680 (p_msg => 'CALL Transaction Objects Diagnostics'
200681 ,p_level => C_LEVEL_STATEMENT
200682 ,p_module => l_log_module);
200683
200684 END IF;
200685
200686 insert_sources_294(
200687 p_target_ledger_id => p_target_ledger_id
200688 , p_language => l_language
200689 , p_sla_ledger_id => l_sla_ledger_id
200690 , p_pad_start_date => p_pad_start_date
200691 , p_pad_end_date => p_pad_end_date
200692 );
200693
200694 END IF;
200695
200696 l_created := EventClass_295(
200697 p_application_id => p_application_id
200698 , p_base_ledger_id => p_base_ledger_id
200699 , p_target_ledger_id => p_target_ledger_id
200700 , p_language => l_language
200701 , p_currency_code => l_currency_code
200702 , p_sla_ledger_id => l_sla_ledger_id
200703 , p_pad_start_date => p_pad_start_date
200704 , p_pad_end_date => p_pad_end_date
200705 , p_primary_ledger_id => p_primary_ledger_id
200706 );
200707
200708
200709
200710 IF ( g_diagnostics_mode ='Y' ) THEN
200711
200712 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
200713 trace
200714 (p_msg => 'CALL Transaction Objects Diagnostics'
200715 ,p_level => C_LEVEL_STATEMENT
200716 ,p_module => l_log_module);
200717
200718 END IF;
200719
200720 insert_sources_295(
200721 p_target_ledger_id => p_target_ledger_id
200722 , p_language => l_language
200723 , p_sla_ledger_id => l_sla_ledger_id
200724 , p_pad_start_date => p_pad_start_date
200725 , p_pad_end_date => p_pad_end_date
200726 );
200727
200728 END IF;
200729
200730
200731 --
200732 -- Bug 4865292
200733 -- When the number of events and that of header extract do not match,
200734 -- set the no header extract flag to indicate there are some issues
200735 -- in header extract.
200736 --
200737 -- Event count context is set in xla_accounting_pkg.unit_processor.
200738 -- Build_Message for this error is called in xla_accounting_pkg.post_accounting
200739 -- to report it as a general error.
200740 --
200741 IF xla_context_pkg.get_event_count_context <> g_hdr_extract_count
200742 AND xla_context_pkg.get_event_nohdr_context <> 'Y' THEN
200743
200744 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
200745 trace
200746 (p_msg => '# of extracted headers and events does not match'
200747 ,p_level => C_LEVEL_STATEMENT
200748 ,p_module => l_log_module);
200749
200750 trace
200751 (p_msg => '# of extracted headers: '
200752 ||g_hdr_extract_count
200753 ,p_level => C_LEVEL_STATEMENT
200754 ,p_module => l_log_module);
200755
200756 trace
200757 (p_msg => '# of events in xla_events_gt: '
200758 ||xla_context_pkg.get_event_count_context
200759 ,p_level => C_LEVEL_STATEMENT
200760 ,p_module => l_log_module);
200761
200762 trace
200763 (p_msg => 'Event No Header Extract Context: '
200764 ||xla_context_pkg.get_event_nohdr_context
200765 ,p_level => C_LEVEL_STATEMENT
200766 ,p_module => l_log_module);
200767
200768 END IF;
200769
200770
200771 xla_context_pkg.set_event_nohdr_context
200772 (p_nohdr_extract_flag => 'Y'
200773 ,p_client_id => sys_context('USERENV','CLIENT_IDENTIFIER'));
200774
200775 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
200776 trace
200777 (p_msg => 'No Header Extract Flag is set to Y'
200778 ,p_level => C_LEVEL_STATEMENT
200779 ,p_module => l_log_module);
200780 END IF;
200781
200782 END IF;
200783
200784 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
200785 trace
200786 (p_msg => 'END of CreateHeadersAndLines'
200787 ,p_level => C_LEVEL_PROCEDURE
200788 ,p_module => l_log_module);
200789 END IF;
200790
200791 RETURN l_created;
200792 EXCEPTION
200793 WHEN xla_exceptions_pkg.application_exception THEN
200794 RAISE;
200795 WHEN OTHERS THEN
200796 xla_exceptions_pkg.raise_message
200797 (p_location => 'XLA_00707_AAD_S_000007_PKG.CreateHeadersAndLines');
200798 END CreateHeadersAndLines;
200799 --
200800 --
200801
200802 --
200803 --+============================================+
200804 --| |
200805 --| PUBLIC FUNCTION |
200806 --| |
200807 --+============================================+
200808 --
200809 FUNCTION CreateJournalEntries
200810 (p_application_id IN NUMBER
200811 ,p_base_ledger_id IN NUMBER
200812 ,p_pad_start_date IN DATE
200813 ,p_pad_end_date IN DATE
200814 ,p_primary_ledger_id IN NUMBER)
200815 RETURN NUMBER IS
200816 l_log_module VARCHAR2(240);
200817 l_array_ledgers xla_accounting_cache_pkg.t_array_ledger_id;
200818 l_temp_result BOOLEAN;
200819 l_result NUMBER;
200820 BEGIN
200821 --
200822 IF g_log_enabled THEN
200823 l_log_module := C_DEFAULT_MODULE||'.CreateJournalEntries';
200824 END IF;
200825 --
200826 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
200827 trace
200828 (p_msg => 'BEGIN of CreateJournalEntries'||
200829 ' - p_base_ledger_id = '||TO_CHAR(p_base_ledger_id)
200830 ,p_level => C_LEVEL_PROCEDURE
200831 ,p_module => l_log_module);
200832
200833 END IF;
200834
200835 --
200836 g_diagnostics_mode:= xla_accounting_engine_pkg.g_diagnostics_mode;
200837
200838 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
200839 trace
200840 (p_msg => 'g_diagnostics_mode = '||g_diagnostics_mode
200841 ,p_level => C_LEVEL_STATEMENT
200842 ,p_module => l_log_module);
200843 END IF;
200844 --
200845 xla_ae_journal_entry_pkg.SetProductAcctDefinition
200846 (p_product_rule_code => 'FV_CST_AAD'
200847 ,p_product_rule_type_code => 'S'
200848 ,p_product_rule_version => ''
200849 ,p_product_rule_name => 'Federal Costing Application Accounting Definition'
200850 ,p_amb_context_code => 'DEFAULT'
200851 );
200852
200853 l_array_ledgers :=
200854 xla_ae_journal_entry_pkg.GetAlternateCurrencyLedger
200855 (p_base_ledger_id => p_base_ledger_id);
200856
200857 FOR Idx IN 1 .. l_array_ledgers.COUNT LOOP
200858 l_temp_result :=
200859 XLA_AE_JOURNAL_ENTRY_PKG.GetLedgersInfo
200860 (p_application_id => p_application_id
200861 ,p_base_ledger_id => p_base_ledger_id
200862 ,p_target_ledger_id => l_array_ledgers(Idx)
200863 ,p_primary_ledger_id => p_primary_ledger_id
200864 ,p_pad_start_date => p_pad_start_date
200865 ,p_pad_end_date => p_pad_end_date);
200866
200867 l_temp_result :=
200868 l_temp_result AND
200869 CreateHeadersAndLines
200870 (p_application_id => p_application_id
200871 ,p_base_ledger_id => p_base_ledger_id
200872 ,p_target_ledger_id => l_array_ledgers(Idx)
200873 ,p_pad_start_date => p_pad_start_date
200874 ,p_pad_end_date => p_pad_end_date
200875 ,p_primary_ledger_id => p_primary_ledger_id
200876 );
200877 END LOOP;
200878
200879
200880 IF (g_diagnostics_mode = 'Y' AND
200881 C_LEVEL_UNEXPECTED >= g_log_level AND
200882 xla_environment_pkg.g_Req_Id IS NOT NULL ) THEN
200883
200884 xla_accounting_dump_pkg.acctg_event_extract_log(
200885 p_application_id => p_application_id
200886 ,p_request_id => xla_environment_pkg.g_Req_Id
200887 );
200888
200889 END IF;
200890
200891 CASE l_temp_result
200892 WHEN TRUE THEN l_result := 0;
200893 ELSE l_result := 2;
200894 END CASE;
200895
200896 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
200897 trace
200898 (p_msg => 'return value. = '||TO_CHAR(l_result)
200899 ,p_level => C_LEVEL_PROCEDURE
200900 ,p_module => l_log_module);
200901 trace
200902 (p_msg => 'END of CreateJournalEntries '
200903 ,p_level => C_LEVEL_PROCEDURE
200904 ,p_module => l_log_module);
200905 END IF;
200906
200907 RETURN l_result;
200908 EXCEPTION
200909 WHEN xla_exceptions_pkg.application_exception THEN
200910 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
200911 trace
200912 (p_msg => 'ERROR. = '||sqlerrm
200913 ,p_level => C_LEVEL_PROCEDURE
200914 ,p_module => l_log_module);
200915 END IF;
200916 RAISE;
200917 WHEN OTHERS THEN
200918 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
200919 trace
200920 (p_msg => 'ERROR. = '||sqlerrm
200921 ,p_level => C_LEVEL_PROCEDURE
200922 ,p_module => l_log_module);
200923 END IF;
200924 xla_exceptions_pkg.raise_message
200925 (p_location => 'XLA_00707_AAD_S_000007_PKG.CreateJournalEntries');
200926 END CreateJournalEntries;
200927 --
200928 --=============================================================================
200929 --
200930 --
200931 --
200932 --
200933 --
200934 --
200935 --
200936 --
200937 --
200938 --
200939 --
200940 --
200941 --
200942 --
200943 --
200944 --
200945 --
200946 --
200947 --
200948 --
200949 --
200950 --
200951 --=============================================================================
200952 --=============================================================================
200953 -- *********** Initialization routine **********
200954 --=============================================================================
200955
200956 BEGIN
200957 g_log_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
200958 g_log_enabled := fnd_log.test
200959 (log_level => g_log_level
200960 ,module => C_DEFAULT_MODULE);
200961
200962 IF NOT g_log_enabled THEN
200963 g_log_level := C_LEVEL_LOG_DISABLED;
200964 END IF;
200965 --
200966 END XLA_00707_AAD_S_000007_PKG;
200967 --